From 8ab42a63607e91bf31a294dbb899e77a382a1381 Mon Sep 17 00:00:00 2001 From: lorenzhohermuth Date: Sun, 7 Apr 2024 22:18:48 +0200 Subject: [PATCH] added work prototype --- internal/handler/handler.go | 13 ++++- view/component/Timeline.templ | 26 +++++++++ view/component/Timeline_templ.go | 98 ++++++++++++++++++++++++++++++++ view/page/home.templ | 8 +-- view/page/home_templ.go | 14 ++++- 5 files changed, 151 insertions(+), 8 deletions(-) create mode 100644 view/component/Timeline.templ create mode 100644 view/component/Timeline_templ.go diff --git a/internal/handler/handler.go b/internal/handler/handler.go index 80f2f78..451ac74 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -1,6 +1,8 @@ package handler import ( + "time" + "github.com/labstack/echo/v4" "github.com/lorenzhohermuth/portfolio/view/component" "github.com/lorenzhohermuth/portfolio/view/page" @@ -16,7 +18,16 @@ func(h Homehandler) HandleUserShow(ctx echo.Context) error { {"/static/flower.jpeg", "This is a Flower" , "I like Flowers"}, {"/static/paris.jpg", "This is the Eiffel Tower" , "I not like Franc"}, } - return render(ctx, page.ShowHome(entrys, h.Index)) + + events := []component.Event{ + {time.Now(), time.Now(), "Title 1"}, + {time.Now(), time.Now(), "Title 2"}, + {time.Now(), time.Now(), "Title 3"}, + {time.Now(), time.Now(), "Title 4"}, + {time.Now(), time.Now(), "Title 5"}, + } + + return render(ctx, page.ShowHome(entrys, h.Index, events)) } type HtmxCarouselHandler struct { diff --git a/view/component/Timeline.templ b/view/component/Timeline.templ new file mode 100644 index 0000000..27dcc0d --- /dev/null +++ b/view/component/Timeline.templ @@ -0,0 +1,26 @@ +package component + +import "time" + +type Event struct { + DateStart time.Time + DateEnd time.Time + Title string +} + +templ Timeline(evts []Event) { +
+ for i, v := range evts { +
+
+
+

{v.Title}

+

{v.DateEnd.Format("02 January 2006")} - {v.DateEnd.Format("02 January 2006")}

+
+
+ if i + 1 < len(evts) { +
+ } + } +
+} diff --git a/view/component/Timeline_templ.go b/view/component/Timeline_templ.go new file mode 100644 index 0000000..a84f366 --- /dev/null +++ b/view/component/Timeline_templ.go @@ -0,0 +1,98 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.650 +package component + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +import "time" + +type Event struct { + DateStart time.Time + DateEnd time.Time + Title string +} + +func Timeline(evts []Event) templ.Component { + return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { + templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) + if !templ_7745c5c3_IsBuffer { + templ_7745c5c3_Buffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templ_7745c5c3_Buffer) + } + ctx = templ.InitializeContext(ctx) + templ_7745c5c3_Var1 := templ.GetChildren(ctx) + if templ_7745c5c3_Var1 == nil { + templ_7745c5c3_Var1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + for i, v := range evts { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(v.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/component/Timeline.templ`, Line: 17, Col: 33} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(v.DateEnd.Format("02 January 2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/component/Timeline.templ`, Line: 18, Col: 64} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(" - ") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(v.DateEnd.Format("02 January 2006")) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `view/component/Timeline.templ`, Line: 18, Col: 104} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if i+1 < len(evts) { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + if !templ_7745c5c3_IsBuffer { + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteTo(templ_7745c5c3_W) + } + return templ_7745c5c3_Err + }) +} diff --git a/view/page/home.templ b/view/page/home.templ index 1b503fa..b428c81 100644 --- a/view/page/home.templ +++ b/view/page/home.templ @@ -3,7 +3,7 @@ package page import "github.com/lorenzhohermuth/portfolio/view/layout" import "github.com/lorenzhohermuth/portfolio/view/component" -templ ShowHome(arr []component.CarouselEntry, index int) { +templ ShowHome(arr []component.CarouselEntry, index int, events []component.Event) { @layout.Base(){
@@ -70,11 +70,11 @@ templ ShowHome(arr []component.CarouselEntry, index int) {
-
+
@component.Banner("Work", "", "#1733d2", "#ff5cdb")
-
- Work +
+ @component.Timeline(events)
diff --git a/view/page/home_templ.go b/view/page/home_templ.go index 40f31fc..5a18fcc 100644 --- a/view/page/home_templ.go +++ b/view/page/home_templ.go @@ -13,7 +13,7 @@ import "bytes" import "github.com/lorenzhohermuth/portfolio/view/layout" import "github.com/lorenzhohermuth/portfolio/view/component" -func ShowHome(arr []component.CarouselEntry, index int) templ.Component { +func ShowHome(arr []component.CarouselEntry, index int, events []component.Event) templ.Component { return templ.ComponentFunc(func(ctx context.Context, templ_7745c5c3_W io.Writer) (templ_7745c5c3_Err error) { templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templ_7745c5c3_W.(*bytes.Buffer) if !templ_7745c5c3_IsBuffer { @@ -56,7 +56,7 @@ func ShowHome(arr []component.CarouselEntry, index int) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } @@ -64,7 +64,15 @@ func ShowHome(arr []component.CarouselEntry, index int) templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
Work
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = component.Timeline(events).Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err }