2017-04-20 5 views
0

십진수를 두 자리로 제한하는 ui-grid-exporter를 사용하여 PDF로 내보내는 ui-grid 용 사용자 정의 필터를 만들었습니다. ui-grid를 내보내기는하지만 수출업자 인 경우 바닥 글 내에서 작동하지 않습니다. 예상UI 그리드 AngularJS : 바닥 글에 사용자 정의 필터 적용

바닥 글 : 필요한 32.34452436927346234523623462342345 : 여기 32.34

사용자 정의 필터입니다. 이 필터는 UI 그리드 내에서 작동합니다.

app.filter('rentalFilter', function() { 
    return function (value, scope) { 
    // Only perform logic if the value is actually defined 
    if(typeof value != 'undefined') { 
     if(value == null || value == "") 
      value = 0; 
     value = value.toFixed(2); 
     if(value >= 0) { 
      var parts=value.toString().split("."); 
      return parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (parts[1] ? "." + parts[1] : ""); 
     } 
     else { 
      value = value * -1.00; 
      value = value.toFixed(2); 
      var parts=value.toString().split("."); 
      return "-" + parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",") + (parts[1] ? "." + parts[1] : ""); 
     } 
    } 
    }; 
}); 

다음은 열은 UI 그리드 내보내기 기능은 PDF로 UI를 그리드 수출

$scope.columns = [ { 
    name : 'parm', 
    category : "column1", 
    width : '6%', 
    enableColumnMenu : false, 
    displayName : $scope.rollup 
}, { 
    name : 'mondayAwrv', 
    displayName : 'AWRV', 
    cellClass : 'green', 
    category : "MONDAY", 
    exporterPdfAlign: 'right', 
    width : '6%', 
    cellFilter : 'number : 2', 
    footerCellFilter : 'number : 2', 
    aggregationType : uiGridConstants.aggregationTypes.sum, 
    aggregationHideLabel : true, 
    enableColumnMenu : false 
}, { 
    name : 'mondayCredit', 
    cellClass : function(grid, row, col, rowRenderIndex, colRenderIndex) { 
     if (grid.getCellValue(row, col) < 0) 
      return 'negative'; 
     return 'positive' 
    }, 
    category : "MONDAY", 
    exporterPdfAlign: 'right', 
    width : '6%', 
    cellFilter : 'number : 2', 
    footerCellFilter : 'number : 2', 
    aggregationType : uiGridConstants.aggregationTypes.sum, 
    aggregationHideLabel : true, 
    enableColumnMenu : false 
}, { 
    name : 'mondayPer', 
    displayName : '%', 
    category : "MONDAY", 
    exporterPdfAlign: 'right', 
    width : '6%', 
    cellFilter : 'number : 2', 
    footerCellFilter : 'number : 2', 
    aggregationType : uiGridConstants.aggregationTypes.avg, 
    aggregationHideLabel : true, 
    enableColumnMenu : false 
}, 
..... 
//and so on for other days of the week 
]; 

선언된다. 숫자는 내가 getFooterValue 기능

$scope.getFooterValue = function(i){   
     return $scope.gridApi.grid.columns[i].getAggregationValue(); 
//template 
    //[ '', {text: ($scope.getFooterValue(1)), alignment: 'right'}, {text: ($scope.getFooterValue(2)), alignment: 'right'}, 

     /* 
     var exportData = []; 
      var exportColumnHeaders = $scope.gridOptions.showHeader ? uiGridExporterService.getColumnHeaders($scope.gridApi.grid, uiGridExporterConstants.VISIBLE) : []; 
      angular.forEach($scope.gridApi.grid.rows, function(row) { 
      if (row.visible) { 
       var values = []; 
       angular.forEach(exportColumnHeaders, function(column) { 
       var value = row.entity[column.name]; 
       if (column.name == 'mondayAwrv' || column.name == 'mondayCredit' || column.name == 'mondayPer' || 
        column.name == 'tuesdayAwrv' || column.name == 'tuesdayCredit' || column.name == 'tuesdayPer' || 
        column.name == 'wednesdayAwrv' || column.name == 'wednesdayCredit' || column.name == 'wednesdayPer' || 
        column.name == 'thursdayAwrv' || column.name == 'thursdayCredit' || column.name == 'thursdayPer' || 
        column.name == 'fridayAwrv' || column.name == 'fridayCredit' || column.name == 'fridayPer') value = $filter('rentalFilter')(value); 


       values.push({ 
        value: value 
       }); 

       }); 
       exportData.push(values); 
      } 
      }); 

      var content = uiGridExporterService.prepareAsPdf($scope.gridApi.grid, exportColumnHeaders, exportData); 

      content.pageMargins = [40, 80, 40, 60]; 

      //pdfMake.createPdf(content).open(); 
      return $scope.gridApi.grid.columns[i].getAggregationValue(); 
     */ 

    } 

