| -rw-r--r-- | internal/glightbox/html_renderer.go | 11 | ||||
| -rw-r--r-- | internal/router/handlers/lang-blog-title.go | 3 | ||||
| -rw-r--r-- | internal/router/router.go | 9 | ||||
| -rw-r--r-- | static/input.css | 16 | ||||
| -rw-r--r-- | views/layouts/general-page.html | 36 | ||||
| -rw-r--r-- | views/pages/blog-page.html | 12 | ||||
| -rw-r--r-- | views/pages/language-pick.html | 2 | ||||
| -rw-r--r-- | views/partials/general-page-header.html | 4 |
8 files changed, 28 insertions, 65 deletions
diff --git a/internal/glightbox/html_renderer.go b/internal/glightbox/html_renderer.go index b7b256a..7022793 100644 --- a/internal/glightbox/html_renderer.go +++ b/internal/glightbox/html_renderer.go @@ -133,9 +133,9 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte, } w.WriteString(fmt.Sprintf(` -<div class="items-center flex flex-col"> +<div class="justify-content-center display-block"> <hr class="border-t-3 border-dotted border-main-hard mt-1 mb-2 w-[80%%] ml-auto mr-auto"> - <div class="grid masonry-grid-%s"> + <div class="grid masonry-grid-%s mx-auto"> <div class="grid-sizer grid-sizer-%s"></div> %s </div> @@ -144,10 +144,11 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte, w.WriteString(fmt.Sprintf(` <script> - var pckry_%s = new Packery('.masonry-grid-%s', { + var msnry_%s = new Masonry('.masonry-grid-%s', { itemSelector: '.grid-item-%s', columnWidth: '.grid-sizer-%s', - percentPosition: false + percentPosition: false, + fitWidth: true }); var imgLoad_%s_timer; @@ -155,7 +156,7 @@ func (r *GLightboxHTMLRenderer) renderGLightbox(w util.BufWriter, source []byte, function initMasonryLayout_%s(tm) { clearTimeout(imgLoad_%s_timer); - imgLoad_%s_timer = setTimeout(() => pckry_%s.layout(), 100); + imgLoad_%s_timer = setTimeout(() => msnry_%s.layout(), 100); } imgLoad_%s.on('progress', initMasonryLayout_%s); diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go index 0f4f564..f1be2cd 100644 --- a/internal/router/handlers/lang-blog-title.go +++ b/internal/router/handlers/lang-blog-title.go @@ -74,7 +74,6 @@ func (r *BlogPageHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplemen templateMap["ParsedMarkdown"] = template.HTML(parsedMarkdown) templateMap["PublishedDate"] = metadata.PublishedTime.Format("2006-01-02 15:04:05 -07:00") templateMap["ActionDate"] = metadata.ActionDate - templateMap["ShortDescription"] = metadata.ShortDescription go supplements.ClientCache.View(c.IP(), pathParts[2]) @@ -93,6 +92,8 @@ func (r *BlogPageHandler) RenderHeader(c *fiber.Ctx, supplements *router.Supplem } templateMap["Title"] = metadata.Title + templateMap["PublishedDate"] = metadata.PublishedTime.Format("2006-01-02 15:04:05 -07:00") + templateMap["ActionDate"] = metadata.ActionDate return fiber.StatusOK, nil } diff --git a/internal/router/router.go b/internal/router/router.go index c0556f0..700fbbf 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -340,23 +340,18 @@ func (r *Router) Listen(endpoint string) error { func (r *Router) Close() (err error) { allErrors := make([]error, 0) - slog.Debug("shutting down blog trigger scheduler") if err = r.supplements.BlogTrigger.Close(); err != nil { allErrors = append(allErrors, fmt.Errorf("fail to shutdown blog trigger scheduler: %w", err)) } - slog.Debug("shutting down fiber server") if err = r.app.Shutdown(); err != nil { allErrors = append(allErrors, fmt.Errorf("fail to shutdown fiber server: %w", err)) } - slog.Debug("dumping cache") if err = r.supplements.ClientCache.Close(); err != nil { allErrors = append(allErrors, fmt.Errorf("fail to dump cache: %w", err)) } - slog.Debug("closing db connection") if err = r.supplements.DB.Close(); err != nil { allErrors = append(allErrors, fmt.Errorf("fail to close db connection: %w", err)) } - slog.Debug("closing page cache") r.supplements.PageCache.Close() return errors.Join(allErrors...) } @@ -489,10 +484,6 @@ func (r *Router) generalPageSegment(c *fiber.Ctx, part string) error { return c.Status(fiber.ErrInternalServerError.Code).SendString("failed to generate div") } - if statusCode == fiber.StatusNoContent && len(content) != 0 { - statusCode = fiber.StatusOK - } - if statusCode >= 200 && statusCode < 300 && route.ToCache() != Disabled { go r.supplements.PageCache.SetWithTTL(cacheKey, content, int64(len(content)), route.CacheDuration()) } diff --git a/static/input.css b/static/input.css index 8b69162..739caa3 100644 --- a/static/input.css +++ b/static/input.css @@ -468,11 +468,15 @@ form.crossable.htmx-request input { } .grid-item { + position: relative; + display: inline-block; width: 10rem; } .grid-sizer { - width: 10.5rem; + position: relative; + display: inline-block; + width: 10.1rem; } .grid-item-index { @@ -504,7 +508,7 @@ form.crossable.htmx-request input { } .grid-sizer { - width: 12.5rem; + width: 12.1rem; } .grid-item-2x { @@ -513,10 +517,14 @@ form.crossable.htmx-request input { } @container main (width >= 76rem) { - .grid-item, .grid-sizer { + .grid-item { width: 18rem; } + .grid-sizer { + width: 18.1rem; + } + .grid-item-2x { width: 36rem; } @@ -528,7 +536,7 @@ form.crossable.htmx-request input { } .grid-sizer { - width: 24.5rem; + width: 24.1rem; } .grid-item-2x { diff --git a/views/layouts/general-page.html b/views/layouts/general-page.html index fe6bc78..62360ad 100644 --- a/views/layouts/general-page.html +++ b/views/layouts/general-page.html @@ -137,7 +137,6 @@ document.body.append(frame); } break; - case "lilac": break; } } @@ -268,40 +267,7 @@ <script src="https://f003.backblazeb2.com/file/sayana-static/libs/htmx/2.0.6/htmx.min.js"></script> <script src="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet/1.9.4/leaflet.js"></script> <script src="https://f003.backblazeb2.com/file/sayana-static/libs/imagesloaded/5.0.0/imagesloaded.pkgd.min.js"></script> - <script src="https://f003.backblazeb2.com/file/sayana-static/libs/packery/3.0.0/dist/packery.pkgd.min.js"></script> - - <script> - // Enable fitWidth-like attribute for Packery. Source: https://codepen.io/desandro/pen/kVmLYz - var __resetLayout = Packery.prototype._resetLayout; - Packery.prototype._resetLayout = function() { - __resetLayout.call( this ); - var parentSize = getSize( this.element.parentNode ); - var colW = this.columnWidth + this.gutter; - this.fitWidth = Math.floor( ( parentSize.innerWidth + this.gutter ) / colW ) * colW; - this.packer.width = this.fitWidth; - this.packer.height = Number.POSITIVE_INFINITY; - this.packer.reset(); - }; - - Packery.prototype._getContainerSize = function() { - var emptyWidth = 0; - for ( var i=0, len = this.packer.spaces.length; i < len; i++ ) { - var space = this.packer.spaces[i]; - if ( space.y === 0 && space.height === Number.POSITIVE_INFINITY ) { - emptyWidth += space.width; - } - } - - return { - width: this.fitWidth - this.gutter - emptyWidth, - height: this.maxY - this.gutter - }; - }; - - Packery.prototype.needsResizeLayout = function() { - return true; - }; - </script> + <script src="https://f003.backblazeb2.com/file/sayana-static/libs/masonry-layout/4.2.2/masonry.pkgd.min.js"></script> <div id="general-page-bottom-embeds" class="flex" hx-get="/api/v1/general-page/bottom-embeds{{ if .QueryString }}?{{ .QueryString }}{{ end }}" hx-trigger="load" hx-target="this" hx-swap="innerHTML"> diff --git a/views/pages/blog-page.html b/views/pages/blog-page.html index f95c23b..7170ad8 100644 --- a/views/pages/blog-page.html +++ b/views/pages/blog-page.html @@ -1,15 +1,9 @@ {{ define "body" }} <div class="bg-background-light flex flex-col inset-shadow-[0_0_0.4rem_black] px-8 py-4 overflow-y-auto"> <p class="max-xs:block [@media(max-height:32rem)]:block hidden font-andika text-2xl font-bold italic text-main-hard tracking-[.0125rem] mb-1">{{ .Title }}</p> - <p class="block grow text-lg font-andika text-secondary"> - <b>{{ .L.Metadata.Published }}</b>: - <span hx-get="/api/v1/tz" hx-vals='js:{timestamp: "{{ .PublishedDate }}", tz: clientTimeZone}' hx-target="this" hx-swap="innerHTML" hx-trigger="load"> - {{ .PublishedDate }} - </span> - </p> - <p class="block grow text-lg font-andika text-secondary"><b>{{ .L.Metadata.Action }}</b>: {{ .ActionDate }}</p> - <p class="block grow text-md font-andika italic text-main-hard">{{ .ShortDescription }}</p> - <hr class="block border-t-2 border-dotted border-main-hard mt-1 mb-2 w-full ml-auto mr-auto"> + <p class="max-xs:block [@media(max-height:32rem)]:block hidden grow text-lg font-andika text-secondary">{{ .L.Metadata.Published }}: {{ .PublishedDate }}</p> + <p class="max-xs:block [@media(max-height:32rem)]:block hidden grow text-lg font-andika text-secondary">{{ .L.Metadata.Action }}: {{ .ActionDate }}</p> + <hr class="max-xs:block [@media(max-height:32rem)]:block hidden border-t-2 border-dotted border-main-hard mt-1 mb-2 w-full ml-auto mr-auto"> {{ .ParsedMarkdown }} {{- if .MapLocationX }} <hr class="border-t-3 border-dotted border-main-hard mt-1 mb-2 w-[80%] ml-auto mr-auto"> diff --git a/views/pages/language-pick.html b/views/pages/language-pick.html index 775c18e..5a9d229 100644 --- a/views/pages/language-pick.html +++ b/views/pages/language-pick.html @@ -1,5 +1,5 @@ {{ define "body" }} -<div class="flex flex-col justify-center text-3xl h-full"> +<div class="flex flex-col justify-center text-3xl h-[100%]"> {{- range .AvailableLanguages }} <hr class="border-t-2 border-dotted border-main-hard"> <div class="nth-[2n+1_of_div]:bg-(--background-medium-color)/50 nth-[2n_of_div]:bg-(--background-light-color)/50 p-2.5 flex flex-row justify-center justify-items-center"> diff --git a/views/partials/general-page-header.html b/views/partials/general-page-header.html index 83a1058..90180de 100644 --- a/views/partials/general-page-header.html +++ b/views/partials/general-page-header.html @@ -1,5 +1,7 @@ <title>{{ .Title }} // SAYA TODAY</title> -<div class="flex flex-row mb-2"> +<div {{ if .PublishedDate }} hx-get="/api/v1/tz" hx-vals='js:{timestamp: "{{ .PublishedDate }}", tz: clientTimeZone}' hx-target="#published-date" hx-swap="innerHTML" hx-trigger="load" {{ end }} + class="flex flex-row mb-2"> <p class="text-4xl font-andika font-light italic text-shadow-[0_2px_2px_var(--main-soft-color)] text-left mt-auto">{{ .Title }}</p> + <p id="published-date" class="grow text-2xl font-andika italic text-secondary text-right mt-auto">{{ .PublishedDate }}</p> </div> {{ block "header" . }}{{ end }} |