43 lines
1.1 KiB
JavaScript
43 lines
1.1 KiB
JavaScript
|
export default () => key => {
|
||
|
if (key.startsWith('Status:')) {
|
||
|
return function(itemA, itemB) {
|
||
|
const [, dir] = key.split(':');
|
||
|
let a, b;
|
||
|
if (dir === 'asc') {
|
||
|
a = itemA;
|
||
|
b = itemB;
|
||
|
} else {
|
||
|
b = itemA;
|
||
|
a = itemB;
|
||
|
}
|
||
|
const statusA = a.Status;
|
||
|
const statusB = b.Status;
|
||
|
switch (statusA) {
|
||
|
case 'passing':
|
||
|
// a = passing
|
||
|
// unless b is also passing then a is less important
|
||
|
return statusB === 'passing' ? 0 : 1;
|
||
|
case 'critical':
|
||
|
// a = critical
|
||
|
// unless b is also critical then a is more important
|
||
|
return statusB === 'critical' ? 0 : -1;
|
||
|
case 'warning':
|
||
|
// a = warning
|
||
|
switch (statusB) {
|
||
|
// b is passing so a is more important
|
||
|
case 'passing':
|
||
|
return -1;
|
||
|
// b is critical so a is less important
|
||
|
case 'critical':
|
||
|
return 1;
|
||
|
// a and b are both warning, therefore equal
|
||
|
default:
|
||
|
return 0;
|
||
|
}
|
||
|
}
|
||
|
return 0;
|
||
|
};
|
||
|
}
|
||
|
return key;
|
||
|
};
|