render list

master
Jason Staten 2 years ago
parent 3720088f38
commit dd9493f28b

@ -38,17 +38,22 @@ type Todo struct {
Completed bool
}
type ViewModel struct {
Todos []Todo
}
func main() {
t := New()
http.Handle("/public/", http.FileServer(http.FS(publicFS)))
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
err := t.Render(w, "list.html", nil)
if err != nil {
log.Println(err)
vm := ViewModel{
Todos: []Todo{
{Title: "One"},
{Title: "Two", Completed: true},
{Title: "Three"},
},
}
})
http.HandleFunc("/show", func(w http.ResponseWriter, r *http.Request) {
err := t.Render(w, "show.html", nil)
err := t.Render(w, "list.html", vm)
if err != nil {
log.Println(err)
}

@ -0,0 +1,5 @@
<footer class="info">
<p>Double-click to edit a todo</p>
<p>Created by <a href="https://jxs.me">Jason Staten</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer>

@ -0,0 +1,5 @@
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>todogo • TodoMVC</title>
<link rel="stylesheet" href="public/base.css">
<link rel="stylesheet" href="public/todo-app.css">

@ -0,0 +1,8 @@
<li class="{{if .Completed}}completed{{end}}">
<div class="view">
<input class="toggle" type="checkbox" checked>
<label>{{.Title}}</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Create a TodoMVC template">
</li>

@ -1 +0,0 @@
<h2>Commonest</h2>

@ -1,73 +1,10 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Template • TodoMVC</title>
<link rel="stylesheet" href="public/base.css">
<link rel="stylesheet" href="public/todo-app.css">
{{template "_head.html" .}}
</head>
<body>
<section class="todoapp">
<header class="header">
<h1>todos</h1>
<input class="new-todo" placeholder="What needs to be done?" autofocus>
</header>
<!-- This section should be hidden by default and shown when there are todos -->
<section class="main">
<input id="toggle-all" class="toggle-all" type="checkbox">
<label for="toggle-all">Mark all as complete</label>
<ul class="todo-list">
<!-- These are here just to show the structure of the list items -->
<!-- List items should get the class `editing` when editing and `completed` when marked as completed -->
<li class="completed">
<div class="view">
<input class="toggle" type="checkbox" checked>
<label>Taste JavaScript</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Create a TodoMVC template">
</li>
<li>
<div class="view">
<input class="toggle" type="checkbox">
<label>Buy a unicorn</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Rule the web">
</li>
</ul>
</section>
<!-- This footer should be hidden by default and shown when there are todos -->
<footer class="footer">
<!-- This should be `0 items left` by default -->
<span class="todo-count"><strong>0</strong> item left</span>
<!-- Remove this if you don't implement routing -->
<ul class="filters">
<li>
<a class="selected" href="#/">All</a>
</li>
<li>
<a href="#/active">Active</a>
</li>
<li>
<a href="#/completed">Completed</a>
</li>
</ul>
<!-- Hidden if no completed items are left ↓ -->
<button class="clear-completed">Clear completed</button>
</footer>
</section>
<footer class="info">
<p>Double-click to edit a todo</p>
<!-- Remove the below line ↓ -->
<p>Template by <a href="http://sindresorhus.com">Sindre Sorhus</a></p>
<!-- Change this out with your name and url ↓ -->
<p>Created by <a href="http://todomvc.com">you</a></p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer>
<!-- Scripts here. Don't remove ↓ -->
<script src="node_modules/todomvc-common/base.js"></script>
<script src="js/app.js"></script>
{{template "content" .}}
{{template "_footer.html" .}}
</body>
</html>

@ -1,4 +1,37 @@
{{define "content"}}
<h1>List</h1>
{{template "common.html" .}}
<section class="todoapp">
<header class="header">
<h1>todos</h1>
<input class="new-todo" placeholder="What needs to be done?" autofocus>
</header>
<!-- This section should be hidden by default and shown when there are todos -->
<section class="main">
<input id="toggle-all" class="toggle-all" type="checkbox">
<label for="toggle-all">Mark all as complete</label>
<ul class="todo-list">
{{range .Todos}}
{{template "_task.html" .}}
{{end}}
</ul>
</section>
<!-- This footer should be hidden by default and shown when there are todos -->
<footer class="footer">
<!-- This should be `0 items left` by default -->
<span class="todo-count"><strong>0</strong> item left</span>
<!-- Remove this if you don't implement routing -->
<ul class="filters">
<li>
<a class="selected" href="#/">All</a>
</li>
<li>
<a href="#/active">Active</a>
</li>
<li>
<a href="#/completed">Completed</a>
</li>
</ul>
<!-- Hidden if no completed items are left ↓ -->
<button class="clear-completed">Clear completed</button>
</footer>
</section>
{{end}}

@ -1,3 +0,0 @@
{{define "content"}}
<h1>Show</h1>
{{end}}
Loading…
Cancel
Save