'use strict' let bandTreeOprObj = { treeObj : null, currentNode: null, innerCounter: 1, canTrickEvent: false, iniTree: function(rptTpl) { var me = this; let bandList = rptTpl[JV.NODE_BAND_COLLECTION]; me.buildTreeData(bandList); me.treeObj = $.fn.zTree.init($("#band_tree_reversed"), bandSetting, bandList); me.treeObj.expandAll(true); }, copyBandList: function (isAllParent) { let me = this, rst = null; if (me.treeObj) { rst = []; let nodes = me.treeObj.getNodes(); let private_copy_nodes = function (parentNode, item) { item[JV.PROP_ID] = parentNode[JV.PROP_ID]; item[JV.BAND_PROP_NAME] = parentNode[JV.BAND_PROP_NAME]; item[JV.BAND_PROP_STYLE] = parentNode[JV.BAND_PROP_STYLE]; item[JV.BAND_PROP_CONTROL] = parentNode[JV.BAND_PROP_CONTROL]; if (parentNode[JV.BAND_PROP_HEIGHT]) item[JV.BAND_PROP_HEIGHT] = parentNode[JV.BAND_PROP_HEIGHT]; if (parentNode[JV.BAND_PROP_WIDTH]) item[JV.BAND_PROP_WIDTH] = parentNode[JV.BAND_PROP_WIDTH]; item[JV.BAND_PROP_DISPLAY_TYPE] = parentNode[JV.BAND_PROP_DISPLAY_TYPE]; item[JV.BAND_PROP_ALIGNMENT] = parentNode[JV.BAND_PROP_ALIGNMENT]; item[JV.BAND_PROP_MERGE_BORDER] = parentNode[JV.BAND_PROP_MERGE_BORDER]; if (isAllParent) item.isParent = true; if (parentNode[JV.BAND_PROP_SUB_BANDS]) { item.items = []; for (let subNode of parentNode[JV.BAND_PROP_SUB_BANDS]) { let subItem = {}; private_copy_nodes(subNode, subItem); item.items.push(subItem); } } } for (let node of nodes) { let item = {}; if (isAllParent) item.isParent = true; private_copy_nodes(node, item); rst.push(item); } } else { console.log("the band tree is not ready!"); } return rst; }, buildTreeData: function(bandList){ let rst = [], startIdx = 1; //zTreeHelper.createTree(result, setting, "rptTplTree", me); let private_setBandId = function (parentBand) { if (parentBand[JV.BAND_PROP_SUB_BANDS]) { for (let band of parentBand[JV.BAND_PROP_SUB_BANDS]) { band.ID = startIdx; band.ParentID = parentBand.ID; startIdx++; private_setBandId(band); } } } for (let band of bandList) { band.ID = startIdx; band.ParentID = -1; startIdx++; private_setBandId(band); } return rst; }, createBandFromNode: function(node) { let me = this, rst = {}; rst[JV.BAND_PROP_ALIGNMENT] = node[JV.BAND_PROP_ALIGNMENT]; rst[JV.BAND_PROP_DISPLAY_TYPE] = node[JV.BAND_PROP_DISPLAY_TYPE]; let posIdx = JV.LAYOUT.indexOf(node[JV.BAND_PROP_ALIGNMENT]) switch(posIdx) { case 0: case 1: rst[JV.BAND_PROP_HEIGHT] = node[JV.BAND_PROP_HEIGHT]; break; case 2: case 3: rst[JV.BAND_PROP_WIDTH] = node[JV.BAND_PROP_WIDTH]; break; } rst[JV.PROP_NAME] = node[JV.PROP_NAME]; rst[JV.PROP_CONTROL] = node[JV.PROP_CONTROL]; rst[JV.PROP_STYLE] = node[JV.PROP_STYLE]; if (node[JV.BAND_PROP_MERGE_BORDER] !== undefined) { rst[JV.BAND_PROP_MERGE_BORDER] = node[JV.BAND_PROP_MERGE_BORDER]; } else { rst[JV.BAND_PROP_MERGE_BORDER] = 'F'; } if (node[JV.BAND_PROP_SUB_BANDS]) { rst[JV.BAND_PROP_SUB_BANDS] = []; for (let subNode of node[JV.BAND_PROP_SUB_BANDS]) { rst[JV.BAND_PROP_SUB_BANDS].push(me.createBandFromNode(subNode)); } } return rst; }, createDftBand: function () { let me = this, rst = {}; rst[JV.BAND_PROP_ALIGNMENT] = 'Top'; rst[JV.BAND_PROP_DISPLAY_TYPE] = 'EveryPage'; rst[JV.BAND_PROP_HEIGHT] = '3'; rst[JV.PROP_NAME] = 'newBand_' + me.innerCounter; me.innerCounter++; rst[JV.PROP_CONTROL] = 'Default'; rst[JV.PROP_STYLE] = 'Default_None'; rst[JV.BAND_PROP_MERGE_BORDER] = 'F'; return rst; }, addRootBand: function (rptTpl) { let me = this; if (rptTpl) { let newBand = me.createDftBand(); let newNodes = [], isSilent = false; newNodes.push(newBand); if (me.treeObj) { me.treeObj.addNodes(null, -1, newNodes, isSilent); } else { me.treeObj = $.fn.zTree.init($("#band_tree_reversed"), bandSetting, newNodes); } } }, addSubBand: function (rptTpl) { let me = this; if (rptTpl && me.currentNode != null) { let newBand = me.createDftBand(); let newNodes = [], isSilent = false; newNodes.push(newBand); me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent); } }, moveDownBand: function (rptTpl) { let me = bandTreeOprObj; if (rptTpl && me.currentNode && me.currentNode.getNextNode()) { let nextNode = me.currentNode.getNextNode(); me.treeObj.moveNode(nextNode, me.currentNode, "next", true); } }, moveUpBand: function (rptTpl) { let me = bandTreeOprObj; if (rptTpl && me.currentNode && me.currentNode.getPreNode()) { let preNode = me.currentNode.getPreNode(); me.treeObj.moveNode(preNode, me.currentNode, "prev", true); } }, onClick: function(event,treeId,treeNode) { let me = bandTreeOprObj; me.currentNode = treeNode; me.canTrickEvent = false; //then refresh the band tab properties //边框样式borderStyles $("#borderStyles").get(0).selectedIndex = rpt_tpl_cfg_helper.reportCfg.borderArr.indexOf(treeNode[JV.PROP_STYLE]); //边框合并 $("#mergeBandBorder").get(0).checked = stringUtil.convertStrToBoolean(treeNode[JV.BAND_PROP_MERGE_BORDER]); //位置 let posIdx = JV.LAYOUT.indexOf(treeNode[JV.BAND_PROP_ALIGNMENT]) $("#bandAlignment").get(0).selectedIndex = posIdx; //高与宽 me.setupWidthHeightByPosition(posIdx); //频率 $("#pageFrequency").get(0).selectedIndex = JV.PAGE_STATUS.indexOf(treeNode[JV.BAND_PROP_DISPLAY_TYPE]) // me.canTrickEvent = true; }, onBeforeRemove: function(treeId, treeNode){ let rst = true; if (treeNode.band_s && treeNode.band_s.length > 0) { rst = false; } else { rst = confirm("在删除前请确认报表模板内部没有引用,否则会造成混淆。"); } return rst; }, setupWidthHeightByPosition: function (posIdx) { let me = this, treeNode = me.currentNode; switch(posIdx) { case 0: case 1: $("#bandHeight").get(0).disabled = false; $("#bandHeight").get(0).value = treeNode[JV.BAND_PROP_HEIGHT]; $("#bandWidth").get(0).disabled = true; $("#bandWidth").get(0).value = ""; break; case 2: case 3: $("#bandHeight").get(0).disabled = true; $("#bandHeight").get(0).value = ""; $("#bandWidth").get(0).disabled = false; $("#bandWidth").get(0).value = treeNode[JV.BAND_PROP_WIDTH]; break; default: $("#bandHeight").get(0).disabled = true; $("#bandHeight").get(0).value = ""; $("#bandWidth").get(0).disabled = true; $("#bandWidth").get(0).value = ""; break; } }, bandStyleChange: function (dom) { let me = this; if (me.currentNode) { me.currentNode[JV.PROP_STYLE] = rpt_tpl_cfg_helper.reportCfg.borderArr[dom.selectedIndex]; } }, bandAlignmentChange: function (dom) { let me = this; if (me.currentNode) { let posIdx = dom.selectedIndex; me.currentNode[JV.BAND_PROP_ALIGNMENT] = JV.LAYOUT[posIdx]; me.setupWidthHeightByPosition(posIdx); } }, bandHeightWidthChange: function (dom) { let me = this, treeNode = me.currentNode; if (me.currentNode) { let posIdx = $("#bandAlignment").get(0).selectedIndex; switch(posIdx) { case 0: case 1: treeNode[JV.BAND_PROP_HEIGHT] = dom.value; break; case 2: case 3: treeNode[JV.BAND_PROP_WIDTH] = dom.value; break; } } }, bandShowFrequencyChange: function (dom) { let me = this; if (me.currentNode) { me.currentNode[JV.BAND_PROP_DISPLAY_TYPE] = JV.PAGE_STATUS[dom.selectedIndex]; } }, bandBorderMergeChange: function (dom) { let me = this; if (me.currentNode) { me.currentNode[JV.BAND_PROP_MERGE_BORDER] = dom.checked?'T':'F'; } }, extractBands: function (rptTpl) { let me = this; if (rptTpl) { let newBandList = []; for (let node of me.treeObj.getNodes()) { newBandList.push(me.createBandFromNode(node)); } rptTpl[JV.NODE_BAND_COLLECTION] = newBandList; } } };