@qrvey/utils 1.10.0-0 → 1.10.0-timezone-1

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.
Files changed (135) hide show
  1. package/dist/charts/adapters/endpointData.js +0 -3
  2. package/dist/cjs/charts/adapters/endpointData.js +0 -3
  3. package/dist/cjs/dates/adapters/ISOToNumericOffset.d.ts +6 -0
  4. package/dist/cjs/dates/adapters/ISOToNumericOffset.js +19 -0
  5. package/dist/cjs/dates/adapters/index.d.ts +2 -0
  6. package/dist/cjs/dates/adapters/index.js +2 -0
  7. package/dist/cjs/dates/adapters/numericOffsetToISO.d.ts +6 -0
  8. package/dist/cjs/dates/adapters/numericOffsetToISO.js +27 -0
  9. package/dist/cjs/dates/constants/ISO_8601_REGEX.d.ts +1 -0
  10. package/dist/cjs/dates/constants/ISO_8601_REGEX.js +4 -0
  11. package/dist/cjs/dates/constants/index.d.ts +1 -0
  12. package/dist/cjs/dates/constants/index.js +1 -0
  13. package/dist/cjs/dates/helpers/getDateByTimezone.d.ts +8 -0
  14. package/dist/cjs/dates/helpers/getDateByTimezone.js +39 -0
  15. package/dist/cjs/dates/helpers/getDateByTimezoneOffset.d.ts +7 -0
  16. package/dist/cjs/dates/helpers/getDateByTimezoneOffset.js +25 -0
  17. package/dist/cjs/dates/helpers/getTimezoneObject.d.ts +4 -0
  18. package/dist/cjs/dates/helpers/getTimezoneObject.js +24 -0
  19. package/dist/cjs/dates/helpers/index.d.ts +3 -1
  20. package/dist/cjs/dates/helpers/index.js +3 -1
  21. package/dist/cjs/dates/helpers/isValidISOOffset.d.ts +7 -0
  22. package/dist/cjs/dates/helpers/isValidISOOffset.js +17 -0
  23. package/dist/cjs/dates/interfaces/IDTimezone.d.ts +4 -0
  24. package/dist/cjs/dates/interfaces/IDTimezone.js +2 -0
  25. package/dist/cjs/dates/interfaces/IDTimezoneOffset.d.ts +1 -0
  26. package/dist/cjs/dates/interfaces/IDTimezoneOffset.js +2 -0
  27. package/dist/cjs/dates/interfaces/IGetDateByTimezoneSettings.d.ts +6 -0
  28. package/dist/cjs/dates/interfaces/IGetDateByTimezoneSettings.js +2 -0
  29. package/dist/cjs/dates/interfaces/index.d.ts +3 -0
  30. package/dist/cjs/dates/interfaces/index.js +3 -0
  31. package/dist/cjs/filters/helpers/builder/getFilterBuilderGeneralConfig.js +1 -1
  32. package/dist/cjs/filters/helpers/common/getFiltersByTimezone.d.ts +10 -0
  33. package/dist/cjs/filters/helpers/common/getFiltersByTimezone.js +26 -0
  34. package/dist/cjs/filters/helpers/common/index.d.ts +1 -0
  35. package/dist/cjs/filters/helpers/common/index.js +1 -0
  36. package/dist/cjs/filters/interfaces/ui/IFUTransformFilterValuesSettings.d.ts +6 -0
  37. package/dist/cjs/format/format.d.ts +1 -1
  38. package/dist/cjs/format/format.js +10 -4
  39. package/dist/cjs/general/index.d.ts +1 -0
  40. package/dist/cjs/general/index.js +1 -0
  41. package/dist/cjs/general/numeric/getSign.d.ts +6 -0
  42. package/dist/cjs/general/numeric/getSign.js +12 -0
  43. package/dist/cjs/general/numeric/index.d.ts +1 -0
  44. package/dist/cjs/general/numeric/index.js +17 -0
  45. package/dist/cjs/general/object/applyTimezoneDeep.d.ts +8 -0
  46. package/dist/cjs/general/object/applyTimezoneDeep.js +43 -0
  47. package/dist/cjs/general/object/index.d.ts +1 -0
  48. package/dist/cjs/general/object/index.js +1 -0
  49. package/dist/cjs/interfaces/format/IFormatConfig.Interface.d.ts +1 -0
  50. package/dist/cjs/interfaces/general/IWidgetConfig.d.ts +2 -1
  51. package/dist/cjs/qrvey/helpers/transformValue.js +34 -6
  52. package/dist/cjs/qrvey/interfaces/IBDataset.d.ts +2 -0
  53. package/dist/cjs/qrvey/interfaces/IBModel.d.ts +2 -0
  54. package/dist/cjs/qrvey/interfaces/IBTimezone.d.ts +4 -0
  55. package/dist/cjs/qrvey/interfaces/IBTimezone.js +2 -0
  56. package/dist/cjs/qrvey/interfaces/IDataset.d.ts +3 -1
  57. package/dist/cjs/qrvey/interfaces/IModel.d.ts +3 -1
  58. package/dist/cjs/qrvey/interfaces/ITransformValueSettings.d.ts +6 -0
  59. package/dist/cjs/qrvey/interfaces/index.d.ts +1 -0
  60. package/dist/cjs/qrvey/interfaces/index.js +1 -0
  61. package/dist/cjs/services/adapters/BDatasetsToUIDatasets.adapter.js +2 -0
  62. package/dist/cjs/services/adapters/BModelToUIModel.adapter.js +2 -0
  63. package/dist/cjs/services/adapters/BTimezoneToUITimezone.d.ts +3 -0
  64. package/dist/cjs/services/adapters/BTimezoneToUITimezone.js +9 -0
  65. package/dist/cjs/services/helpers/Request.d.ts +1 -1
  66. package/dist/cjs/services/helpers/Request.js +11 -5
  67. package/dist/dates/adapters/ISOToNumericOffset.d.ts +6 -0
  68. package/dist/dates/adapters/ISOToNumericOffset.js +15 -0
  69. package/dist/dates/adapters/index.d.ts +2 -0
  70. package/dist/dates/adapters/index.js +2 -0
  71. package/dist/dates/adapters/numericOffsetToISO.d.ts +6 -0
  72. package/dist/dates/adapters/numericOffsetToISO.js +23 -0
  73. package/dist/dates/constants/ISO_8601_REGEX.d.ts +1 -0
  74. package/dist/dates/constants/ISO_8601_REGEX.js +1 -0
  75. package/dist/dates/constants/index.d.ts +1 -0
  76. package/dist/dates/constants/index.js +1 -0
  77. package/dist/dates/helpers/getDateByTimezone.d.ts +8 -0
  78. package/dist/dates/helpers/getDateByTimezone.js +35 -0
  79. package/dist/dates/helpers/getDateByTimezoneOffset.d.ts +7 -0
  80. package/dist/dates/helpers/getDateByTimezoneOffset.js +21 -0
  81. package/dist/dates/helpers/getTimezoneObject.d.ts +4 -0
  82. package/dist/dates/helpers/getTimezoneObject.js +20 -0
  83. package/dist/dates/helpers/index.d.ts +3 -1
  84. package/dist/dates/helpers/index.js +3 -1
  85. package/dist/dates/helpers/isValidISOOffset.d.ts +7 -0
  86. package/dist/dates/helpers/isValidISOOffset.js +13 -0
  87. package/dist/dates/interfaces/IDTimezone.d.ts +4 -0
  88. package/dist/dates/interfaces/IDTimezone.js +1 -0
  89. package/dist/dates/interfaces/IDTimezoneOffset.d.ts +1 -0
  90. package/dist/dates/interfaces/IDTimezoneOffset.js +1 -0
  91. package/dist/dates/interfaces/IGetDateByTimezoneSettings.d.ts +6 -0
  92. package/dist/dates/interfaces/IGetDateByTimezoneSettings.js +1 -0
  93. package/dist/dates/interfaces/index.d.ts +3 -0
  94. package/dist/dates/interfaces/index.js +3 -0
  95. package/dist/filters/helpers/builder/getFilterBuilderGeneralConfig.js +1 -1
  96. package/dist/filters/helpers/common/getFiltersByTimezone.d.ts +10 -0
  97. package/dist/filters/helpers/common/getFiltersByTimezone.js +22 -0
  98. package/dist/filters/helpers/common/index.d.ts +1 -0
  99. package/dist/filters/helpers/common/index.js +1 -0
  100. package/dist/filters/interfaces/ui/IFUTransformFilterValuesSettings.d.ts +6 -0
  101. package/dist/format/format.d.ts +1 -1
  102. package/dist/format/format.js +10 -4
  103. package/dist/general/index.d.ts +1 -0
  104. package/dist/general/index.js +1 -0
  105. package/dist/general/numeric/getSign.d.ts +6 -0
  106. package/dist/general/numeric/getSign.js +8 -0
  107. package/dist/general/numeric/index.d.ts +1 -0
  108. package/dist/general/numeric/index.js +1 -0
  109. package/dist/general/object/applyTimezoneDeep.d.ts +8 -0
  110. package/dist/general/object/applyTimezoneDeep.js +39 -0
  111. package/dist/general/object/index.d.ts +1 -0
  112. package/dist/general/object/index.js +1 -0
  113. package/dist/interfaces/format/IFormatConfig.Interface.d.ts +1 -0
  114. package/dist/interfaces/general/IWidgetConfig.d.ts +2 -1
  115. package/dist/qrvey/helpers/transformValue.js +34 -6
  116. package/dist/qrvey/interfaces/IBDataset.d.ts +2 -0
  117. package/dist/qrvey/interfaces/IBModel.d.ts +2 -0
  118. package/dist/qrvey/interfaces/IBTimezone.d.ts +4 -0
  119. package/dist/qrvey/interfaces/IBTimezone.js +1 -0
  120. package/dist/qrvey/interfaces/IDataset.d.ts +3 -1
  121. package/dist/qrvey/interfaces/IModel.d.ts +3 -1
  122. package/dist/qrvey/interfaces/ITransformValueSettings.d.ts +6 -0
  123. package/dist/qrvey/interfaces/index.d.ts +1 -0
  124. package/dist/qrvey/interfaces/index.js +1 -0
  125. package/dist/services/adapters/BDatasetsToUIDatasets.adapter.js +2 -0
  126. package/dist/services/adapters/BModelToUIModel.adapter.js +2 -0
  127. package/dist/services/adapters/BTimezoneToUITimezone.d.ts +3 -0
  128. package/dist/services/adapters/BTimezoneToUITimezone.js +5 -0
  129. package/dist/services/helpers/Request.d.ts +1 -1
  130. package/dist/services/helpers/Request.js +11 -5
  131. package/package.json +5 -5
  132. package/dist/cjs/dates/helpers/adjustTimezone.d.ts +0 -6
  133. package/dist/cjs/dates/helpers/adjustTimezone.js +0 -19
  134. package/dist/dates/helpers/adjustTimezone.d.ts +0 -6
  135. package/dist/dates/helpers/adjustTimezone.js +0 -15
