dtable-utils 4.3.5 → 4.3.6

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 (52) hide show
  1. package/dist/index.js +1 -1
  2. package/es/archive/clause-module/search.js +185 -0
  3. package/es/archive/clause-module/update.js +121 -0
  4. package/es/archive/sql-generator/filter-condition.js +15 -7
  5. package/es/cell-value-get/auto-number.js +17 -0
  6. package/es/cell-value-get/collaborator.js +14 -1
  7. package/es/cell-value-set/auto-number.js +85 -0
  8. package/es/cell-value-set/checkbox.js +5 -0
  9. package/es/cell-value-set/duration.js +56 -0
  10. package/es/cell-value-set/geolocation.js +68 -0
  11. package/es/cell-value-set/image.js +20 -0
  12. package/es/cell-value-set/long-text.js +27 -0
  13. package/es/cell-value-set/multiple-select.js +81 -0
  14. package/es/cell-value-set/number.js +16 -1
  15. package/es/cell-value-set/single-select.js +47 -0
  16. package/es/column/file.js +13 -0
  17. package/es/column/long-text.js +68 -0
  18. package/es/constants/auto-number.js +7 -0
  19. package/es/constants/column.js +2 -1
  20. package/es/constants/formula.js +2 -1
  21. package/es/constants/limit.js +7 -1
  22. package/es/constants/permission.js +7 -0
  23. package/es/helper/patch-utils.js +38 -0
  24. package/es/index.js +19 -4
  25. package/es/row/convert.js +201 -2
  26. package/es/view/summaries.js +11 -2
  27. package/lib/archive/clause-module/search.js +200 -0
  28. package/lib/archive/clause-module/update.js +126 -0
  29. package/lib/archive/sql-generator/filter-condition.js +15 -7
  30. package/lib/cell-value-get/auto-number.js +21 -0
  31. package/lib/cell-value-get/collaborator.js +14 -0
  32. package/lib/cell-value-set/auto-number.js +94 -0
  33. package/lib/cell-value-set/checkbox.js +9 -0
  34. package/lib/cell-value-set/duration.js +60 -0
  35. package/lib/cell-value-set/geolocation.js +72 -0
  36. package/lib/cell-value-set/image.js +24 -0
  37. package/lib/cell-value-set/long-text.js +31 -0
  38. package/lib/cell-value-set/multiple-select.js +86 -0
  39. package/lib/cell-value-set/number.js +16 -0
  40. package/lib/cell-value-set/single-select.js +51 -0
  41. package/lib/column/file.js +21 -0
  42. package/lib/column/long-text.js +72 -0
  43. package/lib/constants/auto-number.js +12 -0
  44. package/lib/constants/column.js +2 -0
  45. package/lib/constants/formula.js +2 -0
  46. package/lib/constants/limit.js +8 -0
  47. package/lib/constants/permission.js +11 -0
  48. package/lib/helper/patch-utils.js +47 -0
  49. package/lib/index.js +64 -20
  50. package/lib/row/convert.js +204 -0
  51. package/lib/view/summaries.js +11 -2
  52. package/package.json +1 -1
