MWF.require("MWF.widget.Common", null, false); MWF.require("MWF.widget.JsonTemplate", null, false); MWF.xApplication.process.ViewDesigner.Property = MWF.FVProperty = new Class({ Extends: MWF.widget.Common, Implements: [Options, Events], options: { "style": "default", "path": "/x_component_process_FormDesigner/property/property.html" }, initialize: function(module, propertyNode, designer, options){ this.setOptions(options); this.module = module; this.view = module.view; this.data = module.json; this.data.pid = this.view.json.id+this.data.id; this.htmlPath = this.options.path; this.designer = designer; this.propertyNode = propertyNode; }, load: function(){ if (this.fireEvent("queryLoad")){ MWF.getRequestText(this.htmlPath, function(responseText, responseXML){ this.htmlString = responseText; this.fireEvent("postLoad"); }.bind(this)); } this.propertyNode.addEvent("keydown", function(e){e.stopPropagation();}); }, editProperty: function(td){ }, getHtmlString: function(callback){ if (!this.htmlString){ MWF.getRequestText(this.htmlPath, function(responseText, responseXML){ this.htmlString = responseText; if (callback) callback(); }.bind(this)); }else{ if (callback) callback(); } }, show: function(){ if (!this.propertyContent){ this.getHtmlString(function(){ if (this.htmlString){ this.JsonTemplate = new MWF.widget.JsonTemplate(this.data, this.htmlString); this.propertyContent = new Element("div", {"styles": {"overflow": "hidden"}}).inject(this.propertyNode); this.propertyContent.set("html", this.JsonTemplate.load()); this.setEditNodeEvent(); this.setEditNodeStyles(this.propertyContent); this.loadPropertyTab(); this.loadPersonInput(); this.loadPersonSelectInput(); this.loadViewFilter(); this.loadScriptArea(); this.loadColumnExportEditor(); this.loadJSONArea(); } }.bind(this)); }else{ this.propertyContent.setStyle("display", "block"); } }, hide: function(){ //this.JsonTemplate = null; //this.propertyNode.set("html", ""); if (this.propertyContent) this.propertyContent.setStyle("display", "none"); }, loadJSONArea: function(){ var jsonNode = this.propertyContent.getElement(".MWFJSONArea"); if (jsonNode){ this.propertyTab.pages.each(function(page){ if (page.contentNode == jsonNode.parentElement){ page.setOptions({ "onShow": function(){ jsonNode.empty(); MWF.require("MWF.widget.JsonParse", function(){ this.json = new MWF.widget.JsonParse(this.module.json, jsonNode, null); this.json.load(); }.bind(this)); }.bind(this) }); } }.bind(this)); } }, loadPropertyTab: function(){ var tabNodes = this.propertyContent.getElements(".MWFTab"); if (tabNodes.length){ var tmpNode = this.propertyContent.getFirst(); var tabAreaNode = new Element("div", { "styles": this.view.css.propertyTabNode }).inject(tmpNode, "before"); MWF.require("MWF.widget.Tab", function(){ var tab = new MWF.widget.Tab(tabAreaNode, {"style": "formPropertyList"}); tab.load(); var tabPages = []; tabNodes.each(function(node){ var page = tab.addTab(node, node.get("title"), false); tabPages.push(page); this.setScrollBar(page.contentNodeArea, "small", null, null); }.bind(this)); tabPages[0].showTab(); this.propertyTab = tab; this.designer.resizeNode(); }.bind(this), false); } }, setEditNodeEvent: function(){ var property = this; // var inputs = this.process.propertyListNode.getElements(".editTableInput"); var inputs = this.propertyContent.getElements("input"); inputs.each(function(input){ var jsondata = input.get("name"); if (jsondata && jsondata.substr(0,1)!="_"){ if (this.module){ var id = this.module.json.id; input.set("name", id+jsondata); } if (jsondata){ var inputType = input.get("type").toLowerCase(); switch (inputType){ case "radio": input.addEvent("change", function(e){ property.setRadioValue(jsondata, this); }); input.addEvent("blur", function(e){ property.setRadioValue(jsondata, this); }); input.addEvent("keydown", function(e){ e.stopPropagation(); }); property.setRadioValue(jsondata, input); break; case "checkbox": input.addEvent("change", function(e){ property.setCheckboxValue(jsondata, this); }); input.addEvent("click", function(e){ property.setCheckboxValue(jsondata, this); }); input.addEvent("keydown", function(e){ e.stopPropagation(); }); break; default: input.addEvent("change", function(e){ property.setValue(jsondata, this.value, this); }); input.addEvent("blur", function(e){ property.setValue(jsondata, this.value, this); }); input.addEvent("keydown", function(e){ if (e.code==13){ property.setValue(jsondata, this.value, this); } e.stopPropagation(); }); if (input.hasClass("editTableInputDate")){ this.loadCalendar(input); } } } } }.bind(this)); var selects = this.propertyContent.getElements("select"); selects.each(function(select){ var jsondata = select.get("name"); if (jsondata){ select.addEvent("change", function(e){ property.setSelectValue(jsondata, this); }); //property.setSelectValue(jsondata, select); } }); var textareas = this.propertyContent.getElements("textarea"); textareas.each(function(input){ var jsondata = input.get("name"); if (jsondata){ input.addEvent("change", function(e){ property.setValue(jsondata, this.value); }); input.addEvent("blur", function(e){ property.setValue(jsondata, this.value); }); input.addEvent("keydown", function(e){ e.stopPropagation(); }); } }.bind(this)); }, loadCalendar: function(node){ MWF.require("MWF.widget.Calendar", function(){ this.calendar = new MWF.widget.Calendar(node, { "style": "xform", "isTime": false, "target": this.module.designer.content, "format": "%Y-%m-%d", "onComplate": function(){ //this.validationMode(); //this.validation(); //this.fireEvent("complete"); }.bind(this) }); //this.calendar.show(); }.bind(this)); }, changeStyle: function(name){ this.module.setPropertiesOrStyles(name); }, changeData: function(name, input, oldValue){ this.module._setEditStyle(name, input, oldValue); }, changeJsonDate: function(key, value){ if (typeOf(key)!="array") key = [key]; var o = this.data; var len = key.length-1; key.each(function(n, i){ if (!o[n]) o[n] = {}; if (i逻辑" + "路径" + "比较" + "值"; tr.set("html", html); var addActionNode = new Element("div", {"styles": this.module.css.filterAddActionNode}).inject(tr.getFirst("th")); addActionNode.addEvent("click", function(){ this.addFilter(table); }.bind(this)); if (this.data.filterList) { this.data.filterList.each(function (op) { new MWF.xApplication.process.ViewDesigner.Property.Filter(op, table, this); }.bind(this)); } }.bind(this)); }, addFilter: function(table){ op = { "logic": "and", "comparison": "", "value": "" } if (!this.data.filterList) this.data.filterList = []; this.data.filterList.push(op); var filter = new MWF.xApplication.process.ViewDesigner.Property.Filter(op, table, this); filter.editMode(); } //initWhereEntryData: function(){ // if (!this.data.data.restrictWhereEntry) this.data.data.restrictWhereEntry = { // "applicationList": [], // "processList": [], // "companyList": [], // "departmentList": [], // "personList": [], // "identityList": [] // }; //}, //loadApplicationSelector: function(){ // var nodes = this.propertyContent.getElements(".MWFApplicationSelect"); // if (nodes.length){ // MWF.xDesktop.requireApp("Organization", "Selector.package", function(){ // nodes.each(function(node){ // var title = new Element("div", {"styles": this.view.css.applicationSelectTitle, "text": node.get("title")}).inject(node); // var content = new Element("div", {"styles": this.view.css.applicationSelectContent}).inject(node); // var action = new Element("div", {"styles": this.view.css.applicationSelectAction, "text": node.get("title")}).inject(node); // action.addEvent("click", function(e){ // var values = []; // if (this.data.data.whereEntry){ // if (this.data.data.whereEntry.applicationList.length){ // this.data.data.whereEntry.applicationList.each(function(item){ // values.push(item.id); // }.bind(this)); // } // } // var options = { // "type": "application", // "count": 0, // "values": values, // //"title": this.app.lp.monthly.selectSortApplication, // "onComplete": function(items){ // this.initWhereEntryData(); // this.data.data.whereEntry.applicationList = []; // content.empty(); // items.each(function(item){ // this.data.data.whereEntry.applicationList.push({ // "id": item.data.id, // "name": item.data.name // }); // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": item.data.name // }).inject(content); // }.bind(this)); // }.bind(this) // }; // var selector = new MWF.OrgSelector(this.view.designer.content, options); // }.bind(this)); // // this.initWhereEntryData(); // this.data.data.whereEntry.applicationList.each(function(app){ // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // }.bind(this)); // }.bind(this)); // }.bind(this)); // } //}, //loadApplicationSelector1: function(){ // var nodes = this.propertyContent.getElements(".MWFApplicationSelect"); // if (nodes.length){ // this._getAppSelector(function(){ // nodes.each(function(node){ // var title = new Element("div", {"styles": this.view.css.applicationSelectTitle, "text": node.get("title")}).inject(node); // var content = new Element("div", {"styles": this.view.css.applicationSelectContent}).inject(node); // var action = new Element("div", {"styles": this.view.css.applicationSelectAction, "text": node.get("title")}).inject(node); // action.addEvent("click", function(e){ // this.appSelector.load(function(apps){ // if (!this.data.data.select) this.data.data.select = {"applicationRestrictList": [], "processRestrictList": []}; // this.data.data.select.applicationRestrictList = []; // content.empty(); // if (apps.length){ // apps.each(function(app){ // var o = { // "name": app.name, // "id": app.id, // "alias": app.alias // } // this.data.data.select.applicationRestrictList.push(o); // // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // // }.bind(this)); // } // }.bind(this)); // }.bind(this)); // if (!this.data.data.select) this.data.data.select = {"applicationRestrictList": [], "processRestrictList": []}; // this.data.data.select.applicationRestrictList.each(function(app){ // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // }.bind(this)); // // }.bind(this)); // }.bind(this)); // } //}, // //_getAppSelector: function(callback){ // if (!this.appSelector){ // MWF.xDesktop.requireApp("process.ProcessManager", "widget.ApplicationSelector", function(){ // this.appSelector = new MWF.xApplication.process.ProcessManager.widget.ApplicationSelector(this.view.designer, {"maskNode": this.view.designer.content}); // if (callback) callback(); // }.bind(this)); // }else{ // if (callback) callback(); // } //}, //this.initWhereEntryData(); //loadProcessSelector: function(){ // var nodes = this.propertyContent.getElements(".MWFApplicationSelect"); // if (nodes.length){ // MWF.xDesktop.requireApp("Organization", "Selector.package", function(){ // nodes.each(function(node){ // var title = new Element("div", {"styles": this.view.css.applicationSelectTitle, "text": node.get("title")}).inject(node); // var content = new Element("div", {"styles": this.view.css.applicationSelectContent}).inject(node); // var action = new Element("div", {"styles": this.view.css.applicationSelectAction, "text": node.get("title")}).inject(node); // action.addEvent("click", function(e){ // var values = []; // if (this.data.data.whereEntry){ // if (this.data.data.whereEntry.processList.length){ // this.data.data.whereEntry.processList.each(function(item){ // values.push(item.id); // }.bind(this)); // } // } // var options = { // "type": "process", // "count": 0, // "values": values, // "onComplete": function(items){ // this.initWhereEntryData(); // this.data.data.whereEntry.processList = []; // content.empty(); // items.each(function(item){ // this.data.data.whereEntry.processList.push({ // "id": item.data.id, // "name": item.data.name // }); // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": item.data.name // }).inject(content); // }.bind(this)); // }.bind(this) // }; // var selector = new MWF.OrgSelector(this.view.designer.content, options); // }.bind(this)); // // this.initWhereEntryData(); // this.data.data.whereEntry.processList.each(function(app){ // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // }.bind(this)); // }.bind(this)); // }.bind(this)); // } //} //loadProcessSelector1: function(){ // var nodes = this.propertyContent.getElements(".MWFProcessSelect"); // if (nodes.length){ // this._getProcessSelector(function(){ // nodes.each(function(node){ // var title = new Element("div", {"styles": this.view.css.applicationSelectTitle, "text": node.get("title")}).inject(node); // var content = new Element("div", {"styles": this.view.css.applicationSelectContent}).inject(node); // var action = new Element("div", {"styles": this.view.css.applicationSelectAction, "text": node.get("title")}).inject(node); // action.addEvent("click", function(e){ // var ids=[]; // this.data.data.select.applicationRestrictList.each(function(app){ // ids.push(app.id); // }); // this.processSelector.load(ids, function(apps){ // if (!this.data.data.select) this.data.data.select = {"applicationRestrictList": [], "processRestrictList": []}; // this.data.data.select.processRestrictList = []; // content.empty(); // if (apps.length){ // apps.each(function(app){ // var o = { // "name": app.name, // "id": app.id, // "alias": app.alias // } // this.data.data.select.processRestrictList.push(o); // // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // // }.bind(this)); // } // }.bind(this)); // }.bind(this)); // if (!this.data.data.select) this.data.data.select = {"applicationRestrictList": [], "processRestrictList": []}; // this.data.data.select.processRestrictList.each(function(app){ // new Element("div", { // "styles": this.view.css.applicationSelectItem, // "text": app.name // }).inject(content); // }.bind(this)); // // }.bind(this)); // }.bind(this)); // } //}, //_getProcessSelector: function(callback){ // if (!this.processSelector){ // MWF.xDesktop.requireApp("process.ProcessManager", "widget.ProcessSelector", function(){ // this.processSelector = new MWF.xApplication.process.ProcessManager.widget.ProcessSelector(this.view.designer, {"maskNode": this.view.designer.content}); // if (callback) callback(); // }.bind(this)); // }else{ // if (callback) callback(); // } //} }); MWF.xApplication.process.ViewDesigner.Property.Filter = new Class({ Implements: [Events], initialize: function(json, table, property){ this.property = property; this.module = property.module; this.table = table; this.data = json; this.load(); }, load: function(){ this.node = new Element("tr", {"styles": this.module.css.filterTableTd}).inject(this.table); var html = "" + ""+this.data.logic+"" + "列值" + ""+this.data.comparison+"" + ""+this.data.value+""; this.node.set("html", html); var tds = this.node.getElements("td"); this.delActionNode = new Element("div", {"styles": this.module.css.filterDelActionNode}).inject(tds[0]); this.delActionNode.addEvent("click", function(e){ this.delFilter(e); e.stopPropagation(); }.bind(this)); this.logicNode = tds[1]; this.comparisonNode = tds[3]; this.valueNode = tds[4]; this.node.addEvent("click", function(){ if (!this.isEditMode) this.editMode(); }.bind(this)); this.node.addEvent("blur", function(){ if (this.isEditMode) this.readMode(); }.bind(this)); }, delFilter: function(e){ var _self = this; this.property.designer.confirm("warn", e, MWF.APPVD.LP.notice.deleteFilterTitle, MWF.APPVD.LP.notice.deleteFilter, 300, 120, function(){ _self.node.destroy(); _self.property.data.filterList.erase(_self.data); MWF.release(_self); this.close(); }, function(){ this.close(); }, null); }, editMode: function(){ if (this.property.editModeFilter){ if (this.property.editModeFilter!=this) this.property.editModeFilter.readMode(); } var width = this.logicNode.getSize().x-9; this.logicNode.empty(); var logicSelect = new Element("select", {"styles": {"width": "90%"}}).inject(this.logicNode); var html = ""; if (this.data.logic=="and"){ html = ""; }else{ html = ""; } logicSelect.set("html", html); logicSelect.addEvent("change", function(){ this.data.logic = logicSelect.options[logicSelect.selectedIndex].value; }.bind(this)); width = this.comparisonNode.getSize().x-9; this.comparisonNode.empty(); var comparisonSelect = new Element("select", {"styles": {"width": "90%"}}).inject(this.comparisonNode); html = ""; switch (this.property.data.type){ case "text": html += "" + "" + ""; break; case "date": html += "" + "" + "" + ""; break; case "number": html += "" + "" + "" + "" + "" + ""; break; case "boolean": html += "" + ""; break; } comparisonSelect.set("html", html); comparisonSelect.addEvent("change", function(){ this.data.comparison = comparisonSelect.options[comparisonSelect.selectedIndex].value; }.bind(this)); width = this.valueNode.getSize().x-9; this.valueNode.empty(); var type = "text"; switch (this.property.data.type){ case "date": var valueInput = new Element("input", {"styles": {"width": "90%"}, "type": "text", "value": this.data.value }).inject(this.valueNode); MWF.require("MWF.widget.Calendar", function(){ this.calendar = new MWF.widget.Calendar(valueInput, { "style": "xform", "isTime": true, "secondEnable" : true, "target": this.property.designer.content, "format": "%Y-%m-%d %H:%M:%S" }); //this.calendar.show(); }.bind(this)); break; case "number": var valueInput = new Element("input", {"styles": {"width": "90%"}, "type": "number", "value": this.data.value }).inject(this.valueNode); break; case "boolean": var valueInput = new Element("select", {"styles": {"width": ""+width+"px"}, "html": "" }).inject(this.valueNode); break; default: var valueInput = new Element("input", {"styles": {"width": "90%"}, "type": "text", "value": this.data.value }).inject(this.valueNode); } if (valueInput.tagName.toLowerCase()=="select"){ valueInput.addEvent("change", function(){ var v = valueInput.options[valueInput.selectedIndex].value; this.data.value = (v="true") ? true : false; }.bind(this)); }else{ valueInput.addEvent("change", function(e){ this.data.value = valueInput.get("value"); }.bind(this)); valueInput.addEvent("blur", function(e){ this.data.value = valueInput.get("value"); }.bind(this)); valueInput.addEvent("keydown", function(e){ if (e.code==13){ this.data.value = valueInput.get("value"); this.readMode(); } e.stopPropagation(); }.bind(this)); } this.isEditMode = true; this.property.editModeFilter = this; }, readMode: function(){ if (this.isEditMode){ var logicSelect = this.logicNode.getElement("select"); this.data.logic = logicSelect.options[logicSelect.selectedIndex].value; var comparisonSelect = this.comparisonNode.getElement("select"); this.data.comparison = comparisonSelect.options[comparisonSelect.selectedIndex].value; var valueInput = this.valueNode.getFirst(); if (valueInput.tagName.toLowerCase()=="select"){ var v = valueInput.options[valueInput.selectedIndex].value; this.data.value = (v="true") ? true : false; }else{ this.data.value = valueInput.get("value"); } this.logicNode.empty(); this.comparisonNode.empty(); this.valueNode.empty(); this.logicNode.set("text", this.data.logic); this.comparisonNode.set("text", this.data.comparison); this.valueNode.set("text", this.data.value); this.isEditMode = false; this.property.editModeFilter = null; } } });