sea-chart 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/README.md +4 -0
  2. package/lib/assets/icons/area-chart.svg +10 -0
  3. package/lib/assets/icons/bar-chart.svg +12 -0
  4. package/lib/assets/icons/card.svg +22 -0
  5. package/lib/assets/icons/combination-chart.svg +17 -0
  6. package/lib/assets/icons/dtable-logo.svg +16 -0
  7. package/lib/assets/icons/facet-chart.svg +12 -0
  8. package/lib/assets/icons/gauge.svg +18 -0
  9. package/lib/assets/icons/heat-map.svg +14 -0
  10. package/lib/assets/icons/histogram.svg +12 -0
  11. package/lib/assets/icons/line-chart.svg +12 -0
  12. package/lib/assets/icons/map.svg +20 -0
  13. package/lib/assets/icons/pie-chart.svg +11 -0
  14. package/lib/assets/icons/rectangular-tree-diagram.svg +10 -0
  15. package/lib/assets/icons/scatter-chart.svg +15 -0
  16. package/lib/assets/icons/type-change.svg +17 -0
  17. package/lib/assets/img/area-chart.png +0 -0
  18. package/lib/assets/img/area-group-chart.png +0 -0
  19. package/lib/assets/img/bar-group.png +0 -0
  20. package/lib/assets/img/bar-stack.png +0 -0
  21. package/lib/assets/img/bar.png +0 -0
  22. package/lib/assets/img/combination-chart.png +0 -0
  23. package/lib/assets/img/compared-chart.png +0 -0
  24. package/lib/assets/img/completeness-chart.png +0 -0
  25. package/lib/assets/img/custom-bar.png +0 -0
  26. package/lib/assets/img/dashboard-chart.png +0 -0
  27. package/lib/assets/img/group-completeness-chart.png +0 -0
  28. package/lib/assets/img/group_line.png +0 -0
  29. package/lib/assets/img/heat-map.png +0 -0
  30. package/lib/assets/img/horizontal-bar.png +0 -0
  31. package/lib/assets/img/horizontal-group-bar.png +0 -0
  32. package/lib/assets/img/line.png +0 -0
  33. package/lib/assets/img/map-bubble.png +0 -0
  34. package/lib/assets/img/map.png +0 -0
  35. package/lib/assets/img/mirror.png +0 -0
  36. package/lib/assets/img/number-card.png +0 -0
  37. package/lib/assets/img/pie.png +0 -0
  38. package/lib/assets/img/pivot-table.png +0 -0
  39. package/lib/assets/img/ring.png +0 -0
  40. package/lib/assets/img/scatter.png +0 -0
  41. package/lib/assets/img/stacked-horizontal-bar.png +0 -0
  42. package/lib/assets/img/treemap.png +0 -0
  43. package/lib/assets/img/trend-chart.png +0 -0
  44. package/lib/assets/img/world-map-bubble.png +0 -0
  45. package/lib/assets/img/world-map.png +0 -0
  46. package/lib/components/collaborator/index.js +24 -0
  47. package/lib/components/formatter/area.js +162 -0
  48. package/lib/components/formatter/bar-group.js +160 -0
  49. package/lib/components/formatter/bar.js +150 -0
  50. package/lib/components/formatter/basic-number-card.js +138 -0
  51. package/lib/components/formatter/chart-component.js +266 -0
  52. package/lib/components/formatter/combination.js +407 -0
  53. package/lib/components/formatter/dashboard.js +182 -0
  54. package/lib/components/formatter/horizontal-bar-group.js +161 -0
  55. package/lib/components/formatter/horizontal-bar.js +152 -0
  56. package/lib/components/formatter/horizontal-component.js +91 -0
  57. package/lib/components/formatter/index.js +181 -0
  58. package/lib/components/formatter/line-group.js +157 -0
  59. package/lib/components/formatter/line.js +170 -0
  60. package/lib/components/formatter/pie.js +201 -0
  61. package/lib/components/formatter/ring.js +277 -0
  62. package/lib/components/formatter/table/index.css +103 -0
  63. package/lib/components/formatter/table/index.js +42 -0
  64. package/lib/components/formatter/table/one-dimension-table-no-numeric-columns.js +145 -0
  65. package/lib/components/formatter/table/one-dimension-table-with-numeric-columns.js +193 -0
  66. package/lib/components/formatter/table/pivot-table-display-name.js +249 -0
  67. package/lib/components/formatter/table/two-dimension-table.js +241 -0
  68. package/lib/components/formatter/treemap.js +213 -0
  69. package/lib/components/icon/index.css +5 -0
  70. package/lib/components/icon/index.js +22 -0
  71. package/lib/components/index.js +5 -0
  72. package/lib/components/loading/index.css +54 -0
  73. package/lib/components/loading/index.js +10 -0
  74. package/lib/components/number-input/index.js +31 -0
  75. package/lib/components/pixel-editor/index.css +29 -0
  76. package/lib/components/pixel-editor/index.js +42 -0
  77. package/lib/components/select-group/index.css +67 -0
  78. package/lib/components/select-group/index.js +63 -0
  79. package/lib/components/settings/advance-bar-settings/data-settings.js +120 -0
  80. package/lib/components/settings/advance-bar-settings/index.js +3 -0
  81. package/lib/components/settings/advance-bar-settings/style-settings.js +149 -0
  82. package/lib/components/settings/bar-settings/data-settings.js +137 -0
  83. package/lib/components/settings/bar-settings/index.js +3 -0
  84. package/lib/components/settings/bar-settings/style-settings.js +163 -0
  85. package/lib/components/settings/basic-number-card/data-settings.js +121 -0
  86. package/lib/components/settings/basic-number-card/index.js +3 -0
  87. package/lib/components/settings/basic-number-card/style-settings.js +42 -0
  88. package/lib/components/settings/combination-settings/data-settings.js +256 -0
  89. package/lib/components/settings/combination-settings/index.js +3 -0
  90. package/lib/components/settings/combination-settings/style-settings.js +183 -0
  91. package/lib/components/settings/dashboard-settings/data-settings.js +167 -0
  92. package/lib/components/settings/dashboard-settings/index.js +2 -0
  93. package/lib/components/settings/data-settings.js +67 -0
  94. package/lib/components/settings/horizontal-bar-settings/data-settings.js +45 -0
  95. package/lib/components/settings/horizontal-bar-settings/index.js +3 -0
  96. package/lib/components/settings/horizontal-bar-settings/style-settings.js +38 -0
  97. package/lib/components/settings/index.css +73 -0
  98. package/lib/components/settings/index.js +74 -0
  99. package/lib/components/settings/pie-settings/data-settings.js +123 -0
  100. package/lib/components/settings/pie-settings/index.js +3 -0
  101. package/lib/components/settings/pie-settings/style-settings.js +123 -0
  102. package/lib/components/settings/style-settings.js +100 -0
  103. package/lib/components/settings/table-settings/data-settings.js +488 -0
  104. package/lib/components/settings/table-settings/index.js +2 -0
  105. package/lib/components/settings/time-comparison-settings/data-settings.js +157 -0
  106. package/lib/components/settings/time-comparison-settings/index.js +3 -0
  107. package/lib/components/settings/time-comparison-settings/style-settings.js +191 -0
  108. package/lib/components/settings/widgets/basic-summary/index.css +12 -0
  109. package/lib/components/settings/widgets/basic-summary/index.js +173 -0
  110. package/lib/components/settings/widgets/common-data-settings.js +42 -0
  111. package/lib/components/settings/widgets/data-filter/index.css +17 -0
  112. package/lib/components/settings/widgets/data-filter/index.js +76 -0
  113. package/lib/components/settings/widgets/data-sort.js +38 -0
  114. package/lib/components/settings/widgets/date-summary-item.js +126 -0
  115. package/lib/components/settings/widgets/display-values-settings/index.css +13 -0
  116. package/lib/components/settings/widgets/display-values-settings/index.js +37 -0
  117. package/lib/components/settings/widgets/divider/index.css +4 -0
  118. package/lib/components/settings/widgets/divider/index.js +10 -0
  119. package/lib/components/settings/widgets/font-settings/font-size-settings.js +31 -0
  120. package/lib/components/settings/widgets/font-settings/font-weight-settings.js +46 -0
  121. package/lib/components/settings/widgets/font-settings/index.js +3 -0
  122. package/lib/components/settings/widgets/group-by.js +168 -0
  123. package/lib/components/settings/widgets/label-color.js +30 -0
  124. package/lib/components/settings/widgets/min-max-setting.js +64 -0
  125. package/lib/components/settings/widgets/mininum-slice-percent.js +72 -0
  126. package/lib/components/settings/widgets/numeric-summary-item.js +109 -0
  127. package/lib/components/settings/widgets/select-table/index.css +0 -0
  128. package/lib/components/settings/widgets/select-table/index.js +49 -0
  129. package/lib/components/settings/widgets/stack.js +58 -0
  130. package/lib/components/settings/widgets/statistic-type/index.css +31 -0
  131. package/lib/components/settings/widgets/statistic-type/index.js +54 -0
  132. package/lib/components/settings/widgets/summary-method-setting.js +80 -0
  133. package/lib/components/settings/widgets/summary-settings.js +394 -0
  134. package/lib/components/settings/widgets/switch/index.css +37 -0
  135. package/lib/components/settings/widgets/switch/index.js +21 -0
  136. package/lib/components/settings/widgets/text-horizontal-settings.js +23 -0
  137. package/lib/components/settings/widgets/time-picker.js +182 -0
  138. package/lib/components/settings/widgets/title-settings/index.js +58 -0
  139. package/lib/components/settings/widgets/title-settings/title-text.js +31 -0
  140. package/lib/components/settings/widgets/x-axios.js +0 -0
  141. package/lib/components/settings/widgets/y-axis-group-settings.js +399 -0
  142. package/lib/components/types-dialog/index.css +97 -0
  143. package/lib/components/types-dialog/index.js +127 -0
  144. package/lib/constants/geolocation.js +11 -0
  145. package/lib/constants/index.js +164 -0
  146. package/lib/constants/model.js +167 -0
  147. package/lib/constants/style.js +13 -0
  148. package/lib/constants/type-image.js +32 -0
  149. package/lib/constants/type.js +97 -0
  150. package/lib/context.js +49 -0
  151. package/lib/index.js +6 -0
  152. package/lib/intl.js +37 -0
  153. package/lib/layout/index.js +4 -0
  154. package/lib/layout/statistic/index.css +53 -0
  155. package/lib/layout/statistic/index.js +190 -0
  156. package/lib/layout/title/index.css +3 -0
  157. package/lib/layout/title/index.js +41 -0
  158. package/lib/locale/index.js +11 -0
  159. package/lib/locale/lang/de.js +141 -0
  160. package/lib/locale/lang/en.js +143 -0
  161. package/lib/locale/lang/es.js +141 -0
  162. package/lib/locale/lang/fr.js +141 -0
  163. package/lib/locale/lang/pt.js +141 -0
  164. package/lib/locale/lang/ru.js +141 -0
  165. package/lib/locale/lang/zh_CN.js +143 -0
  166. package/lib/model/area-group.js +51 -0
  167. package/lib/model/area.js +42 -0
  168. package/lib/model/bar-group.js +54 -0
  169. package/lib/model/bar-stack.js +51 -0
  170. package/lib/model/bar.js +48 -0
  171. package/lib/model/base-model.js +11 -0
  172. package/lib/model/basic-number-card.js +32 -0
  173. package/lib/model/combination.js +48 -0
  174. package/lib/model/compare-bar.js +49 -0
  175. package/lib/model/completeness-group.js +34 -0
  176. package/lib/model/completeness.js +28 -0
  177. package/lib/model/dashboard.js +26 -0
  178. package/lib/model/generic-model.js +235 -0
  179. package/lib/model/heat-map.js +33 -0
  180. package/lib/model/horizontal-bar.js +48 -0
  181. package/lib/model/horizontal-group-bar.js +53 -0
  182. package/lib/model/index.js +36 -0
  183. package/lib/model/line-group.js +54 -0
  184. package/lib/model/line.js +48 -0
  185. package/lib/model/map-bubble.js +37 -0
  186. package/lib/model/map.js +37 -0
  187. package/lib/model/mirror.js +36 -0
  188. package/lib/model/pie.js +36 -0
  189. package/lib/model/ring.js +36 -0
  190. package/lib/model/scatter.js +29 -0
  191. package/lib/model/stacked-horizontal-bar.js +42 -0
  192. package/lib/model/statistic.js +22 -0
  193. package/lib/model/table.js +33 -0
  194. package/lib/model/tree-map.js +30 -0
  195. package/lib/model/trend.js +34 -0
  196. package/lib/model/user.js +22 -0
  197. package/lib/model/world-map-bubble.js +36 -0
  198. package/lib/model/world-map.js +36 -0
  199. package/lib/utils/cell-format-utils.js +41 -0
  200. package/lib/utils/chart.js +6 -0
  201. package/lib/utils/collaborator-utils.js +40 -0
  202. package/lib/utils/column-utils.js +247 -0
  203. package/lib/utils/custom-g2.js +612 -0
  204. package/lib/utils/data-filter/filter-item-utils.js +80 -0
  205. package/lib/utils/data-filter/filters-utils.js +406 -0
  206. package/lib/utils/data-filter/index.js +3 -0
  207. package/lib/utils/date-translate.js +66 -0
  208. package/lib/utils/index.js +50 -0
  209. package/lib/utils/key-generator.js +13 -0
  210. package/lib/utils/object-utils.js +61 -0
  211. package/lib/utils/options-utils.js +61 -0
  212. package/lib/utils/statistic-column-2-sql-column-utils.js +499 -0
  213. package/lib/utils/statistic-utils.js +1685 -0
  214. package/package.json +160 -0
