Commit 410e9239 authored by Boris Kocherov's avatar Boris Kocherov

make getContent work while render

parent 4da4734f
...@@ -239,19 +239,15 @@ ...@@ -239,19 +239,15 @@
}) })
.declareMethod("render", function (opt) { .declareMethod("render", function (opt) {
var gadget = this; var gadget = this;
gadget.props.init_value = opt.value;
return gadget.getDeclaredGadget("xmla_settings") 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 (sub_path) {
return this.getDeclaredGadget("xmla_settings") return this.getDeclaredGadget("xmla_settings")
.push(function (g) { .push(function (g) {
return g.getContent(); return g.getContent(sub_path);
}); });
}) })
.declareAcquiredMethod("notifyChange", "notifyChange") .declareAcquiredMethod("notifyChange", "notifyChange")
...@@ -318,18 +314,13 @@ ...@@ -318,18 +314,13 @@
return print_content(g); return print_content(g);
}) })
.allowPublicAcquisition("resolveExternalReference", function (arr) { .allowPublicAcquisition("resolveExternalReference", function (arr) {
var g = this, var url = arr[0],
url = arr[0],
schema_path = arr[1], schema_path = arr[1],
path = arr[2]; path = arr[2],
connection_path = path.split('/').slice(0, -1).join('/');
if ("urn:jio:properties_from_xmla.connection.json" === url) { if ("urn:jio:properties_from_xmla.connection.json" === url) {
return new RSVP.Queue() return this.getContent(connection_path)
.push(function () { .push(function (settings) {
var connection_path = path.split('/').slice(0, -1).join('/'),
settings;
if (g.props.init_value) {
settings = convertOnMultiLevel(g.props.init_value, connection_path);
}
return generateSchema(settings); return generateSchema(settings);
}); });
} }
......
...@@ -29,19 +29,7 @@ ...@@ -29,19 +29,7 @@
} }
function get_used_dimensions(g) { function get_used_dimensions(g) {
var q; return g.getContent()
if (g.props.init_value) {
q = RSVP.Queue()
.push(function () {
return g.props.init_value;
});
} else {
q = g.getDeclaredGadget("olap_wizard")
.push(function (gadget) {
return gadget.getContent();
});
}
return q
.push(function (v) { .push(function (v) {
var dimensions = [], var dimensions = [],
key, key,
...@@ -335,19 +323,12 @@ ...@@ -335,19 +323,12 @@
.allowPublicAcquisition("notifyInvalid", function (arr, scope) { .allowPublicAcquisition("notifyInvalid", function (arr, scope) {
}) })
.declareMethod("render", function (opt) { .declareMethod("render", function (opt) {
var g = this; if (!opt) {
g.props.init_value = opt.value; opt = {};
return get_used_dimensions(g) }
.push(function (v) { return this.getDeclaredGadget("olap_wizard")
g.props.used_dimensions = v;
return g.getDeclaredGadget("olap_wizard");
})
.push(function (gadget) { .push(function (gadget) {
return gadget.render(opt); return gadget.render(opt);
})
.push(function () {
delete g.props.init_value;
delete g.props.used_dimensions;
}); });
}) })
.declareMethod("getContent", function (path) { .declareMethod("getContent", function (path) {
...@@ -494,20 +475,21 @@ ...@@ -494,20 +475,21 @@
if ("urn:jio:choice.json" === url) { if ("urn:jio:choice.json" === url) {
return new RSVP.Queue() return new RSVP.Queue()
.push(function () { .push(function () {
return getConnections(); return RSVP.all([
g.getRemoteSettings(),
g.getContent("/connection_name"),
g.getContent(path),
get_used_dimensions(g)
]);
}) })
.push(function (connections) { .push(function (arr) {
var connection_settings, var connection_settings,
choice_settings; choice_settings;
if (g.props.init_value) { connection_settings = arr[0][arr[1]];
connection_settings =
connections[convertOnMultiLevel(g.props.init_value, "/connection_name")];
if (path !== "/columns/" && path !== "/rows/") { if (path !== "/columns/" && path !== "/rows/") {
choice_settings = convertOnMultiLevel(g.props.init_value, path); choice_settings = arr[2];
}
return generateChoiceSchema(connection_settings, g.props.used_dimensions, choice_settings);
} }
return {}; return generateChoiceSchema(connection_settings, arr[3], choice_settings);
}); });
} }
throw new Error("urn: '" + url + "' not supported"); throw new Error("urn: '" + url + "' not supported");
......
...@@ -898,6 +898,7 @@ ...@@ -898,6 +898,7 @@
if (json_document !== undefined) { if (json_document !== undefined) {
json_document = JSON.parse(json_document); json_document = JSON.parse(json_document);
} }
g.props.init_value = json_document;
if (g.state.schema !== undefined) { if (g.state.schema !== undefined) {
schema = JSON.parse(g.state.schema); schema = JSON.parse(g.state.schema);
} }
...@@ -988,6 +989,7 @@ ...@@ -988,6 +989,7 @@
if (g.props.form_gadget.props.changed.length > 0) { if (g.props.form_gadget.props.changed.length > 0) {
g.notifyChange(); g.notifyChange();
} }
delete g.props.init_value;
}) })
.push(undefined, function (err) { .push(undefined, function (err) {
console.error(err); console.error(err);
...@@ -1045,10 +1047,19 @@ ...@@ -1045,10 +1047,19 @@
return expandSchemaForField(this, arr[0], arr[1], arr[2], arr[3]); return expandSchemaForField(this, arr[0], arr[1], arr[2], arr[3]);
}) })
.declareMethod('getContentMutex', function () {
return this.props.form_gadget.getContent();
}, {mutex: 'changestate'})
.declareMethod('getContent', function (sub_path) { .declareMethod('getContent', function (sub_path) {
var g = this; var g = this;
if (g.state.editable) { if (g.state.editable) {
return g.props.form_gadget.getContent() return RSVP.Queue()
.push(function () {
if (g.props.init_value) {
return g.props.init_value;
}
return g.getContentMutex();
})
.push(function (value) { .push(function (value) {
// Change the value state in place // Change the value state in place
// This will prevent the gadget to be changed if // This will prevent the gadget to be changed if
...@@ -1068,6 +1079,6 @@ ...@@ -1068,6 +1079,6 @@
}); });
} }
return {}; return {};
}, {mutex: 'changestate'}); });
}(window, document, Blob, rJS, RSVP, jIO)); }(window, document, Blob, rJS, RSVP, jIO));
\ No newline at end of file
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