Browse Source

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/ConstructionCost

MaiXinRong 8 years ago
parent
commit
7b034b19af

+ 20 - 14
modules/reports/rpt_component/Jpc_CrossTab.js

@@ -349,7 +349,7 @@ JpcCrossTabSrv.prototype.createNew = function(){
         return rst;
     };
     JpcCrossTabResult.outputColTab = function(rptTpl, dataObj, page, bands, unitFactor, controls) {
-        var me = this, rst = [];
+        var me = this, rst = [], firstTextOutput = true;
         var tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_COL];
         var band = bands[tab[JV.PROP_BAND_NAME]];
         if (band) {
@@ -366,15 +366,18 @@ JpcCrossTabSrv.prototype.createNew = function(){
                         for (var colIdx = 0; colIdx < cols; colIdx++) {
                             rst.push(me.outputTabField(band, tab_field, data_field, valuesIdx[colIdx], -1, 1, 0, cols, colIdx, unitFactor, false, controls));
                             //2. output texts
-                            if (tab[JV.PROP_TEXT]) {
-                                rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
-                            }
-                            if (tab[JV.PROP_TEXTS]) {
-                                for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
-                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                            if (firstTextOutput) {
+                                if (tab[JV.PROP_TEXT]) {
+                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                }
+                                if (tab[JV.PROP_TEXTS]) {
+                                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                    }
                                 }
                             }
                         }
+                        firstTextOutput = false;
                     }
                 }
             }
@@ -447,7 +450,7 @@ JpcCrossTabSrv.prototype.createNew = function(){
         return rst;
     };
     JpcCrossTabResult.outputTabExt = function (rptTpl, dataObj, page, bands, unitFactor, controls) {
-        var me = this, rst = [],
+        var me = this, rst = [], firstTextOutput = true,
             tab = rptTpl[JV.NODE_CROSS_INFO][JV.NODE_CROSS_ROW_EXT];
         var band = bands[tab[JV.PROP_BAND_NAME]];
         if (band) {
@@ -464,15 +467,18 @@ JpcCrossTabSrv.prototype.createNew = function(){
                         for (var colIdx = 0; colIdx < cols; colIdx++) {
                             rst.push(me.outputTabField(band, tab_field, data_field, valuesIdx[colIdx], -1, 1, 0, cols, colIdx, unitFactor, false, controls));
                             //2. output texts if has
-                            if (tab[JV.PROP_TEXT]) {
-                                rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
-                            }
-                            if (tab[JV.PROP_TEXTS]) {
-                                for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
-                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                            if (firstTextOutput) {
+                                if (tab[JV.PROP_TEXT]) {
+                                    rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXT], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                }
+                                if (tab[JV.PROP_TEXTS]) {
+                                    for (var j = 0; j < tab[JV.PROP_TEXTS].length; j++) {
+                                        rst.push(JpcTextHelper.outputText(tab[JV.PROP_TEXTS][j], band, unitFactor, 1, 0, cols, colIdx, 1, 0));
+                                    }
                                 }
                             }
                         }
+                        firstTextOutput = false;
                     }
                 }
             }

+ 2 - 32
modules/reports/util/rpt_excel_util.js

