diff options
| author | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-05-05 21:01:25 +0200 | 
|---|---|---|
| committer | Gabriel A. Giovanini <mail@gabrielgio.me> | 2024-05-05 21:01:25 +0200 | 
| commit | ce911df583e384d86018e42f9548cdf33d1c1549 (patch) | |
| tree | c8bbc3ff4dce25ffacfe493e865378c6e6d59e3a | |
| parent | 3be25766027178489a0c5f1f82e65f9be518c79c (diff) | |
| download | cerrado-ce911df583e384d86018e42f9548cdf33d1c1549.tar.gz cerrado-ce911df583e384d86018e42f9548cdf33d1c1549.tar.bz2 cerrado-ce911df583e384d86018e42f9548cdf33d1c1549.zip | |
ui: Add navbar
| -rw-r--r-- | Makefile | 8 | ||||
| -rw-r--r-- | main.go | 10 | ||||
| -rw-r--r-- | scss/main.scss | 10 | ||||
| -rw-r--r-- | templates/base.qtpl | 14 | ||||
| -rw-r--r-- | templates/base.qtpl.go | 138 | 
5 files changed, 110 insertions, 70 deletions
| @@ -1,5 +1,3 @@ -.ONESHELL: -  build: sass tmpl  	go build -o bin/cerrado @@ -10,10 +8,12 @@ test:  	go test -v --tags=unit ./...  sass: -	@make -p static +	@mkdir -p static  	sassc \  		-I scss scss/main.scss static/main.css  tmpl: -	cd ./templates +	cd ./templates && \  	qtc * + +.PHONY: sass @@ -5,6 +5,7 @@ import (  	"context"  	"encoding/json"  	"flag" +	"io/fs"  	"log/slog"  	"net/http"  	"os" @@ -17,6 +18,7 @@ import (  	"git.gabrielgio.me/cerrado/pkg/config"  	"git.gabrielgio.me/cerrado/pkg/worker" +	"git.gabrielgio.me/cerrado/static"  	"git.gabrielgio.me/cerrado/templates"  ) @@ -25,6 +27,7 @@ func main() {  	ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, os.Kill)  	defer stop()  	if err := run(ctx); err != nil { +		slog.Error("Error", "error", err)  		os.Exit(1)  	}  } @@ -37,6 +40,13 @@ func run(ctx context.Context) error {  	flag.Parse()  	mux := http.NewServeMux() + +	staticFs, err := fs.Sub(static.Static, ".") +	if err != nil { +		return err +	} + +	mux.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.FS(staticFs))))  	mux.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {  		slog.Info("Handling index") diff --git a/scss/main.scss b/scss/main.scss index ae49385..7273c9f 100644 --- a/scss/main.scss +++ b/scss/main.scss @@ -1,3 +1,4 @@ +  @import "bootstrap/scss/_functions.scss";  @import "bootstrap/scss/_variables.scss";  @import "bootstrap/scss/_variables-dark.scss"; @@ -7,3 +8,12 @@  @import "bootstrap/scss/_root.scss"; +@import "bootstrap/scss/_containers.scss"; +@import "bootstrap/scss/_nav.scss"; +@import "bootstrap/scss/_navbar.scss"; + + +body { +    font-family: $font-family-monospace; + +} diff --git a/templates/base.qtpl b/templates/base.qtpl index 1683981..6bef986 100644 --- a/templates/base.qtpl +++ b/templates/base.qtpl @@ -25,12 +25,22 @@ Page prints a page implementing Page interface.  <html lang="en">      <head>          <meta charset="utf-8"> -        <title>img | {%= p.Title() %}</title>  +        <title>cerrado | {%= p.Title() %}</title>           <link rel="stylesheet" href="/static/main.css">          <meta name="viewport" content="width=device-width, initial-scale=1" />      </head>      <body> -        <div> +        <nav class="navbar navbar-expand bg-body-tertiary"> +          <div class="container-fluid"> +            <div class="collapse navbar-collapse"> +              <div class="navbar-nav"> +                <a class="nav-link" href="/git">git</a> +                <a class="nav-link" href="/list">list</a> +              </div> +            </div> +          </div> +        </nav> +        <div class="container">              {%= p.Content() %}          </div>      </body> diff --git a/templates/base.qtpl.go b/templates/base.qtpl.go index 8d93fa8..ffee940 100644 --- a/templates/base.qtpl.go +++ b/templates/base.qtpl.go @@ -63,7 +63,7 @@ func StreamPageTemplate(qw422016 *qt422016.Writer, p Page) {  <html lang="en">      <head>          <meta charset="utf-8"> -        <title>img | `) +        <title>cerrado | `)  //line base.qtpl:28  	p.StreamTitle(qw422016)  //line base.qtpl:28 @@ -72,146 +72,156 @@ func StreamPageTemplate(qw422016 *qt422016.Writer, p Page) {          <meta name="viewport" content="width=device-width, initial-scale=1" />      </head>      <body> -        <div> +        <nav class="navbar navbar-expand bg-body-tertiary"> +          <div class="container-fluid"> +            <div class="collapse navbar-collapse"> +              <div class="navbar-nav"> +                <a class="nav-link" href="/git">git</a> +                <a class="nav-link" href="/list">list</a> +              </div> +            </div> +          </div> +        </nav> +        <div class="container">              `) -//line base.qtpl:34 +//line base.qtpl:44  	p.StreamContent(qw422016) -//line base.qtpl:34 +//line base.qtpl:44  	qw422016.N().S(`          </div>      </body>      `) -//line base.qtpl:37 +//line base.qtpl:47  	p.StreamScript(qw422016) -//line base.qtpl:37 +//line base.qtpl:47  	qw422016.N().S(`  </html>  `) -//line base.qtpl:39 +//line base.qtpl:49  } -//line base.qtpl:39 +//line base.qtpl:49  func WritePageTemplate(qq422016 qtio422016.Writer, p Page) { -//line base.qtpl:39 +//line base.qtpl:49  	qw422016 := qt422016.AcquireWriter(qq422016) -//line base.qtpl:39 +//line base.qtpl:49  	StreamPageTemplate(qw422016, p) -//line base.qtpl:39 +//line base.qtpl:49  	qt422016.ReleaseWriter(qw422016) -//line base.qtpl:39 +//line base.qtpl:49  } -//line base.qtpl:39 +//line base.qtpl:49  func PageTemplate(p Page) string { -//line base.qtpl:39 +//line base.qtpl:49  	qb422016 := qt422016.AcquireByteBuffer() -//line base.qtpl:39 +//line base.qtpl:49  	WritePageTemplate(qb422016, p) -//line base.qtpl:39 +//line base.qtpl:49  	qs422016 := string(qb422016.B) -//line base.qtpl:39 +//line base.qtpl:49  	qt422016.ReleaseByteBuffer(qb422016) -//line base.qtpl:39 +//line base.qtpl:49  	return qs422016 -//line base.qtpl:39 +//line base.qtpl:49  } -//line base.qtpl:41 +//line base.qtpl:51  type BasePage struct{} -//line base.qtpl:42 +//line base.qtpl:52  func (p *BasePage) StreamTitle(qw422016 *qt422016.Writer) { -//line base.qtpl:42 +//line base.qtpl:52  	qw422016.N().S(`Empty`) -//line base.qtpl:42 +//line base.qtpl:52  } -//line base.qtpl:42 +//line base.qtpl:52  func (p *BasePage) WriteTitle(qq422016 qtio422016.Writer) { -//line base.qtpl:42 +//line base.qtpl:52  	qw422016 := qt422016.AcquireWriter(qq422016) -//line base.qtpl:42 +//line base.qtpl:52  	p.StreamTitle(qw422016) -//line base.qtpl:42 +//line base.qtpl:52  	qt422016.ReleaseWriter(qw422016) -//line base.qtpl:42 +//line base.qtpl:52  } -//line base.qtpl:42 +//line base.qtpl:52  func (p *BasePage) Title() string { -//line base.qtpl:42 +//line base.qtpl:52  	qb422016 := qt422016.AcquireByteBuffer() -//line base.qtpl:42 +//line base.qtpl:52  	p.WriteTitle(qb422016) -//line base.qtpl:42 +//line base.qtpl:52  	qs422016 := string(qb422016.B) -//line base.qtpl:42 +//line base.qtpl:52  	qt422016.ReleaseByteBuffer(qb422016) -//line base.qtpl:42 +//line base.qtpl:52  	return qs422016 -//line base.qtpl:42 +//line base.qtpl:52  } -//line base.qtpl:43 +//line base.qtpl:53  func (p *BasePage) StreamBody(qw422016 *qt422016.Writer) { -//line base.qtpl:43 +//line base.qtpl:53  	qw422016.N().S(`HelloWorld`) -//line base.qtpl:43 +//line base.qtpl:53  } -//line base.qtpl:43 +//line base.qtpl:53  func (p *BasePage) WriteBody(qq422016 qtio422016.Writer) { -//line base.qtpl:43 +//line base.qtpl:53  	qw422016 := qt422016.AcquireWriter(qq422016) -//line base.qtpl:43 +//line base.qtpl:53  	p.StreamBody(qw422016) -//line base.qtpl:43 +//line base.qtpl:53  	qt422016.ReleaseWriter(qw422016) -//line base.qtpl:43 +//line base.qtpl:53  } -//line base.qtpl:43 +//line base.qtpl:53  func (p *BasePage) Body() string { -//line base.qtpl:43 +//line base.qtpl:53  	qb422016 := qt422016.AcquireByteBuffer() -//line base.qtpl:43 +//line base.qtpl:53  	p.WriteBody(qb422016) -//line base.qtpl:43 +//line base.qtpl:53  	qs422016 := string(qb422016.B) -//line base.qtpl:43 +//line base.qtpl:53  	qt422016.ReleaseByteBuffer(qb422016) -//line base.qtpl:43 +//line base.qtpl:53  	return qs422016 -//line base.qtpl:43 +//line base.qtpl:53  } -//line base.qtpl:44 +//line base.qtpl:54  func (p *BasePage) StreamScript(qw422016 *qt422016.Writer) { -//line base.qtpl:44 +//line base.qtpl:54  } -//line base.qtpl:44 +//line base.qtpl:54  func (p *BasePage) WriteScript(qq422016 qtio422016.Writer) { -//line base.qtpl:44 +//line base.qtpl:54  	qw422016 := qt422016.AcquireWriter(qq422016) -//line base.qtpl:44 +//line base.qtpl:54  	p.StreamScript(qw422016) -//line base.qtpl:44 +//line base.qtpl:54  	qt422016.ReleaseWriter(qw422016) -//line base.qtpl:44 +//line base.qtpl:54  } -//line base.qtpl:44 +//line base.qtpl:54  func (p *BasePage) Script() string { -//line base.qtpl:44 +//line base.qtpl:54  	qb422016 := qt422016.AcquireByteBuffer() -//line base.qtpl:44 +//line base.qtpl:54  	p.WriteScript(qb422016) -//line base.qtpl:44 +//line base.qtpl:54  	qs422016 := string(qb422016.B) -//line base.qtpl:44 +//line base.qtpl:54  	qt422016.ReleaseByteBuffer(qb422016) -//line base.qtpl:44 +//line base.qtpl:54  	return qs422016 -//line base.qtpl:44 +//line base.qtpl:54  } | 
