aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Janouch <p@janouch.name>2019-04-14 19:12:31 +0200
committerPřemysl Janouch <p@janouch.name>2019-04-14 19:48:32 +0200
commit3d98454543f4494fd267e851b48d58a05aea11dc (patch)
treedd6fb2fa02650abbbf098ea356974045002b5088
parentfbb76679f36963daea01ef65bd939846d42b0cc1 (diff)
downloadsklad-3d98454543f4494fd267e851b48d58a05aea11dc.tar.gz
sklad-3d98454543f4494fd267e851b48d58a05aea11dc.tar.xz
sklad-3d98454543f4494fd267e851b48d58a05aea11dc.zip
sklad: cleanup, add comment
Child containers now show a linear list of subcontainers.
-rw-r--r--sklad/container.tmpl28
-rw-r--r--sklad/db.go9
-rw-r--r--sklad/main.go36
3 files changed, 37 insertions, 36 deletions
diff --git a/sklad/container.tmpl b/sklad/container.tmpl
index cbc8ea4..4bacae8 100644
--- a/sklad/container.tmpl
+++ b/sklad/container.tmpl
@@ -1,22 +1,23 @@
-{{ define "Title" }}{{ or .Id "Obaly" }}{{ end }}
+{{ define "Title" }}{{/*
+*/}}{{ if .Container }}{{ .Container.Id }}{{ else }}Obaly{{ end }}{{ end }}
{{ define "Content" }}
-{{ if .Id }}
+{{ if .Container }}
<section>
<header>
- <h2>{{ .Id }}</h2>
- <form method=post action="/label?id={{ .Id }}">
+ <h2>{{ .Container.Id }}</h2>
+ <form method=post action="/label?id={{ .Container.Id }}">
<input type=submit value="Vytisknout štítek">
</form>
- <form method=post action="/?id={{ .Id }}&amp;remove">
+ <form method=post action="/?id={{ .Container.Id }}&amp;remove">
<input type=submit value="Odstranit">
</form>
</header>
-<form method=post action="/?id={{ .Id }}">
+<form method=post action="/?id={{ .Container.Id }}">
<textarea name=description rows=5>
-{{ .Description }}
+{{ .Container.Description }}
</textarea>
<footer>
<div>
@@ -24,14 +25,14 @@
<select name=series id=series>
{{ range $prefix, $desc := .AllSeries }}
<option value="{{ $prefix }}"
- {{ if eq $prefix $.Series }}selected{{ end }}
+ {{ if eq $prefix $.Container.Series }}selected{{ end }}
>{{ $prefix }} &mdash; {{ $desc }}</option>
{{ end }}
</select>
</div>
<div>
<label for=parent>Nadobal:</label>
- <input type=text name=parent id=parent value="{{ .Parent }}">
+ <input type=text name=parent id=parent value="{{ .Container.Parent }}">
</div>
<input type=submit value="Uložit">
</footer>
@@ -54,7 +55,6 @@
<select name=series id=series>
{{ range $prefix, $desc := .AllSeries }}
<option value="{{ $prefix }}"
- {{ if eq $prefix $.Series }}selected{{ end }}
>{{ $prefix }} &mdash; {{ $desc }}</option>
{{ end }}
</select>
@@ -74,7 +74,7 @@
{{ range .Children }}
<section>
<header>
- <h3><a href="/container?id={{ .Id }}">{{ .Id }}</a></h3>
+ <h3><a href="/?id={{ .Id }}">{{ .Id }}</a></h3>
<form method=post action="/label?id={{ .Id }}">
<input type=submit value="Vytisknout štítek">
</form>
@@ -85,6 +85,12 @@
{{ if .Description }}
<p>{{ .Description }}
{{ end }}
+{{ if .Children }}
+<p>
+{{ range .Children }}
+<a href="/?id={{ .Id }}">{{ .Id }}</a>
+{{ end }}
+{{ end }}
</section>
{{ else }}
<p>Obal je prázdný.
diff --git a/sklad/db.go b/sklad/db.go
index 3420c23..300c1bd 100644
--- a/sklad/db.go
+++ b/sklad/db.go
@@ -13,6 +13,8 @@ type Series struct {
Description string // what kind of containers this is for
}
+type ContainerId string
+
type Container struct {
Series string // PK: what series does this belong to
Number uint // PK: order within the series
@@ -20,12 +22,15 @@ type Container struct {
Description string // description and/or contents of this container
}
-type ContainerId string
-
func (c *Container) Id() ContainerId {
return ContainerId(fmt.Sprintf("%s%s%d", db.Prefix, c.Series, c.Number))
}
+func (c *Container) Children() []*Container {
+ // TODO: Sort this by Id, or maybe even return a map[string]*Container.
+ return indexChildren[c.Id()]
+}
+
type Database struct {
Password string // password for web users
Prefix string // prefix for all container IDs
diff --git a/sklad/main.go b/sklad/main.go
index a2a7143..1a9442a 100644
--- a/sklad/main.go
+++ b/sklad/main.go
@@ -92,35 +92,24 @@ func handleContainer(w http.ResponseWriter, r *http.Request) {
allSeries[s.Prefix] = s.Description
}
+ var container *Container
children := []*Container{}
- id := ContainerId(r.FormValue("id"))
- description := ""
- series := ""
- parent := ContainerId("")
- if id == "" {
- children = indexChildren[id]
- } else if container, ok := indexContainer[id]; ok {
- children = indexChildren[id]
- description = container.Description
- series = container.Series
- parent = container.Parent
+ if id := ContainerId(r.FormValue("id")); id == "" {
+ children = indexChildren[""]
+ } else if c, ok := indexContainer[id]; ok {
+ children = c.Children()
+ container = c
}
params := struct {
- Id ContainerId
- Description string
- Children []*Container
- Series string
- Parent ContainerId
- AllSeries map[string]string
+ Container *Container
+ Children []*Container
+ AllSeries map[string]string
}{
- Id: id,
- Description: description,
- Children: children,
- Series: series,
- Parent: parent,
- AllSeries: allSeries,
+ Container: container,
+ Children: children,
+ AllSeries: allSeries,
}
executeTemplate("container.tmpl", w, &params)
@@ -171,6 +160,7 @@ func handleSearch(w http.ResponseWriter, r *http.Request) {
_ = query
// TODO: Query the database for exact matches and fulltext.
+ // - Will want to show the full path from the root "" container.
params := struct{}{}