@outliant/sunrise-utils 1.1.12 → 1.1.14
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.
- package/CHANGELOG.md +16 -0
- package/helpers/common.js +36 -0
- package/helpers/projectFilter/criticalPathFilter.js +6 -0
- package/helpers/projectFilter/index.js +1 -1
- package/helpers/projectFilter/isPausedFilter.js +41 -0
- package/helpers/projectFilter/projectFieldFilter.js +6 -0
- package/helpers/projectFilter/projectFilter.js +7 -1
- package/helpers/projectFilter/regionFilter.js +7 -1
- package/helpers/projectFilter/tagFilter.js +6 -0
- package/helpers/taskFilter/criticalPathFilter.js +6 -0
- package/helpers/taskFilter/isPausedFilter.js +37 -12
- package/helpers/taskFilter/onHoldFilter.js +7 -1
- package/helpers/taskFilter/ownerFilter.js +6 -0
- package/helpers/taskFilter/regionFilter.js +7 -1
- package/helpers/taskFilter/statusFilter.js +7 -1
- package/helpers/taskFilter/taskFieldFilter.js +6 -0
- package/helpers/users/filters/status.js +8 -1
- package/lib/fieldConditions.js +20 -0
- package/package.json +1 -1
- package/test/helpers/isNoneOf.spec.js +139 -0
- package/test/helpers/projectFilter/projectFieldFilter.spec.js +154 -1
- package/test/helpers/taskFilter/criticalPathFilter.spec.js +104 -1
- package/test/helpers/taskFilter/onHoldFilter.spec.js +94 -0
- package/test/helpers/taskFilter/ownerFilter.spec.js +94 -0
- package/test/helpers/taskFilter/regionFilter.spec.js +94 -0
- package/test/helpers/taskFilter/statusFilter.spec.js +97 -1
- package/test/helpers/taskFilter/taskFieldFilter.spec.js +94 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,10 +4,26 @@ All notable changes to this project will be documented in this file. Dates are d
|
|
|
4
4
|
|
|
5
5
|
Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
|
|
6
6
|
|
|
7
|
+
#### [1.1.14](https://github.com/outliant/sunrise-utils/compare/1.1.13...1.1.14)
|
|
8
|
+
|
|
9
|
+
- chore: add Is None Of field condition #85ztm47dj [`#20`](https://github.com/outliant/sunrise-utils/pull/20)
|
|
10
|
+
- chore: add Is None Of field condition (WIP) #85ztm47dj [`8005104`](https://github.com/outliant/sunrise-utils/commit/8005104a15eaf5102fe3672f1a9da5d03128ba4b)
|
|
11
|
+
|
|
12
|
+
#### [1.1.13](https://github.com/outliant/sunrise-utils/compare/1.1.12...1.1.13)
|
|
13
|
+
|
|
14
|
+
> 8 November 2023
|
|
15
|
+
|
|
16
|
+
- chore: change equal condition [`#18`](https://github.com/outliant/sunrise-utils/pull/18)
|
|
17
|
+
- chore: update isPaused filter [`99d882d`](https://github.com/outliant/sunrise-utils/commit/99d882d74cb7fb6d7aba3048a2328343017ca512)
|
|
18
|
+
- chore(release): 1.1.13 [`998c753`](https://github.com/outliant/sunrise-utils/commit/998c753cd70aad1cf9f55e392a812bf40d74a602)
|
|
19
|
+
|
|
7
20
|
#### [1.1.12](https://github.com/outliant/sunrise-utils/compare/1.1.11...1.1.12)
|
|
8
21
|
|
|
22
|
+
> 7 November 2023
|
|
23
|
+
|
|
9
24
|
- chore: add isPaused [`#17`](https://github.com/outliant/sunrise-utils/pull/17)
|
|
10
25
|
- chore: add unit test for is_paused [`aa5fada`](https://github.com/outliant/sunrise-utils/commit/aa5fada660f2883004a1a72ddb0603f412dec18e)
|
|
26
|
+
- chore(release): 1.1.12 [`56f3083`](https://github.com/outliant/sunrise-utils/commit/56f30836a6b021e0d57cfabf9541b063ddb92afd)
|
|
11
27
|
|
|
12
28
|
#### [1.1.11](https://github.com/outliant/sunrise-utils/compare/1.1.10...1.1.11)
|
|
13
29
|
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
const splitString = require('./splitString');
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a filter condition for "is_none_of" based on the provided filter and filterBuilder function.
|
|
5
|
+
*
|
|
6
|
+
* @param {Object} filter - The filter object.
|
|
7
|
+
* @param {Function} filterBuilder - The function to build filters.
|
|
8
|
+
* @returns {Object|null} The constructed filter condition or null if input is invalid.
|
|
9
|
+
*/
|
|
10
|
+
module.exports.isNoneOf = (filter, filterBuilder) => {
|
|
11
|
+
if (
|
|
12
|
+
!filter ||
|
|
13
|
+
!filter.value ||
|
|
14
|
+
!filterBuilder ||
|
|
15
|
+
typeof filterBuilder !== 'function'
|
|
16
|
+
) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const value = typeof filter.value === 'string'
|
|
21
|
+
? splitString(filter.value)
|
|
22
|
+
: filter.value;
|
|
23
|
+
|
|
24
|
+
if (!value || value && value.length === 0) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
bool: {
|
|
30
|
+
must_not: value.map(x => filterBuilder({
|
|
31
|
+
...filter,
|
|
32
|
+
value: x
|
|
33
|
+
}))
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -9,6 +10,11 @@ module.exports = (filter) => {
|
|
|
9
10
|
case 'contains_none':
|
|
10
11
|
case 'not_equal':
|
|
11
12
|
return module.exports.containsNone(filter);
|
|
13
|
+
case 'is_none_of':
|
|
14
|
+
return isNoneOf(
|
|
15
|
+
filter,
|
|
16
|
+
module.exports.isEqual
|
|
17
|
+
);
|
|
12
18
|
case 'greater_than_or_equal':
|
|
13
19
|
return module.exports.greaterThanOrEqual(filter);
|
|
14
20
|
case 'less_than_or_equal':
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
const buildRegionFilter = require('./regionFilter');
|
|
2
2
|
const buildCriticalPathFilter = require('./criticalPathFilter');
|
|
3
3
|
const buildOnHoldFilter = require('./onHoldFilter');
|
|
4
|
-
const buildIsPausedFilter = require('
|
|
4
|
+
const buildIsPausedFilter = require('./isPausedFilter');
|
|
5
5
|
const buildIsGeneratedFilter = require('./isGeneratedFilter');
|
|
6
6
|
const buildTagFilter = require('./tagFilter');
|
|
7
7
|
const buildProjectFieldFilter = require('./projectFieldFilter');
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module.exports = (filter) => {
|
|
2
|
+
switch (filter.condition) {
|
|
3
|
+
case 'is_equal':
|
|
4
|
+
return module.exports.isEqual();
|
|
5
|
+
case 'not_equal':
|
|
6
|
+
return module.exports.isNotEqual();
|
|
7
|
+
default:
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
module.exports.isEqual = () => {
|
|
13
|
+
return {
|
|
14
|
+
match: {
|
|
15
|
+
is_paused: true
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
module.exports.isNotEqual = () => {
|
|
21
|
+
return {
|
|
22
|
+
bool: {
|
|
23
|
+
should: [
|
|
24
|
+
{
|
|
25
|
+
match: {
|
|
26
|
+
is_paused: false
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
bool: {
|
|
31
|
+
must_not: {
|
|
32
|
+
exists: {
|
|
33
|
+
field: 'is_paused'
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
]
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const moment = require('moment');
|
|
2
2
|
const { escapeElasticQuery } = require('../es');
|
|
3
3
|
const splitString = require('../splitString');
|
|
4
|
+
const { isNoneOf } = require('../common');
|
|
4
5
|
|
|
5
6
|
function getContainsMappingValue(filter) {
|
|
6
7
|
if (['text', 'textarea'].includes(filter.field_type)) {
|
|
@@ -44,6 +45,11 @@ module.exports = (filter) => {
|
|
|
44
45
|
return module.exports.isEqual(filter);
|
|
45
46
|
case 'not_equal':
|
|
46
47
|
return module.exports.isNotEqual(filter);
|
|
48
|
+
case 'is_none_of':
|
|
49
|
+
return isNoneOf(
|
|
50
|
+
filter,
|
|
51
|
+
module.exports.isEqual
|
|
52
|
+
);
|
|
47
53
|
case 'before':
|
|
48
54
|
case 'less_than':
|
|
49
55
|
return module.exports.isBefore(filter);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const moment = require('moment');
|
|
2
2
|
const { escapeElasticQuery } = require('../es');
|
|
3
3
|
const splitString = require('../splitString');
|
|
4
|
+
const { isNoneOf } = require('../common');
|
|
4
5
|
|
|
5
6
|
module.exports = (filter) => {
|
|
6
7
|
switch (filter.condition) {
|
|
@@ -8,6 +9,11 @@ module.exports = (filter) => {
|
|
|
8
9
|
return module.exports.isEqual(filter);
|
|
9
10
|
case 'not_equal':
|
|
10
11
|
return module.exports.isNotEqual(filter);
|
|
12
|
+
case 'is_none_of':
|
|
13
|
+
return isNoneOf(
|
|
14
|
+
filter,
|
|
15
|
+
module.exports.isEqual
|
|
16
|
+
);
|
|
11
17
|
case 'before':
|
|
12
18
|
case 'less_than':
|
|
13
19
|
return module.exports.isBefore(filter);
|
|
@@ -429,4 +435,4 @@ module.exports.isNotEqual = (filter) => {
|
|
|
429
435
|
must_not: [mappingValue]
|
|
430
436
|
}
|
|
431
437
|
};
|
|
432
|
-
};
|
|
438
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -8,6 +9,11 @@ module.exports = (filter) => {
|
|
|
8
9
|
case 'contains_none':
|
|
9
10
|
case 'not_equal':
|
|
10
11
|
return module.exports.containsNone(filter);
|
|
12
|
+
case 'is_none_of':
|
|
13
|
+
return isNoneOf(
|
|
14
|
+
filter,
|
|
15
|
+
module.exports.containsAny
|
|
16
|
+
);
|
|
11
17
|
default:
|
|
12
18
|
return null;
|
|
13
19
|
}
|
|
@@ -55,4 +61,4 @@ module.exports.containsNone = (filter) => {
|
|
|
55
61
|
})
|
|
56
62
|
}
|
|
57
63
|
};
|
|
58
|
-
};
|
|
64
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -11,6 +12,11 @@ module.exports = (filter) => {
|
|
|
11
12
|
case 'is_equal':
|
|
12
13
|
case 'contains':
|
|
13
14
|
return module.exports.containsAll(filter);
|
|
15
|
+
case 'is_none_of':
|
|
16
|
+
return isNoneOf(
|
|
17
|
+
filter,
|
|
18
|
+
module.exports.containsAll
|
|
19
|
+
);
|
|
14
20
|
default:
|
|
15
21
|
return null;
|
|
16
22
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -12,6 +13,11 @@ module.exports = (filter) => {
|
|
|
12
13
|
return module.exports.isNotEqual(filter);
|
|
13
14
|
case 'is_any_of':
|
|
14
15
|
return module.exports.isAnyOf(filter);
|
|
16
|
+
case 'is_none_of':
|
|
17
|
+
return isNoneOf(
|
|
18
|
+
filter,
|
|
19
|
+
module.exports.isEqual
|
|
20
|
+
);
|
|
15
21
|
default:
|
|
16
22
|
return null;
|
|
17
23
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -12,6 +13,11 @@ module.exports = (filter) => {
|
|
|
12
13
|
return module.exports.isNotEqual(filter);
|
|
13
14
|
case 'is_any_of':
|
|
14
15
|
return module.exports.isAnyOf(filter); // if is any, means all tasks that have value
|
|
16
|
+
case 'is_none_of':
|
|
17
|
+
return isNoneOf(
|
|
18
|
+
filter,
|
|
19
|
+
module.exports.isEqual
|
|
20
|
+
);
|
|
15
21
|
default:
|
|
16
22
|
return null;
|
|
17
23
|
}
|
|
@@ -46,13 +52,38 @@ module.exports.isNotEmpty = () => {
|
|
|
46
52
|
};
|
|
47
53
|
|
|
48
54
|
module.exports.isEqual = (filter) => {
|
|
55
|
+
const isYes = filter.value === 'Yes';
|
|
56
|
+
|
|
57
|
+
if (isYes) {
|
|
58
|
+
return {
|
|
59
|
+
bool: {
|
|
60
|
+
must: [
|
|
61
|
+
{
|
|
62
|
+
term: {
|
|
63
|
+
is_paused: {
|
|
64
|
+
value: true
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
]
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
|
|
49
73
|
return {
|
|
50
74
|
bool: {
|
|
51
|
-
|
|
75
|
+
should: [
|
|
52
76
|
{
|
|
53
|
-
|
|
54
|
-
is_paused:
|
|
55
|
-
|
|
77
|
+
match: {
|
|
78
|
+
is_paused: false
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
bool: {
|
|
83
|
+
must_not: {
|
|
84
|
+
exists: {
|
|
85
|
+
field: 'is_paused'
|
|
86
|
+
}
|
|
56
87
|
}
|
|
57
88
|
}
|
|
58
89
|
}
|
|
@@ -65,13 +96,7 @@ module.exports.isNotEqual = (filter) => {
|
|
|
65
96
|
return {
|
|
66
97
|
bool: {
|
|
67
98
|
must_not: [
|
|
68
|
-
|
|
69
|
-
term: {
|
|
70
|
-
is_paused: {
|
|
71
|
-
value: filter.value === 'Yes'
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
99
|
+
module.exports.isEqual(filter)
|
|
75
100
|
]
|
|
76
101
|
}
|
|
77
102
|
};
|
|
@@ -100,4 +125,4 @@ module.exports.isAnyOf = (filter) => {
|
|
|
100
125
|
should
|
|
101
126
|
}
|
|
102
127
|
};
|
|
103
|
-
};
|
|
128
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -12,6 +13,11 @@ module.exports = (filter) => {
|
|
|
12
13
|
return module.exports.isNotEqual(filter);
|
|
13
14
|
case 'is_any_of':
|
|
14
15
|
return module.exports.isAnyOf(filter); // if is any, means all tasks that have value
|
|
16
|
+
case 'is_none_of':
|
|
17
|
+
return isNoneOf(
|
|
18
|
+
filter,
|
|
19
|
+
module.exports.isEqual
|
|
20
|
+
);
|
|
15
21
|
default:
|
|
16
22
|
return null;
|
|
17
23
|
}
|
|
@@ -100,4 +106,4 @@ module.exports.isAnyOf = (filter) => {
|
|
|
100
106
|
should
|
|
101
107
|
}
|
|
102
108
|
};
|
|
103
|
-
};
|
|
109
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const { validate: isUuid } = require('uuid');
|
|
2
2
|
|
|
3
3
|
const splitString = require('../splitString');
|
|
4
|
+
const { isNoneOf } = require('../common');
|
|
4
5
|
|
|
5
6
|
module.exports = (filter) => {
|
|
6
7
|
switch (filter.condition) {
|
|
@@ -14,6 +15,11 @@ module.exports = (filter) => {
|
|
|
14
15
|
return module.exports.isNotEqual(filter);
|
|
15
16
|
case 'is_any_of':
|
|
16
17
|
return module.exports.isAnyOf(filter);
|
|
18
|
+
case 'is_none_of':
|
|
19
|
+
return isNoneOf(
|
|
20
|
+
filter,
|
|
21
|
+
module.exports.isEqual
|
|
22
|
+
);
|
|
17
23
|
default:
|
|
18
24
|
return null;
|
|
19
25
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -8,6 +9,11 @@ module.exports = (filter) => {
|
|
|
8
9
|
return module.exports.isNotEmpty();
|
|
9
10
|
case 'is_equal':
|
|
10
11
|
return module.exports.isEqual(filter);
|
|
12
|
+
case 'is_none_of':
|
|
13
|
+
return isNoneOf(
|
|
14
|
+
filter,
|
|
15
|
+
module.exports.isEqual
|
|
16
|
+
);
|
|
11
17
|
case 'not_equal':
|
|
12
18
|
return module.exports.isNotEqual(filter);
|
|
13
19
|
default:
|
|
@@ -81,4 +87,4 @@ module.exports.isNotEqual = (filter) => {
|
|
|
81
87
|
}
|
|
82
88
|
|
|
83
89
|
return null;
|
|
84
|
-
};
|
|
90
|
+
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const splitString = require('../splitString');
|
|
2
|
+
const { isNoneOf } = require('../common');
|
|
2
3
|
|
|
3
4
|
module.exports = (filter) => {
|
|
4
5
|
switch (filter.condition) {
|
|
@@ -12,6 +13,11 @@ module.exports = (filter) => {
|
|
|
12
13
|
return module.exports.isNotEqual(filter);
|
|
13
14
|
case 'is_any_of':
|
|
14
15
|
return module.exports.isAnyOf(filter);
|
|
16
|
+
case 'is_none_of':
|
|
17
|
+
return isNoneOf(
|
|
18
|
+
filter,
|
|
19
|
+
module.exports.isEqual
|
|
20
|
+
);
|
|
15
21
|
default:
|
|
16
22
|
return null;
|
|
17
23
|
}
|
|
@@ -176,4 +182,4 @@ module.exports.isNotEqual = (filter) => {
|
|
|
176
182
|
}
|
|
177
183
|
|
|
178
184
|
return null;
|
|
179
|
-
};
|
|
185
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const moment = require('moment');
|
|
2
2
|
|
|
3
3
|
const splitString = require('../splitString');
|
|
4
|
+
const { isNoneOf } = require('../common');
|
|
4
5
|
|
|
5
6
|
module.exports = (filter) => {
|
|
6
7
|
switch (filter.condition) {
|
|
@@ -18,6 +19,11 @@ module.exports = (filter) => {
|
|
|
18
19
|
return module.exports.isEqual(filter);
|
|
19
20
|
case 'not_equal':
|
|
20
21
|
return module.exports.isNotEqual(filter);
|
|
22
|
+
case 'is_none_of':
|
|
23
|
+
return isNoneOf(
|
|
24
|
+
filter,
|
|
25
|
+
module.exports.isEqual
|
|
26
|
+
);
|
|
21
27
|
case 'before':
|
|
22
28
|
case 'less_than':
|
|
23
29
|
return module.exports.isBefore(filter);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
+
const { isNoneOf } = require('../common');
|
|
2
|
+
|
|
1
3
|
module.exports = (filter) => {
|
|
2
4
|
switch (filter.condition) {
|
|
3
5
|
case 'is_equal':
|
|
4
6
|
return module.exports.isEqual(filter);
|
|
5
7
|
case 'not_equal':
|
|
6
8
|
return module.exports.isNotEqual(filter);
|
|
9
|
+
case 'is_none_of':
|
|
10
|
+
return isNoneOf(
|
|
11
|
+
filter,
|
|
12
|
+
module.exports.isEqual
|
|
13
|
+
);
|
|
7
14
|
default:
|
|
8
15
|
return null;
|
|
9
16
|
}
|
|
@@ -74,4 +81,4 @@ module.exports.isNotEqual = (filter) => {
|
|
|
74
81
|
}
|
|
75
82
|
|
|
76
83
|
return null;
|
|
77
|
-
};
|
|
84
|
+
};
|
package/lib/fieldConditions.js
CHANGED
|
@@ -27,6 +27,10 @@ module.exports.conditions = {
|
|
|
27
27
|
{
|
|
28
28
|
label: 'Contains None',
|
|
29
29
|
value: 'contains_none'
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
label: 'Is None Of',
|
|
33
|
+
value: 'is_none_of'
|
|
30
34
|
}
|
|
31
35
|
],
|
|
32
36
|
textarea: [
|
|
@@ -57,6 +61,10 @@ module.exports.conditions = {
|
|
|
57
61
|
{
|
|
58
62
|
label: 'Contains None',
|
|
59
63
|
value: 'contains_none'
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
label: 'Is None Of',
|
|
67
|
+
value: 'is_none_of'
|
|
60
68
|
}
|
|
61
69
|
],
|
|
62
70
|
number: [
|
|
@@ -113,6 +121,10 @@ module.exports.conditions = {
|
|
|
113
121
|
{
|
|
114
122
|
label: 'Is Not Empty',
|
|
115
123
|
value: 'is_not_empty'
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
label: 'Is None Of',
|
|
127
|
+
value: 'is_none_of'
|
|
116
128
|
}
|
|
117
129
|
],
|
|
118
130
|
select: [
|
|
@@ -135,6 +147,10 @@ module.exports.conditions = {
|
|
|
135
147
|
{
|
|
136
148
|
label: 'Is any of',
|
|
137
149
|
value: 'is_any_of'
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
label: 'Is None Of',
|
|
153
|
+
value: 'is_none_of'
|
|
138
154
|
}
|
|
139
155
|
],
|
|
140
156
|
date: [
|
|
@@ -191,6 +207,10 @@ module.exports.conditions = {
|
|
|
191
207
|
{
|
|
192
208
|
label: 'Is Not Empty',
|
|
193
209
|
value: 'is_not_empty'
|
|
210
|
+
},
|
|
211
|
+
{
|
|
212
|
+
label: 'Is None Of',
|
|
213
|
+
value: 'is_none_of'
|
|
194
214
|
}
|
|
195
215
|
]
|
|
196
216
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* eslint-env node, mocha */
|
|
4
|
+
const { expect } = require('chai');
|
|
5
|
+
|
|
6
|
+
// To test
|
|
7
|
+
const { isNoneOf } = require('../../helpers/common');
|
|
8
|
+
const { isEqual } = require('../../helpers/taskFilter/ownerFilter');
|
|
9
|
+
|
|
10
|
+
describe('isNoneOf', function () {
|
|
11
|
+
const filters = [
|
|
12
|
+
{
|
|
13
|
+
input: {
|
|
14
|
+
condition: 'is_none_of',
|
|
15
|
+
field_id: '',
|
|
16
|
+
type: 'critical_path_stage',
|
|
17
|
+
field_type: 'select',
|
|
18
|
+
value: 'meow1;meow2',
|
|
19
|
+
second_value: ''
|
|
20
|
+
},
|
|
21
|
+
callback: isEqual,
|
|
22
|
+
output: {
|
|
23
|
+
bool: {
|
|
24
|
+
must_not: [
|
|
25
|
+
{
|
|
26
|
+
bool: {
|
|
27
|
+
must: [
|
|
28
|
+
{ term: { team_id: { value: 'meow1' } } }
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
bool: {
|
|
34
|
+
must: [
|
|
35
|
+
{ term: { team_id: { value: 'meow2' } } }
|
|
36
|
+
]
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
input: {
|
|
45
|
+
condition: 'is_none_of',
|
|
46
|
+
field_id: '',
|
|
47
|
+
type: 'critical_path_stage',
|
|
48
|
+
field_type: 'select',
|
|
49
|
+
value: ['meow1', 'meow2'],
|
|
50
|
+
second_value: ''
|
|
51
|
+
},
|
|
52
|
+
callback: isEqual,
|
|
53
|
+
output: {
|
|
54
|
+
bool: {
|
|
55
|
+
must_not: [
|
|
56
|
+
{
|
|
57
|
+
bool: {
|
|
58
|
+
must: [
|
|
59
|
+
{ term: { team_id: { value: 'meow1' } } }
|
|
60
|
+
]
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
bool: {
|
|
65
|
+
must: [
|
|
66
|
+
{ term: { team_id: { value: 'meow2' } } }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
input: {
|
|
76
|
+
condition: 'is_none_of',
|
|
77
|
+
field_id: '',
|
|
78
|
+
type: 'critical_path_stage',
|
|
79
|
+
field_type: 'select',
|
|
80
|
+
value: 'meow',
|
|
81
|
+
second_value: ''
|
|
82
|
+
},
|
|
83
|
+
callback: isEqual,
|
|
84
|
+
output: {
|
|
85
|
+
bool: {
|
|
86
|
+
must_not: [
|
|
87
|
+
{
|
|
88
|
+
bool: {
|
|
89
|
+
must: [
|
|
90
|
+
{ term: { team_id: { value: 'meow' } } }
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
input: {
|
|
100
|
+
condition: 'is_none_of',
|
|
101
|
+
field_id: '',
|
|
102
|
+
type: 'critical_path_stage',
|
|
103
|
+
field_type: 'select',
|
|
104
|
+
value: [],
|
|
105
|
+
second_value: ''
|
|
106
|
+
},
|
|
107
|
+
callback: isEqual,
|
|
108
|
+
output: null
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
input: {
|
|
112
|
+
condition: 'is_none_of',
|
|
113
|
+
value: null
|
|
114
|
+
},
|
|
115
|
+
callback: isEqual,
|
|
116
|
+
output: null
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
input: {
|
|
120
|
+
condition: 'is_none_of',
|
|
121
|
+
field_id: '',
|
|
122
|
+
type: 'critical_path_stage',
|
|
123
|
+
field_type: 'select',
|
|
124
|
+
value: 'meow',
|
|
125
|
+
second_value: ''
|
|
126
|
+
},
|
|
127
|
+
callback: undefined,
|
|
128
|
+
output: null
|
|
129
|
+
}
|
|
130
|
+
];
|
|
131
|
+
filters.forEach((filter) => {
|
|
132
|
+
it(`${filter.input.condition}: ${JSON.stringify(
|
|
133
|
+
filter.input.value
|
|
134
|
+
)}`, (done) => {
|
|
135
|
+
expect(isNoneOf(filter.input, filter.callback)).to.deep.equal(filter.output);
|
|
136
|
+
done();
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
});
|