MWF.xDesktop.requireApp("process.Xform", "$Module", null, false); MWF.xApplication.process.Xform.DatagridPC = new Class({ Implements: [Events], Extends: MWF.APP$Module, isEdit: false, options: { "moduleEvents": ["completeLineEdit", "addLine", "deleteLine", "afterDeleteLine","editLine"] }, initialize: function(node, json, form, options){ this.node = $(node); this.node.store("module", this); this.json = json; this.form = form; this.field = true; }, _loadUserInterface: function(){ this.editModules = []; this.node.setStyle("overflow-x", "auto"); this.node.setStyle("overflow-y", "hidden"); this.table = this.node.getElement("table"); this.editable = (this.readonly) ? false : true; if (this.editable) this.editable = this.form.Macro.exec(this.json.editableScript.code, this); this.gridData = this._getValue(); this.totalModules = []; this._loadDatagridTitleModules(); if (this.editable!=false){ this._loadDatagridDataModules(); this._addTitleActionColumn(); this._loadEditDatagrid(); //this._loadReadDatagrid(); }else{ this._loadDatagridDataModules(); this._getDatagridEditorTr(); this._loadReadDatagrid(); } }, _loadStyles: function(){ this.table.setStyles(this.json.tableStyles); this.node.setStyles(this.json.styles); }, _getValue: function(){ var value = []; value = this._getBusinessData(); if (!value){ if (this.json.defaultData.code) value = this.form.Macro.exec(this.json.defaultData.code, this); value = {"data": value || []}; } return value || {}; }, _getDatagridTr: function(){ this._getDatagridTitleTr(); this._getDatagridEditorTr(); }, _getDatagridTitleTr: function(){ this.titleTr = this.table.getElement("tr"); return this.titleTr; }, _getDatagridEditorTr: function(){ var trs = this.table.getElements("tr"); this.editorTr = trs[trs.length-1]; this.editorTr.addClass("datagridEditorTr"); return this.editorTr; }, _addTitleActionColumn: function(){ if (!this.titleTr) this._getDatagridTitleTr(); if (!this.editorTr) this._getDatagridEditorTr(); var actionTh = new Element("th", {"styles": {"width": "46px"}}).inject(this.titleTr, "top"); new Element("th").inject(this.titleTr, "bottom"); this._createAddLineAction(actionTh); //this._createDelLineAction(actionTh); var actionEditTd = new Element("td").inject(this.editorTr, "top"); this._createCompleteAction(actionEditTd); new Element("td").inject(this.editorTr, "bottom"); //if (this.totalTr){ // new Element("td").inject(this.totalTr, "top"); // new Element("td").inject(this.totalTr, "bottom"); // this.totalModules.each(function(m){ // m.index = m.index+1; // }); //} }, _loadEditDatagrid: function(){ var titleThs = this.titleTr.getElements("th"); var editorTds = this.editorTr.getElements("td"); if (this.gridData.data){ this.gridData.data.each(function(data, idx){ var tr = $(this.table.insertRow(idx+1)); tr.store("data", data); titleThs.each(function(th, index){ var cellData = data[th.get("id")]; var text = ""; for (key in cellData){ var value = cellData[key]; text = this._getValueText(index-1, value); break; } this._createNewEditTd(tr, index, editorTds[index].get("id"), text, titleThs.length-1); }.bind(this)); }.bind(this)); } this.editorTr.setStyle("display", "none"); }, _getValueText: function(idx, value){ var module = this.editModules[idx]; if (module){ switch (module.json.type){ case "Select": for (var i=0; i1) ? arr[1] : arr[0]; if (value===v) return text; } // var ops = module.node.getElements("option"); // for (var i=0; i2){ this.table.rows[1].destroy(); } if (this.editable!=false){ this._loadEditDatagrid(); //this._loadReadDatagrid(); }else{ this._loadReadDatagrid(); } this._loadDatagridStyle(); } }, getTotal: function(){ this._loadTotal(); return this.totalResaults; }, getData: function(){ if (this.editable!=false){ if (this.isEdit) this._completeLineEdit(); var data = []; var trs = this.table.getElements("tr"); for (var i=1; idata.value){ this.notValidationMode(data.prompt); return false; } break; case "lt": if (v