@@ -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) | |||
@@ -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> |
@@ -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> |