Commit 5ef74180 authored by Boris Kocherov's avatar Boris Kocherov

[erp5_only_office] remote.settins.js use new version rjs_form

parent 4591d893
...@@ -215,10 +215,14 @@ ...@@ -215,10 +215,14 @@
.allowPublicAcquisition("notifyInvalid", function (arr, scope) { .allowPublicAcquisition("notifyInvalid", function (arr, scope) {
}) })
.declareMethod("render", function (opt) { .declareMethod("render", function (opt) {
this.props.init_value = opt.value; var gadget = this;
return this.getDeclaredGadget("xmla_settings") gadget.props.init_value = opt.value;
return gadget.getDeclaredGadget("xmla_settings")
.push(function (g) { .push(function (g) {
return g.render(opt); return g.render(opt);
})
.push(function () {
delete gadget.props.init_value;
}); });
}) })
.declareMethod("getContent", function () { .declareMethod("getContent", function () {
...@@ -228,13 +232,15 @@ ...@@ -228,13 +232,15 @@
}); });
}) })
.declareAcquiredMethod("notifyChange", "notifyChange") .declareAcquiredMethod("notifyChange", "notifyChange")
.allowPublicAcquisition("notifyChange", function (arr, scope) { .allowPublicAcquisition("notifyChange", function (arr, s) {
var g = this, var g = this,
p = arr[0].path, p = arr[0].path,
gadget_settings, scope = arr[0].scope,
action = arr[0].action,
path; path;
function f(settings_path, rerender_path) { function rerender(sub_scope, settings_path) {
var gadget_settings;
return g.getDeclaredGadget("xmla_settings") return g.getDeclaredGadget("xmla_settings")
.push(function (gadget) { .push(function (gadget) {
gadget_settings = gadget; gadget_settings = gadget;
...@@ -244,7 +250,12 @@ ...@@ -244,7 +250,12 @@
return generateSchema(settings); return generateSchema(settings);
}) })
.push(function (schema) { .push(function (schema) {
return gadget_settings.rerender(rerender_path, schema); return gadget_settings.rerender({
scope: sub_scope,
path: '/properties',
schema: schema,
ignore_incorrect: true
});
}) })
.push(function () { .push(function () {
return g.notifyChange(); return g.notifyChange();
...@@ -252,35 +263,43 @@ ...@@ -252,35 +263,43 @@
} }
for (path in g.props.xmla_connections) { for (path in g.props.xmla_connections) {
if (g.props.xmla_connections.hasOwnProperty(path) && if (g.props.xmla_connections.hasOwnProperty(path)) {
p.startsWith(path)) { if (p === path && action === "add") {
return f(path, g.props.xmla_connections[path]); 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 g.notifyChange();
}) })
.allowPublicAcquisition("resolveExternalReference", function (arr) { .allowPublicAcquisition("resolveExternalReference", function (arr, scope) {
var g = this, var g = this,
url = arr[0], url = arr[0],
schema_path = arr[1], schema_path = arr[1],
path = arr[2], path = arr[2];
settings, console.log(scope);
connection_path;
if ("urn:jio:properties_from_xmla.connection.json" === url) { if ("urn:jio:properties_from_xmla.connection.json" === url) {
connection_path = path.split('/').slice(0, -1).join('/');
return new RSVP.Queue() return new RSVP.Queue()
.push(function () { .push(function () {
var connection_path = path.split('/').slice(0, -1).join('/'),
settings;
g.props.xmla_connections[connection_path] = false;
if (g.props.init_value) { if (g.props.init_value) {
settings = convertOnMultiLevel(g.props.init_value, connection_path); settings = convertOnMultiLevel(g.props.init_value, connection_path);
if (settings) {
convertOnMultiLevel(g.props.init_value, connection_path, []);
}
} }
return generateSchema(settings); return generateSchema(settings);
})
.push(function (s) {
g.props.xmla_connections[connection_path] = path;
return s;
}); });
} }
throw new Error("urn: '" + url + "' not supported"); throw new Error("urn: '" + url + "' not supported");
......
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