Commit f658464a authored by Boris Kocherov's avatar Boris Kocherov

use new features rjs_json_form inside xmla demo

parent 2dc7333d
......@@ -63,6 +63,16 @@
});
}
function print_content(gadget) {
return gadget.getDeclaredGadget("xmla_settings")
.push(function (g) {
return g.getContent();
})
.push(function (v) {
console.log(JSON.stringify(v));
});
}
function discoverDataSources(schema, opt) {
return xmla_request_retry("discoverDataSources", opt)
.push(undefined, function (error) {
......@@ -228,10 +238,14 @@
.allowPublicAcquisition("notifyInvalid", function (arr, scope) {
})
.declareMethod("render", function (opt) {
this.props.init_value = opt.value;
return this.getDeclaredGadget("xmla_settings")
var gadget = this;
gadget.props.init_value = opt.value;
return gadget.getDeclaredGadget("xmla_settings")
.push(function (g) {
return g.render(opt);
})
.push(function () {
delete gadget.props.init_value;
});
})
.declareMethod("getContent", function () {
......@@ -241,13 +255,15 @@
});
})
.declareAcquiredMethod("notifyChange", "notifyChange")
.allowPublicAcquisition("notifyChange", function (arr, scope) {
.allowPublicAcquisition("notifyChange", function (arr, s) {
var g = this,
p = arr[0].path,
gadget_settings,
scope = arr[0].scope,
action = arr[0].action,
path;
function f(settings_path, rerender_path) {
function rerender(sub_scope, settings_path) {
var gadget_settings;
return g.getDeclaredGadget("xmla_settings")
.push(function (gadget) {
gadget_settings = gadget;
......@@ -258,45 +274,56 @@
})
.push(function (schema) {
return gadget_settings.rerender({
path: rerender_path,
schema: schema
scope: sub_scope,
path: '/properties',
schema: schema,
ignore_incorrect: true
});
})
.push(function () {
// return g.notifyChange();
return print_content(g);
});
}
for (path in g.props.xmla_connections) {
if (g.props.xmla_connections.hasOwnProperty(path) &&
p.startsWith(path)) {
return f(path, g.props.xmla_connections[path]);
if (g.props.xmla_connections.hasOwnProperty(path)) {
if (p === path && action === "add") {
g.props.xmla_connections[path] = scope;
return rerender(scope, path);
}
s = g.props.xmla_connections[path];
if (action === "delete") {
if (s === scope) {
// xxx memory leak
g.props.xmla_connections[path] = false;
}
} else {
// check if receive message from gadget with scope == s or his sub_gadgets
if (scope.startsWith(s)) {
return rerender(s, path);
}
}
}
}
// return g.notifyChange();
return print_content(g);
})
.allowPublicAcquisition("resolveExternalReference", function (arr) {
var g = this,
url = arr[0],
schema_path = arr[1],
path = arr[2],
settings,
connection_path;
path = arr[2];
if ("urn:jio:properties_from_xmla.connection.json" === url) {
connection_path = path.split('/').slice(0, -1).join('/');
return new RSVP.Queue()
.push(function () {
var connection_path = path.split('/').slice(0, -1).join('/'),
settings;
g.props.xmla_connections[connection_path] = false;
if (g.props.init_value) {
settings = convertOnMultiLevel(g.props.init_value, connection_path);
if (settings) {
convertOnMultiLevel(g.props.init_value, connection_path, []);
}
}
return generateSchema(settings);
})
.push(function (s) {
g.props.xmla_connections[connection_path] = path;
return s;
});
}
throw new Error("urn: '" + url + "' not supported");
......
......@@ -390,7 +390,8 @@
.push(function (schema) {
return gadget_settings.rerender({
scope: sub_scope,
schema: schema
schema: schema,
ignore_incorrect: true
});
})
.push(function () {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment