commit cc4bd9febc9458246313c82f5ac3078f1ee1ecf4 Author: itsig0 Date: Wed Mar 20 22:56:17 2024 +0100 + to the git diff --git a/.air.toml b/.air.toml new file mode 100644 index 0000000..031eead --- /dev/null +++ b/.air.toml @@ -0,0 +1,45 @@ +root = "." +tmp_dir = "tmp" + +[build] + args_bin = [] + bin = "./tmp/main" + cmd = "go build -o ./tmp/main ." + delay = 1000 + exclude_dir = ["assets", "tmp", "vendor"] + exclude_file = [] + exclude_regex = ["_test.go"] + exclude_unchanged = false + follow_symlink = false + full_bin = "" + include_dir = [] + include_ext = ["go", "tpl", "tmpl", "templ", "html", "css"] + include_file = [] + kill_delay = "0s" + log = "build-errors.log" + poll = false + poll_interval = 0 + post_cmd = [] + pre_cmd = [] + rerun = false + rerun_delay = 500 + send_interrupt = false + stop_on_error = false + +[color] + app = "" + build = "yellow" + main = "magenta" + runner = "green" + watcher = "cyan" + +[log] + main_only = false + time = false + +[misc] + clean_on_exit = false + +[screen] + clear_on_rebuild = false + keep_scroll = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6bd35d1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +tmp +# we do not want these +*_templ.txt \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ccd9cf6 --- /dev/null +++ b/Makefile @@ -0,0 +1,9 @@ +run: + @templ generate + @go run main.go + +templ: + @templ generate -watch -proxy=http://localhost:3000 + +sass: + @sass --no-source-map --watch public/stylesheets/tallytome.scss public/stylesheets/tallytome.css \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..0cc30d3 --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +## Should have put it to Git sooner + +when will I learn \ No newline at end of file diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..4224f2f --- /dev/null +++ b/go.mod @@ -0,0 +1,22 @@ +module github.com/itsig0/tallytome + +go 1.22.1 + +require ( + github.com/a-h/templ v0.2.598 + github.com/gofiber/fiber/v2 v2.52.2 +) + +require ( + github.com/andybalholm/brotli v1.0.5 // indirect + github.com/google/uuid v1.5.0 // indirect + github.com/klauspost/compress v1.17.0 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/valyala/bytebufferpool v1.0.0 // indirect + github.com/valyala/fasthttp v1.51.0 // indirect + github.com/valyala/tcplisten v1.0.0 // indirect + golang.org/x/sys v0.15.0 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..c263190 --- /dev/null +++ b/go.sum @@ -0,0 +1,31 @@ +github.com/a-h/templ v0.2.598 h1:6jMIHv6wQZvdPxTuv87erW4RqN/FPU0wk7ZHN5wVuuo= +github.com/a-h/templ v0.2.598/go.mod h1:SA7mtYwVEajbIXFRh3vKdYm/4FYyLQAtPH1+KxzGPA8= +github.com/andybalholm/brotli v1.0.5 h1:8uQZIdzKmjc/iuPu7O2ioW48L81FgatrcpfFmiq/cCs= +github.com/andybalholm/brotli v1.0.5/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/gofiber/fiber/v2 v2.52.2 h1:b0rYH6b06Df+4NyrbdptQL8ifuxw/Tf2DgfkZkDaxEo= +github.com/gofiber/fiber/v2 v2.52.2/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/uuid v1.5.0 h1:1p67kYwdtXjb0gL0BPiP1Av9wiZPo5A8z2cWkTZ+eyU= +github.com/google/uuid v1.5.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= +github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasthttp v1.51.0 h1:8b30A5JlZ6C7AS81RsWjYMQmrZG6feChmgAolCl1SqA= +github.com/valyala/fasthttp v1.51.0/go.mod h1:oI2XroL+lI7vdXyYoQk03bXBThfFl2cVdIA3Xl7cH8g= +github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8= +github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= diff --git a/handler/index.go b/handler/index.go new file mode 100644 index 0000000..e1c26eb --- /dev/null +++ b/handler/index.go @@ -0,0 +1,11 @@ +package handler + +import ( + "github.com/gofiber/fiber/v2" + "github.com/itsig0/tallytome/view/home" +) + +func Index(c *fiber.Ctx) error { + hx := len(c.GetReqHeaders()["Hx-Request"]) > 0 + return render(c, home.Show(hx)) +} diff --git a/handler/tracker.go b/handler/tracker.go new file mode 100644 index 0000000..7367959 --- /dev/null +++ b/handler/tracker.go @@ -0,0 +1,96 @@ +package handler + +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/log" + "github.com/itsig0/tallytome/view/hptracker" +) + +func Tracker(c *fiber.Ctx) error { + hx := len(c.GetReqHeaders()["Hx-Request"]) > 0 + + data := hptracker.TrackerData{ + HP: "0", + HPBase: "0", + HPStartPercentage: "0", + HPPercentage: "0", + Mana: "0", + ManaBase: "0", + ManaRegen: "0", + ManaStartPercentage: "0", + ManaPercentage: "0", + } + + return render(c, hptracker.Show(hx, data)) +} + +func TrackerUpdate(c *fiber.Ctx) error { + + _, err := store.Get(c) + if err != nil { + return err + } + + // Parse the form data + formdata := c.Context().PostArgs() + + // Create an instance of TrackerData + data := hptracker.TrackerData{ + HP: string(formdata.Peek("hp")), + HPBase: string(formdata.Peek("hp")), + HPStartPercentage: "0", + HPPercentage: "100", + Mana: string(formdata.Peek("mana")), + ManaBase: string(formdata.Peek("mana")), + ManaRegen: string(formdata.Peek("manaregen")), + ManaStartPercentage: "0", + ManaPercentage: "100", + } + + // why no work? + // values := reflect.ValueOf(data) + // types := values.Type() + // prefix := "tracker_" + // for i := 0; i < values.NumField(); i++ { + // sess.Set(prefix+types.Field(i).Name, values.Field(i)) + // log.Info("test") + // } + // pre := "tracker_" + // sess.Set(pre+"HP", data.HP) + // sess.Set(pre+"HPBase", data.HPBase) + // sess.Set(pre+"HPStartPercentage", data.HPStartPercentage) + // sess.Set(pre+"HPStartPercentage", data.HPStartPercentage) + + // sess.Set(pre+"Mana", data.Mana) + // sess.Set(pre+"ManaBase", data.ManaBase) + // sess.Set(pre+"ManaRegen", data.ManaRegen) + // sess.Set(pre+"ManaStartPercentage", data.ManaStartPercentage) + // sess.Set(pre+"ManaPercentage", data.ManaPercentage) + + // sess.Save() + + return render(c, hptracker.TrackerColumn(data)) +} + +func TrackerDamage(c *fiber.Ctx) error { + + // formdata := c.Context().PostArgs() + + data := hptracker.TrackerData{ + HPStartPercentage: "100", + HPPercentage: "66", + } + + // log.Info(data) + + return render(c, hptracker.HPTracker(data)) +} + +func CheckStore(c *fiber.Ctx) error { + sess, err := store.Get(c) + if err != nil { + return err + } + log.Info(sess.Keys()) + return nil +} diff --git a/handler/util.go b/handler/util.go new file mode 100644 index 0000000..4d4ba4c --- /dev/null +++ b/handler/util.go @@ -0,0 +1,15 @@ +package handler + +import ( + "github.com/a-h/templ" + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/session" +) + +var store = session.New() + +func render(c *fiber.Ctx, component templ.Component) error { + // or templ wil bork... + c.Set("Content-type", "text/html") + return component.Render(c.Context(), c.Response().BodyWriter()) +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..d319a59 --- /dev/null +++ b/main.go @@ -0,0 +1,32 @@ +package main + +import ( + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/compress" + "github.com/itsig0/tallytome/handler" +) + +func main() { + + app := fiber.New(fiber.Config{ + ServerHeader: "TallyTome", + }) + + // compression baby + app.Use(compress.New()) + + app.Static("/", "./public") + + app.Get("/", handler.Index) + + tracker := app.Group("/hp-mana-tracker") + tracker.Get("/", handler.Tracker) + tracker.Post("/update", handler.TrackerUpdate) + tracker.Post("/damage", handler.TrackerDamage) + tracker.Get("/check", handler.CheckStore) + // app.Get("/*", func(c *fiber.Ctx) error { + // return c.SendString("Hello, World!") + // }) + + app.Listen(":3000") +} diff --git a/public/gopher.png b/public/gopher.png new file mode 100644 index 0000000..e12a5ec Binary files /dev/null and b/public/gopher.png differ diff --git a/public/scripts/alpine.js b/public/scripts/alpine.js new file mode 100644 index 0000000..f750e64 --- /dev/null +++ b/public/scripts/alpine.js @@ -0,0 +1,5 @@ +(()=>{var rt=!1,nt=!1,U=[],it=-1;function Vt(e){Sn(e)}function Sn(e){U.includes(e)||U.push(e),An()}function ve(e){let t=U.indexOf(e);t!==-1&&t>it&&U.splice(t,1)}function An(){!nt&&!rt&&(rt=!0,queueMicrotask(On))}function On(){rt=!1,nt=!0;for(let e=0;ee.effect(t,{scheduler:r=>{ot?Vt(r):r()}}),st=e.raw}function at(e){D=e}function Wt(e){let t=()=>{};return[n=>{let i=D(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o())}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),L(i))},i},()=>{t()}]}function Se(e,t){let r=!0,n,i=D(()=>{let o=e();JSON.stringify(o),r?n=o:queueMicrotask(()=>{t(o,n),n=o}),r=!1});return()=>L(i)}function W(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function C(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>C(i,t));return}let r=!1;if(t(e,()=>r=!0),r)return;let n=e.firstElementChild;for(;n;)C(n,t,!1),n=n.nextElementSibling}function E(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var Gt=!1;function Jt(){Gt&&E("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),Gt=!0,document.body||E("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` + + + Tallytome + + + +
+ @header() +
+ +
+ { children... } +
+ + //
+ // @footer() + //
+ + + +}else{ + { children... } +} + +} \ No newline at end of file diff --git a/view/layout/base_templ.go b/view/layout/base_templ.go new file mode 100644 index 0000000..c55a746 --- /dev/null +++ b/view/layout/base_templ.go @@ -0,0 +1,58 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.598 +package layout + +//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" + +func Base(hx bool) 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) + if hx == false { + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 1) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = header().Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 2) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + templ_7745c5c3_Err = templ.WriteWatchModeString(templ_7745c5c3_Buffer, 3) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + } else { + templ_7745c5c3_Err = templ_7745c5c3_Var1.Render(ctx, templ_7745c5c3_Buffer) + 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/layout/footer.templ b/view/layout/footer.templ new file mode 100644 index 0000000..41e9718 --- /dev/null +++ b/view/layout/footer.templ @@ -0,0 +1,7 @@ +package layout + +templ footer(){ + +

Feet

+ +} \ No newline at end of file diff --git a/view/layout/footer_templ.go b/view/layout/footer_templ.go new file mode 100644 index 0000000..9d6fd89 --- /dev/null +++ b/view/layout/footer_templ.go @@ -0,0 +1,35 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.598 +package layout + +//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" + +func footer() 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.WriteWatchModeString(templ_7745c5c3_Buffer, 1) + 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/layout/header.templ b/view/layout/header.templ new file mode 100644 index 0000000..12c7bc9 --- /dev/null +++ b/view/layout/header.templ @@ -0,0 +1,29 @@ +package layout + +templ header(){ + + + +} \ No newline at end of file diff --git a/view/layout/header_templ.go b/view/layout/header_templ.go new file mode 100644 index 0000000..6db5e21 --- /dev/null +++ b/view/layout/header_templ.go @@ -0,0 +1,35 @@ +// Code generated by templ - DO NOT EDIT. + +// templ: version: v0.2.598 +package layout + +//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" + +func header() 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.WriteWatchModeString(templ_7745c5c3_Buffer, 1) + 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 + }) +}