add new Fieldfy class to manage forms (minimal), new user 'info' form
[brisk.git] / web / fieldify.js
diff --git a/web/fieldify.js b/web/fieldify.js
new file mode 100644 (file)
index 0000000..254dd0d
--- /dev/null
@@ -0,0 +1,54 @@
+
+// fieldsdescr = { name: { type: 'typename' }, ... }
+function Fieldify(ancestor, fieldsdescr)
+{
+    this.ancestor = ancestor;
+    
+    this.field = new Array();
+    for (k in fieldsdescr) {
+        this.field[k] = fieldsdescr[k];
+    }
+}
+
+Fieldify.prototype = {
+    ancestor: null,
+    field: null,
+    
+    visible: function(is_visible) {
+        this.ancestor.style.visibility = (is_visible ? "visible" : "hidden" );
+    },
+
+    // { 'name': 'value' }
+    populate: function(field_values)
+    {
+        for (k in this.field) {
+            if (this.field[k].type == 'value') {
+                this.fld_value_set(k, field_values[k]);
+            }
+            else if (this.field[k].type == 'radio') {
+                this.fld_radio_set(k, field_values[k]);
+            }
+        }
+    },
+
+    fld_value_set: function(name, value)
+    {
+        console.log(name + "=" + value);
+        this.ancestor.getElementsByClassName(name + '_id')[0].innerHTML = value;
+    },
+    
+    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 
+                arr[k].checked = false;
+        }
+    },
+    tap: null
+}