|
@@ -26,6 +26,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
|
let preAmt = 0;
|
|
|
let insertedGrpAmt = 0;
|
|
|
let grp_lines = 0;
|
|
|
+ let hasPrePageGrp = false;
|
|
|
const followMode = (isFollow) ? JV.TYPE_FOLLOW_MODE : -1;
|
|
|
let nextPageAutoHeightRecAmt = 0;
|
|
|
if (grpSequenceInfo && grpPageInfo) {
|
|
@@ -67,11 +68,16 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
|
let couldBreak = false;
|
|
|
for (let i = 0; i < grp_lines; i++) {
|
|
|
if (vIdx.length >= maxRecPerPage) {
|
|
|
- for (let j = i; j < grp_lines; j++) {
|
|
|
- grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].push(j);
|
|
|
+ if (grp_lines === 1) {
|
|
|
+ hasPrePageGrp = true; // 在此情况下,说明最后一条记录应该是group,但是不够正常空间,那么就硬塞这1条数据!
|
|
|
+ vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], i]);
|
|
|
+ } else {
|
|
|
+ for (let j = i; j < grp_lines; j++) {
|
|
|
+ grpPageInfo[JV.PROP_PRE_ADD_GRP_REC_INFO].push(j);
|
|
|
+ }
|
|
|
+ // 准备要跳出去了
|
|
|
+ hasFullGrp = false;
|
|
|
}
|
|
|
- // 准备要跳出去了
|
|
|
- hasFullGrp = false;
|
|
|
break;
|
|
|
} else {
|
|
|
vIdx.push([followMode, JV.DISPLAY_VAL_TYPE_GROUP, grpPageInfo[JV.PROP_SEG_GRP_IDX], i]);
|
|
@@ -108,7 +114,7 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
|
for (let vi = 0; (vi + insertedGrpAmt * grp_lines) < maxRecPerPage - preAmt; vi++) {
|
|
|
if (grpSequenceInfo && grpPageInfo) {
|
|
|
if ((startRecIdx + vi) === grpSequenceInfo[grpPageInfo[JV.PROP_SEG_GRP_IDX]]) {
|
|
|
- // 表示这里要插入grouping信息啦!
|
|
|
+ // 表示这里要插入grouping信息!
|
|
|
let couldBreak = false;
|
|
|
// 1. 首先push正常的记录(要考虑自动行高调整的分支)
|
|
|
if (segAutoHeightInfo && segAutoHeightInfo.length > 0) {
|
|
@@ -693,9 +699,6 @@ JpcFlowTabSrv.prototype.createNew = function() {
|
|
|
// 备注: 理论上自动行高是没有上限的,有可能正常一页的数据可以拓展到3页及以上,在此极端情况下,必须做一些限制判断,否则会出现缺页情况。
|
|
|
// 2018-08-04 其实之前的判断逻辑完全是自找麻烦,而且还不够正确。其实只需要判断已经处理了多少行纪录(所有的都算,包括空白行),
|
|
|
// 与总的seg纪录数想比较,就很容易得到结果,而且能处理极端边界的情况。
|
|
|
- // console.log('pageIdx: ' + pageIdx);
|
|
|
- // console.log('pageStatus: ');
|
|
|
- // console.log(pageStatus);
|
|
|
pageStatus[JV.STATUS_SEGMENT_END] = true;
|
|
|
pageStatus[JV.STATUS_REPORT_END] = true;
|
|
|
private_resetBandArea();
|