cerrado @ e52226c05fb54dfe41c9bc5ebc6ce1b7ded7e1fe

feat: Add initial git item page
  1diff --git a/pkg/handler/git/handler.go b/pkg/handler/git/handler.go
  2index 236ac414a2ce8afb92d6c86bc64781a7f8189904..e0887497dfa2ec7d9284384ca6fcfc949b8609ca 100644
  3--- a/pkg/handler/git/handler.go
  4+++ b/pkg/handler/git/handler.go
  5@@ -34,3 +34,8 @@
  6 	gitList := &templates.GitListPage{repos}
  7 	templates.WritePageTemplate(w, gitList)
  8 }
  9+
 10+func (g *GitHandler) Item(w http.ResponseWriter, _ *http.Request) {
 11+	gitList := &templates.GitItemPage{}
 12+	templates.WritePageTemplate(w, gitList)
 13+}
 14diff --git a/pkg/handler/router.go b/pkg/handler/router.go
 15index a8c9c6f227152e0602af3786f023508c563419d0..1150f2fd2ef5ee67eacd19f5a20d1c6d2b5150e4 100644
 16--- a/pkg/handler/router.go
 17+++ b/pkg/handler/router.go
 18@@ -33,6 +33,7 @@ 	mux := http.NewServeMux()
 19 	mux.Handle("/static/", staticHandler)
 20 	mux.HandleFunc("/config", configHander)
 21 	mux.HandleFunc("/about", aboutHandler.About)
 22+	mux.HandleFunc("/{name}", gitHandler.Item)
 23 	mux.HandleFunc("/", gitHandler.List)
 24 	return mux, nil
 25 }
 26diff --git a/scss/main.scss b/scss/main.scss
 27index f57579ac37605a06ed15ba86c2f689c926d07f4c..deea23b381c4ce957482bdf81c2d71ecdb0972dc 100644
 28--- a/scss/main.scss
 29+++ b/scss/main.scss
 30@@ -60,3 +60,8 @@ }
 31 .event > p {
 32   margin: 0.5rem 0;
 33 }
 34+
 35+.code-view {
 36+    display: grid;
 37+    overflow-x: auto;
 38+}
 39diff --git a/templates/config.qtpl b/templates/config.qtpl
 40index c5146b8b015513ceeec3fe0bcaf42c3301380309..b3df50eccb2571a37adfd630c7437caebdf1eb5e 100644
 41--- a/templates/config.qtpl
 42+++ b/templates/config.qtpl
 43@@ -9,7 +9,10 @@
 44 {% func (p *ConfigPage) Navbar() %}{%= Navbar(Config) %}{% endfunc %}
 45 
 46 {% func (p *ConfigPage) Content() %}
 47+<p>This is the configuration that is currently loaded</p>
 48+<div class="code-view">
 49 {%z= p.Body %}
 50+</div>
 51 {% endfunc %}
 52 
 53 {% func (p *ConfigPage) Script() %}
 54diff --git a/templates/config.qtpl.go b/templates/config.qtpl.go
 55index a5df086e3ce1d3f9f186b3fb28aea4659db0649c..58b3881dbe2f792160c905f25a90783743b442b2 100644
 56--- a/templates/config.qtpl.go
 57+++ b/templates/config.qtpl.go
 58@@ -92,71 +92,74 @@ //line config.qtpl:11
 59 func (p *ConfigPage) StreamContent(qw422016 *qt422016.Writer) {
 60 //line config.qtpl:11
 61 	qw422016.N().S(`
 62+<p>This is the configuration that is currently loaded</p>
 63+<div class="code-view">
 64 `)
 65-//line config.qtpl:12
 66+//line config.qtpl:14
 67 	qw422016.N().Z(p.Body)
 68-//line config.qtpl:12
 69+//line config.qtpl:14
 70 	qw422016.N().S(`
 71+</div>
 72 `)
 73-//line config.qtpl:13
 74+//line config.qtpl:16
 75 }
 76 
 77-//line config.qtpl:13
 78+//line config.qtpl:16
 79 func (p *ConfigPage) WriteContent(qq422016 qtio422016.Writer) {
 80-//line config.qtpl:13
 81+//line config.qtpl:16
 82 	qw422016 := qt422016.AcquireWriter(qq422016)
 83-//line config.qtpl:13
 84+//line config.qtpl:16
 85 	p.StreamContent(qw422016)
 86-//line config.qtpl:13
 87+//line config.qtpl:16
 88 	qt422016.ReleaseWriter(qw422016)
 89-//line config.qtpl:13
 90+//line config.qtpl:16
 91 }
 92 
 93-//line config.qtpl:13
 94+//line config.qtpl:16
 95 func (p *ConfigPage) Content() string {
 96-//line config.qtpl:13
 97+//line config.qtpl:16
 98 	qb422016 := qt422016.AcquireByteBuffer()
 99-//line config.qtpl:13
100+//line config.qtpl:16
101 	p.WriteContent(qb422016)
102-//line config.qtpl:13
103+//line config.qtpl:16
104 	qs422016 := string(qb422016.B)
105-//line config.qtpl:13
106+//line config.qtpl:16
107 	qt422016.ReleaseByteBuffer(qb422016)
108-//line config.qtpl:13
109+//line config.qtpl:16
110 	return qs422016
111-//line config.qtpl:13
112+//line config.qtpl:16
113 }
114 
115-//line config.qtpl:15
116+//line config.qtpl:18
117 func (p *ConfigPage) StreamScript(qw422016 *qt422016.Writer) {
118-//line config.qtpl:15
119+//line config.qtpl:18
120 	qw422016.N().S(`
121 `)
122-//line config.qtpl:16
123+//line config.qtpl:19
124 }
125 
126-//line config.qtpl:16
127+//line config.qtpl:19
128 func (p *ConfigPage) WriteScript(qq422016 qtio422016.Writer) {
129-//line config.qtpl:16
130+//line config.qtpl:19
131 	qw422016 := qt422016.AcquireWriter(qq422016)
132-//line config.qtpl:16
133+//line config.qtpl:19
134 	p.StreamScript(qw422016)
135-//line config.qtpl:16
136+//line config.qtpl:19
137 	qt422016.ReleaseWriter(qw422016)
138-//line config.qtpl:16
139+//line config.qtpl:19
140 }
141 
142-//line config.qtpl:16
143+//line config.qtpl:19
144 func (p *ConfigPage) Script() string {
145-//line config.qtpl:16
146+//line config.qtpl:19
147 	qb422016 := qt422016.AcquireByteBuffer()
148-//line config.qtpl:16
149+//line config.qtpl:19
150 	p.WriteScript(qb422016)
151-//line config.qtpl:16
152+//line config.qtpl:19
153 	qs422016 := string(qb422016.B)
154-//line config.qtpl:16
155+//line config.qtpl:19
156 	qt422016.ReleaseByteBuffer(qb422016)
157-//line config.qtpl:16
158+//line config.qtpl:19
159 	return qs422016
160-//line config.qtpl:16
161+//line config.qtpl:19
162 }
163diff --git a/templates/gititem.qtpl b/templates/gititem.qtpl
164new file mode 100644
165index 0000000000000000000000000000000000000000..156325fbd57ebd0af7e29796862108bb9d178e10
166--- /dev/null
167+++ b/templates/gititem.qtpl
168@@ -0,0 +1,48 @@
169+{% code
170+type GitItemPage struct {
171+}
172+%}
173+
174+
175+{% func insertIfEqual(s, d Selection) %}{% if s == d %} selected{% endif %}{% endfunc %}
176+
177+
178+{% func Navbar (s Selection) %}
179+        <nav class="container navbar navbar-expand">
180+          <div class="navbar-nav">
181+            <a class="nav-link{%= insertIfEqual(s, Git) %}" href="/">git</a>
182+            <a class="nav-link{%= insertIfEqual(s, List) %}" href="/list">list</a>
183+            <a class="nav-link{%= insertIfEqual(s, About) %}" href="/about">about</a>
184+            <a class="nav-link{%= insertIfEqual(s, Config) %}" href="/config">config</a>
185+          </div>
186+        </nav>
187+{% endfunc %}
188+
189+{% func (p *GitItemPage) Title() %}Git | List{% endfunc %}
190+
191+{% func (p *GitItemPage) Navbar() %}{%= Navbar(Git) %}{% endfunc %}
192+
193+{% func (p *GitItemPage) Content() %}
194+<div class="row">
195+    <h3>AoC2022.git</h3>
196+</div>
197+<div class="row">
198+  <ul class="nav">
199+    <li class="nav-item">
200+      <a class="nav-link" aria-current="page" href="#">about</a>
201+    </li>
202+    <li class="nav-item">
203+      <a class="nav-link" aria-current="page" href="#">summary</a>
204+    </li>
205+    <li class="nav-item">
206+      <a class="nav-link" aria-current="page" href="#">refs</a>
207+    </li>
208+    <li class="nav-item">
209+      <a class="nav-link" aria-current="page" href="#">tree</a>
210+    </li>
211+  </ul>
212+</div>
213+{% endfunc %}
214+
215+{% func (p *GitItemPage) Script() %}
216+{% endfunc %}
217diff --git a/templates/gititem.qtpl.go b/templates/gititem.qtpl.go
218new file mode 100644
219index 0000000000000000000000000000000000000000..8c1485689eaf1259154bc9e349c447549a3b24c4
220--- /dev/null
221+++ b/templates/gititem.qtpl.go
222@@ -0,0 +1,175 @@
223+// Code generated by qtc from "gititem.qtpl". DO NOT EDIT.
224+// See https://github.com/valyala/quicktemplate for details.
225+
226+//line gititem.qtpl:1
227+package templates
228+
229+//line gititem.qtpl:1
230+import (
231+	qtio422016 "io"
232+
233+	qt422016 "github.com/valyala/quicktemplate"
234+)
235+
236+//line gititem.qtpl:1
237+var (
238+	_ = qtio422016.Copy
239+	_ = qt422016.AcquireByteBuffer
240+)
241+
242+//line gititem.qtpl:2
243+type GitItemPage struct {
244+}
245+
246+//line gititem.qtpl:6
247+func (p *GitItemPage) StreamTitle(qw422016 *qt422016.Writer) {
248+//line gititem.qtpl:6
249+	qw422016.N().S(`Git | List`)
250+//line gititem.qtpl:6
251+}
252+
253+//line gititem.qtpl:6
254+func (p *GitItemPage) WriteTitle(qq422016 qtio422016.Writer) {
255+//line gititem.qtpl:6
256+	qw422016 := qt422016.AcquireWriter(qq422016)
257+//line gititem.qtpl:6
258+	p.StreamTitle(qw422016)
259+//line gititem.qtpl:6
260+	qt422016.ReleaseWriter(qw422016)
261+//line gititem.qtpl:6
262+}
263+
264+//line gititem.qtpl:6
265+func (p *GitItemPage) Title() string {
266+//line gititem.qtpl:6
267+	qb422016 := qt422016.AcquireByteBuffer()
268+//line gititem.qtpl:6
269+	p.WriteTitle(qb422016)
270+//line gititem.qtpl:6
271+	qs422016 := string(qb422016.B)
272+//line gititem.qtpl:6
273+	qt422016.ReleaseByteBuffer(qb422016)
274+//line gititem.qtpl:6
275+	return qs422016
276+//line gititem.qtpl:6
277+}
278+
279+//line gititem.qtpl:8
280+func (p *GitItemPage) StreamNavbar(qw422016 *qt422016.Writer) {
281+//line gititem.qtpl:8
282+	StreamNavbar(qw422016, Git)
283+//line gititem.qtpl:8
284+}
285+
286+//line gititem.qtpl:8
287+func (p *GitItemPage) WriteNavbar(qq422016 qtio422016.Writer) {
288+//line gititem.qtpl:8
289+	qw422016 := qt422016.AcquireWriter(qq422016)
290+//line gititem.qtpl:8
291+	p.StreamNavbar(qw422016)
292+//line gititem.qtpl:8
293+	qt422016.ReleaseWriter(qw422016)
294+//line gititem.qtpl:8
295+}
296+
297+//line gititem.qtpl:8
298+func (p *GitItemPage) Navbar() string {
299+//line gititem.qtpl:8
300+	qb422016 := qt422016.AcquireByteBuffer()
301+//line gititem.qtpl:8
302+	p.WriteNavbar(qb422016)
303+//line gititem.qtpl:8
304+	qs422016 := string(qb422016.B)
305+//line gititem.qtpl:8
306+	qt422016.ReleaseByteBuffer(qb422016)
307+//line gititem.qtpl:8
308+	return qs422016
309+//line gititem.qtpl:8
310+}
311+
312+//line gititem.qtpl:10
313+func (p *GitItemPage) StreamContent(qw422016 *qt422016.Writer) {
314+//line gititem.qtpl:10
315+	qw422016.N().S(`
316+<div class="row">
317+    <h3>AoC2022.git</h3>
318+</div>
319+<div class="row">
320+  <ul class="nav">
321+    <li class="nav-item">
322+      <a class="nav-link" aria-current="page" href="#">about</a>
323+    </li>
324+    <li class="nav-item">
325+      <a class="nav-link" aria-current="page" href="#">summary</a>
326+    </li>
327+    <li class="nav-item">
328+      <a class="nav-link" aria-current="page" href="#">refs</a>
329+    </li>
330+    <li class="nav-item">
331+      <a class="nav-link" aria-current="page" href="#">tree</a>
332+    </li>
333+  </ul>
334+</div>
335+`)
336+//line gititem.qtpl:30
337+}
338+
339+//line gititem.qtpl:30
340+func (p *GitItemPage) WriteContent(qq422016 qtio422016.Writer) {
341+//line gititem.qtpl:30
342+	qw422016 := qt422016.AcquireWriter(qq422016)
343+//line gititem.qtpl:30
344+	p.StreamContent(qw422016)
345+//line gititem.qtpl:30
346+	qt422016.ReleaseWriter(qw422016)
347+//line gititem.qtpl:30
348+}
349+
350+//line gititem.qtpl:30
351+func (p *GitItemPage) Content() string {
352+//line gititem.qtpl:30
353+	qb422016 := qt422016.AcquireByteBuffer()
354+//line gititem.qtpl:30
355+	p.WriteContent(qb422016)
356+//line gititem.qtpl:30
357+	qs422016 := string(qb422016.B)
358+//line gititem.qtpl:30
359+	qt422016.ReleaseByteBuffer(qb422016)
360+//line gititem.qtpl:30
361+	return qs422016
362+//line gititem.qtpl:30
363+}
364+
365+//line gititem.qtpl:32
366+func (p *GitItemPage) StreamScript(qw422016 *qt422016.Writer) {
367+//line gititem.qtpl:32
368+	qw422016.N().S(`
369+`)
370+//line gititem.qtpl:33
371+}
372+
373+//line gititem.qtpl:33
374+func (p *GitItemPage) WriteScript(qq422016 qtio422016.Writer) {
375+//line gititem.qtpl:33
376+	qw422016 := qt422016.AcquireWriter(qq422016)
377+//line gititem.qtpl:33
378+	p.StreamScript(qw422016)
379+//line gititem.qtpl:33
380+	qt422016.ReleaseWriter(qw422016)
381+//line gititem.qtpl:33
382+}
383+
384+//line gititem.qtpl:33
385+func (p *GitItemPage) Script() string {
386+//line gititem.qtpl:33
387+	qb422016 := qt422016.AcquireByteBuffer()
388+//line gititem.qtpl:33
389+	p.WriteScript(qb422016)
390+//line gititem.qtpl:33
391+	qs422016 := string(qb422016.B)
392+//line gititem.qtpl:33
393+	qt422016.ReleaseByteBuffer(qb422016)
394+//line gititem.qtpl:33
395+	return qs422016
396+//line gititem.qtpl:33
397+}
398diff --git a/templates/gitlist.qtpl b/templates/gitlist.qtpl
399index 588c26460e2549a7a8164dc5d6ee467a12329dd2..e07f1995c4d85f7bfb9cba27449d07888165659d 100644
400--- a/templates/gitlist.qtpl
401+++ b/templates/gitlist.qtpl
402@@ -22,6 +22,7 @@         </h4>
403         </hr>
404         <p>{%s r.LastCommitMessage %}</p>
405         <p><small>{%s r.LastCommitDate %}</small></p>
406+        <p><a href="#">summary</a> <a href="#">log</a> <a href="#">tree</a></p>
407       </div>
408       {% endfor %}
409     </div>
410diff --git a/templates/gitlist.qtpl.go b/templates/gitlist.qtpl.go
411index 54387293127fea06b93cde8fe006eb4e3223430e..130db5db65c14b25974beedf203f3b52cd1d7d4b 100644
412--- a/templates/gitlist.qtpl.go
413+++ b/templates/gitlist.qtpl.go
414@@ -126,77 +126,78 @@ //line gitlist.qtpl:24
415 		qw422016.E().S(r.LastCommitDate)
416 //line gitlist.qtpl:24
417 		qw422016.N().S(`</small></p>
418+        <p><a href="#">summary</a> <a href="#">log</a> <a href="#">tree</a></p>
419       </div>
420       `)
421-//line gitlist.qtpl:26
422+//line gitlist.qtpl:27
423 	}
424-//line gitlist.qtpl:26
425+//line gitlist.qtpl:27
426 	qw422016.N().S(`
427     </div>
428   `)
429-//line gitlist.qtpl:28
430+//line gitlist.qtpl:29
431 }
432 
433-//line gitlist.qtpl:28
434+//line gitlist.qtpl:29
435 func (p *GitListPage) WriteContent(qq422016 qtio422016.Writer) {
436-//line gitlist.qtpl:28
437+//line gitlist.qtpl:29
438 	qw422016 := qt422016.AcquireWriter(qq422016)
439-//line gitlist.qtpl:28
440+//line gitlist.qtpl:29
441 	p.StreamContent(qw422016)
442-//line gitlist.qtpl:28
443+//line gitlist.qtpl:29
444 	qt422016.ReleaseWriter(qw422016)
445-//line gitlist.qtpl:28
446+//line gitlist.qtpl:29
447 }
448 
449-//line gitlist.qtpl:28
450+//line gitlist.qtpl:29
451 func (p *GitListPage) Content() string {
452-//line gitlist.qtpl:28
453+//line gitlist.qtpl:29
454 	qb422016 := qt422016.AcquireByteBuffer()
455-//line gitlist.qtpl:28
456+//line gitlist.qtpl:29
457 	p.WriteContent(qb422016)
458-//line gitlist.qtpl:28
459+//line gitlist.qtpl:29
460 	qs422016 := string(qb422016.B)
461-//line gitlist.qtpl:28
462+//line gitlist.qtpl:29
463 	qt422016.ReleaseByteBuffer(qb422016)
464-//line gitlist.qtpl:28
465+//line gitlist.qtpl:29
466 	return qs422016
467-//line gitlist.qtpl:28
468+//line gitlist.qtpl:29
469 }
470 
471 //   </div>
472 // </div>
473 //
474 
475-//line gitlist.qtpl:32
476+//line gitlist.qtpl:33
477 func (p *GitListPage) StreamScript(qw422016 *qt422016.Writer) {
478-//line gitlist.qtpl:32
479+//line gitlist.qtpl:33
480 	qw422016.N().S(`
481 `)
482-//line gitlist.qtpl:33
483+//line gitlist.qtpl:34
484 }
485 
486-//line gitlist.qtpl:33
487+//line gitlist.qtpl:34
488 func (p *GitListPage) WriteScript(qq422016 qtio422016.Writer) {
489-//line gitlist.qtpl:33
490+//line gitlist.qtpl:34
491 	qw422016 := qt422016.AcquireWriter(qq422016)
492-//line gitlist.qtpl:33
493+//line gitlist.qtpl:34
494 	p.StreamScript(qw422016)
495-//line gitlist.qtpl:33
496+//line gitlist.qtpl:34
497 	qt422016.ReleaseWriter(qw422016)
498-//line gitlist.qtpl:33
499+//line gitlist.qtpl:34
500 }
501 
502-//line gitlist.qtpl:33
503+//line gitlist.qtpl:34
504 func (p *GitListPage) Script() string {
505-//line gitlist.qtpl:33
506+//line gitlist.qtpl:34
507 	qb422016 := qt422016.AcquireByteBuffer()
508-//line gitlist.qtpl:33
509+//line gitlist.qtpl:34
510 	p.WriteScript(qb422016)
511-//line gitlist.qtpl:33
512+//line gitlist.qtpl:34
513 	qs422016 := string(qb422016.B)
514-//line gitlist.qtpl:33
515+//line gitlist.qtpl:34
516 	qt422016.ReleaseByteBuffer(qb422016)
517-//line gitlist.qtpl:33
518+//line gitlist.qtpl:34
519 	return qs422016
520-//line gitlist.qtpl:33
521+//line gitlist.qtpl:34
522 }
523diff --git a/templates/navbar.qtpl b/templates/navbar.qtpl
524index 26991a37dd96d09dc51cfe7366aea56aceed8828..636c619eaafe24b6bb4ce5bc975a7ad37627ff8c 100644
525--- a/templates/navbar.qtpl
526+++ b/templates/navbar.qtpl
527@@ -12,9 +12,9 @@ {% func insertIfEqual(s, d Selection) %}{% if s == d %} selected{% endif %}{% endfunc %}
528 
529 
530 {% func Navbar (s Selection) %}
531-        <nav class="container navbar navbar-expand-sm">
532+        <nav class="container navbar navbar-expand">
533           <div class="navbar-nav">
534-            <a class="nav-link{%= insertIfEqual(s, Git) %}" href="/git">git</a>
535+            <a class="nav-link{%= insertIfEqual(s, Git) %}" href="/">git</a>
536             <a class="nav-link{%= insertIfEqual(s, List) %}" href="/list">list</a>
537             <a class="nav-link{%= insertIfEqual(s, About) %}" href="/about">about</a>
538             <a class="nav-link{%= insertIfEqual(s, Config) %}" href="/config">config</a>
539diff --git a/templates/navbar.qtpl.go b/templates/navbar.qtpl.go
540index e2b738ccae4df0a80353a23aa195a6099cbde6cc..1caade28b3bdef1ce61682b3e130bb2f535da334 100644
541--- a/templates/navbar.qtpl.go
542+++ b/templates/navbar.qtpl.go
543@@ -68,13 +68,13 @@ //line navbar.qtpl:14
544 func StreamNavbar(qw422016 *qt422016.Writer, s Selection) {
545 //line navbar.qtpl:14
546 	qw422016.N().S(`
547-        <nav class="container navbar navbar-expand-sm">
548+        <nav class="container navbar navbar-expand">
549           <div class="navbar-nav">
550             <a class="nav-link`)
551 //line navbar.qtpl:17
552 	streaminsertIfEqual(qw422016, s, Git)
553 //line navbar.qtpl:17
554-	qw422016.N().S(`" href="/git">git</a>
555+	qw422016.N().S(`" href="/">git</a>
556             <a class="nav-link`)
557 //line navbar.qtpl:18
558 	streaminsertIfEqual(qw422016, s, List)