Pārlūkot izejas kodu

code sync from operation

TonyKang 7 gadi atpakaļ
vecāks
revīzija
08676e932d

+ 4 - 4
modules/reports/rpt_component/jpc_ex.js

@@ -167,10 +167,10 @@ JpcExSrv.prototype.createNew = function(){
                 }
                 if (bands[JV.BAND_PROP_MERGE_BAND]) {
                     let mergedBand = {}, band = bands[JV.BAND_PROP_MERGE_BAND];
-                    mergedBand[JV.PROP_LEFT] = band[JV.PROP_LEFT].toFixed(0);
-                    mergedBand[JV.PROP_RIGHT] = band[JV.PROP_RIGHT].toFixed(0);
-                    mergedBand[JV.PROP_TOP] = band[JV.PROP_TOP].toFixed(0);
-                    mergedBand[JV.PROP_BOTTOM] = band[JV.PROP_BOTTOM].toFixed(0);
+                    mergedBand[JV.PROP_LEFT] = parseInt(band[JV.PROP_LEFT].toFixed(0));
+                    mergedBand[JV.PROP_RIGHT] = parseInt(band[JV.PROP_RIGHT].toFixed(0));
+                    mergedBand[JV.PROP_TOP] = parseInt(band[JV.PROP_TOP].toFixed(0));
+                    mergedBand[JV.PROP_BOTTOM] = parseInt(band[JV.PROP_BOTTOM].toFixed(0));
                     mergedBand[JV.BAND_PROP_STYLE] = band[JV.BAND_PROP_STYLE];
                     rst[JV.BAND_PROP_MERGE_BAND] = mergedBand;
                 }

+ 1 - 1
modules/reports/rpt_component/jpc_flow_tab.js

@@ -118,7 +118,7 @@ JpcFlowTabSrv.prototype.createNew = function(){
         for (let pi = 0; pi < me.multiCols; pi++) {
             let actualPage = (page - 1) * me.multiCols + pi + 1;
             //2.1 Content-Tab
-            tabRstLst.push(me.outputContent(rptTpl, dataObj, actualPage, bands, unitFactor, controls, pi));
+            tabRstLst.push(me.outputContent(rptTpl, dataObj, actualPage, bands, unitFactor, controls, pi, $CURRENT_RPT));
             //2.2 Column tab
             tabRstLst.push(me.outputColumn(rptTpl, dataObj, actualPage, segIdx, bands, unitFactor, controls, pi));
             //2.3 Sum Seg

+ 64 - 20
modules/reports/util/rpt_excel_util.js

@@ -196,14 +196,60 @@ function writeStyles(stylesObj){
     for (let i = 0; i < stylesObj.cellXfs.length; i++) {
         let excelStyle = stylesObj.cellXfs[i];
         rst.push('<xf numFmtId="0" fontId="' + excelStyle.fontId + '" fillId="0" borderId="' + excelStyle.borderId + '" xfId="0">');
-        let alignStr = '<alignment horizontal="' + excelStyle[JV.CONTROL_PROPS[2]] + '" vertical="' + excelStyle[JV.CONTROL_PROPS[3]] + '"';
+        //pageData[JV.NODE_FONT_COLLECTION] excelStyle.fontId
+        let alignStr = "<alignment";
+        let textRotation = 0;
+        let newHorizontal = excelStyle[JV.CONTROL_PROPS[2]];
+        let newVertical = excelStyle[JV.CONTROL_PROPS[3]];
+        if (parseInt(excelStyle.fontAngle) !== 0) {
+            let tmpH = newHorizontal, tmpV = newVertical;
+            if (excelStyle.fontAngle > 0) {
+                textRotation = 180;
+                if (newHorizontal === "left") {
+                    tmpV = 'top';
+                } else if (newHorizontal === "right") {
+                    tmpV = 'bottom';
+                } else {
+                    tmpV = 'center';
+                }
+                if (newVertical === "top") {
+                    tmpH = 'right';
+                } else if (newVertical === "bottom") {
+                    tmpH = 'left';
+                } else {
+                    tmpH = 'center';
+                }
+            } else {
+                textRotation = 90;
+                if (newHorizontal === "left") {
+                    tmpV = 'bottom';
+                } else if (newHorizontal === "right") {
+                    tmpV = 'top';
+                } else {
+                    tmpV = 'center';
+                }
+                if (newVertical === "top") {
+                    tmpH = 'left';
+                } else if (newVertical === "bottom") {
+                    tmpH = 'right';
+                } else {
+                    tmpH = 'center';
+                }
+            }
+            newHorizontal = tmpH;
+            newVertical = tmpV;
+        }
+        alignStr += ' horizontal="' + newHorizontal + '" vertical="' + newVertical + '"';
         if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[1]])) {
-            alignStr = alignStr + ' shrinkToFit="1"';
+            alignStr += ' shrinkToFit="1"';
         }
         if (strUtil.convertStrToBoolean(excelStyle[JV.CONTROL_PROPS[4]])) {
-            alignStr = alignStr + ' wrapText="1"';
+            alignStr += ' wrapText="1"';
         }
-        alignStr = alignStr + '/>';
+        if (textRotation !== 0) {
+            alignStr += ' textRotation="' + textRotation + '"';
+        }
+        alignStr += '/>';
         rst.push(alignStr);
         rst.push('</xf>');
     }
