2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-24 21:11:12 +00:00
|
|
|
module.exports = new Class({
|
2015-11-17 10:34:33 +00:00
|
|
|
Extends: Vn.Object
|
2015-12-10 13:48:43 +00:00
|
|
|
|
|
|
|
,isOpen: false
|
|
|
|
,uiLoaded: false
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
,initialize: function(gui, formInfo) {
|
2015-11-17 10:34:33 +00:00
|
|
|
this.gui = gui;
|
|
|
|
this.conn = gui.conn;
|
|
|
|
this.hash = gui.hash;
|
|
|
|
this.formInfo = formInfo;
|
|
|
|
}
|
2015-12-10 13:48:43 +00:00
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
,loadUi: function() {
|
2015-12-10 13:48:43 +00:00
|
|
|
if (!this.isOpen)
|
|
|
|
return;
|
2022-05-30 01:30:33 +00:00
|
|
|
|
|
|
|
const conn = this.conn;
|
|
|
|
const hash = this.hash;
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-30 01:30:33 +00:00
|
|
|
const builder = new Vn.Builder();
|
2022-06-18 21:04:34 +00:00
|
|
|
builder.compileFile(`forms/${this.formInfo.path}/ui.xml`);
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-30 01:30:33 +00:00
|
|
|
const scope = this.builder = builder.load(null, this);
|
2022-05-28 01:18:06 +00:00
|
|
|
this.$ = scope.$;
|
2022-06-18 21:04:34 +00:00
|
|
|
scope.link({conn, hash});
|
2022-05-28 01:18:06 +00:00
|
|
|
this.node = scope.$.form;
|
2022-07-15 05:55:18 +00:00
|
|
|
this.node.$ctrl = this;
|
2022-05-24 21:11:12 +00:00
|
|
|
|
2022-05-30 01:30:33 +00:00
|
|
|
const paramsLot = this.$.params;
|
|
|
|
if (paramsLot) {
|
|
|
|
paramsLot.source = hash;
|
|
|
|
this.params = paramsLot;
|
|
|
|
}
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-30 01:30:33 +00:00
|
|
|
function setConnection(tagName) {
|
|
|
|
const objects = scope.getByTagName(tagName);
|
|
|
|
for (let i = 0; i < objects.length; i++)
|
|
|
|
objects[i].conn = conn;
|
|
|
|
}
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-30 01:30:33 +00:00
|
|
|
const tags = ['db-model', 'db-query', 'db-lot'];
|
|
|
|
for (let i = 0; i < tags.length; i++)
|
|
|
|
setConnection(tags[i]);
|
2015-11-17 10:34:33 +00:00
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
if (this.node) {
|
|
|
|
this.gui.setForm(this.node);
|
2022-05-28 01:18:06 +00:00
|
|
|
this.gui.setTitle(scope.$.title);
|
|
|
|
this.gui.setActions(scope.$.actions);
|
2022-05-24 10:18:44 +00:00
|
|
|
this.activate();
|
2015-12-10 13:48:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
this.uiLoaded = true;
|
2015-11-17 10:34:33 +00:00
|
|
|
}
|
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
,unloadUi: function() {
|
2015-12-10 13:48:43 +00:00
|
|
|
if (!this.uiLoaded)
|
|
|
|
return;
|
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
if (this.node) {
|
|
|
|
this.deactivate();
|
|
|
|
this.gui.setTitle(null);
|
|
|
|
this.gui.setActions(null);
|
|
|
|
Vn.Node.remove(this.node);
|
|
|
|
this.deactivate();
|
2015-11-17 10:34:33 +00:00
|
|
|
this.node = null;
|
|
|
|
}
|
2022-05-24 10:18:44 +00:00
|
|
|
if (this.builder) {
|
|
|
|
this.builder.unref();
|
2015-11-17 10:34:33 +00:00
|
|
|
this.builder = null;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2015-12-10 13:48:43 +00:00
|
|
|
/**
|
|
|
|
* Called when the form is opened.
|
2022-05-24 10:18:44 +00:00
|
|
|
*/
|
|
|
|
,open: function() {
|
|
|
|
this.close();
|
2015-12-10 13:48:43 +00:00
|
|
|
this.isOpen = true;
|
2022-05-24 10:18:44 +00:00
|
|
|
this.loadUi();
|
2015-12-10 13:48:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when the form is closed.
|
2022-05-24 10:18:44 +00:00
|
|
|
*/
|
|
|
|
,close: function() {
|
2015-12-10 13:48:43 +00:00
|
|
|
if (!this.isOpen)
|
|
|
|
return;
|
|
|
|
|
|
|
|
this.isOpen = false;
|
2022-05-24 10:18:44 +00:00
|
|
|
this.unloadUi();
|
2015-12-10 13:48:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when the form is activated.
|
2022-05-24 10:18:44 +00:00
|
|
|
*/
|
|
|
|
,activate: function() {}
|
2015-12-10 13:48:43 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Called when the form is deactivated.
|
2022-05-24 10:18:44 +00:00
|
|
|
*/
|
|
|
|
,deactivate: function() {}
|
2015-12-10 13:48:43 +00:00
|
|
|
|
2022-05-24 10:18:44 +00:00
|
|
|
,_destroy: function() {
|
|
|
|
this.close();
|
2022-06-06 16:02:17 +00:00
|
|
|
Vn.Object.prototype._destroy.call(this);
|
2015-11-17 10:34:33 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|