search frontend
This commit is contained in:
parent
10140231a6
commit
d59c119f75
6 changed files with 46 additions and 16 deletions
|
|
@ -14,6 +14,12 @@ func (h *Server) orders(r *http.Request) (any, int, error) {
|
||||||
return data, http.StatusOK, err
|
return data, http.StatusOK, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Server) ordersSearch(r *http.Request) (any, int, error) {
|
||||||
|
data, err := h.s.GetOrders()
|
||||||
|
data = data[:3]
|
||||||
|
return data, http.StatusOK, err
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Server) cakes(r *http.Request) (any, int, error) {
|
func (h *Server) cakes(r *http.Request) (any, int, error) {
|
||||||
data, err := h.s.GetCakes()
|
data, err := h.s.GetCakes()
|
||||||
return data, http.StatusOK, err
|
return data, http.StatusOK, err
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,7 @@ type Server struct {
|
||||||
type route struct {
|
type route struct {
|
||||||
function fetcher
|
function fetcher
|
||||||
template string
|
template string
|
||||||
|
templateEntry string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *Server) Close() {
|
func (h *Server) Close() {
|
||||||
|
|
@ -30,7 +31,7 @@ func (h *Server) loadHandler() {
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
|
|
||||||
for i, e := range h.routes {
|
for i, e := range h.routes {
|
||||||
mux.HandleFunc(i, h.render(e.function, e.template))
|
mux.HandleFunc(i, h.render(e.function, e.template, e.templateEntry))
|
||||||
}
|
}
|
||||||
|
|
||||||
mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther))
|
mux.HandleFunc("GET /", h.redirect("/orders", http.StatusSeeOther))
|
||||||
|
|
@ -45,12 +46,13 @@ func New(store *store.Store) *Server {
|
||||||
var server Server
|
var server Server
|
||||||
|
|
||||||
server.routes = map[string]route{
|
server.routes = map[string]route{
|
||||||
"GET /order/": {server.order, "order"},
|
"GET /order/": {server.order, "order", "layout"},
|
||||||
"GET /orders": {server.orders, "orders"},
|
"GET /orders": {server.orders, "orders", "layout"},
|
||||||
"GET /cake/": {server.cake, "cake"},
|
"GET /orders/search/": {server.ordersSearch, "orders", "orders-table"},
|
||||||
"GET /cakes": {server.cakes, "cakes"},
|
"GET /cake/": {server.cake, "cake", "layout"},
|
||||||
"POST /order/": {server.postOrder, "confirmation"},
|
"GET /cakes": {server.cakes, "cakes", "layout"},
|
||||||
"POST /cake/": {server.postCake, "confirmation"},
|
"POST /order/": {server.postOrder, "confirmation", "layout"},
|
||||||
|
"POST /cake/": {server.postCake, "confirmation", "layout"},
|
||||||
}
|
}
|
||||||
|
|
||||||
server.loadTemplates()
|
server.loadTemplates()
|
||||||
|
|
|
||||||
|
|
@ -26,14 +26,14 @@ func (h *Server) loadTemplates() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) render(fetch fetcher, templateName string) http.HandlerFunc {
|
func (s *Server) render(fetch fetcher, templateFile string, templateEntry string) http.HandlerFunc {
|
||||||
return func(w http.ResponseWriter, r *http.Request) {
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
data, code, err := fetch(r)
|
data, code, err := fetch(r)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logging.ErrorPage(err, code).ServeHTTP(w, r)
|
logging.ErrorPage(err, code).ServeHTTP(w, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
err = s.tmpl[templateName].ExecuteTemplate(w, "layout", data)
|
err = s.tmpl[templateFile].ExecuteTemplate(w, templateEntry, data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logging.ErrorPage(err, http.StatusInternalServerError).ServeHTTP(w, r)
|
logging.ErrorPage(err, http.StatusInternalServerError).ServeHTTP(w, r)
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{{define "title"}}
|
{{define "title"}}
|
||||||
Cake
|
Cake {{.ID}}
|
||||||
{{end}}
|
{{end}}
|
||||||
{{define "main"}}
|
{{define "main"}}
|
||||||
<main>
|
<main>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{{define "title"}}
|
{{define "title"}}
|
||||||
Order
|
Order {{.Order.ID}}
|
||||||
{{end}}
|
{{end}}
|
||||||
{{define "main"}}
|
{{define "main"}}
|
||||||
<main>
|
<main>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,30 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
{{define "main"}}
|
{{define "main"}}
|
||||||
<main>
|
<main>
|
||||||
<table>
|
<div class="search-container">
|
||||||
|
<input
|
||||||
|
type="search"
|
||||||
|
name="q"
|
||||||
|
hx-get="/orders/search"
|
||||||
|
hx-trigger="keyup changed delay:500ms"
|
||||||
|
hx-target="#results-table"
|
||||||
|
hx-push-url="true"
|
||||||
|
placeholder="Search orders..."
|
||||||
|
>
|
||||||
|
|
||||||
|
<div class="htmx-indicator">
|
||||||
|
Searching...
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="results-table">
|
||||||
|
{{template "orders-table" .}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
{{end}}
|
||||||
|
|
||||||
|
{{define "orders-table"}}
|
||||||
|
<table id="orders_table">
|
||||||
<tr>
|
<tr>
|
||||||
<th></th>
|
<th></th>
|
||||||
<th>Name</th>
|
<th>Name</th>
|
||||||
|
|
@ -30,5 +53,4 @@
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
</table>
|
</table>
|
||||||
</main>
|
{{end}}
|
||||||
{{end}}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue