summaryrefslogtreecommitdiffstats
path: root/web
diff options
context:
space:
mode:
authorKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-14 09:23:12 +0200
committerKaarle Ritvanen <kaarle.ritvanen@datakunkku.fi>2013-11-14 14:58:29 +0200
commitfbece2f1513387ce19476a06d72e9e13a5d94b07 (patch)
tree845c789909939704c3dc605c03b32406d255489f /web
parent8e9a0ca00b7437402f80d10290c972fa1c07446a (diff)
downloadaconf-fbece2f1513387ce19476a06d72e9e13a5d94b07.tar.bz2
aconf-fbece2f1513387ce19476a06d72e9e13a5d94b07.tar.xz
web client: allow conditional inline widgets
Diffstat (limited to 'web')
-rw-r--r--web/client.js43
1 files changed, 26 insertions, 17 deletions
diff --git a/web/client.js b/web/client.js
index 3ed4fe2..2ae17ec 100644
--- a/web/client.js
+++ b/web/client.js
@@ -162,21 +162,21 @@ $(function() {
var tn = _.isObject(newValue);
var npv = tn ? mpath : newValue;
+ function ignore(path) {
+ _.each(_.keys(invalid), function(p) {
+ if (isSubordinate(p, path))
+ delete invalid[p];
+ });
+ }
+
function resolve() {
if (mpath in invalid &&
invalid[mpath][1] == def) {
var del = invalid[mpath][0] == null;
- delete invalid[mpath];
-
- if (del)
- _.each(
- _.keys(invalid),
- function(p) {
- if (isSubordinate(p, mpath, true))
- delete invalid[p];
- }
- );
+
+ delete invalid[mpath];
+ if (del) ignore(mpath);
}
def.resolve(isValid());
@@ -237,9 +237,9 @@ $(function() {
field.condition[
name
] != newValue)
- delete invalid[
+ ignore(
join(path, field.name)
- ];
+ );
}
)
@@ -651,9 +651,9 @@ $(function() {
var self = this;
if (data.meta.type == "model") {
- var flds = {};
+ this.fields = {};
_.each(data.meta.fields, function(field) {
- flds[field.name] = self.renderField(
+ self.fields[field.name] = self.renderField(
field.name,
field,
field["ui-name"],
@@ -666,11 +666,13 @@ $(function() {
if (field.condition) {
var validate = false;
function change() {
- var f = flds[field.name];
+ var f = self.fields[field.name];
var visible = _.every(_.map(
field.condition,
function(value, key) {
- return flds[key].widget.get() == value;
+ return self.fields[
+ key
+ ].widget.get() == value;
}
));
if (visible) {
@@ -683,7 +685,7 @@ $(function() {
validate = true;
_.each(field.condition, function(value, key) {
- flds[key].widget.onChange(change);
+ self.fields[key].widget.onChange(change);
});
}
});
@@ -730,6 +732,13 @@ $(function() {
Inline.wrap = function() { return this.el; };
+ Inline.validate = function() {
+ if (this.fields)
+ _.each(this.fields, function(field) {
+ field.widget.validate();
+ });
+ };
+
var Horizontal = Object.create(Inline);