瀏覽代碼

Cache report view at startup

master
Immanuel Onyeka 1 年之前
父節點
當前提交
def8d767f2
共有 3 個文件被更改,包括 53 次插入32 次删除
  1. +32
    -12
      skouter.go
  2. +21
    -19
      views/report/comparison.tpl
  3. +0
    -1
      views/report/master.tpl

+ 32
- 12
skouter.go 查看文件

@@ -179,13 +179,13 @@ var paths = map[string]string {
"home": "views/home.tpl",
"terms": "views/terms.tpl",
"app": "views/app.tpl",
"test": "views/test.tpl",
"comparison": "views/report/comparison.tpl",
}

var pages = map[string]Page {
"home": cache("home", "Home"),
"terms": cache("terms", "Terms and Conditions"),
"test": cache("test", "PDF test"),
"test": cachePdf("comparison"),
"app": cache("app", "App"),
}

@@ -208,10 +208,25 @@ func (c UserClaims) Valid() error {
func cache(name string, title string) Page {
var p = []string{"views/master.tpl", paths[name]}
tpl := template.Must(template.ParseFiles(p...))
return Page{tpl: tpl,
Title: title,
Name: name,
}
return Page{tpl: tpl, Title: title, Name: name}
}

func cachePdf(name string) Page {
dollars := func(cents int) string {
return strconv.FormatFloat(float64(cents)/100, 'f', 2, 32)
}
diff := func(a, b int) string {
return strconv.FormatFloat(float64(b - a)/100, 'f', 2, 32)
}
fm := template.FuncMap{
"dollars": dollars,
"diff": diff,
}
var p = []string{"views/report/master.tpl", paths[name]}
tpl := template.Must(template.New("master.tpl").Funcs(fm).ParseFiles(p...))
return Page{ tpl: tpl, Title: "", Name: name }
}

func (page Page) Render(w http.ResponseWriter) {
@@ -1822,8 +1837,8 @@ func showPDF(w http.ResponseWriter, r *http.Request) {
// maybe os.Exit(1) instead
}
var pa = template.Must(template.ParseFiles("views/master.tpl",
"views/test.tpl"))
page := pages["test"]
estimates, err := getEstimates(db, 1, 0)
if err != nil { w.WriteHeader(500); return }
@@ -1851,7 +1866,7 @@ func showPDF(w http.ResponseWriter, r *http.Request) {
info.Letterhead =
base64.StdEncoding.EncodeToString(letterhead)
err = pa.Execute(w, info)
err = page.tpl.ExecuteTemplate(w, "master.tpl", info)
if err != nil {fmt.Println(err)}

}
@@ -1879,8 +1894,13 @@ func getPdf(w http.ResponseWriter, db *sql.DB, r *http.Request) {
log.Fatal(err)
}
var pa = template.Must(template.ParseFiles("views/pdf.tpl",
"views/test.tpl"))
fm := template.FuncMap{
"dollars": func(cents int) string {
return strconv.FormatFloat(float64(cents)/100, 'f', 2, 32)
}}
t := template.New("master.tpl").Funcs(fm)
var pa = template.Must(t.ParseFiles("views/report/master.tpl", "views/report/comparison.tpl"))
claims, err := getClaims(r)
if err != nil {
@@ -1911,7 +1931,7 @@ func getPdf(w http.ResponseWriter, db *sql.DB, r *http.Request) {
base64.StdEncoding.EncodeToString(letterhead)
err = pa.Execute(stdin, info)
err = pa.ExecuteTemplate(stdin, "master.tpl", info)
if err != nil {
w.WriteHeader(500);
log.Println(err)


views/test.tpl → views/report/comparison.tpl 查看文件

@@ -1,10 +1,8 @@
{{define "header"}}
<header class="default fade-in">
</header>
{{end}}

{{define "main"}}
<div id="pdf-doc" ref="doc" v-if="estimate">
<div id="pdf-doc">
<div class="disclaimer"><p>Actual costs may vary from estimates after approval. Get an official quote before choosing a loan.</p></div>

<header class="heading">
@@ -33,38 +31,42 @@

<tbody>
<tr><td>Type</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Type.Name}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Type.Name}}</td>{{end}}</tr>
<tr><td>Term</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Term}} Years</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Term}} Years</td>{{end}}</tr>
<tr><td>Amortization</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Amortization}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Amortization}}</td>{{end}}</tr>
<tr><td>Interest rate</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Interest}}%</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Interest}}%</td>{{end}}</tr>
<tr><td>Monthly MI</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Premium}}/month</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Mi.Premium}}/month</td>{{end}}</tr>
<tr><td>MI Premium</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Upfront}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Mi.Upfront}}</td>{{end}}</tr>
<tr><td>Real estate taxes</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Tax}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Tax}}</td>{{end}}</tr>
<tr class="total"><td>Total monthly payment</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Result}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Result}}</td>{{end}}</tr>

<tr><td>Purchase price</td>
{{range $l := .Estimate.Loans}}<td>{{$.Estimate.Price}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{dollars $.Estimate.Price}}</td>{{end}}</tr>
<tr><td>Loan amount</td>
{{range .Estimate.Loans}}<td>${{dollars .Amount}}</td>{{end}}</tr>
<tr><td>Term</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Term}} Years</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Term}} Years</td>{{end}}</tr>
<tr><td>Amortization</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Amortization}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Amortization}}</td>{{end}}</tr>
<tr><td>Interest rate</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Interest}}%</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Interest}}%</td>{{end}}</tr>
<tr><td>Monthly MI</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Premium}}/month</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Mi.Premium}}/month</td>{{end}}</tr>
<tr><td>MI Premium</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Mi.Upfront}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Mi.Upfront}}</td>{{end}}</tr>
<tr><td>Real estate taxes</td>
{{range $l := .Estimate.Loans}}<td>${{$l.Tax}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>${{.Tax}}</td>{{end}}</tr>
<tr class="total"><td>Total monthly payment</td>
{{range $l := .Estimate.Loans}}<td>{{$l.Result}}</td>{{end}}</tr>
{{range .Estimate.Loans}}<td>{{.Result.TotalMonthly}}</td>{{end}}</tr>
<tr><td>Purchase price</td>
{{range .Estimate.Loans}}<td>${{dollars $.Estimate.Price}}</td>{{end}}</tr>
</tbody>

</table>

views/pdf.tpl → views/report/master.tpl 查看文件

@@ -3,7 +3,6 @@
<meta charset='utf-8'>
<meta name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="">
</head>

<body>

Loading…
取消
儲存