0

コードで ag-grid コンポーネントを使用しており、CSV としてエクスポートするときに顧客のニーズに合わせて日付列がフォーマットされるようにしたいと考えています。現在、js Date オブジェクトのデフォルト形式が使用されています。コードは次の場所にあります。

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

コードに次の変更を直接加えることができますが、これは明らかに悪い習慣です。私は JavaScript にかなり慣れていないので、このようなライブラリの機能を拡張/オーバーライドする標準的な方法があるかどうか疑問に思っていました。

提案された変更 (これは、ts を使用する github バージョンではなく、js バージョンに加えた変更を示していることに注意してください):

--- 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);
+                            }
4

2 に答える 2

0

私の解決策は、ag グリッド コンポーネントの関数を次のように手動で更新することでした。うまくいくように見えますが、ベストプラクティスかどうかはわかりません。コメントしてくれる人いますか?

オブジェクト内の関数を自分のものに置き換えます:

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

新機能

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 = {}));
于 2016-02-08T11:58:52.320 に答える