2014-12-01 2 views
3

Я пытаюсь экспортировать данные из ng-table с использованием ngTableExport plugin for angularjs, но это только экспорт данных с 1 страницы. Я ищу решение, которое экспортирует все данные из таблицы (включая разбитые на страницы данные, которые также имеют сортировку или данные фильтра, поэтому не могут напрямую использовать массив).Как экспортировать целые данные из таблицы в angularjs, включая все разбитые на страницы данные?

Ниже я даю свой код, как-то мой plunker link не работает, но я могу сделать экспорт на свою локальную кодовую базу.

<a class="btn btn-primary" ng-mousedown="csv.generate()" ng-href="{{ csv.link() }}" download="myreport.csv">Export</a> 
<table ng-table="tableParams" show-filter="false" class="table" export-csv="csv"> 
    <tr ng-repeat="item in $data" height="10px"> 
    <td data-title="'Date'">{{translate(item[0])}}</td> 
    <td data-title="'Tasks Run Count'">{{item[1]}}</td> 
    </tr> 
</table> 

$scope.translate = function(value) { 
    if (value === null || value === undefined) 
    return value; 
    var monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]; 
    var myDate = new Date(value); 
    return myDate.getDate() + " " + monthNames[myDate.getMonth()] + " " + myDate.getFullYear(); 
} 

$scope.tasksRunData = [ 
    [1412582400000, 135, 1412582400000, 9], 
    [1412586000000, 324, 1412586000000, 144], 
    [1412589600000, 324, 1412589600000, 108], 
    [1412593200000, 324, 1412593200000, 36], 
    [1412596800000, 324, 1412596800000, 54], 
    [1412600400000, 324, 1412600400000, 36], 
    [1412604000000, 324, 1412604000000, 36], 
    [1412607600000, 324, 1412607600000, 36], 
    [1412611200000, 324, 1412611200000, 36], 
    [1412614800000, 324, 1412614800000, 36], 
    [1412618400000, 324, 1412618400000, 36], 
    [1412622000000, 324, 1412622000000, 36], 
    [1412625600000, 324, 1412625600000, 36], 
    [1412629200000, 198, 1412629200000, 36], 
    [1412632800000, 108, 1412632800000, 36], 
    [1412636400000, 306, 1412636400000, 36], 
    [1412640000000, 324, 1412640000000, 153], 
    [1412643600000, 324, 1412643600000, 117], 
    [1412647200000, 288, 1412647200000, 36], 
    [1412650800000, 189, 1412650800000, 36], 
    [1412654400000, 324, 1412654400000, 36], 
    [1412658000000, 324, 1412658000000, 36], 
    [1412661600000, 324, 1412661600000, 36], 
    [1412665200000, 324, 1412665200000, 36], 
    [1412668800000, 324, 1412668800000, 36], 
    [1412672400000, 324, 1412672400000, 135], 
    [1412676000000, 324, 1412676000000, 117], 
    [1412679600000, 324, 1412679600000, 36], 
    [1412683200000, 306, 1412683200000, 54], 
    [1412686800000, 324, 1412686800000, 36], 
    [1412690400000, 324, 1412690400000, 36], 
    [1412694000000, 324, 1412694000000, 36], 
    [1412697600000, 324, 1412697600000, 36], 
    [1412701200000, 324, 1412701200000, 36], 
    [1412704800000, 324, 1412704800000, 36], 
    [1412708400000, 324, 1412708400000, 36], 
    [1412712000000, 324, 1412712000000, 36], 
    [1412715600000, 324, 1412715600000, 36], 
    [1412719200000, 324, 1412719200000, 36], 
    [1412722800000, 324, 1412722800000, 36], 
    [1412726400000, 324, 1412726400000, 162], 
    [1412730000000, 324, 1412730000000, 108], 
    [1412733600000, 324, 1412733600000, 36], 
    [1412737200000, 324, 1412737200000, 36], 
    [1412740800000, 324, 1412740800000, 36], 
    [1412744400000, 324, 1412744400000, 36], 
    [1412748000000, 324, 1412748000000, 36], 
    [1412751600000, 324, 1412751600000, 36], 
    [1412755200000, 324, 1412755200000, 36], 
    [1412758800000, 324, 1412758800000, 135], 
    [1412762400000, 324, 1412762400000, 117], 
    [1412766000000, 324, 1412766000000, 36], 
    [1412769600000, 324, 1412769600000, 54], 
    [1412773200000, 324, 1412773200000, 36], 
    [1412776800000, 297, 1412776800000, 36], 
    [1412780400000, 324, 1412780400000, 36], 
    [1412784000000, 324, 1412784000000, 36], 
    [1412787600000, 324, 1412787600000, 36], 
    [1412791200000, 324, 1412791200000, 36], 
    [1412794800000, 279, 1412794800000, 27], 
    [1412798400000, 324, 1412798400000, 36], 
    [1412802000000, 324, 1412802000000, 36], 
    [1412805600000, 324, 1412805600000, 36], 
    [1412809200000, 324, 1412809200000, 36], 
    [1412812800000, 324, 1412812800000, 126], 
    [1412816400000, 324, 1412816400000, 144], 
    [1412820000000, 324, 1412820000000, 36], 
    [1412823600000, 324, 1412823600000, 36], 
    [1412827200000, 324, 1412827200000, 36], 
    [1412830800000, 324, 1412830800000, 36], 
    [1412834400000, 324, 1412834400000, 36], 
    [1412838000000, 297, 1412838000000, 36], 
    [1412841600000, 324, 1412841600000, 36], 
    [1412845200000, 324, 1412845200000, 135], 
    [1412848800000, 324, 1412848800000, 117], 
    [1412852400000, 324, 1412852400000, 36], 
    [1412856000000, 324, 1412856000000, 54], 
    [1412859600000, 324, 1412859600000, 36], 
    [1412863200000, 324, 1412863200000, 36], 
    [1412866800000, 324, 1412866800000, 36], 
    [1412870400000, 324, 1412870400000, 36], 
    [1412874000000, 324, 1412874000000, 36], 
    [1412877600000, 162, 1412877600000, 18] 
]; 

