Mercurial > templog
comparison web/views/set.tpl @ 185:adbf70d1449f
working
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 06 Feb 2014 22:45:16 +0800 |
parents | cbe14244a372 |
children | ae5efca89001 |
comparison
equal
deleted
inserted
replaced
184:cbe14244a372 | 185:adbf70d1449f |
---|---|
44 input[type="text"] { | 44 input[type="text"] { |
45 height: 4em; | 45 height: 4em; |
46 text-align: center; | 46 text-align: center; |
47 } | 47 } |
48 | 48 |
49 #savebox { | |
50 align: center; | |
51 width: 100%; | |
52 } | |
53 | |
49 .onbutton { | 54 .onbutton { |
50 background-color: #cdf; | 55 background-color: #cdf; |
51 } | 56 } |
52 | 57 |
53 .modified { | 58 .modified { |
62 | 67 |
63 </style> | 68 </style> |
64 <title>Set templog</title> | 69 <title>Set templog</title> |
65 </head> | 70 </head> |
66 | 71 |
67 <body> | |
68 | |
69 <section id="paramlist"> | |
70 </section> | |
71 | |
72 <div id="jsontest"> | |
73 </div> | |
74 | |
75 <input type="button" id="savebutton" value="Save"/> | |
76 | |
77 </body> | |
78 | 72 |
79 <script type="html/num_input"> | 73 <script type="html/num_input"> |
80 <div id="{id}"> | 74 <div id="{id}"> |
81 <span class="existing">{title} <span id="oldvalue">{oldvaluetext}{unit}</span></span> | 75 <span class="existing">{title} <span id="oldvalue">{oldvaluetext}{unit}</span></span> |
82 <br/> | 76 <br/> |
95 </div> | 89 </div> |
96 </script> | 90 </script> |
97 | 91 |
98 <script> | 92 <script> |
99 | 93 |
100 function Setter(params) { | 94 function Setter(params, csrf_blob) { |
101 var self = $.observable(this); | 95 var self = $.observable(this); |
102 | 96 |
103 self.params = params; | 97 self.params = params; |
98 self.csrf_blob = csrf_blob | |
104 | 99 |
105 $.each(self.params, function(idx, param) { | 100 $.each(self.params, function(idx, param) { |
106 param.id = "param_id_" + idx; | 101 param.id = "param_id_" + idx; |
107 param.oldvalue = param.value | 102 param.oldvalue = param.value |
108 if (typeof(param.oldvalue) == "boolean") | 103 if (typeof(param.oldvalue) == "boolean") |
126 param.value += (param.amount*updown); | 121 param.value += (param.amount*updown); |
127 self.trigger("edit", param); | 122 self.trigger("edit", param); |
128 } | 123 } |
129 | 124 |
130 self.save = function() { | 125 self.save = function() { |
131 var j = JSON.stringify(self.params); | 126 self.trigger("status", "Saving...") |
132 self.trigger("saved", j) | 127 |
128 var post_json = {}; | |
129 post_json.csrf_blob = self.csrf_blob; | |
130 post_json.params = | |
131 self.params.map(function(v, idx, array) { | |
132 return { | |
133 name: v.name, | |
134 value: v.value | |
135 }; | |
136 }); | |
137 | |
138 var post_data = {data: JSON.stringify(post_json)}; | |
139 | |
140 var req = $.ajax({type: "POST", | |
141 url: "setparams", | |
142 data: post_data}); | |
143 | |
144 req.done(function(data, status, hdr) { | |
145 self.trigger("status", "Saved") | |
146 }); | |
147 | |
148 req.fail(function(data, status, hdr) { | |
149 self.trigger("status", | |
150 "Failed: " + status + "\n" + hdr.responseText) | |
151 }); | |
133 } | 152 } |
134 } | 153 } |
135 | 154 |
136 (function() { 'use strict'; | 155 (function() { 'use strict'; |
137 | 156 |
138 var params = {{!inline_data}}; | 157 var params = {{!inline_data}}; |
139 window.setter = new Setter(params); | 158 var csrf_blob = "{{!csrf_blob}}"; |
140 | 159 window.setter = new Setter(params, csrf_blob); |
141 var root = $("#paramlist"); | |
142 | 160 |
143 var number_template = $("[type='html/num_input']").html(); | 161 var number_template = $("[type='html/num_input']").html(); |
144 var button_template = $("[type='html/yesno_button']").html(); | 162 var button_template = $("[type='html/yesno_button']").html(); |
145 | 163 |
146 setter.on("add", add); | 164 setter.on("add", add); |
170 } | 188 } |
171 | 189 |
172 $("#oldvalue", el).toggleClass("modified", !same); | 190 $("#oldvalue", el).toggleClass("modified", !same); |
173 }); | 191 }); |
174 | 192 |
175 setter.on("saved", function(j) { | 193 setter.on("status", function(status) { |
176 $("#jsontest").text(j); | 194 $('#status').text(status) |
177 }); | 195 }) |
178 | 196 |
179 | 197 var root; |
180 | 198 |
181 $.route(function(hash) { | 199 window.onload = function() { |
182 | 200 // clear list and add new ones |
183 // clear list and add new ones | 201 root = $("#paramlist"); |
184 root.empty() && $.each(setter.params, function (idx, p) { | 202 |
185 add(p); | 203 root.empty() && $.each(setter.params, function (idx, p) { |
204 add(p); | |
205 }) | |
186 | 206 |
187 $("#savebutton").click(function() { | 207 $("#savebutton").click(function() { |
188 setter.save(); | 208 setter.save(); |
189 }) | 209 }) |
190 }) | 210 } |
191 }) | |
192 | 211 |
193 function set_text_state(el, param) | 212 function set_text_state(el, param) |
194 { | 213 { |
195 var input = $(".input", el); | 214 var input = $(".input", el); |
196 var s = Number(param.value).toFixed(param.digits) | 215 var s = Number(param.value).toFixed(param.digits) |
254 | 273 |
255 })() | 274 })() |
256 | 275 |
257 </script> | 276 </script> |
258 | 277 |
278 <body> | |
279 | |
280 <section id="paramlist"> | |
281 </section> | |
282 | |
283 <div id="savebox"> | |
284 <input type="button" id="savebutton" value="Save"/> | |
285 | |
286 <div id="status"> | |
287 </div> | |
288 </div> | |
289 | |
290 | |
291 </body> | |
292 | |
259 </html> | 293 </html> |