@qrvey/utils 1.4.0-2 → 1.4.0-5

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 (122) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/column_format/helpers/defineTableChartFormat.js +8 -18
  3. package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -3
  4. package/dist/cjs/dates/adapters/mdyDateToDate.d.ts +1 -1
  5. package/dist/cjs/dates/adapters/mdyDateToDate.js +12 -5
  6. package/dist/cjs/dates/adapters/monthYearToDate.d.ts +1 -1
  7. package/dist/cjs/dates/adapters/monthYearToDate.js +8 -7
  8. package/dist/cjs/dates/adapters/quarterYearToDate.d.ts +1 -1
  9. package/dist/cjs/dates/adapters/quarterYearToDate.js +8 -7
  10. package/dist/cjs/dates/adapters/weekYearToDate.d.ts +1 -1
  11. package/dist/cjs/dates/adapters/weekYearToDate.js +20 -19
  12. package/dist/cjs/dates/adapters/yearToDate.d.ts +1 -1
  13. package/dist/cjs/dates/adapters/yearToDate.js +7 -6
  14. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  15. package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.js +21 -0
  16. package/dist/cjs/dates/helpers/getDateFormatByProperty.js +2 -31
  17. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  18. package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  19. package/dist/cjs/dates/helpers/getDatePickerPickLevel.js +7 -1
  20. package/dist/cjs/dates/helpers/getSeparatorByDateFormat.js +1 -18
  21. package/dist/cjs/dates/helpers/index.d.ts +0 -1
  22. package/dist/cjs/dates/helpers/index.js +0 -1
  23. package/dist/cjs/dates/helpers/validateDate.js +14 -3
  24. package/dist/cjs/dates/range/getDateRange.js +15 -25
  25. package/dist/cjs/dates/relative/RelativeStatementAdapter.js +15 -10
  26. package/dist/cjs/dates/relative/helpers/getStatementCase.js +10 -7
  27. package/dist/cjs/filters/adapters/adaptDateGroupingProperty.js +9 -13
  28. package/dist/cjs/filters/adapters/logicToUI.js +1 -2
  29. package/dist/cjs/filters/adapters/transformFilters.js +1 -3
  30. package/dist/cjs/filters/helpers/OLD_getAggFilters.js +1 -3
  31. package/dist/cjs/filters/helpers/backend/buildFilters.js +5 -2
  32. package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +1 -2
  33. package/dist/cjs/filters/helpers/backend/getBackendValues.js +53 -31
  34. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  35. package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +57 -20
  36. package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +1 -2
  37. package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  38. package/dist/cjs/filters/helpers/common/getFiltersByParams.js +1 -2
  39. package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  40. package/dist/cjs/filters/helpers/getScopesByHierarchy.js +7 -5
  41. package/dist/cjs/filters/helpers/ui/getUIValues.js +76 -85
  42. package/dist/cjs/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  43. package/dist/cjs/filters/services/UChartApi.d.ts +17 -3
  44. package/dist/cjs/filters/services/UChartApi.js +49 -26
  45. package/dist/cjs/filters/services/UChartPaginationApi.d.ts +17 -3
  46. package/dist/cjs/filters/services/UChartPaginationApi.js +45 -24
  47. package/dist/cjs/format/localization.js +1 -1
  48. package/dist/cjs/general/mix/isNaNV2.d.ts +10 -3
  49. package/dist/cjs/general/mix/isNaNV2.js +11 -4
  50. package/dist/cjs/general/string/parseUrl.js +2 -2
  51. package/dist/cjs/globalization/helpers/getI18nCalendar.js +10 -7
  52. package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  53. package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  54. package/dist/cjs/globalization/service/i18nextBuilder.js +1 -3
  55. package/dist/cjs/globalization/service/initI18n.js +1 -12
  56. package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  57. package/dist/cjs/qrvey/helpers/getExpressionAnswers.js +15 -11
  58. package/dist/cjs/qrvey/helpers/getImageAnswers.js +1 -1
  59. package/dist/cjs/tokens/isTokenLabel.js +1 -2
  60. package/dist/column_format/helpers/defineTableChartFormat.js +8 -18
  61. package/dist/columns/helpers/getDatasetColumn.js +1 -3
  62. package/dist/dates/adapters/mdyDateToDate.d.ts +1 -1
  63. package/dist/dates/adapters/mdyDateToDate.js +12 -5
  64. package/dist/dates/adapters/monthYearToDate.d.ts +1 -1
  65. package/dist/dates/adapters/monthYearToDate.js +8 -7
  66. package/dist/dates/adapters/quarterYearToDate.d.ts +1 -1
  67. package/dist/dates/adapters/quarterYearToDate.js +8 -7
  68. package/dist/dates/adapters/weekYearToDate.d.ts +1 -1
  69. package/dist/dates/adapters/weekYearToDate.js +20 -19
  70. package/dist/dates/adapters/yearToDate.d.ts +1 -1
  71. package/dist/dates/adapters/yearToDate.js +7 -6
  72. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
  73. package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.js +18 -0
  74. package/dist/dates/helpers/getDateFormatByProperty.js +2 -31
  75. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
  76. package/dist/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
  77. package/dist/dates/helpers/getDatePickerPickLevel.js +7 -1
  78. package/dist/dates/helpers/getSeparatorByDateFormat.js +1 -18
  79. package/dist/dates/helpers/index.d.ts +0 -1
  80. package/dist/dates/helpers/index.js +0 -1
  81. package/dist/dates/helpers/validateDate.js +14 -3
  82. package/dist/dates/range/getDateRange.js +15 -25
  83. package/dist/dates/relative/RelativeStatementAdapter.js +15 -10
  84. package/dist/dates/relative/helpers/getStatementCase.js +10 -7
  85. package/dist/filters/adapters/adaptDateGroupingProperty.js +9 -13
  86. package/dist/filters/adapters/logicToUI.js +1 -2
  87. package/dist/filters/adapters/transformFilters.js +1 -3
  88. package/dist/filters/helpers/OLD_getAggFilters.js +1 -3
  89. package/dist/filters/helpers/backend/buildFilters.js +5 -2
  90. package/dist/filters/helpers/backend/getBackendGroupValue.js +1 -2
  91. package/dist/filters/helpers/backend/getBackendValues.js +53 -31
  92. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
  93. package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +56 -19
  94. package/dist/filters/helpers/common/excludeFiltersByParams.js +1 -2
  95. package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
  96. package/dist/filters/helpers/common/getFiltersByParams.js +1 -2
  97. package/dist/filters/helpers/getAggFiltersFromFilterData.js +0 -1
  98. package/dist/filters/helpers/getScopesByHierarchy.js +7 -5
  99. package/dist/filters/helpers/ui/getUIValues.js +76 -85
  100. package/dist/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
  101. package/dist/filters/services/UChartApi.d.ts +17 -3
  102. package/dist/filters/services/UChartApi.js +49 -26
  103. package/dist/filters/services/UChartPaginationApi.d.ts +17 -3
  104. package/dist/filters/services/UChartPaginationApi.js +45 -24
  105. package/dist/format/localization.js +1 -1
  106. package/dist/general/mix/isNaNV2.d.ts +10 -3
  107. package/dist/general/mix/isNaNV2.js +11 -4
  108. package/dist/general/string/parseUrl.js +2 -2
  109. package/dist/globalization/helpers/getI18nCalendar.js +10 -7
  110. package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
  111. package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
  112. package/dist/globalization/service/i18nextBuilder.js +1 -3
  113. package/dist/globalization/service/initI18n.js +1 -12
  114. package/dist/qrvey/helpers/getDataAnswersByColumn.js +6 -5
  115. package/dist/qrvey/helpers/getExpressionAnswers.js +14 -10
  116. package/dist/qrvey/helpers/getImageAnswers.js +1 -1
  117. package/dist/tokens/isTokenLabel.js +1 -2
  118. package/package.json +4 -4
  119. package/dist/cjs/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  120. package/dist/cjs/dates/helpers/validateDateByDateFormat.js +0 -27
  121. package/dist/dates/helpers/validateDateByDateFormat.d.ts +0 -8
  122. package/dist/dates/helpers/validateDateByDateFormat.js +0 -23
