Add category template, replace uint to int, rename market to main

This commit is contained in:
mikgor 2018-10-26 10:40:11 +02:00
parent 24ca2bd55f
commit fe8b875365
6 changed files with 49 additions and 5 deletions

View File

@ -7,7 +7,8 @@ import (
func initializePages() {
Pages = make(map[string]Page)
Pages["index"] = Page{Path: "/", Template: "templates/index.html", Data: map[string]interface{}{"categories": Categories}}
Pages["index"] = Page{"/", "templates/index.html", map[string]interface{}{"categories": Categories}, nil}
Pages["category"] = Page{"/category", "templates/category.html", map[string]interface{}{}, DynamicDataLoaderCategory}
}
func initializeData() {

View File

View File

@ -3,26 +3,41 @@ package models
import (
"net/http"
"html/template"
"strconv"
)
type Page struct {
Path string
Template string
Data map[string]interface{}
DynamicDataLoader func(int) map[string]interface{}
}
func DynamicDataLoaderCategory(id int) map[string]interface{}{
return map[string]interface{}{
"category": GetCategoryById(id),
"products": GetCategoryProducts(id),
}
}
func (p Page) HandlePage(w http.ResponseWriter, r *http.Request) {
if p.DynamicDataLoader != nil {
id, err := strconv.Atoi(r.URL.Query()["id"][0])
if err == nil {
p.Data = p.DynamicDataLoader(id)
}
}
t, _ := template.ParseFiles(p.Template, "templates/base.html")
t.ExecuteTemplate(w, "base", p.Data)
}
type Category struct {
Id uint
Id int
Name string
}
type Product struct {
Id uint
Id int
Category Category
Name string
Description string
@ -45,3 +60,25 @@ func GetCategoryByName(name string) Category {
}
return category
}
func GetCategoryById(id int) Category {
var category Category
for i:= range Categories {
if Categories[i].Id == id {
category = Categories[i]
break
}
}
return category
}
func GetCategoryProducts(id int) []Product {
var products []Product
for i:= range Products {
if Products[i].Category.Id == id {
products = append(products, Products[i])
break
}
}
return products
}

View File

@ -9,7 +9,7 @@
<link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
</head>
<body>
[logo]
<a href="http://127.0.0.1:8000">[Strona główna]<a/>
{{template "content" .}}
</body>
</html>

6
templates/category.html Normal file
View File

@ -0,0 +1,6 @@
{{define "content"}}
{{.category.Name}}
{{range $.products}}
<a href="">{{ .Name }}</a>
{{end}}
{{end}}

View File

@ -1,5 +1,5 @@
{{define "content"}}
{{range $.categories}}
<a href="/category/{{ .Id }}">{{ .Name }}</a>
<a href="/category?id={{ .Id }}">{{ .Name }}</a>
{{end}}
{{end}}