Browse Source

Excel Export : add board description, add comments worksheet

Ben0it-T 3 years ago
parent
commit
153e4cc3fa
1 changed files with 325 additions and 86 deletions
  1. 325 86
      models/server/ExporterExcel.js

+ 325 - 86
models/server/ExporterExcel.js

@@ -156,6 +156,8 @@ class ExporterExcel {
         return user;
       });
 
+    
+    
     //init exceljs workbook
     const workbook = createWorkbook();
     workbook.creator = TAPi18n.__('export-board','',this.userLanguage);
@@ -364,39 +366,7 @@ class ExporterExcel {
       //return new Date(curdate.setHours(curdate.getHours() + 8));
       //return curdate;
     }
-    //add blank row
-    ws.addRow().values = ['', '', '', '', '', ''];
-    //add kanban info
-    ws.addRow().values = [
-      TAPi18n.__('createdAt','',this.userLanguage),
-      addTZhours(result.createdAt),
-      TAPi18n.__('modifiedAt','',this.userLanguage),
-      addTZhours(result.modifiedAt),
-      TAPi18n.__('members','',this.userLanguage),
-      jmem,
-    ];
-    ws.getRow(3).font = {
-      name: TAPi18n.__('excel-font'),
-      size: 10,
-      bold: true,
-    };
-    ws.mergeCells('F3:R3');
-    ws.getCell('B3').style = {
-      font: {
-        name: TAPi18n.__('excel-font'),
-        size: '10',
-        bold: true,
-      },
-      numFmt: 'yyyy/mm/dd hh:mm:ss',
-    };
-    ws.getCell('D3').style = {
-      font: {
-        name: TAPi18n.__('excel-font'),
-        size: '10',
-        bold: true,
-      },
-      numFmt: 'yyyy/mm/dd hh:mm:ss',
-    };
+
     //cell center
     function cellCenter(cellno) {
       ws.getCell(cellno).alignment = {
@@ -412,13 +382,7 @@ class ExporterExcel {
         wrapText: true,
       };
     }
-    cellCenter('A3');
-    cellCenter('B3');
-    cellCenter('C3');
-    cellCenter('D3');
-    cellCenter('E3');
-    cellLeft('F3');
-    ws.getRow(3).height = 20;
+
     //all border
     function allBorder(cellno) {
       ws.getCell(cellno).border = {
@@ -436,12 +400,84 @@ class ExporterExcel {
         },
       };
     }
-    allBorder('A3');
-    allBorder('B3');
-    allBorder('C3');
-    allBorder('D3');
-    allBorder('E3');
-    allBorder('F3');
+
+    //add blank row
+    ws.addRow().values = ['', '', '', '', '', ''];
+    
+    //add board description
+    ws.addRow().values = [
+      TAPi18n.__('description','',this.userLanguage),
+      result.description,
+    ];
+
+    ws.mergeCells('B3:H3');
+    ws.getRow(3).height = 40;
+    ws.getRow(3).font = {
+      name: TAPi18n.__('excel-font'),
+      size: 10,
+    };
+    ws.getCell('A3').style = {
+      font: {
+        name: TAPi18n.__('excel-font'),
+        size: '10',
+        bold: true,
+      },
+    };
+    ws.getCell(`B3`).alignment = {
+      wrapText: true,
+      vertical: 'middle',
+    };
+    cellCenter('A3');
+    
+    //add blank row
+    ws.addRow().values = ['', '', '', '', '', ''];
+
+    //add kanban info
+    ws.addRow().values = [
+      TAPi18n.__('createdAt','',this.userLanguage),
+      addTZhours(result.createdAt),
+      TAPi18n.__('modifiedAt','',this.userLanguage),
+      addTZhours(result.modifiedAt),
+      TAPi18n.__('members','',this.userLanguage),
+      jmem,
+    ];
+    ws.getRow(5).font = {
+      name: TAPi18n.__('excel-font'),
+      size: 10,
+      bold: true,
+    };
+    ws.mergeCells('F5:R5');
+    ws.getCell('B5').style = {
+      font: {
+        name: TAPi18n.__('excel-font'),
+        size: '10',
+        bold: true,
+      },
+      numFmt: 'yyyy/mm/dd hh:mm:ss',
+    };
+    ws.getCell('D5').style = {
+      font: {
+        name: TAPi18n.__('excel-font'),
+        size: '10',
+        bold: true,
+      },
+      numFmt: 'yyyy/mm/dd hh:mm:ss',
+    };
+    
+    cellCenter('A5');
+    cellCenter('B5');
+    cellCenter('C5');
+    cellCenter('D5');
+    cellCenter('E5');
+    cellLeft('F5');
+    ws.getRow(5).height = 20;
+    
+    allBorder('A5');
+    allBorder('B5');
+    allBorder('C5');
+    allBorder('D5');
+    allBorder('E5');
+    allBorder('F5');
     //add blank row
     ws.addRow().values = [
       '',
@@ -483,46 +519,46 @@ class ExporterExcel {
       TAPi18n.__('overtime-hours','',this.userLanguage),
       TAPi18n.__('spent-time-hours','',this.userLanguage),
     ];
-    ws.getRow(5).height = 20;
-    allBorder('A5');
-    allBorder('B5');
-    allBorder('C5');
-    allBorder('D5');
-    allBorder('E5');
-    allBorder('F5');
-    allBorder('G5');
-    allBorder('H5');
-    allBorder('I5');
-    allBorder('J5');
-    allBorder('K5');
-    allBorder('L5');
-    allBorder('M5');
-    allBorder('N5');
-    allBorder('O5');
-    allBorder('P5');
-    allBorder('Q5');
-    allBorder('R5');
-    cellCenter('A5');
-    cellCenter('B5');
-    cellCenter('C5');
-    cellCenter('D5');
-    cellCenter('E5');
-    cellCenter('F5');
-    cellCenter('G5');
-    cellCenter('H5');
-    cellCenter('I5');
-    cellCenter('J5');
-    cellCenter('K5');
-    cellCenter('L5');
-    cellCenter('M5');
-    cellCenter('N5');
-    cellCenter('O5');
-    cellCenter('P5');
-    cellCenter('Q5');
-    cellCenter('R5');
-    ws.getRow(5).font = {
+    ws.getRow(7).height = 20;
+    allBorder('A7');
+    allBorder('B7');
+    allBorder('C7');
+    allBorder('D7');
+    allBorder('E7');
+    allBorder('F7');
+    allBorder('G7');
+    allBorder('H7');
+    allBorder('I7');
+    allBorder('J7');
+    allBorder('K7');
+    allBorder('L7');
+    allBorder('M7');
+    allBorder('N7');
+    allBorder('O7');
+    allBorder('P7');
+    allBorder('Q7');
+    allBorder('R7');
+    cellCenter('A7');
+    cellCenter('B7');
+    cellCenter('C7');
+    cellCenter('D7');
+    cellCenter('E7');
+    cellCenter('F7');
+    cellCenter('G7');
+    cellCenter('H7');
+    cellCenter('I7');
+    cellCenter('J7');
+    cellCenter('K7');
+    cellCenter('L7');
+    cellCenter('M7');
+    cellCenter('N7');
+    cellCenter('O7');
+    cellCenter('P7');
+    cellCenter('Q7');
+    cellCenter('R7');
+    ws.getRow(7).font = {
       name: TAPi18n.__('excel-font'),
-      size: 12,
+      size: 10,
       bold: true,
     };
     //add blank row
@@ -577,8 +613,12 @@ class ExporterExcel {
         jcard.isOvertime ? 'true' : 'false',
         jcard.spentTime,
       ];
-      const y = Number(i) + 6;
+      const y = Number(i) + 8;
       //ws.getRow(y).height = 25;
+      ws.getRow(y).font = {
+        name: TAPi18n.__('excel-font'),
+        size: 10,
+      };
       allBorder(`A${y}`);
       allBorder(`B${y}`);
       allBorder(`C${y}`);
@@ -614,6 +654,205 @@ class ExporterExcel {
         wrapText: true,
       };
     }
+
+
+
+    //Activities worksheet
+    //init worksheet
+    const worksheet2 = workbook.addWorksheet(TAPi18n.__('activity','',this.userLanguage), {
+      properties: {
+        tabColor: {
+          argb: 'FFC0000',
+        },
+      },
+      pageSetup: {
+        paperSize: 9,
+        orientation: 'landscape',
+      },
+    });
+    //get worksheet
+    const ws2 = workbook.getWorksheet(TAPi18n.__('activity','',this.userLanguage));
+    ws2.properties.defaultRowHeight = 20;
+    //init columns
+    ws2.columns = [
+      {
+        key: 'a',
+        width: 14,
+      },
+      {
+        key: 'b',
+        width: 60,
+      },
+      {
+        key: 'c',
+        width: 40,
+      },
+      {
+        key: 'd',
+        width: 40,
+      },
+      {
+        key: 'e',
+        width: 30,
+        style: {
+          font: {
+            name: TAPi18n.__('excel-font'),
+            size: '10',
+          },
+          numFmt: 'yyyy/mm/dd hh:mm:ss',
+        },
+      },
+      {
+        key: 'f',
+        width: 30,
+        style: {
+          font: {
+            name: TAPi18n.__('excel-font'),
+            size: '10',
+          },
+          numFmt: 'yyyy/mm/dd hh:mm:ss',
+        },
+      },
+    ];
+    //all border
+    function allBorderWs2(cellno) {
+      ws2.getCell(cellno).border = {
+        top: {
+          style: 'thin',
+        },
+        left: {
+          style: 'thin',
+        },
+        bottom: {
+          style: 'thin',
+        },
+        right: {
+          style: 'thin',
+        },
+      };
+    }
+    
+    //add title line
+    ws2.mergeCells('A1:F1');
+    ws2.getCell('A1').value = result.title;
+    ws2.getCell('A1').style = {
+      font: {
+        name: TAPi18n.__('excel-font'),
+        size: '20',
+      },
+    };
+    ws2.getCell('A1').alignment = {
+      vertical: 'middle',
+      horizontal: 'center',
+      wrapText: true,
+    };
+    ws2.getRow(1).height = 40;
+
+    //add blank row
+    ws2.addRow().values = ['', '', '', '', '', ''];
+
+    //add comment title
+    ws2.addRow().values = [
+      TAPi18n.__('number','',this.userLanguage),
+      TAPi18n.__('activity','',this.userLanguage),
+      TAPi18n.__('card','',this.userLanguage),
+      TAPi18n.__('owner','',this.userLanguage),
+      TAPi18n.__('createdAt','',this.userLanguage),
+      TAPi18n.__('last-modified-at','',this.userLanguage), 
+    ];
+
+    ws2.getRow(3).height = 20;
+
+    ws2.getRow(3).font = {
+      name: TAPi18n.__('excel-font'),
+      size: 10,
+      bold: true,
+    };
+
+    ws2.getRow(3).alignment = {
+      vertical: 'middle',
+      horizontal: 'center',
+      wrapText: true,
+    };
+
+    allBorderWs2('A3');
+    allBorderWs2('B3');
+    allBorderWs2('C3');
+    allBorderWs2('D3');
+    allBorderWs2('E3');
+    allBorderWs2('F3');
+
+
+
+
+    //add comment info
+    for (const i in result.comments) {
+      const jcomment = result.comments[i];
+      
+      //card title
+      const parentCard = result.cards.find(
+        (card) => card._id === jcomment.cardId,
+      );
+      jcomment.cardTitle = parentCard ? parentCard.title : '';
+      
+      //add comment detail
+      const t = Number(i) + 1;
+      ws2.addRow().values = [
+        t.toString(),
+        jcomment.text,
+        jcomment.cardTitle,
+        jmeml[jcomment.userId],
+        addTZhours(jcomment.createdAt),
+        addTZhours(jcomment.modifiedAt),
+
+
+      ];
+
+      const y = Number(i) + 4;
+      ws2.getRow(y).font = {
+        name: TAPi18n.__('excel-font'),
+        size: 10,
+      };
+      
+      ws2.getCell(`A${y}`).alignment = {
+        vertical: 'middle',
+        horizontal: 'center',
+        wrapText: true,
+      };
+      ws2.getCell(`B${y}`).alignment = {
+        vertical: 'middle',
+        wrapText: true,
+      };
+      ws2.getCell(`C${y}`).alignment = {
+        vertical: 'middle',
+        wrapText: true,
+      };
+      ws2.getCell(`D${y}`).alignment = {
+        vertical: 'middle',
+        wrapText: true,
+      };
+      ws2.getCell(`E${y}`).alignment = {
+        vertical: 'middle',
+        wrapText: true,
+      };
+      ws2.getCell(`F${y}`).alignment = {
+        vertical: 'middle',
+        wrapText: true,
+      };
+
+      allBorderWs2(`A${y}`);
+      allBorderWs2(`B${y}`);
+      allBorderWs2(`C${y}`);
+      allBorderWs2(`D${y}`);
+      allBorderWs2(`E${y}`);
+      allBorderWs2(`F${y}`);
+      
+      
+    }
+
+
+
+
     workbook.xlsx.write(res).then(function () {});
   }