From ef48719cf5f6c9d2308f3feb88ae57c9d175f0ec Mon Sep 17 00:00:00 2001 From: bronkuu Date: Wed, 27 May 2026 15:08:20 +0200 Subject: [PATCH] styles and organization --- .gitignore | 3 +- main.go | 90 +++++++++++++++++++---------------- resources/cakes.go | 20 ++++++++ templates/layout.templ | 2 +- templates/layout_templ.go | 2 +- templates/styles/style.gohtml | 11 ----- 6 files changed, 73 insertions(+), 55 deletions(-) create mode 100644 resources/cakes.go delete mode 100644 templates/styles/style.gohtml diff --git a/.gitignore b/.gitignore index 1591fdb..318ee30 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ www/*.html www/styles/style.css -docker-compose.yml \ No newline at end of file +docker-compose.yml +www/style.css diff --git a/main.go b/main.go index 76cd558..d268d40 100644 --- a/main.go +++ b/main.go @@ -3,31 +3,14 @@ package main import ( "context" "fmt" - "html/template" "io" + "log" "net/http" "os" + "piekarnikgosi/resources" "piekarnikgosi/templates" - "piekarnikgosi/types" ) -var Cakes = []types.Product{ - {"Malinowa chmurka", "001", "150", "kruchy spód, warstwa malin w galaretce, krem śmietankowy, beza"}, - {"Sernik ulubiony", "002", "150", "kruchy spód, aksamitna masa serowa, beza z kruszonką"}, - {"Jabłecznik z kruszonką", "003", "130", "ciasto ucierane, jabłka, kruszonka"}, - {"Sernik klasyczny", "004", "150", "wykończony czekoladowym ganache lub oprószony cukrem pudrem"}, - {"Sernik królewski", "005", "150", "kakaowy spód i kruszonka, wilgotna masa serowa"}, - {"Pleśniak", "006", "120", "kruche ciasto waniliowe, powidła owocowe, kruche ciasto kakaowe, beza i kruszonka"}, - {"Leśny mech z musem truskawkowym", "007", "110", "biszkoptowe ciasto z dodatkiem szpinaku, mus truskawkowy"}, - {"Snickers", "008", "150", "dwie warstwy kakaowego biszkoptu a pomiędzy bezowy blat orzechowy , krem budyniowy , toffi i,orzeszki ziemne"}, - {"Mleczna kanapka", "009", "120", "dwa blaty czekoladowego ciasta, a pomiędzy krem waniliowy z dodatkiem cienkiej warstwy,czekoladowej"}, - {"3Bit", "010", "120", "herbatniki, krem budyniowy, toffi i śmietana"}, - {"Biszkoptowe z kremem i owocami w galaretce", "011", "120", "biszkopt, krem budyniowy, owoce"}, - {"Kora orzechowa", "012", "150", "dwa blaty bezy orzechowej a pomiędzy krem budyniowy na bazie soku z brzoskwiń, delicje,pomarańczowe, owoce brzoskwiń i galaretka"}, - {"Nutelowiec z wiśniami", "013", "120", "nutelowy spód , krem śmietankowy z dodatkiem twarożku, wiśnie i galaretka"}, - {"Karpatka", "014", "120", ""}, -} - type ComponentRenderer interface { Render(ctx context.Context, w io.Writer) error } @@ -35,47 +18,72 @@ type ComponentRenderer interface { func saveFile(name string, comp ComponentRenderer) { file, err := os.Create("www/" + name + ".html") if err != nil { - panic(err) + log.Fatal(err) } defer file.Close() err = comp.Render(context.Background(), file) if err != nil { - panic(err) + log.Fatal(err) } } func generateHTML() { + log.Println("generating html") saveFile(`index`, templates.Index()) saveFile(`kawiarnia`, templates.Kawiarnia()) saveFile(`portfolio`, templates.Portfolio()) - saveFile(`wyroby`, templates.WyrobyCiasta(Cakes)) + saveFile(`wyroby`, templates.WyrobyCiasta(resources.Cakes)) saveFile(`wyroby_torty`, templates.WyrobyTorty()) saveFile(`wyroby_slodkie_stoly`, templates.WyrobySlodkieStoly()) saveFile(`wyroby_lody`, templates.WyrobyLody()) } -func main() { - fmt.Println("generating html") - err := os.MkdirAll("www/styles", 0777) - if err != nil { - panic(err) +func mergeStyles() { + log.Println("generating css") + cssFiles := []string{ + "normalize.css", + "base.css", + "components.css", + "home.css", + "layout.css", + "wyroby.css", + "wyroby_torty.css", + "wyroby_slodkie_stoly.css", + "wyroby_lody.css", + "portfolio.css", + "kawiarnia.css", } - generateHTML() - fmt.Println("generating css") - t, err := template.ParseGlob(`templates/styles/*`) - if err != nil { - panic(err) + var bundledCSS []byte + + for _, fileName := range cssFiles { + filePath := fmt.Sprint("templates/styles/", fileName) + content, err := os.ReadFile(filePath) + if err != nil { + log.Fatal(err) + } + bundledCSS = append(bundledCSS, content...) + bundledCSS = append(bundledCSS, '\n') } - file, err := os.Create("www/styles/style.css") + + err := os.WriteFile("www/style.css", bundledCSS, 0644) if err != nil { - panic(err) + log.Fatal(err) } - defer file.Close() - err = t.ExecuteTemplate(file, "style.gohtml", nil) - if err != nil { - panic(err) - } - fmt.Println("listening on :8000") - panic(http.ListenAndServe(":8000", http.FileServer(http.Dir("www")))) +} + +func ensureDir() { + log.Println("creating directories") + err := os.MkdirAll("www/styles", 0644) + if err != nil { + log.Fatal(err) + } +} + +func main() { + ensureDir() + generateHTML() + mergeStyles() + log.Println("listening on :8000") + log.Fatal(http.ListenAndServe(":8000", http.FileServer(http.Dir("www")))) } diff --git a/resources/cakes.go b/resources/cakes.go new file mode 100644 index 0000000..bbf8427 --- /dev/null +++ b/resources/cakes.go @@ -0,0 +1,20 @@ +package resources + +import "piekarnikgosi/types" + +var Cakes = []types.Product{ + {Name: "Malinowa chmurka", Image: "001", Price: "150", Description: "kruchy spód, warstwa malin w galaretce, krem śmietankowy, beza"}, + {Name: "Sernik ulubiony", Image: "002", Price: "150", Description: "kruchy spód, aksamitna masa serowa, beza z kruszonką"}, + {Name: "Jabłecznik z kruszonką", Image: "003", Price: "130", Description: "ciasto ucierane, jabłka, kruszonka"}, + {Name: "Sernik klasyczny", Image: "004", Price: "150", Description: "wykończony czekoladowym ganache lub oprószony cukrem pudrem"}, + {Name: "Sernik królewski", Image: "005", Price: "150", Description: "kakaowy spód i kruszonka, wilgotna masa serowa"}, + {Name: "Pleśniak", Image: "006", Price: "120", Description: "kruche ciasto waniliowe, powidła owocowe, kruche ciasto kakaowe, beza i kruszonka"}, + {Name: "Leśny mech z musem truskawkowym", Image: "007", Price: "110", Description: "biszkoptowe ciasto z dodatkiem szpinaku, mus truskawkowy"}, + {Name: "Snickers", Image: "008", Price: "150", Description: "dwie warstwy kakaowego biszkoptu a pomiędzy bezowy blat orzechowy , krem budyniowy , toffi i,orzeszki ziemne"}, + {Name: "Mleczna kanapka", Image: "009", Price: "120", Description: "dwa blaty czekoladowego ciasta, a pomiędzy krem waniliowy z dodatkiem cienkiej warstwy,czekoladowej"}, + {Name: "3Bit", Image: "010", Price: "120", Description: "herbatniki, krem budyniowy, toffi i śmietana"}, + {Name: "Biszkoptowe z kremem i owocami w galaretce", Image: "011", Price: "120", Description: "biszkopt, krem budyniowy, owoce"}, + {Name: "Kora orzechowa", Image: "012", Price: "150", Description: "dwa blaty bezy orzechowej a pomiędzy krem budyniowy na bazie soku z brzoskwiń, delicje,pomarańczowe, owoce brzoskwiń i galaretka"}, + {Name: "Nutelowiec z wiśniami", Image: "013", Price: "120", Description: "nutelowy spód , krem śmietankowy z dodatkiem twarożku, wiśnie i galaretka"}, + {Name: "Karpatka", Image: "014", Price: "120", Description: ""}, +} diff --git a/templates/layout.templ b/templates/layout.templ index 2072986..bb7d6e6 100644 --- a/templates/layout.templ +++ b/templates/layout.templ @@ -10,7 +10,7 @@ templ layout(activePage string) { Piekarnik Gosi - + diff --git a/templates/layout_templ.go b/templates/layout_templ.go index dd4a183..c857142 100644 --- a/templates/layout_templ.go +++ b/templates/layout_templ.go @@ -31,7 +31,7 @@ func layout(activePage string) templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "Piekarnik Gosi