@sis-cc/dotstatsuite-components 17.5.0 → 17.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -80,7 +80,6 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
80
80
|
end = reported.end;
|
|
81
81
|
var reportTimeNote = (0, _date.getReportedTimePeriodNote)(reportYearStart, start, end, options.frequency, options.isRtl);
|
|
82
82
|
notes = R.isNil(reportTimeNote) ? notes : R.append(reportTimeNote, notes);
|
|
83
|
-
//__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
84
83
|
}
|
|
85
84
|
if (isNaN(__indexPosition)) {
|
|
86
85
|
__indexPosition = (0, _dotstatsuiteSdmxjs.getCodeOrder)({ annotations: valueAnnotations });
|
|
@@ -95,7 +94,7 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
95
94
|
__indexPosition: __indexPosition,
|
|
96
95
|
__index: __index
|
|
97
96
|
});
|
|
98
|
-
return isTimeDimension ? (0, _refineTimePeriod.refineTimePeriod)(res, { locale: locale }) : res;
|
|
97
|
+
return isTimeDimension ? (0, _refineTimePeriod.refineTimePeriod)(res, { locale: locale, monthlyFormat: timeFormat }) : res;
|
|
99
98
|
}), R.ifElse(R.always(isTimeDimension), R.pipe(R.sortWith([R.ascend(function (val) {
|
|
100
99
|
return _dateFns2.default.getTime(new Date(R.prop('start', val)));
|
|
101
100
|
}), R.descend(function (val) {
|
|
@@ -61,7 +61,7 @@ var getFormat = function getFormat(freqDisplay) {
|
|
|
61
61
|
if (freqDisplay === 'S') {
|
|
62
62
|
return 'HH:mm:ss';
|
|
63
63
|
}
|
|
64
|
-
return 'MMM';
|
|
64
|
+
return 'YYYY-MMM';
|
|
65
65
|
};
|
|
66
66
|
|
|
67
67
|
var getEndDate = function getEndDate(start, mult, duration) {
|
|
@@ -75,26 +75,32 @@ var getEndDate = function getEndDate(start, mult, duration) {
|
|
|
75
75
|
return dateFns.subSeconds(endDate, 1);
|
|
76
76
|
};
|
|
77
77
|
|
|
78
|
-
var computeName = function computeName(start, end, freqDisplay, locale) {
|
|
78
|
+
var computeName = function computeName(start, end, freqDisplay, locale, format) {
|
|
79
79
|
var opts = { locale: (0, _date.getLocale)(locale) };
|
|
80
80
|
var isSameDay = dateFns.isSameDay(start, end);
|
|
81
81
|
var isSameYear = dateFns.isSameYear(start, end);
|
|
82
82
|
if (freqDisplay === 'H' || freqDisplay === 'm' || freqDisplay === 'S') {
|
|
83
83
|
var dayFormat = getFormat('D');
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return dateFns.format(start, dayFormat + ' ' + timeFormat, opts) + ' - ' + dateFns.format(end, dayFormat + ' ' + timeFormat, opts);
|
|
84
|
+
if (isSameDay) return dateFns.format(start, dayFormat, opts) + ' ' + dateFns.format(start, format, opts) + ' - ' + dateFns.format(end, format, opts);
|
|
85
|
+
return dateFns.format(start, dayFormat + ' ' + format, opts) + ' - ' + dateFns.format(end, dayFormat + ' ' + format, opts);
|
|
87
86
|
}
|
|
88
|
-
if (freqDisplay
|
|
89
|
-
|
|
90
|
-
return dateFns.format(start, _format, opts) + ' - ' + dateFns.format(end, _format, opts);
|
|
87
|
+
if (freqDisplay !== 'M') {
|
|
88
|
+
return dateFns.format(start, format, opts) + ' - ' + dateFns.format(end, format, opts);
|
|
91
89
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
90
|
+
|
|
91
|
+
if (isSameYear && !R.includes('-', format)) {
|
|
92
|
+
var yearFormatMatch = R.match(/([Y]+)/, format);
|
|
93
|
+
var monthFormatMatch = R.match(/([M]+|Mo)/, format);
|
|
94
|
+
var yearFormat = R.length(yearFormatMatch) >= 2 ? R.nth(1, yearFormatMatch) : null;
|
|
95
|
+
var monthFormat = R.length(monthFormatMatch) >= 2 ? R.nth(1, monthFormatMatch) : null;
|
|
96
|
+
var formattedYear = yearFormat ? dateFns.format(start, yearFormat, opts) : null;
|
|
97
|
+
var formattedMonths = monthFormat ? dateFns.format(start, monthFormat, opts) + ' - ' + dateFns.format(end, monthFormat, opts) : null;
|
|
98
|
+
if (monthFormat) {
|
|
99
|
+
return R.pipe(function (format) {
|
|
100
|
+
return yearFormat ? R.replace(yearFormat, formattedYear, format) : format;
|
|
101
|
+
}, R.replace(monthFormat, formattedMonths))(format);
|
|
102
|
+
}
|
|
96
103
|
}
|
|
97
|
-
var format = locale === 'fr' ? monthFormat + ' ' + yearFormat : yearFormat + '-' + monthFormat;
|
|
98
104
|
return dateFns.format(start, format, opts) + ' - ' + dateFns.format(end, format, opts);
|
|
99
105
|
};
|
|
100
106
|
|
|
@@ -107,7 +113,9 @@ var getStartDate = exports.getStartDate = function getStartDate(start) {
|
|
|
107
113
|
};
|
|
108
114
|
|
|
109
115
|
var refineTimePeriod = exports.refineTimePeriod = function refineTimePeriod(timePeriod, _ref) {
|
|
110
|
-
var locale = _ref.locale
|
|
116
|
+
var locale = _ref.locale,
|
|
117
|
+
_ref$monthlyFormat = _ref.monthlyFormat,
|
|
118
|
+
monthlyFormat = _ref$monthlyFormat === undefined ? 'YYYY-MMM' : _ref$monthlyFormat;
|
|
111
119
|
var id = timePeriod.id;
|
|
112
120
|
|
|
113
121
|
var split = R.split('/', id);
|
|
@@ -136,7 +144,8 @@ var refineTimePeriod = exports.refineTimePeriod = function refineTimePeriod(time
|
|
|
136
144
|
var duration = !R.isEmpty(timeIndicator) && _duration === 'M' ? 'm' : _duration;
|
|
137
145
|
var endDate = getEndDate(startDate, mult, duration);
|
|
138
146
|
var freqDisplay = computeDisplayFreq(start, duration);
|
|
139
|
-
var
|
|
147
|
+
var format = freqDisplay === 'M' ? monthlyFormat : getFormat(freqDisplay);
|
|
148
|
+
var name = computeName((0, _date.dateWithoutTZ)(startDate), (0, _date.dateWithoutTZ)(endDate), freqDisplay, locale, format);
|
|
140
149
|
return (0, _extends3.default)({}, timePeriod, {
|
|
141
150
|
id: id,
|
|
142
151
|
name: name,
|
package/package.json
CHANGED
|
@@ -56,7 +56,6 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
56
56
|
end = reported.end;
|
|
57
57
|
const reportTimeNote = getReportedTimePeriodNote(reportYearStart, start, end, options.frequency, options.isRtl);
|
|
58
58
|
notes = R.isNil(reportTimeNote) ? notes : R.append(reportTimeNote, notes);
|
|
59
|
-
//__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
60
59
|
}
|
|
61
60
|
if (isNaN(__indexPosition)) {
|
|
62
61
|
__indexPosition = getCodeOrder({ annotations: valueAnnotations });
|
|
@@ -78,7 +77,7 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
78
77
|
__indexPosition,
|
|
79
78
|
__index,
|
|
80
79
|
});
|
|
81
|
-
return isTimeDimension ? refineTimePeriod(res, { locale }) : res;
|
|
80
|
+
return isTimeDimension ? refineTimePeriod(res, { locale, monthlyFormat: timeFormat }) : res;
|
|
82
81
|
}),
|
|
83
82
|
R.ifElse(
|
|
84
83
|
R.always(isTimeDimension),
|
|
@@ -47,7 +47,7 @@ const getFormat = (freqDisplay) => {
|
|
|
47
47
|
if (freqDisplay === 'S') {
|
|
48
48
|
return 'HH:mm:ss';
|
|
49
49
|
}
|
|
50
|
-
return 'MMM';
|
|
50
|
+
return 'YYYY-MMM';
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
const getEndDate = (start, mult, duration) => {
|
|
@@ -61,27 +61,34 @@ const getEndDate = (start, mult, duration) => {
|
|
|
61
61
|
return dateFns.subSeconds(endDate, 1);
|
|
62
62
|
};
|
|
63
63
|
|
|
64
|
-
const computeName = (start, end, freqDisplay, locale) => {
|
|
64
|
+
const computeName = (start, end, freqDisplay, locale, format) => {
|
|
65
65
|
const opts = { locale: getLocale(locale) };
|
|
66
66
|
const isSameDay = dateFns.isSameDay(start, end);
|
|
67
67
|
const isSameYear = dateFns.isSameYear(start, end);
|
|
68
68
|
if (freqDisplay === 'H' || freqDisplay === 'm' || freqDisplay === 'S') {
|
|
69
69
|
const dayFormat = getFormat('D');
|
|
70
|
-
const timeFormat = getFormat(freqDisplay);
|
|
71
70
|
if (isSameDay)
|
|
72
|
-
return `${dateFns.format(start, dayFormat, opts)} ${dateFns.format(start,
|
|
73
|
-
return `${dateFns.format(start, `${dayFormat} ${
|
|
71
|
+
return `${dateFns.format(start, dayFormat, opts)} ${dateFns.format(start, format, opts)} - ${dateFns.format(end, format, opts)}`;
|
|
72
|
+
return `${dateFns.format(start, `${dayFormat} ${format}`, opts)} - ${dateFns.format(end, `${dayFormat} ${format}`, opts)}`;
|
|
74
73
|
}
|
|
75
|
-
if (freqDisplay
|
|
76
|
-
const format = getFormat(freqDisplay);
|
|
74
|
+
if (freqDisplay !== 'M') {
|
|
77
75
|
return `${dateFns.format(start, format, opts)} - ${dateFns.format(end, format, opts)}`;
|
|
78
76
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
|
|
78
|
+
if (isSameYear && !R.includes('-', format)) {
|
|
79
|
+
const yearFormatMatch = R.match(/([Y]+)/, format);
|
|
80
|
+
const monthFormatMatch = R.match(/([M]+|Mo)/, format);
|
|
81
|
+
const yearFormat = R.length(yearFormatMatch) >= 2 ? R.nth(1, yearFormatMatch) : null;
|
|
82
|
+
const monthFormat = R.length(monthFormatMatch) >= 2 ? R.nth(1, monthFormatMatch) : null;
|
|
83
|
+
const formattedYear = yearFormat ? dateFns.format(start, yearFormat, opts) : null;
|
|
84
|
+
const formattedMonths = monthFormat ? `${dateFns.format(start, monthFormat, opts)} - ${dateFns.format(end, monthFormat, opts)}` : null;
|
|
85
|
+
if (monthFormat) {
|
|
86
|
+
return R.pipe(
|
|
87
|
+
format => yearFormat ? R.replace(yearFormat, formattedYear, format) : format,
|
|
88
|
+
R.replace(monthFormat, formattedMonths)
|
|
89
|
+
)(format);
|
|
90
|
+
}
|
|
83
91
|
}
|
|
84
|
-
const format = locale === 'fr' ? `${monthFormat} ${yearFormat}` : `${yearFormat}-${monthFormat}`;
|
|
85
92
|
return `${dateFns.format(start, format, opts)} - ${dateFns.format(end, format, opts)}`;
|
|
86
93
|
};
|
|
87
94
|
|
|
@@ -93,7 +100,7 @@ export const getStartDate = (start) => {
|
|
|
93
100
|
return dateFns.addMinutes(date, -date.getTimezoneOffset());
|
|
94
101
|
};
|
|
95
102
|
|
|
96
|
-
export const refineTimePeriod = (timePeriod, { locale }) => {
|
|
103
|
+
export const refineTimePeriod = (timePeriod, { locale, monthlyFormat='YYYY-MMM' }) => {
|
|
97
104
|
const { id } = timePeriod;
|
|
98
105
|
const split = R.split('/', id);
|
|
99
106
|
if (R.length(split) !== 2) {
|
|
@@ -111,7 +118,8 @@ export const refineTimePeriod = (timePeriod, { locale }) => {
|
|
|
111
118
|
const duration = !R.isEmpty(timeIndicator) && _duration === 'M' ? 'm' : _duration;
|
|
112
119
|
const endDate = getEndDate(startDate, mult, duration);
|
|
113
120
|
const freqDisplay = computeDisplayFreq(start, duration);
|
|
114
|
-
const
|
|
121
|
+
const format = freqDisplay === 'M' ? monthlyFormat : getFormat(freqDisplay);
|
|
122
|
+
const name = computeName(dateWithoutTZ(startDate), dateWithoutTZ(endDate), freqDisplay, locale, format);
|
|
115
123
|
return ({
|
|
116
124
|
...timePeriod,
|
|
117
125
|
id,
|
|
@@ -26,7 +26,7 @@ describe('refineTimePeriod tests', () => {
|
|
|
26
26
|
});
|
|
27
27
|
});
|
|
28
28
|
it('2 years range on March, fr', () => {
|
|
29
|
-
expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'fr' })).to.deep.equal({
|
|
29
|
+
expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'fr', monthlyFormat: 'MMM YYYY' })).to.deep.equal({
|
|
30
30
|
id: '2015-03/P2Y',
|
|
31
31
|
name: 'mars 2015 - févr. 2017',
|
|
32
32
|
start: '2015-03-01T00:00:00.000Z',
|
|
@@ -74,13 +74,29 @@ describe('refineTimePeriod tests', () => {
|
|
|
74
74
|
});
|
|
75
75
|
});
|
|
76
76
|
it('3 months range, fr', () => {
|
|
77
|
-
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr' })).to.deep.equal({
|
|
77
|
+
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr', monthlyFormat: 'MMM YYYY' })).to.deep.equal({
|
|
78
78
|
id: '2015/P3M',
|
|
79
79
|
name: 'janv. - mars 2015',
|
|
80
80
|
start: '2015-01-01T00:00:00.000Z',
|
|
81
81
|
end: '2015-03-31T23:59:59.000Z'
|
|
82
82
|
});
|
|
83
83
|
});
|
|
84
|
+
it('3 months range, fr, format = "YY Mo"', () => {
|
|
85
|
+
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr', monthlyFormat: 'YY Mo' })).to.deep.equal({
|
|
86
|
+
id: '2015/P3M',
|
|
87
|
+
name: '15 1 - 3o',
|
|
88
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
89
|
+
end: '2015-03-31T23:59:59.000Z'
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
it('3 months range, fr, format = "MMMM"', () => {
|
|
93
|
+
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr', monthlyFormat: 'MMMM' })).to.deep.equal({
|
|
94
|
+
id: '2015/P3M',
|
|
95
|
+
name: 'janvier - mars',
|
|
96
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
97
|
+
end: '2015-03-31T23:59:59.000Z'
|
|
98
|
+
});
|
|
99
|
+
});
|
|
84
100
|
it('19 months range, en', () => {
|
|
85
101
|
expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'en' })).to.deep.equal({
|
|
86
102
|
id: '2015/P19M',
|
|
@@ -90,7 +106,7 @@ describe('refineTimePeriod tests', () => {
|
|
|
90
106
|
});
|
|
91
107
|
});
|
|
92
108
|
it('19 months range, fr', () => {
|
|
93
|
-
expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'fr' })).to.deep.equal({
|
|
109
|
+
expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'fr', monthlyFormat: 'MMM YYYY' })).to.deep.equal({
|
|
94
110
|
id: '2015/P19M',
|
|
95
111
|
name: 'janv. 2015 - juill. 2016',
|
|
96
112
|
start: '2015-01-01T00:00:00.000Z',
|
|
@@ -106,7 +122,7 @@ describe('refineTimePeriod tests', () => {
|
|
|
106
122
|
});
|
|
107
123
|
});
|
|
108
124
|
it('4 months range from April, fr', () => {
|
|
109
|
-
expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'fr' })).to.deep.equal({
|
|
125
|
+
expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'fr', monthlyFormat: 'MMM YYYY' })).to.deep.equal({
|
|
110
126
|
id: '2015-04/P4M',
|
|
111
127
|
name: 'avr. - juill. 2015',
|
|
112
128
|
start: '2015-04-01T00:00:00.000Z',
|
|
@@ -122,7 +138,7 @@ describe('refineTimePeriod tests', () => {
|
|
|
122
138
|
});
|
|
123
139
|
});
|
|
124
140
|
it('2 months range from December, fr', () => {
|
|
125
|
-
expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'fr' })).to.deep.equal({
|
|
141
|
+
expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'fr', monthlyFormat: 'MMM YYYY' })).to.deep.equal({
|
|
126
142
|
id: '2015-12/P2M',
|
|
127
143
|
name: 'déc. 2015 - janv. 2016',
|
|
128
144
|
start: '2015-12-01T00:00:00.000Z',
|