@@ -401,7 +401,6 @@ export function configMetricData(metricObj //
401
401
  }
402
402
  if (data.dateColumn) {
403
403
  const dateColum = data.dateColumn.id;
404
- const timeZoneOffset = 0;
405
404
  // TIME PERIOD
406
405
  try {
407
406
  const timePeriod = data.timePeriod.label;
@@ -409,7 +408,6 @@ export function configMetricData(metricObj //
409
408
  id: dateColum,
410
409
  type: timePeriod,
411
410
  dataType: data.dateColumn.type,
412
- timeZoneOffset,
413
411
  };
414
412
  if (timePeriod === "CUSTOM_RANGE") {
415
413
  const type = data.timePeriodCustomRange.label;
@@ -442,7 +440,6 @@ export function configMetricData(metricObj //
442
440
  id: dateColum,
443
441
  type: comparison,
444
442
  dataType: data.dateColumn.type,
445
- timeZoneOffset,
446
443
  };
447
444
  if (comparison === "CUSTOM_RANGE") {
448
445
  const type = data.comparisonCustomRange.label;
@@ -405,7 +405,6 @@ function configMetricData(metricObj //
405
405
  }
406
406
  if (data.dateColumn) {
407
407
  const dateColum = data.dateColumn.id;
408
- const timeZoneOffset = 0;
409
408
  // TIME PERIOD
410
409
  try {
411
410
  const timePeriod = data.timePeriod.label;
@@ -413,7 +412,6 @@ function configMetricData(metricObj //
413
412
  id: dateColum,
414
413
  type: timePeriod,
415
414
  dataType: data.dateColumn.type,
416
- timeZoneOffset,
417
415
  };
418
416
  if (timePeriod === "CUSTOM_RANGE") {
419
417
  const type = data.timePeriodCustomRange.label;
@@ -446,7 +444,6 @@ function configMetricData(metricObj //
446
444
  id: dateColum,
447
445
  type: comparison,
448
446
  dataType: data.dateColumn.type,
449
- timeZoneOffset,
450
447
  };
451
448
  if (comparison === "CUSTOM_RANGE") {
452
449
  const type = data.comparisonCustomRange.label;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Gets the numeric offset (minutes) from the ISO offset (string)
3
+ * @param {string} offset the timezone offset
4
+ * @returns {number} the offset in minutes
5
+ */
6
+ export declare function ISOToNumericOffset(offset: number | string): number;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ISOToNumericOffset = void 0;
4
+ const isNaNV2_1 = require("../../general/mix/isNaNV2");
5
+ const isValidISOOffset_1 = require("../helpers/isValidISOOffset");
6
+ /**
7
+ * Gets the numeric offset (minutes) from the ISO offset (string)
8
+ * @param {string} offset the timezone offset
9
+ * @returns {number} the offset in minutes
10
+ */
11
+ function ISOToNumericOffset(offset) {
12
+ if (typeof offset === "number" || !(0, isNaNV2_1.isNaNV2)(offset))
13
+ return +offset;
14
+ if (!(0, isValidISOOffset_1.isValidISOOffset)(offset))
15
+ return 0;
16
+ const [hours, minutes] = offset.split(":").map(Number);
17
+ return hours * 60 + minutes;
18
+ }
19
+ exports.ISOToNumericOffset = ISOToNumericOffset;
@@ -5,8 +5,10 @@ export * from "./dateToQuarterYear";
5
5
  export * from "./dateToWeekYear";
6
6
  export * from "./dateToYear";
7
7
  export * from "./hmsToDate";
8
+ export * from "./ISOToNumericOffset";
8
9
  export * from "./mdyDateToDate";
9
10
  export * from "./monthYearToDate";
11
+ export * from "./numericOffsetToISO";
10
12
  export * from "./quarterYearToDate";
11
13
  export * from "./weekYearToDate";
12
14
  export * from "./yearToDate";
@@ -21,8 +21,10 @@ __exportStar(require("./dateToQuarterYear"), exports);
21
21
  __exportStar(require("./dateToWeekYear"), exports);
22
22
  __exportStar(require("./dateToYear"), exports);
23
23
  __exportStar(require("./hmsToDate"), exports);
24
+ __exportStar(require("./ISOToNumericOffset"), exports);
24
25
  __exportStar(require("./mdyDateToDate"), exports);
25
26
  __exportStar(require("./monthYearToDate"), exports);
27
+ __exportStar(require("./numericOffsetToISO"), exports);
26
28
  __exportStar(require("./quarterYearToDate"), exports);
27
29
  __exportStar(require("./weekYearToDate"), exports);
28
30
  __exportStar(require("./yearToDate"), exports);
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Gets the ISO offset From the numeric offset (minutes)
3
+ * @param {number} offset the timezone offset
4
+ * @returns {string} the offset in minutes
5
+ */
6
+ export declare function numericOffsetToISO(offset: number): string;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.numericOffsetToISO = void 0;
4
+ const isNaNV2_1 = require("../../general/mix/isNaNV2");
5
+ const getSign_1 = require("../../general/numeric/getSign");
6
+ const padLeadingZeros_1 = require("../../general/string/padLeadingZeros");
7
+ const isValidISOOffset_1 = require("../helpers/isValidISOOffset");
8
+ /**
9
+ * Gets the ISO offset From the numeric offset (minutes)
10
+ * @param {number} offset the timezone offset
11
+ * @returns {string} the offset in minutes
12
+ */
13
+ function numericOffsetToISO(offset) {
14
+ let newOffset = offset;
15
+ if (typeof offset === "string" && (0, isValidISOOffset_1.isValidISOOffset)(offset))
16
+ return String(newOffset);
17
+ if (typeof offset !== "number" && (0, isNaNV2_1.isNaNV2)(offset))
18
+ return "+00:00";
19
+ if (typeof offset === "string" && !(0, isNaNV2_1.isNaNV2)(offset))
20
+ newOffset = +offset;
21
+ const sign = (0, getSign_1.getSign)(newOffset);
22
+ newOffset = Math.abs(newOffset);
23
+ const hours = (0, padLeadingZeros_1.padLeadingZeros)(Math.floor(newOffset / 60), 2);
24
+ const minutes = (0, padLeadingZeros_1.padLeadingZeros)(newOffset % 60, 2);
25
+ return `${sign}${hours}:${minutes}`;
26
+ }
27
+ exports.numericOffsetToISO = numericOffsetToISO;
@@ -0,0 +1 @@
1
+ export declare const ISO_8601_REGEX: RegExp;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ISO_8601_REGEX = void 0;
4
+ exports.ISO_8601_REGEX = /^[+-]?\d{2}:\d{2}$/;
@@ -38,6 +38,7 @@ export * from "./DATE_YEAR_MONTHS_MMMM";
38
38
  export * from "./DATE_YEAR_QUARTERS";
39
39
  export * from "./DATE_YEAR_QUARTERS_RANGE";
40
40
  export * from "./DATETIME_COLUMN_FORMAT";
41
+ export * from "./ISO_8601_REGEX";
41
42
  export * from "./TIME_GROUPING_PROPERTY_INFO_LIST";
42
43
  export * from "./TIME_GROUPING_PROPERTY_INFO";
43
44
  export * from "./TIME_GROUPING_PROPERTY_LABEL";
@@ -54,6 +54,7 @@ __exportStar(require("./DATE_YEAR_MONTHS_MMMM"), exports);
54
54
  __exportStar(require("./DATE_YEAR_QUARTERS"), exports);
55
55
  __exportStar(require("./DATE_YEAR_QUARTERS_RANGE"), exports);
56
56
  __exportStar(require("./DATETIME_COLUMN_FORMAT"), exports);
57
+ __exportStar(require("./ISO_8601_REGEX"), exports);
57
58
  __exportStar(require("./TIME_GROUPING_PROPERTY_INFO_LIST"), exports);
58
59
  __exportStar(require("./TIME_GROUPING_PROPERTY_INFO"), exports);
59
60
  __exportStar(require("./TIME_GROUPING_PROPERTY_LABEL"), exports);
@@ -0,0 +1,8 @@
1
+ import { IGetDateByTimezoneSettings } from "../interfaces/IGetDateByTimezoneSettings";
2
+ /**
3
+ * Gets a date value in the given timezone
4
+ * @param {string} date the date
5
+ * @param {IGetDateByTimezoneSettings} settings The settings of the getDateByTimezone function
6
+ * @returns {string} A transformed value
7
+ */
8
+ export declare function getDateByTimezone(date: string, settings: IGetDateByTimezoneSettings): string;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDateByTimezone = void 0;
4
+ const isEmpty_1 = require("../../general/mix/isEmpty");
5
+ const DATE_GROUPING_TIME_PROPERTY_1 = require("../constants/DATE_GROUPING_TIME_PROPERTY");
6
+ const getDateByDateFormat_1 = require("./getDateByDateFormat");
7
+ const getDateByTimezoneOffset_1 = require("./getDateByTimezoneOffset");
8
+ const getDateFormatByProperty_1 = require("./getDateFormatByProperty");
9
+ const getFormattedDateByFormat_1 = require("./getFormattedDateByFormat");
10
+ /**
11
+ * Gets a date value in the given timezone
12
+ * @param {string} date the date
13
+ * @param {IGetDateByTimezoneSettings} settings The settings of the getDateByTimezone function
14
+ * @returns {string} A transformed value
15
+ */
16
+ function getDateByTimezone(date, settings) {
17
+ const defaultSettings = getDefaultSettings(settings);
18
+ const isDateTime = [
19
+ DATE_GROUPING_TIME_PROPERTY_1.DATE_GROUPING_TIME_PROPERTY.HOUR,
20
+ DATE_GROUPING_TIME_PROPERTY_1.DATE_GROUPING_TIME_PROPERTY.MINUTE,
21
+ DATE_GROUPING_TIME_PROPERTY_1.DATE_GROUPING_TIME_PROPERTY.SECOND,
22
+ ].includes(defaultSettings.property);
23
+ if (!(0, isEmpty_1.isEmpty)(defaultSettings.timezone.offset) && isDateTime) {
24
+ const dateFormat = (0, getDateFormatByProperty_1.getDateFormatByProperty)(defaultSettings.property);
25
+ const formattedDate = (0, getDateByDateFormat_1.getDateByDateFormat)(date, dateFormat);
26
+ const timezonedDate = (0, getDateByTimezoneOffset_1.getDateByTimezoneOffset)(formattedDate, defaultSettings.timezone.offset);
27
+ return (0, getFormattedDateByFormat_1.getFormattedDateByFormat)(timezonedDate, dateFormat);
28
+ }
29
+ return date;
30
+ }
31
+ exports.getDateByTimezone = getDateByTimezone;
32
+ function getDefaultSettings(settings) {
33
+ return {
34
+ property: settings.property,
35
+ timezone: (settings === null || settings === void 0 ? void 0 : settings.timezone) || {
36
+ offset: undefined,
37
+ },
38
+ };
39
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Gets a Date with the given offset of the Timezone.
3
+ * No given an offset the default is going to be set by the browser
4
+ * @param date String, object or millisencond number of the date
5
+ * @returns updated Date object
6
+ */
7
+ export declare function getDateByTimezoneOffset(date: string | Date | number, offset?: number | string): Date;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDateByTimezoneOffset = void 0;
4
+ const isEmpty_1 = require("../../general/mix/isEmpty");
5
+ const ISOToNumericOffset_1 = require("../adapters/ISOToNumericOffset");
6
+ const DATE_FORMAT_1 = require("../constants/DATE_FORMAT");
7
+ const isValidPotentialDate_1 = require("./isValidPotentialDate");
8
+ const validateDate_1 = require("./validateDate");
9
+ /**
10
+ * Gets a Date with the given offset of the Timezone.
11
+ * No given an offset the default is going to be set by the browser
12
+ * @param date String, object or millisencond number of the date
13
+ * @returns updated Date object
14
+ */
15
+ function getDateByTimezoneOffset(date, offset) {
16
+ if (!(0, isValidPotentialDate_1.isValidPotentialDate)(date) ||
17
+ (typeof date === "string" && !(0, validateDate_1.validateDate)(date, DATE_FORMAT_1.DATE_FORMAT.DAY)))
18
+ return date;
19
+ const dt = new Date(date.valueOf());
20
+ const newOffset = (0, isEmpty_1.isEmpty)(offset) || offset === "browser"
21
+ ? dt.getTimezoneOffset()
22
+ : (0, ISOToNumericOffset_1.ISOToNumericOffset)(offset);
23
+ return new Date(+dt + newOffset * 1000 * 60);
24
+ }
25
+ exports.getDateByTimezoneOffset = getDateByTimezoneOffset;
@@ -0,0 +1,4 @@
1
+ import { IDataset } from "../../qrvey/interfaces/IDataset";
2
+ import { IModel } from "../../qrvey/interfaces/IModel";
3
+ import { IDTimezone } from "../interfaces/IDTimezone";
4
+ export declare function getTimezoneObject(timezone: IDTimezone, model: IModel | IDataset): IDTimezone;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTimezoneObject = void 0;
4
+ const isEmpty_1 = require("../../general/mix/isEmpty");
5
+ function getTimezoneObject(timezone, model) {
6
+ var _a;
7
+ let newTimezone = {
8
+ offset: "+00:00",
9
+ };
10
+ if ((0, isEmpty_1.isEmpty)(timezone)) {
11
+ if (!(0, isEmpty_1.isEmpty)(model)) {
12
+ newTimezone = {
13
+ offset: ((_a = model.timezone) === null || _a === void 0 ? void 0 : _a.offset) || newTimezone.offset,
14
+ };
15
+ }
16
+ }
17
+ else {
18
+ newTimezone = {
19
+ offset: (timezone === null || timezone === void 0 ? void 0 : timezone.offset) || newTimezone.offset,
20
+ };
21
+ }
22
+ return newTimezone;
23
+ }
24
+ exports.getTimezoneObject = getTimezoneObject;
@@ -1,13 +1,15 @@
1
- export * from "./adjustTimezone";
2
1
  export * from "./areIncludedDateTokens";
3
2
  export * from "./getDateByDateFormat";
3
+ export * from "./getDateByTimezone";
4
4
  export * from "./getDateFormatByProperty";
5
5
  export * from "./getDateFormatRegularExpressionInArray";
6
6
  export * from "./getDatePickerPickLevel";
7
7
  export * from "./getDateRange";
8
8
  export * from "./getFormattedDateByFormat";
9
9
  export * from "./getSeparatorByDateFormat";
10
+ export * from "./getTimezoneObject";
10
11
  export * from "./getWeek";
11
12
  export * from "./isValidDateObject";
12
13
  export * from "./isValidPotentialDate";
14
+ export * from "./getDateByTimezoneOffset";
13
15
  export * from "./validateDate";
@@ -14,16 +14,18 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./adjustTimezone"), exports);
18
17
  __exportStar(require("./areIncludedDateTokens"), exports);
19
18
  __exportStar(require("./getDateByDateFormat"), exports);
19
+ __exportStar(require("./getDateByTimezone"), exports);
20
20
  __exportStar(require("./getDateFormatByProperty"), exports);
21
21
  __exportStar(require("./getDateFormatRegularExpressionInArray"), exports);
22
22
  __exportStar(require("./getDatePickerPickLevel"), exports);
23
23
  __exportStar(require("./getDateRange"), exports);
24
24
  __exportStar(require("./getFormattedDateByFormat"), exports);
25
25
  __exportStar(require("./getSeparatorByDateFormat"), exports);
26
+ __exportStar(require("./getTimezoneObject"), exports);
26
27
  __exportStar(require("./getWeek"), exports);
27
28
  __exportStar(require("./isValidDateObject"), exports);
28
29
  __exportStar(require("./isValidPotentialDate"), exports);
30
+ __exportStar(require("./getDateByTimezoneOffset"), exports);
29
31
  __exportStar(require("./validateDate"), exports);
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Validate if offset uses a valid ISO 8601 offset specification
3
+ * - If the given offset is a numeric, returns an invalid flag.
4
+ * @param {string} offset the timezone offset
5
+ * @returns {boolean} true if the given offset is valid
6
+ */
7
+ export declare function isValidISOOffset(offset: number | string): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isValidISOOffset = void 0;
4
+ const ISO_8601_REGEX_1 = require("../constants/ISO_8601_REGEX");
5
+ /**
6
+ * Validate if offset uses a valid ISO 8601 offset specification
7
+ * - If the given offset is a numeric, returns an invalid flag.
8
+ * @param {string} offset the timezone offset
9
+ * @returns {boolean} true if the given offset is valid
10
+ */
11
+ function isValidISOOffset(offset) {
12
+ if (typeof offset !== "string")
13
+ return false;
14
+ const newOffset = (offset || "").trim();
15
+ return ISO_8601_REGEX_1.ISO_8601_REGEX.test(newOffset);
16
+ }
17
+ exports.isValidISOOffset = isValidISOOffset;
@@ -0,0 +1,4 @@
1
+ import { IDTimezoneOffset } from "./IDTimezoneOffset";
2
+ export interface IDTimezone {
3
+ offset: IDTimezoneOffset;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type IDTimezoneOffset = number | string;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ import { IColumnPropertyType } from "../../columns/interfaces/IColumnPropertyType";
2
+ import { IDTimezone } from "./IDTimezone";
3
+ export interface IGetDateByTimezoneSettings {
4
+ property: IColumnPropertyType;
5
+ timezone: IDTimezone;
6
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,3 +1,6 @@
1
1
  export * from "./IDateFormat";
2
2
  export * from "./IDateGroupingProperty";
3
3
  export * from "./IDFDateToHmsSettings";
4
+ export * from "./IDTimezone";
5
+ export * from "./IDTimezoneOffset";
6
+ export * from "./IGetDateByTimezoneSettings";
@@ -17,3 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./IDateFormat"), exports);
18
18
  __exportStar(require("./IDateGroupingProperty"), exports);
19
19
  __exportStar(require("./IDFDateToHmsSettings"), exports);
20
+ __exportStar(require("./IDTimezone"), exports);
21
+ __exportStar(require("./IDTimezoneOffset"), exports);
22
+ __exportStar(require("./IGetDateByTimezoneSettings"), exports);
@@ -14,7 +14,7 @@ function getFilterBuilderGeneralConfig(config = {}) {
14
14
  domain: config.domain,
15
15
  i18n: config.i18n,
16
16
  qv_token: config.qv_token,
17
- timezoneControl: (0, getAttribute_1.getAttribute)(config, "timezone_control") || config.timezoneControl,
17
+ timezone: config.timezone,
18
18
  userid: (0, getAttribute_1.getAttribute)(config, "user_id") || config.userid,
19
19
  };
20
20
  }
@@ -0,0 +1,10 @@
1
+ import { IDTimezone } from "../../../dates/interfaces/IDTimezone";
2
+ import { IFSData } from "../../interfaces/common/IFSData";
3
+ import { IFUData } from "../../interfaces/ui/IFUData";
4
+ /**
5
+ * Gets and transforms the Filter Data by the Timezone object
6
+ * @param {IFSData | IFUData} filterData the filter data
7
+ * @param {IDTimezone} timezone the timezone object
8
+ * @returns {IFSData | IFUData} the new filter data with the transformed datetime values
9
+ */
10
+ export declare function getFiltersByTimezone(filterData: IFSData | IFUData, timezone: IDTimezone): IFUData | IFSData;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFiltersByTimezone = void 0;
4
+ const isEmpty_1 = require("../../../general/mix/isEmpty");
5
+ const transformFilterValues_1 = require("../ui/transformFilterValues");
6
+ /**
7
+ * Gets and transforms the Filter Data by the Timezone object
8
+ * @param {IFSData | IFUData} filterData the filter data
9
+ * @param {IDTimezone} timezone the timezone object
10
+ * @returns {IFSData | IFUData} the new filter data with the transformed datetime values
11
+ */
12
+ function getFiltersByTimezone(filterData, timezone) {
13
+ if ((0, isEmpty_1.isEmpty)(filterData) ||
14
+ (0, isEmpty_1.isEmpty)(filterData.scopes) ||
15
+ !Array.isArray(filterData.scopes))
16
+ return filterData;
17
+ return Object.assign(Object.assign({}, filterData), { scopes: filterData.scopes.map((scope) => (Object.assign(Object.assign({}, scope), { datasets: scope.datasets.map((dataset) => (Object.assign(Object.assign({}, dataset), { filters: dataset.filters.map((filter) => (Object.assign(Object.assign({}, filter), { values: (0, transformFilterValues_1.transformFilterValues)(filter, {
18
+ timezone,
19
+ translate: undefined,
20
+ i18n: undefined,
21
+ noLocale: true,
22
+ noSuffix: true,
23
+ noTranslate: true,
24
+ }) }))) }))) }))) });
25
+ }
26
+ exports.getFiltersByTimezone = getFiltersByTimezone;
@@ -10,6 +10,7 @@ export * from "./getFiltersByDatasetsColumns";
10
10
  export * from "./getFiltersByParams";
11
11
  export * from "./getFiltersByScopes";
12
12
  export * from "./getFiltersByScopesIds";
13
+ export * from "./getFiltersByTimezone";
13
14
  export * from "./getFiltersByVisibility";
14
15
  export * from "./getMergeFiltersSettings";
15
16
  export * from "./getParamsToGetFilterSettings";
@@ -26,6 +26,7 @@ __exportStar(require("./getFiltersByDatasetsColumns"), exports);
26
26
  __exportStar(require("./getFiltersByParams"), exports);
27
27
  __exportStar(require("./getFiltersByScopes"), exports);
28
28
  __exportStar(require("./getFiltersByScopesIds"), exports);
29
+ __exportStar(require("./getFiltersByTimezone"), exports);
29
30
  __exportStar(require("./getFiltersByVisibility"), exports);
30
31
  __exportStar(require("./getMergeFiltersSettings"), exports);
31
32
  __exportStar(require("./getParamsToGetFilterSettings"), exports);
@@ -1,7 +1,13 @@
1
+ import { IDTimezone } from "../../../dates/interfaces/IDTimezone";
1
2
  import { II18nConfig } from "../../../globalization/interfaces/II18nConfig";
2
3
  import { II18nServiceTranslate } from "../../../globalization/interfaces/II18nServiceTranslate";
3
4
  export interface IFUTransformFilterValuesSettings {
5
+ timezone?: IDTimezone;
4
6
  translate: II18nServiceTranslate;
5
7
  i18n: II18nConfig;
6
8
  suffixTranslateLabel?: string;
9
+ noLocale?: boolean;
10
+ noTranslate?: boolean;
11
+ noSuffix?: boolean;
12
+ noTimezone?: boolean;
7
13
  }
@@ -1,5 +1,5 @@
1
1
  import { IFormatConfig } from "../interfaces/format/IFormatConfig.Interface";
2
- export declare function formatDate(dateString: any, format: any): any;
2
+ export declare function formatDate(dateString: any, format: any, offset: any): any;
3
3
  export declare function formatAbbreviated(num: any, decimals: any): any;
4
4
  /**
5
5
  * Set convert Bytes into MB
@@ -9,6 +9,7 @@ const dayjs_1 = __importDefault(require("dayjs"));
9
9
  const definition_1 = require("./definition");
10
10
  const isoWeek_1 = __importDefault(require("dayjs/plugin/isoWeek"));
11
11
  const advancedFormat_1 = __importDefault(require("dayjs/plugin/advancedFormat"));
12
+ const utc_1 = __importDefault(require("dayjs/plugin/utc"));
12
13
  const isEmpty_1 = require("../general/mix/isEmpty");
13
14
  const get_1 = require("../general/object/get");
14
15
  const COLUMN_1 = require("../columns/constants/COLUMN");
@@ -19,6 +20,7 @@ const DURATION_PARTS_LIST_1 = require("../column_format/constants/DURATION_PARTS
19
20
  const cloneDeep_1 = require("../general/object/cloneDeep");
20
21
  dayjs_1.default.extend(isoWeek_1.default); // Add support for iso week format https://github.com/iamkun/dayjs/issues/1328
21
22
  dayjs_1.default.extend(advancedFormat_1.default); // Add support to advanced formats https://day.js.org/docs/en/plugin/advanced-format
23
+ dayjs_1.default.extend(utc_1.default);
22
24
  /**
23
25
  * Apply to the given date format to a date value
24
26
  * @param bytes type number
@@ -27,7 +29,7 @@ function isValidDateString(dateString = "") {
27
29
  return (/^\d{2}\/\d{2}\/\d{4}/.test(dateString) || // MM/DD/YYY OR DD/MM/YYYY
28
30
  /^\d{4}-\d{2}-\d{2}/.test(dateString)); // YYYY-MM-DD
29
31
  }
30
- function formatDate(dateString, format) {
32
+ function formatDate(dateString, format, offset) {
31
33
  let _format = (0, cloneDeep_1.cloneDeep)(format);
32
34
  if ((0, isObject_1.isObject)(format))
33
35
  _format = _format.format || "";
@@ -35,8 +37,12 @@ function formatDate(dateString, format) {
35
37
  return dateString;
36
38
  if (!isValidDateString(dateString))
37
39
  return dateString;
38
- const dateValue = dateString === null || dateString === void 0 ? void 0 : dateString.replace(/Z$/i, "");
39
- return (0, dayjs_1.default)(dateValue.split(".")[0]).format(_format
40
+ const dateStringCleaned = dateString === null || dateString === void 0 ? void 0 : dateString.replace(/Z$/i, "");
41
+ const firstPartOfDateString = (0, dayjs_1.default)(dateStringCleaned.split(".")[0]);
42
+ const newDateValue = !(0, isEmpty_1.isEmpty)(offset)
43
+ ? firstPartOfDateString.utcOffset(offset)
44
+ : firstPartOfDateString;
45
+ return newDateValue.format(_format
40
46
  .replace("HH24:", "HH:")
41
47
  .replace("MI:SS", "mm:ss")
42
48
  .replace("MM:SS", "mm:ss"));
@@ -146,7 +152,7 @@ const addFormat = (value, outputFormat = "None", config) => {
146
152
  : formatDate(value, (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === "Default" &&
147
153
  ((_c = outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.originalFormat) === null || _c === void 0 ? void 0 : _c.format)
148
154
  ? (_d = outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.originalFormat) === null || _d === void 0 ? void 0 : _d.format
149
- : outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format);
155
+ : outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format, config === null || config === void 0 ? void 0 : config.offset);
150
156
  case "NUMERIC": {
151
157
  const parse = parseFloat(value);
152
158
  const withLocale = (outputFormat !== "None" && (config === null || config === void 0 ? void 0 : config.lang)) ||
@@ -1,5 +1,6 @@
1
1
  export * from "./array/index";
2
2
  export * from "./function/index";
3
3
  export * from "./mix/index";
4
+ export * from "./numeric/index";
4
5
  export * from "./object/index";
5
6
  export * from "./string/index";
@@ -17,5 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./array/index"), exports);
18
18
  __exportStar(require("./function/index"), exports);
19
19
  __exportStar(require("./mix/index"), exports);
20
+ __exportStar(require("./numeric/index"), exports);
20
21
  __exportStar(require("./object/index"), exports);
21
22
  __exportStar(require("./string/index"), exports);
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Gets the numeric sign of a given number
3
+ * @param {number} num the number
4
+ * @returns {string} an string with the sign
5
+ */
6
+ export declare function getSign(num: number): string;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSign = void 0;
4
+ /**
5
+ * Gets the numeric sign of a given number
6
+ * @param {number} num the number
7
+ * @returns {string} an string with the sign
8
+ */
9
+ function getSign(num) {
10
+ return Math.sign(num) > -1 ? "+" : "-";
11
+ }
12
+ exports.getSign = getSign;
@@ -0,0 +1 @@
1
+ export * from "./getSign";
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./getSign"), exports);
@@ -0,0 +1,8 @@
1
+ import { IDTimezone } from "../../dates/interfaces/IDTimezone";
2
+ /**
3
+ * Transforms the date+times propertiesof the given object by the Timezone object
4
+ * @param {any} obj the object
5
+ * @param {IDTimezone} timezone the timezone object
6
+ * @returns {IFSData | IFUData} the new filter data with the transformed datetime values
7
+ */
8
+ export declare function applyTimezoneDeep(obj: any, timezone: IDTimezone): any;