dtable-utils 4.2.1 → 4.2.3-beta.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.
@@ -2,7 +2,7 @@ import _defineProperty from '@babel/runtime/helpers/defineProperty';
2
2
  import { CellType } from './cell-type.js';
3
3
 
4
4
  var _COLUMNS_ICON_CONFIG, _DURATION_DECIMAL_DIG, _DURATION_ZERO_DISPLA, _NOT_SUPPORT_EDIT_COL, _MULTIPLE_CELL_VALUE_, _SINGLE_CELL_VALUE_CO;
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);
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'), _defineProperty(_COLUMNS_ICON_CONFIG, CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'), _COLUMNS_ICON_CONFIG);
6
6
  var COLUMN_OPTIONS = [{
7
7
  iconName: 'Basic',
8
8
  iconClass: '',
@@ -111,6 +111,10 @@ var COLUMN_OPTIONS = [{
111
111
  iconName: 'Digital_signature',
112
112
  iconClass: COLUMNS_ICON_CONFIG[CellType.DIGITAL_SIGN],
113
113
  type: CellType.DIGITAL_SIGN
114
+ }, {
115
+ iconName: 'Department_single_select',
116
+ iconClass: COLUMNS_ICON_CONFIG[CellType.DEPARTMENT_SINGLE_SELECT],
117
+ type: CellType.DEPARTMENT_SINGLE_SELECT
114
118
  }];
115
119
  var DATE_COLUMN_OPTIONS = [CellType.DATE, CellType.CTIME, CellType.MTIME];
116
120
  var NUMERIC_COLUMNS_TYPES = [CellType.NUMBER, CellType.DURATION, CellType.RATE];
@@ -156,15 +160,20 @@ var DURATION_ZERO_DISPLAY = (_DURATION_ZERO_DISPLA = {}, _defineProperty(_DURATI
156
160
 
157
161
  // number
158
162
  var DEFAULT_NUMBER_FORMAT = 'number';
163
+ var DEPARTMENT_SELECT_RANGE_MAP = {
164
+ CURRENT_USER_DEPARTMENT: 'current_user_department',
165
+ CURRENT_USER_DEPARTMENT_AND_SUB: 'current_user_department_and_sub',
166
+ SPECIFIC_DEPARTMENTS: 'specific_departments'
167
+ };
159
168
  var DATE_DEFAULT_TYPES = {
160
169
  SPECIFIC_DATE: 'specific_date',
161
170
  CURRENT_DATE: 'current_date',
162
171
  DAYS_BEFORE: 'days_before',
163
172
  DAYS_AFTER: 'days_after'
164
173
  };
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];
174
+ var FILL_DEFAULT_VALUE_COLUMNS_TYPE = [CellType.TEXT, CellType.NUMBER, CellType.SINGLE_SELECT, CellType.RATE, CellType.CHECKBOX, CellType.LONG_TEXT, CellType.DATE, CellType.COLLABORATOR, CellType.DEPARTMENT_SINGLE_SELECT];
166
175
  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
176
  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
177
  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);
169
178
 
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 };
179
+ 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, DEPARTMENT_SELECT_RANGE_MAP, 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 };
@@ -30,6 +30,8 @@ var FILTER_COLUMN_OPTIONS = (_FILTER_COLUMN_OPTION = {}, _defineProperty(_FILTER
30
30
  filterPredicateList: [FILTER_PREDICATE_TYPE.IS, FILTER_PREDICATE_TYPE.IS_NOT, FILTER_PREDICATE_TYPE.IS_ANY_OF, FILTER_PREDICATE_TYPE.IS_NONE_OF, FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY]
31
31
  }), _defineProperty(_FILTER_COLUMN_OPTION, CellType.MULTIPLE_SELECT, {
32
32
  filterPredicateList: [FILTER_PREDICATE_TYPE.HAS_ANY_OF, FILTER_PREDICATE_TYPE.HAS_ALL_OF, FILTER_PREDICATE_TYPE.HAS_NONE_OF, FILTER_PREDICATE_TYPE.IS_EXACTLY, FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY]
33
+ }), _defineProperty(_FILTER_COLUMN_OPTION, CellType.DEPARTMENT_SINGLE_SELECT, {
34
+ filterPredicateList: [FILTER_PREDICATE_TYPE.IS, FILTER_PREDICATE_TYPE.IS_NOT, FILTER_PREDICATE_TYPE.IS_ANY_OF, FILTER_PREDICATE_TYPE.IS_NONE_OF, FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY]
33
35
  }), _defineProperty(_FILTER_COLUMN_OPTION, CellType.COLLABORATOR, {
34
36
  filterPredicateList: [FILTER_PREDICATE_TYPE.HAS_ANY_OF, FILTER_PREDICATE_TYPE.HAS_ALL_OF, FILTER_PREDICATE_TYPE.HAS_NONE_OF, FILTER_PREDICATE_TYPE.IS_EXACTLY, FILTER_PREDICATE_TYPE.EMPTY, FILTER_PREDICATE_TYPE.NOT_EMPTY, FILTER_PREDICATE_TYPE.INCLUDE_ME]
35
37
  }), _defineProperty(_FILTER_COLUMN_OPTION, CellType.CREATOR, {
@@ -0,0 +1,87 @@
1
+ import { DEPARTMENT_SELECT_RANGE_MAP } from '../../constants/column.js';
2
+ import { FILTER_PREDICATE_TYPE } from '../../constants/filter/filter-predicate.js';
3
+
4
+ var isCurrentUserDepartment = function isCurrentUserDepartment(id, userDepartmentIdsMap) {
5
+ var currentUserDepartmentIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_ids;
6
+ if (!Array.isArray(currentUserDepartmentIds)) return false;
7
+ return currentUserDepartmentIds.includes(id);
8
+ };
9
+ var isCurrentUserDepartmentAndSub = function isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) {
10
+ var currentUserDepartmentAndSubIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_and_sub_ids;
11
+ if (!Array.isArray(currentUserDepartmentAndSubIds)) return false;
12
+ return currentUserDepartmentAndSubIds.includes(id);
13
+ };
14
+
15
+ /**
16
+ * Filter department-single-select
17
+ * @param {number} departmentId
18
+ * @param {string} filter_predicate
19
+ * @param {number|array} filter_term department id or department ids
20
+ * @param {object} userDepartmentIdsMap
21
+ * @returns bool
22
+ */
23
+ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departmentId, _ref, userDepartmentIdsMap) {
24
+ var filter_predicate = _ref.filter_predicate,
25
+ filter_term = _ref.filter_term;
26
+ if (departmentId === 0) return false;
27
+ switch (filter_predicate) {
28
+ case FILTER_PREDICATE_TYPE.IS:
29
+ {
30
+ if (!filter_term) return true;
31
+ if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
32
+ return isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
33
+ }
34
+ if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
35
+ return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
36
+ }
37
+ return departmentId === filter_term;
38
+ }
39
+ case FILTER_PREDICATE_TYPE.IS_NOT:
40
+ {
41
+ if (!filter_term) return true;
42
+ if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
43
+ return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
44
+ }
45
+ if (filter_term === DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
46
+ return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
47
+ }
48
+ return departmentId !== filter_term;
49
+ }
50
+ case FILTER_PREDICATE_TYPE.IS_ANY_OF:
51
+ {
52
+ if (filter_term.length === 0) return true;
53
+ if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
54
+ return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || filter_term.includes(departmentId);
55
+ }
56
+ if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
57
+ return isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || filter_term.includes(departmentId);
58
+ }
59
+ return filter_term.includes(departmentId);
60
+ }
61
+ case FILTER_PREDICATE_TYPE.IS_NONE_OF:
62
+ {
63
+ if (filter_term.length === 0) return true;
64
+ if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
65
+ return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !filter_term.includes(departmentId);
66
+ }
67
+ if (filter_term.includes(DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
68
+ return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !filter_term.includes(departmentId);
69
+ }
70
+ return !filter_term.includes(departmentId);
71
+ }
72
+ case FILTER_PREDICATE_TYPE.EMPTY:
73
+ {
74
+ return !departmentId || typeof departmentId !== 'number';
75
+ }
76
+ case FILTER_PREDICATE_TYPE.NOT_EMPTY:
77
+ {
78
+ return !!(departmentId && typeof departmentId === 'number');
79
+ }
80
+ default:
81
+ {
82
+ return false;
83
+ }
84
+ }
85
+ };
86
+
87
+ export { departmentSingleSelectFilter };
@@ -13,6 +13,7 @@ import { multipleSelectFilter } from './filter-column/multiple-select.js';
13
13
  import { numberFilter } from './filter-column/number.js';
