projects
/
brisk.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
reenabled all info items, and show calculated skills
[brisk.git]
/
web
/
fieldify.js
diff --git
a/web/fieldify.js
b/web/fieldify.js
index
19bf23f
..
f6bfb58
100644
(file)
--- a/
web/fieldify.js
+++ b/
web/fieldify.js
@@
-1,21
+1,40
@@
+function __fieldify_find_ancestors(objarr, name)
+{
+ var obj;
+
+ for (var i = 0 ; i < objarr.length ; i++) {
+ obj = objarr[i];
+ var item = obj.getElementsByClassName(name + '_id');
+ if (item.length > 0) {
+ return (item);
+ }
+ }
+ return false;
+}
// fieldsdescr = { name: { type: 'typename' }, ... }
// fieldsdescr = { name: { type: 'typename' }, ... }
-function Fieldify(ancestor, fieldsdescr)
+function Fieldify(ancestor
s
, fieldsdescr)
{
{
-
this.ancestor = ancestor
;
+
var item
;
+ this.ancestors = ancestors;
this.field = new Array();
for (k in fieldsdescr) {
this.field[k] = fieldsdescr[k];
this.field = new Array();
for (k in fieldsdescr) {
this.field[k] = fieldsdescr[k];
+ if (this.field[k].type == 'fields') {
+ if (item = __fieldify_find_ancestors(this.ancestors, k)) {
+ this.field[k].obj = new Fieldify(item, this.field[k].fields);
+ }
+ }
}
}
Fieldify.prototype = {
}
}
Fieldify.prototype = {
- ancestor: null,
+ ancestor
s
: null,
field: null,
visible: function(is_visible) {
field: null,
visible: function(is_visible) {
- this.ancestor.style.visibility = (is_visible ? "visible" : "hidden" );
+ this.ancestor
s[0]
.style.visibility = (is_visible ? "visible" : "hidden" );
},
// { 'name': 'value' }
},
// { 'name': 'value' }
@@
-28,6
+47,9
@@
Fieldify.prototype = {
else if (this.field[k].type == 'radio') {
this.fld_radio_set(k, field_values[k]);
}
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]);
+ }
}
},
}
},
@@
-43,41
+65,53
@@
Fieldify.prototype = {
else if (this.field[k].type == 'radio') {
ret[k] = this.fld_radio_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)
{
}
return ret;
},
fld_value_set: function(name, value)
{
- this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML = value;
+ var item = __fieldify_find_ancestors(this.ancestors, name);
+ if (item) {
+ item[0].innerHTML = value;
+ }
},
fld_value_get: function(name)
{
},
fld_value_get: function(name)
{
- return this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML;
+ var item = __fieldify_find_ancestors(this.ancestors, name);
+ if (item) {
+ return (item[0].innerHTML);
+ }
+ return false;
},
fld_radio_set: function(name, value)
{
},
fld_radio_set: function(name, value)
{
- var arr = this.ancestor.getElementsByClassName(name + '_id');
-
- for (k in arr) {
- if (arr[k].value == value)
- arr[k].checked = true;
- else
- arr[k].checked = false;
+ var arr = __fieldify_find_ancestors(this.ancestors, name);
+ if (arr) {
+ for (k in arr) {
+ if (arr[k].value == value)
+ arr[k].checked = true;
+ else
+ arr[k].checked = false;
+ }
}
},
fld_radio_get: function(name)
{
}
},
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;
+ var ret = null;
+ var arr = __fieldify_find_ancestors(this.ancestors, name);
+ if (arr) {
+ for (k in arr) {
+ if (arr[k].checked == true) {
+ ret = arr[k].value;
+ break;
+ }
}
}
return ret;
}
}
return ret;