@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.
- package/README.md +1 -1
- package/dist/cjs/column_format/helpers/defineTableChartFormat.js +8 -18
- package/dist/cjs/columns/helpers/getDatasetColumn.js +1 -3
- package/dist/cjs/dates/adapters/mdyDateToDate.d.ts +1 -1
- package/dist/cjs/dates/adapters/mdyDateToDate.js +12 -5
- package/dist/cjs/dates/adapters/monthYearToDate.d.ts +1 -1
- package/dist/cjs/dates/adapters/monthYearToDate.js +8 -7
- package/dist/cjs/dates/adapters/quarterYearToDate.d.ts +1 -1
- package/dist/cjs/dates/adapters/quarterYearToDate.js +8 -7
- package/dist/cjs/dates/adapters/weekYearToDate.d.ts +1 -1
- package/dist/cjs/dates/adapters/weekYearToDate.js +20 -19
- package/dist/cjs/dates/adapters/yearToDate.d.ts +1 -1
- package/dist/cjs/dates/adapters/yearToDate.js +7 -6
- package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
- package/dist/cjs/dates/constants/DATE_FORMAT_BY_PROPERTY.js +21 -0
- package/dist/cjs/dates/helpers/getDateFormatByProperty.js +2 -31
- package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
- package/dist/cjs/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
- package/dist/cjs/dates/helpers/getDatePickerPickLevel.js +7 -1
- package/dist/cjs/dates/helpers/getSeparatorByDateFormat.js +1 -18
- package/dist/cjs/dates/helpers/index.d.ts +0 -1
- package/dist/cjs/dates/helpers/index.js +0 -1
- package/dist/cjs/dates/helpers/validateDate.js +14 -3
- package/dist/cjs/dates/range/getDateRange.js +15 -25
- package/dist/cjs/dates/relative/RelativeStatementAdapter.js +15 -10
- package/dist/cjs/dates/relative/helpers/getStatementCase.js +10 -7
- package/dist/cjs/filters/adapters/adaptDateGroupingProperty.js +9 -13
- package/dist/cjs/filters/adapters/logicToUI.js +1 -2
- package/dist/cjs/filters/adapters/transformFilters.js +1 -3
- package/dist/cjs/filters/helpers/OLD_getAggFilters.js +1 -3
- package/dist/cjs/filters/helpers/backend/buildFilters.js +5 -2
- package/dist/cjs/filters/helpers/backend/getBackendGroupValue.js +1 -2
- package/dist/cjs/filters/helpers/backend/getBackendValues.js +53 -31
- package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
- package/dist/cjs/filters/helpers/backend/getLogicByDatasetsColumns.js +57 -20
- package/dist/cjs/filters/helpers/common/excludeFiltersByParams.js +1 -2
- package/dist/cjs/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
- package/dist/cjs/filters/helpers/common/getFiltersByParams.js +1 -2
- package/dist/cjs/filters/helpers/getAggFiltersFromFilterData.js +0 -1
- package/dist/cjs/filters/helpers/getScopesByHierarchy.js +7 -5
- package/dist/cjs/filters/helpers/ui/getUIValues.js +76 -85
- package/dist/cjs/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
- package/dist/cjs/filters/services/UChartApi.d.ts +17 -3
- package/dist/cjs/filters/services/UChartApi.js +49 -26
- package/dist/cjs/filters/services/UChartPaginationApi.d.ts +17 -3
- package/dist/cjs/filters/services/UChartPaginationApi.js +45 -24
- package/dist/cjs/format/localization.js +1 -1
- package/dist/cjs/general/mix/isNaNV2.d.ts +10 -3
- package/dist/cjs/general/mix/isNaNV2.js +11 -4
- package/dist/cjs/general/string/parseUrl.js +2 -2
- package/dist/cjs/globalization/helpers/getI18nCalendar.js +10 -7
- package/dist/cjs/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
- package/dist/cjs/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
- package/dist/cjs/globalization/service/i18nextBuilder.js +1 -3
- package/dist/cjs/globalization/service/initI18n.js +1 -12
- package/dist/cjs/qrvey/helpers/getDataAnswersByColumn.js +6 -5
- package/dist/cjs/qrvey/helpers/getExpressionAnswers.js +15 -11
- package/dist/cjs/qrvey/helpers/getImageAnswers.js +1 -1
- package/dist/cjs/tokens/isTokenLabel.js +1 -2
- package/dist/column_format/helpers/defineTableChartFormat.js +8 -18
- package/dist/columns/helpers/getDatasetColumn.js +1 -3
- package/dist/dates/adapters/mdyDateToDate.d.ts +1 -1
- package/dist/dates/adapters/mdyDateToDate.js +12 -5
- package/dist/dates/adapters/monthYearToDate.d.ts +1 -1
- package/dist/dates/adapters/monthYearToDate.js +8 -7
- package/dist/dates/adapters/quarterYearToDate.d.ts +1 -1
- package/dist/dates/adapters/quarterYearToDate.js +8 -7
- package/dist/dates/adapters/weekYearToDate.d.ts +1 -1
- package/dist/dates/adapters/weekYearToDate.js +20 -19
- package/dist/dates/adapters/yearToDate.d.ts +1 -1
- package/dist/dates/adapters/yearToDate.js +7 -6
- package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.d.ts +16 -0
- package/dist/dates/constants/DATE_FORMAT_BY_PROPERTY.js +18 -0
- package/dist/dates/helpers/getDateFormatByProperty.js +2 -31
- package/dist/dates/helpers/getDateFormatRegularExpressionInArray.d.ts +2 -1
- package/dist/dates/helpers/getDateFormatRegularExpressionInArray.js +2 -7
- package/dist/dates/helpers/getDatePickerPickLevel.js +7 -1
- package/dist/dates/helpers/getSeparatorByDateFormat.js +1 -18
- package/dist/dates/helpers/index.d.ts +0 -1
- package/dist/dates/helpers/index.js +0 -1
- package/dist/dates/helpers/validateDate.js +14 -3
- package/dist/dates/range/getDateRange.js +15 -25
- package/dist/dates/relative/RelativeStatementAdapter.js +15 -10
- package/dist/dates/relative/helpers/getStatementCase.js +10 -7
- package/dist/filters/adapters/adaptDateGroupingProperty.js +9 -13
- package/dist/filters/adapters/logicToUI.js +1 -2
- package/dist/filters/adapters/transformFilters.js +1 -3
- package/dist/filters/helpers/OLD_getAggFilters.js +1 -3
- package/dist/filters/helpers/backend/buildFilters.js +5 -2
- package/dist/filters/helpers/backend/getBackendGroupValue.js +1 -2
- package/dist/filters/helpers/backend/getBackendValues.js +53 -31
- package/dist/filters/helpers/backend/getLogicByDatasetsColumns.d.ts +2 -2
- package/dist/filters/helpers/backend/getLogicByDatasetsColumns.js +56 -19
- package/dist/filters/helpers/common/excludeFiltersByParams.js +1 -2
- package/dist/filters/helpers/common/getFiltersByDatasetsColumns.js +28 -18
- package/dist/filters/helpers/common/getFiltersByParams.js +1 -2
- package/dist/filters/helpers/getAggFiltersFromFilterData.js +0 -1
- package/dist/filters/helpers/getScopesByHierarchy.js +7 -5
- package/dist/filters/helpers/ui/getUIValues.js +76 -85
- package/dist/filters/interfaces/functions/IFFGetLogicByDatasetsColumns.d.ts +3 -0
- package/dist/filters/services/UChartApi.d.ts +17 -3
- package/dist/filters/services/UChartApi.js +49 -26
- package/dist/filters/services/UChartPaginationApi.d.ts +17 -3
- package/dist/filters/services/UChartPaginationApi.js +45 -24
- package/dist/format/localization.js +1 -1
- package/dist/general/mix/isNaNV2.d.ts +10 -3
- package/dist/general/mix/isNaNV2.js +11 -4
- package/dist/general/string/parseUrl.js +2 -2
- package/dist/globalization/helpers/getI18nCalendar.js +10 -7
- package/dist/globalization/interfaces/formula_builder/II18nFormulaBuilderListModal.d.ts +2 -1
- package/dist/globalization/labels/formula_builder/I18N_FORMULA_BUILDER.js +2 -1
- package/dist/globalization/service/i18nextBuilder.js +1 -3
- package/dist/globalization/service/initI18n.js +1 -12
- package/dist/qrvey/helpers/getDataAnswersByColumn.js +6 -5
- package/dist/qrvey/helpers/getExpressionAnswers.js +14 -10
- package/dist/qrvey/helpers/getImageAnswers.js +1 -1
- package/dist/tokens/isTokenLabel.js +1 -2
- package/package.json +4 -4
- package/dist/cjs/dates/helpers/validateDateByDateFormat.d.ts +0 -8
- package/dist/cjs/dates/helpers/validateDateByDateFormat.js +0 -27
- package/dist/dates/helpers/validateDateByDateFormat.d.ts +0 -8
- 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
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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 (
|
|
54
|
-
if ((aggregate === null || aggregate === void 0 ? void 0 : aggregate.label) === AGGREGATE.COUNT
|
|
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
|
-
|
|
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
|
-
|
|
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) ||
|
|
12
|
+
if (isEmpty(date) ||
|
|
13
|
+
isTokenLabel(date) ||
|
|
14
|
+
typeof date !== "string" ||
|
|
15
|
+
!validatingDate(date))
|
|
13
16
|
return date;
|
|
14
|
-
|
|
15
|
-
|
|
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) ||
|
|
13
|
+
if (isEmpty(monthYearDate) ||
|
|
14
|
+
isTokenLabel(monthYearDate) ||
|
|
15
|
+
typeof monthYearDate !== "string" ||
|
|
16
|
+
!validateDate(monthYearDate, DATE_FORMAT.MONTH))
|
|
14
17
|
return monthYearDate;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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) ||
|
|
13
|
+
if (isEmpty(quarterYearDate) ||
|
|
14
|
+
isTokenLabel(quarterYearDate) ||
|
|
15
|
+
typeof quarterYearDate !== "string" ||
|
|
16
|
+
!validateDate(quarterYearDate, DATE_FORMAT.QUARTER))
|
|
14
17
|
return quarterYearDate;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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) ||
|
|
13
|
+
if (isEmpty(weekYear) ||
|
|
14
|
+
isTokenLabel(weekYear) ||
|
|
15
|
+
typeof weekYear !== "string" ||
|
|
16
|
+
!validateDate(weekYear, DATE_FORMAT.WEEK))
|
|
14
17
|
return weekYear;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
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) ||
|
|
12
|
+
if (isEmpty(yearDate) ||
|
|
13
|
+
isTokenLabel(yearDate) ||
|
|
14
|
+
typeof yearDate !== "string" ||
|
|
15
|
+
!validateDate(yearDate, DATE_FORMAT.YEAR))
|
|
13
16
|
return yearDate;
|
|
14
|
-
|
|
15
|
-
|
|
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 {
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
}
|
|
@@ -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 {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
58
|
+
const monthRange = monthIncludeTokens(value)
|
|
64
59
|
? getMonthRangeWithToken(value)
|
|
65
60
|
: getMonthRange(value);
|
|
66
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
229
|
+
function monthIncludeTokens(value) {
|
|
240
230
|
const [month, year] = value.split(" ");
|
|
241
231
|
return isTokenLabel(month) || isTokenLabel(year);
|
|
242
232
|
}
|