Skip to content

Commit 21df636

Browse files
authored
Merge pull request #2160 from cardstack/CS-7607-change-task-sort-filter-when-lhs-change
Change task planner sort order when LHS filter changes
2 parents ff478ab + 005d734 commit 21df636

File tree

2 files changed

+53
-23
lines changed

2 files changed

+53
-23
lines changed

packages/experiments-realm/crm-app.gts

+49-22
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,29 @@ const sortByPriority: (direction: TaskSortOrder) => Sort = (
8383
},
8484
];
8585

86+
const TASK_SORT_OPTIONS: SortOption[] = [
87+
{
88+
id: 'dueDateDesc',
89+
displayName: 'Due Date',
90+
sort: sortByDueDate('desc'),
91+
},
92+
{
93+
id: 'dueDateAsc',
94+
displayName: 'Due Date',
95+
sort: sortByDueDate('asc'),
96+
},
97+
{
98+
id: 'priorityDesc',
99+
displayName: 'Priority',
100+
sort: sortByPriority('desc'),
101+
},
102+
{
103+
id: 'priorityAsc',
104+
displayName: 'Priority',
105+
sort: sortByPriority('asc'),
106+
},
107+
];
108+
86109
const CONTACT_FILTERS: LayoutFilter[] = [
87110
{
88111
displayName: 'All Contacts',
@@ -151,34 +174,14 @@ const TASK_FILTERS: LayoutFilter[] = [
151174
icon: ListDetails,
152175
cardTypeName: 'CRM Task',
153176
createNewButtonText: 'Create Task',
154-
sortOptions: [
155-
{
156-
id: 'dueDateDesc',
157-
displayName: 'Due Date',
158-
sort: sortByDueDate('desc'),
159-
},
160-
{
161-
id: 'dueDateAsc',
162-
displayName: 'Due Date',
163-
sort: sortByDueDate('asc'),
164-
},
165-
{
166-
id: 'priorityDesc',
167-
displayName: 'Priority',
168-
sort: sortByPriority('desc'),
169-
},
170-
{
171-
id: 'priorityAsc',
172-
displayName: 'Priority',
173-
sort: sortByPriority('asc'),
174-
},
175-
],
177+
sortOptions: TASK_SORT_OPTIONS,
176178
},
177179
...taskStatusValues.map((status) => ({
178180
displayName: status.label,
179181
icon: status.icon,
180182
cardTypeName: 'CRM Task',
181183
createNewButtonText: 'Create Task',
184+
sortOptions: TASK_SORT_OPTIONS,
182185
})),
183186
];
184187

@@ -213,6 +216,30 @@ class CrmAppTemplate extends Component<typeof CrmApp> {
213216
@tracked private activeFilter: LayoutFilter = CONTACT_FILTERS[0];
214217
@action private onFilterChange(filter: LayoutFilter) {
215218
this.activeFilter = filter;
219+
if (this.activeTabId === 'Task') {
220+
switch (this.activeFilter.displayName) {
221+
case 'All Tasks':
222+
case 'Overdue':
223+
case 'Due this week':
224+
case 'Unassigned':
225+
this.activeFilter.selectedSort = {
226+
id: 'dueDateAsc',
227+
displayName: 'Due Date',
228+
sort: sortByDueDate('asc'),
229+
};
230+
break;
231+
case 'Due Today':
232+
case 'High Priority':
233+
this.activeFilter.selectedSort = {
234+
id: 'priorityDesc',
235+
displayName: 'Priority',
236+
sort: sortByPriority('desc'),
237+
};
238+
break;
239+
default:
240+
break;
241+
}
242+
}
216243
}
217244
//tabs
218245
@tracked activeTabId: string | undefined = TABS[0].tabId;

packages/host/tests/unit/qs-test.ts

+4-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ module('Unit | qs | parse', function () {
2222
{
2323
eq: {
2424
'author.firstName': 'Cardy',
25+
series: null,
2526
},
2627
},
2728
{
@@ -47,7 +48,9 @@ module('Unit | qs | parse', function () {
4748
},
4849
],
4950
};
50-
let queryString = qs.stringify(query);
51+
let queryString = qs.stringify(query, {
52+
strictNullHandling: true,
53+
});
5154
let parsedQuery: any = parseQuery(queryString);
5255
assert.deepEqual(parsedQuery, query);
5356
});

0 commit comments

Comments
 (0)