dtable-utils 0.0.3 → 4.2.0

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 (152) hide show
  1. package/README.md +56 -5
  2. package/dist/index.js +1 -1
  3. package/es/cell-value-get/cell-value.js +250 -20
  4. package/es/cell-value-get/collaborator.js +16 -3
  5. package/es/cell-value-get/digital-sign.js +1 -1
  6. package/es/cell-value-get/duration.js +3 -3
  7. package/es/cell-value-get/geolocation.js +52 -30
  8. package/es/cell-value-get/long-text.js +1 -1
  9. package/es/cell-value-get/number.js +51 -19
  10. package/es/cell-value-get/option.js +33 -9
  11. package/es/cell-value-get/rate.js +11 -0
  12. package/es/cell-value-set/date.js +26 -0
  13. package/es/cell-value-set/number.js +53 -1
  14. package/es/color/column-color.js +437 -0
  15. package/es/color/gradient-color.js +100 -0
  16. package/es/color/row-color.js +289 -0
  17. package/es/column/{common.js → core.js} +2 -14
  18. package/es/column/date.js +1 -1
  19. package/es/column/number.js +1 -1
  20. package/es/column/option.js +143 -0
  21. package/es/common.js +23 -3
  22. package/es/constants/color.js +16 -0
  23. package/es/constants/column-permission.js +7 -0
  24. package/es/constants/column.js +127 -2
  25. package/es/constants/filter/index.js +5 -1
  26. package/es/constants/formula.js +2 -1
  27. package/es/constants/grid-header.js +6 -0
  28. package/es/constants/group.js +23 -0
  29. package/es/constants/limit.js +3 -0
  30. package/es/constants/reg.js +4 -0
  31. package/es/constants/row-color.js +11 -0
  32. package/es/constants/sort.js +11 -0
  33. package/es/date.js +1 -1
  34. package/es/filter/core.js +322 -0
  35. package/es/filter/filter-column/array.js +87 -0
  36. package/es/filter/filter-column/checkbox.js +14 -0
  37. package/es/filter/filter-column/collaborator.js +72 -0
  38. package/es/filter/filter-column/creator.js +59 -0
  39. package/es/filter/filter-column/date.js +102 -0
  40. package/es/filter/filter-column/digital-sign.js +29 -0
  41. package/es/filter/filter-column/file.js +27 -0
  42. package/es/filter/filter-column/formula.js +57 -0
  43. package/es/filter/filter-column/geolocation.js +58 -0
  44. package/es/filter/filter-column/link.js +20 -0
  45. package/es/filter/filter-column/long-text.js +28 -0
  46. package/es/filter/filter-column/multiple-select.js +64 -0
  47. package/es/filter/filter-column/number.js +97 -0
  48. package/es/filter/filter-column/single-select.js +45 -0
  49. package/es/filter/filter-column/text.js +60 -0
  50. package/es/filter/filter-row.js +233 -0
  51. package/es/group/core.js +116 -0
  52. package/es/group/group-row.js +402 -0
  53. package/es/index.js +63 -11
  54. package/es/link/core.js +78 -0
  55. package/es/number.js +21 -0
  56. package/es/row/core.js +180 -0
  57. package/es/sort/core.js +91 -0
  58. package/es/sort/sort-column/array.js +72 -0
  59. package/es/sort/sort-column/checkbox.js +22 -0
  60. package/es/sort/sort-column/collaborator.js +16 -0
  61. package/es/sort/sort-column/date.js +25 -0
  62. package/es/sort/sort-column/formula.js +49 -0
  63. package/es/sort/sort-column/link.js +32 -0
  64. package/es/sort/sort-column/multiple-select.js +45 -0
  65. package/es/sort/sort-column/number.js +31 -0
  66. package/es/sort/sort-column/single-select.js +36 -0
  67. package/es/sort/sort-column/text.js +69 -0
  68. package/es/sort/sort-row.js +110 -0
  69. package/es/table/column.js +27 -0
  70. package/es/table/core.js +14 -0
  71. package/es/table/row.js +25 -0
  72. package/es/validate/filter.js +1 -1
  73. package/es/validate/geolocation.js +5 -0
  74. package/es/view/core.js +134 -0
  75. package/es/view/formula.js +147 -0
  76. package/es/view/group.js +32 -0
  77. package/es/view/summaries.js +167 -0
  78. package/lib/cell-value-get/cell-value.js +254 -19
  79. package/lib/cell-value-get/collaborator.js +16 -2
  80. package/lib/cell-value-get/digital-sign.js +1 -1
  81. package/lib/cell-value-get/duration.js +3 -2
  82. package/lib/cell-value-get/geolocation.js +53 -30
  83. package/lib/cell-value-get/long-text.js +1 -1
  84. package/lib/cell-value-get/number.js +51 -18
  85. package/lib/cell-value-get/option.js +34 -8
  86. package/lib/cell-value-get/rate.js +15 -0
  87. package/lib/cell-value-set/date.js +30 -0
  88. package/lib/cell-value-set/number.js +53 -0
  89. package/lib/color/column-color.js +446 -0
  90. package/lib/color/gradient-color.js +110 -0
  91. package/lib/color/row-color.js +297 -0
  92. package/lib/column/{common.js → core.js} +1 -14
  93. package/lib/column/date.js +2 -2
  94. package/lib/column/number.js +3 -3
  95. package/lib/column/option.js +151 -0
  96. package/lib/common.js +27 -3
  97. package/lib/constants/color.js +20 -0
  98. package/lib/constants/column-permission.js +11 -0
  99. package/lib/constants/column.js +134 -1
  100. package/lib/constants/filter/index.js +5 -0
  101. package/lib/constants/formula.js +2 -0
  102. package/lib/constants/grid-header.js +10 -0
  103. package/lib/constants/group.js +36 -0
  104. package/lib/constants/limit.js +7 -0
  105. package/lib/constants/reg.js +9 -0
  106. package/lib/constants/row-color.js +17 -0
  107. package/lib/constants/sort.js +18 -0
  108. package/lib/filter/core.js +336 -0
  109. package/lib/filter/filter-column/array.js +91 -0
  110. package/lib/filter/filter-column/checkbox.js +18 -0
  111. package/lib/filter/filter-column/collaborator.js +80 -0
  112. package/lib/filter/filter-column/creator.js +63 -0
  113. package/lib/filter/filter-column/date.js +106 -0
  114. package/lib/filter/filter-column/digital-sign.js +33 -0
  115. package/lib/filter/filter-column/file.js +31 -0
  116. package/lib/filter/filter-column/formula.js +61 -0
  117. package/lib/filter/filter-column/geolocation.js +62 -0
  118. package/lib/filter/filter-column/link.js +24 -0
  119. package/lib/filter/filter-column/long-text.js +32 -0
  120. package/lib/filter/filter-column/multiple-select.js +72 -0
  121. package/lib/filter/filter-column/number.js +101 -0
  122. package/lib/filter/filter-column/single-select.js +49 -0
  123. package/lib/filter/filter-column/text.js +64 -0
  124. package/lib/filter/filter-row.js +239 -0
  125. package/lib/group/core.js +126 -0
  126. package/lib/group/group-row.js +413 -0
  127. package/lib/index.js +177 -7
  128. package/lib/link/core.js +90 -0
  129. package/lib/number.js +26 -0
  130. package/lib/row/core.js +189 -0
  131. package/lib/sort/core.js +102 -0
  132. package/lib/sort/sort-column/array.js +76 -0
  133. package/lib/sort/sort-column/checkbox.js +26 -0
  134. package/lib/sort/sort-column/collaborator.js +20 -0
  135. package/lib/sort/sort-column/date.js +29 -0
  136. package/lib/sort/sort-column/formula.js +53 -0
  137. package/lib/sort/sort-column/link.js +36 -0
  138. package/lib/sort/sort-column/multiple-select.js +49 -0
  139. package/lib/sort/sort-column/number.js +35 -0
  140. package/lib/sort/sort-column/single-select.js +40 -0
  141. package/lib/sort/sort-column/text.js +74 -0
  142. package/lib/sort/sort-row.js +115 -0
  143. package/lib/table/column.js +32 -0
  144. package/lib/table/core.js +18 -0
  145. package/lib/table/row.js +30 -0
  146. package/lib/validate/filter.js +3 -3
  147. package/lib/validate/geolocation.js +9 -0
  148. package/lib/view/core.js +143 -0
  149. package/lib/view/formula.js +154 -0
  150. package/lib/view/group.js +36 -0
  151. package/lib/view/summaries.js +173 -0
  152. package/package.json +5 -3