@@ -610,7 +610,7 @@ function writeSheet(pageData, sheetData, sharedStrList, stylesObj){
 }
 
 module.exports = {
-    exportExcel: function (pageData, options) {
+    exportExcel: function (pageData, fName, options) {
         var rptOptions = (options || {singlePage: false, fileName: 'report'});
         var sheets = [];
         for (var i = 0; i < pageData.items.length; i++) {
@@ -665,7 +665,7 @@ module.exports = {
 
         zip.generateNodeStream({type:'nodebuffer',streamFiles:true})
             //.pipe(fs.createWriteStream('../../../tmp/outExcel.xlsx'))
-            .pipe(fs.createWriteStream('../../../tmp/outExcel.zip'))
+            .pipe(fs.createWriteStream('../../../tmp/' + fName + '.zip'))
             .on('finish', function () {
                 // JSZip generates a readable stream with a "end" event,
                 // but is piped here in a writable stream which emits a "finish" event.
@@ -673,34 +673,4 @@ module.exports = {
             }
         );
     }
-    ,testWriteContentTypes: function(sheets) {
-        return writeContentTypes(sheets);
-    }
-    ,testWriteRootRels: function() {
-        return writeRootRels();
-    }
-    ,testWriteApp: function(sheets) {
-        return writeApp(sheets);
-    }
-    ,testWriteCore: function() {
-        return writeCore();
-    }
-    ,testWriteXlWorkBook: function(sheets) {
-        return writeXlWorkBook(sheets);
-    }
-    ,testWriteXlRels: function(sheets) {
-        return writeXlRels(sheets);
-    }
-    ,testWriteSheets: function(pageData, sharedStrList, stylesObj){
-        return writeSheets(pageData, sharedStrList, stylesObj);
-    }
-    ,testWriteSharedString: function(sharedStrList){
-        return writeSharedString(sharedStrList);
-    }
-    ,testWriteTheme: function() {
-        return writeTheme();
-    }
-    ,testWriteStyles: function(stylesObj) {
-        return writeStyles(stylesObj);
-    }
 }

+ 7 - 53
test/unit/excel_export/rpt_excel_export_test.js

@@ -7,60 +7,14 @@ var fsUtil = require('../../../public/fsUtil');
 var rpt_xl_util = require('../../../modules/reports/util/rpt_excel_util');
 
 test('check real function.', function(t){
-    var data = fs.readFileSync('../../../tmp/07_1.page.js', 'utf8', 'r');
-    //var data = fs.readFileSync('../../../tmp/08_2.page.js', 'utf8', 'r');
+    var fName = '08_2.page_tuned1';
+    //var fName = '07_1.page';
+    //var data = fs.readFileSync('../../../tmp/07_1.page.js', 'utf8', 'r');
+    var data = fs.readFileSync('../../../tmp/' + fName + '.js', 'utf8', 'r');
     eval(data);
-    rpt_xl_util.exportExcel(testReport07_1, null);
+    var pageObj = testReport08_2;
+    //console.log(pageObj.items[0].cells.length);
+    rpt_xl_util.exportExcel(pageObj, fName, null);
     t.pass('pass exportExcel');
     t.end();
 });
-
-//test('check excel output', function(t){
-//    var data = fs.readFileSync('../../../tmp/07_1.page.js', 'utf8', 'r');
-//    eval(data);
-//    //console.log(testReport07_1);
-//    var sheets = [];
-//    for (var i = 0; i < testReport07_1.items.length; i++) {
-//        sheets.push({sheetName: '第' + (i + 1) + '页'});
-//    }
-//    var ct = rpt_xl_util.testWriteContentTypes(sheets);
-//    fsUtil.writeArrayToFile(ct, '../../../tmp/[Content_Types].xml');
-//    t.pass('pass content types');
-//    var rootRels = rpt_xl_util.testWriteRootRels();
-//    fsUtil.writeArrayToFile(rootRels, '../../../tmp/.rels');
-//    t.pass('pass root rels');
-//    var app = rpt_xl_util.testWriteApp(sheets);
-//    fsUtil.writeArrayToFile(app, '../../../tmp/app.xml');
-//    t.pass('pass app');
-//    var core = rpt_xl_util.testWriteCore(sheets);
-//    fsUtil.writeArrayToFile(core, '../../../tmp/core.xml');
-//    t.pass('pass core');
-//    var xlWBs = rpt_xl_util.testWriteXlWorkBook(sheets);
-//    fsUtil.writeArrayToFile(xlWBs, '../../../tmp/workbook.xml');
-//    t.pass('pass workbook');
-//    //workbook.xml.rels
-//    var xlRels = rpt_xl_util.testWriteXlRels(sheets);
-//    fsUtil.writeArrayToFile(xlRels, '../../../tmp/workbook.xml.rels');
-//    t.pass('pass xl sheet rels');
-//    var sharedStrList = [], stylesObj = {};
-//    var sheetsArr = rpt_xl_util.testWriteSheets(testReport07_1, sharedStrList, stylesObj);
-//    for (var i = 0; i < sheetsArr.length; i++) {
-//        fsUtil.writeArrayToFile(sheetsArr[i], '../../../tmp/sheet' + (i + 1) + '.xml');
-//        t.pass('pass sheet' + (i + 1));
-//    }
-//    var sharedStr = rpt_xl_util.testWriteSharedString(sharedStrList);
-//    fsUtil.writeArrayToFile(sharedStr, '../../../tmp/sharedStrings.xml');
-//    t.pass('pass shared string');
-//
-//    var styleStr = rpt_xl_util.testWriteStyles(stylesObj);
-//    fsUtil.writeArrayToFile(styleStr, '../../../tmp/styles.xml');
-//    t.pass('pass styles');
-//
-//    var theme = rpt_xl_util.testWriteTheme();
-//    //console.log(theme);
-//    var themeArr = [];
-//    themeArr.push(theme)
-//    fsUtil.writeArrayToFile(themeArr, '../../../tmp/theme1.xml');
-//    t.pass('pass theme');
-//    t.end();
-//});