From ed64b5edff15e702493df21aa3230b81593e6133 Mon Sep 17 00:00:00 2001 From: Michael Lando Date: Fri, 9 Jun 2017 03:19:04 +0300 Subject: [SDC-29] catalog 1707 rebase commit. Change-Id: I43c3dc5cf44abf5da817649bc738938a3e8388c1 Signed-off-by: Michael Lando --- .../export-json-to-excel/export-json-to-excel.ts | 61 ++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 catalog-ui/src/app/directives/export-json-to-excel/export-json-to-excel.ts (limited to 'catalog-ui/src/app/directives/export-json-to-excel/export-json-to-excel.ts') diff --git a/catalog-ui/src/app/directives/export-json-to-excel/export-json-to-excel.ts b/catalog-ui/src/app/directives/export-json-to-excel/export-json-to-excel.ts new file mode 100644 index 0000000000..deb1c94936 --- /dev/null +++ b/catalog-ui/src/app/directives/export-json-to-excel/export-json-to-excel.ts @@ -0,0 +1,61 @@ +'use strict'; +import {FileUtils} from "app/utils"; + +export interface IJsonExportExcelScope extends ng.IScope { + initExportExcelData:Function; + export:()=>void; +} + +export class JsonExportExcelDirective implements ng.IDirective { + + constructor(private fileUtils:FileUtils) { + } + + scope = { + initExportExcelData: '&'//get function that init and returns Models.ExportExcel + }; + + public restrict = 'E'; + replace = true; + template = ():string => { + return require('./export-json-to-excel.html'); + }; + + private jsonToTableText = (headers:string, dataObj:Array):string=> { + let tableText = headers + "\n"; + _.each(dataObj, (rowData:any) => { + tableText += _.values(rowData).join() + "\n"; + }); + return tableText; + }; + + link = (scope:IJsonExportExcelScope, $elem:any) => { + scope.export = ():void => { + let exportExcelData = scope.initExportExcelData(); + exportExcelData.fileName = !!exportExcelData.fileName ? exportExcelData.fileName : 'export-excel'; + + let headers = exportExcelData.tableHeaders.join(","); + let tableData = ""; + if (exportExcelData.groupByField) { + _.each(_.groupBy(exportExcelData.dataObj, exportExcelData.groupByField), (groupData:Array) => { + tableData += this.jsonToTableText(headers, groupData); + tableData += '\n'; + }); + } else { + tableData = this.jsonToTableText(headers, exportExcelData.dataObj); + } + + let blob = new Blob([exportExcelData.metaData.join('\n\n') + '\n\n' + tableData], {type: "text/csv;charset=utf-8"}); + + return this.fileUtils.downloadFile(blob, exportExcelData.fileName + '.csv'); + }; + + }; + + public static factory = (fileUtils:FileUtils)=> { + return new JsonExportExcelDirective( fileUtils); + }; + +} + +JsonExportExcelDirective.factory.$inject = ['FileUtils']; -- cgit 1.2.3-korg