@@ -1,14 +1,124 @@
1
1
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { CellType } from './cell-type.js';
3
3
 
4
- var _COLUMNS_ICON_CONFIG, _DURATION_DECIMAL_DIG, _DURATION_ZERO_DISPLA;
4
+ var _COLUMNS_ICON_CONFIG, _DURATION_DECIMAL_DIG, _DURATION_ZERO_DISPLA, _NOT_SUPPORT_EDIT_COL, _MULTIPLE_CELL_VALUE_, _SINGLE_CELL_VALUE_CO;
5
5
  var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty(_COLUMNS_ICON_CONFIG, CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.NUMBER, 'dtable-font dtable-icon-number'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.IMAGE, 'dtable-font dtable-icon-picture'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.LINK, 'dtable-font dtable-icon-link-other-record'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.FORMULA, 'dtable-font dtable-icon-formula'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.CREATOR, 'dtable-font dtable-icon-creator'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.CTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.MTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.URL, 'dtable-font dtable-icon-url'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.EMAIL, 'dtable-font dtable-icon-email'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.DURATION, 'dtable-font dtable-icon-duration'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.BUTTON, 'dtable-font dtable-icon-button'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.RATE, 'dtable-font dtable-icon-rate'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), _COLUMNS_ICON_CONFIG);
