Skip to content

Commit 57dad57

Browse files
Global format config. Implementation for dateFormat, dateTimeFormat, NumberFormat
1 parent 2922132 commit 57dad57

2 files changed

Lines changed: 45 additions & 12 deletions

File tree

packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_date_text.ts

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,29 @@
11
import dateLocalization from '@js/common/core/localization/date';
22
import dateUtils from '@js/core/utils/date';
3+
import { getGlobalFormatByDataType } from '@ts/core/m_global_format_config';
34

45
import type { TargetedAppointment, ViewType } from '../../types';
56

7+
const formatTooltipDatePart = (date: Date): string => {
8+
const globalFormat = getGlobalFormatByDataType('date');
9+
10+
if (globalFormat) {
11+
return dateLocalization.format(date, globalFormat) as string;
12+
}
13+
14+
return String(dateLocalization.format(date, 'monthandday'));
15+
};
16+
17+
const formatTooltipTimePart = (date: Date): string => {
18+
const globalFormat = getGlobalFormatByDataType('time');
19+
20+
if (globalFormat) {
21+
return dateLocalization.format(date, globalFormat) as string;
22+
}
23+
24+
return String(dateLocalization.format(date, 'shorttime'));
25+
};
26+
627
export enum DateFormatType {
728
DATETIME = 'DATETIME',
829
TIME = 'TIME',
@@ -25,24 +46,22 @@ export const getDateFormatType = (
2546
};
2647

2748
export const getDateText = (startDate: Date, endDate: Date, formatType: DateFormatType): string => {
28-
const dateFormat = 'monthandday';
29-
const timeFormat = 'shorttime';
3049
const isSameDate = dateUtils.sameDate(startDate, endDate);
3150

3251
switch (formatType) {
3352
case DateFormatType.DATETIME:
3453
return [
35-
dateLocalization.format(startDate, dateFormat),
54+
formatTooltipDatePart(startDate),
3655
' ',
37-
dateLocalization.format(startDate, timeFormat),
56+
formatTooltipTimePart(startDate),
3857
' - ',
39-
isSameDate ? '' : `${dateLocalization.format(endDate, dateFormat)} `,
40-
dateLocalization.format(endDate, timeFormat),
58+
isSameDate ? '' : `${formatTooltipDatePart(endDate)} `,
59+
formatTooltipTimePart(endDate),
4160
].join('');
4261
case DateFormatType.TIME:
43-
return `${dateLocalization.format(startDate, timeFormat)} - ${dateLocalization.format(endDate, timeFormat)}`;
62+
return `${formatTooltipTimePart(startDate)} - ${formatTooltipTimePart(endDate)}`;
4463
case DateFormatType.DATE:
45-
return `${dateLocalization.format(startDate, dateFormat)}${isSameDate ? '' : ` - ${dateLocalization.format(endDate, dateFormat)}`}`;
64+
return `${formatTooltipDatePart(startDate)}${isSameDate ? '' : ` - ${formatTooltipDatePart(endDate)}`}`;
4665
default:
4766
return '';
4867
}

packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/integration.appointmentTooltip.tests.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,26 @@ const moduleConfig = {
3939
module('Global formatting config (spec): Scheduler tooltip', {
4040
beforeEach() {
4141
fx.off = true;
42-
this.originalConfig = config();
42+
const globalConfig = config();
43+
this.savedGlobalFormats = {
44+
dateFormat: globalConfig.dateFormat,
45+
timeFormat: globalConfig.timeFormat,
46+
dateTimeFormat: globalConfig.dateTimeFormat,
47+
numberFormat: globalConfig.numberFormat,
48+
};
4349
},
4450
afterEach() {
4551
fx.off = false;
4652
hide();
47-
config(this.originalConfig);
53+
const globalConfig = config();
54+
Object.keys(this.savedGlobalFormats).forEach((key) => {
55+
const value = this.savedGlobalFormats[key];
56+
if(value === undefined) {
57+
delete globalConfig[key];
58+
} else {
59+
globalConfig[key] = value;
60+
}
61+
});
4862
}
4963
}, () => {
5064
const createScheduler = (options) => createWrapper($.extend({
@@ -60,7 +74,7 @@ module('Global formatting config (spec): Scheduler tooltip', {
6074

6175
test('implicit Scheduler tooltip time format uses global timeFormat', async function(assert) {
6276
config({
63-
...this.originalConfig,
77+
...config(),
6478
timeFormat: (date) => `T${date.getHours()}`,
6579
});
6680

@@ -83,7 +97,7 @@ module('Global formatting config (spec): Scheduler tooltip', {
8397

8498
test('implicit Scheduler tooltip date/time use global dateFormat and timeFormat', async function(assert) {
8599
config({
86-
...this.originalConfig,
100+
...config(),
87101
dateFormat: (date) => `D${date.getDate()}`,
88102
timeFormat: (date) => `T${date.getHours()}`,
89103
});

0 commit comments

Comments
 (0)