|
@@ -341,14 +341,17 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
doc.fontSize(12);
|
|
doc.fontSize(12);
|
|
}
|
|
}
|
|
let hasSplitStr = false, splitStrArr = [];
|
|
let hasSplitStr = false, splitStrArr = [];
|
|
|
|
+ let accAmt = 0;
|
|
for (let i = 0; i < values.length; i++) {
|
|
for (let i = 0; i < values.length; i++) {
|
|
- let amt = JpcCommonHelper.getStringLinesInArea(area, values[i], doc) - 1;
|
|
|
|
- rst += amt;
|
|
|
|
- if (amt > 0) {
|
|
|
|
|
|
+ let amt = JpcCommonHelper.getStringLinesInArea(area, values[i], doc);
|
|
|
|
+ accAmt += amt;
|
|
|
|
+ // rst += amt;
|
|
|
|
+ if (amt > 1) {
|
|
hasSplitStr = true;
|
|
hasSplitStr = true;
|
|
splitStrArr.push(i);
|
|
splitStrArr.push(i);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ if (accAmt > rst) rst = accAmt;
|
|
if (hasSplitStr) {
|
|
if (hasSplitStr) {
|
|
let newValArr = [];
|
|
let newValArr = [];
|
|
for (let i = 0; i < values.length; i++) {
|
|
for (let i = 0; i < values.length; i++) {
|
|
@@ -998,11 +1001,13 @@ JpcFlowTabSrv.prototype.createNew = function(){
|
|
}
|
|
}
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
|
+ rst[JV.PROP_IS_AUTO_HEIGHT] = true;
|
|
return rst;
|
|
return rst;
|
|
} else {
|
|
} else {
|
|
if (contentValInfo[3] > 0) showText = '';
|
|
if (contentValInfo[3] > 0) showText = '';
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
rst[JV.PROP_AREA] = JpcAreaHelper.outputArea(tab_field[JV.PROP_AREA], band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
|
+ rst[JV.PROP_IS_AUTO_HEIGHT] = false;
|
|
return rst;
|
|
return rst;
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -1077,17 +1082,24 @@ function setupControl(mergeCell, controls) {
|
|
"Shrink": "T",
|
|
"Shrink": "T",
|
|
"ShowZero": orgCtrl.ShowZero,
|
|
"ShowZero": orgCtrl.ShowZero,
|
|
"Horizon": orgCtrl.Horizon,
|
|
"Horizon": orgCtrl.Horizon,
|
|
- "Vertical": "top",
|
|
|
|
|
|
+ "Vertical": orgCtrl.Vertical,
|
|
"Wrap": "T",
|
|
"Wrap": "T",
|
|
- "VerticalForExcel": "justify"
|
|
|
|
|
|
+ "VerticalForExcel": "center"
|
|
};
|
|
};
|
|
} else {
|
|
} else {
|
|
mergeCell[JV.PROP_CONTROL].Shrink = "T";
|
|
mergeCell[JV.PROP_CONTROL].Shrink = "T";
|
|
mergeCell[JV.PROP_CONTROL].Vertical = "top";
|
|
mergeCell[JV.PROP_CONTROL].Vertical = "top";
|
|
mergeCell[JV.PROP_CONTROL].Wrap = "T";
|
|
mergeCell[JV.PROP_CONTROL].Wrap = "T";
|
|
- mergeCell[JV.PROP_CONTROL].VerticalForExcel = "justify";
|
|
|
|
|
|
+ mergeCell[JV.PROP_CONTROL].VerticalForExcel = "center";
|
|
orgCtrl = mergeCell[JV.PROP_CONTROL];
|
|
orgCtrl = mergeCell[JV.PROP_CONTROL];
|
|
}
|
|
}
|
|
|
|
+ if (mergeCell[JV.PROP_IS_AUTO_HEIGHT]) {
|
|
|
|
+ mergeCell[JV.PROP_CONTROL]["VerticalForExcel"] = 'justify';
|
|
|
|
+ // mergeCell[JV.PROP_CONTROL]["Vertical"] = 'center';
|
|
|
|
+ } else {
|
|
|
|
+ mergeCell[JV.PROP_CONTROL]["VerticalForExcel"] = 'center';
|
|
|
|
+ // mergeCell[JV.PROP_CONTROL]["Vertical"] = 'top';
|
|
|
|
+ }
|
|
return orgCtrl;
|
|
return orgCtrl;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1097,31 +1109,92 @@ function combineAutoHeightCells(prepareObj, page, controls) {
|
|
//merge cells' value and area
|
|
//merge cells' value and area
|
|
//备注: 系统逻辑已经把Cell的顺序放好,无需再做排序。
|
|
//备注: 系统逻辑已经把Cell的顺序放好,无需再做排序。
|
|
for (let mergeKey in prepareObj.pageCellObj) {
|
|
for (let mergeKey in prepareObj.pageCellObj) {
|
|
- if (prepareObj.pageCellObj[mergeKey].length > 1) {
|
|
|
|
- let firstMergeCell = prepareObj.pageCellObj[mergeKey][0].cell;
|
|
|
|
|
|
+ let sameColCells = prepareObj.pageCellObj[mergeKey]; //左右位置相同的Cell先放在一起,统一处理
|
|
|
|
+ if (sameColCells.length > 1) {
|
|
|
|
+ let firstMergeCell = sameColCells[0].cell;
|
|
|
|
+ firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge")); //首先还原original style
|
|
|
|
+ let orgCtrl = setupControl(firstMergeCell, controls);
|
|
|
|
+ let validValueAmt = 0, fullValidValueAmt = 0;
|
|
|
|
+ for (let i = 1; i < sameColCells.length; i++) {
|
|
|
|
+ let mergeCell = sameColCells[i].cell;
|
|
|
|
+ if (mergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge_Top") < 0) {
|
|
|
|
+ fullValidValueAmt++;
|
|
|
|
+ //merge into the firstMergeCell! position & value
|
|
|
|
+ firstMergeCell[JV.PROP_AREA][JV.PROP_BOTTOM] = mergeCell[JV.PROP_AREA][JV.PROP_BOTTOM];
|
|
|
|
+ if (mergeCell[JV.PROP_VALUE]) {
|
|
|
|
+ firstMergeCell[JV.PROP_VALUE] = firstMergeCell[JV.PROP_VALUE] + "|" + mergeCell[JV.PROP_VALUE];
|
|
|
|
+ validValueAmt++;
|
|
|
|
+ } else {
|
|
|
|
+ // firstMergeCell[JV.PROP_VALUE] = firstMergeCell[JV.PROP_VALUE] + "|" ;
|
|
|
|
+ }
|
|
|
|
+ rst.push(sameColCells[i].cellIdx); //记下Cell的位置,在函数外消除
|
|
|
|
+ //如果到了最后一条数据,得判断firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
|
|
+ //不满格的cell的Vertical强制设置为 'center'
|
|
|
|
+ if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt) {
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
|
|
+ firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ //碰到新开始的自动行高行,判断原先的firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
|
|
+ //不满格的cell的Vertical强制设置为 'center'
|
|
|
|
+ if (validValueAmt !== fullValidValueAmt) {
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
|
|
+ firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
|
|
+ }
|
|
|
|
+ firstMergeCell = sameColCells[i].cell;
|
|
|
|
+ firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge"));
|
|
|
|
+ orgCtrl = setupControl(firstMergeCell, controls);
|
|
|
|
+ validValueAmt = 0;
|
|
|
|
+ fullValidValueAmt = 0;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ rst.sort(function (i1, i2) {
|
|
|
|
+ return (i1 > i2)?1:-1;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ return rst;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+function combineAutoHeightCellsBk(prepareObj, page, controls) {
|
|
|
|
+ let rst = [];
|
|
|
|
+ if (prepareObj.cellsArr) {
|
|
|
|
+ //merge cells' value and area
|
|
|
|
+ //备注: 系统逻辑已经把Cell的顺序放好,无需再做排序。
|
|
|
|
+ for (let mergeKey in prepareObj.pageCellObj) {
|
|
|
|
+ let sameColCells = prepareObj.pageCellObj[mergeKey]; //左右位置相同的Cell先放在一起,统一处理
|
|
|
|
+ if (sameColCells.length > 1) {
|
|
|
|
+ let firstMergeCell = sameColCells[0].cell;
|
|
firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge"));
|
|
firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge"));
|
|
let orgCtrl = setupControl(firstMergeCell, controls);
|
|
let orgCtrl = setupControl(firstMergeCell, controls);
|
|
let validValueAmt = 0;
|
|
let validValueAmt = 0;
|
|
- for (let i = 1; i < prepareObj.pageCellObj[mergeKey].length; i++) {
|
|
|
|
- let mergeCell = prepareObj.pageCellObj[mergeKey][i].cell;
|
|
|
|
|
|
+ for (let i = 1; i < sameColCells.length; i++) {
|
|
|
|
+ let mergeCell = sameColCells[i].cell;
|
|
if (mergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge_Top") < 0) {
|
|
if (mergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge_Top") < 0) {
|
|
//merge into the firstMergeCell!
|
|
//merge into the firstMergeCell!
|
|
firstMergeCell[JV.PROP_AREA][JV.PROP_BOTTOM] = mergeCell[JV.PROP_AREA][JV.PROP_BOTTOM];
|
|
firstMergeCell[JV.PROP_AREA][JV.PROP_BOTTOM] = mergeCell[JV.PROP_AREA][JV.PROP_BOTTOM];
|
|
firstMergeCell[JV.PROP_VALUE] = firstMergeCell[JV.PROP_VALUE] + "|" + mergeCell[JV.PROP_VALUE];
|
|
firstMergeCell[JV.PROP_VALUE] = firstMergeCell[JV.PROP_VALUE] + "|" + mergeCell[JV.PROP_VALUE];
|
|
if (mergeCell[JV.PROP_VALUE]) validValueAmt++;
|
|
if (mergeCell[JV.PROP_VALUE]) validValueAmt++;
|
|
- rst.push(prepareObj.pageCellObj[mergeKey][i].cellIdx);
|
|
|
|
- if (i === prepareObj.pageCellObj[mergeKey].length - 1 && validValueAmt === 0) {
|
|
|
|
|
|
+ rst.push(sameColCells[i].cellIdx);
|
|
|
|
+ if (i === sameColCells.length - 1 && validValueAmt === 0) {
|
|
firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
if (validValueAmt === 0) {
|
|
if (validValueAmt === 0) {
|
|
firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
firstMergeCell[JV.PROP_CONTROL].Shrink = orgCtrl.Shrink;
|
|
firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
firstMergeCell[JV.PROP_CONTROL].Wrap = "F";
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = null;
|
|
|
|
+ // firstMergeCell[JV.PROP_CONTROL].VerticalForExcel = 'center';
|
|
}
|
|
}
|
|
- firstMergeCell = prepareObj.pageCellObj[mergeKey][i].cell;
|
|
|
|
|
|
+ firstMergeCell = sameColCells[i].cell;
|
|
firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge"));
|
|
firstMergeCell[JV.PROP_STYLE] = firstMergeCell[JV.PROP_STYLE].slice(0, firstMergeCell[JV.PROP_STYLE].indexOf("_AutoHeightMerge"));
|
|
orgCtrl = setupControl(firstMergeCell, controls);
|
|
orgCtrl = setupControl(firstMergeCell, controls);
|
|
validValueAmt = 0;
|
|
validValueAmt = 0;
|