diff options
| author | Gabriel Schneider <[email protected]> | 2026-07-24 11:39:36 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-07-30 15:18:55 -0300 |
| commit | cb05c363045bf0e7af5858f6d7bc26f026fa9d70 (patch) | |
| tree | c3e89426ff044ffe339dd3a77e7f3b7115cba636 /vrsite/templates/frag-note.tmpl | |
| download | notevi-cb05c363045bf0e7af5858f6d7bc26f026fa9d70.tar.gz notevi-cb05c363045bf0e7af5858f6d7bc26f026fa9d70.zip | |
Diffstat (limited to 'vrsite/templates/frag-note.tmpl')
| -rw-r--r-- | vrsite/templates/frag-note.tmpl | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/vrsite/templates/frag-note.tmpl b/vrsite/templates/frag-note.tmpl new file mode 100644 index 0000000..56f7a8f --- /dev/null +++ b/vrsite/templates/frag-note.tmpl @@ -0,0 +1,52 @@ +{{define "note"}}{{$n := .N}}{{$p := .P}} +<article class="note am{{$n.Agent.Bit}}" id="note-{{$n.ID}}" + data-agent="{{$n.Agent.Name}}" data-model="{{$n.Model}}" data-session="{{$n.Session}}" + data-kind="{{$n.Kind}}" data-file="{{$n.File}}" data-date="{{if not $n.At.IsZero}}{{$n.At.Format "2006-01-02"}}{{end}}"> + <header> + {{if $n.File}}<a href="{{$p.NoteHref $n}}" title="{{$n.File}}">{{base $n.File}}{{lines $n}}</a>{{end}} + {{if $n.Kind}}<em>{{$n.Kind}}</em>{{end}} + <b class="who">{{$n.Agent.Short}}</b> + </header> + <p>{{$n.Text}}</p> + <footer class="meta"> + {{if not $n.At.IsZero}}<time datetime="{{$n.At.Format "2006-01-02T15:04:05Z07:00"}}" title="{{$n.Ago}}">{{$n.When}}</time>{{end}} + {{if $n.Model}}<span class="model">{{$n.Model}}{{if $n.Reason}}/{{$n.Reason}}{{end}}</span>{{end}} + {{if $n.Session}}<code class="sess" title="{{$n.Session}}">{{short $n.Session}}</code>{{end}} + {{if $n.Change}}{{if $p.Live}}<a href="{{$p.Href "change" $n.Change}}"><code>{{short $n.Change}}</code></a>{{else}}<code>{{short $n.Change}}</code>{{end}}{{end}} + </footer> +</article> +{{end}} + +{{define "notelist"}}{{range .Notes}}{{template "note" (dict "N" . "P" $)}}{{end}}{{if not .Notes}}<p class="meta hint empty">no notes match these filters</p>{{end}}{{end}} + +{{/* htmx responses: the list plus an out-of-band count update */}} +{{define "notelist-oob"}}<span id="notecount" hx-swap-oob="true">{{len .Notes}}</span>{{template "notelist" .}}{{end}} + +{{define "note-added"}}{{if .File}}<span id="notecount" hx-swap-oob="true">{{len .File.Notes}}</span>{{end}}{{range .Notes}}{{template "note" (dict "N" . "P" $)}}{{end}}{{end}} + +{{/* the add-a-comment form; live pages only, since it writes to the log */}} +{{define "noteform"}} +<form class="notform" hx-post="{{.Href "notes"}}" hx-target="#notelist" hx-swap="afterbegin" + hx-on::after-request="if(event.detail.successful){this.reset();{{if eq .Kind "notes"}}htmx.trigger('#notefilters','change');{{end}}}" + method="post" action="{{.Href "notes"}}"> + <input type="hidden" name="rev" value="{{.Rev}}"> + <input type="hidden" name="back" value="{{if .File}}{{.Href "code" .File.Path}}{{else}}{{.Href "notes"}}{{end}}"> + <div class="row"> + {{if .File}} + <input type="hidden" name="file" value="{{.File.Path}}"> + <span class="meta on">on <code>{{base .File.Path}}</code></span> + {{else}} + <input type="search" name="file" placeholder="file (optional)" list="filelist" autocomplete="off"> + {{end}} + <input type="number" id="nstart" name="start" min="1" placeholder="from" aria-label="first line"> + <input type="number" id="nend" name="end" min="1" placeholder="to" aria-label="last line"> + <input type="text" name="kind" placeholder="kind" aria-label="kind" list="kindlist" size="6"> + </div> + <textarea name="text" rows="3" placeholder="comment… (⌘/ctrl+enter to post)" required></textarea> + <div class="row end"> + <span class="meta">as <b>{{.User}}</b> → the log</span> + <button type="submit">add note</button> + </div> +</form> +<datalist id="kindlist">{{range .Facets.Kinds}}<option value="{{.}}">{{end}}</datalist> +{{end}} |
