|
|
@@ -35,14 +35,14 @@ import {
|
|
|
IPageAreaObj,
|
|
|
IControlSubCollection,
|
|
|
INode,
|
|
|
-
|
|
|
+
|
|
|
} from '../interface/basic'
|
|
|
|
|
|
class JpcFlowTabClass {
|
|
|
isEx: boolean;
|
|
|
paging_option: string;
|
|
|
segments: number[][];
|
|
|
- dispValueIdxLst:number[][][];
|
|
|
+ dispValueIdxLst: number[][][];
|
|
|
page_seg_map: number[][];
|
|
|
disp_fields_idx: any[];
|
|
|
disp_fields_ex_idx: any[];
|
|
|
@@ -50,20 +50,20 @@ class JpcFlowTabClass {
|
|
|
seg_sum_tab_fields: any[];
|
|
|
page_sum_fields_idx: any[];
|
|
|
page_sum_tab_fields: any[];
|
|
|
- auto_height_fields_idx:[number,Fields][];//那些被标记为判断自动行高的指标集合
|
|
|
- auto_height_info: number[][];
|
|
|
+ auto_height_fields_idx: [number, Fields][];//那些被标记为判断自动行高的指标集合
|
|
|
+ auto_height_info: number[][];
|
|
|
group_check_fields: Fields[];
|
|
|
group_sum_fields: Fields[];
|
|
|
group_sum_values: Fields[];
|
|
|
- group_node_info: number[][]; //记录在哪个seg及到哪条记录后有group sum信息
|
|
|
+ group_node_info: number[][]; //记录在哪个seg及到哪条记录后有group sum信息
|
|
|
group_lines_amt: number; //每group一次占用多少行,计算page信息会用到
|
|
|
- pageStatusLst:boolean[][];
|
|
|
+ pageStatusLst: boolean[][];
|
|
|
groupSumValLst: any[];
|
|
|
segSumValLst: any[];
|
|
|
pageSumValLst: any[];
|
|
|
multiCols: number;
|
|
|
pagesAmt: number;
|
|
|
-
|
|
|
+
|
|
|
constructor(isEx: boolean) {
|
|
|
//初始化
|
|
|
this.isEx = isEx;
|
|
|
@@ -99,7 +99,7 @@ class JpcFlowTabClass {
|
|
|
let me = this;
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
//因为rptTpl[FLOW_NODE_STR的写法不兼容ts,所以把变量改为flow_node_str代替
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
if (flow_node_str.流水式表_段统计信息) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, flow_node_str.流水式表_段统计信息.sum_field_s, me.seg_sum_tab_fields, me.seg_sum_fields_idx, me.isEx);
|
|
|
if (flow_node_str.流水式表_页统计信息) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, flow_node_str.流水式表_页统计信息.sum_field_s, me.page_sum_tab_fields, me.page_sum_fields_idx, me.isEx);
|
|
|
if (flow_node_str.流水式表_分组信息) {
|
|
|
@@ -124,10 +124,10 @@ class JpcFlowTabClass {
|
|
|
};
|
|
|
sumSeg(dataObj: IDataObj, $CURRENT_RPT: ICurrent_RPT) {
|
|
|
let me = this;
|
|
|
- let data_details = me.isEx?dataObj.detail_data_ex:dataObj.detail_data,
|
|
|
+ let data_details = me.isEx ? dataObj.detail_data_ex : dataObj.detail_data,
|
|
|
data_fields = [];
|
|
|
for (let i = 0; i < me.seg_sum_fields_idx.length; i++) {
|
|
|
- if (typeof(me.seg_sum_fields_idx[i]) === "object") {
|
|
|
+ if (typeof (me.seg_sum_fields_idx[i]) === "object") {
|
|
|
let exField = JE.F(me.seg_sum_fields_idx[i][JV.PROP_ID], $CURRENT_RPT);
|
|
|
if (exField) {
|
|
|
data_fields.push(exField.data_field);
|
|
|
@@ -146,7 +146,7 @@ class JpcFlowTabClass {
|
|
|
rowGrandTotal.push(0.0);
|
|
|
let precisionAmt = 4;
|
|
|
let sum_field = JE.F(me.seg_sum_tab_fields[di][JV.PROP_FIELD_ID], $CURRENT_RPT);
|
|
|
- if (sum_field&&sum_field.Precision && sum_field.Precision.type === `fixed`) {
|
|
|
+ if (sum_field && sum_field.Precision && sum_field.Precision.type === `fixed`) {
|
|
|
precisionAmt = sum_field.fixedPrecisionNum;
|
|
|
} else {
|
|
|
let flowF = me.seg_sum_tab_fields[di];
|
|
|
@@ -173,9 +173,9 @@ class JpcFlowTabClass {
|
|
|
sumUpGrp(rptTpl: IRptTpl, $CURRENT_RPT: ICurrent_RPT, dataObj: IDataObj, segIdx: number, preGrpIdx: number, nexGrpIdx: number) {
|
|
|
let me = this, segDataIdx = me.segments[segIdx];
|
|
|
for (let j = 0; j < me.group_sum_fields.length; j++) {
|
|
|
- let sum_field :IGroupField|null = JE.F(me.group_sum_fields[j].FieldID, $CURRENT_RPT);
|
|
|
+ let sum_field: IGroupField | null = JE.F(me.group_sum_fields[j].FieldID, $CURRENT_RPT);
|
|
|
if (sum_field) {
|
|
|
- let data_field= null;
|
|
|
+ let data_field = null;
|
|
|
if (sum_field.data_field) {
|
|
|
data_field = sum_field.data_field
|
|
|
} else {
|
|
|
@@ -209,14 +209,14 @@ class JpcFlowTabClass {
|
|
|
me.group_sum_values = [];
|
|
|
me.group_node_info = [];
|
|
|
// let CURRENT_FLOW_INFO = (me.isEx)?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let current_flow_info=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
- me.group_lines_amt =current_flow_info.流水式表_分组信息.group_lines.length;
|
|
|
+ let current_flow_info = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
+ me.group_lines_amt = current_flow_info.流水式表_分组信息.group_lines.length;
|
|
|
//
|
|
|
let preGrpIdx = 0, nexGrpIdx = 0;
|
|
|
for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
|
|
|
let segDataIdx = me.segments[segIdx];
|
|
|
// me.group_sum_values.push([]);
|
|
|
- me.group_sum_values.push({} as Fields) ;
|
|
|
+ me.group_sum_values.push({} as Fields);
|
|
|
me.group_node_info.push([]);
|
|
|
for (let j = 0; j < me.group_sum_fields.length; j++) {
|
|
|
// me.group_sum_values[segIdx].push([]);
|
|
|
@@ -227,7 +227,7 @@ class JpcFlowTabClass {
|
|
|
let hasDiff = false;
|
|
|
if (di >= 1) {
|
|
|
for (let i = 0; i < me.group_check_fields.length; i++) {
|
|
|
- let grp_field= JE.F(me.group_check_fields[i].FieldID, $CURRENT_RPT);
|
|
|
+ let grp_field = JE.F(me.group_check_fields[i].FieldID, $CURRENT_RPT);
|
|
|
if (grp_field) {
|
|
|
let data_field = null;
|
|
|
if (grp_field.data_field) {
|
|
|
@@ -264,13 +264,13 @@ class JpcFlowTabClass {
|
|
|
let me = this;
|
|
|
if (me.auto_height_fields_idx.length > 0) {
|
|
|
// let CURRENT_FLOW_INFO = (me.isEx)?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let current_flow_info=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let current_flow_info = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let band = bands[current_flow_info.流水式表_数据.BandName];
|
|
|
- let data_details = me.isEx?dataObj.detail_data_ex:dataObj.detail_data;
|
|
|
+ let data_details = me.isEx ? dataObj.detail_data_ex : dataObj.detail_data;
|
|
|
let tab_fields = current_flow_info.流水式表_数据.flow_field_s;
|
|
|
let adHocAutoHeightStyleStr = [];
|
|
|
- let reg1 = new RegExp('\n\r','g'), reg2 = new RegExp('\r\n','g'),
|
|
|
- reg3 = new RegExp('\n','g'), reg4 = new RegExp('\r','g');
|
|
|
+ let reg1 = new RegExp('\n\r', 'g'), reg2 = new RegExp('\r\n', 'g'),
|
|
|
+ reg3 = new RegExp('\n', 'g'), reg4 = new RegExp('\r', 'g');
|
|
|
// let doc = new PDFKit({autoFirstPage: false});
|
|
|
let fonts = defProperties.fonts;
|
|
|
let fontCache: any = {};
|
|
|
@@ -289,7 +289,7 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- let private_get_max_lines_of_the_record = function(theRecIdx: number) {
|
|
|
+ let private_get_max_lines_of_the_record = function (theRecIdx: number) {
|
|
|
let rst = 1;
|
|
|
for (let loop = 0; loop < me.auto_height_fields_idx.length; loop++) {
|
|
|
let tab_field = me.auto_height_fields_idx[loop][1];
|
|
|
@@ -363,9 +363,9 @@ class JpcFlowTabClass {
|
|
|
rptTpl.style_collection = [];
|
|
|
}
|
|
|
for (let styleStr of adHocAutoHeightStyleStr) {
|
|
|
- let adHocStyle1 = {"ID": styleStr + "_AutoHeightMerge_Top"};
|
|
|
- let adHocStyle2 = {"ID": styleStr + "_AutoHeightMerge_Middle"};
|
|
|
- let adHocStyle3 = {"ID": styleStr + "_AutoHeightMerge_Bottom"};
|
|
|
+ let adHocStyle1 = { "ID": styleStr + "_AutoHeightMerge_Top" };
|
|
|
+ let adHocStyle2 = { "ID": styleStr + "_AutoHeightMerge_Middle" };
|
|
|
+ let adHocStyle3 = { "ID": styleStr + "_AutoHeightMerge_Bottom" };
|
|
|
rptTpl.style_collection.push(adHocStyle1);
|
|
|
rptTpl.style_collection.push(adHocStyle2);
|
|
|
rptTpl.style_collection.push(adHocStyle3);
|
|
|
@@ -383,8 +383,8 @@ class JpcFlowTabClass {
|
|
|
preSetupPages(rptTpl: IRptTpl, dataObj: IDataObj, defProperties: IDefProperties, option: string, $CURRENT_RPT: ICurrent_RPT, followTabEx: any) {
|
|
|
//换一种思路来整理流水式数据
|
|
|
let me = this, rst = 1, counterRowRec = 0, counterRowRecEx = 0, maxRowRec = 1, pageIdx = 0, currentRecAmt = 0;
|
|
|
- me.paging_option = option||JV.PAGING_OPTION_NORMAL;
|
|
|
- let current_flow_info=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ me.paging_option = option || JV.PAGING_OPTION_NORMAL;
|
|
|
+ let current_flow_info = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, current_flow_info.流水式表_数据.flow_field_s, null, me.disp_fields_idx, me.isEx);
|
|
|
if (followTabEx) {
|
|
|
JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl.流水式表_拓展信息.流水式表_数据.flow_field_s, null, me.disp_fields_ex_idx, true);
|
|
|
@@ -456,7 +456,7 @@ class JpcFlowTabClass {
|
|
|
pageIdx++;
|
|
|
function private_chk_handle_rec_amt(dv: any[], isEx: boolean) {
|
|
|
if ((dv[1] === JV.DISPLAY_VAL_TYPE_NORMAL) || (dv[1] === JV.DISPLAY_VAL_TYPE_AUTO_HEIGHT && dv[3] === dv[4] - 1)) {
|
|
|
- if (isEx) {counterRowRecEx++} else counterRowRec++;
|
|
|
+ if (isEx) { counterRowRecEx++ } else counterRowRec++;
|
|
|
} else if (dv[1] === JV.DISPLAY_VAL_TYPE_AUTO_HEIGHT) {
|
|
|
redundantRecAmt++;
|
|
|
}
|
|
|
@@ -464,7 +464,7 @@ class JpcFlowTabClass {
|
|
|
let restRecAmt = 0;
|
|
|
if (isMix) {
|
|
|
//先处理上半部分
|
|
|
- prePageLeftAutoHeightRecAmt = _addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, mixSplitPoint,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, prePageLeftAutoHeightRecAmt);
|
|
|
+ prePageLeftAutoHeightRecAmt = _addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, mixSplitPoint, me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, prePageLeftAutoHeightRecAmt);
|
|
|
for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) {
|
|
|
private_chk_handle_rec_amt(dv, false);
|
|
|
}
|
|
|
@@ -487,7 +487,7 @@ class JpcFlowTabClass {
|
|
|
private_chk_handle_rec_amt(dv, true);
|
|
|
}
|
|
|
} else {
|
|
|
- prePageLeftAutoHeightRecAmt = _addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec,me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, prePageLeftAutoHeightRecAmt);
|
|
|
+ prePageLeftAutoHeightRecAmt = _addPageValue(me.dispValueIdxLst, me.segments[segIdx], grpSeqInfo, counterRowRec, maxRowRec, me.page_seg_map, segIdx, pageIdx, grpPageInfo, false, me.auto_height_info, prePageLeftAutoHeightRecAmt);
|
|
|
for (let dv of me.dispValueIdxLst[me.dispValueIdxLst.length - 1]) {
|
|
|
private_chk_handle_rec_amt(dv, false);
|
|
|
}
|
|
|
@@ -499,8 +499,8 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
}
|
|
|
for (let segIdx = 0; segIdx < me.segments.length; segIdx++) {
|
|
|
- let grpSeqInfo = (me.group_node_info)?me.group_node_info[segIdx]:null;
|
|
|
- let grpRecAmt = (grpSeqInfo)?(grpSeqInfo.length*me.group_lines_amt):0;
|
|
|
+ let grpSeqInfo = (me.group_node_info) ? me.group_node_info[segIdx] : null;
|
|
|
+ let grpRecAmt = (grpSeqInfo) ? (grpSeqInfo.length * me.group_lines_amt) : 0;
|
|
|
let grpRecAmtEx = 0;
|
|
|
let accAutoHeightAmt = 0; //累计的自动行高数量
|
|
|
handledRowAmt = 0; //初始化每一段的已处理纪录行数
|
|
|
@@ -520,7 +520,7 @@ class JpcFlowTabClass {
|
|
|
counterRowRec = 0;
|
|
|
counterRowRecEx = 0;
|
|
|
let ttlSegRecAmtNormal = me.segments[segIdx].length + grpRecAmt; //正常的segment下的数据长度累计(含grouping data)
|
|
|
- let ttlSegRecAmt = (followTabEx)?(me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx):(me.segments[segIdx].length + grpRecAmt); //所有的segment下的数据长度累计(包括ex部分)
|
|
|
+ let ttlSegRecAmt = (followTabEx) ? (me.segments[segIdx].length + grpRecAmt + followTabEx.segments[segIdx].length + grpRecAmtEx) : (me.segments[segIdx].length + grpRecAmt); //所有的segment下的数据长度累计(包括ex部分)
|
|
|
let adHocAutoHeightAmt = 0;
|
|
|
let normalContentAmt = 0;
|
|
|
let exBuffer = 0;
|
|
|
@@ -603,7 +603,7 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
} else {
|
|
|
//在这里要考虑如果有多页正常的流水数据情况,那么就得考虑这页有多少条普通流水记录,不应该一刀切地用ttlSegRecAmtNormal
|
|
|
- let splitPoint = ttlSegRecAmtNormal - handledRowAmt ;
|
|
|
+ let splitPoint = ttlSegRecAmtNormal - handledRowAmt;
|
|
|
// if (splitPoint > (exBuffer + maxRowRec)) {
|
|
|
// splitPoint = splitPoint % (exBuffer + maxRowRec);
|
|
|
// }
|
|
|
@@ -735,7 +735,7 @@ class JpcFlowTabClass {
|
|
|
outputAsSimpleJSONPage(rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, controls: IControlCollection, adHocMergePos: IMergePos, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) {
|
|
|
let me = this, rst: any[] = [], tabRstLst = [];
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let unitFactor = JpcCommonHelper.getUnitFactor(rptTpl);
|
|
|
if (me.paging_option === "infinity") {
|
|
|
const segIdx = page - 1;
|
|
|
@@ -813,22 +813,22 @@ class JpcFlowTabClass {
|
|
|
outputContent(rptTpl: IRptTpl, dataObj: IDataObj, page: number, bands: IBands, unitFactor: number, controls: IControlCollection, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) {
|
|
|
let me = this, rst: any[] = [], prepareObj = {};
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let tab = flow_node_str.流水式表_数据;
|
|
|
- let tabEx = (rptTpl.流水式表_拓展信息)?rptTpl.流水式表_拓展信息.流水式表_数据:null;
|
|
|
+ let tabEx = (rptTpl.流水式表_拓展信息) ? rptTpl.流水式表_拓展信息.流水式表_数据 : null;
|
|
|
let verticalCombinePos = [], horizonCombinePos = []; //合并特性用
|
|
|
let band = bands[tab.BandName];
|
|
|
if (band) {
|
|
|
let pageStatus = me.pageStatusLst[page - 1];
|
|
|
if (pageStatus[(band.DisplayType) as number]) {
|
|
|
let tab_fields = tab.flow_field_s;
|
|
|
- let tab_fields_ex = tabEx?tabEx.flow_field_s:null;
|
|
|
- let data_details = me.isEx?dataObj.detail_data_ex:dataObj.detail_data;
|
|
|
- let data_details_ex = $CURRENT_RPT.isFollowMode?dataObj.detail_data_ex:null;
|
|
|
+ let tab_fields_ex = tabEx ? tabEx.flow_field_s : null;
|
|
|
+ let data_details = me.isEx ? dataObj.detail_data_ex : dataObj.detail_data;
|
|
|
+ let data_details_ex = $CURRENT_RPT.isFollowMode ? dataObj.detail_data_ex : null;
|
|
|
let contentValuesIdx = me.dispValueIdxLst[page - 1];
|
|
|
let page_sum_data_fields = [];
|
|
|
for (let i = 0; i < me.page_sum_fields_idx.length; i++) {
|
|
|
- if (typeof(me.page_sum_fields_idx[i]) === "object") {
|
|
|
+ if (typeof (me.page_sum_fields_idx[i]) === "object") {
|
|
|
let exField = JE.F(me.page_sum_fields_idx[i][JV.PROP_ID], $CURRENT_RPT);
|
|
|
if (exField) {
|
|
|
page_sum_data_fields.push(exField.data_field);
|
|
|
@@ -861,9 +861,9 @@ class JpcFlowTabClass {
|
|
|
if (map_data_field && map_data_field.Precision && map_data_field.flexiblePrecisionRefObj) {
|
|
|
if (flexiblePrecisionRefObj === null) {
|
|
|
flexiblePrecisionRefObj = {};
|
|
|
- if(map_data_field.Precision.flexibleRefFieldID)
|
|
|
- flexibleRefField = JE.F(map_data_field.Precision.flexibleRefFieldID, $CURRENT_RPT);
|
|
|
- if(flexibleRefField) precision_ref_data = dataObj[map_data_field.DataNodeName][flexibleRefField.DataSeq];
|
|
|
+ if (map_data_field.Precision.flexibleRefFieldID)
|
|
|
+ flexibleRefField = JE.F(map_data_field.Precision.flexibleRefFieldID, $CURRENT_RPT);
|
|
|
+ if (flexibleRefField) precision_ref_data = dataObj[map_data_field.DataNodeName][flexibleRefField.DataSeq];
|
|
|
for (let decimalObj of map_data_field.flexiblePrecisionRefObj) {
|
|
|
flexiblePrecisionRefObj["refUnit_" + decimalObj.unit] = decimalObj.decimal;
|
|
|
}
|
|
|
@@ -888,7 +888,7 @@ class JpcFlowTabClass {
|
|
|
} else if (contentValuesIdx[rowIdx][3] === contentValuesIdx[rowIdx][4] - 1) {
|
|
|
cellItem.style = cellItem.style + '_AutoHeightMerge_Bottom';
|
|
|
} else {
|
|
|
- cellItem.style= cellItem.style + '_AutoHeightMerge_Middle';
|
|
|
+ cellItem.style = cellItem.style + '_AutoHeightMerge_Middle';
|
|
|
}
|
|
|
prepareAutoHeightCells(prepareObj, cellItem, rst.length - 1, rst);
|
|
|
}
|
|
|
@@ -920,8 +920,8 @@ class JpcFlowTabClass {
|
|
|
if (map_data_fieldex && map_data_fieldex.Precision && map_data_fieldex.flexiblePrecisionRefObj) {
|
|
|
if (flexiblePrecisionRefObj === null) {
|
|
|
flexiblePrecisionRefObj = {};
|
|
|
- if(map_data_fieldex.Precision.flexibleRefFieldID)
|
|
|
- flexibleRefField = JE.F(map_data_fieldex.Precision.flexibleRefFieldID, $CURRENT_RPT);
|
|
|
+ if (map_data_fieldex.Precision.flexibleRefFieldID)
|
|
|
+ flexibleRefField = JE.F(map_data_fieldex.Precision.flexibleRefFieldID, $CURRENT_RPT);
|
|
|
for (let decimalObj of map_data_fieldex.flexiblePrecisionRefObj) {
|
|
|
flexiblePrecisionRefObj["refUnit_" + decimalObj.unit] = decimalObj.decimal;
|
|
|
}
|
|
|
@@ -1000,14 +1000,14 @@ class JpcFlowTabClass {
|
|
|
me.checkCombineEvent(JV.RUN_TYPE_AFTER_COMBINE, verticalCombinePos, horizonCombinePos, rst, $CURRENT_RPT);
|
|
|
return rst;
|
|
|
};
|
|
|
- combinePageCells(rstPageCells: ICell[], verticalCombinePos: number[][], horizonCombinePos:number[][]) {
|
|
|
+ combinePageCells(rstPageCells: ICell[], verticalCombinePos: number[][], horizonCombinePos: number[][]) {
|
|
|
// let me = this;
|
|
|
//备注:纵向合并要考虑以下因素:
|
|
|
// 如果有多个column纵向合并,需要总体考虑分割,
|
|
|
// 假如:第一列的前3个数据(1、2、3)是相同的,第二列中第2、3、4行数据相同,那么第二列只能合并2、3行的数据,不能合并到第四行
|
|
|
// 同理如此类推第三列...n列
|
|
|
if (verticalCombinePos.length > 0 || horizonCombinePos.length > 1) {
|
|
|
- let cacheObj: any = {vCache:{}, hCache: {}, hCacheStr: []};
|
|
|
+ let cacheObj: any = { vCache: {}, hCache: {}, hCacheStr: [] };
|
|
|
let removeCellIds = [];
|
|
|
for (let vPosArr of verticalCombinePos) {
|
|
|
let pStr = "_" + vPosArr[0] + "_" + vPosArr[1];
|
|
|
@@ -1141,10 +1141,10 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- outputColumn(rptTpl: IRptTpl, dataObj: IDataObj|null, page: number, segIdx: number, bands: IBands, unitFactor: number, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg|null) {
|
|
|
+ outputColumn(rptTpl: IRptTpl, dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, unitFactor: number, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) {
|
|
|
let me = this, rst: any = [];
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let tab = flow_node_str.流水式表_列;
|
|
|
let band = bands[tab.BandName];
|
|
|
if (band) {
|
|
|
@@ -1158,16 +1158,16 @@ class JpcFlowTabClass {
|
|
|
outputSegSum(rptTpl: IRptTpl, dataObj: IDataObj, page: number, segIdx: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) {
|
|
|
let me = this, rst: any = [];
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let tab = flow_node_str.流水式表_段统计信息;
|
|
|
let refTab = flow_node_str.流水式表_数据;
|
|
|
- let refTabEx = (rptTpl.流水式表_拓展信息)?rptTpl.流水式表_拓展信息.流水式表_数据:null;
|
|
|
+ let refTabEx = (rptTpl.流水式表_拓展信息) ? rptTpl.流水式表_拓展信息.流水式表_数据 : null;
|
|
|
let band = bands[tab.BandName];
|
|
|
if (band) {
|
|
|
let pageStatus = me.pageStatusLst[page - 1];
|
|
|
if (pageStatus[(band.DisplayType) as number]) {
|
|
|
let ref_tab_fields = refTab.flow_field_s;
|
|
|
- let ref_tab_fields_ex = refTabEx?refTabEx.flow_field_s:null;
|
|
|
+ let ref_tab_fields_ex = refTabEx ? refTabEx.flow_field_s : null;
|
|
|
let tab_fields = me.seg_sum_tab_fields;
|
|
|
for (let i = 0; i < tab_fields.length; i++) {
|
|
|
if (ref_tab_fields_ex && !JpcFieldHelper.resetSumFormat(ref_tab_fields, tab_fields[i])) {
|
|
|
@@ -1194,16 +1194,16 @@ class JpcFlowTabClass {
|
|
|
outputPageSum(rptTpl: IRptTpl, dataObj: IDataObj, page: number, segIdx: number, bands: IBands, unitFactor: number, controls: IControlCollection, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg) {
|
|
|
let me = this, rst: any = [];
|
|
|
// let FLOW_NODE_STR = me.isEx?'流水式表_拓展信息':'流水式表_信息';
|
|
|
- let flow_node_str=me.isEx?rptTpl.流水式表_拓展信息:rptTpl.流水式表_信息;
|
|
|
+ let flow_node_str = me.isEx ? rptTpl.流水式表_拓展信息 : rptTpl.流水式表_信息;
|
|
|
let tab = flow_node_str.流水式表_页统计信息;
|
|
|
let refTab = flow_node_str.流水式表_数据;
|
|
|
- let refTabEx = (rptTpl.流水式表_拓展信息)?rptTpl.流水式表_拓展信息.流水式表_数据:null;
|
|
|
+ let refTabEx = (rptTpl.流水式表_拓展信息) ? rptTpl.流水式表_拓展信息.流水式表_数据 : null;
|
|
|
let band = bands[tab.BandName];
|
|
|
if (band) {
|
|
|
let pageStatus = me.pageStatusLst[page - 1];
|
|
|
if (pageStatus[(band.DisplayType) as number]) {
|
|
|
let ref_tab_fields = refTab.flow_field_s;
|
|
|
- let ref_tab_fields_ex = refTabEx?refTabEx.flow_field_s:null;
|
|
|
+ let ref_tab_fields_ex = refTabEx ? refTabEx.flow_field_s : null;
|
|
|
let tab_fields = me.page_sum_tab_fields;
|
|
|
for (let i = 0; i < tab_fields.length; i++) {
|
|
|
if (!JpcFieldHelper.resetSumFormat(ref_tab_fields, tab_fields[i])) {
|
|
|
@@ -1222,10 +1222,10 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
- outputTabField(band: IBandDetail, tab_field: Fields, data_field: string[]|null, valueIdx: number, serialIdx: number, rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number) {
|
|
|
+ outputTabField(band: IBandDetail, tab_field: Fields, data_field: string[] | null, valueIdx: number, serialIdx: number, rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number) {
|
|
|
let me = this,
|
|
|
rst = JpcCommonOutputHelper.createCommonOutput(tab_field, JpcFieldHelper.getValue(data_field, valueIdx), controls);
|
|
|
- rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, isRow, false);
|
|
|
+ rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, isRow, false);
|
|
|
return rst;
|
|
|
};
|
|
|
outputAutoHeightTabField(band: IBandDetail, tab_field: Fields, data_field: string[], contentValInfo: number[], rows: number, rowIdx: number, cols: number, colIdx: number, unitFactor: number, isRow: boolean, controls: IControlCollection, multiColIdx: number) {
|
|
|
@@ -1242,13 +1242,13 @@ class JpcFlowTabClass {
|
|
|
showText = '';
|
|
|
}
|
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
|
- rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
+ rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
rst.isAutoHeight = true;
|
|
|
return rst;
|
|
|
} else {
|
|
|
if (contentValInfo[3] > 0) showText = '';
|
|
|
let rst = JpcCommonOutputHelper.createCommonOutput(tab_field, showText, controls);
|
|
|
- rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
+ rst.area = JpcAreaHelper.outputArea(tab_field.area, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx, true, false);
|
|
|
rst.isAutoHeight = false;
|
|
|
return rst;
|
|
|
}
|
|
|
@@ -1261,7 +1261,7 @@ class JpcFlowTabClass {
|
|
|
for (let sumFieldNode of grp_line.SumKey_S) {
|
|
|
// let value = curSegGrpSum[sumFieldNode[JV.PROP_SUM_KEY]][grpValueIdx[2]];
|
|
|
let value = curSegGrpSum[`grp_sum_key_` + sumFieldNode.FieldID][grpValueIdx[2]];
|
|
|
- let sumFldRst = JpcTextHelper.outputDirectValue(sumFieldNode, value, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx);
|
|
|
+ let sumFldRst = JpcTextHelper.outputDirectValue(sumFieldNode, value, band, unitFactor, rows, rowIdx, cols, colIdx, me.multiCols, multiColIdx);
|
|
|
rst.push(sumFldRst);
|
|
|
}
|
|
|
}
|
|
|
@@ -1300,7 +1300,7 @@ class JpcFlowTabClass {
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
- commonTabRestOutput(dataObj: IDataObj|null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg|null){
|
|
|
+ commonTabRestOutput(dataObj: IDataObj | null, page: number, segIdx: number, bands: IBands, band: IBandDetail, unitFactor: number, tab: ITab, multiColIdx: number, $CURRENT_RPT: ICurrent_RPT, customizeCfg: ICustomizeCfg | null) {
|
|
|
let me = this, rst = [];
|
|
|
if (tab.text) {
|
|
|
rst.push(JpcTextHelper.outputText(tab.text, band, unitFactor, 1, 0, 1, 0, me.multiCols, multiColIdx));
|
|
|
@@ -1317,11 +1317,11 @@ class JpcFlowTabClass {
|
|
|
};
|
|
|
};
|
|
|
|
|
|
-function _addPageValue(ValuedIdxLst: number[][][], sortedSequence: number[], grpSequenceInfo: any, startRecIdx: number, maxRecPerPage: number, page_seg_map: number[][],
|
|
|
- segIdx: number, pageIdx: number, grpPageInfo: IGrpPageInfo|null, isFollow: boolean, segAutoHeightInfo: number[][]|null, prePageLeftAutoHeightRecAmt: number) {
|
|
|
- let vIdx = [], vFirstIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0, followMode = (isFollow)?JV.TYPE_FOLLOW_MODE:-1, nextPageAutoHeightRecAmt = 0;
|
|
|
+function _addPageValue(ValuedIdxLst: number[][][], sortedSequence: number[], grpSequenceInfo: any, startRecIdx: number, maxRecPerPage: number, page_seg_map: number[][],
|
|
|
+ segIdx: number, pageIdx: number, grpPageInfo: IGrpPageInfo | null, isFollow: boolean, segAutoHeightInfo: number[][] | null, prePageLeftAutoHeightRecAmt: number) {
|
|
|
+ let vIdx = [], vFirstIdx = [], preAmt = 0, insertedGrpAmt = 0, grp_lines = 0, followMode = (isFollow) ? JV.TYPE_FOLLOW_MODE : -1, nextPageAutoHeightRecAmt = 0;
|
|
|
if (grpSequenceInfo && grpPageInfo) {
|
|
|
- if ( grpPageInfo.preAddPageGrpInfo.length > 0) {
|
|
|
+ if (grpPageInfo.preAddPageGrpInfo.length > 0) {
|
|
|
for (let grpLineIdx of grpPageInfo.preAddPageGrpInfo) {
|
|
|
//vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo.segGrpRecStartIdx, grpLineIdx]);
|
|
|
vFirstIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo.segGrpRecStartIdx, grpLineIdx]);
|
|
|
@@ -1336,7 +1336,7 @@ function _addPageValue(ValuedIdxLst: number[][][], sortedSequence: number[], grp
|
|
|
let private_addAutoHeightPageValue = function (vi: number) {
|
|
|
let couldBreak = false, startIdx = 0;
|
|
|
let ttlValAmt = 0;
|
|
|
- if (segAutoHeightInfo&&[segIdx].length > startRecIdx + vi) {
|
|
|
+ if (segAutoHeightInfo && [segIdx].length > startRecIdx + vi) {
|
|
|
ttlValAmt = segAutoHeightInfo[segIdx][startRecIdx + vi];
|
|
|
}
|
|
|
if (prePageLeftAutoHeightRecAmt > 0 && vi === 0) {
|
|
|
@@ -1353,9 +1353,9 @@ function _addPageValue(ValuedIdxLst: number[][][], sortedSequence: number[], grp
|
|
|
}
|
|
|
return couldBreak;
|
|
|
};
|
|
|
- let private_inner_add_grp_rec = function(vi: number) {
|
|
|
+ let private_inner_add_grp_rec = function (vi: number) {
|
|
|
let hasFullGrp = true, couldBreak = false;
|
|
|
- if(grpPageInfo){
|
|
|
+ if (grpPageInfo) {
|
|
|
for (let i = 0; i < grp_lines; i++) {
|
|
|
if (vIdx.length >= maxRecPerPage) {
|
|
|
for (let j = i; j < grp_lines; j++) {
|
|
|
@@ -1379,7 +1379,7 @@ function _addPageValue(ValuedIdxLst: number[][][], sortedSequence: number[], grp
|
|
|
}
|
|
|
return couldBreak;
|
|
|
};
|
|
|
- let private_normal_add_rec = function(vi: number) {
|
|
|
+ let private_normal_add_rec = function (vi: number) {
|
|
|
let couldBreak = false;
|
|
|
if (segAutoHeightInfo && segAutoHeightInfo.length > 0) {
|
|
|
if (segAutoHeightInfo[segIdx].length > startRecIdx + vi) {
|
|
|
@@ -1444,10 +1444,10 @@ function push_cell(pageCellObj: IPageCellObj, cell: INode, cellIdx: number) {
|
|
|
pageCellObj[key] = [];
|
|
|
}
|
|
|
let cellArr = pageCellObj[key];
|
|
|
- cellArr.push({"cellIdx": cellIdx, "cell": cell});
|
|
|
+ cellArr.push({ "cellIdx": cellIdx, "cell": cell });
|
|
|
}
|
|
|
|
|
|
-function prepareAutoHeightCells(prepareObj: IPageAreaObj|{}, cellItem: INode, cellIdx: number, cellsArr: ICell[]) {
|
|
|
+function prepareAutoHeightCells(prepareObj: IPageAreaObj | {}, cellItem: INode, cellIdx: number, cellsArr: ICell[]) {
|
|
|
if (prepareObj) {
|
|
|
if ((prepareObj as IPageAreaObj).cellsArr === undefined) {
|
|
|
(prepareObj as IPageAreaObj).cellsArr = cellsArr;
|
|
|
@@ -1459,7 +1459,7 @@ function prepareAutoHeightCells(prepareObj: IPageAreaObj|{}, cellItem: INode, ce
|
|
|
|
|
|
function setupControl(mergeCell: ICell, controls: IControlCollection) {
|
|
|
let orgCtrl = null;
|
|
|
- if ( typeof mergeCell.control === "string") {
|
|
|
+ if (typeof mergeCell.control === "string") {
|
|
|
orgCtrl = controls[mergeCell.control];
|
|
|
mergeCell.control = {
|
|
|
"Shrink": "T",
|
|
|
@@ -1468,14 +1468,14 @@ function setupControl(mergeCell: ICell, controls: IControlCollection) {
|
|
|
"ShowZero": orgCtrl.ShowZero,
|
|
|
"Horizon": orgCtrl.Horizon,
|
|
|
"Vertical": orgCtrl.Vertical,
|
|
|
- "Wrap": (mergeCell.isAutoHeight)?'T':'F',
|
|
|
+ "Wrap": (mergeCell.isAutoHeight) ? 'T' : 'F',
|
|
|
"VerticalForExcel": "center"
|
|
|
} as IControlSubCollection;
|
|
|
} else {
|
|
|
mergeCell.control.Shrink = "T";
|
|
|
mergeCell.control.Vertical = "top";
|
|
|
- mergeCell.control.Wrap = (mergeCell.isAutoHeight)?'T':'F',
|
|
|
- mergeCell.control.VerticalForExcel = "center";
|
|
|
+ mergeCell.control.Wrap = (mergeCell.isAutoHeight) ? 'T' : 'F',
|
|
|
+ mergeCell.control.VerticalForExcel = "center";
|
|
|
orgCtrl = mergeCell.control;
|
|
|
}
|
|
|
if (mergeCell.isAutoHeight) {
|
|
|
@@ -1488,7 +1488,7 @@ function setupControl(mergeCell: ICell, controls: IControlCollection) {
|
|
|
return orgCtrl;
|
|
|
}
|
|
|
|
|
|
-function combineAutoHeightCells(prepareObj: IPageAreaObj|{}, page: number, controls: IControlCollection) {
|
|
|
+function combineAutoHeightCells(prepareObj: IPageAreaObj | {}, page: number, controls: IControlCollection) {
|
|
|
let rst = [];
|
|
|
if ((prepareObj as IPageAreaObj).cellsArr) {
|
|
|
//merge cells' value and area
|
|
|
@@ -1497,7 +1497,7 @@ function combineAutoHeightCells(prepareObj: IPageAreaObj|{}, page: number, contr
|
|
|
let sameColCells = (prepareObj as IPageAreaObj).pageCellObj[mergeKey]; //左右位置相同的Cell先放在一起,统一处理
|
|
|
if (sameColCells.length > 1) {
|
|
|
//强转格式,此处是强制把本来是字符串的control属性转化为对象,by lish
|
|
|
- let firstMergeCell:ICell = {...sameColCells[0].cell , control:{} as IControlSubCollection};
|
|
|
+ let firstMergeCell: ICell = { ...sameColCells[0].cell, control: {} as IControlSubCollection };
|
|
|
firstMergeCell.style = firstMergeCell.style.slice(0, firstMergeCell.style.indexOf("_AutoHeightMerge")); //首先还原original style
|
|
|
//生成原始对象,并且把对象中的control属性转化为对象
|
|
|
let orgCtrl = setupControl(firstMergeCell, controls);
|
|
|
@@ -1515,7 +1515,7 @@ function combineAutoHeightCells(prepareObj: IPageAreaObj|{}, page: number, contr
|
|
|
rst.push(sameColCells[i].cellIdx); //记下Cell的位置,在函数外消除
|
|
|
//如果到了最后一条数据,得判断firstMergeCell是否满格(即数据是满的,有可能有些格数据也有折行但不是自动行高判断指标)
|
|
|
//不满格的cell的Vertical强制设置为 'center'
|
|
|
- if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5) ) {
|
|
|
+ if (i === sameColCells.length - 1 && validValueAmt !== fullValidValueAmt && (fullValidValueAmt / validValueAmt > 2.5)) {
|
|
|
firstMergeCell.control.VerticalForExcel = 'center';
|
|
|
}
|
|
|
} else {
|
|
|
@@ -1535,7 +1535,7 @@ function combineAutoHeightCells(prepareObj: IPageAreaObj|{}, page: number, contr
|
|
|
}
|
|
|
}
|
|
|
rst.sort(function (i1, i2) {
|
|
|
- return (i1 > i2)?1:-1;
|
|
|
+ return (i1 > i2) ? 1 : -1;
|
|
|
});
|
|
|
}
|
|
|
return rst;
|