2016-02-05 5 views
0

J'utilise le composant ag-grid dans mon code et je souhaite que les colonnes de date soient formatées en fonction des besoins des clients lors de l'exportation au format CSV. Un format par défaut pour un objet js Date est actuellement utilisé. Le code se trouve ici:Modifier le format de composant de grille angulaire colonnes exportées

https://github.com/ceolter/ag-grid/blob/master/src/ts/csvCreator.ts

je pourrais faire le changement suivant au code directement, mais cela est évidemment une mauvaise pratique. Je suis relativement novice en JavaScript et je me demandais s'il existait un moyen standard d'étendre/de surcharger les fonctionnalités dans une bibliothèque comme celle-ci.

Modification proposée (note ce qui montre le changement que je fis à la version js pas la version github qui utilise ts):

--- Common/scripts/agGrid/ag-grid.js (revision b0e7d54e61e6371b0cab94428cb4329f9f62db11) 
+++ Common/scripts/agGrid/ag-grid.js (revision) 
@@ -1848,7 +1848,11 @@ 
+    var exportDateAs = function(dt){if (dt instanceof Date) 
+     return dt.getFullYear() + "/" + (dt.getMonth()+1) + "/" + dt.getDate(); 
+    }; 

@@ -1883,6 +1887,9 @@ 
+       if (valueForCell instanceof Date){ 
+        valueForCell = exportDateAs(valueForCell); 
+       } 

Répondre

0

Ma solution a été de mettre à jour la fonction dans le composant réseau ag manuellement comme suit. Cela semble fonctionner, mais je ne sais pas si c'est la meilleure pratique. Quelqu'un veut-il commenter?

Remplacer la fonction dans l'objet de mon propre:

ag.grid.CsvCreator.prototype.getDataAsCsv = agCustom.getDataAsCsv; 

Nouvelle fonction

var agCustom; 
(function (agCustom) { 

    // This is a modified version of the getDataAsCsv from 
    // agGrid to allow date formatting in csv export 
    agCustom.getDataAsCsv = function (params) { 
     var LINE_SEPARATOR = '\r\n'; 
... 
     var exportDateAs = function(dt){if (dt instanceof Date) 
      return dt.getFullYear() + "/" + (dt.getMonth()+1) + "/" + dt.getDate(); 
... 
       else { 
        valueForCell = _this.valueService.getValue(column.colDef, node.data, node); 
        if (valueForCell instanceof Date){ 
         valueForCell = exportDateAs(valueForCell); 
        } 
... 
})(agCustom || (agCustom = {}));