X-Git-Url: https://mop.ddnsfree.com/gitweb/?a=blobdiff_plain;f=web%2Ffieldify.js;h=cb14c6e639b7a2ea152aad67074091252acecbad;hb=19cfa94e8731ace1ea643d295e1ec57f383952de;hp=254dd0d2de399cecd05b5ac03f4bc539c17d5452;hpb=29386faba01ac22d3d47e5f467412dc63b4e22cf;p=brisk.git diff --git a/web/fieldify.js b/web/fieldify.js index 254dd0d..cb14c6e 100644 --- a/web/fieldify.js +++ b/web/fieldify.js @@ -3,23 +3,27 @@ function Fieldify(ancestor, fieldsdescr) { this.ancestor = ancestor; - + 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); + } } } Fieldify.prototype = { ancestor: null, field: null, - + visible: function(is_visible) { this.ancestor.style.visibility = (is_visible ? "visible" : "hidden" ); }, // { 'name': 'value' } - populate: function(field_values) + json2dom: function(field_values) { for (k in this.field) { if (this.field[k].type == 'value') { @@ -28,27 +32,66 @@ 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) { - console.log(name + "=" + value); 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'); - console.log(name + "=" + value); - for (k in arr) { if (arr[k].value == value) arr[k].checked = true; - else + else 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 }