partial refactoring for info command, new nasty devel username to check deeper login...
[brisk.git] / web / fieldify.js
1
2 // fieldsdescr = { name: { type: 'typename' }, ... }
3 function Fieldify(ancestor, fieldsdescr)
4 {
5     this.ancestor = ancestor;
6
7     this.field = new Array();
8     for (k in fieldsdescr) {
9         this.field[k] = fieldsdescr[k];
10     }
11 }
12
13 Fieldify.prototype = {
14     ancestor: null,
15     field: null,
16
17     visible: function(is_visible) {
18         this.ancestor.style.visibility = (is_visible ? "visible" : "hidden" );
19     },
20
21     // { 'name': 'value' }
22     json2dom: function(field_values)
23     {
24         for (k in this.field) {
25             if (this.field[k].type == 'value') {
26                 this.fld_value_set(k, field_values[k]);
27             }
28             else if (this.field[k].type == 'radio') {
29                 this.fld_radio_set(k, field_values[k]);
30             }
31         }
32     },
33
34     dom2json: function()
35     {
36         var ret = {};
37         for (k in this.field) {
38             if (this.field[k].perms == 'ro')
39                 continue;
40             if (this.field[k].type == 'value') {
41                 ret[k] = this.fld_value_get(k);
42             }
43             else if (this.field[k].type == 'radio') {
44                 ret[k] = this.fld_radio_get(k);
45             }
46         }
47         return ret;
48     },
49
50     fld_value_set: function(name, value)
51     {
52         this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML = value;
53     },
54
55     fld_value_get: function(name)
56     {
57         return this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML;
58     },
59
60     fld_radio_set: function(name, value)
61     {
62         var arr = this.ancestor.getElementsByClassName(name + '_id');
63
64         for (k in arr) {
65             if (arr[k].value == value)
66                 arr[k].checked = true;
67             else
68                 arr[k].checked = false;
69         }
70     },
71
72     fld_radio_get: function(name)
73     {
74         var arr = this.ancestor.getElementsByClassName(name + '_id');
75         ret = null;
76
77         for (k in arr) {
78             if (arr[k].checked == true) {
79                 ret = arr[k].value;
80                 break;
81             }
82         }
83         return ret;
84     },
85
86     tap: null
87 }