From 71dcf9bf5e43e6ebe0dd5ae83ce9c7e2b405abe9 Mon Sep 17 00:00:00 2001 From: Simon Martens Date: Tue, 11 Feb 2025 21:35:40 +0100 Subject: [PATCH] Static files handling --- app/pb.go | 3 + migrations/1739007272_insert_data.go | 10 +-- migrations/seed/entries.go | 8 ++- migrations/seed/items.go | 7 +- pages/index.go | 8 ++- scratchpad.md | 23 +++++++ views/assets/style.css | 2 +- views/layouts/components/_header.gohtml | 4 +- views/routes/components/_akteur.gohtml | 92 ------------------------- 9 files changed, 50 insertions(+), 107 deletions(-) create mode 100644 scratchpad.md delete mode 100644 views/routes/components/_akteur.gohtml diff --git a/app/pb.go b/app/pb.go index 43470a7..ec101a3 100644 --- a/app/pb.go +++ b/app/pb.go @@ -10,6 +10,7 @@ import ( "github.com/mattn/go-sqlite3" "github.com/pocketbase/dbx" "github.com/pocketbase/pocketbase" + "github.com/pocketbase/pocketbase/apis" "github.com/pocketbase/pocketbase/core" ) @@ -120,6 +121,8 @@ func (app *App) Serve() error { }) app.PB.OnServe().BindFunc(func(e *core.ServeEvent) error { + e.Router.GET("/assets/{path...}", apis.Static(views.StaticFS, true)) + for _, page := range app.Pages { page.Setup(e.Router, e.App, engine) } diff --git a/migrations/1739007272_insert_data.go b/migrations/1739007272_insert_data.go index 098235f..4b89759 100644 --- a/migrations/1739007272_insert_data.go +++ b/migrations/1739007272_insert_data.go @@ -40,6 +40,8 @@ func init() { panic(err) } + placesmap := datatypes.MakeMap(places, func(record *dbmodels.Place) string { return record.Name() }) + series, err := seed.RecordsFromReihentitel(app, adb.Reihen) if err == nil { for _, record := range series { @@ -51,7 +53,7 @@ func init() { panic(err) } - entries, err := seed.RecordsFromBände(app, *adb) + entries, err := seed.RecordsFromBände(app, *adb, placesmap) if err == nil { for _, record := range entries { if err = app.Save(record); err != nil { @@ -62,7 +64,9 @@ func init() { panic(err) } - if records, err := seed.ItemsFromBändeAndBIBLIO(app, adb.Bände, adb.BIBLIO); err == nil { + entriesmap := datatypes.MakeMap(entries, func(record *dbmodels.Entry) string { return record.MusenalmID() }) + + if records, err := seed.ItemsFromBändeAndBIBLIO(app, adb.Bände, adb.BIBLIO, entriesmap); err == nil { for _, record := range records { if err = app.Save(record); err != nil { app.Logger().Error("Error saving record", "error", err, "record", record) @@ -72,8 +76,6 @@ func init() { panic(err) } - entriesmap := datatypes.MakeMap(entries, func(record *dbmodels.Entry) string { return record.MusenalmID() }) - contents, err := seed.RecordsFromInhalte(app, adb.Inhalte, entriesmap) if err == nil { for _, record := range contents { diff --git a/migrations/seed/entries.go b/migrations/seed/entries.go index f4efa95..8ed0f8a 100644 --- a/migrations/seed/entries.go +++ b/migrations/seed/entries.go @@ -15,6 +15,7 @@ import ( func RecordsFromBände( app core.App, adb xmlmodels.AccessDB, + places map[string]*dbmodels.Place, ) ([]*dbmodels.Entry, error) { collection, err := app.FindCollectionByNameOrId(dbmodels.ENTRIES_TABLE) records := make([]*dbmodels.Entry, 0, len(adb.Bände.Bände)) @@ -74,7 +75,7 @@ func RecordsFromBände( handlePreferredTitleEntry(record, band, rmap, relmap) handleDeprecated(record, band) - handleOrte(record, band, omap, app, ocoll) + handleOrte(record, band, omap, app, ocoll, places) records = append(records, record) } @@ -122,6 +123,7 @@ func handleOrte( orte map[string]xmlmodels.Ort, app core.App, ocollection *core.Collection, + places map[string]*dbmodels.Place, ) { for _, v := range band.Orte { o, ok := orte[v.Value] @@ -133,8 +135,8 @@ func handleOrte( e = true } - ort, err := app.FindFirstRecordByData(dbmodels.PLACES_TABLE, dbmodels.PLACES_NAME_FIELD, n) - if err == nil { + ort, ok := places[n] + if ok { before := record.Places() record.SetPlaces(append(before, ort.Id)) } else { diff --git a/migrations/seed/items.go b/migrations/seed/items.go index 6d1d15c..e3f9600 100644 --- a/migrations/seed/items.go +++ b/migrations/seed/items.go @@ -16,6 +16,7 @@ func ItemsFromBändeAndBIBLIO( app core.App, entries xmlmodels.Bände, biblio map[int]xmlmodels.BIBLIOEintrag, + entriesmap map[string]*dbmodels.Entry, ) ([]*dbmodels.Item, error) { collection, err := app.FindCollectionByNameOrId(dbmodels.ITEMS_TABLE) records := make([]*dbmodels.Item, 0, len(entries.Bände)) @@ -27,9 +28,9 @@ func ItemsFromBändeAndBIBLIO( for i := 0; i < len(entries.Bände); i++ { band := entries.Bände[i] - banddb, err := app.FindFirstRecordByData(dbmodels.ENTRIES_TABLE, dbmodels.MUSENALMID_FIELD, band.ID) - if err != nil { - app.Logger().Error("Error finding record", "error", err, "collection", dbmodels.ENTRIES_TABLE, "field", dbmodels.MUSENALMID_FIELD, "value", band.ID) + banddb, ok := entriesmap[band.ID] + if !ok { + app.Logger().Error("Error finding entry", "error", err, "entry", band.ID) continue } diff --git a/pages/index.go b/pages/index.go index e877bb7..81c914b 100644 --- a/pages/index.go +++ b/pages/index.go @@ -2,6 +2,7 @@ package pages import ( "net/http" + "strings" "github.com/Theodor-Springmann-Stiftung/musenalm/app" "github.com/Theodor-Springmann-Stiftung/musenalm/pagemodels" @@ -33,7 +34,12 @@ func (p *IndexPage) Down(app core.App) error { func (p *IndexPage) Setup(router *router.Router[*core.RequestEvent], app core.App, engine *templating.Engine) error { router.GET("/{$}", func(e *core.RequestEvent) error { - return e.String(http.StatusOK, "Hello, World!") + var builder strings.Builder + err := engine.Render(&builder, "/", nil) + if err != nil { + return err + } + return e.HTML(http.StatusOK, builder.String()) }) return nil } diff --git a/scratchpad.md b/scratchpad.md new file mode 100644 index 0000000..424c7a1 --- /dev/null +++ b/scratchpad.md @@ -0,0 +1,23 @@ +Vorteile PocketBase +- Log-Datenbank +- User-Management +- Kurze Übernahme neuer Features +- Backup +- Email + +- Hooks + + +Nachteile PocketBase +- Alles muss über Hooks gemacht werden +- Eigener HTTP-Server +- Eigene Cache-Implemtation +- Eigene Cookies on Auth + +- Eine weitere Abhängigkeit + + +Für einen Umzug: +Alle PB-Abfragen die Record benutzen, nach sql-Abfragen umwandeln. +Eigene DB-Connection +Modelle umwandeln (zzt RecordProxy) diff --git a/views/assets/style.css b/views/assets/style.css index ce0dc75..f369de5 100644 --- a/views/assets/style.css +++ b/views/assets/style.css @@ -1 +1 @@ -/*! tailwindcss v4.0.5 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:"Source Sans 3","Merriweather Sans",ui-sans-serif;--font-serif:"Merriweather",ui-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(.637 .237 25.331);--color-slate-50:oklch(.984 .003 247.858);--color-slate-200:oklch(.929 .013 255.508);--color-slate-700:oklch(.372 .044 257.287);--color-slate-900:oklch(.208 .042 265.755);--color-gray-200:oklch(.928 .006 264.531);--spacing:.25rem;--breakpoint-2xl:96rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-bold:700;--ease-in:cubic-bezier(.4,0,1,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}}@layer components{html{font-size:15.5px}body{background-color:var(--color-slate-50)}h1,h2,h3,h4{font-family:var(--font-serif);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}a{-webkit-hyphens:none;hyphens:none;color:var(--color-slate-700);text-decoration-line:underline;text-decoration-style:dotted}@media (hover:hover){a:hover{color:var(--color-slate-900);text-decoration-style:solid}}ul{margin-block:calc(var(--spacing)*2)}li{margin-left:calc(var(--spacing)*14);list-style-type:disc}a[aria-current=page]{color:var(--color-red-500)!important}main{flex-grow:1;flex-shrink:0}}@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.relative{position:relative}.bottom-0\.5{bottom:calc(var(--spacing)*.5)}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-12{margin-top:calc(var(--spacing)*12)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.h-1{height:calc(var(--spacing)*1)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-6\/12{width:50%}.w-full{width:100%}.max-w-\(--breakpoint-2xl\){max-width:var(--breakpoint-2xl)}.translate-2{--tw-translate-x:calc(var(--spacing)*2);--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.justify-center{justify-content:center}.gap-x-2{column-gap:calc(var(--spacing)*2)}.gap-y-2{row-gap:calc(var(--spacing)*2)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-200{background-color:var(--color-slate-200)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-3{padding-block:calc(var(--spacing)*3)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.align-bottom{vertical-align:bottom}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-wrap{text-wrap:wrap}.italic{font-style:italic}.no-underline\!{text-decoration-line:none!important}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.\[a-zA-Z\:\\-\\\.\]{a-zA-Z:\-\.}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false} +/*! tailwindcss v4.0.5 | MIT License | https://tailwindcss.com */@layer theme{:root,:host{--font-sans:"Source Sans 3","Merriweather Sans",ui-sans-serif;--font-serif:"Merriweather",ui-serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-500:oklch(.637 .237 25.331);--color-slate-50:oklch(.984 .003 247.858);--color-slate-200:oklch(.929 .013 255.508);--color-slate-700:oklch(.372 .044 257.287);--color-slate-900:oklch(.208 .042 265.755);--color-gray-200:oklch(.928 .006 264.531);--spacing:.25rem;--breakpoint-2xl:96rem;--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-bold:700;--ease-in:cubic-bezier(.4,0,1,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-font-feature-settings:var(--font-sans--font-feature-settings);--default-font-variation-settings:var(--font-sans--font-variation-settings);--default-mono-font-family:var(--font-mono);--default-mono-font-feature-settings:var(--font-mono--font-feature-settings);--default-mono-font-variation-settings:var(--font-mono--font-variation-settings)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*,:after,:before,::backdrop{border-color:var(--color-gray-200,currentColor)}::file-selector-button{border-color:var(--color-gray-200,currentColor)}}@layer components{html{font-size:15.5px}body{background-color:var(--color-slate-50)}h1,h2,h3,h4{font-family:var(--font-serif);--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}a{-webkit-hyphens:none;hyphens:none;color:var(--color-slate-700);text-decoration-line:underline;text-decoration-style:dotted}@media (hover:hover){a:hover{color:var(--color-slate-900);text-decoration-style:solid}}ul{margin-block:calc(var(--spacing)*2)}li{margin-left:calc(var(--spacing)*14);list-style-type:disc}a[aria-current=page]{color:var(--color-red-500)!important}main{flex-grow:1;flex-shrink:0}}@layer utilities{.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-12{margin-top:calc(var(--spacing)*12)}.ml-2{margin-left:calc(var(--spacing)*2)}.block{display:block}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.h-1{height:calc(var(--spacing)*1)}.h-2{height:calc(var(--spacing)*2)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-6\/12{width:50%}.w-full{width:100%}.max-w-\(--breakpoint-2xl\){max-width:var(--breakpoint-2xl)}.translate-2{--tw-translate-x:calc(var(--spacing)*2);--tw-translate-y:calc(var(--spacing)*2);translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x)var(--tw-rotate-y)var(--tw-rotate-z)var(--tw-skew-x)var(--tw-skew-y)}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.justify-center{justify-content:center}.gap-y-2{row-gap:calc(var(--spacing)*2)}.border{border-style:var(--tw-border-style);border-width:1px}.bg-slate-50{background-color:var(--color-slate-50)}.bg-slate-200{background-color:var(--color-slate-200)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-5{padding-inline:calc(var(--spacing)*5)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-3{padding-block:calc(var(--spacing)*3)}.align-bottom{vertical-align:bottom}.align-top{vertical-align:top}.font-mono{font-family:var(--font-mono)}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-wrap{text-wrap:wrap}.italic{font-style:italic}.overline{text-decoration-line:overline}.underline{text-decoration-line:underline}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.\[a-zA-Z\:\\-\\\.\]{a-zA-Z:\-\.}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false;initial-value:rotateX(0)}@property --tw-rotate-y{syntax:"*";inherits:false;initial-value:rotateY(0)}@property --tw-rotate-z{syntax:"*";inherits:false;initial-value:rotateZ(0)}@property --tw-skew-x{syntax:"*";inherits:false;initial-value:skewX(0)}@property --tw-skew-y{syntax:"*";inherits:false;initial-value:skewY(0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false} diff --git a/views/layouts/components/_header.gohtml b/views/layouts/components/_header.gohtml index 4818a64..f98938c 100644 --- a/views/layouts/components/_header.gohtml +++ b/views/layouts/components/_header.gohtml @@ -1,3 +1 @@ -
-

Königsberger gelehrte und politische Zeitungen

-
+MALM diff --git a/views/routes/components/_akteur.gohtml b/views/routes/components/_akteur.gohtml deleted file mode 100644 index 2e36654..0000000 --- a/views/routes/components/_akteur.gohtml +++ /dev/null @@ -1,92 +0,0 @@ -{{ $a := . }} -{{ if and $a (ne (len $a.Names) 0) }} -
- {{ index $a.Names 0 }} -
- {{ $gnd := GetGND $a.GND }} - {{ if (ne $gnd nil) }} - {{- if ne (len $gnd.DateOfBirth) 0 -}} -   - {{- HRDateShort (index $gnd.DateOfBirth 0) -}} - {{- end -}} - {{- if ne (len $gnd.DateOfDeath) 0 }} -   {{ HRDateShort (index $gnd.DateOfDeath 0) }} - {{ end }} - {{- if ne (len $gnd.ProfessionOrOccupation) 0 -}} -
- {{- (index $gnd.ProfessionOrOccupation 0).Label -}} - {{- if gt (len $gnd.ProfessionOrOccupation) 1 -}} - , - {{ (index $gnd.ProfessionOrOccupation 1).Label -}} - {{ end -}} - {{- if gt (len $gnd.ProfessionOrOccupation) 2 -}} - , - {{ (index $gnd.ProfessionOrOccupation 2).Label -}} - {{ end -}} -
- {{ end }} - {{ end }} - - -
- - - {{- if ne $gnd nil -}} - GND → - {{- if ne (len $gnd.Wikipedia) 0 -}} - WIKI → - {{ end -}} - {{ end }} - -
-
- - {{ $works := LookupWorks $a }} - {{- if ne (len $works) 0 -}} -
- {{ range $_, $w := $works }} - {{- if ne (len $w.Item.Citation.InnerXML ) 0 -}} - - {{- end -}} - {{ range $_, $url := $w.Item.URLs }} -
- {{ $url.Chardata }} -
- {{ end }} - - {{ $pieces := LookupPieces $w.Item }} - {{ if len $pieces }} -
- {{ range $_, $p := $pieces }} - {{- range $_, $i := $p.Item.IssueRefs -}} -
- {{ $i.Nr }}/{{ $i.When }} -
- {{- end -}} - {{ end }} -
- {{ end }} - {{ end }} -
- {{ end }} - - {{ $pieces := LookupPieces $a }} - {{- if ne (len $pieces) 0 -}} -
- {{ range $_, $p := $pieces }} - {{- range $_, $i := $p.Item.IssueRefs -}} -
- {{ $i.Nr }}/{{ $i.When }} -
- {{- end -}} - {{ end }} -
- {{ end }} - -
-{{ end }}