@@ -0,0 +1,200 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dayjs = require('dayjs');
6
+ var utc = require('dayjs/plugin/utc');
7
+ require('../../constants/column.js');
8
+ var index = require('../../constants/filter/index.js');
9
+ require('../../constants/formula.js');
10
+ require('../../constants/sort.js');
11
+ require('../../constants/group.js');
12
+ var filterCondition = require('../sql-generator/filter-condition.js');
13
+ var core$1 = require('../../sort/core.js');
14
+ require('../../cell-value-get/cell-value.js');
15
+ var filter = require('../../validate/filter.js');
16
+ var core = require('../../view/core.js');
17
+ require('@babel/runtime/helpers/typeof');
18
+ require('@babel/runtime/helpers/defineProperty');
19
+ require('@babel/runtime/helpers/toConsumableArray');
20
+ require('../../date.js');
21
+
22
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
23
+
24
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
25
+ var utc__default = /*#__PURE__*/_interopDefaultLegacy(utc);
26
+
27
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
28
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
29
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
30
+ dayjs__default["default"].extend(utc__default["default"]);
31
+ var generatorSearchSQL = function generatorSearchSQL(table, view, start, limit, username, userId, userDepartmentIdsMap) {
32
+ // MAIN
33
+ var table_name = table.name;
34
+ var searchingColumnsString = generateViewSearchColumnsString(table, view);
35
+ var sql = "SELECT ".concat(searchingColumnsString, " FROM `").concat(table_name, "`");
36
+
37
+ // WHERE CLAUSE
38
+ var filterClause = filterCondition.filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap);
39
+
40
+ // ORDER BY CLAUSE
41
+ var sortSqlClause = sort2SqlCondition(table, view);
42
+
43
+ // LIMIT CLAUSE
44
+ var reg1 = /^[1-9]d*|0$/; // non-negative integer
45
+ var reg2 = /^[1-9]\d*$/; // positive integer
46
+ var limitClause = '';
47
+ var isValidStart = reg1.test(start);
48
+ var isValidLimit = reg2.test(limit);
49
+ if (isValidStart && isValidLimit) {
50
+ limitClause = "LIMIT ".concat(start, ", ").concat(limit, ";");
51
+ }
52
+ return "".concat(sql, " ").concat(filterClause, " ").concat(sortSqlClause, " ").concat(limitClause);
53
+ };
54
+ var generatorCustomSearchSQL = function generatorCustomSearchSQL(table, start, limit, conditions) {
55
+ // MAIN
56
+ var table_name = table.name;
57
+ var sql = "SELECT * FROM `".concat(table_name, "`");
58
+
59
+ // WHERE CLAUSE
60
+ var filterClause = customFilter2SqlCondition(table, conditions);
61
+
62
+ // ORDER BY CLAUSE
63
+ var sortSqlClause = customSort2SqlCondition(table, conditions);
64
+
65
+ // LIMIT CLAUSE
66
+ var reg1 = /^[1-9]d*|0$/; // non-negative integer
67
+ var reg2 = /^[1-9]\d*$/; // positive integer
68
+ var limitClause = '';
69
+ var isValidStart = reg1.test(start);
70
+ var isValidLimit = reg2.test(limit);
71
+ if (isValidStart && isValidLimit) {
72
+ limitClause = "LIMIT ".concat(start, ", ").concat(limit, ";");
73
+ }
74
+ return "".concat(sql, " ").concat(filterClause, " ").concat(sortSqlClause, " ").concat(limitClause);
75
+ };
76
+ var generateSearchColumnsString = function generateSearchColumnsString(columns) {
77
+ var columnsNames = columns ? columns.map(function (column) {
78
+ return "`".concat(column.name, "`");
79
+ }) : [];
80
+ columnsNames.push('`_id`', '`_archived`', '`_locked`');
81
+ return columnsNames.join(', ');
82
+ };
83
+ var generateViewSearchColumnsString = function generateViewSearchColumnsString(table, view) {
84
+ var visibleColumns = table ? core.getViewShownColumns(view, table.columns) : [];
85
+ return generateSearchColumnsString(visibleColumns);
86
+ };
87
+ var sort2SqlCondition = function sort2SqlCondition(table, view) {
88
+ var columns = table.columns;
89
+ var sorts = core$1.getValidSorts(view.sorts, columns);
90
+ if (!sorts || sorts.length === 0) {
91
+ return '';
92
+ }
93
+ var orderHeader = 'ORDER BY ';
94
+ var clauses = sorts.map(function (sort) {
95
+ var column_key = sort.column_key,
96
+ sort_type = sort.sort_type;
97
+ var column = columns.find(function (item) {
98
+ return item.key === column_key;
99
+ });
100
+ if (!column) return '';
101
+ var type = sort_type === 'up' ? 'ASC' : 'DESC';
102
+ return "`".concat(column.name, "` ").concat(type);
103
+ });
104
+ clauses = clauses.filter(function (item) {
105
+ return item && item !== '';
106
+ });
107
+ if (clauses.length === 0) return '';
108
+ return orderHeader + clauses.join(', ');
109
+ };
110
+ var customSort2SqlCondition = function customSort2SqlCondition(table, sort_conditions) {
111
+ var columns = table.columns;
112
+ var condition_sorts = sort_conditions && sort_conditions.sorts || [];
113
+ if (!condition_sorts || condition_sorts.length === 0) {
114
+ return '';
115
+ }
116
+ var orderHeader = 'ORDER BY ';
117
+ var clauses = condition_sorts.map(function (sort) {
118
+ var column_key = sort.column_key,
119
+ sort_type = sort.sort_type;
120
+ var column = columns.find(function (item) {
121
+ return item.key === column_key;
122
+ });
123
+ var type = sort_type === 'up' ? 'ASC' : 'DESC';
124
+ if (!column) {
125
+ if (['_ctime', '_mtime'].indexOf(column_key) !== -1) {
126
+ return "`".concat(column_key, "` ").concat(type);
127
+ }
128
+ return '';
129
+ }
130
+ return "`".concat(column.name, "` ").concat(type);
131
+ });
132
+ clauses = clauses.filter(function (item) {
133
+ return item && item !== '';
134
+ });
135
+ if (clauses.length === 0) return '';
136
+ return orderHeader + clauses.join(', ');
137
+ };
138
+ var customFilter2SqlCondition = function customFilter2SqlCondition(table, filter_conditions) {
139
+ var columns = table.columns;
140
+ var filter_groups = filter_conditions.filter_groups,
141
+ group_conjunction = filter_conditions.group_conjunction;
142
+ if (!filter_groups || filter_groups.length === 0) {
143
+ return '';
144
+ }
145
+ var filterHeader = 'WHERE ';
146
+ var groupStringList = [];
147
+
148
+ // eslint-disable-next-line no-restricted-syntax
149
+ var _iterator = _createForOfIteratorHelper(filter_groups),
150
+ _step;
151
+ try {
152
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
153
+ var filterGroup = _step.value;
154
+ var filters = filterGroup.filters,
155
+ filter_conjunction = filterGroup.filter_conjunction;
156
+ var stringList = filters.map(function (filterItem) {
157
+ var _ValidateFilter$valid = filter.ValidateFilter.validate(filterItem, columns),
158
+ error_message = _ValidateFilter$valid.error_message;
159
+ if (error_message) {
160
+ if (error_message === index.FILTER_ERR_MSG.INCOMPLETE_FILTER) {
161
+ return '';
162
+ }
163
+ throw new Error(error_message);
164
+ }
165
+ var column_key = filterItem.column_key;
166
+ var column = columns.find(function (item) {
167
+ return item.key === column_key;
168
+ });
169
+ return filterCondition.getSqlConditionByFilter(column, filterItem);
170
+ });
171
+ stringList = stringList.filter(function (item) {
172
+ return item && item.length > 0;
173
+ });
174
+ if (stringList.length !== 0) {
175
+ var filterContent = stringList[0];
176
+ if (stringList.length > 1) {
177
+ for (var i = 1; i < stringList.length; i++) {
178
+ filterContent += " ".concat(filter_conjunction, " (").concat(stringList[i], ")");
179
+ }
180
+ }
181
+ // eslint-disable-next-line prefer-template
182
+ filterContent = '(' + filterContent + ')';
183
+ groupStringList.push(filterContent);
184
+ }
185
+ }
186
+ } catch (err) {
187
+ _iterator.e(err);
188
+ } finally {
189
+ _iterator.f();
190
+ }
191
+ return filterHeader + groupStringList.join(" ".concat(group_conjunction, " "));
192
+ };
193
+
194
+ exports.customFilter2SqlCondition = customFilter2SqlCondition;
195
+ exports.customSort2SqlCondition = customSort2SqlCondition;
196
+ exports.generateSearchColumnsString = generateSearchColumnsString;
197
+ exports.generateViewSearchColumnsString = generateViewSearchColumnsString;
198
+ exports.generatorCustomSearchSQL = generatorCustomSearchSQL;
199
+ exports.generatorSearchSQL = generatorSearchSQL;
200
+ exports.sort2SqlCondition = sort2SqlCondition;
@@ -0,0 +1,126 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var cellType = require('../../constants/cell-type.js');
6
+ var column = require('../../constants/column.js');
7
+ require('../../constants/filter/filter-column-options.js');
8
+ require('../../constants/filter/filter-modifier.js');
9
+ require('../../constants/filter/filter-predicate.js');
10
+ require('../../constants/filter/filter-is-within.js');
11
+ require('../../constants/formula.js');
12
+ require('../../constants/sort.js');
13
+ require('../../constants/group.js');
14
+ require('dayjs');
15
+ var number = require('../../number.js');
16
+ var option = require('../../cell-value-get/option.js');
17
+ require('../../cell-value-get/cell-value.js');
18
+
19
+ /**
20
+ * What: get converted value to update row.
21
+ * Where: big data view
22
+ * @param {Object} column
23
+ * @param {Object} { [column.key]: 'xxx' }
24
+ * @returns converted value
25
+ */
26
+ var getConvertedUpdatedValue = function getConvertedUpdatedValue(column$1, updated) {
27
+ if (!column$1 || column.NOT_SUPPORT_EDIT_COLUMN_TYPE.includes(column$1.type)) {
28
+ return null;
29
+ }
30
+ var columnType = column$1.type,
31
+ data = column$1.data;
32
+ var columnValue = Object.values(updated)[0];
33
+ if (column.NUMERIC_COLUMNS_TYPES.includes(columnType)) {
34
+ return number.isNumber(columnValue) ? columnValue : null;
35
+ }
36
+ switch (columnType) {
37
+ case cellType.CellType.TEXT:
38
+ case cellType.CellType.URL:
39
+ case cellType.CellType.EMAIL:
40
+ {
41
+ if (!columnValue) {
42
+ return null;
43
+ }
44
+ var text = columnValue.trim();
45
+ return text || null;
46
+ }
47
+ case cellType.CellType.CHECKBOX:
48
+ {
49
+ if (typeof columnValue !== 'boolean') {
50
+ return null;
51
+ }
52
+ return columnValue;
53
+ }
54
+ case cellType.CellType.DATE:
55
+ {
56
+ if (!columnValue) {
57
+ return null;
58
+ }
59
+ // compatible with underlying storage
60
+ var format = data && data.format;
61
+ var isHasMinute = format && format.indexOf('HH:mm') > -1;
62
+ // eslint-disable-next-line prefer-template
63
+ return isHasMinute ? columnValue + ':00' : columnValue;
64
+ }
65
+ case cellType.CellType.LONG_TEXT:
66
+ {
67
+ if (!columnValue || !Object.prototype.hasOwnProperty.call(columnValue, 'text')) {
68
+ return null;
69
+ }
70
+ return columnValue.text || null;
71
+ }
72
+ case cellType.CellType.SINGLE_SELECT:
73
+ {
74
+ var options = data && data.options;
75
+ return option.getOptionName(options, columnValue) || null;
76
+ }
77
+ case cellType.CellType.MULTIPLE_SELECT:
78
+ {
79
+ var _options = data && data.options;
80
+ if (!Array.isArray(columnValue) || columnValue.length === 0 || !Array.isArray(_options) || _options.length === 0) {
81
+ return null;
82
+ }
83
+ var optionNames = columnValue.map(function (optionId) {
84
+ return option.getOptionName(_options, optionId);
85
+ }).filter(Boolean);
86
+ if (optionNames.length === 0) {
87
+ return null;
88
+ }
89
+ return optionNames;
90
+ }
91
+ case cellType.CellType.COLLABORATOR:
92
+ {
93
+ if (!Array.isArray(columnValue) || columnValue.length === 0) {
94
+ return null;
95
+ }
96
+ return columnValue.map(function (item) {
97
+ return item;
98
+ });
99
+ }
100
+ case cellType.CellType.FILE:
101
+ {
102
+ return Array.isArray(columnValue) ? columnValue : [];
103
+ }
104
+ default:
105
+ {
106
+ return columnValue || null;
107
+ }
108
+ }
109
+ };
110
+ var generatorUpdateSql = function generatorUpdateSql(table, columns, updated, rowId) {
111
+ var columnKey = Object.keys(updated)[0];
112
+ var column = columns.find(function (item) {
113
+ return item.key === columnKey;
114
+ });
115
+ var columnName = column.name;
116
+ var sql = "update `".concat(table.name, "` set `").concat(columnName, "` = ? where `_id` = ?;");
117
+ var updateValue = getConvertedUpdatedValue(column, updated);
118
+ var parameters = [updateValue, rowId];
119
+ return {
120
+ sql: sql,
121
+ parameters: parameters
122
+ };
123
+ };
124
+
125
+ exports.generatorUpdateSql = generatorUpdateSql;
126
+ exports.getConvertedUpdatedValue = getConvertedUpdatedValue;
@@ -12,6 +12,7 @@ var index = require('../../constants/filter/index.js');
12
12
  var cellType = require('../../constants/cell-type.js');
