@@ -30,6 +30,24 @@ function RecodeDatesHelper() {
30
30
const GPE_DAILY_PATTERN = GROUP_LEFT + GPE_YEAR_PATTERN + GROUP_RIGHT + "\\-?" + GROUP_LEFT + GPE_MONTH_PATTERN + GROUP_RIGHT + GROUP_LEFT
31
31
+ "0[1-9]|[1-2][0-9]|3[0-1]" + GROUP_RIGHT ;
32
32
33
+ const GPE_REPORTING_TIME_PERIOD_TYPE =
34
+ GROUP_LEFT + GPE_YEARLY_PATTERN + GROUP_RIGHT + "|" +
35
+ GROUP_LEFT + GPE_BIYEARLY_PATTERN + GROUP_RIGHT + "|" +
36
+ GROUP_LEFT + GPE_QUARTERLY_PATTERN + GROUP_RIGHT + "|" +
37
+ GROUP_LEFT + GPE_MONTH_PATTERN + GROUP_RIGHT + "|" +
38
+ GROUP_LEFT + GPE_MONTHLY_PATTERN + GROUP_RIGHT + "|" +
39
+ GROUP_LEFT + GPE_WEEKLY_PATTERN + GROUP_RIGHT + "|" +
40
+ GROUP_LEFT + GPE_DAILY_PATTERN + GROUP_RIGHT ;
41
+
42
+ const GPE_REPORTING_TIME_PERIOD = START + GPE_REPORTING_TIME_PERIOD_TYPE + END ;
43
+ const GPE_REPORTING_YEARLY_TYPE = START + GPE_YEARLY_PATTERN + END ;
44
+ const GPE_REPORTING_BIYEARLY_TYPE = START + GPE_BIYEARLY_PATTERN + END ;
45
+ const GPE_REPORTING_QUARTERLY_TYPE = START + GPE_QUARTERLY_PATTERN + END ;
46
+ const GPE_REPORTING_MONTH_TYPE = START + GPE_MONTH_PATTERN + END ;
47
+ const GPE_REPORTING_MONTHLY_TYPE = START + GPE_MONTHLY_PATTERN + END ;
48
+ const GPE_REPORTING_WEEKLY_TYPE = START + GPE_WEEKLY_PATTERN + END ;
49
+ const GPE_REPORTING_DAILY_TYPE = START + GPE_DAILY_PATTERN + END ;
50
+
33
51
// SDMX
34
52
const REPORTING_YEAR_PERIOD_INDICATOR = "A" ;
35
53
const REPORTING_SEMESTER_PERIOD_INDICATOR = "S" ;
@@ -85,6 +103,10 @@ function RecodeDatesHelper() {
85
103
return time . match ( new RegExp ( PATTERN_REPORTING_TIME_PERIOD ) ) ;
86
104
}
87
105
106
+ const _isGpeReportingTimePeriod = function ( time ) {
107
+ return time . match ( new RegExp ( GPE_REPORTING_TIME_PERIOD_TYPE ) ) ;
108
+ }
109
+
88
110
const _isDateTime = function ( time ) {
89
111
return time . match ( new RegExp ( PATTERN_DATE_TIME ) ) ;
90
112
}
@@ -184,6 +206,80 @@ function RecodeDatesHelper() {
184
206
return "" ;
185
207
}
186
208
209
+ const _calculateGpeReportingPeriod = function ( time ) {
210
+ if ( time . match ( new RegExp ( START + GPE_YEARLY_PATTERN + END ) ) ) {
211
+ //return date + "0101";
212
+ return time ;
213
+ }
214
+ if ( time . match ( new RegExp ( START + GPE_BIYEARLY_PATTERN + END ) ) ) {
215
+ const year = time . match ( new RegExp ( START + GPE_BIYEARLY_PATTERN + END ) ) [ 1 ] ;
216
+ const month = ( time . match ( new RegExp ( START + GPE_BIYEARLY_PATTERN + END ) ) [ 2 ] - 1 ) * 6 ;
217
+ //return year + strPad("" + (month + 1), 2, "0") + "01";
218
+ return year + strPad ( "" + ( month + 1 ) , 2 , "0" ) ;
219
+ }
220
+ if ( time . match ( new RegExp ( START + GPE_QUARTERLY_PATTERN + END ) ) ) {
221
+ const year = time . match ( new RegExp ( START + GPE_QUARTERLY_PATTERN + END ) ) [ 1 ] ;
222
+ // const month = (date.match(new RegExp(START + GPE_QUARTERLY_PATTERN + END))[2] - 1) * 3;
223
+ // return year + strPad("" + (month + 1), 2, "0") + "01";
224
+ const quarter = time . match ( new RegExp ( START + GPE_QUARTERLY_PATTERN + END ) ) [ 2 ] ;
225
+ return year + quarter ;
226
+ }
227
+ if ( time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN + END ) ) ) {
228
+ const year = time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN + END ) ) [ 1 ] ;
229
+ const month = parseInt ( time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN + END ) ) [ 2 ] ) ;
230
+ //return year + strPad("" + (month), 2, "0") + "01";
231
+ return year + strPad ( "" + month , 2 , "0" ) ;
232
+ }
233
+ if ( time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN_WITHOUT_CHARACTER + END ) ) ) {
234
+ const year = time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN_WITHOUT_CHARACTER + END ) ) [ 1 ] ;
235
+ const month = parseInt ( time . match ( new RegExp ( START + GPE_MONTHLY_PATTERN_WITHOUT_CHARACTER + END ) ) [ 2 ] ) ;
236
+ //return year + strPad("" + (month), 2, "0") + "01";
237
+ return year + strPad ( "" + month , 2 , "0" ) ;
238
+ }
239
+ if ( time . match ( new RegExp ( START + GPE_WEEKLY_PATTERN + END ) ) ) {
240
+ // const year = date.match(new RegExp(START + GPE_WEEKLY_PATTERN + END))[1];
241
+ // const day =
242
+ // (date.match(new RegExp(START + GPE_WEEKLY_PATTERN + END))[2] - 1) * 7;
243
+ // date = new Date(year, "", day + 1);
244
+ // return year + strPad("" + (date.getMonth()), 2, "0") + date.getDate();
245
+ const year = time . match ( new RegExp ( START + GPE_WEEKLY_PATTERN + END ) ) [ 1 ] ;
246
+ const week = parseInt ( time . match ( new RegExp ( START + GPE_WEEKLY_PATTERN + END ) ) [ 2 ] ) ;
247
+ return year + strPad ( "" + week , 2 , "0" ) ;
248
+ }
249
+ if ( time . match ( new RegExp ( START + GPE_DAILY_PATTERN + END ) ) ) {
250
+ const year = time . match ( new RegExp ( START + GPE_DAILY_PATTERN + END ) ) [ 1 ] ;
251
+ const month = time . match ( new RegExp ( START + GPE_DAILY_PATTERN + END ) ) [ 2 ] ;
252
+ const day = time . match ( new RegExp ( START + GPE_DAILY_PATTERN + END ) ) [ 3 ] ;
253
+ return year + strPad ( "" + ( month ) , 2 , "0" ) + strPad ( "" + ( day ) , 2 , "0" ) ;
254
+ }
255
+ return time ;
256
+ }
257
+
258
+ const _calculateGpeReportingPeriodGranularity = function ( time ) {
259
+ if ( time . match ( new RegExp ( GPE_REPORTING_YEARLY_TYPE ) ) ) {
260
+ return "YEARLY" ;
261
+ }
262
+ if ( time . match ( new RegExp ( GPE_REPORTING_BIYEARLY_TYPE ) ) ) {
263
+ return "BIYEARLY" ;
264
+ }
265
+ if ( time . match ( new RegExp ( GPE_REPORTING_QUARTERLY_TYPE ) ) ) {
266
+ return "QUARTERLY" ;
267
+ }
268
+ if ( time . match ( new RegExp ( GPE_REPORTING_MONTH_TYPE ) ) ) {
269
+ return "MONTHLY" ;
270
+ }
271
+ if ( time . match ( new RegExp ( GPE_REPORTING_MONTHLY_TYPE ) ) ) {
272
+ return "MONTHLY" ;
273
+ }
274
+ if ( time . match ( new RegExp ( GPE_REPORTING_WEEKLY_TYPE ) ) ) {
275
+ return "WEEKLY" ;
276
+ }
277
+ if ( time . match ( new RegExp ( GPE_REPORTING_DAILY_TYPE ) ) ) {
278
+ return "DAILY" ;
279
+ }
280
+ return "" ;
281
+ }
282
+
187
283
// DATETIME
188
284
// 2013-07-24T13:21:52.519+01:00
189
285
// 2013-07-24
@@ -219,9 +315,12 @@ function RecodeDatesHelper() {
219
315
date = _calculateReportingPeriod ( time ) ;
220
316
} else if ( _isDateTime ( time ) ) {
221
317
date = _calculateDateTime ( time ) ;
318
+ } else if ( _isGpeReportingTimePeriod ( time ) ) {
319
+ date = _calculateGpeReportingPeriod ( time ) ;
222
320
} else if ( _isGregorianTimePeriod ( time ) ) {
223
321
date = _calculateGregorianTimePeriod ( time ) ;
224
322
}
323
+
225
324
return date === null ? time : date ;
226
325
}
227
326
@@ -232,6 +331,8 @@ function RecodeDatesHelper() {
232
331
return _calculateReportingPeriodGranularity ( time ) ;
233
332
} else if ( _isDateTime ( time ) ) {
234
333
return "" ;
334
+ } else if ( _isGpeReportingTimePeriod ( time ) ) {
335
+ return _calculateGpeReportingPeriodGranularity ( time ) ;
235
336
} else if ( _isGregorianTimePeriod ( time ) ) {
236
337
return "" ;
237
338
}
@@ -294,6 +395,7 @@ function RecodeDatesHelper() {
294
395
//return year + strPad("" + (month), 2, "0") + "01";
295
396
return year + strPad ( "" + month , 2 , "0" ) ;
296
397
}
398
+
297
399
break ;
298
400
}
299
401
// semanal
0 commit comments