@@ -0,0 +1,406 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ var _SIMPLE_TEXT_INPUT_CO, _DATE_LABEL_MAP, _ARRAY_PREDICATE, _STRING_PREDICATE, _DATE_EMPTY_LABEL_MAP;
4
+ import { CellType, COLLABORATOR_COLUMN_TYPES, DATE_COLUMN_OPTIONS, FILTER_PREDICATE_TYPE, FILTER_COLUMN_OPTIONS, FILTER_TERM_MODIFIER_TYPE, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE, filterTermModifierNotWithin, filterTermModifierIsWithin, isDateColumn, isNumericColumn } from 'dtable-utils';
5
+ import { getColumnByKey } from '../column-utils';
6
+ export var SPECIAL_TERM_TYPE = {
7
+ CREATOR: 'creator',
8
+ SINGLE_SELECT: 'single_select',
9
+ MULTIPLE_SELECT: 'multiple_select',
10
+ COLLABORATOR: 'collaborator',
11
+ RATE: 'rate'
12
+ };
13
+ export var SIMPLE_TEXT_INPUT_COLUMNS_MAP = (_SIMPLE_TEXT_INPUT_CO = {}, _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.TEXT, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.LONG_TEXT, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.GEOLOCATION, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.AUTO_NUMBER, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.EMAIL, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.URL, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.IMAGE, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, CellType.FILE, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, FORMULA_RESULT_TYPE.STRING, true), _defineProperty(_SIMPLE_TEXT_INPUT_CO, FORMULA_RESULT_TYPE.BOOL, true), _SIMPLE_TEXT_INPUT_CO);
14
+ export var DATE_LABEL_MAP = (_DATE_LABEL_MAP = {}, _defineProperty(_DATE_LABEL_MAP, FILTER_TERM_MODIFIER_TYPE.EXACT_DATE, true), _defineProperty(_DATE_LABEL_MAP, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_AGO, true), _defineProperty(_DATE_LABEL_MAP, FILTER_TERM_MODIFIER_TYPE.NUMBER_OF_DAYS_FROM_NOW, true), _defineProperty(_DATE_LABEL_MAP, FILTER_TERM_MODIFIER_TYPE.THE_NEXT_NUMBERS_OF_DAYS, true), _defineProperty(_DATE_LABEL_MAP, FILTER_TERM_MODIFIER_TYPE.THE_PAST_NUMBERS_OF_DAYS, true), _DATE_LABEL_MAP);
15
+ var ARRAY_PREDICATE = (_ARRAY_PREDICATE = {}, _defineProperty(_ARRAY_PREDICATE, FILTER_PREDICATE_TYPE.IS_ANY_OF, true), _defineProperty(_ARRAY_PREDICATE, FILTER_PREDICATE_TYPE.IS_NONE_OF, true), _ARRAY_PREDICATE);
16
+ var STRING_PREDICATE = (_STRING_PREDICATE = {}, _defineProperty(_STRING_PREDICATE, FILTER_PREDICATE_TYPE.IS, true), _defineProperty(_STRING_PREDICATE, FILTER_PREDICATE_TYPE.IS_NOT, true), _STRING_PREDICATE);
17
+ export var DATE_EMPTY_LABEL_MAP = (_DATE_EMPTY_LABEL_MAP = {}, _defineProperty(_DATE_EMPTY_LABEL_MAP, FILTER_PREDICATE_TYPE.EMPTY, true), _defineProperty(_DATE_EMPTY_LABEL_MAP, FILTER_PREDICATE_TYPE.NOT_EMPTY, true), _DATE_EMPTY_LABEL_MAP);
18
+ var MULTIPLE_SELECTOR_COLUMNS = [CellType.MULTIPLE_SELECT, CellType.COLLABORATOR, CellType.CREATOR, CellType.LAST_MODIFIER];
19
+ var isArrayFilterTermByArrayType = function isArrayFilterTermByArrayType(array_type) {
20
+ return COLLABORATOR_COLUMN_TYPES.includes(array_type) || array_type === CellType.SINGLE_SELECT || array_type === CellType.MULTIPLE_SELECT;
21
+ };
22
+ export var isFilterTermArray = function isFilterTermArray(column, filterPredicate) {
23
+ var type = column.type,
24
+ data = column.data;
25
+ if (MULTIPLE_SELECTOR_COLUMNS.includes(type)) {
26
+ return true;
27
+ }
28
+ if (type === CellType.SINGLE_SELECT && [FILTER_PREDICATE_TYPE.IS_ANY_OF, FILTER_PREDICATE_TYPE.IS_NONE_OF].includes(filterPredicate)) {
29
+ return true;
30
+ }
31
+ if (FORMULA_COLUMN_TYPES_MAP[type]) {
32
+ var _ref = data || {},
33
+ result_type = _ref.result_type,
34
+ array_type = _ref.array_type;
35
+ if (result_type !== FORMULA_RESULT_TYPE.ARRAY) return false;
36
+ return isArrayFilterTermByArrayType(array_type);
37
+ }
38
+ if (type === CellType.LINK) {
39
+ var _ref2 = data || {},
40
+ _array_type = _ref2.array_type;
41
+ return isArrayFilterTermByArrayType(_array_type);
42
+ }
43
+ return false;
44
+ };
45
+ export var getUpdatedFilterByCreator = function getUpdatedFilterByCreator(filter, collaborator) {
46
+ var multipleSelectType = [FILTER_PREDICATE_TYPE.CONTAINS, FILTER_PREDICATE_TYPE.NOT_CONTAIN];
47
+ var filter_predicate = filter.filter_predicate,
48
+ filterTerm = filter.filter_term;
49
+ if (multipleSelectType.includes(filter_predicate)) {
50
+ filterTerm = filterTerm ? filter.filter_term.slice(0) : [];
51
+ var selectedEmail = collaborator.email;
52
+ var collaborator_index = filterTerm.indexOf(selectedEmail);
53
+ if (collaborator_index > -1) {
54
+ filterTerm.splice(collaborator_index, 1);
55
+ } else {
56
+ filterTerm.push(selectedEmail);
57
+ }
58
+ } else {
59
+ if (filterTerm[0] === collaborator.email) {
60
+ return;
61
+ }
62
+ filterTerm = [collaborator.email];
63
+ }
64
+ return Object.assign({}, filter, {
65
+ filter_term: filterTerm
66
+ });
67
+ };
68
+ export var getUpdatedFilterBySelectSingle = function getUpdatedFilterBySelectSingle(filter, columnOption) {
69
+ var new_filter_term;
70
+ // if predicate is any of / is none of, filter_term is array; else filter_term is string
71
+ if (filter.filter_predicate === FILTER_PREDICATE_TYPE.IS_ANY_OF || filter.filter_predicate === FILTER_PREDICATE_TYPE.IS_NONE_OF) {
72
+ new_filter_term = Array.isArray(filter.filter_term) ? _toConsumableArray(filter.filter_term) : [];
73
+ var index = new_filter_term.indexOf(columnOption.id);
74
+ if (index === -1) {
75
+ new_filter_term.push(columnOption.id);
76
+ } else {
77
+ new_filter_term.splice(index, 1);
78
+ }
79
+ } else {
80
+ new_filter_term = columnOption.id;
81
+ }
82
+ return Object.assign({}, filter, {
83
+ filter_term: new_filter_term
84
+ });
85
+ };
86
+ export var getUpdatedFilterBySelectMultiple = function getUpdatedFilterBySelectMultiple(filter, columnOption) {
87
+ var filterTerm = filter.filter_term ? filter.filter_term : [];
88
+ var index = filterTerm.indexOf(columnOption.id);
89
+ if (index > -1) {
90
+ filterTerm.splice(index, 1);
91
+ } else {
92
+ filterTerm.push(columnOption.id);
93
+ }
94
+ return Object.assign({}, filter, {
95
+ filter_term: filterTerm
96
+ });
97
+ };
98
+ export var getUpdatedFilterByCollaborator = function getUpdatedFilterByCollaborator(filter, collaborator) {
99
+ var filterTerm = filter.filter_term ? filter.filter_term.slice(0) : [];
100
+ var selectedEmail = collaborator.email;
101
+ var collaborator_index = filterTerm.indexOf(selectedEmail);
102
+ if (collaborator_index > -1) {
103
+ filterTerm.splice(collaborator_index, 1);
104
+ } else {
105
+ filterTerm.push(selectedEmail);
106
+ }
107
+ return Object.assign({}, filter, {
108
+ filter_term: filterTerm
109
+ });
110
+ };
111
+ export var getUpdatedFilterByRate = function getUpdatedFilterByRate(filter, value) {
112
+ if (filter.filter_term === value) {
113
+ return Object.assign({}, filter, {
114
+ filter_term: 0
115
+ });
116
+ }
117
+ return Object.assign({}, filter, {
118
+ filter_term: value
119
+ });
120
+ };
121
+ export var getColumnOptions = function getColumnOptions(column) {
122
+ var type = column.type,
123
+ data = column.data;
124
+ if (FORMULA_COLUMN_TYPES_MAP[type]) {
125
+ return getFormulaColumnFilterOptions(column);
126
+ }
127
+ if (type === CellType.LINK) {
128
+ var _ref3 = data || {},
129
+ array_type = _ref3.array_type;
130
+ if (array_type === FORMULA_RESULT_TYPE.BOOL) {
131
+ return FILTER_COLUMN_OPTIONS[CellType.CHECKBOX];
132
+ }
133
+ if (array_type === FORMULA_RESULT_TYPE.STRING) {
134
+ return FILTER_COLUMN_OPTIONS[CellType.TEXT];
135
+ }
136
+ return getFilterOptionsByArrayType(array_type);
137
+ }
138
+ return FILTER_COLUMN_OPTIONS[type] || {};
139
+ };
140
+ var getFormulaColumnFilterOptions = function getFormulaColumnFilterOptions(column) {
141
+ var data = column.data;
142
+ var _ref4 = data || {},
143
+ result_type = _ref4.result_type,
144
+ array_type = _ref4.array_type;
145
+ if (result_type === FORMULA_RESULT_TYPE.BOOL) {
146
+ return FILTER_COLUMN_OPTIONS[CellType.CHECKBOX];
147
+ }
148
+ if (result_type === FORMULA_RESULT_TYPE.STRING) {
149
+ return FILTER_COLUMN_OPTIONS[CellType.TEXT];
150
+ }
151
+ if ([FORMULA_RESULT_TYPE.NUMBER, FORMULA_RESULT_TYPE.DATE].includes(result_type)) {
152
+ return FILTER_COLUMN_OPTIONS[result_type];
153
+ }
154
+ if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
155
+ return getFilterOptionsByArrayType(array_type);
156
+ }
157
+ return FILTER_COLUMN_OPTIONS[CellType.TEXT];
158
+ };
159
+ var getFilterOptionsByArrayType = function getFilterOptionsByArrayType(array_type) {
160
+ if (!array_type) {
161
+ return {};
162
+ }
163
+ var checkType = array_type;
164
+ if (COLLABORATOR_COLUMN_TYPES.includes(array_type)) {
165
+ checkType = CellType.COLLABORATOR;
166
+ } else if (array_type === CellType.SINGLE_SELECT) {
167
+ checkType = CellType.MULTIPLE_SELECT;
168
+ } else if (DATE_COLUMN_OPTIONS.includes(array_type)) {
169
+ checkType = CellType.DATE;
170
+ } else if (isNumericColumn({
171
+ type: array_type
172
+ })) {
173
+ checkType = CellType.NUMBER;
174
+ }
175
+
176
+ // only support: is
177
+ if (checkType === CellType.CHECKBOX || checkType === CellType.BOOL) {
178
+ return FILTER_COLUMN_OPTIONS[CellType.CHECKBOX];
179
+ }
180
+ var filterOptions = FILTER_COLUMN_OPTIONS[checkType] || FILTER_COLUMN_OPTIONS[CellType.TEXT];
181
+ var filterPredicateList = filterOptions.filterPredicateList;
182
+ if (filterPredicateList && !filterPredicateList.includes(FILTER_PREDICATE_TYPE.EMPTY)) {
183
+ filterPredicateList.push(FILTER_PREDICATE_TYPE.EMPTY);
184
+ }
185
+ if (filterPredicateList && !filterPredicateList.includes(FILTER_PREDICATE_TYPE.NOT_EMPTY)) {
186
+ filterPredicateList.push(FILTER_PREDICATE_TYPE.NOT_EMPTY);
187
+ }
188
+ return filterOptions;
189
+ };
190
+ export var getFilterByColumn = function getFilterByColumn(column) {
191
+ var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
192
+ var columnType = column.type,
193
+ columnData = column.data;
194
+ var _getColumnOptions = getColumnOptions(column),
195
+ filterPredicateList = _getColumnOptions.filterPredicateList;
196
+ if (!filterPredicateList) return;
197
+ var filterPredicate = filterPredicateList[0];
198
+ var updatedFilter = Object.assign({}, filter, {
199
+ column_key: column.key,
200
+ filter_predicate: filterPredicate
201
+ });
202
+
203
+ // text | number | long-text | url | email
204
+ // auto-number | geolocation | duration
205
+ updatedFilter.filter_term = '';
206
+
207
+ // checkbox
208
+ if (columnType === CellType.CHECKBOX) {
209
+ updatedFilter.filter_term = false;
210
+ return updatedFilter;
211
+ }
212
+ // rate
213
+ if (columnType === CellType.RATE) {
214
+ var rate_max_number = columnData.rate_max_number;
215
+ updatedFilter.filter_term = rate_max_number;
216
+ return updatedFilter;
217
+ }
218
+ // single-select | multiple-select | collaborators | creator | last-modifier
219
+ if (isFilterTermArray(column, filterPredicate)) {
220
+ updatedFilter.filter_term = [];
221
+ return updatedFilter;
222
+ }
223
+ // date | ctime | mtime
224
+ if (isDateColumn(column)) {
225
+ var filterTermModifier = filterPredicate === FILTER_PREDICATE_TYPE.IS_WITHIN ? filterTermModifierIsWithin[0] : filterTermModifierNotWithin[0];
226
+ updatedFilter.filter_term_modifier = filterTermModifier;
227
+ updatedFilter.filter_term = '';
228
+ return updatedFilter;
229
+ }
230
+ // formula | link-formula
231
+ if (FORMULA_COLUMN_TYPES_MAP[columnType]) {
232
+ var newUpdatedFilter = getFormulaColumnFilter(column, filter);
233
+ if (newUpdatedFilter) {
234
+ updatedFilter.filter_term = newUpdatedFilter.filter_term;
235
+ }
236
+ return updatedFilter;
237
+ }
238
+ // link
239
+ if (columnType === CellType.LINK) {
240
+ var _ref5 = columnData || {},
241
+ array_type = _ref5.array_type,
242
+ array_data = _ref5.array_data;
243
+ if (array_type) {
244
+ if (array_type === FORMULA_RESULT_TYPE.BOOL) {
245
+ array_type = CellType.CHECKBOX;
246
+ }
247
+ if (array_type === FORMULA_RESULT_TYPE.STRING) {
248
+ array_type = CellType.TEXT;
249
+ }
250
+ var linkedColumn = {
251
+ key: column.key,
252
+ type: array_type,
253
+ data: array_data
254
+ };
255
+ var _newUpdatedFilter = getFilterByColumn(linkedColumn, filter) || {};
256
+ if (_newUpdatedFilter) {
257
+ updatedFilter.filter_term = _newUpdatedFilter.filter_term;
258
+ }
259
+ }
260
+ return updatedFilter;
261
+ }
262
+ return updatedFilter;
263
+ };
264
+ export var getFormulaColumnFilter = function getFormulaColumnFilter(column, filter) {
265
+ var data = column.data;
266
+ var _ref6 = data || {},
267
+ result_type = _ref6.result_type,
268
+ array_type = _ref6.array_type,
269
+ array_data = _ref6.array_data;
270
+ if (result_type === FORMULA_RESULT_TYPE.ARRAY) {
271
+ var _linkedColumn = {
272
+ key: column.key,
273
+ type: array_type,
274
+ data: array_data
275
+ };
276
+ return getFilterByColumn(_linkedColumn, filter);
277
+ }
278
+ // result_type: string | number | bool | date
279
+ if (result_type === FORMULA_RESULT_TYPE.BOOL) {
280
+ array_type = CellType.CHECKBOX;
281
+ }
282
+ if (result_type === FORMULA_RESULT_TYPE.STRING) {
283
+ array_type = CellType.TEXT;
284
+ }
285
+ var linkedColumn = {
286
+ key: column.key,
287
+ type: array_type,
288
+ data: array_data
289
+ };
290
+ return getFilterByColumn(linkedColumn, filter);
291
+ };
292
+
293
+ // file, image : not support
294
+ // text, long-text, number, single-select, date, ctime, mtime, formula, link, geolocation : string
295
+ // checkbox : boolean
296
+ // multiple-select, collaborator, creator, last modifier : array
297
+
298
+ export var getUpdatedFilterByColumn = function getUpdatedFilterByColumn(filters, filterIndex, column) {
299
+ var filter = filters[filterIndex];
300
+ if (filter.column_key === column.key) {
301
+ return;
302
+ }
303
+ return getFilterByColumn(column, filter);
304
+ };
305
+ export var getUpdatedFilterByPredicate = function getUpdatedFilterByPredicate(filter, column, filterPredicate) {
306
+ var updatedFilter = Object.assign({}, filter, {
307
+ filter_predicate: filterPredicate
308
+ });
309
+ var columnType = column.type;
310
+ if (columnType === CellType.CHECKBOX) {
311
+ updatedFilter.filter_term = false;
312
+ return updatedFilter;
313
+ }
314
+ if ([CellType.SINGLE_SELECT, CellType.DEPARTMENT_SINGLE_SELECT].includes(columnType)) {
315
+ if (ARRAY_PREDICATE[filterPredicate]) {
316
+ if (ARRAY_PREDICATE[filter.filter_predicate] !== ARRAY_PREDICATE[filterPredicate]) {
317
+ updatedFilter.filter_term = [];
318
+ }
319
+ } else if (STRING_PREDICATE[filterPredicate]) {
320
+ if (STRING_PREDICATE[filter.filter_predicate] !== STRING_PREDICATE[filterPredicate]) {
321
+ updatedFilter.filter_term = '';
322
+ }
323
+ } else {
324
+ updatedFilter.filter_term = '';
325
+ }
326
+ return updatedFilter;
327
+ }
328
+ if ([CellType.CREATOR, CellType.LAST_MODIFIER].includes(columnType)) {
329
+ if (STRING_PREDICATE[filter.filter_predicate] !== STRING_PREDICATE[filterPredicate] || filterPredicate === FILTER_PREDICATE_TYPE.INCLUDE_ME) {
330
+ updatedFilter.filter_term = [];
331
+ }
332
+ }
333
+ if (isFilterTermArray(column, filterPredicate)) {
334
+ if (DATE_EMPTY_LABEL_MAP[filterPredicate] || filterPredicate === FILTER_PREDICATE_TYPE.INCLUDE_ME) {
335
+ updatedFilter.filter_term = [];
336
+ }
337
+ return updatedFilter;
338
+ }
339
+ if (isDateColumn(column)) {
340
+ var filterTermModifier = filterPredicate === FILTER_PREDICATE_TYPE.IS_WITHIN ? filterTermModifierIsWithin[0] : filterTermModifierNotWithin[0];
341
+ updatedFilter.filter_term_modifier = filterTermModifier;
342
+ return updatedFilter;
343
+ }
344
+ return updatedFilter;
345
+ };
346
+ export var getUpdatedFilterByTermModifier = function getUpdatedFilterByTermModifier(filter, filterTermModifier) {
347
+ if (filter.filter_term_modifier === filterTermModifier) {
348
+ return;
349
+ }
350
+ return Object.assign({}, filter, {
351
+ filter_term_modifier: filterTermModifier
352
+ });
353
+ };
354
+ export var getUpdatedFilterByNormalTerm = function getUpdatedFilterByNormalTerm(filter, column, filterIndex, event) {
355
+ var filterTerm;
356
+ if (column.type === CellType.CHECKBOX) {
357
+ filterTerm = event.target.checked;
358
+ } else {
359
+ filterTerm = event.target.value;
360
+ }
361
+ if (filter.filter_term === filterTerm) {
362
+ return filter;
363
+ }
364
+ return Object.assign({}, filter, {
365
+ filter_term: filterTerm
366
+ });
367
+ };
368
+ export var getUpdatedFilterBySpecialTerm = function getUpdatedFilterBySpecialTerm(filter, type, value) {
369
+ switch (type) {
370
+ case SPECIAL_TERM_TYPE.CREATOR:
371
+ {
372
+ return getUpdatedFilterByCreator(filter, value);
373
+ }
374
+ case SPECIAL_TERM_TYPE.SINGLE_SELECT:
375
+ {
376
+ return getUpdatedFilterBySelectSingle(filter, value);
377
+ }
378
+ case SPECIAL_TERM_TYPE.MULTIPLE_SELECT:
379
+ {
380
+ return getUpdatedFilterBySelectMultiple(filter, value);
381
+ }
382
+ case SPECIAL_TERM_TYPE.COLLABORATOR:
383
+ {
384
+ return getUpdatedFilterByCollaborator(filter, value);
385
+ }
386
+ case SPECIAL_TERM_TYPE.RATE:
387
+ {
388
+ return getUpdatedFilterByRate(filter, value);
389
+ }
390
+ default:
391
+ {
392
+ return filter;
393
+ }
394
+ }
395
+ };
396
+ export var getFormulaAndLinkFilters = function getFormulaAndLinkFilters(filters, columns) {
397
+ var formulaFilters = [];
398
+ filters.forEach(function (filter) {
399
+ var filterColumn = getColumnByKey(filter.column_key, columns);
400
+ var type = filterColumn.type;
401
+ if (FORMULA_COLUMN_TYPES_MAP[type] || type === CellType.LINK) {
402
+ formulaFilters.push(filter);
403
+ }
404
+ });
405
+ return formulaFilters;
406
+ };
@@ -0,0 +1,3 @@
1
+ import FilterItemUtils from './filter-item-utils';
2
+ export { SPECIAL_TERM_TYPE, SIMPLE_TEXT_INPUT_COLUMNS_MAP, DATE_LABEL_MAP, DATE_EMPTY_LABEL_MAP, isFilterTermArray, getUpdatedFilterByCreator, getUpdatedFilterBySelectSingle, getUpdatedFilterBySelectMultiple, getUpdatedFilterByCollaborator, getUpdatedFilterByRate, getColumnOptions, getFilterByColumn, getFormulaColumnFilter, getUpdatedFilterByColumn, getUpdatedFilterByPredicate, getUpdatedFilterByTermModifier, getUpdatedFilterByNormalTerm, getUpdatedFilterBySpecialTerm, getFormulaAndLinkFilters } from './filters-utils';
3
+ export { FilterItemUtils };
@@ -0,0 +1,66 @@
1
+ import intl from '../intl';
2
+ var zhCN = require('@seafile/seafile-calendar/lib/locale/zh_CN');
3
+ var zhTW = require('@seafile/seafile-calendar/lib/locale/zh_TW');
4
+ var enUS = require('@seafile/seafile-calendar/lib/locale/en_US');
5
+ var frFR = require('@seafile/seafile-calendar/lib/locale/fr_FR');
6
+ var deDE = require('@seafile/seafile-calendar/lib/locale/de_DE');
7
+ var esES = require('@seafile/seafile-calendar/lib/locale/es_ES');
8
+ var plPL = require('@seafile/seafile-calendar/lib/locale/pl_PL');
9
+ var csCZ = require('@seafile/seafile-calendar/lib/locale/cs_CZ');
10
+ var ruRU = require('@seafile/seafile-calendar/lib/locale/ru_RU');
11
+ function translateCalendar(lang) {
12
+ var locale = lang ? lang : 'en';
13
+ var language;
14
+ switch (locale) {
15
+ case 'zh-cn':
16
+ language = zhCN;
17
+ break;
18
+ case 'zh-tw':
19
+ language = zhTW;
20
+ break;
21
+ case 'en':
22
+ language = enUS;
23
+ break;
24
+ case 'fr':
25
+ language = frFR;
26
+ break;
27
+ case 'de':
28
+ language = deDE;
29
+ break;
30
+ case 'es':
31
+ language = esES;
32
+ break;
33
+ case 'es-ar':
34
+ language = esES;
35
+ break;
36
+ case 'es-mx':
37
+ language = esES;
38
+ break;
39
+ case 'pl':
40
+ language = plPL;
41
+ break;
42
+ case 'cs':
43
+ language = csCZ;
44
+ break;
45
+ case 'ru':
46
+ language = ruRU;
47
+ break;
48
+ default:
49
+ language = enUS;
50
+ }
51
+ return language;
52
+ }
53
+ function getMobileDatePickerLocale() {
54
+ return {
55
+ DatePickerLocale: {
56
+ year: intl.get('Year'),
57
+ month: intl.get('Month'),
58
+ day: intl.get('Day'),
59
+ hour: intl.get('Hour'),
60
+ minute: intl.get('Minute')
61
+ },
62
+ okText: intl.get('Done'),
63
+ dismissText: intl.get('Cancel')
64
+ };
65
+ }
66
+ export { translateCalendar, getMobileDatePickerLocale };
@@ -0,0 +1,50 @@
1
+ import ObjectUtils from './object-utils';
2
+ import statisticColumn2SqlColumn, { summaryMethodColumn2SqlColumn } from './statistic-column-2-sql-column-utils';
3
+ import StatisticsUtils from './statistic-utils';
4
+ import { GENERIC_KEY_2_SIMILAR_KEYS } from '../constants';
5
+ export { generatorCommonOptions } from './options-utils';
6
+ export { getColumnOptions } from 'dtable-utils';
7
+ export { getClientFormulaDisplayString, getClientLinkDisplayString } from './cell-format-utils';
8
+ export { generateChartConfig } from './chart';
9
+ export { getKnownCollaboratorByEmail, getKnownCollaboratorsByEmails, generateDefaultUser } from './collaborator-utils';
10
+ export { getDateColumnFormat, isCheckboxColumn, getColumnByKey, getColumnByName, getColumnByType, getColumnByIndex, getColumnWidth, isNameColumn, isUrlColumn, getLinkColumns, calculateFormulaRows, handleCascadeColumn, isFrozen, findLastFrozenColumnIndex, isStatisticMapColumn, isStatisticWorldMapColumn, isStatisticMirrorColumn } from './column-utils';
11
+ export { SPECIAL_TERM_TYPE, SIMPLE_TEXT_INPUT_COLUMNS_MAP, DATE_LABEL_MAP, DATE_EMPTY_LABEL_MAP, isFilterTermArray, getUpdatedFilterByCreator, getUpdatedFilterBySelectSingle, getUpdatedFilterBySelectMultiple, getUpdatedFilterByCollaborator, getUpdatedFilterByRate, getFilterByColumn, getFormulaColumnFilter, getUpdatedFilterByColumn, getUpdatedFilterByPredicate, getUpdatedFilterByTermModifier, getUpdatedFilterByNormalTerm, getUpdatedFilterBySpecialTerm, getFormulaAndLinkFilters, FilterItemUtils } from './data-filter';
12
+ export { generatorKey } from './key-generator';
13
+ export { translateCalendar } from './date-translate';
14
+ export var isBoolean = function isBoolean(val) {
15
+ return typeof val === 'boolean';
16
+ };
17
+ export var getSimilarKeys = function getSimilarKeys(genericKey) {
18
+ var similarKeys = GENERIC_KEY_2_SIMILAR_KEYS[genericKey];
19
+ return similarKeys || [];
20
+ };
21
+ export var getChartConfigValueFromKeys = function getChartConfigValueFromKeys(keys, object) {
22
+ // eslint-disable-next-line
23
+ var existKey = keys.find(function (key) {
24
+ return ObjectUtils.hasOwnProperty(object, key);
25
+ });
26
+ return existKey ? object[existKey] : null;
27
+ };
28
+ export var getChartConfigValueByKey = function getChartConfigValueByKey(key, object) {
29
+ var similarKeys = getSimilarKeys(key);
30
+ if (!Array.isArray(similarKeys) || similarKeys.length === 0) {
31
+ // get value by the given 'genericKey' directly when has no similar keys.
32
+ // eslint-disable-next-line
33
+ return ObjectUtils.hasOwnProperty(object, key) ? object[key] : null;
34
+ }
35
+
36
+ // try to get value from the similar keys
37
+ return getChartConfigValueFromKeys(similarKeys, object);
38
+ };
39
+ export var eventStopPropagation = function eventStopPropagation(event) {
40
+ if (!event) return;
41
+ event.stopPropagation();
42
+ event.preventDefault && event.preventDefault();
43
+ event.nativeEvent && event.nativeEvent.stopImmediatePropagation && event.nativeEvent.stopImmediatePropagation();
44
+ };
45
+ export var getEventClassName = function getEventClassName(e) {
46
+ // svg mouseEvent event.target.className is an object
47
+ if (!e || !e.target) return '';
48
+ return e.target.getAttribute('class') || '';
49
+ };
50
+ export { ObjectUtils, statisticColumn2SqlColumn, summaryMethodColumn2SqlColumn, StatisticsUtils };
@@ -0,0 +1,13 @@
1
+ var generatorBase64Code = function generatorBase64Code() {
2
+ var keyLength = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 4;
3
+ var possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789';
4
+ var key = '';
5
+ for (var i = 0; i < keyLength; i++) {
6
+ key += possible.charAt(Math.floor(Math.random() * possible.length));
7
+ }
8
+ return key;
9
+ };
10
+ export var generatorKey = function generatorKey() {
11
+ var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 4;
12
+ return generatorBase64Code(length);
13
+ };
@@ -0,0 +1,61 @@
1
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
3
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
4
+ var ObjectUtils = /*#__PURE__*/function () {
5
+ function ObjectUtils() {
6
+ _classCallCheck(this, ObjectUtils);
7
+ }
8
+ _createClass(ObjectUtils, null, [{
9
+ key: "getDataType",
10
+ value: function getDataType(data) {
11
+ var type = typeof data;
12
+ if (type !== 'object') {
13
+ return type;
14
+ }
15
+ return Object.prototype.toString.call(data).replace(/^\[object (\S+)\]$/, '$1');
16
+ }
17
+ }, {
18
+ key: "iterable",
19
+ value: function iterable(data) {
20
+ return ['Object', 'Array'].includes(this.getDataType(data));
21
+ }
22
+ }, {
23
+ key: "isObjectChanged",
24
+ value: function isObjectChanged(source, comparison) {
25
+ var _this = this;
26
+ if (!this.iterable(source)) {
27
+ throw new Error("source should be a Object or Array , but got ".concat(this.getDataType(source)));
28
+ }
29
+ if (this.getDataType(source) !== this.getDataType(comparison)) {
30
+ return true;
31
+ }
32
+ var sourceKeys = Object.keys(source);
33
+ var comparisonKeys = Object.keys(_objectSpread(_objectSpread({}, source), comparison));
34
+ if (sourceKeys.length !== comparisonKeys.length) {
35
+ return true;
36
+ }
37
+ return comparisonKeys.some(function (key) {
38
+ if (_this.iterable(source[key])) {
39
+ return _this.isObjectChanged(source[key], comparison[key]);
40
+ } else {
41
+ return source[key] !== comparison[key];
42
+ }
43
+ });
44
+ }
45
+ }, {
46
+ key: "isSameObject",
47
+ value: function isSameObject(source, comparison) {
48
+ if (!source || !comparison) return false;
49
+ return !this.isObjectChanged(source, comparison);
50
+ }
51
+ }, {
52
+ key: "hasOwnProperty",
53
+ value: function hasOwnProperty(obj, propertyKey) {
54
+ if (!obj || !propertyKey) return false;
55
+ // eslint-disable-next-line
56
+ return Object.prototype.hasOwnProperty.call(obj, propertyKey);
57
+ }
58
+ }]);
59
+ return ObjectUtils;
60
+ }();
61
+ export default ObjectUtils;
@@ -0,0 +1,61 @@
1
+ import React from 'react';
2
+ import classnames from 'classnames';
3
+ var generatorCommonOption = function generatorCommonOption() {
4
+ var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
5
+ var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
6
+ var selectValue = arguments.length > 2 ? arguments[2] : undefined;
7
+ var type = Object.prototype.toString.call(option);
8
+ var validOption = option,
9
+ isSelectOption;
10
+ if (type !== '[object Object]') {
11
+ isSelectOption = option === selectValue;
12
+ validOption = {
13
+ name: String(option),
14
+ value: option
15
+ };
16
+ } else {
17
+ isSelectOption = option.name === selectValue;
18
+ }
19
+ var _validOption = validOption,
20
+ name = _validOption.name,
21
+ displayName = _validOption.displayName,
22
+ disabled = _validOption.disabled,
23
+ optionType = _validOption.type,
24
+ isDuplicate = _validOption.isDuplicate;
25
+ if (optionType === 'divide') {
26
+ return {
27
+ value: validOption,
28
+ key: "divide-".concat(index),
29
+ type: optionType,
30
+ name: '',
31
+ isDuplicate: false,
32
+ label: /*#__PURE__*/React.createElement("div", {
33
+ className: "select-option-divide"
34
+ })
35
+ };
36
+ }
37
+ return {
38
+ value: validOption,
39
+ key: "".concat(name, "-").concat(index),
40
+ type: optionType,
41
+ name: name,
42
+ isDuplicate: isDuplicate,
43
+ label: /*#__PURE__*/React.createElement("div", {
44
+ className: classnames('common-select-option', {
45
+ 'disabled': disabled
46
+ })
47
+ }, /*#__PURE__*/React.createElement("div", {
48
+ className: "common-select-option-icon"
49
+ }, isSelectOption && /*#__PURE__*/React.createElement("i", {
50
+ className: "dtable-font dtable-icon-check-mark"
51
+ })), /*#__PURE__*/React.createElement("div", {
52
+ className: "common-select-option-name"
53
+ }, displayName || name))
54
+ };
55
+ };
56
+ export var generatorCommonOptions = function generatorCommonOptions(options, selectValue) {
57
+ if (!Array.isArray(options)) return [];
58
+ return options.map(function (option, index) {
59
+ return generatorCommonOption(option, index, selectValue);
60
+ });
61
+ };