14
14
  import { singleSelectFilter } from './filter-column/single-select.js';
15
15
  import { linkFilter } from './filter-column/link.js';
16
+ import { departmentSingleSelectFilter } from './filter-column/department-single-select.js';
16
17
  import { FILTER_CONJUNCTION_TYPE } from '../constants/filter/index.js';
17
18
  import { DateUtils } from '../date.js';
18
19
  import { CellType } from '../constants/cell-type.js';
@@ -21,7 +22,8 @@ import { DATE_FORMAT_MAP } from '../constants/column.js';
21
22
  var getFilterResult = function getFilterResult(row, filter, _ref) {
22
23
  var formulaRow = _ref.formulaRow,
23
24
  username = _ref.username,
24
- userId = _ref.userId;
25
+ userId = _ref.userId,
26
+ userDepartmentIdsMap = _ref.userDepartmentIdsMap;
25
27
  var column_key = filter.column_key,
26
28
  column = filter.column;
27
29
  var cellValue = row[column_key];
@@ -38,6 +40,10 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
38
40
  {
39
41
  return multipleSelectFilter(cellValue, filter);
40
42
  }
43
+ case CellType.DEPARTMENT_SINGLE_SELECT:
44
+ {
45
+ return departmentSingleSelectFilter(cellValue, filter, userDepartmentIdsMap);
46
+ }
41
47
  case CellType.DURATION:
42
48
  case CellType.NUMBER:
43
49
  case CellType.RATE:
@@ -122,6 +128,7 @@ var getFilterResult = function getFilterResult(row, filter, _ref) {
122
128
  * @param {object} formulaRow
123
129
  * @param {string} username
124
130
  * @param {string} userId
131
+ * @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
125
132
  * @returns filter result, bool
126
133
  */
127
134
  var filterRow = function filterRow(row, filterConjunction, filters) {
@@ -130,13 +137,16 @@ var filterRow = function filterRow(row, filterConjunction, filters) {
130
137
  formulaRow = _ref2$formulaRow === void 0 ? {} : _ref2$formulaRow,
131
138
  _ref2$username = _ref2.username,
132
139
  username = _ref2$username === void 0 ? '' : _ref2$username,
133
- userId = _ref2.userId;
140
+ userId = _ref2.userId,
141
+ _ref2$userDepartmentI = _ref2.userDepartmentIdsMap,
142
+ userDepartmentIdsMap = _ref2$userDepartmentI === void 0 ? {} : _ref2$userDepartmentI;
134
143
  if (filterConjunction === FILTER_CONJUNCTION_TYPE.AND) {
135
144
  return filters.every(function (filter) {
136
145
  return getFilterResult(row, filter, {
137
146
  formulaRow: formulaRow,
138
147
  username: username,
139
- userId: userId
148
+ userId: userId,
149
+ userDepartmentIdsMap: userDepartmentIdsMap
140
150
  });
141
151
  });
142
152
  }
@@ -145,7 +155,8 @@ var filterRow = function filterRow(row, filterConjunction, filters) {
145
155
  return getFilterResult(row, filter, {
146
156
  formulaRow: formulaRow,
147
157
  username: username,
148
- userId: userId
158
+ userId: userId,
159
+ userDepartmentIdsMap: userDepartmentIdsMap
149
160
  });
150
161
  });
151
162
  }
@@ -159,13 +170,15 @@ var filterRow = function filterRow(row, filterConjunction, filters) {
159
170
  * @param {array} rows e.g. [{ _id, .... }, ...]
160
171
  * @param {object} formulaRows
161
172
  * @param {string} username
162
- * @param {userId} username
173
+ * @param {string} userId
174
+ * @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
163
175
  * @returns filtered rows ids, array
164
176
  */
165
177
  var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
166
178
  var formulaRows = _ref3.formulaRows,
167
179
  username = _ref3.username,
168
- userId = _ref3.userId;
180
+ userId = _ref3.userId,
181
+ userDepartmentIdsMap = _ref3.userDepartmentIdsMap;
169
182
  var filteredRows = [];
170
183
  var formattedFilters = getFormattedFilters(filters);
171
184
  rows.forEach(function (row) {
@@ -174,7 +187,8 @@ var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
174
187
  if (filterRow(row, filterConjunction, formattedFilters, {
175
188
  formulaRow: formulaRow,
176
189
  username: username,
177
- userId: userId
190
+ userId: userId,
191
+ userDepartmentIdsMap: userDepartmentIdsMap
178
192
  })) {
179
193
  filteredRows.push(rowId);
180
194
  }
@@ -191,7 +205,8 @@ var filterRows = function filterRows(filterConjunction, filters, rows, _ref3) {
191
205
  * @param {object} table e.g. { columns, ... }
192
206
  * @param {object} formulaRows
193
207
  * @param {string} username
194
- * @param {userId} username
208
+ * @param {string} userId
209
+ * @param {object} userDepartmentIdsMap e.g. { current_user_department_ids: [8, 10], current_user_department_and_sub_ids: [8, 10, 12, 34] }
195
210
  * @returns filtered rows: row_ids and error message: error_message, object
196
211
  */
197
212
  var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFormulaCalculation(filterConjunction, filters, rows, table) {
@@ -201,7 +216,9 @@ var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFo
201
216
  _ref4$username = _ref4.username,
202
217
  username = _ref4$username === void 0 ? null : _ref4$username,
203
218
  _ref4$userId = _ref4.userId,
204
- userId = _ref4$userId === void 0 ? null : _ref4$userId;
219
+ userId = _ref4$userId === void 0 ? null : _ref4$userId,
220
+ _ref4$userDepartmentI = _ref4.userDepartmentIdsMap,
221
+ userDepartmentIdsMap = _ref4$userDepartmentI === void 0 ? null : _ref4$userDepartmentI;
205
222
  var columns = table.columns;
206
223
  var validFilters = [];
207
224
  try {
@@ -221,7 +238,8 @@ var getFilteredRowsWithoutFormulaCalculation = function getFilteredRowsWithoutFo
221
238
  filteredRows = filterRows(filterConjunction, validFilters, rows, {
222
239
  formulaRows: formulaRows,
223
240
  username: username,
224
- userId: userId
241
+ userId: userId,
242
+ userDepartmentIdsMap: userDepartmentIdsMap
225
243
  });
226
244
  }
227
245
  return {
package/es/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { CellType } from './constants/cell-type.js';
2
- 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 } from './constants/column.js';
2
+ 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, DEPARTMENT_SELECT_RANGE_MAP, 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 } from './constants/column.js';
3
3
  export { FILTER_CONJUNCTION_TYPE, FILTER_ERR_MSG } from './constants/filter/index.js';
4
4
  export { DISPLAY_INTERNAL_ERRORS, FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE } from './constants/formula.js';
5
5
  export { HIGHLIGHT_COLORS, SELECT_OPTION_COLORS } from './constants/select-option.js';
@@ -25,6 +25,7 @@ export { getNumberDisplayString, getPrecisionNumber, replaceNumberNotAllowInput
25
25
  export { getColumnOptionNameById, getMultipleOptionName, getOption, getOptionName } from './cell-value-get/option.js';
26
26
  export { getCollaborator, getCollaboratorsName, getCollaboratorsNames } from './cell-value-get/collaborator.js';
27
27
  export { getGeolocationByGranularity, getGeolocationDisplayString } from './cell-value-get/geolocation.js';
28
+ export { getDepartmentName } from './cell-value-get/department.js';
28
29
  export { getDigitalSignImageUrl } from './cell-value-get/digital-sign.js';
29
30
  export { getLongtextDisplayString } from './cell-value-get/long-text.js';
30
31
  export { getCellValueDisplayString, getCellValueStringResult, getFormulaDisplayString } from './cell-value-get/cell-value.js';
@@ -54,6 +55,7 @@ export { multipleSelectFilter } from './filter/filter-column/multiple-select.js'
54
55
  export { numberFilter } from './filter/filter-column/number.js';
55
56
  export { singleSelectFilter } from './filter/filter-column/single-select.js';
56
57
  export { linkFilter } from './filter/filter-column/link.js';
58
+ export { FILTER_PREDICATE_SHOW, FILTER_PREDICATE_TYPE } from './constants/filter/filter-predicate.js';
57
59
  export { filterRow, filterRows, getFilteredRowsWithoutFormulaCalculation } from './filter/filter-row.js';
58
60
  export { deleteInvalidSort, getMultipleIndexesOrderbyOptions, getValidSorts, isValidSort } from './sort/core.js';
59
61
  export { sortCheckbox } from './sort/sort-column/checkbox.js';
@@ -74,5 +76,4 @@ export { default as ColumnColorUtils } from './color/column-color.js';
74
76
  export { default as RowColorUtils } from './color/row-color.js';
75
77
  export { FILTER_COLUMN_OPTIONS } from './constants/filter/filter-column-options.js';
76
78
  export { FILTER_TERM_MODIFIER_SHOW, FILTER_TERM_MODIFIER_TYPE } from './constants/filter/filter-modifier.js';
77
- export { FILTER_PREDICATE_SHOW, FILTER_PREDICATE_TYPE } from './constants/filter/filter-predicate.js';
78
79
  export { filterTermModifierIsWithin, filterTermModifierNotWithin } from './constants/filter/filter-is-within.js';
@@ -2,7 +2,7 @@ import _typeof from '@babel/runtime/helpers/typeof';
2
2
  import _classCallCheck from '@babel/runtime/helpers/classCallCheck';
3
3
  import _createClass from '@babel/runtime/helpers/createClass';
4
4
  import { CellType } from '../constants/cell-type.js';
5
- import { COLLABORATOR_COLUMN_TYPES } from '../constants/column.js';
5
+ import { COLLABORATOR_COLUMN_TYPES, DEPARTMENT_SELECT_RANGE_MAP } from '../constants/column.js';
6
6
  import { FORMULA_COLUMN_TYPES_MAP, FORMULA_RESULT_TYPE } from '../constants/formula.js';
7
7
  import { FILTER_ERR_MSG } from '../constants/filter/index.js';
8
8
  import { getColumnOptions } from '../column/option.js';
@@ -344,6 +344,16 @@ var ValidateFilter = /*#__PURE__*/function () {
344
344
  {
345
345
  return this.isValidTermType(term, TERM_TYPE_MAP.ARRAY);
346
346
  }
347
+ case CellType.DEPARTMENT_SINGLE_SELECT:
348
+ {
349
+ if (PREDICATES_REQUIRE_ARRAY_TERM.includes(predicate)) {
350
+ return this.isValidTermType(term, TERM_TYPE_MAP.ARRAY);
351
+ }
352
+ if ([DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT, DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB].includes(term)) {
353
+ return true;
354
+ }
355
+ return this.isValidTermType(term, TERM_TYPE_MAP.NUMBER);
356
+ }
347
357
  case CellType.MULTIPLE_SELECT:
348
358
  {
349
359
  if (!this.isValidTermType(term, TERM_TYPE_MAP.ARRAY)) {
@@ -12,6 +12,7 @@ var geolocation = require('./geolocation.js');
12
12
  var longText = require('./long-text.js');
13
13
  var number = require('./number.js');
14
14
  var option = require('./option.js');
15
+ var department = require('./department.js');
15
16
  var cellType = require('../constants/cell-type.js');
16
17
  var column = require('../constants/column.js');
17
18
  var formula = require('../constants/formula.js');
@@ -137,6 +138,7 @@ var getFormulaDisplayString = function getFormulaDisplayString(cellValue, column
137
138
  * @param {object} data column data
138
139
  * @param {object} formulaRows formula results of rows. Default as "{}"
139
140
  * @param {array} collaborators e.g. [{ email, name, ... }, ...]. Default as "[]"
141
+ * @param {array} departments e.g. [{ name, id }, ...]. Default as "[]"
140
142
  * @param {bool} isBaiduMap Determine the way to connect latitude and longitude. Default as true
141
143
  * @param {string} geolocationHyphen Used as a connector between province, city, district and detail. Default as empty string
142
144
  * @returns formatted cell value, string|array
@@ -148,6 +150,8 @@ var getCellValueDisplayString = function getCellValueDisplayString(row, type, ke
148
150
  formulaRows = _ref2$formulaRows === void 0 ? {} : _ref2$formulaRows,
149
151
  _ref2$collaborators = _ref2.collaborators,
150
152
  collaborators = _ref2$collaborators === void 0 ? [] : _ref2$collaborators,
153
+ _ref2$departments = _ref2.departments,
154
+ departments = _ref2$departments === void 0 ? [] : _ref2$departments,
151
155
  _ref2$isBaiduMap = _ref2.isBaiduMap,
152
156
  isBaiduMap = _ref2$isBaiduMap === void 0 ? true : _ref2$isBaiduMap,
153
157
  _ref2$geolocationHyph = _ref2.geolocationHyphen,
@@ -202,6 +206,10 @@ var getCellValueDisplayString = function getCellValueDisplayString(row, type, ke
202
206
  {
203
207
  return collaborator.getCollaboratorsName(collaborators, cellValue);
204
208
  }
209
+ case cellType.CellType.DEPARTMENT_SINGLE_SELECT:
210
+ {
211
+ return department.getDepartmentName(departments, cellValue);
212
+ }
205
213
  case cellType.CellType.CREATOR:
206
214
  case cellType.CellType.LAST_MODIFIER:
207
215
  {
@@ -320,6 +328,10 @@ var getCellValueStringResult = function getCellValueStringResult(row, column$1)
320
328
  {
321
329
  return collaborator.getCollaboratorsName(collaborators, cellValue);
322
330
  }
331
+ case cellType.CellType.DEPARTMENT_SINGLE_SELECT:
332
+ {
333
+ return department.getDepartmentName(departments, cellValue);
334
+ }
323
335
  case cellType.CellType.CREATOR:
324
336
  case cellType.CellType.LAST_MODIFIER:
325
337
  {
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ /**
6
+ * Get concatenated department name of given department's id.
7
+ * @param {array} departments e.g. [{ name: 'xxx', id: 'xxx' }, ...]
8
+ * @param {array} id e.g. '8'
9
+ * @returns concatenated department name, string. e.g. '部门1'
10
+ */
11
+ var getDepartmentName = function getDepartmentName(departments, id) {
12
+ if (!id || !departments || departments.length === 0) return '';
13
+ var department = departments.find(function (department) {
14
+ return department.id === id;
15
+ });
16
+ if (!department) return '';
17
+ return department.name || '';
18
+ };
19
+
20
+ exports.getDepartmentName = getDepartmentName;
@@ -150,7 +150,8 @@ var getRowsColorBySingleSelectColumn = function getRowsColorBySingleSelectColumn
150
150
  var getRowsColorByRules = function getRowsColorByRules(rows, view, table) {
151
151
  var _ref2 = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
152
152
  username = _ref2.username,
153
- userId = _ref2.userId;
153
+ userId = _ref2.userId,
154
+ userDepartmentIdsMap = _ref2.userDepartmentIdsMap;
154
155
  var formula_rows = view.formula_rows,
155
156
  colorbys = view.colorbys;
156
157
  var _ref3 = colorbys || {},
@@ -186,7 +187,8 @@ var getRowsColorByRules = function getRowsColorByRules(rows, view, table) {
186
187
  if (filterRow.filterRow(row, filter_conjunction, filters, {
187
188
  formulaRow: formulaRow,
188
189
  username: username,
189
- userId: userId
190
+ userId: userId,
191
+ userDepartmentIdsMap: userDepartmentIdsMap
190
192
  })) {
191
193
  colors[rowId] = color;
192
194
  break;
@@ -239,13 +241,15 @@ var getRowsColorByDuplicateValues = function getRowsColorByDuplicateValues(rows,
239
241
  * @param {object} table e.g. { id_row_map, ... }
240
242
  * @param {object} value e.g. { tables, collaborators, ... }
241
243
  * @param {string} username
242
- * @param {userId} username
244
+ * @param {string} userId
245
+ * @param {object} userDepartmentIdsMap
243
246
  * @returns rows color, object
244
247
  */
245
248
  var getRowsColor = function getRowsColor(rows, view, table, value) {
246
249
  var _ref5 = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {},
247
250
  username = _ref5.username,
248
- userId = _ref5.userId;
251
+ userId = _ref5.userId,
252
+ userDepartmentIdsMap = _ref5.userDepartmentIdsMap;
249
253
  var colorbys = view.colorbys;
250
254
  if (!colorbys) return {};
251
255
  var tableRows = core$1.isTableRows(rows) ? rows : row.getRowsByIds(table, rows);
@@ -264,7 +268,8 @@ var getRowsColor = function getRowsColor(rows, view, table, value) {
264
268
  return {
265
269
  colors: getRowsColorByRules(tableRows, view, table, {
266
270
  username: username,
267
- userId: userId
271
+ userId: userId,
272
+ userDepartmentIdsMap: userDepartmentIdsMap
268
273
  })
269
274
  };
270
275
  }
@@ -29,6 +29,7 @@ var CellType = {
29
29
  BUTTON: 'button',
30
30
  RATE: 'rate',
31
31
  DIGITAL_SIGN: 'digital-sign',
32
+ DEPARTMENT_SINGLE_SELECT: 'department-single-select',
32
33
  // formula | link-formula column calculate result type
33
34
  BOOL: 'bool',
34
35
  STRING: 'string'
@@ -10,7 +10,7 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
10
10
  var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
11
11
 
12
12
  var _COLUMNS_ICON_CONFIG, _DURATION_DECIMAL_DIG, _DURATION_ZERO_DISPLA, _NOT_SUPPORT_EDIT_COL, _MULTIPLE_CELL_VALUE_, _SINGLE_CELL_VALUE_CO;
13
- var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.NUMBER, 'dtable-font dtable-icon-number'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.IMAGE, 'dtable-font dtable-icon-picture'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LINK, 'dtable-font dtable-icon-link-other-record'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.FORMULA, 'dtable-font dtable-icon-formula'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CREATOR, 'dtable-font dtable-icon-creator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.MTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.URL, 'dtable-font dtable-icon-url'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.EMAIL, 'dtable-font dtable-icon-email'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DURATION, 'dtable-font dtable-icon-duration'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.BUTTON, 'dtable-font dtable-icon-button'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.RATE, 'dtable-font dtable-icon-rate'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), _COLUMNS_ICON_CONFIG);
13
+ var COLUMNS_ICON_CONFIG = (_COLUMNS_ICON_CONFIG = {}, _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DEFAULT, 'dtable-font dtable-icon-single-line-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.TEXT, 'dtable-font dtable-icon-single-line-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.NUMBER, 'dtable-font dtable-icon-number'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CHECKBOX, 'dtable-font dtable-icon-check-square-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DATE, 'dtable-font dtable-icon-calendar-alt-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.SINGLE_SELECT, 'dtable-font dtable-icon-single-election'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LONG_TEXT, 'dtable-font dtable-icon-long-text'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.IMAGE, 'dtable-font dtable-icon-picture'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.FILE, 'dtable-font dtable-icon-file-alt-solid'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.MULTIPLE_SELECT, 'dtable-font dtable-icon-multiple-selection'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.COLLABORATOR, 'dtable-font dtable-icon-collaborator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LINK, 'dtable-font dtable-icon-link-other-record'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.FORMULA, 'dtable-font dtable-icon-formula'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LINK_FORMULA, 'dtable-font dtable-icon-link-formulas'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CREATOR, 'dtable-font dtable-icon-creator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.CTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.LAST_MODIFIER, 'dtable-font dtable-icon-creator'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.MTIME, 'dtable-font dtable-icon-creation-time'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.GEOLOCATION, 'dtable-font dtable-icon-location'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.AUTO_NUMBER, 'dtable-font dtable-icon-autonumber'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.URL, 'dtable-font dtable-icon-url'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.EMAIL, 'dtable-font dtable-icon-email'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DURATION, 'dtable-font dtable-icon-duration'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.BUTTON, 'dtable-font dtable-icon-button'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.RATE, 'dtable-font dtable-icon-rate'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DIGITAL_SIGN, 'dtable-font dtable-icon-handwritten-signature'), _defineProperty__default["default"](_COLUMNS_ICON_CONFIG, cellType.CellType.DEPARTMENT_SINGLE_SELECT, 'dtable-font dtable-icon-department-single-selection'), _COLUMNS_ICON_CONFIG);
14
14
  var COLUMN_OPTIONS = [{
15
15
  iconName: 'Basic',
16
16
  iconClass: '',
@@ -119,6 +119,10 @@ var COLUMN_OPTIONS = [{
119
119
  iconName: 'Digital_signature',
120
120
  iconClass: COLUMNS_ICON_CONFIG[cellType.CellType.DIGITAL_SIGN],
121
121
  type: cellType.CellType.DIGITAL_SIGN
122
+ }, {
123
+ iconName: 'Department_single_select',
124
+ iconClass: COLUMNS_ICON_CONFIG[cellType.CellType.DEPARTMENT_SINGLE_SELECT],
125
+ type: cellType.CellType.DEPARTMENT_SINGLE_SELECT
122
126
  }];
123
127
  var DATE_COLUMN_OPTIONS = [cellType.CellType.DATE, cellType.CellType.CTIME, cellType.CellType.MTIME];
124
128
  var NUMERIC_COLUMNS_TYPES = [cellType.CellType.NUMBER, cellType.CellType.DURATION, cellType.CellType.RATE];
@@ -164,13 +168,18 @@ var DURATION_ZERO_DISPLAY = (_DURATION_ZERO_DISPLA = {}, _defineProperty__defaul
164
168
 
165
169
  // number
166
170
  var DEFAULT_NUMBER_FORMAT = 'number';
171
+ var DEPARTMENT_SELECT_RANGE_MAP = {
172
+ CURRENT_USER_DEPARTMENT: 'current_user_department',
173
+ CURRENT_USER_DEPARTMENT_AND_SUB: 'current_user_department_and_sub',
174
+ SPECIFIC_DEPARTMENTS: 'specific_departments'
175
+ };
167
176
  var DATE_DEFAULT_TYPES = {
168
177
  SPECIFIC_DATE: 'specific_date',
169
178
  CURRENT_DATE: 'current_date',
170
179
  DAYS_BEFORE: 'days_before',
171
180
  DAYS_AFTER: 'days_after'
172
181
  };
173
- var FILL_DEFAULT_VALUE_COLUMNS_TYPE = [cellType.CellType.TEXT, cellType.CellType.NUMBER, cellType.CellType.SINGLE_SELECT, cellType.CellType.RATE, cellType.CellType.CHECKBOX, cellType.CellType.LONG_TEXT, cellType.CellType.DATE, cellType.CellType.COLLABORATOR];
182
+ var FILL_DEFAULT_VALUE_COLUMNS_TYPE = [cellType.CellType.TEXT, cellType.CellType.NUMBER, cellType.CellType.SINGLE_SELECT, cellType.CellType.RATE, cellType.CellType.CHECKBOX, cellType.CellType.LONG_TEXT, cellType.CellType.DATE, cellType.CellType.COLLABORATOR, cellType.CellType.DEPARTMENT_SINGLE_SELECT];
174
183
  var NOT_SUPPORT_EDIT_COLUMN_TYPE_MAP = (_NOT_SUPPORT_EDIT_COL = {}, _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.CTIME, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.MTIME, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.CREATOR, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.LAST_MODIFIER, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.FORMULA, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.AUTO_NUMBER, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.BUTTON, true), _defineProperty__default["default"](_NOT_SUPPORT_EDIT_COL, cellType.CellType.LINK_FORMULA, true), _NOT_SUPPORT_EDIT_COL);
175
184
  var MULTIPLE_CELL_VALUE_COLUMN_TYPE_MAP = (_MULTIPLE_CELL_VALUE_ = {}, _defineProperty__default["default"](_MULTIPLE_CELL_VALUE_, cellType.CellType.MULTIPLE_SELECT, true), _defineProperty__default["default"](_MULTIPLE_CELL_VALUE_, cellType.CellType.COLLABORATOR, true), _defineProperty__default["default"](_MULTIPLE_CELL_VALUE_, cellType.CellType.LINK, true), _MULTIPLE_CELL_VALUE_);
176
185
  var SINGLE_CELL_VALUE_COLUMN_TYPE_MAP = (_SINGLE_CELL_VALUE_CO = {}, _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.TEXT, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.DATE, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.CTIME, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.MTIME, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.NUMBER, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.CHECKBOX, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.SINGLE_SELECT, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.CREATOR, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.GEOLOCATION, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.FORMULA, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.LINK_FORMULA, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.URL, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.EMAIL, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.DURATION, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.RATE, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.LAST_MODIFIER, true), _defineProperty__default["default"](_SINGLE_CELL_VALUE_CO, cellType.CellType.DIGITAL_SIGN, true), _SINGLE_CELL_VALUE_CO);
@@ -184,6 +193,7 @@ exports.DATE_FORMAT_MAP = DATE_FORMAT_MAP;
184
193
  exports.DATE_UNIT = DATE_UNIT;
185
194
  exports.DEFAULT_DATE_FORMAT = DEFAULT_DATE_FORMAT;
186
195
  exports.DEFAULT_NUMBER_FORMAT = DEFAULT_NUMBER_FORMAT;
196
+ exports.DEPARTMENT_SELECT_RANGE_MAP = DEPARTMENT_SELECT_RANGE_MAP;
187
197
  exports.DURATION_DECIMAL_DIGITS = DURATION_DECIMAL_DIGITS;
188
198
  exports.DURATION_FORMATS = DURATION_FORMATS;
189
199
  exports.DURATION_FORMATS_MAP = DURATION_FORMATS_MAP;
@@ -38,6 +38,8 @@ var FILTER_COLUMN_OPTIONS = (_FILTER_COLUMN_OPTION = {}, _defineProperty__defaul
38
38
  filterPredicateList: [filterPredicate.FILTER_PREDICATE_TYPE.IS, filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT, filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF, filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF, filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY]
39
39
  }), _defineProperty__default["default"](_FILTER_COLUMN_OPTION, cellType.CellType.MULTIPLE_SELECT, {
40
40
  filterPredicateList: [filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF, filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF, filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF, filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY, filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY]
41
+ }), _defineProperty__default["default"](_FILTER_COLUMN_OPTION, cellType.CellType.DEPARTMENT_SINGLE_SELECT, {
42
+ filterPredicateList: [filterPredicate.FILTER_PREDICATE_TYPE.IS, filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT, filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF, filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF, filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY]
41
43
  }), _defineProperty__default["default"](_FILTER_COLUMN_OPTION, cellType.CellType.COLLABORATOR, {
42
44
  filterPredicateList: [filterPredicate.FILTER_PREDICATE_TYPE.HAS_ANY_OF, filterPredicate.FILTER_PREDICATE_TYPE.HAS_ALL_OF, filterPredicate.FILTER_PREDICATE_TYPE.HAS_NONE_OF, filterPredicate.FILTER_PREDICATE_TYPE.IS_EXACTLY, filterPredicate.FILTER_PREDICATE_TYPE.EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY, filterPredicate.FILTER_PREDICATE_TYPE.INCLUDE_ME]
43
45
  }), _defineProperty__default["default"](_FILTER_COLUMN_OPTION, cellType.CellType.CREATOR, {
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var column = require('../../constants/column.js');
6
+ var filterPredicate = require('../../constants/filter/filter-predicate.js');
7
+
8
+ var isCurrentUserDepartment = function isCurrentUserDepartment(id, userDepartmentIdsMap) {
9
+ var currentUserDepartmentIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_ids;
10
+ if (!Array.isArray(currentUserDepartmentIds)) return false;
11
+ return currentUserDepartmentIds.includes(id);
12
+ };
13
+ var isCurrentUserDepartmentAndSub = function isCurrentUserDepartmentAndSub(id, userDepartmentIdsMap) {
14
+ var currentUserDepartmentAndSubIds = userDepartmentIdsMap && userDepartmentIdsMap.current_user_department_and_sub_ids;
15
+ if (!Array.isArray(currentUserDepartmentAndSubIds)) return false;
16
+ return currentUserDepartmentAndSubIds.includes(id);
17
+ };
18
+
19
+ /**
20
+ * Filter department-single-select
21
+ * @param {number} departmentId
22
+ * @param {string} filter_predicate
23
+ * @param {number|array} filter_term department id or department ids
24
+ * @param {object} userDepartmentIdsMap
25
+ * @returns bool
26
+ */
27
+ var departmentSingleSelectFilter = function departmentSingleSelectFilter(departmentId, _ref, userDepartmentIdsMap) {
28
+ var filter_predicate = _ref.filter_predicate,
29
+ filter_term = _ref.filter_term;
30
+ if (departmentId === 0) return false;
31
+ switch (filter_predicate) {
32
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS:
33
+ {
34
+ if (!filter_term) return true;
35
+ if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
36
+ return isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
37
+ }
38
+ if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
39
+ return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
40
+ }
41
+ return departmentId === filter_term;
42
+ }
43
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NOT:
44
+ {
45
+ if (!filter_term) return true;
46
+ if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT) {
47
+ return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap);
48
+ }
49
+ if (filter_term === column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB) {
50
+ return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap);
51
+ }
52
+ return departmentId !== filter_term;
53
+ }
54
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_ANY_OF:
55
+ {
56
+ if (filter_term.length === 0) return true;
57
+ if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
58
+ return isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) || filter_term.includes(departmentId);
59
+ }
60
+ if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
61
+ return isCurrentUserDepartment(departmentId, userDepartmentIdsMap) || filter_term.includes(departmentId);
62
+ }
63
+ return filter_term.includes(departmentId);
64
+ }
65
+ case filterPredicate.FILTER_PREDICATE_TYPE.IS_NONE_OF:
66
+ {
67
+ if (filter_term.length === 0) return true;
68
+ if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT_AND_SUB)) {
69
+ return !isCurrentUserDepartmentAndSub(departmentId, userDepartmentIdsMap) && !filter_term.includes(departmentId);
70
+ }
71
+ if (filter_term.includes(column.DEPARTMENT_SELECT_RANGE_MAP.CURRENT_USER_DEPARTMENT)) {
72
+ return !isCurrentUserDepartment(departmentId, userDepartmentIdsMap) && !filter_term.includes(departmentId);
73
+ }
74
+ return !filter_term.includes(departmentId);
75
+ }
76
+ case filterPredicate.FILTER_PREDICATE_TYPE.EMPTY:
77
+ {
78
+ return !departmentId || typeof departmentId !== 'number';
79
+ }
80
+ case filterPredicate.FILTER_PREDICATE_TYPE.NOT_EMPTY:
81
+ {
82
+ return !!(departmentId && typeof departmentId === 'number');
83
+ }
84
+ default:
85
+ {
86
+ return false;
87
+ }
88
+ }
89
+ };
90
+
91
+ exports.departmentSingleSelectFilter = departmentSingleSelectFilter;