Mercurial > templog
changeset 484:4a51e2bf689b
a few fixes
author | Matt Johnston <matt@ucc.asn.au> |
---|---|
date | Thu, 06 Feb 2014 20:35:43 +0800 |
parents | 93af94e6bd9d |
children | d68af9e84485 |
files | web/log.py web/views/set.tpl |
diffstat | 2 files changed, 53 insertions(+), 29 deletions(-) [+] |
line wrap: on
line diff
--- a/web/log.py Tue Feb 04 23:39:06 2014 +0800 +++ b/web/log.py Thu Feb 06 20:35:43 2014 +0800 @@ -269,17 +269,17 @@ for k, v in _FIELD_DEFAULTS.iteritems(): n = {'name': k, 'value': v} if type(v) is bool: - if v: - n['value'] = "true" kind = 'yesno' else: kind = 'number' - n['amount'] = 0.1; if k == 'overshoot_delay': n['unit'] = ' sec' n['amount'] = 60 + n['digits'] = 0; else: n['unit'] = 'ยบ' + n['amount'] = 0.1; + n['digits'] = 1; n['kind'] = kind n['title'] = k r.append(n)
--- a/web/views/set.tpl Tue Feb 04 23:39:06 2014 +0800 +++ b/web/views/set.tpl Thu Feb 06 20:35:43 2014 +0800 @@ -50,6 +50,11 @@ background-color: #cdf; } +.modified { + color: #d00; + font-weight: bold; +} + .existing { margin-top: 1em; font-size: 70%; @@ -73,7 +78,7 @@ <script type="html/num_input"> <div id="{id}"> -<span class="existing">{title} <span id="existing_{name}">{oldvalue}</span>{unit}</span> +<span class="existing">{title} <span id="oldvalue">{oldvaluetext}{unit}</span></span> <br/> <input type="text" class="input" name="input_{name}" /> <input type="button" class="button_down" value="-"/> @@ -83,7 +88,7 @@ <script type="html/yesno_button"> <div id="{id}"> -<span class="existing">{title} <span id="existing_{name}">{oldvalue}</span></span> +<span class="existing">{title} <span id="oldvalue">{oldvaluetext}</span></span> <br/> <input type="button" class="button_no" value="No"/> <input type="button" class="button_yes" value="Yes"/> @@ -99,10 +104,19 @@ $.each(self.params, function(idx, param) { param.id = "param_id_" + idx; - param.oldvalue = param.value; + param.oldvalue = param.value + if (typeof(param.oldvalue) == "boolean") + { + param.oldvaluetext = param.oldvalue ? "Yes" : "No"; + } + else + { + param.oldvaluetext = param.oldvalue; + } }); - self.edit = function(param) { + self.edit = function(param, newvalue) { + param.value = newvalue; params[param.name] = param; self.trigger("edit", param); } @@ -136,12 +150,26 @@ var el = $("#" + param.id); if (param.kind === "number") { - set_text_state(el, param.value); + set_text_state(el, param); } else if (param.kind === "yesno") { set_button_state(el, param.value); } + var same; + switch (typeof(param.oldvalue)) + { + case "boolean": + same = ((!param.value) == (!param.oldvalue)); + break; + case "number": + same = Math.abs(param.value - param.oldvalue) < 1e-3 * param.amount; + break; + default: + same = (param.value === param.oldvalue); + } + + $("#oldvalue", el).toggleClass("modified", !same); }); setter.on("saved", function(j) { @@ -162,26 +190,17 @@ }) }) -function set_text_state(el, value) +function set_text_state(el, param) { var input = $(".input", el); - input.text(value).val(value) + var s = Number(param.value).toFixed(param.digits) + input.text(s).val(s) } function set_button_state(el, value) { - var button_yes = $(".button_yes", el); - var button_no = $(".button_no", el); - if (value) - { - button_yes.addClass("onbutton"); - button_no.removeClass("onbutton"); - } - else - { - button_no.addClass("onbutton"); - button_yes.removeClass("onbutton"); - } + $(".button_yes", el).toggleClass("onbutton", value); + $(".button_no", el).toggleClass("onbutton", !value); } function add(param) @@ -194,19 +213,24 @@ input.keyup(function(e) { if (e.which == 13) { - param.value = Number(this.value); - setter.edit(param); + setter.edit(param, Number(this.value)); } }); + input.blur(function(e) { + setter.edit(param, Number(this.value)); + }); + $(".button_up", el).click(function() { setter.adjust(param, 1); + this.blur() }); $(".button_down", el).click(function() { setter.adjust(param, -1); + this.blur() }); - set_text_state(el, param.value); + set_text_state(el, param); } else if (param.kind === "yesno") { @@ -215,13 +239,13 @@ var button_no = $(".button_no", el); button_yes.click(function() { - param.value = true; - setter.edit(param); + setter.edit(param, true); + this.blur() }) button_no.click(function() { - param.value = false; - setter.edit(param); + setter.edit(param, false); + this.blur() }) set_button_state(el, param.value);