@@ -12,17 +12,21 @@ const isEmpty_1 = require("../../general/mix/isEmpty");
12
12
  function getExpressionAnswers(column, property) {
13
13
  if ((0, isEmpty_1.isEmpty)(column))
14
14
  return [];
15
- if (column.expressionCategory) {
16
- return (COMPLEX_COLUMN_PROPERTY_1.COMPLEX_COLUMN_PROPERTY.EXPRESSION_NEGATIVE === property
17
- ? column.expressionNegative
18
- : COMPLEX_COLUMN_PROPERTY_1.COMPLEX_COLUMN_PROPERTY.EXPRESSION_POSITIVE === property
19
- ? column.expressionPositive
20
- : []).map((word) => ({ answer: word.text }));
15
+ const categoryExpressions = column.expressionCategory
16
+ ? getCategoryAnswers(column, property)
17
+ : column.expressionWords;
18
+ return (categoryExpressions || []).map((word) => ({
19
+ answer: word.text,
20
+ }));
21
+ }
22
+ exports.getExpressionAnswers = getExpressionAnswers;
23
+ function getCategoryAnswers(column, property) {
24
+ let categoryExpressions;
25
+ if (COMPLEX_COLUMN_PROPERTY_1.COMPLEX_COLUMN_PROPERTY.EXPRESSION_NEGATIVE === property) {
26
+ categoryExpressions = column.expressionNegative;
21
27
  }
22
- else {
23
- return (column.expressionWords || []).map((word) => ({
24
- answer: word.text,
25
- }));
28
+ else if (COMPLEX_COLUMN_PROPERTY_1.COMPLEX_COLUMN_PROPERTY.EXPRESSION_POSITIVE === property) {
29
+ categoryExpressions = column.expressionPositive;
26
30
  }
31
+ return categoryExpressions;
27
32
  }
28
- exports.getExpressionAnswers = getExpressionAnswers;
@@ -9,7 +9,7 @@ exports.getImageAnswers = void 0;
9
9
  function getImageAnswers(column) {
10
10
  const answers = (column === null || column === void 0 ? void 0 : column.answers) || [];
11
11
  return answers.map((answer) => ({
12
- answer: answer.answer || "",
12
+ answer: answer.answer,
13
13
  answerid: answer.answerid,
14
14
  answerUrl: answer.imageUrl,
15
15
  }));
@@ -10,7 +10,6 @@ const isEmpty_1 = require("../general/mix/isEmpty");
10
10
  function isTokenLabel(label = "") {
11
11
  if ((0, isEmpty_1.isEmpty)(label) || typeof label !== "string")
12
12
  return false;
13
- const regex = new RegExp("^({{)([^{/\\s/}]+)(}})$", "g");
14
- return regex.test(label);
13
+ return /^\{\{([^{\s}]+)\}\}$/g.test(label);
15
14
  }
16
15
  exports.isTokenLabel = isTokenLabel;
@@ -10,19 +10,17 @@ import { columnTypeByChart } from "./columnTypeByChart";
10
10
  * @param {IColumnFormatSettings} settings - IColumnFormatSettings
11
11
  */
12
12
  export const defineTableChartFormat = (column, settings) => {
13
- const { aggregate, type, defaultFormat, outputFormat, selectedFormat, dateGroup, } = column;
13
+ const { aggregate, defaultFormat, outputFormat, selectedFormat, dateGroup } = column;
14
14
  const { tableType, shelfType } = settings;
15
15
  //Defaults
16
16
  const defaultText = "Default";
17
17
  const defaultNumeric = { type: "NUMERIC", format: "Numeric" };
18
- const defaultAbb = { type: "NUMERIC", format: "Abbreviated" };
19
18
  const isGroupedTable = tableType === TABLE_TYPE.GROUPED;
20
19
  const columnType = columnTypeByChart(column, shelfType, CHART_GROUPS.TABLES, isGroupedTable);
21
20
  const noFormatSupported = DATEGROUP_UNSUPPORT_FORMAT.some((gp) => gp === (dateGroup === null || dateGroup === void 0 ? void 0 : dateGroup.label));
22
21
  const hasDefaultFormat = isEmpty(selectedFormat) ||
23
22
  (outputFormat === null || outputFormat === void 0 ? void 0 : outputFormat.format) === defaultText ||
24
23
  (selectedFormat === null || selectedFormat === void 0 ? void 0 : selectedFormat.format) === defaultText;
25
- const isUsedAsNumericColumn = type !== columnType;
26
24
  switch (columnType) {
27
25
  case COLUMN.YES_NO:
28
26
  case COLUMN.PHONE:
@@ -40,8 +38,8 @@ export const defineTableChartFormat = (column, settings) => {
40
38
  return STRING_FORMAT.NONE;
41
39
  }
42
40
  else if (hasDefaultFormat) {
43
- const columnDefaultFormat = defaultFormat || outputFormat;
44
- return Object.assign(Object.assign({}, defaultFormat), { format: defaultText, originalFormat: Object.assign({}, columnDefaultFormat) });
41
+ const columnDefaultFormat = defaultFormat || outputFormat || { type: 'DATE', format: 'MM/DD/YYYY' };
42
+ return Object.assign(Object.assign({}, defaultFormat), { format: defaultText, originalFormat: Object.assign({}, columnDefaultFormat), type: "DATE" });
45
43
  }
46
44
  else {
47
45
  return selectedFormat;
@@ -50,21 +48,13 @@ export const defineTableChartFormat = (column, settings) => {
50
48
  case COLUMN.NUMERIC:
51
49
  case COLUMN.RATING:
52
50
  case COLUMN.SLIDEBAR: {
53
- if (isUsedAsNumericColumn) {
54
- if ((aggregate === null || aggregate === void 0 ? void 0 : aggregate.label) === AGGREGATE.COUNT && hasDefaultFormat)
51
+ if (hasDefaultFormat) {
52
+ if ((aggregate === null || aggregate === void 0 ? void 0 : aggregate.label) === AGGREGATE.COUNT ||
53
+ (aggregate === null || aggregate === void 0 ? void 0 : aggregate.label) === AGGREGATE.DISTINCTCOUNT)
55
54
  return defaultNumeric;
56
- else if (hasDefaultFormat)
57
- return defaultAbb;
58
- else
59
- return selectedFormat || outputFormat;
60
- }
61
- else {
62
- if (hasDefaultFormat) {
63
- return Object.assign({}, column.outputFormat);
64
- }
65
- else
66
- return selectedFormat;
55
+ return defaultFormat || defaultNumeric;
67
56
  }
57
+ return selectedFormat;
68
58
  }
69
59
  }
70
60
  };
@@ -3,9 +3,7 @@ export function getDatasetColumn(column, dataset) {
3
3
  if (isEmpty(column) || isEmpty(dataset))
4
4
  return;
5
5
  const columns = getDatasetColumns(dataset);
6
- if (isEmpty(column))
7
- return;
8
- return columns.find((c) => c.id === column.id);
6
+ return columns.find((c) => c.id === column.id && c.qrveyid === column.qrveyid);
9
7
  }
10
8
  function getDatasetColumns(dataset) {
11
9
  return (dataset === null || dataset === void 0 ? void 0 : dataset.options) || [];
@@ -2,6 +2,6 @@
2
2
  * Transforms String Date from a [mm/dd/yyyy] format to Date object.
3
3
  * @param monthYearDate String of [mm/dd/yyyy] date
4
4
  * @param time Flag to parse the object date to milliseconds.
5
- * @returns The date object or the date in milliseconds
5
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value
6
6
  */
7
7
  export declare function mdyDateToDate(date: string, time?: boolean): string | Date | number;
@@ -6,12 +6,19 @@ import { validateDate } from "../helpers/validateDate";
6
6
  * Transforms String Date from a [mm/dd/yyyy] format to Date object.
7
7
  * @param monthYearDate String of [mm/dd/yyyy] date
8
8
  * @param time Flag to parse the object date to milliseconds.
9
- * @returns The date object or the date in milliseconds
9
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value
10
10
  */
11
11
  export function mdyDateToDate(date, time = false) {
12
- if (isEmpty(date) || isTokenLabel(date))
12
+ if (isEmpty(date) ||
13
+ isTokenLabel(date) ||
14
+ typeof date !== "string" ||
15
+ !validatingDate(date))
13
16
  return date;
14
- if (validateDate(date, DATE_FORMAT.DAY)) {
15
- return time ? +new Date(date) : new Date(date);
16
- }
17
+ return time ? +new Date(date) : new Date(date);
18
+ }
19
+ function validatingDate(date) {
20
+ return (validateDate(date, DATE_FORMAT.DAY) ||
21
+ validateDate(date, DATE_FORMAT.HOUR) ||
22
+ validateDate(date, DATE_FORMAT.MINUTE) ||
23
+ validateDate(date, DATE_FORMAT.SECOND));
17
24
  }
@@ -2,6 +2,6 @@
2
2
  * Transforms String Date from a [Month Year] format to Date object.
3
3
  * @param monthYearDate String of [Month Year] date
4
4
  * @param time Flag to parse the object date to milliseconds.
5
- * @returns The date object or the date in milliseconds
5
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value
6
6
  */
7
7
  export declare function monthYearToDate(monthYearDate: string, time?: boolean): string | Date | number;
@@ -7,14 +7,15 @@ import { validateDate } from "../helpers/validateDate";
7
7
  * Transforms String Date from a [Month Year] format to Date object.
8
8
  * @param monthYearDate String of [Month Year] date
9
9
  * @param time Flag to parse the object date to milliseconds.
10
- * @returns The date object or the date in milliseconds
10
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value
11
11
  */
12
12
  export function monthYearToDate(monthYearDate, time = false) {
13
- if (isEmpty(monthYearDate) || isTokenLabel(monthYearDate))
13
+ if (isEmpty(monthYearDate) ||
14
+ isTokenLabel(monthYearDate) ||
15
+ typeof monthYearDate !== "string" ||
16
+ !validateDate(monthYearDate, DATE_FORMAT.MONTH))
14
17
  return monthYearDate;
15
- if (validateDate(monthYearDate, DATE_FORMAT.MONTH)) {
16
- const [month, year] = monthYearDate.split(" ");
17
- const start = new Date(+year, DATE_YEAR_MONTHS.indexOf(month), 1);
18
- return time ? +start : start;
19
- }
18
+ const [month, year] = monthYearDate.split(" ");
19
+ const start = new Date(+year, DATE_YEAR_MONTHS.indexOf(month), 1);
20
+ return time ? +start : start;
20
21
  }
@@ -2,6 +2,6 @@
2
2
  * Transforms String Date from a [Quarter Year] format to Date object.
3
3
  * @param quarterYearDate String of [Quarter Year] date
4
4
  * @param time Flag to parse the object date to milliseconds.
5
- * @returns The date object or the date in milliseconds
5
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
6
6
  */
7
7
  export declare function quarterYearToDate(quarterYearDate: string, time?: boolean): string | Date | number;
@@ -7,14 +7,15 @@ import { validateDate } from "../helpers/validateDate";
7
7
  * Transforms String Date from a [Quarter Year] format to Date object.
8
8
  * @param quarterYearDate String of [Quarter Year] date
9
9
  * @param time Flag to parse the object date to milliseconds.
10
- * @returns The date object or the date in milliseconds
10
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
11
11
  */
12
12
  export function quarterYearToDate(quarterYearDate, time = false) {
13
- if (isEmpty(quarterYearDate) || isTokenLabel(quarterYearDate))
13
+ if (isEmpty(quarterYearDate) ||
14
+ isTokenLabel(quarterYearDate) ||
15
+ typeof quarterYearDate !== "string" ||
16
+ !validateDate(quarterYearDate, DATE_FORMAT.QUARTER))
14
17
  return quarterYearDate;
15
- if (validateDate(quarterYearDate, DATE_FORMAT.QUARTER)) {
16
- const [quarter, year] = quarterYearDate.split(" ");
17
- const start = new Date(+year, DATE_YEAR_QUARTERS_RANGE[quarter].initial, 1);
18
- return time ? +start : start;
19
- }
18
+ const [quarter, year] = quarterYearDate.split(" ");
19
+ const start = new Date(+year, DATE_YEAR_QUARTERS_RANGE[quarter].initial, 1);
20
+ return time ? +start : start;
20
21
  }
@@ -2,6 +2,6 @@
2
2
  * Transforms String Date from a [Week Year] format to Date object.
3
3
  * @param date String of [Week Year] date
4
4
  * @param time Flag to parse the object date to milliseconds.
5
- * @returns The date object or the date in milliseconds
5
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
6
6
  */
7
7
  export declare function weekYearToDate(weekYear: string, time?: boolean): string | Date | number;
@@ -7,26 +7,27 @@ import { validateDate } from "../helpers/validateDate";
7
7
  * Transforms String Date from a [Week Year] format to Date object.
8
8
  * @param date String of [Week Year] date
9
9
  * @param time Flag to parse the object date to milliseconds.
10
- * @returns The date object or the date in milliseconds
10
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
11
11
  */
12
12
  export function weekYearToDate(weekYear, time = false) {
13
- if (isEmpty(weekYear) || isTokenLabel(weekYear))
13
+ if (isEmpty(weekYear) ||
14
+ isTokenLabel(weekYear) ||
15
+ typeof weekYear !== "string" ||
16
+ !validateDate(weekYear, DATE_FORMAT.WEEK))
14
17
  return weekYear;
15
- if (validateDate(weekYear, DATE_FORMAT.WEEK)) {
16
- const [week, year] = weekYear.split(" ");
17
- const weekNumber = Number(week.substring(1));
18
- const dateObj = new Date(+year, 1, 1);
19
- const numOfdaysPastSinceLastSunday = dateObj.getDay();
20
- dateObj.setDate(dateObj.getDate() - numOfdaysPastSinceLastSunday);
21
- const weekNoToday = getWeek(dateObj).week;
22
- const weeksInTheFuture = weekNumber - weekNoToday;
23
- dateObj.setDate(dateObj.getDate() + 7 * weeksInTheFuture);
24
- const date = new Date(dateObj.getMonth() +
25
- 1 +
26
- "/" +
27
- dateObj.getDate() +
28
- "/" +
29
- dateObj.getFullYear());
30
- return time ? +date : date;
31
- }
18
+ const [week, year] = weekYear.split(" ");
19
+ const weekNumber = Number(week.substring(1));
20
+ const dateObj = new Date(+year, 1, 1);
21
+ const numOfdaysPastSinceLastSunday = dateObj.getDay();
22
+ dateObj.setDate(dateObj.getDate() - numOfdaysPastSinceLastSunday);
23
+ const weekNoToday = getWeek(dateObj).week;
24
+ const weeksInTheFuture = weekNumber - weekNoToday;
25
+ dateObj.setDate(dateObj.getDate() + 7 * weeksInTheFuture);
26
+ const date = new Date(dateObj.getMonth() +
27
+ 1 +
28
+ "/" +
29
+ dateObj.getDate() +
30
+ "/" +
31
+ dateObj.getFullYear());
32
+ return time ? +date : date;
32
33
  }
@@ -2,6 +2,6 @@
2
2
  * Transforms String Date from a [Year] format to Date object.
3
3
  * @param yearDate String of [Year] date
4
4
  * @param time Flag to parse the object date to milliseconds.
5
- * @returns The date object or the date in milliseconds
5
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
6
6
  */
7
7
  export declare function yearToDate(yearDate: string, time?: boolean): string | Date | number;
@@ -6,13 +6,14 @@ import { validateDate } from "../helpers/validateDate";
6
6
  * Transforms String Date from a [Year] format to Date object.
7
7
  * @param yearDate String of [Year] date
8
8
  * @param time Flag to parse the object date to milliseconds.
9
- * @returns The date object or the date in milliseconds
9
+ * @returns The date object or the date in milliseconds. If the argument is an unexpected date, the function will return the same value.
10
10
  */
11
11
  export function yearToDate(yearDate, time = false) {
12
- if (isEmpty(yearDate) || isTokenLabel(yearDate))
12
+ if (isEmpty(yearDate) ||
13
+ isTokenLabel(yearDate) ||
14
+ typeof yearDate !== "string" ||
15
+ !validateDate(yearDate, DATE_FORMAT.YEAR))
13
16
  return yearDate;
14
- if (validateDate(yearDate, DATE_FORMAT.YEAR)) {
15
- const start = new Date(+yearDate, 0, 1);
16
- return time ? +start : start;
17
- }
17
+ const start = new Date(+yearDate, 0, 1);
18
+ return time ? +start : start;
18
19
  }
@@ -0,0 +1,16 @@
1
+ export declare const DATE_FORMAT_BY_PROPERTY: {
2
+ year: string;
3
+ month: string;
4
+ quarter: string;
5
+ week: string;
6
+ day: string;
7
+ hour: string;
8
+ minute: string;
9
+ second: string;
10
+ day_only: string;
11
+ month_only: string;
12
+ quarter_only: string;
13
+ hour_only: string;
14
+ minute_only: string;
15
+ second_only: string;
16
+ };
@@ -0,0 +1,18 @@
1
+ import { COLUMN_PROPERTY } from "../../columns/constants/COLUMN_PROPERTY";
2
+ import { DATE_FORMAT } from "./DATE_FORMAT";
3
+ export const DATE_FORMAT_BY_PROPERTY = {
4
+ [COLUMN_PROPERTY.YEAR]: DATE_FORMAT.YEAR,
5
+ [COLUMN_PROPERTY.MONTH]: DATE_FORMAT.MONTH,
6
+ [COLUMN_PROPERTY.QUARTER]: DATE_FORMAT.QUARTER,
7
+ [COLUMN_PROPERTY.WEEK]: DATE_FORMAT.WEEK,
8
+ [COLUMN_PROPERTY.DAY]: DATE_FORMAT.DAY,
9
+ [COLUMN_PROPERTY.HOUR]: DATE_FORMAT.HOUR,
10
+ [COLUMN_PROPERTY.MINUTE]: DATE_FORMAT.MINUTE,
11
+ [COLUMN_PROPERTY.SECOND]: DATE_FORMAT.SECOND,
12
+ [COLUMN_PROPERTY.MONTH_DAY]: DATE_FORMAT.MONTH_DAY,
13
+ [COLUMN_PROPERTY.YEAR_MONTH]: DATE_FORMAT.YEAR_MONTH,
14
+ [COLUMN_PROPERTY.YEAR_QUARTER]: DATE_FORMAT.YEAR_QUARTER,
15
+ [COLUMN_PROPERTY.DAY_HOUR]: DATE_FORMAT.DAY_HOUR,
16
+ [COLUMN_PROPERTY.HOUR_MINUTE]: DATE_FORMAT.HOUR_MINUTE,
17
+ [COLUMN_PROPERTY.MINUTE_SECOND]: DATE_FORMAT.MINUTE_SECOND,
18
+ };
@@ -1,38 +1,9 @@
1
- import { COLUMN_PROPERTY } from "../../columns/constants/COLUMN_PROPERTY";
2
- import { DATE_FORMAT } from "../constants/DATE_FORMAT";
1
+ import { DATE_FORMAT_BY_PROPERTY } from "../constants/DATE_FORMAT_BY_PROPERTY";
3
2
  /**
4
3
  * Gets the date format by the given property
5
4
  * @param property The Column Property
6
5
  * @returns The date format
7
6
  */
8
7
  export function getDateFormatByProperty(property) {
9
- return property === COLUMN_PROPERTY.YEAR
10
- ? DATE_FORMAT.YEAR
11
- : property === COLUMN_PROPERTY.MONTH
12
- ? DATE_FORMAT.MONTH
13
- : property === COLUMN_PROPERTY.QUARTER
14
- ? DATE_FORMAT.QUARTER
15
- : property === COLUMN_PROPERTY.WEEK
16
- ? DATE_FORMAT.WEEK
17
- : property === COLUMN_PROPERTY.DAY
18
- ? DATE_FORMAT.DAY
19
- : property === COLUMN_PROPERTY.HOUR
20
- ? DATE_FORMAT.HOUR
21
- : property === COLUMN_PROPERTY.MINUTE
22
- ? DATE_FORMAT.MINUTE
23
- : property === COLUMN_PROPERTY.SECOND
24
- ? DATE_FORMAT.SECOND
25
- : property === COLUMN_PROPERTY.MONTH_DAY
26
- ? DATE_FORMAT.MONTH_DAY
27
- : property === COLUMN_PROPERTY.YEAR_MONTH
28
- ? DATE_FORMAT.YEAR_MONTH
29
- : property === COLUMN_PROPERTY.YEAR_QUARTER
30
- ? DATE_FORMAT.YEAR_QUARTER
31
- : property === COLUMN_PROPERTY.DAY_HOUR
32
- ? DATE_FORMAT.DAY_HOUR
33
- : property === COLUMN_PROPERTY.HOUR_MINUTE
34
- ? DATE_FORMAT.HOUR_MINUTE
35
- : property === COLUMN_PROPERTY.MINUTE_SECOND
36
- ? DATE_FORMAT.MINUTE_SECOND
37
- : undefined;
8
+ return DATE_FORMAT_BY_PROPERTY[property];
38
9
  }
@@ -1,6 +1,7 @@
1
1
  import { IDateFormat } from "../interfaces/IDateFormat";
2
2
  /**
3
- * Gets an array of regular expressions by the given date format
3
+ * Gets an array of regular expressions by the given date format.
4
+ * Day date format is the default
4
5
  * @param dateFormat the date format
5
6
  * @returns an array of regular expressions
6
7
  */
@@ -1,7 +1,8 @@
1
1
  import { DATE_FORMAT } from "../constants/DATE_FORMAT";
2
2
  import { DATE_REGULAR_EXPRESSION } from "../constants/DATE_REGULAR_EXPRESSION";
3
3
  /**
4
- * Gets an array of regular expressions by the given date format
4
+ * Gets an array of regular expressions by the given date format.
5
+ * Day date format is the default
5
6
  * @param dateFormat the date format
6
7
  * @returns an array of regular expressions
7
8
  */
@@ -18,12 +19,6 @@ export function getDateFormatRegularExpressionInArray(dateFormat = DATE_FORMAT.D
18
19
  ];
19
20
  case DATE_FORMAT.WEEK:
20
21
  return [DATE_REGULAR_EXPRESSION.YEAR_WEEK, DATE_REGULAR_EXPRESSION.YEAR];
21
- case DATE_FORMAT.DAY:
22
- return [
23
- DATE_REGULAR_EXPRESSION.YEAR_MONTH_NUMBER,
24
- DATE_REGULAR_EXPRESSION.MONTH_DAY,
25
- DATE_REGULAR_EXPRESSION.YEAR,
26
- ];
27
22
  case DATE_FORMAT.DAY_TIME:
28
23
  return [DATE_REGULAR_EXPRESSION.DAY_TIME];
29
24
  case DATE_FORMAT.HOUR:
@@ -5,5 +5,11 @@ import { DATE_FORMAT } from "../constants/DATE_FORMAT";
5
5
  * @returns {number} A number of the pick level setting
6
6
  */
7
7
  export function getDatePickerPickLevel(format) {
8
- return format === DATE_FORMAT.YEAR ? 2 : format === DATE_FORMAT.MONTH ? 1 : 0;
8
+ if (format === DATE_FORMAT.YEAR) {
9
+ return 2;
10
+ }
11
+ else if (format === DATE_FORMAT.MONTH) {
12
+ return 1;
13
+ }
14
+ return 0;
9
15
  }
@@ -5,22 +5,5 @@ import { DATE_FORMAT } from "../constants/DATE_FORMAT";
5
5
  * @returns a separator string
6
6
  */
7
7
  export function getSeparatorByDateFormat(format = DATE_FORMAT.DAY) {
8
- return format === DATE_FORMAT.YEAR ||
9
- format === DATE_FORMAT.DAY_TIME ||
10
- format === DATE_FORMAT.MONTH_DAY ||
11
- format === DATE_FORMAT.YEAR_MONTH ||
12
- format === DATE_FORMAT.YEAR_QUARTER ||
13
- format === DATE_FORMAT.YEAR_WEEK ||
14
- format === DATE_FORMAT.DAY_HOUR ||
15
- format === DATE_FORMAT.HOUR_MINUTE ||
16
- format === DATE_FORMAT.MINUTE_SECOND
17
- ? " "
18
- : format === DATE_FORMAT.MONTH ||
19
- format === DATE_FORMAT.QUARTER ||
20
- format === DATE_FORMAT.WEEK ||
21
- format === DATE_FORMAT.HOUR ||
22
- format === DATE_FORMAT.MINUTE ||
23
- format === DATE_FORMAT.SECOND
24
- ? " "
25
- : "/";
8
+ return format === DATE_FORMAT.DAY ? "/" : " ";
26
9
  }
@@ -7,4 +7,3 @@ export * from "./getSeparatorByDateFormat";
7
7
  export * from "./includeDateTokens";
8
8
  export * from "./getWeek";
9
9
  export * from "./validateDate";
10
- export * from "./validateDateByDateFormat";
@@ -7,4 +7,3 @@ export * from "./getSeparatorByDateFormat";
7
7
  export * from "./includeDateTokens";
8
8
  export * from "./getWeek";
9
9
  export * from "./validateDate";
10
- export * from "./validateDateByDateFormat";
@@ -1,7 +1,8 @@
1
1
  import { isEmpty } from "../../general/mix/isEmpty";
2
2
  import { isTokenLabel } from "../../tokens/isTokenLabel";
3
3
  import { DATE_FORMAT } from "../constants/DATE_FORMAT";
4
- import { validateDateByDateFormat } from "./validateDateByDateFormat";
4
+ import { getDateFormatRegularExpressionInArray } from "./getDateFormatRegularExpressionInArray";
5
+ import { getSeparatorByDateFormat } from "./getSeparatorByDateFormat";
5
6
  /**
6
7
  * Validate a string date depending on giving format
7
8
  * - If the string is a token label, the function lets it pass.
@@ -12,9 +13,19 @@ import { validateDateByDateFormat } from "./validateDateByDateFormat";
12
13
  * @returns True if it is valid or not. Undefined if date is undefined
13
14
  */
14
15
  export function validateDate(date, format = DATE_FORMAT.DAY) {
15
- if (isEmpty(date))
16
+ if (isEmpty(date) || typeof date !== "string")
16
17
  return false;
17
18
  if (isTokenLabel(date))
18
19
  return true;
19
- return validateDateByDateFormat(date, format);
20
+ const resultValidation = [];
21
+ const separator = getSeparatorByDateFormat(format);
22
+ const separatedDate = separator === "" ? [date] : date.split(separator);
23
+ const regularExpression = getDateFormatRegularExpressionInArray(format);
24
+ if (regularExpression.length !== separatedDate.length)
25
+ return false;
26
+ for (let i = 0; i < separatedDate.length; i++) {
27
+ resultValidation.push(isTokenLabel(separatedDate[i]) ||
28
+ new RegExp(regularExpression[i], "g").test(separatedDate[i]));
29
+ }
30
+ return resultValidation.every((validValue) => validValue);
20
31
  }
@@ -36,7 +36,6 @@ import { isValidDateObject } from "../helpers/isValidDateObject";
36
36
  * }
37
37
  */
38
38
  export function getDateRange(value, dateGroupLabel = "DAY", withTime = true) {
39
- const range = {};
40
39
  const upperCaseDateGroup = dateGroupLabel.toUpperCase();
41
40
  const [timeFrom, timeTo] = withTime
42
41
  ? getStringTimeRange(value, upperCaseDateGroup)
@@ -47,60 +46,51 @@ export function getDateRange(value, dateGroupLabel = "DAY", withTime = true) {
47
46
  const yearRange = !isToken
48
47
  ? getYearRange(value)
49
48
  : { from: `01/01/${value}`, to: `12/31/${value}` };
50
- range.from = `${yearRange.from}${timeFrom}`;
51
- range.to = `${yearRange.to}${timeTo}`;
52
- break;
49
+ return getRange(`${yearRange.from}${timeFrom}`, `${yearRange.to}${timeTo}`);
53
50
  }
54
51
  case "QUARTER": {
55
52
  const quarterRange = !isToken
56
53
  ? getQuarterRange(value)
57
54
  : { from: value, to: value };
58
- range.from = `${quarterRange.from}${timeFrom}`;
59
- range.to = `${quarterRange.to}${timeTo}`;
60
- break;
55
+ return getRange(`${quarterRange.from}${timeFrom}`, `${quarterRange.to}${timeTo}`);
61
56
  }
62
57
  case "MONTH": {
63
- const monthRange = monthInclideTokens(value)
58
+ const monthRange = monthIncludeTokens(value)
64
59
  ? getMonthRangeWithToken(value)
65
60
  : getMonthRange(value);
66
- range.from = `${monthRange.from}${timeFrom}`;
67
- range.to = `${monthRange.to}${timeTo}`;
68
- break;
61
+ return getRange(`${monthRange.from}${timeFrom}`, `${monthRange.to}${timeTo}`);
69
62
  }
70
63
  case "WEEK": {
71
64
  const weekRange = !isToken
72
65
  ? getWeekRange(value)
73
66
  : { from: value, to: value };
74
- range.from = `${weekRange.from}${timeFrom}`;
75
- range.to = `${weekRange.to}${timeTo}`;
76
- break;
67
+ return getRange(`${weekRange.from}${timeFrom}`, `${weekRange.to}${timeTo}`);
77
68
  }
78
69
  case "HOUR": {
79
70
  const hourRange = !isToken
80
71
  ? getHourRange(value)
81
72
  : { from: value, to: value };
82
- range.from = hourRange.from;
83
- range.to = hourRange.to;
84
- break;
73
+ return getRange(hourRange.from, hourRange.to);
85
74
  }
86
75
  case "MINUTE": {
87
76
  const minuteRange = !isToken
88
77
  ? getMinuteRange(value)
89
78
  : { from: value, to: value };
90
- range.from = minuteRange.from;
91
- range.to = minuteRange.to;
92
- break;
79
+ return getRange(minuteRange.from, minuteRange.to);
93
80
  }
94
81
  default: {
95
82
  const dayFrom = new Date(value);
96
83
  const dayTo = new Date(value);
97
84
  const includTokens = includeTokens(value, "/");
98
- range.from = `${!includTokens ? getStringDate(dayFrom) : value}${timeFrom}`;
99
- range.to = `${!includTokens ? getStringDate(dayTo) : value}${timeTo}`;
100
- break;
85
+ return getRange(`${!includTokens ? getStringDate(dayFrom) : value}${timeFrom}`, `${!includTokens ? getStringDate(dayTo) : value}${timeTo}`);
101
86
  }
102
87
  }
103
- return range;
88
+ }
89
+ function getRange(from, to) {
90
+ return {
91
+ from,
92
+ to,
93
+ };
104
94
  }
105
95
  function getStringTimeRange(value, dateGroupLabel) {
106
96
  const addLeadingZero = (unit) => `${unit < 10 ? "0" : ""}${unit}`;
@@ -236,7 +226,7 @@ function getMonthRangeWithToken(value) {
236
226
  to: `${monthToReturn}/{{LAST_DAY_MONTH}}/${year}`,
237
227
  };
238
228
  }
239
- function monthInclideTokens(value) {
229
+ function monthIncludeTokens(value) {
240
230
  const [month, year] = value.split(" ");
241
231
  return isTokenLabel(month) || isTokenLabel(year);
242
232
  }