|
@@ -128,6 +128,7 @@ let dataInfoMapTreeOprObj = {
|
|
|
me.private_build_column_data(rootColumnNode, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_COLUMN]);
|
|
|
me.private_build_sum_data(rootChapterSumNode, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_SEG_SUM], rptTpl);
|
|
|
me.private_build_sum_data(rootPageSumNode, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_PAGE_SUM], rptTpl);
|
|
|
+ me.private_build_grp_data(rootGroupSumNode, rptTpl[JV.NODE_FLOW_INFO][JV.NODE_FLOW_GROUP], rptTpl);
|
|
|
return rst;
|
|
|
},
|
|
|
buildBillData: function(rptTpl) {
|
|
@@ -141,6 +142,56 @@ let dataInfoMapTreeOprObj = {
|
|
|
|
|
|
return rst;
|
|
|
},
|
|
|
+ private_build_grp_data: function (grpNode, grpData, rptTpl) {
|
|
|
+ let me = this;
|
|
|
+ grpNode.items = [];
|
|
|
+ grpNode.sum_field_s = [];
|
|
|
+ if (grpData.sum_field_s && grpData.sum_field_s.length > 0) {
|
|
|
+ for (let sumF of grpData.sum_field_s) {
|
|
|
+ let sf = {};
|
|
|
+ sf[JV.PROP_FIELD_ID] = sumF[JV.PROP_FIELD_ID];
|
|
|
+ sf[JV.PROP_SUM_KEY] = sumF[JV.PROP_SUM_KEY];
|
|
|
+ grpNode.sum_field_s.push(sf);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let grp_fields = {Name: "分组判断指标集", items: [], Title: "", isParent: true};
|
|
|
+ let grp_lines = {Name: "分组行", items: [], Title: "", isParent: true};
|
|
|
+ grpNode.items.push(grp_fields);
|
|
|
+ grpNode.items.push(grp_lines);
|
|
|
+ if (grpData[JV.PROP_GROUP_FIELDS]) {
|
|
|
+ for (let grpItem of grpData[JV.PROP_GROUP_FIELDS]) {
|
|
|
+ grp_fields.items.push(me.private_build_field_node(grpItem, rptTpl));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (grpData[JV.PROP_GROUP_LINES] && grpData[JV.PROP_GROUP_LINES].length > 0) {
|
|
|
+ for (let grpline of grpData[JV.PROP_GROUP_LINES]) {
|
|
|
+ let gl = {Name: "行", items:[], isParent: true}, sumKeys = {Name:"分组字段集", items:[], Title: "", isParent: true}, texts = {Name:"文本集", items:[], Title: "", isParent: true};
|
|
|
+ gl.items.push(sumKeys);
|
|
|
+ gl.items.push(texts);
|
|
|
+ grp_lines.items.push(gl);
|
|
|
+ if (grpline[JV.PROP_GROUP_SUM_KEYS]) {
|
|
|
+ for (let fieldItem of grpline[JV.PROP_GROUP_SUM_KEYS]) {
|
|
|
+ let item = me.private_build_field_node(fieldItem, rptTpl);
|
|
|
+ item[JV.PROP_SUM_KEY] = fieldItem[JV.PROP_SUM_KEY];
|
|
|
+ item[JV.PROP_NAME] = fieldItem[JV.PROP_SUM_KEY];
|
|
|
+ for (let gsi of grpNode.sum_field_s) {
|
|
|
+ if (gsi[JV.PROP_SUM_KEY] === item[JV.PROP_SUM_KEY]) {
|
|
|
+ item[JV.PROP_FIELD_ID] = gsi[JV.PROP_FIELD_ID];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sumKeys.items.push(item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (grpline[JV.PROP_TEXTS]) {
|
|
|
+ for (let txt of grpline[JV.PROP_TEXTS]) {
|
|
|
+ texts.items.push(me.private_build_text_node(txt));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //then group lines
|
|
|
+ },
|
|
|
private_build_sum_data: function(sumNode, sumData, rptTpl) {
|
|
|
let me = this;
|
|
|
sumNode.items = [];
|
|
@@ -277,16 +328,20 @@ let dataInfoMapTreeOprObj = {
|
|
|
if (source[JV.PROP_FORMAT]) destination[JV.PROP_FORMAT] = source[JV.PROP_FORMAT];
|
|
|
if (source[JV.PROP_IS_AUTO_HEIGHT]) destination[JV.PROP_IS_AUTO_HEIGHT] = true
|
|
|
else destination[JV.PROP_IS_AUTO_HEIGHT] = false;
|
|
|
- destination[JV.PROP_AREA] = {};
|
|
|
- me.private_copy_area(source[JV.PROP_AREA], destination[JV.PROP_AREA]);
|
|
|
+ if (source[JV.PROP_AREA]) {
|
|
|
+ destination[JV.PROP_AREA] = {};
|
|
|
+ me.private_copy_area(source[JV.PROP_AREA], destination[JV.PROP_AREA]);
|
|
|
+ }
|
|
|
},
|
|
|
private_copy_area: function (orgArea, destArea) {
|
|
|
- destArea[JV.PROP_LEFT] = orgArea[[JV.PROP_LEFT]];
|
|
|
- destArea[JV.PROP_RIGHT] = orgArea[[JV.PROP_RIGHT]];
|
|
|
- destArea[JV.PROP_TOP] = orgArea[[JV.PROP_TOP]];
|
|
|
- destArea[JV.PROP_BOTTOM] = orgArea[[JV.PROP_BOTTOM]];
|
|
|
- destArea[JV.PROP_H_CALCULATION] = orgArea[[JV.PROP_H_CALCULATION]];
|
|
|
- destArea[JV.PROP_V_CALCULATION] = orgArea[[JV.PROP_V_CALCULATION]];
|
|
|
+ if (orgArea) {
|
|
|
+ destArea[JV.PROP_LEFT] = orgArea[[JV.PROP_LEFT]];
|
|
|
+ destArea[JV.PROP_RIGHT] = orgArea[[JV.PROP_RIGHT]];
|
|
|
+ destArea[JV.PROP_TOP] = orgArea[[JV.PROP_TOP]];
|
|
|
+ destArea[JV.PROP_BOTTOM] = orgArea[[JV.PROP_BOTTOM]];
|
|
|
+ destArea[JV.PROP_H_CALCULATION] = orgArea[[JV.PROP_H_CALCULATION]];
|
|
|
+ destArea[JV.PROP_V_CALCULATION] = orgArea[[JV.PROP_V_CALCULATION]];
|
|
|
+ }
|
|
|
},
|
|
|
private_build_param_node: function (param, rptTpl) {
|
|
|
let me = this, rst = null;
|
|
@@ -451,7 +506,8 @@ let dataInfoMapTreeOprObj = {
|
|
|
let rst = false;
|
|
|
if (targetNode.Name === JV.NODE_FLOW_CONTENT || targetNode.Name === JV.NODE_BILL_CONTENT || targetNode.Name === JV.NODE_CROSS_CONTENT
|
|
|
|| targetNode.Name === JV.NODE_CROSS_ROW || targetNode.Name === JV.NODE_CROSS_COL
|
|
|
- || targetNode.Name === "离散字段集" || targetNode.Name === "统计指标集") {
|
|
|
+ || targetNode.Name === "离散字段集" || targetNode.Name === "统计指标集" || targetNode.Name === "分组判断指标集"
|
|
|
+ || targetNode.Name === "分组字段集") {
|
|
|
rst = true;
|
|
|
}
|
|
|
return rst;
|
|
@@ -460,6 +516,9 @@ let dataInfoMapTreeOprObj = {
|
|
|
let me = dataInfoMapTreeOprObj;
|
|
|
for (let node of treeNodes) {
|
|
|
me.private_setup_dummy_field_node(node, targetNode);
|
|
|
+ if (targetNode[JV.PROP_NAME] === "分组判断指标集") {
|
|
|
+ delete node[JV.PROP_AREA];
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
onRemove: function (e, treeId, treeNode) {
|
|
@@ -479,13 +538,15 @@ let dataInfoMapTreeOprObj = {
|
|
|
},
|
|
|
checkIfCanAddBand: function (treeNode) {
|
|
|
let rst = false;
|
|
|
- if (treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_CONTENT) === 0 ||
|
|
|
- treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_COLUMN) === 0 ||
|
|
|
- treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_PAGE_SUM) === 0 ||
|
|
|
- treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_SEG_SUM) === 0 ||
|
|
|
- treeNode[JV.PROP_NAME].indexOf(JV.NODE_BILL_CONTENT) === 0 ||
|
|
|
- treeNode[JV.PROP_NAME].indexOf("子项") === 0) {
|
|
|
- rst = true;
|
|
|
+ if (typeof(treeNode[JV.PROP_NAME]) === "string") {
|
|
|
+ if (treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_CONTENT) === 0 ||
|
|
|
+ treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_COLUMN) === 0 ||
|
|
|
+ treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_PAGE_SUM) === 0 ||
|
|
|
+ treeNode[JV.PROP_NAME].indexOf(JV.NODE_FLOW_SEG_SUM) === 0 ||
|
|
|
+ treeNode[JV.PROP_NAME].indexOf(JV.NODE_BILL_CONTENT) === 0 ||
|
|
|
+ treeNode[JV.PROP_NAME].indexOf("子项") === 0) {
|
|
|
+ rst = true;
|
|
|
+ }
|
|
|
}
|
|
|
return rst;
|
|
|
},
|
|
@@ -510,7 +571,7 @@ let dataInfoMapTreeOprObj = {
|
|
|
let me = dataInfoMapTreeOprObj, sObj = $("#" + treeNode.tId + IDMark_Span);
|
|
|
if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || $("#selInput_"+treeNode.tId).length > 0) {
|
|
|
return;
|
|
|
- } else if (treeNode[JV.PROP_NAME] === JV.NODE_DISCRETE_INFO || me.checkIfCanAddTxt(treeNode)) {
|
|
|
+ } else if (treeNode[JV.PROP_NAME] === JV.NODE_DISCRETE_INFO || treeNode[JV.PROP_NAME] === "分组行" || me.checkIfCanAddTxt(treeNode)) {
|
|
|
let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增' onfocus='this.blur();'></span>";
|
|
|
sObj.after(addStr);
|
|
|
let btn = $("#addBtn_"+treeNode.tId);
|
|
@@ -518,7 +579,6 @@ let dataInfoMapTreeOprObj = {
|
|
|
btn.bind("click", function(){
|
|
|
let node = {};
|
|
|
node[JV.PROP_NAME] = "子项";
|
|
|
- // node[JV.PROP_BAND_NAME] = me.bandTreeObj.getNodes()[0][JV.PROP_NAME];
|
|
|
node[JV.PROP_BAND_NAME] = "";
|
|
|
node.items = [];
|
|
|
let fields = {"Name": "离散字段集", "items": [], "isParent": true};
|
|
@@ -530,6 +590,20 @@ let dataInfoMapTreeOprObj = {
|
|
|
me.treeObj.addNodes(treeNode, -1, newNodes, true);
|
|
|
me.refreshBandSelection();
|
|
|
});
|
|
|
+ } else if (treeNode[JV.PROP_NAME] === "分组行") {
|
|
|
+ btn.bind("click", function(){
|
|
|
+ let node = {};
|
|
|
+ node[JV.PROP_NAME] = "行";
|
|
|
+ node.items = [];
|
|
|
+ let fields = {"Name": "分组字段集", "items": [], "isParent": true};
|
|
|
+ let texts = {"Name": "文本集", "items": [], "isParent": true};
|
|
|
+ node.items.push(fields);
|
|
|
+ node.items.push(texts);
|
|
|
+ let newNodes = [];
|
|
|
+ newNodes.push(node);
|
|
|
+ me.treeObj.addNodes(treeNode, -1, newNodes, true);
|
|
|
+ me.refreshBandSelection();
|
|
|
+ });
|
|
|
} else {
|
|
|
//text
|
|
|
btn.bind("click", function(){
|
|
@@ -609,6 +683,48 @@ let dataInfoMapTreeOprObj = {
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
+ private_extract_grp_info: function(grpNode) {
|
|
|
+ let me = dataInfoMapTreeOprObj, rst = {};
|
|
|
+ rst[JV.PROP_GROUP_FIELDS] = [];
|
|
|
+ rst[JV.PROP_SUM_FIELDS] = [];
|
|
|
+ rst[JV.PROP_GROUP_LINES] = [];
|
|
|
+ let sumFieldObj = {};
|
|
|
+ for (let subNode of grpNode.items) {
|
|
|
+ if (subNode[JV.PROP_NAME] === "分组判断指标集") {
|
|
|
+ for (let sumField of subNode.items) {
|
|
|
+ let item = {FieldID: sumField[JV.PROP_FIELD_ID]};
|
|
|
+ rst[JV.PROP_GROUP_FIELDS].push(item);
|
|
|
+ }
|
|
|
+ } else if (subNode[JV.PROP_NAME] === "分组行") {
|
|
|
+ for (let line of subNode.items) {
|
|
|
+ let grpLine = {"SumKey_S": [], "text_s":[]};
|
|
|
+ rst[JV.PROP_GROUP_LINES].push(grpLine);
|
|
|
+ for (let dtl of line.items) {
|
|
|
+ if (dtl[JV.PROP_NAME] === "分组字段集") {
|
|
|
+ for (let gf of dtl.items) {
|
|
|
+ if (!sumFieldObj[gf[JV.PROP_NAME]]) {
|
|
|
+ sumFieldObj[gf[JV.PROP_NAME]] = "Y";
|
|
|
+ rst[JV.PROP_SUM_FIELDS].push({"FieldID": gf[JV.PROP_FIELD_ID], "SumKey": gf[JV.PROP_NAME]});
|
|
|
+ }
|
|
|
+ let item = {};
|
|
|
+ rst[JV.PROP_SUM_FIELDS].push(item);
|
|
|
+ me.private_copy_field_properties(gf, item);
|
|
|
+ item[JV.PROP_SUM_KEY] = gf[JV.PROP_NAME];
|
|
|
+ grpLine[JV.PROP_GROUP_SUM_KEYS].push(item);
|
|
|
+ }
|
|
|
+ } else if (dtl[JV.PROP_NAME] === "文本集") {
|
|
|
+ for (let txt of dtl.items) {
|
|
|
+ let item = {};
|
|
|
+ grpLine[JV.PROP_TEXTS].push(item);
|
|
|
+ me.private_copy_text_properties(txt, item);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return rst;
|
|
|
+ },
|
|
|
private_extract_sum_info: function(sumNode) {
|
|
|
let me = dataInfoMapTreeOprObj, rst = {};
|
|
|
rst[JV.PROP_BAND_NAME] = sumNode[JV.PROP_BAND_NAME];
|