|
@@ -81,71 +81,76 @@ let fieldLocationOprObj = {
|
|
|
bandW = Math.round(JV.PAGES_SIZE[pIdx][1] * 96 - (parseFloat(rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT]) + parseFloat(rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT])) /2.54*96 );
|
|
|
}
|
|
|
}
|
|
|
- /*/
|
|
|
- for (let itemNode of columnParentNode.items) {
|
|
|
- //预push一下横向坐标,看看会有多少列
|
|
|
- me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos);
|
|
|
- }
|
|
|
- if (xPos.length > 5) {
|
|
|
- if ((xPos.length - 5) < 5) {
|
|
|
- bandW *= (xPos.length - 5) * 0.1 + 1; //放大一下,纯属为了UI操作方便,看得清一些
|
|
|
- } else {
|
|
|
- bandW *= 1.5; //最大1.5倍
|
|
|
+ if (columnParentNode.items && columnParentNode.items.length > 0) {
|
|
|
+ for (let itemNode of columnParentNode.items) {
|
|
|
+ me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos);
|
|
|
+ me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_RIGHT, bandW, xPos);
|
|
|
+ me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_TOP, bandH, yPos);
|
|
|
+ me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_BOTTOM, bandH, yPos);
|
|
|
}
|
|
|
- }
|
|
|
- xPos = [];
|
|
|
- //*/
|
|
|
- for (let itemNode of columnParentNode.items) {
|
|
|
- me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos);
|
|
|
- me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_RIGHT, bandW, xPos);
|
|
|
- me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_TOP, bandH, yPos);
|
|
|
- me.private_pushPos(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_BOTTOM, bandH, yPos);
|
|
|
- }
|
|
|
|
|
|
- sheet.setRowCount(yPos.length, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
- sheet.setColumnCount(xPos.length - 1, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
- for (let idx = 1; idx < xPos.length; idx++) {
|
|
|
+ sheet.setRowCount(yPos.length, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ sheet.setColumnCount(xPos.length - 1, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ for (let idx = 1; idx < xPos.length; idx++) {
|
|
|
+ me.columnFieldCtrls.push(me.private_create_dft_ctrl());
|
|
|
+ }
|
|
|
+ // sheet.clear();
|
|
|
+ let cellType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
+ let selectableFields = me.private_getSelectedFields(rptTpl);
|
|
|
+ cellType.items(selectableFields);
|
|
|
+ //设置 最后一行为 行数据选择combobox
|
|
|
+ let iSelectedRow = sheet.getRowCount() - 1;
|
|
|
+ sheet.setRowHeight(iSelectedRow, 20);
|
|
|
+ sheet.getRange(iSelectedRow, -1, 1, -1).backColor("LightCyan");
|
|
|
+ sheet.getRange(iSelectedRow, -1, 1, -1).locked(true);
|
|
|
+ for (let jCol = 0; jCol < sheet.getColumnCount(); jCol++) {
|
|
|
+ sheet.getCell(iSelectedRow, jCol).cellType(cellType);
|
|
|
+ }
|
|
|
+ xPos.sort(function(x1, x2){
|
|
|
+ return (x1 - x2);
|
|
|
+ });
|
|
|
+ yPos.sort(function(y1, y2){
|
|
|
+ return (y1 - y2);
|
|
|
+ });
|
|
|
+ for (let contentItemNode of contentParentNode.items) {
|
|
|
+ let idxCol = xPos.indexOf(me.private_getActPosEx(contentItemNode, contentItemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos));
|
|
|
+ sheet.getCell(iSelectedRow, idxCol).value(contentItemNode[JV.PROP_NAME]);
|
|
|
+ me.private_merge_ctrl(rptTpl, idxCol, contentItemNode, null);
|
|
|
+ }
|
|
|
+ for (let idx = 1; idx < xPos.length; idx++) {
|
|
|
+ sheet.setColumnWidth(idx - 1, xPos[idx] - xPos[idx - 1]);
|
|
|
+ }
|
|
|
+ for (let idx = 1; idx < yPos.length; idx++) {
|
|
|
+ sheet.setRowHeight(idx - 1, yPos[idx] - yPos[idx - 1]);
|
|
|
+ sheet.getRange(idx - 1, -1, 1, -1).backColor(undefined);
|
|
|
+ }
|
|
|
+ for (let itemNode of columnParentNode.items) {
|
|
|
+ let idx1 = xPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos));
|
|
|
+ let idx2 = xPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_RIGHT, bandW, xPos));
|
|
|
+ let idy1 = yPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_TOP, bandH, yPos));
|
|
|
+ let idy2 = yPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_BOTTOM, bandH, yPos));
|
|
|
+ if (idx2 - idx1 > 1 || idy2 - idy1 > 1) {
|
|
|
+ sheet.addSpan(idy1, idx1, idy2 - idy1, idx2 - idx1, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ }
|
|
|
+ me.private_setupCell(sheet.getCell(idy1, idx1), rptTpl, itemNode);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ sheet.setRowCount(2);
|
|
|
+ sheet.setColumnCount(1);
|
|
|
me.columnFieldCtrls.push(me.private_create_dft_ctrl());
|
|
|
- }
|
|
|
- // sheet.clear();
|
|
|
- let cellType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
- let selectableFields = me.private_getSelectedFields(rptTpl);
|
|
|
- cellType.items(selectableFields);
|
|
|
- //设置 最后一行为 行数据选择combobox
|
|
|
- let iSelectedRow = sheet.getRowCount() - 1;
|
|
|
- sheet.setRowHeight(iSelectedRow, 20);
|
|
|
- sheet.getRange(iSelectedRow, -1, 1, -1).backColor("LightCyan");
|
|
|
- sheet.getRange(iSelectedRow, -1, 1, -1).locked(true);
|
|
|
- for (let jCol = 0; jCol < sheet.getColumnCount(); jCol++) {
|
|
|
- sheet.getCell(iSelectedRow, jCol).cellType(cellType);
|
|
|
- }
|
|
|
- xPos.sort(function(x1, x2){
|
|
|
- return (x1 - x2);
|
|
|
- });
|
|
|
- yPos.sort(function(y1, y2){
|
|
|
- return (y1 - y2);
|
|
|
- });
|
|
|
- for (let contentItemNode of contentParentNode.items) {
|
|
|
- let idxCol = xPos.indexOf(me.private_getActPosEx(contentItemNode, contentItemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos));
|
|
|
- sheet.getCell(iSelectedRow, idxCol).value(contentItemNode[JV.PROP_NAME]);
|
|
|
- me.private_merge_ctrl(rptTpl, idxCol, contentItemNode, null);
|
|
|
- }
|
|
|
- for (let idx = 1; idx < xPos.length; idx++) {
|
|
|
- sheet.setColumnWidth(idx - 1, xPos[idx] - xPos[idx - 1]);
|
|
|
- }
|
|
|
- for (let idx = 1; idx < yPos.length; idx++) {
|
|
|
- sheet.setRowHeight(idx - 1, yPos[idx] - yPos[idx - 1]);
|
|
|
- sheet.getRange(idx - 1, -1, 1, -1).backColor(undefined);
|
|
|
- }
|
|
|
- for (let itemNode of columnParentNode.items) {
|
|
|
- let idx1 = xPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_LEFT, bandW, xPos));
|
|
|
- let idx2 = xPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_H_CALCULATION], JV.PROP_RIGHT, bandW, xPos));
|
|
|
- let idy1 = yPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_TOP, bandH, yPos));
|
|
|
- let idy2 = yPos.indexOf(me.private_getActPosEx(itemNode, itemNode[JV.PROP_AREA][JV.PROP_V_CALCULATION], JV.PROP_BOTTOM, bandH, yPos));
|
|
|
- if (idx2 - idx1 > 1 || idy2 - idy1 > 1) {
|
|
|
- sheet.addSpan(idy1, idx1, idy2 - idy1, idx2 - idx1, GC.Spread.Sheets.SheetArea.viewport);
|
|
|
+ let cellType = new GC.Spread.Sheets.CellTypes.ComboBox();
|
|
|
+ let selectableFields = me.private_getSelectedFields(rptTpl);
|
|
|
+ cellType.items(selectableFields);
|
|
|
+ //设置 最后一行为 行数据选择combobox
|
|
|
+ let iSelectedRow = sheet.getRowCount() - 1;
|
|
|
+ sheet.setRowHeight(iSelectedRow, 20);
|
|
|
+ sheet.getRange(iSelectedRow, -1, 1, -1).backColor("LightCyan");
|
|
|
+ sheet.getRange(iSelectedRow, -1, 1, -1).locked(true);
|
|
|
+ for (let jCol = 0; jCol < sheet.getColumnCount(); jCol++) {
|
|
|
+ sheet.getCell(iSelectedRow, jCol).cellType(cellType);
|
|
|
}
|
|
|
- me.private_setupCell(sheet.getCell(idy1, idx1), rptTpl, itemNode);
|
|
|
+ sheet.setColumnWidth(0, bandW);
|
|
|
+ sheet.setRowHeight(0, bandH);
|
|
|
}
|
|
|
sheet.resumePaint();
|
|
|
}
|
|
@@ -164,14 +169,25 @@ let fieldLocationOprObj = {
|
|
|
let me = fieldLocationOprObj,
|
|
|
sheet = me.columnWorkBook.getActiveSheet();
|
|
|
sheet.addRows(sheet.getRowCount() - 1, 1);
|
|
|
+ let rc = sheet.getRowCount();
|
|
|
+ // let node = me.columnParentNode.items[0]
|
|
|
+ for (let cc = 0; cc < sheet.getColumnCount(); cc++) {
|
|
|
+ me.private_setupCellDft(sheet.getCell(rc - 2, cc));
|
|
|
+ }
|
|
|
+ // columnParentNode.items
|
|
|
},
|
|
|
deleteRow: function () {
|
|
|
let me = fieldLocationOprObj,
|
|
|
sheet = me.columnWorkBook.getActiveSheet(),
|
|
|
selectedRanges = sheet.getSelections()
|
|
|
;
|
|
|
- if (selectedRanges.length > 0) {
|
|
|
- sheet.deleteRows(selectedRanges[0].row, 1);
|
|
|
+ let rc = sheet.getRowCount();
|
|
|
+ if (rc > 2) {
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ sheet.deleteRows(selectedRanges[0].row, 1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ alert('不能删除行!');
|
|
|
}
|
|
|
},
|
|
|
addCol: function (rptTpl) {
|
|
@@ -198,8 +214,13 @@ let fieldLocationOprObj = {
|
|
|
sheet = me.columnWorkBook.getActiveSheet(),
|
|
|
selectedRanges = sheet.getSelections()
|
|
|
;
|
|
|
- if (selectedRanges.length > 0) {
|
|
|
- sheet.deleteColumns(selectedRanges[0].col, 1);
|
|
|
+ let cc = sheet.getColumnCount();
|
|
|
+ if (cc > 1) {
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ sheet.deleteColumns(selectedRanges[0].col, 1);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ alert('不能删除列!');
|
|
|
}
|
|
|
},
|
|
|
mergeCells: function () {
|
|
@@ -665,7 +686,11 @@ let fieldLocationOprObj = {
|
|
|
} else {
|
|
|
node[JV.PROP_AREA][JV.PROP_TOP] = 0;
|
|
|
}
|
|
|
- node[JV.PROP_NAME] = stringUtil.replaceAll(stringUtil.replaceAll(text[`text`], '\n', '|'), '\r', '');
|
|
|
+ if (stringUtil.isEmptyString(text[`text`])) {
|
|
|
+ node[JV.PROP_NAME] = '';
|
|
|
+ } else {
|
|
|
+ node[JV.PROP_NAME] = stringUtil.replaceAll(stringUtil.replaceAll(text[`text`].toString(), '\n', '|'), '\r', '');
|
|
|
+ }
|
|
|
node[JV.PROP_LABEL] = node[JV.PROP_NAME];
|
|
|
nodes.push(node);
|
|
|
}
|