$scope.tableParams = new ngTableParams({ 
    page: 1, // show first page 
    count: 10 // count per page 
}, { 
    total: $scope.tasksRunData.length, // length of data 
    counts: [], 
    getData: function($defer, params) { 
    //console.log($scope.tasksRunData.length); 
    params.total($scope.tasksRunData.length); 
    $defer.resolve($scope.tasksRunData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
    } 
}); 

$scope.exportPdf = function($event) { 
    alert("Export to pdf click handler"); 
} 

ответ

3

Я нашел way here по davisford

Я сделал некоторые существенные изменения - а именно, мне нужно, чтобы исправить это, чтобы работать с пейджером нг-таблицы. Если пейджер включен, плагин экспорта будет экспортировать только страницу данных. Мое исправление в основном переписывается, и оно не идеально, но, похоже, оно работает для меня.

Поскольку плагин сбрасывает данные таблицы HTML, трюк заключается в том, чтобы заставить таблицу отключить пейджер, позволить браузеру повторно отобразить всю таблицу и только затем проанализировать таблицу (после чего будет восстановлен пейджер, хорошо и все).

forked repo here с несколькими улучшениями (для некоторых).

Другие подходящие решения также приветствуются.

+0

спасибо. Вы сохраняете мои часы. –

0
  • Добавлена ​​глобальная переменная в нг-таблицы

    вар selectedEntries = '' ";

  • затем редактировать следующую функцию в нг-таблицы

    функция GetData (данные, Params) { if (данные == null) { возвращение []; }

      var options = angular.extend({}, defaultDataOptions, params.settings().dataOptions); 
    
          var fData = options.applyFilter ? applyFilter(data, params) : data; 
          var orderedData = options.applySort ? applySort(fData, params) : fData; 
          selectedEntries = orderedData; 
          return options.applyPaging ? applyPaging(orderedData, params) : orderedData; 
         } 
    
  • Затем добавьте следующую функцию в нг-таблицы

    this.orderedData = функция() { возврата selectedEntries };

  • Вы можете получить выбранные записи из контроллера следующего

    $ scope.self.tableParams.orderedData();

Смежные вопросы