X-Git-Url: http://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Ffieldify.js;h=cb14c6e639b7a2ea152aad67074091252acecbad;hb=19cfa94e8731ace1ea643d295e1ec57f383952de;hp=5be1dea8f200f89328de95a455cc89285a664cb6;hpb=7f9618888f9963c4a7daebeb9e3d14ef0a56b968;p=brisk.git diff --git a/web/fieldify.js b/web/fieldify.js index 5be1dea..cb14c6e 100644 --- a/web/fieldify.js +++ b/web/fieldify.js @@ -7,6 +7,10 @@ function Fieldify(ancestor, fieldsdescr) this.field = new Array(); for (k in fieldsdescr) { this.field[k] = fieldsdescr[k]; + if (this.field[k].type == 'fields') { + this.field[k].obj = new Fieldify(this.ancestor.getElementsByClassName(k + '_id')[0], + this.field[k].fields); + } } } @@ -19,7 +23,7 @@ Fieldify.prototype = { }, // { 'name': 'value' } - populate: function(field_values) + json2dom: function(field_values) { for (k in this.field) { if (this.field[k].type == 'value') { @@ -28,7 +32,29 @@ Fieldify.prototype = { else if (this.field[k].type == 'radio') { this.fld_radio_set(k, field_values[k]); } + else if (this.field[k].type == 'fields') { + this.field[k].obj.json2dom(field_values[k]); + } + } + }, + + dom2json: function() + { + var ret = {}; + for (k in this.field) { + if (this.field[k].perms == 'ro') + continue; + if (this.field[k].type == 'value') { + ret[k] = this.fld_value_get(k); + } + else if (this.field[k].type == 'radio') { + ret[k] = this.fld_radio_get(k); + } + else if (this.field[k].type == 'fields') { + ret[k] = this.field[k].obj.dom2json(); + } } + return ret; }, fld_value_set: function(name, value) @@ -36,6 +62,11 @@ Fieldify.prototype = { this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML = value; }, + fld_value_get: function(name) + { + return this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML; + }, + fld_radio_set: function(name, value) { var arr = this.ancestor.getElementsByClassName(name + '_id'); @@ -47,5 +78,20 @@ Fieldify.prototype = { arr[k].checked = false; } }, + + fld_radio_get: function(name) + { + var arr = this.ancestor.getElementsByClassName(name + '_id'); + ret = null; + + for (k in arr) { + if (arr[k].checked == true) { + ret = arr[k].value; + break; + } + } + return ret; + }, + tap: null }