@@ -265,6 +311,7 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
         let sheetControl = {};
         sheetControl.fontId = fontId;
         sheetControl.borderId = borderId;
+        sheetControl.fontAngle = 0;
         for (let i = 0; i < JV.CONTROL_PROPS.length; i++) {
             sheetControl[JV.CONTROL_PROPS[i]] = cellControl[JV.CONTROL_PROPS[i]];
         }
@@ -427,7 +474,10 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
         return rst;
     };
     let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr) {
-        let rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT], mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND];
+        let rst = 0, mergeBorder = pageData[JV.BAND_PROP_MERGE_BAND];
+        if (sheetBorder[borderStr] && sheetBorder[borderStr][JV.PROP_LINE_WEIGHT] != undefined) {
+            rst = sheetBorder[borderStr][JV.PROP_LINE_WEIGHT];
+        }
         if (cell[JV.PROP_AREA][borderStr] == mergeBorder[borderStr]) {
             let destStyle = pageData[JV.NODE_STYLE_COLLECTION][mergeBorder[JV.PROP_STYLE][JV.PROP_ID]];
             rst = destStyle[borderStr][JV.PROP_LINE_WEIGHT];
@@ -452,29 +502,21 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
             stylesObj.borders = [];
         }
         let sheetBorder = pageData[JV.NODE_STYLE_COLLECTION][cell.style];
+        let mergedBorder = private_getIniBorder();
+        mergedBorder[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT);
+        mergedBorder[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT);
+        mergedBorder[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP);
+        mergedBorder[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM);
         for (let i = 0; i < stylesObj.borders.length; i++) {
             let border = stylesObj.borders[i];
-            if (private_checkBorder(cell, border, sheetBorder)) {
+            if (private_checkBorder(cell, border, mergedBorder)) {
                 hasBorder = true;
                 rst = i;
                 break;
             }
         }
         if (!hasBorder) {
-            let border = private_getIniBorder();
-            if (sheetBorder && sheetBorder[JV.PROP_LEFT]) {
-                border[JV.PROP_LEFT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_LEFT);
-            }
-            if (sheetBorder && sheetBorder[JV.PROP_RIGHT]) {
-                border[JV.PROP_RIGHT][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_RIGHT);
-            }
-            if (sheetBorder && sheetBorder[JV.PROP_TOP]) {
-                border[JV.PROP_TOP][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_TOP);
-            }
-            if (sheetBorder && sheetBorder[JV.PROP_BOTTOM]) {
-                border[JV.PROP_BOTTOM][JV.PROP_LINE_WEIGHT] = private_chkAndGetMergeLine(cell, sheetBorder, JV.PROP_BOTTOM);
-            }
-            stylesObj.borders.push(border);
+            stylesObj.borders.push(mergedBorder);
             rst = stylesObj.borders.length - 1;
         }
         return rst;
@@ -493,6 +535,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
         let rst = 1, hasStyle = false;
         if (!(stylesObj.cellXfs)) stylesObj.cellXfs = [];
         let fontId = private_getFontId(cell);
+        let fontAngle = parseInt(pageData.font_collection[cell.font].FontAngle);
         let borderId = private_getBorderId(cell);
         let cellControl = pageData[JV.NODE_CONTROL_COLLECTION][cell[JV.PROP_CONTROL]];
         for (let i = 0; i < stylesObj.cellXfs.length; i++) {
@@ -509,6 +552,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj){
             let sheetControl = {};
             sheetControl.fontId = fontId;
             sheetControl.borderId = borderId;
+            sheetControl.fontAngle = fontAngle;
             for (let i = 0; i < JV.CONTROL_PROPS.length; i++) {
                 sheetControl[JV.CONTROL_PROPS[i]] = cellControl[JV.CONTROL_PROPS[i]];
             }