Skip to content

Commit c9b613c

Browse files
fix using global format in header filter in dataGrid for dates
1 parent 84325e9 commit c9b613c

2 files changed

Lines changed: 51 additions & 1 deletion

File tree

packages/devextreme/js/__internal/grids/grid_core/header_filter/m_header_filter.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,31 @@ import {
3030
} from './m_header_filter_core';
3131

3232
const DATE_INTERVAL_FORMATS = {
33+
year(value) {
34+
return String(value);
35+
},
3336
month(value) {
3437
return dateLocalization.getMonthNames()[value - 1];
3538
},
3639
quarter(value) {
3740
return dateLocalization.format(new Date(2000, value * 3 - 1), 'quarter');
3841
},
42+
day(value) {
43+
return String(value);
44+
},
45+
hour(value) {
46+
return String(value);
47+
},
48+
minute(value) {
49+
return String(value);
50+
},
51+
second(value) {
52+
return String(value);
53+
},
3954
};
4055

56+
const getDateIntervalFormat = (intervalKey: string) => DATE_INTERVAL_FORMATS[intervalKey] ?? ((v) => String(v));
57+
4158
function ungroupUTCDates(items, dateParts?, dates?) {
4259
dateParts = dateParts || [];
4360
dates = dates || [];
@@ -84,7 +101,7 @@ export const getFormatOptions = function (value, column, currentLevel) {
84101
result.groupInterval = groupInterval[currentLevel];
85102

86103
if (gridCoreUtils.isDateType(column.dataType)) {
87-
result.format = DATE_INTERVAL_FORMATS[groupInterval[currentLevel]];
104+
result.format = getDateIntervalFormat(groupInterval[currentLevel]);
88105
} else if (column.dataType === 'number') {
89106
result.getDisplayFormat = function () {
90107
const formatOptions = { format: column.format, target: 'headerFilter' };

packages/devextreme/testing/tests/DevExpress.ui.widgets.dataGrid/headerFilter.tests.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -804,6 +804,39 @@ QUnit.module('Header Filter', {
804804
assert.strictEqual($popupContent.find(`.${TREEVIEW_ITEM_CLASS}`).eq(4).text(), '4', 'text the nested treeview item');
805805
});
806806

807+
QUnit.test('Header filter date groupInterval levels do not use global numberFormat (T day level)', function(assert) {
808+
const that = this;
809+
const testElement = $('#container');
810+
const savedConfig = { ...config() };
811+
812+
try {
813+
config({
814+
...config(),
815+
numberFormat: '#,##0.00',
816+
});
817+
818+
that.columns[0].dataType = 'date';
819+
that.items = [{ Test1: new Date(1986, 0, 1), Test2: 'test2' }, { Test1: new Date(1986, 0, 4), Test2: 'test4' }];
820+
that.setupDataGrid();
821+
that.columnHeadersView.render(testElement);
822+
that.headerFilterView.render(testElement);
823+
824+
that.headerFilterController.showHeaderFilterMenu(0);
825+
826+
const $popupContent = that.headerFilterView.getPopupContainer().$content();
827+
828+
assert.strictEqual($popupContent.find(`.${TREEVIEW_ITEM_CLASS}`).eq(1).text(), '1986', 'year level is not formatted as number');
829+
830+
$($popupContent.find('.dx-treeview-toggle-item-visibility').first()).trigger('dxclick');
831+
$($popupContent.find('.dx-treeview-toggle-item-visibility').last()).trigger('dxclick');
832+
833+
assert.strictEqual($popupContent.find(`.${TREEVIEW_ITEM_CLASS}`).eq(3).text(), '1', 'day level is not formatted as number');
834+
assert.strictEqual($popupContent.find(`.${TREEVIEW_ITEM_CLASS}`).eq(4).text(), '4', 'day level is not formatted as number');
835+
} finally {
836+
config(savedConfig);
837+
}
838+
});
839+
807840
// T274290
808841
QUnit.test('Header filter with items when column lookup with simple types', function(assert) {
809842
// arrange

0 commit comments

Comments
 (0)