이 바닥 글에 대한 값을 수출하고 무엇에 동일하게 적용하려고 2 진수 장소 제한

$scope.export = function(){ 
     //$scope.gridApi.exporter.pdfExport(uiGridExporterConstants.ALL, uiGridExporterConstants.ALL); 
     var exportData = []; 
     var exportColumnHeaders = $scope.gridOptions.showHeader ? uiGridExporterService.getColumnHeaders($scope.gridApi.grid, uiGridExporterConstants.VISIBLE) : []; 
     angular.forEach($scope.gridApi.grid.rows, function(row) { 
     if (row.visible) { 
      var values = []; 
      angular.forEach(exportColumnHeaders, function(column) { 
      var value = row.entity[column.name]; 
      if (column.name == 'mondayAwrv' || column.name == 'mondayCredit' || column.name == 'mondayPer' || 
       column.name == 'tuesdayAwrv' || column.name == 'tuesdayCredit' || column.name == 'tuesdayPer' || 
       column.name == 'wednesdayAwrv' || column.name == 'wednesdayCredit' || column.name == 'wednesdayPer' || 
       column.name == 'thursdayAwrv' || column.name == 'thursdayCredit' || column.name == 'thursdayPer' || 
       column.name == 'fridayAwrv' || column.name == 'fridayCredit' || column.name == 'fridayPer') value = $filter('rentalFilter')(value); 


      values.push({ 
       value: value 
      }); 

      }); 
      exportData.push(values); 
     } 
     }); 

     var content = uiGridExporterService.prepareAsPdf($scope.gridApi.grid, exportColumnHeaders, exportData); 

     pdfMake.createPdf(content).open(); 


    } 

함께 표시됩니다.

$scope.gridOptions.exporterPdfFooter = { 
     margin: [10, 5, 20, 10],  
     table: { 

      widths: [ '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%', '6%',], 

      body: [ 
        [ '', {text: ($scope.getFooterValue(1)), alignment: 'right'}, {text: ($scope.getFooterValue(2)), alignment: 'right'}, {text: ($scope.getFooterValue(3)), alignment: 'right'}, {text: ($scope.getFooterValue(4)), alignment: 'right'}, {text: ($scope.getFooterValue(5)), alignment: 'right'}, {text: ($scope.getFooterValue(6)), alignment: 'right'} ], 

      ]   
     } 
    }; 

어떻게 바닥 글에 필터가 2 진수 포인트를 제한하기 위해 적용 할 수 있는가?
도움을 주시면 감사하겠습니다.

답변

0

알 내가해야 할 일을했을이 exporterPdfFooter 내 몸에 필터를 추가했다

숫자는 기본 응용 프로그램 내에서이 번호 필터를 올바르게 표시됩니다
body: [ 
      [{text: $filter('netFilter')($scope.getFooterValue(1))} ], 

      ] 
0

AngularJS는 소수점 이하 자릿수를 필터링하기 위해 built in filter을가집니다.

사용자 정의 필터 다음에이 필터를 간단하게 파이프 할 수 있습니다. 예 : 나는 내보낼 때

<span>{{myNumber | myCustomFilter | number:2}}</span> 
+0

문제입니다 pdf에 내용. 이 숫자는 ui-grid-footer를 내보낼 때 pdf 내의 변경 사항을 반영하지 않습니다. 나는 $ scope.export 내에서 메인 그리드에 사용한 것과 같은 기술이라고 생각하지만 칼럼 이름이 아닌 getFooterValue를 적용해야한다. – Adrew

+0

어떻게 할 수 있는가? – Adrew