13
13
  var column = require('../../constants/column.js');
14
14
  var formula = require('../../constants/formula.js');
15
+ var patchUtils = require('../../helper/patch-utils.js');
15
16
  var filterPredicate = require('../../constants/filter/filter-predicate.js');
16
17
  var filterModifier = require('../../constants/filter/filter-modifier.js');
17
18
 
@@ -318,6 +319,7 @@ var getSpecificDepartmentIds = function getSpecificDepartmentIds(filter_term, cu
318
319
 
319
320
  // DEPARTMENT-SINGLE-SELECT
320
321
  var departmentSingleSelectSqlCondition = function departmentSingleSelectSqlCondition(column$1, filterItem, userDepartmentIdsMap) {
322
+ var patchedUserDepartmentIdsMap = patchUtils["default"].getUserDepartmentIdsMap(userDepartmentIdsMap);
321
323
  var filter_predicate = filterItem.filter_predicate,
322
324
  filter_term = filterItem.filter_term;
323
325
  var name = column$1.name;
@@ -332,8 +334,8 @@ var departmentSingleSelectSqlCondition = function departmentSingleSelectSqlCondi
332
334
  if (!filter_term || filter_term === 0) {
333
335
  return '';
334
336
  }
335
- var currentUserDepartmentIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_ids;
336
- var currentUserDepartmentAndSubIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_and_sub_ids;
337
+ var currentUserDepartmentIds = patchedUserDepartmentIdsMap && patchedUserDepartmentIdsMap.current_user_department_ids;
338
+ var currentUserDepartmentAndSubIds = patchedUserDepartmentIdsMap && patchedUserDepartmentIdsMap.current_user_department_and_sub_ids;
337
339
  var isValidCurrentUserDepartmentIds = Array.isArray(currentUserDepartmentIds);
338
340
  var isValidCurrentUserDepartmentAndSubIds = Array.isArray(currentUserDepartmentAndSubIds);
339
341
  if (filter_predicate === filterPredicate.FILTER_PREDICATE_TYPE.IS) {
@@ -605,9 +607,12 @@ var formulaSqlCondition = function formulaSqlCondition(column, filterItem) {
605
607
  return '';
606
608
  };
607
609
  var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterItem, username, userId, userDepartmentIdsMap) {
610
+ var patchedUsername = patchUtils["default"].getUsername(username);
611
+ var patchedUserId = patchUtils["default"].getUserId(userId);
612
+ var patchedUserDepartmentIdsMap = patchUtils["default"].getUserDepartmentIdsMap(userDepartmentIdsMap);
608
613
  var type = column.type;
609
614
  if (type === cellType.CellType.TEXT || type === cellType.CellType.AUTO_NUMBER || type === cellType.CellType.EMAIL || type === cellType.CellType.GEOLOCATION || type === cellType.CellType.URL) {
610
- return textSqlCondition(column, filterItem, userId);
615
+ return textSqlCondition(column, filterItem, patchedUserId);
611
616
  }
612
617
  if (type === cellType.CellType.DURATION || type === cellType.CellType.NUMBER || type === cellType.CellType.RATE) {
613
618
  return numberSqlCondition(column, filterItem);
@@ -625,16 +630,16 @@ var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterIte
625
630
  return singleSelectSqlCondition(column, filterItem);
626
631
  }
627
632
  if (type === cellType.CellType.DEPARTMENT_SINGLE_SELECT) {
628
- return departmentSingleSelectSqlCondition(column, filterItem, userDepartmentIdsMap);
633
+ return departmentSingleSelectSqlCondition(column, filterItem, patchedUserDepartmentIdsMap);
629
634
  }
630
635
  if (type === cellType.CellType.MULTIPLE_SELECT) {
631
636
  return multipleSelectSqlCondition(column, filterItem);
632
637
  }
633
638
  if (type === cellType.CellType.LAST_MODIFIER || type === cellType.CellType.CREATOR) {
634
- return creatorSqlCondition(column, filterItem, username);
639
+ return creatorSqlCondition(column, filterItem, patchedUsername);
635
640
  }
636
641
  if (type === cellType.CellType.COLLABORATOR) {
637
- return collaboratorSqlCondition(column, filterItem, username);
642
+ return collaboratorSqlCondition(column, filterItem, patchedUsername);
638
643
  }
639
644
  if (type === cellType.CellType.IMAGE || type === cellType.CellType.FILE || type === cellType.CellType.DIGITAL_SIGN) {
640
645
  return fileSqlCondition(column, filterItem);
@@ -651,6 +656,9 @@ var getSqlConditionByFilter = function getSqlConditionByFilter(column, filterIte
651
656
  return '';
652
657
  };
653
658
  var filter2SqlCondition = function filter2SqlCondition(table, view, username, userId, userDepartmentIdsMap) {
659
+ var patchedUsername = patchUtils["default"].getUsername(username);
660
+ var patchedUserId = patchUtils["default"].getUserId(userId);
661
+ var patchedUserDepartmentIdsMap = patchUtils["default"].getUserDepartmentIdsMap(userDepartmentIdsMap);
654
662
  var columns = table.columns;
655
663
  var filter_conjunction = view.filter_conjunction,
656
664
  filters = view.filters;
@@ -671,7 +679,7 @@ var filter2SqlCondition = function filter2SqlCondition(table, view, username, us
671
679
  }
672
680
  var column_key = filterItem.column_key;
673
681
  var column = column$1.getTableColumnByKey(table, column_key);
674
- return getSqlConditionByFilter(column, filterItem, username, userId, userDepartmentIdsMap);
682
+ return getSqlConditionByFilter(column, filterItem, patchedUsername, patchedUserId, patchedUserDepartmentIdsMap);
675
683
  });
676
684
 
677
685
  // 2. filtered '' sql clause
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var getFormattedAutoNumber = function getFormattedAutoNumber(autoNumber, digits, prefix) {
6
+ // eslint-disable-next-line prefer-template
7
+ var formattedAutoNumber = autoNumber + '';
8
+ if (!digits) {
9
+ return formattedAutoNumber;
10
+ }
11
+ var prefixZeroLength = digits - formattedAutoNumber.length;
12
+ if (digits > 1 && prefixZeroLength > 0) {
13
+ formattedAutoNumber = Array(prefixZeroLength + 1).join(0) + formattedAutoNumber;
14
+ }
15
+ if (prefix) {
16
+ return "".concat(prefix, "-").concat(formattedAutoNumber);
17
+ }
18
+ return formattedAutoNumber;
19
+ };
20
+
21
+ exports.getFormattedAutoNumber = getFormattedAutoNumber;
@@ -46,7 +46,21 @@ var getCollaboratorsName = function getCollaboratorsName(collaborators, emails)
46
46
  if (!Array.isArray(collaboratorsNames) || collaboratorsNames.length === 0) return '';
47
47
  return collaboratorsNames.join(', ');
48
48
  };
49
+ var getCollaboratorEmailsByNames = function getCollaboratorEmailsByNames(names, collaborators) {
50
+ if (!Array.isArray(names) || !Array.isArray(collaborators)) return [];
51
+ var emails = [];
52
+ names.forEach(function (name) {
53
+ var collaborator = collaborators.find(function (collaboratorItem) {
54
+ return collaboratorItem.name === name;
55
+ });
56
+ if (collaborator) {
57
+ emails.push(collaborator.email);
58
+ }
59
+ });
60
+ return emails;
61
+ };
49
62
 
50
63
  exports.getCollaborator = getCollaborator;
64
+ exports.getCollaboratorEmailsByNames = getCollaboratorEmailsByNames;
51
65
  exports.getCollaboratorsName = getCollaboratorsName;
52
66
  exports.getCollaboratorsNames = getCollaboratorsNames;
@@ -0,0 +1,94 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var dayjs = require('dayjs');
6
+ var number = require('../number.js');
7
+ require('../constants/column.js');
8
+ require('../constants/formula.js');
9
+ require('../constants/group.js');
10
+ require('../cell-value-get/cell-value.js');
11
+ var autoNumber$1 = require('../cell-value-get/auto-number.js');
12
+ var date = require('../date.js');
13
+ require('../constants/filter/filter-column-options.js');
14
+ require('../constants/filter/filter-modifier.js');
15
+ require('../constants/filter/filter-predicate.js');
16
+ require('../constants/filter/filter-is-within.js');
17
+ require('../constants/sort.js');
18
+ var autoNumber = require('../constants/auto-number.js');
19
+
20
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
+
22
+ var dayjs__default = /*#__PURE__*/_interopDefaultLegacy(dayjs);
23
+
24
+ var formatRateMaxNumberToNumber = function formatRateMaxNumberToNumber(oldCellValue, data) {
25
+ if (oldCellValue === 0) return 0;
26
+ if (!oldCellValue) return '';
27
+ var _ref = data || {},
28
+ rate_max_number = _ref.rate_max_number;
29
+ return oldCellValue > rate_max_number ? rate_max_number : oldCellValue;
30
+ };
31
+ var formatTextToAutoNumber = function formatTextToAutoNumber(text, autoNumberData) {
32
+ if (!text || !autoNumberData) return null;
33
+ var textPrefix = null;
34
+ var number$1 = number.isNumber(text) ? text : 0;
35
+ if (typeof text === 'string') {
36
+ number$1 = Number(text);
37
+ if (!number.isNumber(number$1)) {
38
+ var textParts = text.split('-');
39
+ var textPartsLength = textParts.length;
40
+ var textNumber = null;
41
+ if (textPartsLength === 1) {
42
+ textNumber = textParts[0];
43
+ } else {
44
+ textPrefix = textParts[0];
45
+ textNumber = textParts[1];
46
+ }
47
+ number$1 = textNumber && Number(textNumber);
48
+ if (!number.isNumber(number$1)) {
49
+ return null;
50
+ }
51
+ }
52
+ }
53
+ if (number$1 < 1) {
54
+ return null;
55
+ }
56
+ var prefix_type = autoNumberData.prefix_type,
57
+ prefix = autoNumberData.prefix,
58
+ digits = autoNumberData.digits;
59
+ number$1 = parseInt(number$1);
60
+
61
+ // 1. use the prefix supplied by autoNumberData if the text can only contains number.
62
+ // 2. only number will be kept if has no prefix_type in the autoNumberData.
63
+ if (!textPrefix || !prefix_type) {
64
+ var newPrefix = prefix_type === 'date' ? dayjs__default["default"]().format(autoNumber.AUTO_NUMBER_DATE_FORMAT) : prefix;
65
+ return autoNumber$1.getFormattedAutoNumber(number$1, digits, newPrefix);
66
+ }
67
+
68
+ // 3. string prefix: the 'textPrefix' must be same to autoNumberData's prefix.
69
+ if (prefix_type === 'string') {
70
+ if (textPrefix !== prefix) {
71
+ return null;
72
+ }
73
+ return autoNumber$1.getFormattedAutoNumber(number$1, digits, prefix);
74
+ }
75
+
76
+ // 4. date prefix: the format of 'textPrefix' must be consistent with 'YYYYMMDD'.
77
+ if (prefix_type === 'date') {
78
+ var matched = textPrefix && textPrefix.length === 8 && /(\d{4})(\d{2})(\d{2})$/.test(textPrefix);
79
+ if (!matched) {
80
+ return null;
81
+ }
82
+ var year = textPrefix.substring(0, 4);
83
+ var month = textPrefix.substring(4, 6);
84
+ var day = textPrefix.substring(6, 8);
85
+ if (!date.DateUtils.getValidDate("".concat(year, "-").concat(month, "-").concat(day))) {
86
+ return null;
87
+ }
88
+ return autoNumber$1.getFormattedAutoNumber(number$1, digits, textPrefix);
89
+ }
90
+ return null;
91
+ };
92
+
93
+ exports.formatRateMaxNumberToNumber = formatRateMaxNumberToNumber;
94
+ exports.formatTextToAutoNumber = formatTextToAutoNumber;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var formatTextToCheckbox = function formatTextToCheckbox(value) {
6
+ return value === 'true' || value === true;
7
+ };
8
+
9
+ exports.formatTextToCheckbox = formatTextToCheckbox;
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var column = require('../constants/column.js');
6
+ require('../constants/filter/filter-column-options.js');
7
+ require('../constants/filter/filter-modifier.js');
8
+ require('../constants/filter/filter-predicate.js');
9
+ require('../constants/filter/filter-is-within.js');
10
+ require('../constants/formula.js');
11
+ require('../constants/sort.js');
12
+ require('../constants/group.js');
13
+ var number = require('../number.js');
14
+
15
+ var formatTextToDuration = function formatTextToDuration(value, data) {
16
+ var _ref = data || {},
17
+ duration_format = _ref.duration_format;
18
+ duration_format = duration_format || column.DURATION_FORMATS_MAP.H_MM;
19
+ if (column.DURATION_FORMATS.findIndex(function (format) {
20
+ return format.type === duration_format;
21
+ }) < 0) {
22
+ return null;
23
+ }
24
+ if (value === 0) return 0;
25
+ if (!value) return null;
26
+
27
+ // value is number or string number
28
+ var numericDuration = value - 0;
29
+ if (number.isNumber(numericDuration)) return numericDuration;
30
+
31
+ // value is string
32
+ var stringifyDuration = value + '';
33
+ var isNegative = stringifyDuration[0] === '-';
34
+ if (isNegative) {
35
+ stringifyDuration = stringifyDuration.substring(1);
36
+ }
37
+ var timeParts = stringifyDuration.split(/[::]/); // support ':' and ':'.
38
+ var timePartsLen = timeParts.length;
39
+ if (timePartsLen === 0) return '';
40
+ var hoursIndex, minutesIndex, secondsIndex;
41
+ if (duration_format === column.DURATION_FORMATS_MAP.H_MM) {
42
+ hoursIndex = timePartsLen - 2;
43
+ minutesIndex = timePartsLen - 1;
44
+ } else {
45
+ hoursIndex = timePartsLen - 3;
46
+ minutesIndex = timePartsLen - 2;
47
+ secondsIndex = timePartsLen - 1;
48
+ }
49
+ var hours = timeParts[hoursIndex] - 0;
50
+ var minutes = timeParts[minutesIndex] - 0;
51
+ var seconds = timeParts[secondsIndex] - 0;
52
+ if (!number.isNumber(hours) && !number.isNumber(minutes) && !number.isNumber(seconds)) return null;
53
+ hours = number.isNumber(hours) ? hours : 0;
54
+ minutes = number.isNumber(minutes) ? minutes : 0;
55
+ seconds = number.isNumber(seconds) ? seconds : 0;
56
+ var result = hours * 3600 + minutes * 60 + seconds;
57
+ return isNegative ? -result : result;
58
+ };
59
+
60
+ exports.formatTextToDuration = formatTextToDuration;