@sis-cc/dotstatsuite-components 17.2.0 → 17.4.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.
- package/lib/rules/src/v8-transformer.js +13 -4
- package/lib/rules2/src/getCombinationDefinitions.js +18 -3
- package/lib/rules2/src/getHeaderCombinations.js +5 -1
- package/lib/rules2/src/refineTimePeriod.js +146 -0
- package/package.json +1 -1
- package/src/rules/src/v8-transformer.js +21 -15
- package/src/rules2/src/getCombinationDefinitions.js +17 -4
- package/src/rules2/src/getHeaderCombinations.js +6 -1
- package/src/rules2/src/refineTimePeriod.js +122 -0
- package/test/getCombinationDefinitions.test.js +16 -0
- package/test/getHeaderCombinations.test.js +2 -1
- package/test/refineTimePeriod.test.js +564 -0
|
@@ -27,6 +27,8 @@ var _getReportingYearStart = require('./preparators/getReportingYearStart');
|
|
|
27
27
|
|
|
28
28
|
var _src = require('../../rules2/src');
|
|
29
29
|
|
|
30
|
+
var _refineTimePeriod = require('../../rules2/src/refineTimePeriod');
|
|
31
|
+
|
|
30
32
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
31
33
|
|
|
32
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
@@ -78,14 +80,14 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
78
80
|
end = reported.end;
|
|
79
81
|
var reportTimeNote = (0, _date.getReportedTimePeriodNote)(reportYearStart, start, end, options.frequency, options.isRtl);
|
|
80
82
|
notes = R.isNil(reportTimeNote) ? notes : R.append(reportTimeNote, notes);
|
|
81
|
-
__indexPosition =
|
|
83
|
+
//__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
82
84
|
}
|
|
83
85
|
if (isNaN(__indexPosition)) {
|
|
84
86
|
__indexPosition = (0, _dotstatsuiteSdmxjs.getCodeOrder)({ annotations: valueAnnotations });
|
|
85
87
|
}
|
|
86
88
|
var timeFormat = R.prop('timeFormat', options);
|
|
87
|
-
|
|
88
|
-
id: R.
|
|
89
|
+
var res = (0, _extends3.default)({}, value, {
|
|
90
|
+
id: R.when(R.isNil, R.always(parent + '-' + __index))(value.id),
|
|
89
91
|
display: !isHidden,
|
|
90
92
|
name: R.when(R.always(isTimeDimension), R.always((0, _date.getReportedTimePeriodLabel)(options.frequency, timeFormat, locale)(reportYearStart, { id: value.id, reportedStart: start, start: new Date(value.start) })))(name),
|
|
91
93
|
start: start ? start.toISOString() : null,
|
|
@@ -93,7 +95,14 @@ var dataTransformer = exports.dataTransformer = function dataTransformer(dataNew
|
|
|
93
95
|
__indexPosition: __indexPosition,
|
|
94
96
|
__index: __index
|
|
95
97
|
});
|
|
96
|
-
|
|
98
|
+
return isTimeDimension ? (0, _refineTimePeriod.refineTimePeriod)(res, { locale: locale }) : res;
|
|
99
|
+
}), R.ifElse(R.always(isTimeDimension), R.pipe(R.sortWith([R.ascend(function (val) {
|
|
100
|
+
return _dateFns2.default.getTime(new Date(R.prop('start', val)));
|
|
101
|
+
}), R.descend(function (val) {
|
|
102
|
+
return _dateFns2.default.getTime(new Date(R.prop('end', val)));
|
|
103
|
+
})]), R.addIndex(R.map)(function (val, ind) {
|
|
104
|
+
return R.assoc('__indexcPosition', ind, val);
|
|
105
|
+
})), R.sortWith([R.ascend(R.prop('__indexPosition')), R.ascend(R.propOr(-1, 'order'))])), R.addIndex(R.map)(function (val, index) {
|
|
97
106
|
return R.assoc('__indexPosition', index, val);
|
|
98
107
|
}),
|
|
99
108
|
/* NEW */
|
|
@@ -17,10 +17,25 @@ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj;
|
|
|
17
17
|
|
|
18
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
19
|
|
|
20
|
+
var parseTexts = function parseTexts(texts) {
|
|
21
|
+
return R.reduce(function (acc, text) {
|
|
22
|
+
var splitted = R.split(':', text);
|
|
23
|
+
if (R.length(splitted) !== 2) {
|
|
24
|
+
return acc;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
var _splitted = (0, _slicedToArray3.default)(splitted, 2),
|
|
28
|
+
id = _splitted[0],
|
|
29
|
+
name = _splitted[1];
|
|
30
|
+
|
|
31
|
+
return R.assoc(id, name, acc);
|
|
32
|
+
}, {}, texts);
|
|
33
|
+
};
|
|
34
|
+
|
|
20
35
|
var parseCombinationDefinition = exports.parseCombinationDefinition = function parseCombinationDefinition(locale) {
|
|
21
36
|
return function (title, texts) {
|
|
22
37
|
return R.useWith(function (titles, texts) {
|
|
23
|
-
return R.
|
|
38
|
+
return R.reduce(function (acc, title) {
|
|
24
39
|
var split = R.split(':', title);
|
|
25
40
|
if (R.length(split) !== 2) {
|
|
26
41
|
return acc;
|
|
@@ -36,10 +51,10 @@ var parseCombinationDefinition = exports.parseCombinationDefinition = function p
|
|
|
36
51
|
return R.append({
|
|
37
52
|
id: id,
|
|
38
53
|
concepts: R.split(',', codes),
|
|
39
|
-
name: R.
|
|
54
|
+
name: R.hasPath([locale, id], texts) ? R.path([locale, id], texts) : '[' + id + ']'
|
|
40
55
|
}, acc);
|
|
41
56
|
}, [], titles);
|
|
42
|
-
}, [R.split(';'), R.map(R.split(';'))])(title, texts);
|
|
57
|
+
}, [R.split(';'), R.map(R.pipe(R.split(';'), parseTexts))])(title, texts);
|
|
43
58
|
};
|
|
44
59
|
};
|
|
45
60
|
|
|
@@ -11,6 +11,8 @@ var R = _interopRequireWildcard(_ramda);
|
|
|
11
11
|
|
|
12
12
|
var _src = require('../../rules/src');
|
|
13
13
|
|
|
14
|
+
var _constants = require('./constants');
|
|
15
|
+
|
|
14
16
|
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
15
17
|
|
|
16
18
|
var getHeaderCombinations = exports.getHeaderCombinations = function getHeaderCombinations(combinations, dimensions, attributes, display) {
|
|
@@ -25,7 +27,9 @@ var getHeaderCombinations = exports.getHeaderCombinations = function getHeaderCo
|
|
|
25
27
|
|
|
26
28
|
var combinedDisplay = function combinedDisplay(_display, values) {
|
|
27
29
|
if (_display === 'label') {
|
|
28
|
-
return R.pipe(R.filter(
|
|
30
|
+
return R.pipe(R.filter(function (val) {
|
|
31
|
+
return R.propOr(true, 'display', val) && !R.includes(val.id, _constants.REJECTED_VALUE_IDS);
|
|
32
|
+
}), R.map((0, _src.dimensionValueDisplay)(_display)), R.join(', '))(values);
|
|
29
33
|
}
|
|
30
34
|
return R.pipe(R.map((0, _src.dimensionValueDisplay)(_display)), R.join(', '))(values);
|
|
31
35
|
};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.refineTimePeriod = exports.getStartDate = undefined;
|
|
7
|
+
|
|
8
|
+
var _slicedToArray2 = require('babel-runtime/helpers/slicedToArray');
|
|
9
|
+
|
|
10
|
+
var _slicedToArray3 = _interopRequireDefault(_slicedToArray2);
|
|
11
|
+
|
|
12
|
+
var _extends2 = require('babel-runtime/helpers/extends');
|
|
13
|
+
|
|
14
|
+
var _extends3 = _interopRequireDefault(_extends2);
|
|
15
|
+
|
|
16
|
+
var _ramda = require('ramda');
|
|
17
|
+
|
|
18
|
+
var R = _interopRequireWildcard(_ramda);
|
|
19
|
+
|
|
20
|
+
var _dateFns = require('date-fns');
|
|
21
|
+
|
|
22
|
+
var dateFns = _interopRequireWildcard(_dateFns);
|
|
23
|
+
|
|
24
|
+
var _date = require('../../rules/src/date');
|
|
25
|
+
|
|
26
|
+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
|
|
27
|
+
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
|
|
30
|
+
var computeDisplayFreq = function computeDisplayFreq(start, duration) {
|
|
31
|
+
var startMinute = dateFns.startOfMinute(start);
|
|
32
|
+
var startHour = dateFns.startOfHour(start);
|
|
33
|
+
var startDay = dateFns.startOfDay(start);
|
|
34
|
+
if (!dateFns.isEqual(start, startMinute) || duration === 'S') {
|
|
35
|
+
return 'S';
|
|
36
|
+
} else if (!dateFns.isEqual(start, startHour) || !dateFns.isEqual(start, startDay) || duration === 'H' || duration === 'm') {
|
|
37
|
+
return 'm';
|
|
38
|
+
} else if (!dateFns.isFirstDayOfMonth(start) || duration === 'D') {
|
|
39
|
+
return 'D';
|
|
40
|
+
} else if (dateFns.getMonth(start) !== 0 || duration === 'M') {
|
|
41
|
+
return 'M';
|
|
42
|
+
}
|
|
43
|
+
return 'Y';
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
var getAdder = function getAdder(duration) {
|
|
47
|
+
if (duration === 'S') return dateFns.addSeconds;
|
|
48
|
+
if (duration === 'm') return dateFns.addMinutes;
|
|
49
|
+
if (duration === 'H') return dateFns.addHours;
|
|
50
|
+
if (duration === 'D') return dateFns.addDays;
|
|
51
|
+
if (duration === 'M') return dateFns.addMonths;
|
|
52
|
+
return dateFns.addYears;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
var getFormat = function getFormat(freqDisplay) {
|
|
56
|
+
if (freqDisplay === 'Y') return 'YYYY';
|
|
57
|
+
if (freqDisplay === 'D') return 'YYYY-MM-DD';
|
|
58
|
+
if (freqDisplay === 'H' || freqDisplay === 'm') {
|
|
59
|
+
return 'HH:mm';
|
|
60
|
+
}
|
|
61
|
+
if (freqDisplay === 'S') {
|
|
62
|
+
return 'HH:mm:ss';
|
|
63
|
+
}
|
|
64
|
+
return 'MMM';
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
var getEndDate = function getEndDate(start, mult, duration) {
|
|
68
|
+
var adder = getAdder(duration);
|
|
69
|
+
var endDate = adder(start, Number(mult));
|
|
70
|
+
var startTZ = start.getTimezoneOffset();
|
|
71
|
+
var endTZ = endDate.getTimezoneOffset();
|
|
72
|
+
if (startTZ !== endTZ) {
|
|
73
|
+
endDate = dateFns.addMinutes(endDate, Math.abs(endTZ) - Math.abs(startTZ));
|
|
74
|
+
}
|
|
75
|
+
return dateFns.subSeconds(endDate, 1);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
var computeName = function computeName(start, end, freqDisplay, locale) {
|
|
79
|
+
var opts = { locale: (0, _date.getLocale)(locale) };
|
|
80
|
+
var isSameDay = dateFns.isSameDay(start, end);
|
|
81
|
+
var isSameYear = dateFns.isSameYear(start, end);
|
|
82
|
+
if (freqDisplay === 'H' || freqDisplay === 'm' || freqDisplay === 'S') {
|
|
83
|
+
var dayFormat = getFormat('D');
|
|
84
|
+
var timeFormat = getFormat(freqDisplay);
|
|
85
|
+
if (isSameDay) return dateFns.format(start, dayFormat, opts) + ' ' + dateFns.format(start, timeFormat, opts) + ' - ' + dateFns.format(end, timeFormat, opts);
|
|
86
|
+
return dateFns.format(start, dayFormat + ' ' + timeFormat, opts) + ' - ' + dateFns.format(end, dayFormat + ' ' + timeFormat, opts);
|
|
87
|
+
}
|
|
88
|
+
if (freqDisplay === 'D' || freqDisplay === 'Y') {
|
|
89
|
+
var _format = getFormat(freqDisplay);
|
|
90
|
+
return dateFns.format(start, _format, opts) + ' - ' + dateFns.format(end, _format, opts);
|
|
91
|
+
}
|
|
92
|
+
var yearFormat = getFormat('Y');
|
|
93
|
+
var monthFormat = getFormat('M');
|
|
94
|
+
if (isSameYear && locale === 'fr') {
|
|
95
|
+
return dateFns.format(start, monthFormat, opts) + ' - ' + dateFns.format(end, monthFormat, opts) + ' ' + dateFns.format(start, yearFormat, opts);
|
|
96
|
+
}
|
|
97
|
+
var format = locale === 'fr' ? monthFormat + ' ' + yearFormat : yearFormat + '-' + monthFormat;
|
|
98
|
+
return dateFns.format(start, format, opts) + ' - ' + dateFns.format(end, format, opts);
|
|
99
|
+
};
|
|
100
|
+
|
|
101
|
+
var getStartDate = exports.getStartDate = function getStartDate(start) {
|
|
102
|
+
if (!R.includes('T', start) && !R.endsWith('Z', start)) {
|
|
103
|
+
return new Date(start);
|
|
104
|
+
}
|
|
105
|
+
var date = new Date(start);
|
|
106
|
+
return dateFns.addMinutes(date, -date.getTimezoneOffset());
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
var refineTimePeriod = exports.refineTimePeriod = function refineTimePeriod(timePeriod, _ref) {
|
|
110
|
+
var locale = _ref.locale;
|
|
111
|
+
var id = timePeriod.id;
|
|
112
|
+
|
|
113
|
+
var split = R.split('/', id);
|
|
114
|
+
if (R.length(split) !== 2) {
|
|
115
|
+
var _start = getStartDate(R.prop('start', timePeriod));
|
|
116
|
+
var end = getStartDate(R.prop('end', timePeriod));
|
|
117
|
+
return (0, _extends3.default)({}, timePeriod, { start: _start.toISOString(), end: end.toISOString() });
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var _split = (0, _slicedToArray3.default)(split, 2),
|
|
121
|
+
start = _split[0],
|
|
122
|
+
range = _split[1];
|
|
123
|
+
|
|
124
|
+
var startDate = getStartDate(start);
|
|
125
|
+
var match = R.match(/^P(T?)(\d+)([YMDHS])$/, range);
|
|
126
|
+
if (R.isEmpty(match) || !dateFns.isValid(startDate)) {
|
|
127
|
+
return timePeriod;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
var _R$tail = R.tail(match),
|
|
131
|
+
_R$tail2 = (0, _slicedToArray3.default)(_R$tail, 3),
|
|
132
|
+
timeIndicator = _R$tail2[0],
|
|
133
|
+
mult = _R$tail2[1],
|
|
134
|
+
_duration = _R$tail2[2];
|
|
135
|
+
|
|
136
|
+
var duration = !R.isEmpty(timeIndicator) && _duration === 'M' ? 'm' : _duration;
|
|
137
|
+
var endDate = getEndDate(startDate, mult, duration);
|
|
138
|
+
var freqDisplay = computeDisplayFreq(start, duration);
|
|
139
|
+
var name = computeName((0, _date.dateWithoutTZ)(startDate), (0, _date.dateWithoutTZ)(endDate), freqDisplay, locale);
|
|
140
|
+
return (0, _extends3.default)({}, timePeriod, {
|
|
141
|
+
id: id,
|
|
142
|
+
name: name,
|
|
143
|
+
start: startDate.toISOString(),
|
|
144
|
+
end: endDate.toISOString()
|
|
145
|
+
});
|
|
146
|
+
};
|
package/package.json
CHANGED
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
import { getReportedTimePeriodLabel, getReportedTimePeriodNote, getReportedTimePeriod } from './date';
|
|
8
8
|
import { getReportingYearStart } from './preparators/getReportingYearStart';
|
|
9
9
|
import { getNotDisplayedIds } from '../../rules2/src';
|
|
10
|
+
import { refineTimePeriod } from '../../rules2/src/refineTimePeriod';
|
|
10
11
|
|
|
11
12
|
const TIME_PERIOD_ID = 'TIME_PERIOD';
|
|
12
13
|
|
|
@@ -55,23 +56,17 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
55
56
|
end = reported.end;
|
|
56
57
|
const reportTimeNote = getReportedTimePeriodNote(reportYearStart, start, end, options.frequency, options.isRtl);
|
|
57
58
|
notes = R.isNil(reportTimeNote) ? notes : R.append(reportTimeNote, notes);
|
|
58
|
-
__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
59
|
+
//__indexPosition = dateFns.getTime(new Date(R.prop('start', value)));
|
|
59
60
|
}
|
|
60
61
|
if (isNaN(__indexPosition)) {
|
|
61
62
|
__indexPosition = getCodeOrder({ annotations: valueAnnotations });
|
|
62
63
|
}
|
|
63
64
|
const timeFormat = R.prop('timeFormat', options);
|
|
64
|
-
|
|
65
|
+
const res = ({
|
|
65
66
|
...value,
|
|
66
|
-
id: R.
|
|
67
|
-
R.
|
|
68
|
-
|
|
69
|
-
R.always(`${parent}-${__index}`)
|
|
70
|
-
),
|
|
71
|
-
R.when(
|
|
72
|
-
R.always(isTimeDimension),
|
|
73
|
-
R.replace(/M/g, '')
|
|
74
|
-
)
|
|
67
|
+
id: R.when(
|
|
68
|
+
R.isNil,
|
|
69
|
+
R.always(`${parent}-${__index}`)
|
|
75
70
|
)(value.id),
|
|
76
71
|
display: !isHidden,
|
|
77
72
|
name: R.when(
|
|
@@ -83,11 +78,22 @@ export const dataTransformer = (dataNew, options = {}) => {
|
|
|
83
78
|
__indexPosition,
|
|
84
79
|
__index,
|
|
85
80
|
});
|
|
81
|
+
return isTimeDimension ? refineTimePeriod(res, { locale }) : res;
|
|
86
82
|
}),
|
|
87
|
-
R.
|
|
88
|
-
R.
|
|
89
|
-
R.
|
|
90
|
-
|
|
83
|
+
R.ifElse(
|
|
84
|
+
R.always(isTimeDimension),
|
|
85
|
+
R.pipe(
|
|
86
|
+
R.sortWith([
|
|
87
|
+
R.ascend(val => dateFns.getTime(new Date(R.prop('start', val)))),
|
|
88
|
+
R.descend(val => dateFns.getTime(new Date(R.prop('end', val)))),
|
|
89
|
+
]),
|
|
90
|
+
R.addIndex(R.map)((val, ind) => R.assoc('__indexcPosition', ind, val))
|
|
91
|
+
),
|
|
92
|
+
R.sortWith([
|
|
93
|
+
R.ascend(R.prop('__indexPosition')),
|
|
94
|
+
R.ascend(R.propOr(-1, 'order'))
|
|
95
|
+
])
|
|
96
|
+
),
|
|
91
97
|
R.addIndex(R.map)((val, index) => R.assoc('__indexPosition', index, val)),
|
|
92
98
|
/* NEW */
|
|
93
99
|
R.sortBy(R.prop('__index'))
|
|
@@ -1,8 +1,21 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
2
|
|
|
3
|
+
const parseTexts = texts => R.reduce(
|
|
4
|
+
(acc, text) => {
|
|
5
|
+
const splitted = R.split(':', text);
|
|
6
|
+
if (R.length(splitted) !== 2) {
|
|
7
|
+
return acc;
|
|
8
|
+
}
|
|
9
|
+
const [id, name] = splitted;
|
|
10
|
+
return R.assoc(id, name, acc);
|
|
11
|
+
},
|
|
12
|
+
{},
|
|
13
|
+
texts
|
|
14
|
+
);
|
|
15
|
+
|
|
3
16
|
export const parseCombinationDefinition = (locale) => (title, texts) => R.useWith(
|
|
4
17
|
(titles, texts) =>
|
|
5
|
-
R.
|
|
18
|
+
R.reduce((acc, title) => {
|
|
6
19
|
const split = R.split(':', title);
|
|
7
20
|
if (R.length(split) !== 2) {
|
|
8
21
|
return acc;
|
|
@@ -14,12 +27,12 @@ export const parseCombinationDefinition = (locale) => (title, texts) => R.useWit
|
|
|
14
27
|
return R.append({
|
|
15
28
|
id,
|
|
16
29
|
concepts: R.split(',', codes),
|
|
17
|
-
name: R.
|
|
18
|
-
? R.
|
|
30
|
+
name: R.hasPath([locale, id], texts)
|
|
31
|
+
? R.path([locale, id], texts)
|
|
19
32
|
: `[${id}]`,
|
|
20
33
|
}, acc);
|
|
21
34
|
}, [], titles),
|
|
22
|
-
[R.split(';'), R.map(R.split(';'))],
|
|
35
|
+
[R.split(';'), R.map(R.pipe(R.split(';'), parseTexts))],
|
|
23
36
|
)(title, texts);
|
|
24
37
|
|
|
25
38
|
export const getCombinationDefinitions = (annotations, locale) => {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as R from 'ramda';
|
|
2
2
|
import { dimensionValueDisplay } from '../../rules/src';
|
|
3
|
+
import { REJECTED_VALUE_IDS } from './constants';
|
|
3
4
|
|
|
4
5
|
export const getHeaderCombinations = (combinations, dimensions, attributes, display) => {
|
|
5
6
|
const indexedDimensions = R.indexBy(R.prop('id'), dimensions);
|
|
@@ -14,7 +15,11 @@ export const getHeaderCombinations = (combinations, dimensions, attributes, disp
|
|
|
14
15
|
|
|
15
16
|
const combinedDisplay = (_display, values) => {
|
|
16
17
|
if (_display === 'label') {
|
|
17
|
-
return R.pipe(
|
|
18
|
+
return R.pipe(
|
|
19
|
+
R.filter(val => R.propOr(true, 'display', val) && !R.includes(val.id, REJECTED_VALUE_IDS)),
|
|
20
|
+
R.map(dimensionValueDisplay(_display)),
|
|
21
|
+
R.join(', ')
|
|
22
|
+
)(values);
|
|
18
23
|
}
|
|
19
24
|
return R.pipe(R.map(dimensionValueDisplay(_display)), R.join(', '))(values);
|
|
20
25
|
};
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as R from 'ramda';
|
|
2
|
+
import * as dateFns from 'date-fns';
|
|
3
|
+
import { getLocale, dateWithoutTZ } from '../../rules/src/date';
|
|
4
|
+
|
|
5
|
+
const computeDisplayFreq = (start, duration) => {
|
|
6
|
+
const startMinute = dateFns.startOfMinute(start);
|
|
7
|
+
const startHour = dateFns.startOfHour(start);
|
|
8
|
+
const startDay = dateFns.startOfDay(start);
|
|
9
|
+
if (!dateFns.isEqual(start, startMinute) || duration === 'S') {
|
|
10
|
+
return 'S';
|
|
11
|
+
}
|
|
12
|
+
else if (!dateFns.isEqual(start, startHour) || !dateFns.isEqual(start, startDay)
|
|
13
|
+
|| duration === 'H' || duration === 'm') {
|
|
14
|
+
return 'm';
|
|
15
|
+
}
|
|
16
|
+
else if (!dateFns.isFirstDayOfMonth(start) || duration === 'D') {
|
|
17
|
+
return 'D';
|
|
18
|
+
}
|
|
19
|
+
else if (dateFns.getMonth(start) !== 0 || duration === 'M') {
|
|
20
|
+
return 'M';
|
|
21
|
+
}
|
|
22
|
+
return 'Y';
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
const getAdder = (duration) => {
|
|
26
|
+
if (duration === 'S')
|
|
27
|
+
return dateFns.addSeconds;
|
|
28
|
+
if (duration === 'm')
|
|
29
|
+
return dateFns.addMinutes;
|
|
30
|
+
if (duration === 'H')
|
|
31
|
+
return dateFns.addHours;
|
|
32
|
+
if (duration === 'D')
|
|
33
|
+
return dateFns.addDays;
|
|
34
|
+
if (duration === 'M')
|
|
35
|
+
return dateFns.addMonths;
|
|
36
|
+
return dateFns.addYears;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
const getFormat = (freqDisplay) => {
|
|
40
|
+
if (freqDisplay === 'Y')
|
|
41
|
+
return 'YYYY';
|
|
42
|
+
if (freqDisplay === 'D')
|
|
43
|
+
return 'YYYY-MM-DD';
|
|
44
|
+
if (freqDisplay === 'H' || freqDisplay === 'm') {
|
|
45
|
+
return 'HH:mm';
|
|
46
|
+
}
|
|
47
|
+
if (freqDisplay === 'S') {
|
|
48
|
+
return 'HH:mm:ss';
|
|
49
|
+
}
|
|
50
|
+
return 'MMM';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const getEndDate = (start, mult, duration) => {
|
|
54
|
+
const adder = getAdder(duration);
|
|
55
|
+
let endDate = adder(start, Number(mult));
|
|
56
|
+
const startTZ = start.getTimezoneOffset();
|
|
57
|
+
const endTZ = endDate.getTimezoneOffset();
|
|
58
|
+
if (startTZ !== endTZ) {
|
|
59
|
+
endDate = dateFns.addMinutes(endDate, (Math.abs(endTZ) - Math.abs(startTZ)));
|
|
60
|
+
}
|
|
61
|
+
return dateFns.subSeconds(endDate, 1);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
const computeName = (start, end, freqDisplay, locale) => {
|
|
65
|
+
const opts = { locale: getLocale(locale) };
|
|
66
|
+
const isSameDay = dateFns.isSameDay(start, end);
|
|
67
|
+
const isSameYear = dateFns.isSameYear(start, end);
|
|
68
|
+
if (freqDisplay === 'H' || freqDisplay === 'm' || freqDisplay === 'S') {
|
|
69
|
+
const dayFormat = getFormat('D');
|
|
70
|
+
const timeFormat = getFormat(freqDisplay);
|
|
71
|
+
if (isSameDay)
|
|
72
|
+
return `${dateFns.format(start, dayFormat, opts)} ${dateFns.format(start, timeFormat, opts)} - ${dateFns.format(end, timeFormat, opts)}`;
|
|
73
|
+
return `${dateFns.format(start, `${dayFormat} ${timeFormat}`, opts)} - ${dateFns.format(end, `${dayFormat} ${timeFormat}`, opts)}`;
|
|
74
|
+
}
|
|
75
|
+
if (freqDisplay === 'D' || freqDisplay === 'Y') {
|
|
76
|
+
const format = getFormat(freqDisplay);
|
|
77
|
+
return `${dateFns.format(start, format, opts)} - ${dateFns.format(end, format, opts)}`;
|
|
78
|
+
}
|
|
79
|
+
const yearFormat = getFormat('Y');
|
|
80
|
+
const monthFormat = getFormat('M');
|
|
81
|
+
if (isSameYear && locale === 'fr') {
|
|
82
|
+
return `${dateFns.format(start, monthFormat, opts)} - ${dateFns.format(end, monthFormat, opts)} ${dateFns.format(start, yearFormat, opts)}`;
|
|
83
|
+
}
|
|
84
|
+
const format = locale === 'fr' ? `${monthFormat} ${yearFormat}` : `${yearFormat}-${monthFormat}`;
|
|
85
|
+
return `${dateFns.format(start, format, opts)} - ${dateFns.format(end, format, opts)}`;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const getStartDate = (start) => {
|
|
89
|
+
if (!R.includes('T', start) && !R.endsWith('Z', start)) {
|
|
90
|
+
return new Date(start);
|
|
91
|
+
}
|
|
92
|
+
const date = new Date(start);
|
|
93
|
+
return dateFns.addMinutes(date, -date.getTimezoneOffset());
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export const refineTimePeriod = (timePeriod, { locale }) => {
|
|
97
|
+
const { id } = timePeriod;
|
|
98
|
+
const split = R.split('/', id);
|
|
99
|
+
if (R.length(split) !== 2) {
|
|
100
|
+
const start = getStartDate(R.prop('start', timePeriod));
|
|
101
|
+
const end = getStartDate(R.prop('end', timePeriod))
|
|
102
|
+
return ({ ...timePeriod, start: start.toISOString(), end: end.toISOString() });
|
|
103
|
+
}
|
|
104
|
+
const [start, range] = split;
|
|
105
|
+
const startDate = getStartDate(start);
|
|
106
|
+
const match = R.match(/^P(T?)(\d+)([YMDHS])$/, range);
|
|
107
|
+
if (R.isEmpty(match) || !dateFns.isValid(startDate)) {
|
|
108
|
+
return timePeriod;
|
|
109
|
+
}
|
|
110
|
+
const [timeIndicator, mult, _duration] = R.tail(match);
|
|
111
|
+
const duration = !R.isEmpty(timeIndicator) && _duration === 'M' ? 'm' : _duration;
|
|
112
|
+
const endDate = getEndDate(startDate, mult, duration);
|
|
113
|
+
const freqDisplay = computeDisplayFreq(start, duration);
|
|
114
|
+
const name = computeName(dateWithoutTZ(startDate), dateWithoutTZ(endDate), freqDisplay, locale);
|
|
115
|
+
return ({
|
|
116
|
+
...timePeriod,
|
|
117
|
+
id,
|
|
118
|
+
name,
|
|
119
|
+
start: startDate.toISOString(),
|
|
120
|
+
end: endDate.toISOString()
|
|
121
|
+
})
|
|
122
|
+
};
|
|
@@ -85,4 +85,20 @@ describe('getCombinationDefinitions tests', () => {
|
|
|
85
85
|
{ id: 'COMB_2', name: '[COMB_2]', concepts: ['D3', 'D4', 'A2', 'A3'] },
|
|
86
86
|
]);
|
|
87
87
|
});
|
|
88
|
+
it('mixed order texts', () => {
|
|
89
|
+
const annotations = [
|
|
90
|
+
{ type: 'random', title: 'test' },
|
|
91
|
+
{ type: 'NOT_DISPLAYED', title: 'FREQ=A' },
|
|
92
|
+
{
|
|
93
|
+
type: 'COMBINED_CONCEPTS',
|
|
94
|
+
texts: { en: 'COMB_2:Second Combination;COMB_1:First Combination' },
|
|
95
|
+
title: 'COMB_1:D1,D2,A1;COMB_2:D3,D4,A2,A3'
|
|
96
|
+
}
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
expect(getCombinationDefinitions(annotations, 'en')).to.deep.equal([
|
|
100
|
+
{ id: 'COMB_1', name: 'First Combination', concepts: ['D1', 'D2', 'A1'] },
|
|
101
|
+
{ id: 'COMB_2', name: 'Second Combination', concepts: ['D3', 'D4', 'A2', 'A3'] },
|
|
102
|
+
]);
|
|
103
|
+
});
|
|
88
104
|
});
|
|
@@ -4,7 +4,7 @@ import { getHeaderCombinations } from '../src/rules2/src/';
|
|
|
4
4
|
describe('getHeaderCombinations tests', () => {
|
|
5
5
|
it('complete test', () => {
|
|
6
6
|
const combinations = [
|
|
7
|
-
{ id: 'COMB1', name: 'comb 1', header: true, concepts: ['DIM1', 'DIM2', 'ATTR1'] },
|
|
7
|
+
{ id: 'COMB1', name: 'comb 1', header: true, concepts: ['DIM1', 'DIM2', 'DIM4', 'ATTR1'] },
|
|
8
8
|
{ id: 'COMB2', name: 'comb 2', series: true, concepts: ['DIM3', 'ATTR2'] },
|
|
9
9
|
{ id: 'COMB3', name: 'comb 3', header: true, display: false, concepts: ['DIM3', 'ATTR2'] }
|
|
10
10
|
];
|
|
@@ -12,6 +12,7 @@ describe('getHeaderCombinations tests', () => {
|
|
|
12
12
|
const dimensions = [
|
|
13
13
|
{ id: 'DIM1', name: 'dim 1', values: [{ id: 'v', name: 'dim 1 value' }] },
|
|
14
14
|
{ id: 'DIM3', name: 'dim 3', values: [{ id: 'v', name: 'dim 3 value' }] },
|
|
15
|
+
{ id: 'DIM4', name: 'dim 4', values: [{ id: '_Z', name: 'Not applicable' }] },
|
|
15
16
|
];
|
|
16
17
|
|
|
17
18
|
const attributes = [
|
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { refineTimePeriod } from '../src/rules2/src/refineTimePeriod';
|
|
3
|
+
|
|
4
|
+
describe('refineTimePeriod tests', () => {
|
|
5
|
+
it('simple year', () => {
|
|
6
|
+
expect(refineTimePeriod({ id: '2015', start: '2015-01-01T00:00:00', end: '2016-12-31T23:59:59' }, { locale: 'en' })).to.deep.equal({
|
|
7
|
+
id: '2015',
|
|
8
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
9
|
+
end: '2016-12-31T23:59:59.000Z'
|
|
10
|
+
});
|
|
11
|
+
});
|
|
12
|
+
it('2 years range', () => {
|
|
13
|
+
expect(refineTimePeriod({ id: '2015/P2Y' }, { locale: 'en' })).to.deep.equal({
|
|
14
|
+
id: '2015/P2Y',
|
|
15
|
+
name: '2015 - 2016',
|
|
16
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
17
|
+
end: '2016-12-31T23:59:59.000Z'
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
it('2 years range on March, en', () => {
|
|
21
|
+
expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'en' })).to.deep.equal({
|
|
22
|
+
id: '2015-03/P2Y',
|
|
23
|
+
name: '2015-Mar - 2017-Feb',
|
|
24
|
+
start: '2015-03-01T00:00:00.000Z',
|
|
25
|
+
end: '2017-02-28T23:59:59.000Z'
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
it('2 years range on March, fr', () => {
|
|
29
|
+
expect(refineTimePeriod({ id: '2015-03/P2Y' }, { locale: 'fr' })).to.deep.equal({
|
|
30
|
+
id: '2015-03/P2Y',
|
|
31
|
+
name: 'mars 2015 - févr. 2017',
|
|
32
|
+
start: '2015-03-01T00:00:00.000Z',
|
|
33
|
+
end: '2017-02-28T23:59:59.000Z'
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
it('4 years range on Jun 17, en', () => {
|
|
37
|
+
expect(refineTimePeriod({ id: '2015-06-17/P4Y' }, { locale: 'en' })).to.deep.equal({
|
|
38
|
+
id: '2015-06-17/P4Y',
|
|
39
|
+
name: '2015-06-17 - 2019-06-16',
|
|
40
|
+
start: '2015-06-17T00:00:00.000Z',
|
|
41
|
+
end: '2019-06-16T23:59:59.000Z'
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
it('4 years range on Jun 17 15h, en', () => {
|
|
45
|
+
expect(refineTimePeriod({ id: '2015-06-17T15:00:00/P4Y' }, { locale: 'en' })).to.deep.equal({
|
|
46
|
+
id: '2015-06-17T15:00:00/P4Y',
|
|
47
|
+
name: '2015-06-17 15:00 - 2019-06-17 14:59',
|
|
48
|
+
start: '2015-06-17T15:00:00.000Z',
|
|
49
|
+
end: '2019-06-17T14:59:59.000Z'
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
it('4 years range on Jun 17 15h26, en', () => {
|
|
53
|
+
expect(refineTimePeriod({ id: '2015-06-17T15:26:00/P4Y' }, { locale: 'en' })).to.deep.equal({
|
|
54
|
+
id: '2015-06-17T15:26:00/P4Y',
|
|
55
|
+
name: '2015-06-17 15:26 - 2019-06-17 15:25',
|
|
56
|
+
start: '2015-06-17T15:26:00.000Z',
|
|
57
|
+
end: '2019-06-17T15:25:59.000Z'
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
it('4 years range on Jun 17 15h26m46, en', () => {
|
|
61
|
+
expect(refineTimePeriod({ id: '2015-06-17T15:26:46/P4Y' }, { locale: 'en' })).to.deep.equal({
|
|
62
|
+
id: '2015-06-17T15:26:46/P4Y',
|
|
63
|
+
name: '2015-06-17 15:26:46 - 2019-06-17 15:26:45',
|
|
64
|
+
start: '2015-06-17T15:26:46.000Z',
|
|
65
|
+
end: '2019-06-17T15:26:45.000Z'
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
it('3 months range, en', () => {
|
|
69
|
+
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'en' })).to.deep.equal({
|
|
70
|
+
id: '2015/P3M',
|
|
71
|
+
name: '2015-Jan - 2015-Mar',
|
|
72
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
73
|
+
end: '2015-03-31T23:59:59.000Z'
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
it('3 months range, fr', () => {
|
|
77
|
+
expect(refineTimePeriod({ id: '2015/P3M' }, { locale: 'fr' })).to.deep.equal({
|
|
78
|
+
id: '2015/P3M',
|
|
79
|
+
name: 'janv. - mars 2015',
|
|
80
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
81
|
+
end: '2015-03-31T23:59:59.000Z'
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
it('19 months range, en', () => {
|
|
85
|
+
expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'en' })).to.deep.equal({
|
|
86
|
+
id: '2015/P19M',
|
|
87
|
+
name: '2015-Jan - 2016-Jul',
|
|
88
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
89
|
+
end: '2016-07-31T23:59:59.000Z'
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
it('19 months range, fr', () => {
|
|
93
|
+
expect(refineTimePeriod({ id: '2015/P19M' }, { locale: 'fr' })).to.deep.equal({
|
|
94
|
+
id: '2015/P19M',
|
|
95
|
+
name: 'janv. 2015 - juill. 2016',
|
|
96
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
97
|
+
end: '2016-07-31T23:59:59.000Z'
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
it('4 months range from April, en', () => {
|
|
101
|
+
expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'en' })).to.deep.equal({
|
|
102
|
+
id: '2015-04/P4M',
|
|
103
|
+
name: '2015-Apr - 2015-Jul',
|
|
104
|
+
start: '2015-04-01T00:00:00.000Z',
|
|
105
|
+
end: '2015-07-31T23:59:59.000Z'
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
it('4 months range from April, fr', () => {
|
|
109
|
+
expect(refineTimePeriod({ id: '2015-04/P4M' }, { locale: 'fr' })).to.deep.equal({
|
|
110
|
+
id: '2015-04/P4M',
|
|
111
|
+
name: 'avr. - juill. 2015',
|
|
112
|
+
start: '2015-04-01T00:00:00.000Z',
|
|
113
|
+
end: '2015-07-31T23:59:59.000Z'
|
|
114
|
+
});
|
|
115
|
+
});
|
|
116
|
+
it('2 months range from December, en', () => {
|
|
117
|
+
expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'en' })).to.deep.equal({
|
|
118
|
+
id: '2015-12/P2M',
|
|
119
|
+
name: '2015-Dec - 2016-Jan',
|
|
120
|
+
start: '2015-12-01T00:00:00.000Z',
|
|
121
|
+
end: '2016-01-31T23:59:59.000Z'
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
it('2 months range from December, fr', () => {
|
|
125
|
+
expect(refineTimePeriod({ id: '2015-12/P2M' }, { locale: 'fr' })).to.deep.equal({
|
|
126
|
+
id: '2015-12/P2M',
|
|
127
|
+
name: 'déc. 2015 - janv. 2016',
|
|
128
|
+
start: '2015-12-01T00:00:00.000Z',
|
|
129
|
+
end: '2016-01-31T23:59:59.000Z'
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
it('5 months range from Feb 2', () => {
|
|
133
|
+
expect(refineTimePeriod({ id: '2015-02-02/P5M' }, { locale: 'en' })).to.deep.equal({
|
|
134
|
+
id: '2015-02-02/P5M',
|
|
135
|
+
name: '2015-02-02 - 2015-07-01',
|
|
136
|
+
start: '2015-02-02T00:00:00.000Z',
|
|
137
|
+
end: '2015-07-01T23:59:59.000Z'
|
|
138
|
+
});
|
|
139
|
+
});
|
|
140
|
+
it('17 months range from Feb 2', () => {
|
|
141
|
+
expect(refineTimePeriod({ id: '2015-02-02/P17M' }, { locale: 'en' })).to.deep.equal({
|
|
142
|
+
id: '2015-02-02/P17M',
|
|
143
|
+
name: '2015-02-02 - 2016-07-01',
|
|
144
|
+
start: '2015-02-02T00:00:00.000Z',
|
|
145
|
+
end: '2016-07-01T23:59:59.000Z'
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
it('5 months range from Feb 2 18h', () => {
|
|
149
|
+
expect(refineTimePeriod({ id: '2015-02-02T18:00:00/P5M' }, { locale: 'en' })).to.deep.equal({
|
|
150
|
+
id: '2015-02-02T18:00:00/P5M',
|
|
151
|
+
name: '2015-02-02 18:00 - 2015-07-02 17:59',
|
|
152
|
+
start: '2015-02-02T18:00:00.000Z',
|
|
153
|
+
end: '2015-07-02T17:59:59.000Z'
|
|
154
|
+
});
|
|
155
|
+
});
|
|
156
|
+
it('17 months range from Feb 2', () => {
|
|
157
|
+
expect(refineTimePeriod({ id: '2015-02-02T18:00:00/P17M' }, { locale: 'en' })).to.deep.equal({
|
|
158
|
+
id: '2015-02-02T18:00:00/P17M',
|
|
159
|
+
name: '2015-02-02 18:00 - 2016-07-02 17:59',
|
|
160
|
+
start: '2015-02-02T18:00:00.000Z',
|
|
161
|
+
end: '2016-07-02T17:59:59.000Z'
|
|
162
|
+
});
|
|
163
|
+
});
|
|
164
|
+
it('5 months range from Feb 2 18h25', () => {
|
|
165
|
+
expect(refineTimePeriod({ id: '2015-02-02T18:25:00/P5M' }, { locale: 'en' })).to.deep.equal({
|
|
166
|
+
id: '2015-02-02T18:25:00/P5M',
|
|
167
|
+
name: '2015-02-02 18:25 - 2015-07-02 18:24',
|
|
168
|
+
start: '2015-02-02T18:25:00.000Z',
|
|
169
|
+
end: '2015-07-02T18:24:59.000Z'
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
it('5 months range from Feb 2 18h25m23', () => {
|
|
173
|
+
expect(refineTimePeriod({ id: '2015-02-02T18:25:23/P5M' }, { locale: 'en' })).to.deep.equal({
|
|
174
|
+
id: '2015-02-02T18:25:23/P5M',
|
|
175
|
+
name: '2015-02-02 18:25:23 - 2015-07-02 18:25:22',
|
|
176
|
+
start: '2015-02-02T18:25:23.000Z',
|
|
177
|
+
end: '2015-07-02T18:25:22.000Z'
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
it('15 days range from 2015', () => {
|
|
181
|
+
expect(refineTimePeriod({ id: '2015/P15D' }, { locale: 'en' })).to.deep.equal({
|
|
182
|
+
id: '2015/P15D',
|
|
183
|
+
name: '2015-01-01 - 2015-01-15',
|
|
184
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
185
|
+
end: '2015-01-15T23:59:59.000Z'
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
it('366 days range from 2015', () => {
|
|
189
|
+
expect(refineTimePeriod({ id: '2015/P366D' }, { locale: 'en' })).to.deep.equal({
|
|
190
|
+
id: '2015/P366D',
|
|
191
|
+
name: '2015-01-01 - 2016-01-01',
|
|
192
|
+
start: '2015-01-01T00:00:00.000Z',
|
|
193
|
+
end: '2016-01-01T23:59:59.000Z'
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
it('31 days range from 2015 May', () => {
|
|
197
|
+
expect(refineTimePeriod({ id: '2015-05/P31D' }, { locale: 'en' })).to.deep.equal({
|
|
198
|
+
id: '2015-05/P31D',
|
|
199
|
+
name: '2015-05-01 - 2015-05-31',
|
|
200
|
+
start: '2015-05-01T00:00:00.000Z',
|
|
201
|
+
end: '2015-05-31T23:59:59.000Z'
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
it('33 days range from 2015 Dec', () => {
|
|
205
|
+
expect(refineTimePeriod({ id: '2015-12/P33D' }, { locale: 'en' })).to.deep.equal({
|
|
206
|
+
id: '2015-12/P33D',
|
|
207
|
+
name: '2015-12-01 - 2016-01-02',
|
|
208
|
+
start: '2015-12-01T00:00:00.000Z',
|
|
209
|
+
end: '2016-01-02T23:59:59.000Z'
|
|
210
|
+
});
|
|
211
|
+
});
|
|
212
|
+
it('31 days range from 2015 May 23', () => {
|
|
213
|
+
expect(refineTimePeriod({ id: '2015-05-23/P31D' }, { locale: 'en' })).to.deep.equal({
|
|
214
|
+
id: '2015-05-23/P31D',
|
|
215
|
+
name: '2015-05-23 - 2015-06-22',
|
|
216
|
+
start: '2015-05-23T00:00:00.000Z',
|
|
217
|
+
end: '2015-06-22T23:59:59.000Z'
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
it('33 days range from 2015 Dec 19', () => {
|
|
221
|
+
expect(refineTimePeriod({ id: '2015-12-19/P33D' }, { locale: 'en' })).to.deep.equal({
|
|
222
|
+
id: '2015-12-19/P33D',
|
|
223
|
+
name: '2015-12-19 - 2016-01-20',
|
|
224
|
+
start: '2015-12-19T00:00:00.000Z',
|
|
225
|
+
end: '2016-01-20T23:59:59.000Z'
|
|
226
|
+
});
|
|
227
|
+
});
|
|
228
|
+
it('31 days range from 2015 May 23 05h', () => {
|
|
229
|
+
expect(refineTimePeriod({ id: '2015-05-23T05:00:00/P31D' }, { locale: 'en' })).to.deep.equal({
|
|
230
|
+
id: '2015-05-23T05:00:00/P31D',
|
|
231
|
+
name: '2015-05-23 05:00 - 2015-06-23 04:59',
|
|
232
|
+
start: '2015-05-23T05:00:00.000Z',
|
|
233
|
+
end: '2015-06-23T04:59:59.000Z'
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
it('33 days range from 2015 Dec 19 12h', () => {
|
|
237
|
+
expect(refineTimePeriod({ id: '2015-12-19T12:00:00/P33D' }, { locale: 'en' })).to.deep.equal({
|
|
238
|
+
id: '2015-12-19T12:00:00/P33D',
|
|
239
|
+
name: '2015-12-19 12:00 - 2016-01-21 11:59',
|
|
240
|
+
start: '2015-12-19T12:00:00.000Z',
|
|
241
|
+
end: '2016-01-21T11:59:59.000Z'
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
it('31 days range from 2015 May 23 05h32', () => {
|
|
245
|
+
expect(refineTimePeriod({ id: '2015-05-23T05:32:00/P31D' }, { locale: 'en' })).to.deep.equal({
|
|
246
|
+
id: '2015-05-23T05:32:00/P31D',
|
|
247
|
+
name: '2015-05-23 05:32 - 2015-06-23 05:31',
|
|
248
|
+
start: '2015-05-23T05:32:00.000Z',
|
|
249
|
+
end: '2015-06-23T05:31:59.000Z'
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
it('33 days range from 2015 Dec 19 12h18', () => {
|
|
253
|
+
expect(refineTimePeriod({ id: '2015-12-19T12:18:00/P33D' }, { locale: 'en' })).to.deep.equal({
|
|
254
|
+
id: '2015-12-19T12:18:00/P33D',
|
|
255
|
+
name: '2015-12-19 12:18 - 2016-01-21 12:17',
|
|
256
|
+
start: '2015-12-19T12:18:00.000Z',
|
|
257
|
+
end: '2016-01-21T12:17:59.000Z'
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
it('31 days range from 2015 May 23 05h32m15', () => {
|
|
261
|
+
expect(refineTimePeriod({ id: '2015-05-23T05:32:15/P31D' }, { locale: 'en' })).to.deep.equal({
|
|
262
|
+
id: '2015-05-23T05:32:15/P31D',
|
|
263
|
+
name: '2015-05-23 05:32:15 - 2015-06-23 05:32:14',
|
|
264
|
+
start: '2015-05-23T05:32:15.000Z',
|
|
265
|
+
end: '2015-06-23T05:32:14.000Z'
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
it('33 days range from 2015 Dec 19 12h18m01', () => {
|
|
269
|
+
expect(refineTimePeriod({ id: '2015-12-19T12:18:01/P33D' }, { locale: 'en' })).to.deep.equal({
|
|
270
|
+
id: '2015-12-19T12:18:01/P33D',
|
|
271
|
+
name: '2015-12-19 12:18:01 - 2016-01-21 12:18:00',
|
|
272
|
+
start: '2015-12-19T12:18:01.000Z',
|
|
273
|
+
end: '2016-01-21T12:18:00.000Z'
|
|
274
|
+
});
|
|
275
|
+
});
|
|
276
|
+
it('4 hours range from 2016', () => {
|
|
277
|
+
expect(refineTimePeriod({ id: '2016/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
278
|
+
id: '2016/PT4H',
|
|
279
|
+
name: '2016-01-01 00:00 - 03:59',
|
|
280
|
+
start: '2016-01-01T00:00:00.000Z',
|
|
281
|
+
end: '2016-01-01T03:59:59.000Z'
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
it('32 hours range from 2016', () => {
|
|
285
|
+
expect(refineTimePeriod({ id: '2016/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
286
|
+
id: '2016/PT32H',
|
|
287
|
+
name: '2016-01-01 00:00 - 2016-01-02 07:59',
|
|
288
|
+
start: '2016-01-01T00:00:00.000Z',
|
|
289
|
+
end: '2016-01-02T07:59:59.000Z'
|
|
290
|
+
});
|
|
291
|
+
});
|
|
292
|
+
it('4 hours range from 2016 Jun', () => {
|
|
293
|
+
expect(refineTimePeriod({ id: '2016-06/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
294
|
+
id: '2016-06/PT4H',
|
|
295
|
+
name: '2016-06-01 00:00 - 03:59',
|
|
296
|
+
start: '2016-06-01T00:00:00.000Z',
|
|
297
|
+
end: '2016-06-01T03:59:59.000Z'
|
|
298
|
+
});
|
|
299
|
+
});
|
|
300
|
+
it('32 hours range from 2016 Jun', () => {
|
|
301
|
+
expect(refineTimePeriod({ id: '2016-06/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
302
|
+
id: '2016-06/PT32H',
|
|
303
|
+
name: '2016-06-01 00:00 - 2016-06-02 07:59',
|
|
304
|
+
start: '2016-06-01T00:00:00.000Z',
|
|
305
|
+
end: '2016-06-02T07:59:59.000Z'
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
it('4 hours range from 2016 Jun 28', () => {
|
|
309
|
+
expect(refineTimePeriod({ id: '2016-06-28/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
310
|
+
id: '2016-06-28/PT4H',
|
|
311
|
+
name: '2016-06-28 00:00 - 03:59',
|
|
312
|
+
start: '2016-06-28T00:00:00.000Z',
|
|
313
|
+
end: '2016-06-28T03:59:59.000Z'
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
it('32 hours range from 2016 Jun 28', () => {
|
|
317
|
+
expect(refineTimePeriod({ id: '2016-06-28/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
318
|
+
id: '2016-06-28/PT32H',
|
|
319
|
+
name: '2016-06-28 00:00 - 2016-06-29 07:59',
|
|
320
|
+
start: '2016-06-28T00:00:00.000Z',
|
|
321
|
+
end: '2016-06-29T07:59:59.000Z'
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
it('4 hours range from 2016 Jun 28 17h', () => {
|
|
325
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:00:00/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
326
|
+
id: '2016-06-28T17:00:00/PT4H',
|
|
327
|
+
name: '2016-06-28 17:00 - 20:59',
|
|
328
|
+
start: '2016-06-28T17:00:00.000Z',
|
|
329
|
+
end: '2016-06-28T20:59:59.000Z'
|
|
330
|
+
});
|
|
331
|
+
});
|
|
332
|
+
it('32 hours range from 2016 Jun 28 17h', () => {
|
|
333
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:00:00/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
334
|
+
id: '2016-06-28T17:00:00/PT32H',
|
|
335
|
+
name: '2016-06-28 17:00 - 2016-06-30 00:59',
|
|
336
|
+
start: '2016-06-28T17:00:00.000Z',
|
|
337
|
+
end: '2016-06-30T00:59:59.000Z'
|
|
338
|
+
});
|
|
339
|
+
});
|
|
340
|
+
it('4 hours range from 2016 Jun 28 17h38', () => {
|
|
341
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:38:00/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
342
|
+
id: '2016-06-28T17:38:00/PT4H',
|
|
343
|
+
name: '2016-06-28 17:38 - 21:37',
|
|
344
|
+
start: '2016-06-28T17:38:00.000Z',
|
|
345
|
+
end: '2016-06-28T21:37:59.000Z'
|
|
346
|
+
});
|
|
347
|
+
});
|
|
348
|
+
it('32 hours range from 2016 Jun 28 17h38', () => {
|
|
349
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:38:00/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
350
|
+
id: '2016-06-28T17:38:00/PT32H',
|
|
351
|
+
name: '2016-06-28 17:38 - 2016-06-30 01:37',
|
|
352
|
+
start: '2016-06-28T17:38:00.000Z',
|
|
353
|
+
end: '2016-06-30T01:37:59.000Z'
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
it('4 hours range from 2016 Jun 28 17h38m19', () => {
|
|
357
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:38:19/PT4H' }, { locale: 'en' })).to.deep.equal({
|
|
358
|
+
id: '2016-06-28T17:38:19/PT4H',
|
|
359
|
+
name: '2016-06-28 17:38:19 - 21:38:18',
|
|
360
|
+
start: '2016-06-28T17:38:19.000Z',
|
|
361
|
+
end: '2016-06-28T21:38:18.000Z'
|
|
362
|
+
});
|
|
363
|
+
});
|
|
364
|
+
it('32 hours range from 2016 Jun 28 17h38m19', () => {
|
|
365
|
+
expect(refineTimePeriod({ id: '2016-06-28T17:38:19/PT32H' }, { locale: 'en' })).to.deep.equal({
|
|
366
|
+
id: '2016-06-28T17:38:19/PT32H',
|
|
367
|
+
name: '2016-06-28 17:38:19 - 2016-06-30 01:38:18',
|
|
368
|
+
start: '2016-06-28T17:38:19.000Z',
|
|
369
|
+
end: '2016-06-30T01:38:18.000Z'
|
|
370
|
+
});
|
|
371
|
+
});
|
|
372
|
+
it('17 minutes range from 2017', () => {
|
|
373
|
+
expect(refineTimePeriod({ id: '2017/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
374
|
+
id: '2017/PT17M',
|
|
375
|
+
name: '2017-01-01 00:00 - 00:16',
|
|
376
|
+
start: '2017-01-01T00:00:00.000Z',
|
|
377
|
+
end: '2017-01-01T00:16:59.000Z'
|
|
378
|
+
});
|
|
379
|
+
});
|
|
380
|
+
it('1446 minutes range from 2017', () => {
|
|
381
|
+
expect(refineTimePeriod({ id: '2017/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
382
|
+
id: '2017/PT1446M',
|
|
383
|
+
name: '2017-01-01 00:00 - 2017-01-02 00:05',
|
|
384
|
+
start: '2017-01-01T00:00:00.000Z',
|
|
385
|
+
end: '2017-01-02T00:05:59.000Z'
|
|
386
|
+
});
|
|
387
|
+
});
|
|
388
|
+
it('17 minutes range from 2017 Aug', () => {
|
|
389
|
+
expect(refineTimePeriod({ id: '2017-08/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
390
|
+
id: '2017-08/PT17M',
|
|
391
|
+
name: '2017-08-01 00:00 - 00:16',
|
|
392
|
+
start: '2017-08-01T00:00:00.000Z',
|
|
393
|
+
end: '2017-08-01T00:16:59.000Z'
|
|
394
|
+
});
|
|
395
|
+
});
|
|
396
|
+
it('1446 minutes range from 2017 Aug', () => {
|
|
397
|
+
expect(refineTimePeriod({ id: '2017-08/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
398
|
+
id: '2017-08/PT1446M',
|
|
399
|
+
name: '2017-08-01 00:00 - 2017-08-02 00:05',
|
|
400
|
+
start: '2017-08-01T00:00:00.000Z',
|
|
401
|
+
end: '2017-08-02T00:05:59.000Z'
|
|
402
|
+
});
|
|
403
|
+
});
|
|
404
|
+
it('17 minutes range from 2017 Aug 31', () => {
|
|
405
|
+
expect(refineTimePeriod({ id: '2017-08-31/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
406
|
+
id: '2017-08-31/PT17M',
|
|
407
|
+
name: '2017-08-31 00:00 - 00:16',
|
|
408
|
+
start: '2017-08-31T00:00:00.000Z',
|
|
409
|
+
end: '2017-08-31T00:16:59.000Z'
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
it('1446 minutes range from 2017 Aug 31', () => {
|
|
413
|
+
expect(refineTimePeriod({ id: '2017-08-31/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
414
|
+
id: '2017-08-31/PT1446M',
|
|
415
|
+
name: '2017-08-31 00:00 - 2017-09-01 00:05',
|
|
416
|
+
start: '2017-08-31T00:00:00.000Z',
|
|
417
|
+
end: '2017-09-01T00:05:59.000Z'
|
|
418
|
+
});
|
|
419
|
+
});
|
|
420
|
+
it('17 minutes range from 2017 Aug 31 20h', () => {
|
|
421
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:00:00/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
422
|
+
id: '2017-08-31T20:00:00/PT17M',
|
|
423
|
+
name: '2017-08-31 20:00 - 20:16',
|
|
424
|
+
start: '2017-08-31T20:00:00.000Z',
|
|
425
|
+
end: '2017-08-31T20:16:59.000Z'
|
|
426
|
+
});
|
|
427
|
+
});
|
|
428
|
+
it('1446 minutes range from 2017 Aug 31 20h', () => {
|
|
429
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:00:00/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
430
|
+
id: '2017-08-31T20:00:00/PT1446M',
|
|
431
|
+
name: '2017-08-31 20:00 - 2017-09-01 20:05',
|
|
432
|
+
start: '2017-08-31T20:00:00.000Z',
|
|
433
|
+
end: '2017-09-01T20:05:59.000Z'
|
|
434
|
+
});
|
|
435
|
+
});
|
|
436
|
+
it('17 minutes range from 2017 Aug 31 20h10', () => {
|
|
437
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:10:00/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
438
|
+
id: '2017-08-31T20:10:00/PT17M',
|
|
439
|
+
name: '2017-08-31 20:10 - 20:26',
|
|
440
|
+
start: '2017-08-31T20:10:00.000Z',
|
|
441
|
+
end: '2017-08-31T20:26:59.000Z'
|
|
442
|
+
});
|
|
443
|
+
});
|
|
444
|
+
it('1446 minutes range from 2017 Aug 31 20h10', () => {
|
|
445
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:10:00/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
446
|
+
id: '2017-08-31T20:10:00/PT1446M',
|
|
447
|
+
name: '2017-08-31 20:10 - 2017-09-01 20:15',
|
|
448
|
+
start: '2017-08-31T20:10:00.000Z',
|
|
449
|
+
end: '2017-09-01T20:15:59.000Z'
|
|
450
|
+
});
|
|
451
|
+
});
|
|
452
|
+
it('17 minutes range from 2017 Aug 31 20h10m32', () => {
|
|
453
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:10:32/PT17M' }, { locale: 'en' })).to.deep.equal({
|
|
454
|
+
id: '2017-08-31T20:10:32/PT17M',
|
|
455
|
+
name: '2017-08-31 20:10:32 - 20:27:31',
|
|
456
|
+
start: '2017-08-31T20:10:32.000Z',
|
|
457
|
+
end: '2017-08-31T20:27:31.000Z'
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
it('1446 minutes range from 2017 Aug 31 20h10m32', () => {
|
|
461
|
+
expect(refineTimePeriod({ id: '2017-08-31T20:10:32/PT1446M' }, { locale: 'en' })).to.deep.equal({
|
|
462
|
+
id: '2017-08-31T20:10:32/PT1446M',
|
|
463
|
+
name: '2017-08-31 20:10:32 - 2017-09-01 20:16:31',
|
|
464
|
+
start: '2017-08-31T20:10:32.000Z',
|
|
465
|
+
end: '2017-09-01T20:16:31.000Z'
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
it('25 seconds range from 2016', () => {
|
|
469
|
+
expect(refineTimePeriod({ id: '2016/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
470
|
+
id: '2016/PT25S',
|
|
471
|
+
name: '2016-01-01 00:00:00 - 00:00:24',
|
|
472
|
+
start: '2016-01-01T00:00:00.000Z',
|
|
473
|
+
end: '2016-01-01T00:00:24.000Z'
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
it('86.405 seconds range from 2016', () => {
|
|
477
|
+
expect(refineTimePeriod({ id: '2016/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
478
|
+
id: '2016/PT86405S',
|
|
479
|
+
name: '2016-01-01 00:00:00 - 2016-01-02 00:00:04',
|
|
480
|
+
start: '2016-01-01T00:00:00.000Z',
|
|
481
|
+
end: '2016-01-02T00:00:04.000Z'
|
|
482
|
+
});
|
|
483
|
+
});
|
|
484
|
+
it('25 seconds range from 2016 Sep', () => {
|
|
485
|
+
expect(refineTimePeriod({ id: '2016-09/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
486
|
+
id: '2016-09/PT25S',
|
|
487
|
+
name: '2016-09-01 00:00:00 - 00:00:24',
|
|
488
|
+
start: '2016-09-01T00:00:00.000Z',
|
|
489
|
+
end: '2016-09-01T00:00:24.000Z'
|
|
490
|
+
});
|
|
491
|
+
});
|
|
492
|
+
it('86.405 seconds range from 2016 Sep', () => {
|
|
493
|
+
expect(refineTimePeriod({ id: '2016-09/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
494
|
+
id: '2016-09/PT86405S',
|
|
495
|
+
name: '2016-09-01 00:00:00 - 2016-09-02 00:00:04',
|
|
496
|
+
start: '2016-09-01T00:00:00.000Z',
|
|
497
|
+
end: '2016-09-02T00:00:04.000Z'
|
|
498
|
+
});
|
|
499
|
+
});
|
|
500
|
+
it('25 seconds range from 2016 Sep 26', () => {
|
|
501
|
+
expect(refineTimePeriod({ id: '2016-09-26/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
502
|
+
id: '2016-09-26/PT25S',
|
|
503
|
+
name: '2016-09-26 00:00:00 - 00:00:24',
|
|
504
|
+
start: '2016-09-26T00:00:00.000Z',
|
|
505
|
+
end: '2016-09-26T00:00:24.000Z'
|
|
506
|
+
});
|
|
507
|
+
});
|
|
508
|
+
it('86.405 seconds range from 2016 Sep 26', () => {
|
|
509
|
+
expect(refineTimePeriod({ id: '2016-09-26/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
510
|
+
id: '2016-09-26/PT86405S',
|
|
511
|
+
name: '2016-09-26 00:00:00 - 2016-09-27 00:00:04',
|
|
512
|
+
start: '2016-09-26T00:00:00.000Z',
|
|
513
|
+
end: '2016-09-27T00:00:04.000Z'
|
|
514
|
+
});
|
|
515
|
+
});
|
|
516
|
+
it('25 seconds range from 2016 Sep 26 14h', () => {
|
|
517
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:00:00/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
518
|
+
id: '2016-09-26T14:00:00/PT25S',
|
|
519
|
+
name: '2016-09-26 14:00:00 - 14:00:24',
|
|
520
|
+
start: '2016-09-26T14:00:00.000Z',
|
|
521
|
+
end: '2016-09-26T14:00:24.000Z'
|
|
522
|
+
});
|
|
523
|
+
});
|
|
524
|
+
it('86.405 seconds range from 2016 Sep 26 14h', () => {
|
|
525
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:00:00/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
526
|
+
id: '2016-09-26T14:00:00/PT86405S',
|
|
527
|
+
name: '2016-09-26 14:00:00 - 2016-09-27 14:00:04',
|
|
528
|
+
start: '2016-09-26T14:00:00.000Z',
|
|
529
|
+
end: '2016-09-27T14:00:04.000Z'
|
|
530
|
+
});
|
|
531
|
+
});
|
|
532
|
+
it('25 seconds range from 2016 Sep 26 14h32', () => {
|
|
533
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:32:00/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
534
|
+
id: '2016-09-26T14:32:00/PT25S',
|
|
535
|
+
name: '2016-09-26 14:32:00 - 14:32:24',
|
|
536
|
+
start: '2016-09-26T14:32:00.000Z',
|
|
537
|
+
end: '2016-09-26T14:32:24.000Z'
|
|
538
|
+
});
|
|
539
|
+
});
|
|
540
|
+
it('86.405 seconds range from 2016 Sep 26 14h32', () => {
|
|
541
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:32:00/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
542
|
+
id: '2016-09-26T14:32:00/PT86405S',
|
|
543
|
+
name: '2016-09-26 14:32:00 - 2016-09-27 14:32:04',
|
|
544
|
+
start: '2016-09-26T14:32:00.000Z',
|
|
545
|
+
end: '2016-09-27T14:32:04.000Z'
|
|
546
|
+
});
|
|
547
|
+
});
|
|
548
|
+
it('25 seconds range from 2016 Sep 26 14h32m10', () => {
|
|
549
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:32:10/PT25S' }, { locale: 'en' })).to.deep.equal({
|
|
550
|
+
id: '2016-09-26T14:32:10/PT25S',
|
|
551
|
+
name: '2016-09-26 14:32:10 - 14:32:34',
|
|
552
|
+
start: '2016-09-26T14:32:10.000Z',
|
|
553
|
+
end: '2016-09-26T14:32:34.000Z'
|
|
554
|
+
});
|
|
555
|
+
});
|
|
556
|
+
it('86.405 seconds range from 2016 Sep 26 14h32m10', () => {
|
|
557
|
+
expect(refineTimePeriod({ id: '2016-09-26T14:32:10/PT86405S' }, { locale: 'en' })).to.deep.equal({
|
|
558
|
+
id: '2016-09-26T14:32:10/PT86405S',
|
|
559
|
+
name: '2016-09-26 14:32:10 - 2016-09-27 14:32:14',
|
|
560
|
+
start: '2016-09-26T14:32:10.000Z',
|
|
561
|
+
end: '2016-09-27T14:32:14.000Z'
|
|
562
|
+
});
|
|
563
|
+
});
|
|
564
|
+
});
|