1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-12 05:20:26 +00:00

Group recent changes by date

This commit is contained in:
handlerug 2021-07-01 16:37:41 +07:00
parent 7073f9bce0
commit b81650fef7
No known key found for this signature in database
GPG Key ID: 38009F0605051491
2 changed files with 219 additions and 166 deletions

View File

@ -1,4 +1,6 @@
{% import "fmt" %}
{% import "net/http" %}
{% import "time" %}
{% import "github.com/bouncepaw/mycorrhiza/cfg" %}
{% import "github.com/bouncepaw/mycorrhiza/util" %}
@ -32,15 +34,15 @@ if err != nil {
<nav class="recent-changes__count">
See
{% for _, m := range []int{20, 0, 50, 0, 100} %}
{% switch m %}
{% case 0 %}
{% for i, m := range []int{20, 50, 100} %}
{% if i > 0 %}
<span aria-hidden="true">|</span>
{% case n %}
<b>{%d n %}</b>
{% default %}
{% endif %}
{% if m == n %}
<b>{%d m %}</b>
{% else %}
<a href="/recent-changes/{%d m %}">{%d m %}</a>
{% endswitch %}
{% endif %}
{% endfor %}
recent changes
</nav>
@ -54,18 +56,28 @@ if err != nil {
How come? I'll add the role anyway. -- bouncepaw
{% endcomment %}
{% code
{% code
changes := history.RecentChanges(n)
var year, day int
var month time.Month
%}
<section class="recent-changes__list" role="feed">
{% if len(changes) == 0 %}
<p>Could not find any recent changes.</p>
{% else %}
{% for i, entry := range changes %}
{% code y, m, d := entry.Time.UTC().Date() %}
{% if d != day || m != month || y != year %}
<h2>{%s fmt.Sprintf("%04d-%02d-%02d", y, m, d) %}</h2>
{% code year, month, day = y, m, d %}
{% endif %}
<ul class="recent-changes__entry rc-entry" role="article"
aria-setsize="{%d n %}" aria-posinset="{%d i %}">
{%s= recentChangesEntry(entry) %}
</ul>
{% endfor %}
{% endif %}
</section>
@ -74,7 +86,7 @@ if err != nil {
{% endfunc %}
{% func recentChangesEntry(rev history.Revision) %}
<li class="rc-entry__time"><time>{%s rev.TimeString() %}</time></li>
<li class="rc-entry__time"><time>{%s rev.Time.UTC().Format("15:04 UTC") %}</time></li>
<li class="rc-entry__hash">{%s rev.Hash %}</li>
<li class="rc-entry__links">{%s= rev.HyphaeLinksHTML() %}</li>
<li class="rc-entry__msg">{%s rev.Message %} {% if rev.Username != "anon" %}<span class="rc-entry__author">by <a href="/hypha/{%s cfg.UserHypha %}/{%s rev.Username %}" rel="author">{%s rev.Username %}</a></span>{% endif %}</li>

View File

@ -5,107 +5,113 @@
package views
//line views/history.qtpl:1
import "fmt"
//line views/history.qtpl:2
import "net/http"
//line views/history.qtpl:3
import "github.com/bouncepaw/mycorrhiza/cfg"
//line views/history.qtpl:4
import "github.com/bouncepaw/mycorrhiza/util"
import "time"
//line views/history.qtpl:5
import "github.com/bouncepaw/mycorrhiza/user"
import "github.com/bouncepaw/mycorrhiza/cfg"
//line views/history.qtpl:6
import "github.com/bouncepaw/mycorrhiza/hyphae"
import "github.com/bouncepaw/mycorrhiza/util"
//line views/history.qtpl:7
import "github.com/bouncepaw/mycorrhiza/user"
//line views/history.qtpl:8
import "github.com/bouncepaw/mycorrhiza/hyphae"
//line views/history.qtpl:9
import "github.com/bouncepaw/mycorrhiza/history"
//line views/history.qtpl:10
//line views/history.qtpl:12
import (
qtio422016 "io"
qt422016 "github.com/valyala/quicktemplate"
)
//line views/history.qtpl:10
//line views/history.qtpl:12
var (
_ = qtio422016.Copy
_ = qt422016.AcquireByteBuffer
)
//line views/history.qtpl:10
//line views/history.qtpl:12
func StreamPrimitiveDiffHTML(qw422016 *qt422016.Writer, rq *http.Request, h *hyphae.Hypha, u *user.User, hash string) {
//line views/history.qtpl:10
//line views/history.qtpl:12
qw422016.N().S(`
`)
//line views/history.qtpl:12
//line views/history.qtpl:14
text, err := history.PrimitiveDiffAtRevision(h.TextPath, hash)
if err != nil {
text = err.Error()
}
//line views/history.qtpl:16
//line views/history.qtpl:18
qw422016.N().S(`
`)
//line views/history.qtpl:17
//line views/history.qtpl:19
StreamNavHTML(qw422016, rq, h.Name, "history")
//line views/history.qtpl:17
//line views/history.qtpl:19
qw422016.N().S(`
<div class="layout">
<main class="main-width">
<article>
<h1>Diff `)
//line views/history.qtpl:21
//line views/history.qtpl:23
qw422016.E().S(util.BeautifulName(h.Name))
//line views/history.qtpl:21
//line views/history.qtpl:23
qw422016.N().S(` at `)
//line views/history.qtpl:21
//line views/history.qtpl:23
qw422016.E().S(hash)
//line views/history.qtpl:21
//line views/history.qtpl:23
qw422016.N().S(`</h1>
<pre class="codeblock"><code>`)
//line views/history.qtpl:22
//line views/history.qtpl:24
qw422016.E().S(text)
//line views/history.qtpl:22
//line views/history.qtpl:24
qw422016.N().S(`</code></pre>
</article>
</main>
</div>
`)
//line views/history.qtpl:26
//line views/history.qtpl:28
}
//line views/history.qtpl:26
//line views/history.qtpl:28
func WritePrimitiveDiffHTML(qq422016 qtio422016.Writer, rq *http.Request, h *hyphae.Hypha, u *user.User, hash string) {
//line views/history.qtpl:26
//line views/history.qtpl:28
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:26
//line views/history.qtpl:28
StreamPrimitiveDiffHTML(qw422016, rq, h, u, hash)
//line views/history.qtpl:26
//line views/history.qtpl:28
qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:26
//line views/history.qtpl:28
}
//line views/history.qtpl:26
//line views/history.qtpl:28
func PrimitiveDiffHTML(rq *http.Request, h *hyphae.Hypha, u *user.User, hash string) string {
//line views/history.qtpl:26
//line views/history.qtpl:28
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:26
//line views/history.qtpl:28
WritePrimitiveDiffHTML(qb422016, rq, h, u, hash)
//line views/history.qtpl:26
//line views/history.qtpl:28
qs422016 := string(qb422016.B)
//line views/history.qtpl:26
//line views/history.qtpl:28
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:26
//line views/history.qtpl:28
return qs422016
//line views/history.qtpl:26
//line views/history.qtpl:28
}
//line views/history.qtpl:28
//line views/history.qtpl:30
func StreamRecentChangesHTML(qw422016 *qt422016.Writer, n int) {
//line views/history.qtpl:28
//line views/history.qtpl:30
qw422016.N().S(`
<div class="layout">
<main class="main-width recent-changes">
@ -114,51 +120,54 @@ func StreamRecentChangesHTML(qw422016 *qt422016.Writer, n int) {
<nav class="recent-changes__count">
See
`)
//line views/history.qtpl:35
for _, m := range []int{20, 0, 50, 0, 100} {
//line views/history.qtpl:35
//line views/history.qtpl:37
for i, m := range []int{20, 50, 100} {
//line views/history.qtpl:37
qw422016.N().S(`
`)
//line views/history.qtpl:36
switch m {
//line views/history.qtpl:37
case 0:
//line views/history.qtpl:37
//line views/history.qtpl:38
if i > 0 {
//line views/history.qtpl:38
qw422016.N().S(`
<span aria-hidden="true">|</span>
`)
//line views/history.qtpl:39
case n:
//line views/history.qtpl:39
qw422016.N().S(`
<b>`)
//line views/history.qtpl:40
qw422016.N().D(n)
//line views/history.qtpl:40
qw422016.N().S(`</b>
`)
//line views/history.qtpl:41
default:
//line views/history.qtpl:41
qw422016.N().S(`
<a href="/recent-changes/`)
//line views/history.qtpl:42
qw422016.N().D(m)
//line views/history.qtpl:42
qw422016.N().S(`">`)
//line views/history.qtpl:42
qw422016.N().D(m)
//line views/history.qtpl:42
qw422016.N().S(`</a>
`)
//line views/history.qtpl:43
//line views/history.qtpl:40
}
//line views/history.qtpl:43
//line views/history.qtpl:40
qw422016.N().S(`
`)
//line views/history.qtpl:41
if m == n {
//line views/history.qtpl:41
qw422016.N().S(`
<b>`)
//line views/history.qtpl:42
qw422016.N().D(m)
//line views/history.qtpl:42
qw422016.N().S(`</b>
`)
//line views/history.qtpl:43
} else {
//line views/history.qtpl:43
qw422016.N().S(`
<a href="/recent-changes/`)
//line views/history.qtpl:44
qw422016.N().D(m)
//line views/history.qtpl:44
qw422016.N().S(`">`)
//line views/history.qtpl:44
qw422016.N().D(m)
//line views/history.qtpl:44
qw422016.N().S(`</a>
`)
//line views/history.qtpl:45
}
//line views/history.qtpl:45
qw422016.N().S(`
`)
//line views/history.qtpl:46
}
//line views/history.qtpl:44
//line views/history.qtpl:46
qw422016.N().S(`
recent changes
</nav>
@ -166,216 +175,248 @@ func StreamRecentChangesHTML(qw422016 *qt422016.Writer, n int) {
<p><img class="icon" width="20" height="20" src="/static/icon/feed.svg">Subscribe via <a href="/recent-changes-rss">RSS</a>, <a href="/recent-changes-atom">Atom</a> or <a href="/recent-changes-json">JSON feed</a>.</p>
`)
//line views/history.qtpl:55
//line views/history.qtpl:57
qw422016.N().S(`
`)
//line views/history.qtpl:58
//line views/history.qtpl:60
changes := history.RecentChanges(n)
var year, day int
var month time.Month
//line views/history.qtpl:59
//line views/history.qtpl:63
qw422016.N().S(`
<section class="recent-changes__list" role="feed">
`)
//line views/history.qtpl:61
//line views/history.qtpl:65
if len(changes) == 0 {
//line views/history.qtpl:61
//line views/history.qtpl:65
qw422016.N().S(`
<p>Could not find any recent changes.</p>
`)
//line views/history.qtpl:63
//line views/history.qtpl:67
} else {
//line views/history.qtpl:63
//line views/history.qtpl:67
qw422016.N().S(`
`)
//line views/history.qtpl:64
//line views/history.qtpl:68
for i, entry := range changes {
//line views/history.qtpl:64
//line views/history.qtpl:68
qw422016.N().S(`
`)
//line views/history.qtpl:70
y, m, d := entry.Time.UTC().Date()
//line views/history.qtpl:70
qw422016.N().S(`
`)
//line views/history.qtpl:71
if d != day || m != month || y != year {
//line views/history.qtpl:71
qw422016.N().S(`
<h2>`)
//line views/history.qtpl:72
qw422016.E().S(fmt.Sprintf("%04d-%02d-%02d", y, m, d))
//line views/history.qtpl:72
qw422016.N().S(`</h2>
`)
//line views/history.qtpl:73
year, month, day = y, m, d
//line views/history.qtpl:73
qw422016.N().S(`
`)
//line views/history.qtpl:74
}
//line views/history.qtpl:74
qw422016.N().S(`
<ul class="recent-changes__entry rc-entry" role="article"
aria-setsize="`)
//line views/history.qtpl:66
//line views/history.qtpl:77
qw422016.N().D(n)
//line views/history.qtpl:66
//line views/history.qtpl:77
qw422016.N().S(`" aria-posinset="`)
//line views/history.qtpl:66
//line views/history.qtpl:77
qw422016.N().D(i)
//line views/history.qtpl:66
//line views/history.qtpl:77
qw422016.N().S(`">
`)
//line views/history.qtpl:67
//line views/history.qtpl:78
qw422016.N().S(recentChangesEntry(entry))
//line views/history.qtpl:67
//line views/history.qtpl:78
qw422016.N().S(`
</ul>
`)
//line views/history.qtpl:69
//line views/history.qtpl:81
}
//line views/history.qtpl:69
//line views/history.qtpl:81
qw422016.N().S(`
`)
//line views/history.qtpl:70
//line views/history.qtpl:82
}
//line views/history.qtpl:70
//line views/history.qtpl:82
qw422016.N().S(`
</section>
</main>
</div>
`)
//line views/history.qtpl:74
//line views/history.qtpl:86
}
//line views/history.qtpl:74
//line views/history.qtpl:86
func WriteRecentChangesHTML(qq422016 qtio422016.Writer, n int) {
//line views/history.qtpl:74
//line views/history.qtpl:86
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:74
//line views/history.qtpl:86
StreamRecentChangesHTML(qw422016, n)
//line views/history.qtpl:74
//line views/history.qtpl:86
qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:74
//line views/history.qtpl:86
}
//line views/history.qtpl:74
//line views/history.qtpl:86
func RecentChangesHTML(n int) string {
//line views/history.qtpl:74
//line views/history.qtpl:86
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:74
//line views/history.qtpl:86
WriteRecentChangesHTML(qb422016, n)
//line views/history.qtpl:74
//line views/history.qtpl:86
qs422016 := string(qb422016.B)
//line views/history.qtpl:74
//line views/history.qtpl:86
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:74
//line views/history.qtpl:86
return qs422016
//line views/history.qtpl:74
//line views/history.qtpl:86
}
//line views/history.qtpl:76
//line views/history.qtpl:88
func streamrecentChangesEntry(qw422016 *qt422016.Writer, rev history.Revision) {
//line views/history.qtpl:76
//line views/history.qtpl:88
qw422016.N().S(`
<li class="rc-entry__time"><time>`)
//line views/history.qtpl:77
qw422016.E().S(rev.TimeString())
//line views/history.qtpl:77
//line views/history.qtpl:89
qw422016.E().S(rev.Time.UTC().Format("15:04 UTC"))
//line views/history.qtpl:89
qw422016.N().S(`</time></li>
<li class="rc-entry__hash">`)
//line views/history.qtpl:78
//line views/history.qtpl:90
qw422016.E().S(rev.Hash)
//line views/history.qtpl:78
//line views/history.qtpl:90
qw422016.N().S(`</li>
<li class="rc-entry__links">`)
//line views/history.qtpl:79
//line views/history.qtpl:91
qw422016.N().S(rev.HyphaeLinksHTML())
//line views/history.qtpl:79
//line views/history.qtpl:91
qw422016.N().S(`</li>
<li class="rc-entry__msg">`)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.E().S(rev.Message)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(` `)
//line views/history.qtpl:80
//line views/history.qtpl:92
if rev.Username != "anon" {
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(`<span class="rc-entry__author">by <a href="/hypha/`)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.E().S(cfg.UserHypha)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(`/`)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.E().S(rev.Username)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(`" rel="author">`)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.E().S(rev.Username)
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(`</a></span>`)
//line views/history.qtpl:80
//line views/history.qtpl:92
}
//line views/history.qtpl:80
//line views/history.qtpl:92
qw422016.N().S(`</li>
`)
//line views/history.qtpl:81
//line views/history.qtpl:93
}
//line views/history.qtpl:81
//line views/history.qtpl:93
func writerecentChangesEntry(qq422016 qtio422016.Writer, rev history.Revision) {
//line views/history.qtpl:81
//line views/history.qtpl:93
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:81
//line views/history.qtpl:93
streamrecentChangesEntry(qw422016, rev)
//line views/history.qtpl:81
//line views/history.qtpl:93
qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:81
//line views/history.qtpl:93
}
//line views/history.qtpl:81
//line views/history.qtpl:93
func recentChangesEntry(rev history.Revision) string {
//line views/history.qtpl:81
//line views/history.qtpl:93
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:81
//line views/history.qtpl:93
writerecentChangesEntry(qb422016, rev)
//line views/history.qtpl:81
//line views/history.qtpl:93
qs422016 := string(qb422016.B)
//line views/history.qtpl:81
//line views/history.qtpl:93
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:81
//line views/history.qtpl:93
return qs422016
//line views/history.qtpl:81
//line views/history.qtpl:93
}
//line views/history.qtpl:83
//line views/history.qtpl:95
func StreamHistoryHTML(qw422016 *qt422016.Writer, rq *http.Request, hyphaName, list string) {
//line views/history.qtpl:83
//line views/history.qtpl:95
qw422016.N().S(`
`)
//line views/history.qtpl:84
//line views/history.qtpl:96
StreamNavHTML(qw422016, rq, hyphaName, "history")
//line views/history.qtpl:84
//line views/history.qtpl:96
qw422016.N().S(`
<div class="layout">
<main class="main-width">
<article class="history">
<h1>History of `)
//line views/history.qtpl:88
//line views/history.qtpl:100
qw422016.E().S(util.BeautifulName(hyphaName))
//line views/history.qtpl:88
//line views/history.qtpl:100
qw422016.N().S(`</h1>
`)
//line views/history.qtpl:89
//line views/history.qtpl:101
qw422016.N().S(list)
//line views/history.qtpl:89
//line views/history.qtpl:101
qw422016.N().S(`
</article>
</main>
</div>
`)
//line views/history.qtpl:93
//line views/history.qtpl:105
}
//line views/history.qtpl:93
//line views/history.qtpl:105
func WriteHistoryHTML(qq422016 qtio422016.Writer, rq *http.Request, hyphaName, list string) {
//line views/history.qtpl:93
//line views/history.qtpl:105
qw422016 := qt422016.AcquireWriter(qq422016)
//line views/history.qtpl:93
//line views/history.qtpl:105
StreamHistoryHTML(qw422016, rq, hyphaName, list)
//line views/history.qtpl:93
//line views/history.qtpl:105
qt422016.ReleaseWriter(qw422016)
//line views/history.qtpl:93
//line views/history.qtpl:105
}
//line views/history.qtpl:93
//line views/history.qtpl:105
func HistoryHTML(rq *http.Request, hyphaName, list string) string {
//line views/history.qtpl:93
//line views/history.qtpl:105
qb422016 := qt422016.AcquireByteBuffer()
//line views/history.qtpl:93
//line views/history.qtpl:105
WriteHistoryHTML(qb422016, rq, hyphaName, list)
//line views/history.qtpl:93
//line views/history.qtpl:105
qs422016 := string(qb422016.B)
//line views/history.qtpl:93
//line views/history.qtpl:105
qt422016.ReleaseByteBuffer(qb422016)
//line views/history.qtpl:93
//line views/history.qtpl:105
return qs422016
//line views/history.qtpl:93
//line views/history.qtpl:105
}