فهرست منبع

列可视化调整

TonyKang 7 سال پیش
والد
کامیت
ec2a353ae9
2فایلهای تغییر یافته به همراه94 افزوده شده و 69 حذف شده
  1. 3 3
      test/demo/stringTest.js
  2. 91 66
      web/maintain/report/js/rpt_tpl_field_location.js

+ 3 - 3
test/demo/stringTest.js

@@ -32,9 +32,9 @@ let strUtil = require('../../public/stringUtil');
 // })
 
 test('string encodeURI', function(t){
-    let str = "a\tdef";
-    console.log(str);
-    console.log(str.replace('\t', ' '));
+    let str = 123;
+    console.log(str.toString());
+    console.log(str.toString().replace('\t', ' '));
     t.end();
 })
 

+ 91 - 66
web/maintain/report/js/rpt_tpl_field_location.js

@@ -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);
                 }