@zeniai/client-epic-state 4.11.72 → 4.11.73

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 (24) hide show
  1. package/lib/entity/task/taskState.d.ts +1 -1
  2. package/lib/entity/task/taskState.js +4 -4
  3. package/lib/index.d.ts +6 -5
  4. package/lib/index.js +15 -2
  5. package/lib/view/companyHealthMetricView/companyHealthMetricViewSelector.d.ts +1 -1
  6. package/lib/view/settingsView/settingsViewSelector.js +4 -2
  7. package/lib/view/spendManagement/chargeCards/chargeCardList/chargeCardListSelector.js +2 -2
  8. package/lib/view/taskManager/taskDetailView/epics/saveTaskDetailEpic.js +1 -1
  9. package/lib/view/taskManager/taskDetailView/taskDetailSelector.js +2 -2
  10. package/lib/view/taskManager/taskGroupView/epics/createNewTaskGroupEpic.js +4 -2
  11. package/lib/view/taskManager/taskListView/bulkUpdateTaskListEpic.js +2 -5
  12. package/lib/view/taskManager/taskListView/dragNDropTasksEpic.d.ts +1 -1
  13. package/lib/view/taskManager/taskListView/dragNDropTasksEpic.js +6 -2
  14. package/lib/view/taskManager/taskListView/taskList.d.ts +20 -1
  15. package/lib/view/taskManager/taskListView/taskList.js +34 -1
  16. package/lib/view/taskManager/taskListView/taskListReducer.d.ts +5 -5
  17. package/lib/view/taskManager/taskListView/taskListReducer.js +250 -31
  18. package/lib/view/taskManager/taskListView/taskListSelector.d.ts +36 -5
  19. package/lib/view/taskManager/taskListView/taskListSelector.js +260 -35
  20. package/lib/view/taskManager/taskListView/taskListViewHelpers.d.ts +5 -0
  21. package/lib/view/taskManager/taskListView/taskListViewHelpers.js +55 -0
  22. package/lib/view/userListView/userListViewSelector.d.ts +4 -3
  23. package/lib/view/userListView/userListViewSelector.js +1 -2
  24. package/package.json +1 -1
@@ -3,21 +3,25 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAllTasks = void 0;
6
+ exports.getAllTasks = exports.getTaskListGroupedByPriority = exports.getTaskListGroupedByAssignees = void 0;
7
+ const toolkit_1 = require("@reduxjs/toolkit");
7
8
  const orderBy_1 = __importDefault(require("lodash/orderBy"));
8
9
  const sortOrderPayload_1 = require("../../../commonPayloadTypes/sortOrderPayload");
9
10
  const taskState_1 = require("../../../entity/task/taskState");
10
11
  const taskSelector_1 = require("../../../entity/task/taskSelector");
11
12
  const userAndRole_1 = require("../../companyView/types/userAndRole");
13
+ const taskList_1 = require("./taskList");
12
14
  const userListViewSelector_1 = require("../../userListView/userListViewSelector");
13
15
  const spendManagementFilterHelpers_1 = require("../../spendManagement/spendManagementFilterHelpers");
14
16
  const tagSelector_1 = require("../../../entity/tag/tagSelector");
15
17
  const reduceFetchState_1 = require("../../../commonStateTypes/reduceFetchState");
16
18
  const taskGroupSelector_1 = require("../../../entity/taskGroup/taskGroupSelector");
