Datatable.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
  2. MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Container", null, false);
  3. MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Component", null, false);
  4. MWF.xDesktop.requireApp("process.FormDesigner", "Module.Datatable$Data", null, false);
  5. MWF.xDesktop.requireApp("process.FormDesigner", "Module.Datatable$Title", null, false);
  6. MWF.xDesktop.requireApp("process.FormDesigner", "Module.Table$Td", null, false);
  7. MWF.xApplication.process.FormDesigner.Module.Datatable = MWF.FCDatatable = new Class({
  8. Extends: MWF.FC$Component,
  9. Implements: [Options, Events],
  10. options: {
  11. "style": "default",
  12. "propertyPath": "../x_component_process_FormDesigner/Module/Datatable/datatable.html"
  13. },
  14. initialize: function(form, options){
  15. this.setOptions(options);
  16. this.path = "../x_component_process_FormDesigner/Module/Datatable/";
  17. this.cssPath = "../x_component_process_FormDesigner/Module/Datatable/"+this.options.style+"/css.wcss";
  18. this._loadCss();
  19. this.moduleType = "component";
  20. this.moduleName = "datatable";
  21. this.form = form;
  22. this.container = null;
  23. this.containerNode = null;
  24. this.containers = [];
  25. this.elements = [];
  26. this.selectedMultiTds = [];
  27. },
  28. clearTemplateStyles: function(styles){
  29. if (styles){
  30. if (styles.styles) this.removeStyles(styles.styles, "styles");
  31. if (styles.tableStyles) this.removeStyles(styles.tableStyles, "tableStyles");
  32. if (styles.titleStyles) this.removeStyles(styles.titleStyles, "titleStyles");
  33. if (styles.contentStyles) this.removeStyles(styles.contentStyles, "contentStyles");
  34. if (styles.actionStyles) this.removeStyles(styles.actionStyles, "actionStyles");
  35. if (styles.editStyles) this.removeStyles(styles.editStyles, "editStyles");
  36. if (styles.amountStyles) this.removeStyles(styles.amountStyles, "amountStyles");
  37. if (styles.sectionAmountStyles) this.removeStyles(styles.sectionAmountStyles, "sectionAmountStyles");
  38. if (styles.itemTitleStyles) this.removeStyles(styles.itemTitleStyles, "itemTitleStyles");
  39. if (styles.properties) this.removeStyles(styles.properties, "properties");
  40. if (styles.importActionStyles) this.removeStyles(styles.importActionStyles, "importActionStyles");
  41. if (styles.exportActionStyles) this.removeStyles(styles.exportActionStyles, "exportActionStyles");
  42. if (styles.sectionKeyStyles) this.removeStyles(styles.sectionKeyStyles, "sectionKeyStyles");
  43. if (styles.sectionKeyStyles) this.removeStyles(styles.sectionKeyStyles, "sectionByStyles");
  44. }
  45. },
  46. setTemplateStyles: function(styles){
  47. if (styles.styles) this.copyStyles(styles.styles, "styles");
  48. if (styles.tableStyles) this.copyStyles(styles.tableStyles, "tableStyles");
  49. if (styles.titleStyles) this.copyStyles(styles.titleStyles, "titleStyles");
  50. if (styles.contentStyles) this.copyStyles(styles.contentStyles, "contentStyles");
  51. if (styles.actionStyles) this.copyStyles(styles.actionStyles, "actionStyles");
  52. if (styles.editStyles) this.copyStyles(styles.editStyles, "editStyles");
  53. if (styles.amountStyles) this.copyStyles(styles.amountStyles, "amountStyles");
  54. if (styles.sectionAmountStyles) this.copyStyles(styles.sectionAmountStyles, "sectionAmountStyles");
  55. if (styles.itemTitleStyles) this.copyStyles(styles.itemTitleStyles, "itemTitleStyles");
  56. if (styles.properties) this.copyStyles(styles.properties, "properties");
  57. if (styles.importActionStyles) this.copyStyles(styles.importActionStyles, "importActionStyles");
  58. if (styles.exportActionStyles) this.copyStyles(styles.exportActionStyles, "exportActionStyles");
  59. if (styles.sectionKeyStyles) this.copyStyles(styles.sectionKeyStyles, "sectionKeyStyles");
  60. if (styles.sectionKeyStyles) this.copyStyles(styles.sectionKeyStyles, "sectionByStyles");
  61. },
  62. setImpExpTableStyles: function(){
  63. //设置导入导出表格样式
  64. if(this.form.templateStyles && this.form.templateStyles.table){
  65. this.json.impExpTableStyles = Object.merge(this.json.impExpTableStyles||{}, this.form.templateStyles.table.styles||{});
  66. this.json.impExpTableTitleStyles = Object.merge(this.json.impExpTableTitleStyles||{}, this.form.templateStyles.table.titleStyles||{});
  67. this.json.impExpTableContentStyles = Object.merge(this.json.impExpTableContentStyles||{}, this.form.templateStyles.table.contentStyles||{});
  68. this.json.impExpTableProperties = Object.merge(this.json.impExpTableProperties||{}, this.form.templateStyles.table.properties||{});
  69. }
  70. },
  71. _createMoveNode: function(){
  72. var tableHTML = "<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"100%\" align=\"center\">";
  73. tableHTML += "<tr><th></th><th></th><th></th></tr>";
  74. tableHTML += "<tr><td></td><td></td><td></td></tr>";
  75. tableHTML += "</table>";
  76. this.moveNode = new Element("div", {
  77. "html": tableHTML
  78. }).inject(this.form.container);
  79. // this.moveNode = divNode.getFirst();
  80. // this.moveNode.inject(divNode, "after");
  81. // divNode.destroy();
  82. this.moveNode.setStyles(this.css.moduleNodeMove);
  83. this._setTableStyle();
  84. },
  85. _setTableStyle: function(){
  86. var tds = this.moveNode.getElements("td");
  87. tds.setStyles({
  88. "border": "1px dashed #999",
  89. "height": "20px"
  90. });
  91. var tds = this.moveNode.getElements("th");
  92. tds.setStyles({
  93. "background": "#C3CEEA",
  94. "border": "1px dashed #999",
  95. "height": "20px"
  96. });
  97. },
  98. _getContainers: function(){
  99. var tds = this.node.getElements("td");
  100. this.form.getTemplateData("Datatable$Data", function(data){
  101. tds.each(function(td){
  102. var json = this.form.getDomjson(td);
  103. var tdContainer = null;
  104. if (!json){
  105. var moduleData = Object.clone(data);
  106. tdContainer = new MWF.FCDatatable$Data(this.form);
  107. tdContainer.load(moduleData, td, this);
  108. }else{
  109. var moduleData = Object.clone(data);
  110. Object.merge(moduleData, json);
  111. Object.merge(json, moduleData);
  112. tdContainer = new MWF.FCDatatable$Data(this.form);
  113. tdContainer.load(json, td, this);
  114. }
  115. this.containers.push(tdContainer);
  116. }.bind(this));
  117. }.bind(this), false);
  118. },
  119. _getElements: function(){
  120. //this.elements.push(this);
  121. var ths = this.node.getElements("th");
  122. this.form.getTemplateData("Datatable$Title", function(data){
  123. ths.each(function(th){
  124. var json = this.form.getDomjson(th);
  125. var thElement = null;
  126. if (!json){
  127. var moduleData = Object.clone(data);
  128. thElement = new MWF.FCDatatable$Title(this.form);
  129. thElement.load(moduleData, th, this);
  130. }else{
  131. var moduleData = Object.clone(data);
  132. Object.merge(moduleData, json);
  133. Object.merge(json, moduleData);
  134. thElement = new MWF.FCDatatable$Title(this.form);
  135. thElement.load(json, th, this);
  136. }
  137. this.elements.push(thElement);
  138. }.bind(this));
  139. }.bind(this), false);
  140. },
  141. // _getDroppableNodes: function(){
  142. // var nodes = [this.form.node].concat(this.form.moduleElementNodeList, this.form.moduleContainerNodeList, this.form.moduleComponentNodeList);
  143. // this.form.moduleList.each( function(module){
  144. // //数据网格不能往数据模板里拖
  145. // if( module.moduleName === "datatemplate" ){
  146. // var subDoms = this.form.getModuleNodes(module.node);
  147. // nodes.erase( module.node );
  148. // subDoms.each(function (dom) {
  149. // nodes.erase( dom );
  150. // })
  151. // }
  152. // }.bind(this));
  153. // return nodes;
  154. // },
  155. _createNode: function(callback){
  156. var module = this;
  157. var url = this.path+"datatableCreate.html";
  158. MWF.require("MWF.widget.Dialog", function(){
  159. var size = $(document.body).getSize();
  160. var x = size.x/2-180;
  161. var y = size.y/2-130;
  162. var dlg = new MWF.DL({
  163. "title": "Create Datatable",
  164. "style": "property",
  165. "top": y,
  166. "left": x-40,
  167. "fromTop":size.y/2-65,
  168. "fromLeft": size.x/2,
  169. "width": 360,
  170. "height": 260,
  171. "url": url,
  172. "lp": MWF.xApplication.process.FormDesigner.LP.propertyTemplate,
  173. "buttonList": [
  174. {
  175. "text": MWF.APPFD.LP.button.ok,
  176. "action": function(){
  177. module._createTableNode();
  178. callback();
  179. this.close();
  180. }
  181. }
  182. ]
  183. });
  184. dlg.show();
  185. }.bind(this));
  186. },
  187. _createTableNode: function(){
  188. var cols = $("MWFNewTableColumn").get("value");
  189. var width = $("MWFNewTableWidth").get("value");
  190. var widthUnitNode = $("MWFNewTableWidthUnit");
  191. var widthUnit = widthUnitNode.options[widthUnitNode.selectedIndex].value;
  192. var border = $("MWFNewTableBorder").get("value");
  193. var cellpadding = $("MWFNewTableCellpadding").get("value");
  194. var cellspacing = $("MWFNewTableCellspacing").get("value");
  195. var w = "";
  196. if (widthUnit=="percent"){
  197. w = width+"%";
  198. }else{
  199. w = width+"px";
  200. }
  201. this.json.properties.width = w;
  202. this.json.properties.border = border;
  203. this.json.properties.cellpadding = cellpadding;
  204. this.json.properties.cellspacing = cellspacing;
  205. var tableHTML = "<table border=\""+border+"\" cellpadding=\""+cellpadding+"\" cellspacing=\""+cellspacing+"\" width=\""+w+"\" align=\"center\">";
  206. tableHTML += "<tr>";
  207. for (var j=0; j<cols.toInt(); j++){
  208. tableHTML += "<th></th>";
  209. }
  210. tableHTML += "</tr>";
  211. tableHTML += "<tr>";
  212. for (var j=0; j<cols.toInt(); j++){
  213. tableHTML += "<td></td>";
  214. }
  215. tableHTML += "</tr></table>";
  216. this.node = new Element("div", {
  217. "id": this.json.id,
  218. "MWFType": "datatable",
  219. "html": tableHTML,
  220. "styles": this.css.moduleNode,
  221. "events": {
  222. "selectstart": function(e){
  223. e.preventDefault();
  224. }
  225. }
  226. }).inject(this.form.node);
  227. this.table = this.node.getElement("table");
  228. },
  229. _dragComplete: function(){
  230. if (!this.node){
  231. this._createNode(function(){
  232. this._dragMoveComplete();
  233. }.bind(this));
  234. }else{
  235. this._dragMoveComplete();
  236. }
  237. },
  238. _dragMoveComplete: function(){
  239. this._resetTreeNode();
  240. this.node.inject(this.copyNode, "before");
  241. this._initModule();
  242. var thisDisplay = this.node.retrieve("thisDisplay");
  243. if (thisDisplay){
  244. this.node.setStyle("display", thisDisplay);
  245. }
  246. if (this.copyNode) this.copyNode.destroy();
  247. if (this.moveNode) this.moveNode.destroy();
  248. this.moveNode = null;
  249. this.copyNode = null;
  250. this.nextModule = null;
  251. this.form.moveModule = null;
  252. this.form.json.moduleList[this.json.id] = this.json;
  253. this.selected();
  254. if( this.operation && !this.historyAddDelay ){
  255. this.addHistoryLog( this.operation, null, this.fromLog );
  256. }
  257. if( !this.historyAddDelay ){
  258. this.operation = null;
  259. this.fromLog = null;
  260. }
  261. },
  262. _initModule: function(){
  263. if (!this.initialized){
  264. if (this.json.initialized!=="yes")this.setStyleTemplate();
  265. this.table = this.node.getElement("table");
  266. this._getElements();
  267. this._getContainers();
  268. this.setPropertiesOrStyles("styles");
  269. this.setPropertiesOrStyles("tableStyles");
  270. this.setPropertiesOrStyles("properties");
  271. if( !this.json.impExpTableStyles ){
  272. this.setImpExpTableStyles()
  273. }
  274. this._setNodeProperty();
  275. if (!this.form.isSubform) this._createIconAction();
  276. // this.checkSequenceShow();
  277. this._setNodeEvent();
  278. this.setDatatableStyles();
  279. this._setEditStyle_custom("impexpType");
  280. this.initialized = true;
  281. this.json.initialized = "yes";
  282. }
  283. },
  284. setPropertiesOrStyles: function(name){
  285. if (name=="styles"){
  286. try{
  287. this.setCustomStyles();
  288. }catch(e){}
  289. var border = this.node.getStyle("border");
  290. this.node.clearStyles();
  291. this.node.setStyles(this.css.moduleNode);
  292. this.node.setStyle("border", border);
  293. Object.each(this.json.styles, function(value, key){
  294. var reg = /^border\w*/ig;
  295. if (!key.test(reg)){
  296. this.node.setStyle(key, value);
  297. }
  298. }.bind(this));
  299. }
  300. if (name=="tableStyles"){
  301. this.table.clearStyles();
  302. Object.each(this.json.tableStyles, function(value, key){
  303. var reg = /^border\w*/ig;
  304. if (!key.test(reg)){
  305. this.table.setStyle(key, value);
  306. }
  307. }.bind(this));
  308. }
  309. if (name=="properties"){
  310. try{
  311. this.setCustomProperties();
  312. }catch(e){}
  313. var table = this.node.getElement("table");
  314. if(table)table.setProperties(this.json.properties);
  315. }
  316. },
  317. _setEditStyle_custom: function(name, obj, oldValue){
  318. if (name=="id"){
  319. if (oldValue && this.json.id!=oldValue){
  320. var reg = new RegExp("^"+oldValue, "i");
  321. this.containers.each(function(container){
  322. var id = container.json.id;
  323. var newId = id.replace(reg, this.json.id);
  324. container.json.id = newId;
  325. delete this.form.json.moduleList[id];
  326. this.form.json.moduleList[newId] = container.json;
  327. container._setEditStyle("id");
  328. if(container.property && container.property.propertyContent){
  329. var pid = container.property.data.pid;
  330. var input = container.property.propertyContent.getElement("input[name='"+pid+"id']");
  331. if(input)input.set("value", newId);
  332. }
  333. }.bind(this));
  334. this.elements.each(function(container){
  335. var id = container.json.id;
  336. var newId = id.replace(reg, this.json.id);
  337. container.json.id = newId;
  338. delete this.form.json.moduleList[id];
  339. this.form.json.moduleList[newId] = container.json;
  340. container._setEditStyle("id");
  341. if(container.property && container.property.propertyContent){
  342. var pid = container.property.data.pid;
  343. var input = container.property.propertyContent.getElement("input[name='"+pid+"id']");
  344. if(input)input.set("value", newId);
  345. }
  346. }.bind(this));
  347. }
  348. }
  349. if (name=="titleStyles"){
  350. var ths = this.table.getElements("th");
  351. ths.each(function(th){
  352. var opacity = th.getStyle("opacity");
  353. this.setCustomNodeStyles(th, this.json.titleStyles);
  354. if(opacity)th.setStyle("opacity", opacity);
  355. }.bind(this));
  356. }
  357. if (name=="contentStyles"){
  358. var tds = this.table.getElements("td");
  359. tds.each(function(td){
  360. var opacity = td.getStyle("opacity");
  361. this.setCustomNodeStyles(td, this.json.contentStyles);
  362. if(opacity)td.setStyle("opacity", opacity);
  363. }.bind(this));
  364. }
  365. var setImportExportAreaNodeWidth = function () {
  366. if( ["centerTop","centerBottom"].contains( this.json.impexpPosition ) ){
  367. var width = 2;
  368. if( this.exportActionNode ){
  369. width = width + this.exportActionNode.getSize().x +
  370. this.exportActionNode.getStyle("padding-left").toFloat() +
  371. + this.exportActionNode.getStyle("padding-right").toFloat() +
  372. + this.exportActionNode.getStyle("margin-left").toFloat() +
  373. + this.exportActionNode.getStyle("margin-right").toFloat()
  374. }
  375. if( this.importActionNode ){
  376. width = width + this.importActionNode.getSize().x +
  377. this.importActionNode.getStyle("padding-left").toFloat() +
  378. + this.importActionNode.getStyle("padding-right").toFloat() +
  379. + this.importActionNode.getStyle("margin-left").toFloat() +
  380. + this.importActionNode.getStyle("margin-right").toFloat()
  381. }
  382. this.importExportAreaNode.setStyle( "width", width+"px" );
  383. }else{
  384. this.importExportAreaNode.setStyle( "width", "auto" );
  385. }
  386. }.bind(this);
  387. if( name === "impexpType" ){
  388. //允许导入
  389. var importenable = this.json.impexpType === "impexp" || this.json.impexpType === "imp";
  390. //允许导出
  391. var exportenable = this.json.impexpType === "impexp" || this.json.impexpType === "exp";
  392. if( this.impexpNode )this.impexpNode.destroy();
  393. this.impexpNode = null;
  394. this.impexpNode = this.node.getElement("div.impexpNode");
  395. if( this.impexpNode )this.impexpNode.destroy();
  396. this.impexpNode = null;
  397. if( !exportenable && !importenable ){
  398. return;
  399. }
  400. var position = ["leftTop","centerTop","rightTop"].contains( this.json.impexpPosition || "" ) ? "top" : "bottom";
  401. this.impexpNode = new Element("div.impexpNode", { styles : { "width" : "100%", "overflow" : "hidden" } }).inject(this.node, position);
  402. var importExportAreaNode = new Element("div.importExportAreaNode").inject( this.impexpNode );
  403. if( ["leftTop","leftBottom"].contains( this.json.impexpPosition || "" ) ){
  404. importExportAreaNode.setStyles({ "float" : "left", "margin" : "0px" })
  405. }else if( ["rightTop","rightBottom"].contains( this.json.impexpPosition || "" ) ){
  406. importExportAreaNode.setStyles({ "float" : "right", "margin" : "0px" })
  407. }else{
  408. importExportAreaNode.setStyles({ "float" : "none", "margin" : "0px auto" })
  409. }
  410. this.importExportAreaNode = importExportAreaNode;
  411. var styles;
  412. var width = 0;
  413. if( exportenable ){
  414. var exportActionNode = new Element("div.exportActionStyles", { text : this.json.exportActionText }).inject( importExportAreaNode );
  415. if( this.json.exportActionStyles ){
  416. styles = Object.clone(this.json.exportActionStyles)
  417. }else{
  418. styles = {
  419. "color" : "#777",
  420. "border-radius": "5px",
  421. "border": "1px solid #ccc",
  422. "cursor": "pointer",
  423. "height": "26px",
  424. "float" : "left",
  425. "line-height": "26px",
  426. "padding": "0px 5px",
  427. "background-color": "#efefef",
  428. "margin" : "5px"
  429. }
  430. }
  431. exportActionNode.setStyles(styles);
  432. this.exportActionNode = exportActionNode;
  433. }
  434. if( importenable ){
  435. var importActionNode = new Element("div.importActionNode", { text : this.json.importActionText }).inject( importExportAreaNode );
  436. if( this.json.importActionStyles ){
  437. styles = Object.clone(this.json.importActionStyles);
  438. }else{
  439. styles = {
  440. "color" : "#777",
  441. "border-radius": "5px",
  442. "border": "1px solid #ccc",
  443. "cursor": "pointer",
  444. "height": "26px",
  445. "float" : "left",
  446. "line-height": "26px",
  447. "padding": "0px 5px",
  448. "background-color": "#efefef",
  449. "margin" : "5px"
  450. }
  451. }
  452. importActionNode.setStyles(styles);
  453. this.importActionNode = importActionNode;
  454. }
  455. setImportExportAreaNodeWidth();
  456. }
  457. if( name === "impexpPosition" && this.impexpNode && this.importExportAreaNode ){
  458. var position = ["leftTop","centerTop","rightTop"].contains( this.json.impexpPosition || "" ) ? "top" : "bottom";
  459. this.impexpNode.inject(this.node, position);
  460. var importExportAreaNode = this.importExportAreaNode;
  461. if( ["leftTop","leftBottom"].contains( this.json.impexpPosition || "" ) ){
  462. importExportAreaNode.setStyles({ "float" : "left", "margin" : "0px" })
  463. }else if( ["rightTop","rightBottom"].contains( this.json.impexpPosition || "" ) ){
  464. importExportAreaNode.setStyles({ "float" : "right", "margin" : "0px" })
  465. }else{
  466. importExportAreaNode.setStyles({ "float" : "none", "margin" : "0px auto" })
  467. }
  468. setImportExportAreaNodeWidth();
  469. }
  470. if( name === "importActionText" && this.importActionNode ){
  471. this.importActionNode.set("text", this.json.importActionText );
  472. setImportExportAreaNodeWidth();
  473. }
  474. if( name === "exportActionText" && this.exportActionNode ){
  475. this.exportActionNode.set("text", this.json.exportActionText );
  476. setImportExportAreaNodeWidth();
  477. }
  478. if( name === "importActionStyles" && this.importActionNode ){
  479. this.importActionNode.setStyles( this.json.importActionStyles || {} );
  480. setImportExportAreaNodeWidth();
  481. }
  482. if( name === "exportActionStyles" && this.exportActionNode ){
  483. this.exportActionNode.setStyles( this.json.exportActionStyles || {} );
  484. setImportExportAreaNodeWidth();
  485. }
  486. //if (name=="sequence") this.checkSequenceShow();
  487. },
  488. setDatatableStyles: function(){
  489. if (this.json.titleStyles){
  490. var ths = this.table.getElements("th");
  491. ths.each(function(th){
  492. var opacity = th.getStyle("opacity");
  493. this.setCustomNodeStyles(th, this.json.titleStyles);
  494. if(opacity)th.setStyle("opacity", opacity);
  495. }.bind(this));
  496. }
  497. if (this.json.contentStyles){
  498. var tds = this.table.getElements("td");
  499. tds.each(function(td){
  500. var opacity = td.getStyle("opacity");
  501. this.setCustomNodeStyles(td, this.json.contentStyles);
  502. if(opacity)td.setStyle("opacity", opacity);
  503. }.bind(this));
  504. }
  505. },
  506. setAllStyles: function(){
  507. this.setPropertiesOrStyles("styles");
  508. this.setPropertiesOrStyles("tableStyles");
  509. this.setPropertiesOrStyles("properties");
  510. this.setDatatableStyles();
  511. this.setImpExpTableStyles();
  512. this.reloadMaplist();
  513. },
  514. //checkSequenceShow: function(){
  515. // if (this.json.sequence=="yes"){
  516. // if (!this.sequenceTitleTd || !this.sequenceTd){
  517. // if (this.sequenceTitleTd){
  518. // this.sequenceTitleTd.destroy();
  519. // this.sequenceTitleTd = null;
  520. // }
  521. // if (this.sequenceTd){
  522. // this.sequenceTd.destroy();
  523. // this.sequenceTd = null;
  524. // }
  525. // var trs = this.node.getElements("tr");
  526. // if (trs[0]){
  527. // this.sequenceTitleTd = new Element("th", {"styles": this.css.sequenceTitleTd}).inject(trs[0], "top");
  528. // }
  529. // if (trs[1]){
  530. // this.sequenceTd = new Element("td", {"styles": this.css.sequenceTd, "text": "1"}).inject(trs[1], "top");
  531. // }
  532. // }
  533. // }else{
  534. // if (this.sequenceTitleTd){
  535. // this.sequenceTitleTd.destroy();
  536. // this.sequenceTitleTd = null;
  537. // }
  538. // if (this.sequenceTd){
  539. // this.sequenceTd.destroy();
  540. // this.sequenceTd = null;
  541. // }
  542. // }
  543. //},
  544. getContainerNodes: function(){
  545. return this.node.getElements("td");
  546. },
  547. copyComponentJsonData: function(newNode, pid){
  548. var tds = newNode.getElements("td");
  549. var ths = newNode.getElements("th");
  550. tds.each(function(td, idx){
  551. var newContainerJson = Object.clone(this.containers[idx].json);
  552. newContainerJson.id = this.containers[idx]._getNewId(pid);
  553. this.form.json.moduleList[newContainerJson.id] = newContainerJson;
  554. td.set("id", newContainerJson.id);
  555. }.bind(this));
  556. ths.each(function(th, idx){
  557. var newElementJson = Object.clone(this.elements[idx].json);
  558. newElementJson.id = this.elements[idx]._getNewId(pid);
  559. this.form.json.moduleList[newElementJson.id] = newElementJson;
  560. th.set("id", newElementJson.id);
  561. }.bind(this));
  562. },
  563. loadExistedNodeTh: function (cell, moduleData) {
  564. var thElement = new MWF.FCDatatable$Title(this.form);
  565. thElement.load(moduleData, cell, this);
  566. this.elements.push(thElement);
  567. },
  568. loadExistedNodeTd: function (cell, moduleData) {
  569. var tdContainer = new MWF.FCDatatable$Data(this.form);
  570. tdContainer.load(moduleData, cell, this);
  571. this.containers.push(tdContainer);
  572. },
  573. deleteThWithNode: function (cell) {
  574. var module = cell.retrieve("module");
  575. if (module){
  576. this.elements.erase(module);
  577. module.destroy();
  578. }
  579. },
  580. deleteTdWithNode: function (cell) {
  581. var module = cell.retrieve("module");
  582. if (module){
  583. this.containers.erase(module);
  584. module.destroy();
  585. }
  586. }
  587. });