6
+ var COLUMN_OPTIONS = [{
7
+ iconName: 'Basic',
8
+ iconClass: '',
9
+ isDisabled: true
10
+ }, {
11
+ iconName: 'Text',
12
+ iconClass: COLUMNS_ICON_CONFIG[CellType.TEXT],
13
+ type: CellType.TEXT
14
+ }, {
15
+ iconName: 'Long_Text',
16
+ iconClass: COLUMNS_ICON_CONFIG[CellType.LONG_TEXT],
17
+ type: CellType.LONG_TEXT
18
+ }, {
19
+ iconName: 'Number',
20
+ iconClass: COLUMNS_ICON_CONFIG[CellType.NUMBER],
21
+ type: CellType.NUMBER
22
+ }, {
23
+ iconName: 'Collaborator',
24
+ iconClass: COLUMNS_ICON_CONFIG[CellType.COLLABORATOR],
25
+ type: CellType.COLLABORATOR
26
+ }, {
27
+ iconName: 'Date',
28
+ iconClass: COLUMNS_ICON_CONFIG[CellType.DATE],
29
+ type: CellType.DATE
30
+ }, {
31
+ iconName: 'Duration',
32
+ iconClass: COLUMNS_ICON_CONFIG[CellType.DURATION],
33
+ type: CellType.DURATION
34
+ }, {
35
+ iconName: 'Single_Select',
36
+ iconClass: COLUMNS_ICON_CONFIG[CellType.SINGLE_SELECT],
37
+ type: CellType.SINGLE_SELECT
38
+ }, {
39
+ iconName: 'Multiple_Select',
40
+ iconClass: COLUMNS_ICON_CONFIG[CellType.MULTIPLE_SELECT],
41
+ type: CellType.MULTIPLE_SELECT
42
+ }, {
43
+ iconName: 'Image',
44
+ iconClass: COLUMNS_ICON_CONFIG[CellType.IMAGE],
45
+ type: CellType.IMAGE
46
+ }, {
47
+ iconName: 'File',
48
+ iconClass: COLUMNS_ICON_CONFIG[CellType.FILE],
49
+ type: CellType.FILE
50
+ }, {
51
+ iconName: 'Email',
52
+ iconClass: COLUMNS_ICON_CONFIG[CellType.EMAIL],
53
+ type: CellType.EMAIL
54
+ }, {
55
+ iconName: 'URL',
56
+ iconClass: COLUMNS_ICON_CONFIG[CellType.URL],
57
+ type: CellType.URL
58
+ }, {
59
+ iconName: 'Checkbox',
60
+ iconClass: COLUMNS_ICON_CONFIG[CellType.CHECKBOX],
61
+ type: CellType.CHECKBOX
62
+ }, {
63
+ iconName: 'Rating',
64
+ iconClass: COLUMNS_ICON_CONFIG[CellType.RATE],
65
+ type: CellType.RATE
66
+ }, {
67
+ iconName: 'Advanced',
68
+ iconClass: '',
69
+ isDisabled: true
70
+ }, {
71
+ iconName: 'Formula',
72
+ iconClass: COLUMNS_ICON_CONFIG[CellType.FORMULA],
73
+ type: CellType.FORMULA
74
+ }, {
75
+ iconName: 'Link_formula',
76
+ iconClass: COLUMNS_ICON_CONFIG[CellType.LINK_FORMULA],
77
+ type: CellType.LINK_FORMULA
78
+ }, {
79
+ iconName: 'Geolocation',
80
+ iconClass: COLUMNS_ICON_CONFIG[CellType.GEOLOCATION],
81
+ type: CellType.GEOLOCATION
82
+ }, {
83
+ iconName: 'Link_to_other_records',
84
+ iconClass: COLUMNS_ICON_CONFIG[CellType.LINK],
85
+ type: CellType.LINK
86
+ }, {
87
+ iconName: 'Creator',
88
+ iconClass: COLUMNS_ICON_CONFIG[CellType.CREATOR],
89
+ type: CellType.CREATOR
90
+ }, {
91
+ iconName: 'CTime',
92
+ iconClass: COLUMNS_ICON_CONFIG[CellType.CTIME],
93
+ type: CellType.CTIME
94
+ }, {
95
+ iconName: 'Last_Modifier',
96
+ iconClass: COLUMNS_ICON_CONFIG[CellType.LAST_MODIFIER],
97
+ type: CellType.LAST_MODIFIER
98
+ }, {
99
+ iconName: 'Last_Modified_Time',
100
+ iconClass: COLUMNS_ICON_CONFIG[CellType.MTIME],
101
+ type: CellType.MTIME
102
+ }, {
103
+ iconName: 'Auto_number',
104
+ iconClass: COLUMNS_ICON_CONFIG[CellType.AUTO_NUMBER],
105
+ type: CellType.AUTO_NUMBER
106
+ }, {
107
+ iconName: 'Button',
108
+ iconClass: COLUMNS_ICON_CONFIG[CellType.BUTTON],
109
+ type: CellType.BUTTON
110
+ }, {
111
+ iconName: 'Digital_signature',
112
+ iconClass: COLUMNS_ICON_CONFIG[CellType.DIGITAL_SIGN],
113
+ type: CellType.DIGITAL_SIGN
114
+ }];
6
115
  var DATE_COLUMN_OPTIONS = [CellType.DATE, CellType.CTIME, CellType.MTIME];
7
116
  var NUMERIC_COLUMNS_TYPES = [CellType.NUMBER, CellType.DURATION, CellType.RATE];
8
117
  var COLLABORATOR_COLUMN_TYPES = [CellType.COLLABORATOR, CellType.CREATOR, CellType.LAST_MODIFIER];
9
118
 
10
119
  // date
11
120
  var DEFAULT_DATE_FORMAT = 'YYYY-MM-DD';