17
- const sortTasksList = (state, tasksList, sortKey, sortOrder) => {
19
+ const userSelector_1 = require("../../../entity/user/userSelector");
20
+ const taskDetailSelector_1 = require("../taskDetailView/taskDetailSelector");
21
+ const sortTasksList = (tagState, tasksList, sortKey, sortOrder) => {
18
22
  const tasksInOrder = (0, orderBy_1.default)(tasksList, (task) => {
19
23
  var _a, _b;
20
- const tagsByIds = (0, tagSelector_1.getTagsByIds)(state.tagState, task.tagIds);
24
+ const tagsByIds = (0, tagSelector_1.getTagsByIds)(tagState, task.tagIds);
21
25
  switch (sortKey) {
22
26
  case 'dueDate':
23
27
  return task.dueDate;
@@ -28,7 +32,7 @@ const sortTasksList = (state, tasksList, sortKey, sortOrder) => {
28
32
  case 'status':
29
33
  return task.status.name;
30
34
  case 'priority':
31
- return taskState_1.ALL_PRORITY_CODE.indexOf(task.priority.code);
35
+ return taskState_1.ALL_PRIORITY_CODE.indexOf(task.priority.code);
32
36
  case 'name':
33
37
  default:
34
38
  return task.name.toLowerCase();
@@ -36,65 +40,286 @@ const sortTasksList = (state, tasksList, sortKey, sortOrder) => {
36
40
  }, sortOrder);
37
41
  return tasksInOrder;
38
42
  };
39
- const getAllTasks = (state) => {
40
- const { taskListState, taskState, userState, userRoleState, addressState, taskGroupState, taskGroupViewState, tagViewState, } = state;
41
- const { localData, searchText } = taskListState;
42
- const sortKey = taskListState.uiState.sortKey;
43
+ const getTasksWithUserDetails = ({ taskListState, taskState, userState, userRoleState, addressState, taskIds, tagState, }) => {
44
+ const { sortKey, searchText } = taskListState.uiState;
43
45
  const sortOrder = (0, sortOrderPayload_1.getSortOrder)(taskListState.uiState.sortOrder);
44
- const taskGroupIds = taskGroupViewState.taskGroupsIds;
45
- const taskGroupsWithTasksList = taskGroupIds
46
+ const tasks = taskIds
47
+ .map((taskId) => {
48
+ const task = (0, taskSelector_1.getTaskById)(taskState, taskId);
49
+ if (task != null) {
50
+ const assigneeUsers = task.assignees
51
+ .map((userId) => (0, userAndRole_1.getUserAndUserRole)(userState, userRoleState, addressState, userId))
52
+ .filter((value) => value != null);
53
+ return Object.assign(Object.assign({}, task), { assigneeUsers });
54
+ }
55
+ return undefined;
56
+ })
57
+ .filter((value) => (value === null || value === void 0 ? void 0 : value.name.toLowerCase().includes(searchText.toLowerCase())) === true);
58
+ const filteredTaskList = (0, spendManagementFilterHelpers_1.applyAdvancedFiltersOnList)('task_management', tasks, taskListState.filters);
59
+ const sortedTaskList = sortTasksList(tagState, filteredTaskList, sortKey, sortOrder);
60
+ return sortedTaskList;
61
+ };
62
+ const getTaskListGroupedByGroupName = ({ taskListState, taskState, taskGroupState, taskGroupViewState, userState, userRoleState, addressState, tagState, }) => {
63
+ const { taskGroupsIds } = taskGroupViewState;
64
+ const taskGroupsWithTasksList = taskGroupsIds
46
65
  .map((taskGroupId) => {
47
66
  var _a;
48
67
  const taskGroup = (0, taskGroupSelector_1.getTaskGroupById)(taskGroupState, taskGroupId);
49
68
  const taskIds = (_a = taskListState.taskIdsByGroupsIds[taskGroupId]) !== null && _a !== void 0 ? _a : [];
50
- const tasks = taskIds
51
- .map((taskId) => {
52
- const task = (0, taskSelector_1.getTaskById)(taskState, taskId);
53
- if (task != null) {
54
- const assigneeUsers = task.assignees
55
- .map((userId) => (0, userAndRole_1.getUserAndUserRole)(userState, userRoleState, addressState, userId))
56
- .filter((value) => value != null);
57
- return Object.assign(Object.assign({}, task), { assigneeUsers });
58
- }
59
- return undefined;
60
- })
61
- .filter((value) => (value === null || value === void 0 ? void 0 : value.name.toLowerCase().includes(searchText.toLowerCase())) ===
62
- true);
69
+ const tasksWithUserDetails = getTasksWithUserDetails({
70
+ taskListState,
71
+ taskState,
72
+ userState,
73
+ userRoleState,
74
+ addressState,
75
+ taskIds,
76
+ tagState,
77
+ });
63
78
  if (taskGroup != null) {
64
- const filteredTaskList = (0, spendManagementFilterHelpers_1.applyAdvancedFiltersOnList)('task_management', tasks, taskListState.filters);
65
- const sortedTaskList = sortTasksList(state, filteredTaskList, sortKey, sortOrder);
66
- return Object.assign(Object.assign({}, taskGroup), { tasks: sortedTaskList });
79
+ return {
80
+ groupName: taskGroup.name,
81
+ id: taskGroup.id,
82
+ tasks: tasksWithUserDetails,
83
+ isDefault: taskGroup.isDefault,
84
+ };
67
85
  }
68
86
  return undefined;
69
87
  })
70
88
  .filter((value) => value != null);
71
- taskGroupsWithTasksList.sort((a, b) => {
72
- return b.createdAt.valueOf() - a.createdAt.valueOf();
89
+ taskGroupsWithTasksList.sort((group1, group2) => {
90
+ const taskGroup1 = taskGroupState.taskGroupById[group1.id];
91
+ const taskGroup2 = taskGroupState.taskGroupById[group2.id];
92
+ return taskGroup2.createdAt.valueOf() - taskGroup1.createdAt.valueOf();
93
+ });
94
+ const sortedTaskGroupsWithTasksList = taskGroupsWithTasksList.filter((group) => {
95
+ const taskGroup = taskGroupState.taskGroupById[group.id];
96
+ return taskGroup.isDefault === false;
97
+ });
98
+ const defaultTaskGroup = taskGroupsWithTasksList.find((group) => {
99
+ const taskGroup = taskGroupState.taskGroupById[group.id];
100
+ return taskGroup.isDefault === true;
73
101
  });
74
- const sortedTaskGroupsWithTasksList = taskGroupsWithTasksList.filter((taskGroup) => taskGroup.isDefault === false);
75
- const defaultTaskGroup = taskGroupsWithTasksList.find((taskGroup) => taskGroup.isDefault === true);
76
102
  if (defaultTaskGroup != null) {
77
103
  sortedTaskGroupsWithTasksList.push(defaultTaskGroup);
78
104
  }
105
+ return sortedTaskGroupsWithTasksList;
106
+ };
107
+ const getTaskListGroupedByAssignees = ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }) => {
108
+ const assigneeGroups = Object.keys(taskListState.taskIdsByAssignees);
109
+ const taskGroupsWithTasksList = assigneeGroups.map((groupKey) => {
110
+ const taskIds = taskListState.taskIdsByAssignees[groupKey];
111
+ const tasksWithUserDetails = getTasksWithUserDetails({
112
+ taskListState,
113
+ taskState,
114
+ userState,
115
+ userRoleState,
116
+ addressState,
117
+ taskIds,
118
+ tagState,
119
+ });
120
+ const assigneeIds = groupKey.split(',');
121
+ const groupName = (0, userSelector_1.getUsersByUserIds)(userState, assigneeIds)
122
+ .map((user) => {
123
+ return (0, userSelector_1.getUserName)(user);
124
+ })
125
+ .slice(0, 5)
126
+ .join(', ');
127
+ return {
128
+ groupName,
129
+ id: groupKey !== '' ? groupKey : 'no_assignee',
130
+ isDefault: true,
131
+ tasks: tasksWithUserDetails,
132
+ };
133
+ });
134
+ return taskGroupsWithTasksList;
135
+ };
136
+ exports.getTaskListGroupedByAssignees = getTaskListGroupedByAssignees;
137
+ const getTaskListGroupedByPriority = ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }) => {
138
+ const taskGroupsWithTasksList = taskState_1.ALL_PRIORITY_CODE.map((groupKey) => {
139
+ var _a, _b, _c;
140
+ const taskIds = (_a = taskListState.taskIdsByPriority[groupKey]) !== null && _a !== void 0 ? _a : [];
141
+ const tasksWithUserDetails = getTasksWithUserDetails({
142
+ taskListState,
143
+ taskState,
144
+ userState,
145
+ userRoleState,
146
+ addressState,
147
+ taskIds,
148
+ tagState,
149
+ });
150
+ return {
151
+ groupName: (_c = (_b = taskDetailSelector_1.allTaskPriority.find((priority) => priority.code === groupKey)) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : groupKey,
152
+ id: groupKey,
153
+ isDefault: true,
154
+ tasks: tasksWithUserDetails,
155
+ };
156
+ });
157
+ return taskGroupsWithTasksList;
158
+ };
159
+ exports.getTaskListGroupedByPriority = getTaskListGroupedByPriority;
160
+ const getTaskListGroupedByStatus = ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }) => {
161
+ const taskGroupsWithTasksList = taskState_1.ALL_TASK_STATUS_CODE.map((groupKey) => {
162
+ var _a, _b, _c;
163
+ const taskIds = (_a = taskListState.taskIdsByStatus[groupKey]) !== null && _a !== void 0 ? _a : [];
164
+ const tasksWithUserDetails = getTasksWithUserDetails({
165
+ taskListState,
166
+ taskState,
167
+ userState,
168
+ userRoleState,
169
+ addressState,
170
+ taskIds,
171
+ tagState,
172
+ });
173
+ return {
174
+ groupName: (_c = (_b = taskDetailSelector_1.allTaskStatus.find((taskStatus) => taskStatus.code === groupKey)) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : groupKey,
175
+ id: groupKey,
176
+ isDefault: true,
177
+ tasks: tasksWithUserDetails,
178
+ };
179
+ });
180
+ return taskGroupsWithTasksList;
181
+ };
182
+ const getTaskListGroupedByTags = ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }) => {
183
+ const tagGroups = Object.keys(taskListState.taskIdsByTags);
184
+ const taskGroupsWithTasksList = tagGroups.map((groupKey) => {
185
+ const taskIds = taskListState.taskIdsByTags[groupKey];
186
+ const tasksWithUserDetails = getTasksWithUserDetails({
187
+ taskListState,
188
+ taskState,
189
+ userState,
190
+ userRoleState,
191
+ addressState,
192
+ taskIds,
193
+ tagState,
194
+ });
195
+ const tagIds = groupKey.split(',');
196
+ const groupName = (0, tagSelector_1.getTagsByIds)(tagState, tagIds)
197
+ .map((tag) => {
198
+ return tag.name;
199
+ })
200
+ .join(', ');
201
+ return {
202
+ groupName,
203
+ id: groupKey !== '' ? groupKey : 'no_tag',
204
+ isDefault: true,
205
+ tasks: tasksWithUserDetails,
206
+ };
207
+ });
208
+ return taskGroupsWithTasksList;
209
+ };
210
+ const getTaskListGroupedByDueDate = ({ taskListState, taskState, userState, userRoleState, addressState, tagState, }) => {
211
+ const taskGroupsWithTasksList = taskList_1.DUE_DATE_GROUP_KEYS.map((groupKey) => {
212
+ const taskIds = taskListState.taskIdsByDueDate[groupKey];
213
+ const tasksWithUserDetails = getTasksWithUserDetails({
214
+ taskListState,
215
+ taskState,
216
+ userState,
217
+ userRoleState,
218
+ addressState,
219
+ taskIds,
220
+ tagState,
221
+ });
222
+ return {
223
+ groupName: groupKey,
224
+ id: groupKey,
225
+ isDefault: true,
226
+ tasks: tasksWithUserDetails,
227
+ };
228
+ });
229
+ return taskGroupsWithTasksList;
230
+ };
231
+ const getTaskGroupsWithTaskList = ({ taskListState, taskState, userState, userRoleState, addressState, taskGroupState, taskGroupViewState, tagState, }) => {
232
+ const { groupByKey } = taskListState.uiState;
233
+ if (groupByKey === 'groupName') {
234
+ return getTaskListGroupedByGroupName({
235
+ taskListState,
236
+ taskState,
237
+ userState,
238
+ userRoleState,
239
+ addressState,
240
+ taskGroupState,
241
+ taskGroupViewState,
242
+ tagState,
243
+ });
244
+ }
245
+ if (groupByKey === 'assignee') {
246
+ return (0, exports.getTaskListGroupedByAssignees)({
247
+ taskListState,
248
+ taskState,
249
+ userState,
250
+ userRoleState,
251
+ addressState,
252
+ tagState,
253
+ });
254
+ }
255
+ if (groupByKey === 'priority') {
256
+ return (0, exports.getTaskListGroupedByPriority)({
257
+ taskListState,
258
+ taskState,
259
+ userState,
260
+ userRoleState,
261
+ addressState,
262
+ tagState,
263
+ });
264
+ }
265
+ if (groupByKey === 'status') {
266
+ return getTaskListGroupedByStatus({
267
+ taskListState,
268
+ taskState,
269
+ userState,
270
+ userRoleState,
271
+ addressState,
272
+ tagState,
273
+ });
274
+ }
275
+ if (groupByKey === 'tag') {
276
+ return getTaskListGroupedByTags({
277
+ taskListState,
278
+ taskState,
279
+ userState,
280
+ userRoleState,
281
+ addressState,
282
+ tagState,
283
+ });
284
+ }
285
+ return getTaskListGroupedByDueDate({
286
+ taskListState,
287
+ taskState,
288
+ userState,
289
+ userRoleState,
290
+ addressState,
291
+ tagState,
292
+ });
293
+ };
294
+ exports.getAllTasks = (0, toolkit_1.createSelector)((state) => state.taskListState, (state) => state.taskState, (state) => state.userState, (state) => state.userRoleState, (state) => state.userListViewState, (state) => state.addressState, (state) => state.taskGroupState, (state) => state.taskGroupViewState, (state) => state.tagViewState, (state) => state.tagState, (taskListState, taskState, userState, userRoleState, userListViewState, addressState, taskGroupState, taskGroupViewState, tagViewState, tagState) => {
295
+ const { localData } = taskListState;
296
+ const taskGroupsWithTasksList = getTaskGroupsWithTaskList({
297
+ taskListState,
298
+ taskState,
299
+ userState,
300
+ userRoleState,
301
+ addressState,
302
+ taskGroupState,
303
+ taskGroupViewState,
304
+ tagState,
305
+ });
79
306
  const { fetchState, error } = (0, reduceFetchState_1.reduceAnyFetchState)([
80
307
  taskListState,
81
308
  taskGroupViewState,
82
309
  tagViewState,
83
310
  ]);
84
311
  return {
85
- searchText: taskListState.searchText,
86
312
  uiState: taskListState.uiState,
87
313
  filters: taskListState.filters,
88
314
  fetchState: fetchState,
89
- userList: (0, userListViewSelector_1.getUserList)(state, 'taskManagerCandidate'),
315
+ userList: (0, userListViewSelector_1.getUserList)(userState, userRoleState, userListViewState, 'taskManagerCandidate'),
90
316
  error: error,
91
317
  version: 0,
92
- taskGroupsWithTasksList: sortedTaskGroupsWithTasksList,
318
+ taskGroupsWithTasksList,
93
319
  localData,
94
320
  updateTasksFetchState: taskListState.updateTasksFetchState,
95
321
  taskGroupDeleteStatus: taskGroupViewState.taskGroupDeleteStatus,
96
322
  taskGroupUpdateStatus: taskGroupViewState.taskGroupUpdateStatus,
97
323
  taskGroupCreationStatus: taskGroupViewState.taskGroupCreationStatus,
98
324
  };
99
- };
100
- exports.getAllTasks = getAllTasks;
325
+ });
@@ -0,0 +1,5 @@
1
+ import { TaskGroupKey } from './taskList';
2
+ import { Task } from '../../../entity/task/taskState';
3
+ import { ZeniDate } from '../../../zeniDayJS';
4
+ export declare const getDueDateValueFromDueDateGroupId: (groupId: string) => ZeniDate;
5
+ export declare const getTaskUpdates: (groupByKey: TaskGroupKey, groupId: string) => Partial<Task>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getTaskUpdates = exports.getDueDateValueFromDueDateGroupId = void 0;
4
+ const taskList_1 = require("./taskList");
5
+ const taskDetailSelector_1 = require("../taskDetailView/taskDetailSelector");
6
+ const zeniDayJS_1 = require("../../../zeniDayJS");
7
+ const getDueDateValueFromDueDateGroupId = (groupId) => {
8
+ const dueDateGroup = (0, taskList_1.toDueDateGroupKeyType)(groupId);
9
+ const today = (0, zeniDayJS_1.dateNow)();
10
+ if (dueDateGroup === 'overdue') {
11
+ return today.subtract(1, 'day');
12
+ }
13
+ if (dueDateGroup === 'today') {
14
+ return today;
15
+ }
16
+ if (dueDateGroup === 'this_week') {
17
+ return today.endOf('week');
18
+ }
19
+ if (dueDateGroup === 'this_month') {
20
+ return today.endOf('month');
21
+ }
22
+ return today.add(1, 'month').endOf('month');
23
+ };
24
+ exports.getDueDateValueFromDueDateGroupId = getDueDateValueFromDueDateGroupId;
25
+ const getTaskUpdates = (groupByKey, groupId) => {
26
+ if (groupByKey === 'priority') {
27
+ return {
28
+ priority: taskDetailSelector_1.allTaskPriority.find((priority) => priority.code === groupId),
29
+ };
30
+ }
31
+ if (groupByKey === 'status') {
32
+ return {
33
+ status: taskDetailSelector_1.allTaskStatus.find((status) => status.code === groupId),
34
+ };
35
+ }
36
+ if (groupByKey === 'dueDate') {
37
+ return {
38
+ dueDate: (0, exports.getDueDateValueFromDueDateGroupId)(groupId),
39
+ };
40
+ }
41
+ if (groupByKey === 'assignee') {
42
+ return {
43
+ assignees: groupId.split(','),
44
+ };
45
+ }
46
+ if (groupByKey === 'tag') {
47
+ return {
48
+ tagIds: groupId.split(','),
49
+ };
50
+ }
51
+ return {
52
+ taskGroupIds: [groupId],
53
+ };
54
+ };
55
+ exports.getTaskUpdates = getTaskUpdates;
@@ -1,8 +1,9 @@
1
1
  import { SelectorView } from '../../commonStateTypes/viewAndReport/viewAndReport';
