Mercurial > templog
comparison web/views/set.tpl @ 182:e731c0d30b09
set nearly working
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Tue, 04 Feb 2014 22:49:16 +0800 |
parents | |
children | 177f616893e6 |
comparison
equal
deleted
inserted
replaced
180:15ebb9de5049 | 182:e731c0d30b09 |
---|---|
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | |
2 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> | |
3 <head> | |
4 <script src="jquery-2.1.0.js"></script> | |
5 <script> | |
6 %include riot.min.js | |
7 </script> | |
8 | |
9 <style type="text/css"> | |
10 span.no_selection { | |
11 -webkit-user-select: none; // webkit (safari, chrome) browsers | |
12 -moz-user-select: none; // mozilla browsers | |
13 -khtml-user-select: none; // webkit (konqueror) browsers | |
14 } | |
15 | |
16 body { | |
17 font-family: "sans-serif"; | |
18 } | |
19 | |
20 input { | |
21 border: 2px solid transparent; | |
22 border-radius: 4px; | |
23 background-color: white; | |
24 border-color: black; | |
25 padding: 0; | |
26 font-size: 80%; | |
27 } | |
28 | |
29 input[type="button"] { | |
30 width: 4em; | |
31 height: 4em; | |
32 margin-left: 0.5em; | |
33 } | |
34 | |
35 input[type="submit"] { | |
36 width: 10em; | |
37 height: 4em; | |
38 margin-top: 1em; | |
39 align: center; | |
40 } | |
41 | |
42 input[type="text"] { | |
43 height: 4em; | |
44 text-align: center; | |
45 } | |
46 | |
47 .onbutton { | |
48 background-color: #cdf; | |
49 } | |
50 | |
51 .existing { | |
52 margin-top: 1em; | |
53 font-size: 70%; | |
54 } | |
55 | |
56 </style> | |
57 <title>Set templog</title> | |
58 </head> | |
59 | |
60 <body> | |
61 | |
62 <section id="paramlist"> | |
63 </div> | |
64 | |
65 </body> | |
66 | |
67 <script type="html/num_input"> | |
68 <div id="{id}"> | |
69 <span class="existing">{title} <span id="existing_{name}">{oldvalue}</span>{unit}</span> | |
70 <br/> | |
71 <input type="text" id="input" name="input_{name}" /> | |
72 <!-- | |
73 <input type="button" class="button_down" id="down" name="down_{name}" value="-" "/> | |
74 <input type="button" class="button_up" id="up" name="up_{name}" value="+" "/> | |
75 --> | |
76 </div> | |
77 </script> | |
78 | |
79 <script type="html/yesno_button"> | |
80 <div id="{id}"> | |
81 <span class="existing">{title} <span id="existing_{name}">{oldvalue}</span></span> | |
82 <br/> | |
83 <input type="button" class="button_no" id="no_{name}" name="no_{name}" value="No"/> | |
84 <input type="button" class="button_yes" id="yes_{name}" name="yes_{name}" value="Yes"/> | |
85 </div> | |
86 </script> | |
87 | |
88 <script> | |
89 | |
90 function Setter(params) { | |
91 var self = $.observable(this); | |
92 | |
93 self.params = params; | |
94 | |
95 $.each(self.params, function(idx, param) { | |
96 param.id = "param_id_" + idx; | |
97 }); | |
98 | |
99 self.edit = function(param) { | |
100 params[param.name] = param; | |
101 self.trigger("edit", param); | |
102 } | |
103 | |
104 self.adjust = function(param, updown) { | |
105 // XXX increment | |
106 self.trigger("edit", param); | |
107 } | |
108 | |
109 } | |
110 | |
111 (function() { 'use strict'; | |
112 | |
113 var params = {{!inline_data}}; | |
114 window.setter = new Setter(params); | |
115 | |
116 var root = $("#paramlist"); | |
117 | |
118 var number_template = $("[type='html/num_input']").html(); | |
119 var button_template = $("[type='html/yesno_button']").html(); | |
120 | |
121 setter.on("add", add); | |
122 setter.on("edit", function(param) | |
123 { | |
124 var el = $("#" + param.id); | |
125 if (param.kind === "number") | |
126 { | |
127 $(".input", el).text(param.value).value(param.value); | |
128 } | |
129 else if (param.kind === "yesno") | |
130 { | |
131 set_state(el, param.value); | |
132 } | |
133 }) | |
134 | |
135 $.route(function(hash) { | |
136 | |
137 // clear list and add new ones | |
138 root.empty() && $.each(setter.params, function (idx, p) { | |
139 add(p); | |
140 }) | |
141 }) | |
142 | |
143 function set_state(el, value) | |
144 { | |
145 var button_yes = $(".button_yes", el); | |
146 var button_no = $(".button_no", el); | |
147 if (value) | |
148 { | |
149 button_yes.addClass("onbutton"); | |
150 button_no.removeClass("onbutton"); | |
151 } | |
152 else | |
153 { | |
154 button_no.addClass("onbutton"); | |
155 button_yes.removeClass("onbutton"); | |
156 } | |
157 } | |
158 | |
159 function add(param) | |
160 { | |
161 if (param.kind === "number") | |
162 { | |
163 var el = $($.render(number_template, param)).appendTo(root); | |
164 var input = $(".input", el); | |
165 } | |
166 else if (param.kind === "yesno") | |
167 { | |
168 var el = $($.render(button_template, param)).appendTo(root); | |
169 var button_yes = $(".button_yes", el); | |
170 var button_no = $(".button_no", el); | |
171 | |
172 button_yes.click(function() { | |
173 param.value = true; | |
174 setter.edit(param); | |
175 }) | |
176 | |
177 button_no.click(function() { | |
178 param.value = false; | |
179 setter.edit(param); | |
180 }) | |
181 | |
182 set_state(el, param.value); | |
183 } | |
184 } | |
185 | |
186 })() | |
187 | |
188 </script> | |
189 | |
190 </html> |