121
+ var UTC_FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ss.SSSZ';
12
122
  var DATE_UNIT = {
13
123
  YEAR: 'year',
14
124
  MONTH: 'month',
@@ -20,6 +130,11 @@ var DATE_UNIT = {
20
130
  MINUTES: 'minutes',
21
131
  SECOND: 'second'
22
132
  };
133
+ var DATE_FORMAT_MAP = {
134
+ YYYY_MM_DD: 'YYYY-MM-DD',
135
+ YYYY_MM_DD_HH_MM: 'YYYY-MM-DD HH:mm',
136
+ YYYY_MM_DD_HH_MM_SS: 'YYYY-MM-DD HH:mm:ss'
137
+ };
23
138
 
24
139
  // duration
25
140
  var DURATION_FORMATS_MAP = {
@@ -41,5 +156,15 @@ var DURATION_ZERO_DISPLAY = (_DURATION_ZERO_DISPLA = {}, _defineProperty(_DURATI
41
156
 
42
157
  // number
43
158
  var DEFAULT_NUMBER_FORMAT = 'number';
159
+ var DATE_DEFAULT_TYPES = {
160
+ SPECIFIC_DATE: 'specific_date',
161
+ CURRENT_DATE: 'current_date',
162
+ DAYS_BEFORE: 'days_before',
163
+ DAYS_AFTER: 'days_after'
164
+ };
165
+ var FILL_DEFAULT_VALUE_COLUMNS_TYPE = [CellType.TEXT, CellType.NUMBER, CellType.SINGLE_SELECT, CellType.RATE, CellType.CHECKBOX, CellType.LONG_TEXT, CellType.DATE, CellType.COLLABORATOR];
166
+ var NOT_SUPPORT_EDIT_COLUMN_TYPE_MAP = (_NOT_SUPPORT_EDIT_COL = {}, _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.CTIME, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.MTIME, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.CREATOR, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.LAST_MODIFIER, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.FORMULA, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.AUTO_NUMBER, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.BUTTON, true), _defineProperty(_NOT_SUPPORT_EDIT_COL, CellType.LINK_FORMULA, true), _NOT_SUPPORT_EDIT_COL);
167
+ var MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP = (_MULTIPLE_CELL_VALUE_ = {}, _defineProperty(_MULTIPLE_CELL_VALUE_, CellType.MULTIPLE_SELECT, true), _defineProperty(_MULTIPLE_CELL_VALUE_, CellType.COLLABORATOR, true), _defineProperty(_MULTIPLE_CELL_VALUE_, CellType.LINK, true), _MULTIPLE_CELL_VALUE_);
168
+ var SINGLE_CELL_VALUE_COLUMN_TYPE_MAP = (_SINGLE_CELL_VALUE_CO = {}, _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.TEXT, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.DATE, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.CTIME, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.MTIME, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.NUMBER, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.CHECKBOX, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.SINGLE_SELECT, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.CREATOR, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.GEOLOCATION, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.FORMULA, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.LINK_FORMULA, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.URL, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.EMAIL, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.DURATION, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.RATE, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.LAST_MODIFIER, true), _defineProperty(_SINGLE_CELL_VALUE_CO, CellType.DIGITAL_SIGN, true), _SINGLE_CELL_VALUE_CO);
44
169
 
45
- export { COLLABORATOR_COLUMN_TYPES, COLUMNS_ICON_CONFIG, DATE_COLUMN_OPTIONS, DATE_UNIT, DEFAULT_DATE_FORMAT, DEFAULT_NUMBER_FORMAT, DURATION_DECIMAL_DIGITS, DURATION_FORMATS, DURATION_FORMATS_MAP, DURATION_ZERO_DISPLAY, NUMERIC_COLUMNS_TYPES };
170
+ export { COLLABORATOR_COLUMN_TYPES, COLUMNS_ICON_CONFIG, COLUMN_OPTIONS, DATE_COLUMN_OPTIONS, DATE_DEFAULT_TYPES, DATE_FORMAT_MAP, DATE_UNIT, DEFAULT_DATE_FORMAT, DEFAULT_NUMBER_FORMAT, DURATION_DECIMAL_DIGITS, DURATION_FORMATS, DURATION_FORMATS_MAP, DURATION_ZERO_DISPLAY, FILL_DEFAULT_VALUE_COLUMNS_TYPE, MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP, NOT_SUPPORT_EDIT_COLUMN_TYPE_MAP, NUMERIC_COLUMNS_TYPES, SINGLE_CELL_VALUE_COLUMN_TYPE_MAP, UTC_FORMAT_DEFAULT };
@@ -3,6 +3,10 @@ export { FILTER_TERM_MODIFIER_SHOW, FILTER_TERM_MODIFIER_TYPE } from './filter-m
3
3
  export { FILTER_PREDICATE_SHOW, FILTER_PREDICATE_TYPE } from './filter-predicate.js';
4
4
  export { filterTermModifierIsWithin, filterTermModifierNotWithin } from './filter-is-within.js';
5
5
 
6
+ var FILTER_CONJUNCTION_TYPE = {
7
+ AND: 'And',
8
+ OR: 'Or'
9
+ };
6
10
  var FILTER_ERR_MSG = {
7
11
  INVALID_FILTER: 'invalid filter',
8
12
  INCOMPLETE_FILTER: 'incomplete filter',
@@ -13,4 +17,4 @@ var FILTER_ERR_MSG = {
13
17
  INVALID_TERM: 'invalid filter term'
14
18
  };
15
19
 
16
- export { FILTER_ERR_MSG };
20
+ export { FILTER_CONJUNCTION_TYPE, FILTER_ERR_MSG };
@@ -10,5 +10,6 @@ var FORMULA_RESULT_TYPE = {
10
10
  ARRAY: 'array'
11
11
  };
12
12
  var FORMULA_COLUMN_TYPES_MAP = (_FORMULA_COLUMN_TYPES = {}, _defineProperty(_FORMULA_COLUMN_TYPES, CellType.FORMULA, true), _defineProperty(_FORMULA_COLUMN_TYPES, CellType.LINK_FORMULA, true), _FORMULA_COLUMN_TYPES);
13
+ var DISPLAY_INTERNAL_ERRORS = ['#ERROR!', '#DIV/0!', '#NAME?', '#N/A', '#NULL!', '#NUM!', '#REF!', '#VALUE!', '#GETTING_DATA'];
13
14
 
14
- export { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE };
15
+ export { DISPLAY_INTERNAL_ERRORS, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE };
@@ -0,0 +1,6 @@
1
+ var HEADER_HEIGHT_TYPE = {
2
+ DEFAULT: 'default',
3
+ DOUBLE: 'double'
4
+ };
5
+
6
+ export { HEADER_HEIGHT_TYPE };
@@ -0,0 +1,23 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { CellType } from './cell-type.js';
3
+
4
+ var _DISPLAY_GROUP_DATE_G, _DISPLAY_GROUP_GEOLOC;
5
+ var MAX_GROUP_LEVEL = 3;
6
+ var GROUP_DATE_GRANULARITY = {
7
+ DAY: 'day',
8
+ WEEK: 'week',
9
+ MONTH: 'month',
10
+ QUARTAR: 'quartar',
11
+ YEAR: 'year'
12
+ };
13
+ var DISPLAY_GROUP_DATE_GRANULARITY = (_DISPLAY_GROUP_DATE_G = {}, _defineProperty(_DISPLAY_GROUP_DATE_G, GROUP_DATE_GRANULARITY.DAY, 'By_day'), _defineProperty(_DISPLAY_GROUP_DATE_G, GROUP_DATE_GRANULARITY.WEEK, 'By_week'), _defineProperty(_DISPLAY_GROUP_DATE_G, GROUP_DATE_GRANULARITY.MONTH, 'By_month'), _defineProperty(_DISPLAY_GROUP_DATE_G, GROUP_DATE_GRANULARITY.QUARTAR, 'By_quarter'), _defineProperty(_DISPLAY_GROUP_DATE_G, GROUP_DATE_GRANULARITY.YEAR, 'By_year'), _DISPLAY_GROUP_DATE_G);
14
+ var GROUP_GEOLOCATION_GRANULARITY = {
15
+ PROVINCE: 'province',
16
+ CITY: 'city',
17
+ DISTRICT: 'district',
18
+ COUNTRY: 'country'
19
+ };
20
+ var DISPLAY_GROUP_GEOLOCATION_GRANULARITY = (_DISPLAY_GROUP_GEOLOC = {}, _defineProperty(_DISPLAY_GROUP_GEOLOC, GROUP_GEOLOCATION_GRANULARITY.PROVINCE, 'By_province'), _defineProperty(_DISPLAY_GROUP_GEOLOC, GROUP_GEOLOCATION_GRANULARITY.CITY, 'By_city'), _defineProperty(_DISPLAY_GROUP_GEOLOC, GROUP_GEOLOCATION_GRANULARITY.DISTRICT, 'By_district'), _DISPLAY_GROUP_GEOLOC);
21
+ var SUPPORT_GROUP_COLUMN_TYPES = [CellType.TEXT, CellType.DATE, CellType.CTIME, CellType.MTIME, CellType.NUMBER, CellType.CHECKBOX, CellType.SINGLE_SELECT, CellType.MULTIPLE_SELECT, CellType.COLLABORATOR, CellType.CREATOR, CellType.GEOLOCATION, CellType.FORMULA, CellType.LINK_FORMULA, CellType.LINK, CellType.URL, CellType.EMAIL, CellType.DURATION, CellType.RATE, CellType.LAST_MODIFIER];
22
+
23
+ export { DISPLAY_GROUP_DATE_GRANULARITY, DISPLAY_GROUP_GEOLOCATION_GRANULARITY, GROUP_DATE_GRANULARITY, GROUP_GEOLOCATION_GRANULARITY, MAX_GROUP_LEVEL, SUPPORT_GROUP_COLUMN_TYPES };
@@ -0,0 +1,3 @@
1
+ var CONVERT_ROW_COLUMNS_LIMIT = 500;
2
+
3
+ export { CONVERT_ROW_COLUMNS_LIMIT };
@@ -0,0 +1,4 @@
1
+ var REG_STRING_NUMBER_PARTS = /\d+|\D+/g;
2
+ var REG_NUMBER_DIGIT = /\d/;
3
+
4
+ export { REG_NUMBER_DIGIT, REG_STRING_NUMBER_PARTS };
@@ -0,0 +1,11 @@
1
+ import { CellType } from './cell-type.js';
2
+
3
+ var ROW_COLOR_TYPE = {
4
+ BY_COLUMN: 'by_column',
5
+ BY_RULES: 'by_rules',
6
+ BY_DUPLICATE_VALUES: 'by_duplicate_values'
7
+ };
8
+ var SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES = [CellType.TEXT, CellType.NUMBER, CellType.DATE, CellType.DURATION, CellType.EMAIL, CellType.URL, CellType.RATE, CellType.CHECKBOX, CellType.COLLABORATOR, CellType.SINGLE_SELECT, CellType.MULTIPLE_SELECT, CellType.GEOLOCATION, CellType.FORMULA, CellType.CREATOR, CellType.LAST_MODIFIER];
9
+ var ROW_COLOR_FOR_DUPLICATE_VALUES = '#F4667C';
10
+
11
+ export { ROW_COLOR_FOR_DUPLICATE_VALUES, ROW_COLOR_TYPE, SUPPORT_CHECKING_DUPLICATE_COLUMNS_TYPES };
@@ -0,0 +1,11 @@
1
+ import { CellType } from './cell-type.js';
2
+
3
+ var SORT_TYPE = {
4
+ UP: 'up',
5
+ DOWN: 'down'
6
+ };
7
+ var SORT_COLUMN_OPTIONS = [CellType.DATE, CellType.CTIME, CellType.MTIME, CellType.SINGLE_SELECT, CellType.TEXT, CellType.NUMBER, CellType.FORMULA, CellType.LINK_FORMULA, CellType.AUTO_NUMBER, CellType.COLLABORATOR, CellType.DURATION, CellType.URL, CellType.EMAIL, CellType.CHECKBOX, CellType.MULTIPLE_SELECT, CellType.LINK, CellType.RATE];
8
+ var TEXT_SORTER_COLUMN_TYPES = [CellType.TEXT, CellType.URL, CellType.EMAIL];
9
+ var NUMBER_SORTER_COLUMN_TYPES = [CellType.NUMBER, CellType.DURATION, CellType.RATE];
10
+
11
+ export { NUMBER_SORTER_COLUMN_TYPES, SORT_COLUMN_OPTIONS, SORT_TYPE, TEXT_SORTER_COLUMN_TYPES };
package/es/date.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
2
2
  import _createClass from '@babel/runtime/helpers/createClass';
3
- import { DEFAULT_DATE_FORMAT, DATE_UNIT } from './constants/column.js';
3
+ import { DATE_UNIT, DEFAULT_DATE_FORMAT } from './constants/column.js';
4
4
 
5
5
  var MONTH_QUARTERS = [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4];
6
6
  var FORMATTING_TOKENS = /(\[[^[]*\])|([-:/.()\s]+)|(A|a|YYYY|YY?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g;
@@ -0,0 +1,322 @@
1
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
+ import { ValidateFilter } from '../validate/filter.js';
3
+ import { DateUtils } from '../date.js';
4
+ import { FILTER_ERR_MSG } from '../constants/filter/index.js';
5
+ import { CellType } from '../constants/cell-type.js';
6
+ import { FORMULA_RESULT_TYPE } from '../constants/formula.js';
7
+ import { FILTER_TERM_MODIFIER_TYPE } from '../constants/filter/filter-modifier.js';
8
+
9
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
+ var EXACT_DATE_TERM_MODIFIER_TYPES = [FILTER_TERM_MODIFIER_TYPE.TODAY, FILTER_TERM_MODIFIER_TYPE.TOMORROW, FILTER_TERM_MODIFIER_TYPE.YESTERDAY, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO, FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW, FILTER_TERM_MODIFIER_TYPE.EXACT_DATE];
12
+
13
+ /**
14
+ * Get filters which excludes incomplete
15
+ * @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
16
+ * @param {array} columns
17
+ * @returns valid filters, array
18
+ */
19
+ var getValidFilters = function getValidFilters(filters, columns) {
20
+ if (!Array.isArray(filters) || !Array.isArray(columns)) {
21
+ return [];
22
+ }
23
+ return filters.filter(function (filter) {
24
+ var _ValidateFilter$valid = ValidateFilter.validate(filter, columns),
25
+ error_message = _ValidateFilter$valid.error_message;
26
+ return !error_message || error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER;
27
+ });
28
+ };
29
+
30
+ /**
31
+ * Get filters without error messages
32
+ * @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
33
+ * @param {array} columns
34
+ * @returns valid filters, array
35
+ */
36
+ var getValidFiltersWithoutError = function getValidFiltersWithoutError(filters, columns) {
37
+ if (!Array.isArray(filters) || !Array.isArray(columns)) {
38
+ return [];
39
+ }
40
+ return filters.filter(function (filter) {
41
+ return !ValidateFilter.validate(filter, columns).error_message;
42
+ });
43
+ };
44
+
45
+ /**
46
+ * Generate date for filter
47
+ * @param {string} filterTermModifier
48
+ * @param {any} filterTerm
49
+ * @returns date | date range, object
50
+ */
51
+ var otherDate = function otherDate(filterTermModifier, filterTerm) {
52
+ var today = new Date();
53
+ var year = today.getFullYear();
54
+ var month = today.getMonth(); // use js month representation: 0 - 11
55
+ var day = today.getDate();
56
+
57
+ // 0 1 2 3 4 5 6 7 8 9 10 11 days in every month
58
+ var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
59
+ days[1] = year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0) ? 29 : 28; // is leap year
60
+ switch (filterTermModifier) {
61
+ case FILTER_TERM_MODIFIER_TYPE.TODAY:
62
+ {
63
+ // today, should start at 0:00 and end at 24:00
64
+ return new Date(year, month, day, 0, 0, 0);
65
+ }
66
+ case FILTER_TERM_MODIFIER_TYPE.TOMORROW:
67
+ {
68
+ return new Date(year, month, day + 1);
69
+ }
70
+ case FILTER_TERM_MODIFIER_TYPE.YESTERDAY:
71
+ {
72
+ return new Date(year, month, day - 1);
73
+ }
74
+ case FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_AGO:
75
+ {
76
+ return new Date(year, month, day - 7);
77
+ }
78
+ case FILTER_TERM_MODIFIER_TYPE.ONE_WEEK_FROM_NOW:
79
+ {
80
+ return new Date(year, month, day + 7);
81
+ }
82
+ case FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_AGO:
83
+ {
84
+ var pastMonth = month - 1;
85
+ var monthDaysIndex = month === 0 ? 11 : pastMonth;
86
+ var currentDay = day > days[monthDaysIndex] ? days[monthDaysIndex] : day;
87
+ return new Date(year, pastMonth, currentDay);
88
+ }
89
+ case FILTER_TERM_MODIFIER_TYPE.ONE_MONTH_FROM_NOW:
90
+ {
91
+ var nextMonth = month + 1;
92
+ var _monthDaysIndex = month === 11 ? 0 : nextMonth;
93
+ var _currentDay = day > days[_monthDaysIndex] ? days[_monthDaysIndex] : day;
94
+ return new Date(year, nextMonth, _currentDay);
95
+ }
96
+ case FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO:
97
+ {
98
+ return new Date(year, month, day - Number(filterTerm));
99
+ }
100
+ case FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW:
101
+ {
102
+ return new Date(year, month, day + Number(filterTerm));
103
+ }
104
+ case FILTER_TERM_MODIFIER_TYPE.EXACT_DATE:
105
+ {
106
+ return new Date(filterTerm);
107
+ }
108
+ case FILTER_TERM_MODIFIER_TYPE.THE_PAST_WEEK:
109
+ {
110
+ var weekDay = today.getDay() !== 0 ? today.getDay() : 7;
111
+ return {
112
+ startDate: new Date(year, month, day - weekDay - 6),
113
+ endDate: new Date(year, month, day - weekDay)
114
+ };
115
+ }
116
+ case FILTER_TERM_MODIFIER_TYPE.THIS_WEEK:
117
+ {
118
+ var _weekDay = today.getDay() !== 0 ? today.getDay() : 7;
119
+ return {
120
+ startDate: new Date(year, month, day - _weekDay + 1),
121
+ endDate: new Date(year, month, day - _weekDay + 7)
122
+ };
123
+ }
124
+ case FILTER_TERM_MODIFIER_TYPE.THE_NEXT_WEEK:
125
+ {
126
+ var _weekDay2 = today.getDay() !== 0 ? today.getDay() : 7;
127
+ return {
128
+ startDate: new Date(year, month, day - _weekDay2 + 8),
129
+ endDate: new Date(year, month, day - _weekDay2 + 14)
130
+ };
131
+ }
132
+ case FILTER_TERM_MODIFIER_TYPE.THE_PAST_MONTH:
133
+ {
134
+ var _pastMonth = month - 1;
135
+ return {
136
+ startDate: new Date(year, _pastMonth, 1),
137
+ endDate: new Date(year, _pastMonth, days[month === 0 ? 11 : _pastMonth])
138
+ };
139
+ }
140
+ case FILTER_TERM_MODIFIER_TYPE.THIS_MONTH:
141
+ {
142
+ return {
143
+ startDate: new Date(year, month, 1),
144
+ endDate: new Date(year, month, days[month])
145
+ };
146
+ }
147
+ case FILTER_TERM_MODIFIER_TYPE.THE_NEXT_MONTH:
148
+ {
149
+ var _nextMonth = month + 1;
150
+ return {
151
+ startDate: new Date(year, _nextMonth, 1),
152
+ endDate: new Date(year, _nextMonth, month === 11 ? days[0] : days[_nextMonth])
153
+ };
154
+ }
155
+ case FILTER_TERM_MODIFIER_TYPE.THE_PAST_YEAR:
156
+ {
157
+ var pastYear = year - 1;
158
+ return {
159
+ startDate: new Date(pastYear, 0, 1),
160
+ // The computer's month starts at 0.
161
+ endDate: new Date(pastYear, 11, 31)
162
+ };
163
+ }
164
+ case FILTER_TERM_MODIFIER_TYPE.THIS_YEAR:
165
+ {
166
+ return {
167
+ startDate: new Date(year, 0, 1),
168
+ endDate: new Date(year, 11, 31)
169
+ };
170
+ }
171
+ case FILTER_TERM_MODIFIER_TYPE.THE_NEXT_YEAR:
172
+ {
173
+ var nextYear = year + 1;
174
+ return {
175
+ startDate: new Date(nextYear, 0, 1),
176
+ endDate: new Date(nextYear, 11, 31)
177
+ };
178
+ }
179
+ case FILTER_TERM_MODIFIER_TYPE.THE_NEXT_NUMBERS_OF_DAYS:
180
+ {
181
+ return {
182
+ startDate: new Date(year, month, day + 1, 0, 0, 0),
183
+ endDate: new Date(year, month, day + Number(filterTerm))
184
+ };
185
+ }
186
+ case FILTER_TERM_MODIFIER_TYPE.THE_PAST_NUMBERS_OF_DAYS:
187
+ {
188
+ return {
189
+ startDate: new Date(year, month, day - Number(filterTerm)),
190
+ endDate: new Date(year, month, day, 0, 0, 0)
191
+ };
192
+ }
193
+ default:
194
+ {
195
+ return {};
196
+ }
197
+ }
198
+ };
199
+
200
+ /**
201
+ * Generate formatted date for filter
202
+ * @param {string} filterTermModifier
203
+ * @param {any} filterTerm
204
+ * @returns formatted date | date range, object
205
+ */
206
+ var getFormattedFilterOtherDate = function getFormattedFilterOtherDate(filterTermModifier, filterTerm) {
207
+ var _otherDate = otherDate(filterTermModifier, filterTerm);
208
+ if (EXACT_DATE_TERM_MODIFIER_TYPES.includes(filterTermModifier)) {
209
+ return DateUtils.format(_otherDate);
210
+ }
211
+ var startDate = _otherDate.startDate,
212
+ endDate = _otherDate.endDate;
213
+ return {
214
+ startDate: startDate ? DateUtils.format(startDate) : '',
215
+ endDate: endDate ? DateUtils.format(endDate) : ''
216
+ };
217
+ };
218
+
219
+ /**
220
+ * Format filter with other_date, linked_column etc.
221
+ * @param {object} filter e.g. { filter_term, filter_term_modifier, ... }
222
+ * @param {object} column
223
+ * @returns formatted filter
224
+ */
225
+ var getFormattedFilter = function getFormattedFilter(filter, column) {
226
+ var filter_term = filter.filter_term,
227
+ filter_term_modifier = filter.filter_term_modifier;
228
+ var columnType = column.type,
229
+ columnData = column.data;
230
+ var formattedFilter = filter;
231
+ switch (columnType) {
232
+ case CellType.FORMULA:
233
+ case CellType.LINK_FORMULA:
234
+ {
235
+ var result_type = columnData.result_type,
236
+ array_type = columnData.array_type,
237
+ array_data = columnData.array_data;
238
+ if (result_type === FORMULA_RESULT_TYPE.DATE) {
239
+ formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
240
+ }
241
+ if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
242
+ var linkedColumn = {
243
+ type: array_type,
244
+ data: array_data
245
+ };
246
+ formattedFilter.linked_column = linkedColumn;
247
+ formattedFilter = getFormattedFilter(formattedFilter, linkedColumn);
248
+ }
249
+ break;
250
+ }
251
+ case CellType.DATE:
252
+ case CellType.CTIME:
253
+ case CellType.MTIME:
254
+ {
255
+ formattedFilter.other_date = getFormattedFilterOtherDate(filter_term_modifier, filter_term);
256
+ break;
257
+ }
258
+ case CellType.LINK:
259
+ {
260
+ var _ref = columnData || {},
261
+ _array_type = _ref.array_type,
262
+ _array_data = _ref.array_data;
263
+ var _linkedColumn = {
264
+ type: _array_type,
265
+ data: _array_data
266
+ };
267
+ var filterColumnData = _objectSpread(_objectSpread({}, columnData), {}, {
268
+ result_type: FORMULA_RESULT_TYPE.ARRAY
269
+ });
270
+ var filterColumn = _objectSpread(_objectSpread({}, column), {}, {
271
+ data: filterColumnData
272
+ });
273
+ formattedFilter.column = filterColumn;
274
+ formattedFilter.linked_column = _linkedColumn;
275
+ formattedFilter = getFormattedFilter(formattedFilter, _linkedColumn);
276
+ break;
277
+ }
278
+ }
279
+ return formattedFilter;
280
+ };
281
+
282
+ /**
283
+ * Get formatted filters with other_date, linked_column etc.
284
+ * @param {array} filters [{ filter_term, filter_term_modifier, column, ... }]
285
+ * @returns formatted filters, array
286
+ */
287
+ var getFormattedFilters = function getFormattedFilters(filters) {
288
+ return filters.map(function (filter) {
289
+ return getFormattedFilter(filter, filter.column);
290
+ });
291
+ };
292
+
293
+ /**
294
+ * Get filters without error messages and formatted with filter column
295
+ * @param {array} filters e.g. [{ column_key, filter_predicate, ... }]
296
+ * @param {array} columns
297
+ * @returns filters, array
298
+ */
299
+ var deleteInvalidFilter = function deleteInvalidFilter(filters, columns) {
300
+ var cleanFilters = [];
301
+ filters.forEach(function (filter) {
302
+ var column_key = filter.column_key;
303
+ var _ValidateFilter$valid2 = ValidateFilter.validate(filter, columns),
304
+ error_message = _ValidateFilter$valid2.error_message;
305
+ if (error_message) {
306
+ if (error_message !== FILTER_ERR_MSG.INCOMPLETE_FILTER) {
307
+ throw new Error(error_message);
308
+ }
309
+ } else {
310
+ var filterColumn = columns.find(function (column) {
311
+ return column.key === column_key;
312
+ });
313
+ var newFilter = _objectSpread(_objectSpread({}, filter), {}, {
314
+ column: filterColumn
315
+ });
316
+ cleanFilters.push(newFilter);
317
+ }
318
+ });
319
+ return cleanFilters;
320
+ };
321
+
322
+ export { deleteInvalidFilter, getFormattedFilter, getFormattedFilterOtherDate, getFormattedFilters, getValidFilters, getValidFiltersWithoutError, otherDate };
@@ -0,0 +1,87 @@
1
+ import { getFormulaDisplayString } from '../../cell-value-get/cell-value.js';
2
+ import { isNumericColumn } from '../../column/number.js';
3
+ import { checkboxFilter } from './checkbox.js';
4
+ import { collaboratorFilter } from './collaborator.js';
5
+ import { dateFilter } from './date.js';
6
+ import { textFilter } from './text.js';
7
+ import { multipleSelectFilter } from './multiple-select.js';
8
+ import { numberFilter } from './number.js';
9
+ import { CellType } from '../../constants/cell-type.js';
10
+ import { DATE_COLUMN_OPTIONS, COLLABORATOR_COLUMN_TYPES } from '../../constants/column.js';
11
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
12
+
13
+ var TRUE_VALUE = [true, 'true'];
14
+
15
+ /**
16
+ * Filter by array type
17
+ * @param {array} array e.g. [ cellValue, ... ]
18
+ * @param {object} filter e.g. { filter_predicate, column, ... }
19
+ * @param {string} username
20
+ * @param {string} userId
21
+ * @returns bool
22
+ */
23
+ var filterByArrayType = function filterByArrayType(array, filter, _ref) {
24
+ var username = _ref.username,
25
+ userId = _ref.userId;
26
+ var column = filter.column,
27
+ linked_column = filter.linked_column;
28
+ var filter_predicate = filter.filter_predicate;
29
+ if (Array.isArray(array)) {
30
+ if (filter_predicate === FILTER_PREDICATE_TYPE.EMPTY) {
31
+ return array.length === 0;
32
+ }
33
+ if (filter_predicate === FILTER_PREDICATE_TYPE.NOT_EMPTY) {
34
+ return array.length > 0;
35
+ }
36
+ }
37
+ if (!linked_column) {
38
+ return textFilter('', filter, userId);
39
+ }
40
+ var linkedColumnType = linked_column.type;
41
+ if (linkedColumnType === CellType.BOOL || linkedColumnType === CellType.CHECKBOX) {
42
+ var normalizedArray = array;
43
+ if (Array.isArray(array)) {
44
+ normalizedArray = array[0];
45
+ }
46
+ normalizedArray = TRUE_VALUE.includes(normalizedArray);
47
+ return checkboxFilter(normalizedArray, filter);
48
+ }
49
+ if (linkedColumnType === CellType.SINGLE_SELECT) {
50
+ var _normalizedArray = array;
51
+ if (array && !Array.isArray(array)) {
52
+ _normalizedArray = [array];
53
+ }
54
+ return multipleSelectFilter(_normalizedArray, filter);
55
+ }
56
+ if (linkedColumnType === CellType.MULTIPLE_SELECT) {
57
+ return multipleSelectFilter(array, filter);
58
+ }
59
+ if (isNumericColumn({
60
+ type: linkedColumnType
61
+ })) {
62
+ var _normalizedArray2 = array;
63
+ if (Array.isArray(array)) {
64
+ var cellValueLength = array.length;
65
+ if (cellValueLength === 0) {
66
+ _normalizedArray2 = '';
67
+ } else if (cellValueLength === 1) {
68
+ _normalizedArray2 = array[0];
69
+ }
70
+ }
71
+ return numberFilter(_normalizedArray2, filter);
72
+ }
73
+ if (DATE_COLUMN_OPTIONS.includes(linkedColumnType)) {
74
+ var newCellValue = array;
75
+ if (Array.isArray(array)) {
76
+ newCellValue = String(array);
77
+ }
78
+ return dateFilter(newCellValue, filter);
79
+ }
80
+ if (COLLABORATOR_COLUMN_TYPES.includes(linkedColumnType)) {
81
+ return collaboratorFilter(array, filter, username);
82
+ }
83
+ var displayString = getFormulaDisplayString(array, column.data) || '';
84
+ return textFilter(displayString, filter, userId);
85
+ };
86
+
87
+ export { filterByArrayType };