2
- import { RootState } from '../../reducer';
2
+ import { UserState } from '../../entity/user/userState';
3
+ import { UserRoleState } from '../../entity/userRole/userRoleState';
3
4
  import { Person } from '../people/peopleSelectorTypes';
4
- import { UserListType } from './userListViewState';
5
+ import { UserListType, UserListViewState } from './userListViewState';
5
6
  export interface UserListSelectorView extends SelectorView {
6
7
  users: Person[];
7
8
  }
8
- export declare const getUserList: (state: RootState, userType: UserListType) => UserListSelectorView;
9
+ export declare const getUserList: (userState: UserState, userRoleState: UserRoleState, userListViewState: UserListViewState, userType: UserListType) => UserListSelectorView;
@@ -7,9 +7,8 @@ exports.getUserList = void 0;
7
7
  const orderBy_1 = __importDefault(require("lodash/orderBy"));
8
8
  const userSelector_1 = require("../../entity/user/userSelector");
9
9
  const userRoleSelector_1 = require("../../entity/userRole/userRoleSelector");
10
- const getUserList = (state, userType) => {
10
+ const getUserList = (userState, userRoleState, userListViewState, userType) => {
11
11
  var _a, _b;
12
- const { userState, userRoleState, userListViewState } = state;
13
12
  return {
14
13
  users: getUserListByUserIds(userState, userRoleState, userListViewState, userType),
15
14
  fetchState: (_a = userListViewState.userListByType[userType]) === null || _a === void 0 ? void 0 : _a.fetchState,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zeniai/client-epic-state",
3
- "version": "4.11.72",
3
+ "version": "4.11.73",
4
4
  "description": "Shared module between Web & Mobile containing required abstractions for state management, async network communication. ",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",