@outliant/sunrise-utils 1.2.1 → 1.2.3
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/.vscode/settings.json +2 -2
- package/CHANGELOG.md +14 -0
- package/helpers/projectFilter/index.js +30 -15
- package/helpers/sourceParams.js +45 -0
- package/helpers/taskFilter/index.js +54 -24
- package/index.d.ts +3 -0
- package/lib/projectPipeline.js +9 -0
- package/lib/taskPipeline.js +9 -0
- package/package.json +1 -1
- package/test/lib/projectPipeline.spec.js +85 -23
- package/test/lib/taskPipeline.spec.js +157 -58
package/.vscode/settings.json
CHANGED
package/CHANGELOG.md
CHANGED
|
@@ -4,8 +4,22 @@ 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.2.3](https://github.com/outliant/sunrise-utils/compare/1.2.2...1.2.3)
|
|
8
|
+
|
|
9
|
+
- chore: updated pause column department validator #86b29g6de [`5fb0258`](https://github.com/outliant/sunrise-utils/commit/5fb025812f3a92c34d4dc733e9454a466f9148a1)
|
|
10
|
+
|
|
11
|
+
#### [1.2.2](https://github.com/outliant/sunrise-utils/compare/1.2.1...1.2.2)
|
|
12
|
+
|
|
13
|
+
> 26 September 2024
|
|
14
|
+
|
|
15
|
+
- chore: pipeline improvements #86b27p240 [`911f6dd`](https://github.com/outliant/sunrise-utils/commit/911f6dd7bdf2e26986aec0671d1610d18ebe5cfc)
|
|
16
|
+
- chore(release): 1.2.2 [`1683047`](https://github.com/outliant/sunrise-utils/commit/1683047141b96f4c47c95aaf9e22dddd92526aeb)
|
|
17
|
+
|
|
7
18
|
#### [1.2.1](https://github.com/outliant/sunrise-utils/compare/1.2.0...1.2.1)
|
|
8
19
|
|
|
20
|
+
> 7 September 2024
|
|
21
|
+
|
|
22
|
+
- chore(release): 1.2.1 [`a10f2ea`](https://github.com/outliant/sunrise-utils/commit/a10f2ea60e39f40de1a9d5a33372e9209e53c935)
|
|
9
23
|
- chore: add credit-hold for project banners options [`94669b7`](https://github.com/outliant/sunrise-utils/commit/94669b7ba216596f5fb413d96a8a9dc466ca0c1e)
|
|
10
24
|
|
|
11
25
|
#### [1.2.0](https://github.com/outliant/sunrise-utils/compare/1.1.32...1.2.0)
|
|
@@ -14,34 +14,40 @@ module.exports.defaultCustomColumns = [
|
|
|
14
14
|
name: 'Region',
|
|
15
15
|
value: 'region',
|
|
16
16
|
type: 'region',
|
|
17
|
-
field_type: 'checkbox'
|
|
17
|
+
field_type: 'checkbox',
|
|
18
|
+
select_fields: ['region_id']
|
|
18
19
|
},
|
|
19
20
|
{
|
|
20
21
|
name: 'Tags',
|
|
21
22
|
value: 'tags',
|
|
22
23
|
type: 'tags',
|
|
23
|
-
field_type: 'checkbox'
|
|
24
|
+
field_type: 'checkbox',
|
|
25
|
+
select_fields: ['tag_ids']
|
|
24
26
|
},
|
|
25
27
|
{
|
|
26
28
|
name: 'Critical Path Stage',
|
|
27
29
|
value: 'criticalPathStage',
|
|
28
30
|
type: 'criticalPathStage',
|
|
29
|
-
field_type: 'select'
|
|
31
|
+
field_type: 'select',
|
|
32
|
+
select_fields: ['critical_path']
|
|
30
33
|
},
|
|
31
34
|
{
|
|
32
35
|
name: 'Critical Path Age',
|
|
33
36
|
value: 'criticalPathAge',
|
|
34
37
|
type: 'criticalPathAge',
|
|
35
|
-
field_type: 'number'
|
|
38
|
+
field_type: 'number',
|
|
39
|
+
select_fields: ['critical_path']
|
|
36
40
|
},
|
|
37
41
|
{
|
|
38
42
|
name: 'Cancelled',
|
|
39
43
|
value: 'on_hold',
|
|
40
44
|
type: 'on_hold',
|
|
41
|
-
field_type: 'select'
|
|
45
|
+
field_type: 'select',
|
|
46
|
+
select_fields: ['on_hold']
|
|
42
47
|
},
|
|
43
48
|
{
|
|
44
|
-
validate: (validator) =>
|
|
49
|
+
validate: (validator) =>
|
|
50
|
+
validator && (validator.isCommercial() || validator.isService()),
|
|
45
51
|
name: 'Is Paused',
|
|
46
52
|
value: 'is_paused',
|
|
47
53
|
type: 'is_paused',
|
|
@@ -55,56 +61,65 @@ module.exports.defaultCustomColumns = [
|
|
|
55
61
|
label: 'No',
|
|
56
62
|
value: 'No'
|
|
57
63
|
}
|
|
58
|
-
]
|
|
64
|
+
],
|
|
65
|
+
select_fields: ['is_paused']
|
|
59
66
|
},
|
|
60
67
|
{
|
|
61
68
|
name: 'Is Generated',
|
|
62
69
|
value: 'is_generated',
|
|
63
70
|
type: 'is_generated',
|
|
64
|
-
field_type: 'select'
|
|
71
|
+
field_type: 'select',
|
|
72
|
+
select_fields: ['is_generated']
|
|
65
73
|
},
|
|
66
74
|
{
|
|
67
75
|
name: 'Project ID',
|
|
68
76
|
value: 'project_id',
|
|
69
77
|
type: 'project_id',
|
|
70
|
-
field_type: 'text'
|
|
78
|
+
field_type: 'text',
|
|
79
|
+
select_fields: ['_id']
|
|
71
80
|
},
|
|
72
81
|
{
|
|
73
82
|
name: 'Last Pulse Comment',
|
|
74
83
|
value: 'lastPulseComment',
|
|
75
84
|
type: 'lastPulseComment',
|
|
76
|
-
field_type: 'textarea'
|
|
85
|
+
field_type: 'textarea',
|
|
86
|
+
select_fields: ['last_pulse_data']
|
|
77
87
|
},
|
|
78
88
|
{
|
|
79
89
|
name: 'Last Pulse Comment User',
|
|
80
90
|
value: 'lastPulseCommentUser',
|
|
81
91
|
type: 'lastPulseCommentUser',
|
|
82
|
-
field_type: 'select'
|
|
92
|
+
field_type: 'select',
|
|
93
|
+
select_fields: ['last_pulse_data']
|
|
83
94
|
},
|
|
84
95
|
{
|
|
85
96
|
name: 'Last Pulse Comment Date',
|
|
86
97
|
value: 'lastPulseCommentDate',
|
|
87
98
|
type: 'lastPulseCommentDate',
|
|
88
|
-
field_type: 'date'
|
|
99
|
+
field_type: 'date',
|
|
100
|
+
select_fields: ['last_pulse_data']
|
|
89
101
|
},
|
|
90
102
|
{
|
|
91
103
|
name: 'Created',
|
|
92
104
|
value: 'created_at',
|
|
93
105
|
type: 'created_at',
|
|
94
|
-
field_type: 'date'
|
|
106
|
+
field_type: 'date',
|
|
107
|
+
select_fields: ['created_at']
|
|
95
108
|
},
|
|
96
109
|
{
|
|
97
110
|
name: 'Updated',
|
|
98
111
|
value: 'updated_at',
|
|
99
112
|
type: 'updated_at',
|
|
100
|
-
field_type: 'date'
|
|
113
|
+
field_type: 'date',
|
|
114
|
+
select_fields: ['updated_at']
|
|
101
115
|
},
|
|
102
116
|
{
|
|
103
117
|
name: 'Banners',
|
|
104
118
|
value: 'banner',
|
|
105
119
|
type: 'banner',
|
|
106
120
|
field_type: 'checkbox',
|
|
107
|
-
options: PROJECT_BANNERS
|
|
121
|
+
options: PROJECT_BANNERS,
|
|
122
|
+
select_fields: ['banner']
|
|
108
123
|
}
|
|
109
124
|
];
|
|
110
125
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const { validate: isUuid } = require('uuid');
|
|
2
|
+
const _ = require('lodash');
|
|
3
|
+
|
|
4
|
+
module.exports = (columns = [], filterColumns = []) => {
|
|
5
|
+
let _source = [];
|
|
6
|
+
if (_.isEmpty(columns)) return { _source };
|
|
7
|
+
|
|
8
|
+
const projectFields = [];
|
|
9
|
+
_.each(columns, (c) => {
|
|
10
|
+
if (isUuid(c)) {
|
|
11
|
+
projectFields.push(`'${c}'`);
|
|
12
|
+
} else {
|
|
13
|
+
const columnData = filterColumns.find((x) => x.type === c);
|
|
14
|
+
if (columnData && !_.isEmpty(columnData.select_fields)) {
|
|
15
|
+
_source = _.concat(_source, columnData.select_fields);
|
|
16
|
+
} else {
|
|
17
|
+
_source.push(c);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
_source = _.uniq(_source);
|
|
23
|
+
|
|
24
|
+
if (_.isEmpty(projectFields)) return { _source };
|
|
25
|
+
|
|
26
|
+
return {
|
|
27
|
+
_source,
|
|
28
|
+
script_fields: {
|
|
29
|
+
filtered_fields: {
|
|
30
|
+
script: {
|
|
31
|
+
source: `
|
|
32
|
+
def fieldIds = [${projectFields.join(',')}];
|
|
33
|
+
def result = [];
|
|
34
|
+
for (f in params['_source']['fields']) {
|
|
35
|
+
if (fieldIds.contains(f['id'])) {
|
|
36
|
+
result.add(f);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return result;
|
|
40
|
+
`
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
};
|
|
@@ -35,7 +35,8 @@ module.exports.taskStatusOptions = [
|
|
|
35
35
|
value: 'overdue'
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
|
-
validate: (validator) =>
|
|
38
|
+
validate: (validator) =>
|
|
39
|
+
validator && (validator.isCommercial() || validator.isService()),
|
|
39
40
|
label: 'Paused',
|
|
40
41
|
value: 'paused'
|
|
41
42
|
}
|
|
@@ -66,51 +67,65 @@ module.exports.defaultCustomColumns = [
|
|
|
66
67
|
value: 'owner',
|
|
67
68
|
type: 'owner',
|
|
68
69
|
field_type: 'select',
|
|
69
|
-
options: []
|
|
70
|
+
options: [],
|
|
71
|
+
select_fields: ['user_id', 'team_id']
|
|
70
72
|
},
|
|
71
73
|
{
|
|
72
74
|
name: 'Age',
|
|
73
75
|
value: 'ready_at',
|
|
74
76
|
type: 'ready_at',
|
|
75
|
-
field_type: 'date'
|
|
77
|
+
field_type: 'date',
|
|
78
|
+
select_fields: [
|
|
79
|
+
'is_complete',
|
|
80
|
+
'completed_at',
|
|
81
|
+
'is_ready',
|
|
82
|
+
'ready_at',
|
|
83
|
+
'created_at'
|
|
84
|
+
]
|
|
76
85
|
},
|
|
77
86
|
{
|
|
78
87
|
name: 'Days to Complete',
|
|
79
88
|
value: 'days_to_complete',
|
|
80
89
|
type: 'days_to_complete',
|
|
81
|
-
field_type: 'number'
|
|
90
|
+
field_type: 'number',
|
|
91
|
+
select_fields: ['ready_at', 'completed_at']
|
|
82
92
|
},
|
|
83
93
|
{
|
|
84
94
|
name: 'Pending Date',
|
|
85
95
|
value: 'pending_date',
|
|
86
96
|
type: 'pending_date',
|
|
87
|
-
field_type: 'date'
|
|
97
|
+
field_type: 'date',
|
|
98
|
+
select_fields: ['ready_at']
|
|
88
99
|
},
|
|
89
100
|
{
|
|
90
101
|
name: 'Project ID',
|
|
91
102
|
value: 'project_id',
|
|
92
103
|
type: 'project_id',
|
|
93
|
-
field_type: 'text'
|
|
104
|
+
field_type: 'text',
|
|
105
|
+
select_fields: ['project_id']
|
|
94
106
|
},
|
|
95
107
|
{
|
|
96
108
|
name: 'Status',
|
|
97
109
|
value: 'status',
|
|
98
110
|
type: 'status',
|
|
99
111
|
field_type: 'select',
|
|
100
|
-
options: []
|
|
112
|
+
options: [],
|
|
113
|
+
select_fields: ['is_complete', 'is_ready']
|
|
101
114
|
},
|
|
102
115
|
{
|
|
103
116
|
name: 'Region',
|
|
104
117
|
value: 'region',
|
|
105
118
|
type: 'region',
|
|
106
119
|
field_type: 'checkbox',
|
|
107
|
-
options: []
|
|
120
|
+
options: [],
|
|
121
|
+
select_fields: ['region_id']
|
|
108
122
|
},
|
|
109
123
|
{
|
|
110
124
|
name: 'Description',
|
|
111
125
|
value: 'notes',
|
|
112
126
|
type: 'notes',
|
|
113
|
-
field_type: 'textarea'
|
|
127
|
+
field_type: 'textarea',
|
|
128
|
+
select_fields: ['notes']
|
|
114
129
|
},
|
|
115
130
|
{
|
|
116
131
|
name: 'Cancelled',
|
|
@@ -126,10 +141,12 @@ module.exports.defaultCustomColumns = [
|
|
|
126
141
|
label: 'No',
|
|
127
142
|
value: 'No'
|
|
128
143
|
}
|
|
129
|
-
]
|
|
144
|
+
],
|
|
145
|
+
select_fields: ['on_hold']
|
|
130
146
|
},
|
|
131
147
|
{
|
|
132
|
-
validate: (validator) =>
|
|
148
|
+
validate: (validator) =>
|
|
149
|
+
validator && (validator.isCommercial() || validator.isService()),
|
|
133
150
|
name: 'Is Paused',
|
|
134
151
|
value: 'is_paused',
|
|
135
152
|
type: 'is_paused',
|
|
@@ -143,57 +160,66 @@ module.exports.defaultCustomColumns = [
|
|
|
143
160
|
label: 'No',
|
|
144
161
|
value: 'No'
|
|
145
162
|
}
|
|
146
|
-
]
|
|
163
|
+
],
|
|
164
|
+
select_fields: ['is_paused']
|
|
147
165
|
},
|
|
148
166
|
{
|
|
149
167
|
name: 'Last Comment',
|
|
150
168
|
value: 'last_comment',
|
|
151
169
|
type: 'last_comment',
|
|
152
|
-
field_type: 'textarea'
|
|
170
|
+
field_type: 'textarea',
|
|
171
|
+
select_fields: ['last_comment_data']
|
|
153
172
|
},
|
|
154
173
|
{
|
|
155
174
|
name: 'Last Comment Date',
|
|
156
175
|
value: 'last_comment_date',
|
|
157
176
|
type: 'last_comment_date',
|
|
158
|
-
field_type: 'date'
|
|
177
|
+
field_type: 'date',
|
|
178
|
+
select_fields: ['last_comment_data']
|
|
159
179
|
},
|
|
160
180
|
{
|
|
161
181
|
name: 'Due Date',
|
|
162
182
|
value: 'due_date',
|
|
163
183
|
type: 'due_date',
|
|
164
|
-
field_type: 'date'
|
|
184
|
+
field_type: 'date',
|
|
185
|
+
select_fields: ['due_date']
|
|
165
186
|
},
|
|
166
187
|
{
|
|
167
188
|
name: 'Completed By',
|
|
168
189
|
value: 'completed_by',
|
|
169
190
|
type: 'completed_by',
|
|
170
191
|
field_type: 'select',
|
|
171
|
-
options: []
|
|
192
|
+
options: [],
|
|
193
|
+
select_fields: ['owner', 'completed_by']
|
|
172
194
|
},
|
|
173
195
|
{
|
|
174
196
|
name: 'Completed At',
|
|
175
197
|
value: 'completed_at',
|
|
176
198
|
type: 'completed_at',
|
|
177
|
-
field_type: 'date'
|
|
199
|
+
field_type: 'date',
|
|
200
|
+
select_fields: ['completed_at']
|
|
178
201
|
},
|
|
179
202
|
{
|
|
180
203
|
name: 'Created',
|
|
181
204
|
value: 'created_at',
|
|
182
205
|
type: 'created_at',
|
|
183
|
-
field_type: 'date'
|
|
206
|
+
field_type: 'date',
|
|
207
|
+
select_fields: ['created_at']
|
|
184
208
|
},
|
|
185
209
|
{
|
|
186
210
|
name: 'Updated',
|
|
187
211
|
value: 'updated_at',
|
|
188
212
|
type: 'updated_at',
|
|
189
|
-
field_type: 'date'
|
|
213
|
+
field_type: 'date',
|
|
214
|
+
select_fields: ['updated_at']
|
|
190
215
|
},
|
|
191
216
|
{
|
|
192
217
|
name: 'Critical Path Stage',
|
|
193
218
|
value: 'critical_path_stage',
|
|
194
219
|
type: 'critical_path_stage',
|
|
195
220
|
field_type: 'select',
|
|
196
|
-
options: []
|
|
221
|
+
options: [],
|
|
222
|
+
select_fields: ['critical_path']
|
|
197
223
|
},
|
|
198
224
|
{
|
|
199
225
|
name: 'Was Marked Incomplete',
|
|
@@ -209,26 +235,30 @@ module.exports.defaultCustomColumns = [
|
|
|
209
235
|
label: 'No',
|
|
210
236
|
value: 'No'
|
|
211
237
|
}
|
|
212
|
-
]
|
|
238
|
+
],
|
|
239
|
+
select_fields: ['was_marked_incomplete']
|
|
213
240
|
},
|
|
214
241
|
{
|
|
215
242
|
name: 'Marked Incomplete At',
|
|
216
243
|
value: 'marked_incomplete_at',
|
|
217
244
|
type: 'marked_incomplete_at',
|
|
218
|
-
field_type: 'date'
|
|
245
|
+
field_type: 'date',
|
|
246
|
+
select_fields: ['marked_incomplete_at']
|
|
219
247
|
},
|
|
220
248
|
{
|
|
221
249
|
name: 'Banners',
|
|
222
250
|
value: 'project_banner',
|
|
223
251
|
type: 'project_banner',
|
|
224
252
|
field_type: 'checkbox',
|
|
225
|
-
options: PROJECT_BANNERS
|
|
253
|
+
options: PROJECT_BANNERS,
|
|
254
|
+
select_fields: ['project_banner']
|
|
226
255
|
},
|
|
227
256
|
{
|
|
228
257
|
name: 'Is Starred',
|
|
229
258
|
value: 'is_starred',
|
|
230
259
|
type: 'is_starred',
|
|
231
|
-
field_type: 'boolean'
|
|
260
|
+
field_type: 'boolean',
|
|
261
|
+
select_fields: ['is_starred']
|
|
232
262
|
}
|
|
233
263
|
];
|
|
234
264
|
|
package/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ declare namespace Utils {
|
|
|
10
10
|
type: string;
|
|
11
11
|
field_type: string;
|
|
12
12
|
options?: FilterConditionOption[];
|
|
13
|
+
select_fields?: string[];
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export interface Filter {
|
|
@@ -75,6 +76,7 @@ declare namespace Utils {
|
|
|
75
76
|
export function getTaskAge(task: any): any;
|
|
76
77
|
export function getTaskAgeColor(task: any): any;
|
|
77
78
|
export function getDaysToComplete(task: any): undefined | number;
|
|
79
|
+
export function buildSourceParams(columns: string[]): any;
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
namespace projectPipeline {
|
|
@@ -89,6 +91,7 @@ declare namespace Utils {
|
|
|
89
91
|
searchFields?: string[]
|
|
90
92
|
): any;
|
|
91
93
|
export function buildSortScript(query?: Query, customSort?: any[]): any;
|
|
94
|
+
export function buildSourceParams(columns: string[]): any;
|
|
92
95
|
}
|
|
93
96
|
|
|
94
97
|
namespace queries {
|
package/lib/projectPipeline.js
CHANGED
|
@@ -6,6 +6,7 @@ const {
|
|
|
6
6
|
} = require('../helpers/projectFilter');
|
|
7
7
|
const searchFilter = require('../helpers/searchFilter');
|
|
8
8
|
const sortScript = require('../helpers/sortScript');
|
|
9
|
+
const sourceParams = require('../helpers/sourceParams');
|
|
9
10
|
|
|
10
11
|
class ProjectPipeline {
|
|
11
12
|
defaultCustomColumns = defaultCustomColumns;
|
|
@@ -143,6 +144,14 @@ class ProjectPipeline {
|
|
|
143
144
|
|
|
144
145
|
return projectPipelinesSort;
|
|
145
146
|
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Generates elasticsearch _source and script_fields params to only fetch selected fields specified as columns
|
|
150
|
+
* @returns {Object} - Elasticsearch params object.
|
|
151
|
+
*/
|
|
152
|
+
buildSourceParams(columns = []) {
|
|
153
|
+
return sourceParams(columns, defaultCustomColumns);
|
|
154
|
+
}
|
|
146
155
|
}
|
|
147
156
|
|
|
148
157
|
module.exports = new ProjectPipeline();
|
package/lib/taskPipeline.js
CHANGED
|
@@ -12,6 +12,7 @@ const {
|
|
|
12
12
|
const searchFilter = require('../helpers/searchFilter');
|
|
13
13
|
const sortScript = require('../helpers/sortScript');
|
|
14
14
|
const taskHelper = require('../helpers/task');
|
|
15
|
+
const sourceParams = require('../helpers/sourceParams');
|
|
15
16
|
|
|
16
17
|
class TaskPipeline {
|
|
17
18
|
taskStatusOptions = taskStatusOptions;
|
|
@@ -220,6 +221,14 @@ class TaskPipeline {
|
|
|
220
221
|
|
|
221
222
|
return ageColor;
|
|
222
223
|
}
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Generates elasticsearch _source and script_fields params to only fetch selected fields specified as columns
|
|
227
|
+
* @returns {Object} - Elasticsearch params object.
|
|
228
|
+
*/
|
|
229
|
+
buildSourceParams(columns = []) {
|
|
230
|
+
return sourceParams(columns, defaultCustomColumns);
|
|
231
|
+
}
|
|
223
232
|
}
|
|
224
233
|
|
|
225
234
|
module.exports = new TaskPipeline();
|
package/package.json
CHANGED
|
@@ -35,28 +35,26 @@ describe('projectPipeline', function () {
|
|
|
35
35
|
{
|
|
36
36
|
wildcard: {
|
|
37
37
|
id: {
|
|
38
|
-
value:
|
|
38
|
+
value: '*COM*'
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
43
|
wildcard: {
|
|
44
44
|
id: {
|
|
45
|
-
value:
|
|
45
|
+
value: '*41853*'
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
multi_match: {
|
|
51
|
-
query:
|
|
52
|
-
fields: [
|
|
53
|
-
"project_id^5"
|
|
54
|
-
]
|
|
51
|
+
query: 'COM-41853',
|
|
52
|
+
fields: ['project_id^5']
|
|
55
53
|
}
|
|
56
54
|
},
|
|
57
55
|
{
|
|
58
56
|
match_phrase_prefix: {
|
|
59
|
-
name:
|
|
57
|
+
name: 'COM-41853'
|
|
60
58
|
}
|
|
61
59
|
}
|
|
62
60
|
]
|
|
@@ -91,28 +89,26 @@ describe('projectPipeline', function () {
|
|
|
91
89
|
{
|
|
92
90
|
wildcard: {
|
|
93
91
|
id: {
|
|
94
|
-
value:
|
|
92
|
+
value: '*com*'
|
|
95
93
|
}
|
|
96
94
|
}
|
|
97
95
|
},
|
|
98
96
|
{
|
|
99
97
|
wildcard: {
|
|
100
98
|
id: {
|
|
101
|
-
value:
|
|
99
|
+
value: '*41853*'
|
|
102
100
|
}
|
|
103
101
|
}
|
|
104
102
|
},
|
|
105
103
|
{
|
|
106
104
|
multi_match: {
|
|
107
|
-
query:
|
|
108
|
-
fields: [
|
|
109
|
-
"project_id^5"
|
|
110
|
-
]
|
|
105
|
+
query: 'com-41853',
|
|
106
|
+
fields: ['project_id^5']
|
|
111
107
|
}
|
|
112
108
|
},
|
|
113
109
|
{
|
|
114
110
|
match_phrase_prefix: {
|
|
115
|
-
name:
|
|
111
|
+
name: 'com-41853'
|
|
116
112
|
}
|
|
117
113
|
}
|
|
118
114
|
]
|
|
@@ -120,7 +116,8 @@ describe('projectPipeline', function () {
|
|
|
120
116
|
}
|
|
121
117
|
]
|
|
122
118
|
}
|
|
123
|
-
}
|
|
119
|
+
}
|
|
120
|
+
},
|
|
124
121
|
{
|
|
125
122
|
search: '41853',
|
|
126
123
|
expected: {
|
|
@@ -146,21 +143,19 @@ describe('projectPipeline', function () {
|
|
|
146
143
|
{
|
|
147
144
|
wildcard: {
|
|
148
145
|
id: {
|
|
149
|
-
value:
|
|
146
|
+
value: '*41853*'
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
149
|
},
|
|
153
150
|
{
|
|
154
151
|
multi_match: {
|
|
155
|
-
query:
|
|
156
|
-
fields: [
|
|
157
|
-
"project_id^5"
|
|
158
|
-
]
|
|
152
|
+
query: '41853',
|
|
153
|
+
fields: ['project_id^5']
|
|
159
154
|
}
|
|
160
155
|
},
|
|
161
156
|
{
|
|
162
157
|
match_phrase_prefix: {
|
|
163
|
-
name:
|
|
158
|
+
name: '41853'
|
|
164
159
|
}
|
|
165
160
|
}
|
|
166
161
|
]
|
|
@@ -168,10 +163,11 @@ describe('projectPipeline', function () {
|
|
|
168
163
|
}
|
|
169
164
|
]
|
|
170
165
|
}
|
|
171
|
-
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
172
168
|
];
|
|
173
169
|
|
|
174
|
-
entries.forEach(entry => {
|
|
170
|
+
entries.forEach((entry) => {
|
|
175
171
|
it(`it should search Project ID correctly for ${entry.search}`, (done) => {
|
|
176
172
|
const query = {
|
|
177
173
|
search: entry.search
|
|
@@ -211,4 +207,70 @@ describe('projectPipeline', function () {
|
|
|
211
207
|
});
|
|
212
208
|
});
|
|
213
209
|
});
|
|
210
|
+
|
|
211
|
+
describe('buildSourceParams', () => {
|
|
212
|
+
it('should generate es query source params', () => {
|
|
213
|
+
expect(projectPipeline.buildSourceParams([])).to.be.deep.equal({
|
|
214
|
+
_source: []
|
|
215
|
+
});
|
|
216
|
+
expect(
|
|
217
|
+
projectPipeline.buildSourceParams([
|
|
218
|
+
'banner',
|
|
219
|
+
'bca57cb8-59b0-4240-a776-9101564e1fab',
|
|
220
|
+
'981bf602-f636-49c6-8da2-d980064c88d7',
|
|
221
|
+
'11019ff2-1749-433d-83cf-51dea9cb7a7c',
|
|
222
|
+
'region',
|
|
223
|
+
'38d423bf-fc24-4183-b8b7-15420c89e318',
|
|
224
|
+
'7fb0c729-478b-4c89-ae68-8d6e2360e39a',
|
|
225
|
+
'74496f2f-0ef5-4490-881c-c51a890c015b',
|
|
226
|
+
'project_id',
|
|
227
|
+
'0b6852f7-826b-441a-8822-9a35e618a039',
|
|
228
|
+
'c594b289-c28e-4baf-8a59-ee51bf89ea4b',
|
|
229
|
+
'c0df7ba3-4f2c-4ff7-b8a7-40ad9ee65738',
|
|
230
|
+
'on_hold',
|
|
231
|
+
'tags',
|
|
232
|
+
'5bf3d5e3-2cac-42b1-a649-e98d4291ee72',
|
|
233
|
+
'is_generated',
|
|
234
|
+
'29c629e4-82c1-4aec-a7d3-ab71390dd188',
|
|
235
|
+
'15ac5ffd-1830-4e18-ade6-3213690efbac',
|
|
236
|
+
'criticalPathAge',
|
|
237
|
+
'criticalPathStage',
|
|
238
|
+
'created_at',
|
|
239
|
+
'lastPulseComment',
|
|
240
|
+
'lastPulseCommentUser',
|
|
241
|
+
'lastPulseCommentDate',
|
|
242
|
+
'1c5508e9-ddd5-4dd6-8769-fabfb8752275',
|
|
243
|
+
'ccd299a5-e4b3-4671-9372-493f9ea6af86',
|
|
244
|
+
'2abf2cb0-2c4f-4b53-926e-c04b0da21046',
|
|
245
|
+
'c52a8efe-b33d-4cc0-8a35-0f63a1a20760',
|
|
246
|
+
'updated_at',
|
|
247
|
+
'608830c0-11f2-4f79-9664-906f3fd56045',
|
|
248
|
+
'8d6d39d6-d2ac-4270-85e3-e62bcc098bf7',
|
|
249
|
+
'2acbd4b2-8242-46ec-9949-b058f783314b',
|
|
250
|
+
'0f56d018-547a-4481-ad91-a66f171d485e'
|
|
251
|
+
])
|
|
252
|
+
).to.be.deep.equal({
|
|
253
|
+
_source: [
|
|
254
|
+
'banner',
|
|
255
|
+
'region_id',
|
|
256
|
+
'_id',
|
|
257
|
+
'on_hold',
|
|
258
|
+
'tag_ids',
|
|
259
|
+
'is_generated',
|
|
260
|
+
'critical_path',
|
|
261
|
+
'created_at',
|
|
262
|
+
'last_pulse_data',
|
|
263
|
+
'updated_at'
|
|
264
|
+
],
|
|
265
|
+
script_fields: {
|
|
266
|
+
filtered_fields: {
|
|
267
|
+
script: {
|
|
268
|
+
source:
|
|
269
|
+
"\n def fieldIds = ['bca57cb8-59b0-4240-a776-9101564e1fab','981bf602-f636-49c6-8da2-d980064c88d7','11019ff2-1749-433d-83cf-51dea9cb7a7c','38d423bf-fc24-4183-b8b7-15420c89e318','7fb0c729-478b-4c89-ae68-8d6e2360e39a','74496f2f-0ef5-4490-881c-c51a890c015b','0b6852f7-826b-441a-8822-9a35e618a039','c594b289-c28e-4baf-8a59-ee51bf89ea4b','c0df7ba3-4f2c-4ff7-b8a7-40ad9ee65738','5bf3d5e3-2cac-42b1-a649-e98d4291ee72','29c629e4-82c1-4aec-a7d3-ab71390dd188','15ac5ffd-1830-4e18-ade6-3213690efbac','1c5508e9-ddd5-4dd6-8769-fabfb8752275','ccd299a5-e4b3-4671-9372-493f9ea6af86','2abf2cb0-2c4f-4b53-926e-c04b0da21046','c52a8efe-b33d-4cc0-8a35-0f63a1a20760','608830c0-11f2-4f79-9664-906f3fd56045','8d6d39d6-d2ac-4270-85e3-e62bcc098bf7','2acbd4b2-8242-46ec-9949-b058f783314b','0f56d018-547a-4481-ad91-a66f171d485e'];\n def result = [];\n for (f in params['_source']['fields']) {\n if (fieldIds.contains(f['id'])) {\n result.add(f);\n }\n }\n return result;\n "
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
});
|
|
274
|
+
});
|
|
275
|
+
});
|
|
214
276
|
});
|
|
@@ -205,14 +205,14 @@ describe('taskPipeline', function () {
|
|
|
205
205
|
{
|
|
206
206
|
term: {
|
|
207
207
|
organization_id: {
|
|
208
|
-
value:
|
|
208
|
+
value: 'test-org'
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
211
|
},
|
|
212
212
|
{
|
|
213
213
|
term: {
|
|
214
214
|
department_id: {
|
|
215
|
-
value:
|
|
215
|
+
value: 'test-department'
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
218
|
},
|
|
@@ -228,7 +228,7 @@ describe('taskPipeline', function () {
|
|
|
228
228
|
bool: {
|
|
229
229
|
must_not: {
|
|
230
230
|
exists: {
|
|
231
|
-
field:
|
|
231
|
+
field: 'on_hold'
|
|
232
232
|
}
|
|
233
233
|
}
|
|
234
234
|
}
|
|
@@ -379,140 +379,148 @@ describe('taskPipeline', function () {
|
|
|
379
379
|
expect(sort).to.deep.equal([
|
|
380
380
|
{
|
|
381
381
|
_script: {
|
|
382
|
-
type:
|
|
382
|
+
type: 'number',
|
|
383
383
|
script: {
|
|
384
|
-
lang:
|
|
385
|
-
source:
|
|
384
|
+
lang: 'painless',
|
|
385
|
+
source:
|
|
386
|
+
'\n if (params.starredTaskIds.contains(doc._id.value)) {\n return 1;\n } else {\n return 0;\n }\n ',
|
|
386
387
|
params: {
|
|
387
|
-
starredTaskIds: [
|
|
388
|
-
"task-1",
|
|
389
|
-
"task-2"
|
|
390
|
-
]
|
|
388
|
+
starredTaskIds: ['task-1', 'task-2']
|
|
391
389
|
}
|
|
392
390
|
},
|
|
393
|
-
order:
|
|
391
|
+
order: 'desc'
|
|
394
392
|
}
|
|
395
393
|
},
|
|
396
394
|
{
|
|
397
395
|
region_name: {
|
|
398
|
-
order:
|
|
396
|
+
order: 'asc'
|
|
399
397
|
}
|
|
400
398
|
},
|
|
401
399
|
{
|
|
402
400
|
_script: {
|
|
403
|
-
type:
|
|
401
|
+
type: 'string',
|
|
404
402
|
script: {
|
|
405
|
-
lang:
|
|
406
|
-
source:
|
|
403
|
+
lang: 'painless',
|
|
404
|
+
source:
|
|
405
|
+
"\n try {\n String owner = doc['owner'].value;\n\n if (owner != '' && owner != null) {\n return owner.toLowerCase();\n }\n } catch (Exception err) {}\n\n return '';\n "
|
|
407
406
|
},
|
|
408
|
-
order:
|
|
407
|
+
order: 'asc'
|
|
409
408
|
}
|
|
410
409
|
},
|
|
411
410
|
{
|
|
412
411
|
_script: {
|
|
413
|
-
type:
|
|
412
|
+
type: 'string',
|
|
414
413
|
script: {
|
|
415
|
-
lang:
|
|
416
|
-
source:
|
|
414
|
+
lang: 'painless',
|
|
415
|
+
source:
|
|
416
|
+
"\n try {\n String owner = doc['owner'].value;\n\n if (owner != '' && owner != null) {\n return owner.toLowerCase();\n }\n } catch (Exception err) {}\n\n return '';\n "
|
|
417
417
|
},
|
|
418
|
-
order:
|
|
418
|
+
order: 'asc'
|
|
419
419
|
}
|
|
420
420
|
},
|
|
421
421
|
{
|
|
422
422
|
_script: {
|
|
423
|
-
type:
|
|
423
|
+
type: 'string',
|
|
424
424
|
script: {
|
|
425
|
-
lang:
|
|
426
|
-
source:
|
|
425
|
+
lang: 'painless',
|
|
426
|
+
source:
|
|
427
|
+
"\n try {\n boolean isReady = doc['is_ready'].value;\n boolean isComplete = doc['is_complete'].value;\n\n if (isReady == true) {\n if (isComplete == true) {\n return 'completed';\n }\n\n return 'pending';\n }\n\n return 'new';\n } catch (Exception err) {\n return '';\n }\n "
|
|
427
428
|
},
|
|
428
|
-
order:
|
|
429
|
+
order: 'desc'
|
|
429
430
|
}
|
|
430
431
|
},
|
|
431
432
|
{
|
|
432
433
|
_script: {
|
|
433
|
-
type:
|
|
434
|
+
type: 'number',
|
|
434
435
|
script: {
|
|
435
|
-
lang:
|
|
436
|
-
source:
|
|
436
|
+
lang: 'painless',
|
|
437
|
+
source:
|
|
438
|
+
"\n try {\n def stageIndex = doc['critical_path.stage_index'].value;\n if (stageIndex != null) {\n return stageIndex;\n }\n\n return 9999999;\n } catch (Exception err) {\n return 9999999;\n }\n "
|
|
437
439
|
},
|
|
438
|
-
order:
|
|
440
|
+
order: 'desc'
|
|
439
441
|
}
|
|
440
442
|
},
|
|
441
443
|
{
|
|
442
444
|
_script: {
|
|
443
|
-
type:
|
|
445
|
+
type: 'number',
|
|
444
446
|
script: {
|
|
445
|
-
lang:
|
|
446
|
-
source:
|
|
447
|
+
lang: 'painless',
|
|
448
|
+
source:
|
|
449
|
+
"\n def projectNumber = params._source.project_id;\n projectNumber = /[^0-9]/.matcher(projectNumber).replaceAll('');\n return Integer.parseInt(projectNumber);\n "
|
|
447
450
|
},
|
|
448
|
-
order:
|
|
451
|
+
order: 'desc'
|
|
449
452
|
}
|
|
450
453
|
},
|
|
451
454
|
{
|
|
452
455
|
_script: {
|
|
453
|
-
type:
|
|
456
|
+
type: 'number',
|
|
454
457
|
script: {
|
|
455
|
-
lang:
|
|
456
|
-
source:
|
|
458
|
+
lang: 'painless',
|
|
459
|
+
source:
|
|
460
|
+
"\n try {\n boolean isReady = doc['is_ready'].value;\n boolean isComplete = doc['is_complete'].value;\n\n if (isReady == true && isComplete == true && doc.containsKey('completed_at') && !doc['completed_at'].empty) {\n return doc['completed_at'].value.millis;\n } else if (isReady == true && doc.containsKey('ready_at') && !doc['ready_at'].empty) {\n return doc['ready_at'].value.millis;\n }\n\n return doc['created_at'].value.millis;\n } catch (Exception err) {\n return 0;\n }\n "
|
|
457
461
|
},
|
|
458
|
-
order:
|
|
462
|
+
order: 'desc'
|
|
459
463
|
}
|
|
460
464
|
},
|
|
461
465
|
{
|
|
462
466
|
_script: {
|
|
463
|
-
type:
|
|
467
|
+
type: 'number',
|
|
464
468
|
script: {
|
|
465
|
-
lang:
|
|
466
|
-
source:
|
|
469
|
+
lang: 'painless',
|
|
470
|
+
source:
|
|
471
|
+
"\n return doc['was_marked_incomplete'].empty\n ? 0\n : doc['was_marked_incomplete'].value ? 1 : 0;\n "
|
|
467
472
|
},
|
|
468
|
-
order:
|
|
473
|
+
order: 'desc'
|
|
469
474
|
}
|
|
470
475
|
},
|
|
471
476
|
{
|
|
472
|
-
|
|
473
|
-
order:
|
|
477
|
+
'last_comment_data.created_at': {
|
|
478
|
+
order: 'desc'
|
|
474
479
|
}
|
|
475
480
|
},
|
|
476
481
|
{
|
|
477
482
|
_script: {
|
|
478
|
-
type:
|
|
483
|
+
type: 'number',
|
|
479
484
|
script: {
|
|
480
|
-
lang:
|
|
481
|
-
source:
|
|
485
|
+
lang: 'painless',
|
|
486
|
+
source:
|
|
487
|
+
"\n return doc['is_paused'].empty\n ? 0\n : doc['is_paused'].value ? 1 : 0;\n "
|
|
482
488
|
},
|
|
483
|
-
order:
|
|
489
|
+
order: 'desc'
|
|
484
490
|
}
|
|
485
491
|
},
|
|
486
492
|
{
|
|
487
493
|
_script: {
|
|
488
|
-
type:
|
|
494
|
+
type: 'number',
|
|
489
495
|
script: {
|
|
490
|
-
lang:
|
|
491
|
-
source:
|
|
496
|
+
lang: 'painless',
|
|
497
|
+
source:
|
|
498
|
+
'\n try {\n def fields = params._source.fields;\n\n for (int i=0; i<fields.size(); i++) {\n if (fields[i].id.equals(params.value)) {\n if (fields[i].number != null) {\n return fields[i].number;\n } else {\n return -999999;\n }\n }\n }\n\n return -999999;\n } catch (Exception err) {\n return -999999;\n }\n ',
|
|
492
499
|
params: {
|
|
493
|
-
value:
|
|
500
|
+
value: '38d423bf-fc24-4183-b8b7-15420c89e318'
|
|
494
501
|
}
|
|
495
502
|
},
|
|
496
|
-
order:
|
|
503
|
+
order: 'desc'
|
|
497
504
|
}
|
|
498
505
|
},
|
|
499
506
|
{
|
|
500
507
|
_script: {
|
|
501
|
-
type:
|
|
508
|
+
type: 'string',
|
|
502
509
|
script: {
|
|
503
|
-
lang:
|
|
504
|
-
source:
|
|
510
|
+
lang: 'painless',
|
|
511
|
+
source:
|
|
512
|
+
"\n try {\n String textInfo = '';\n def fields = params._source.fields;\n\n for (int i=0; i<fields.size(); i++) {\n if (fields[i].id.equals(params.value)) {\n\n if (fields[i].number != null) {\n return '';\n }\n\n textInfo = fields[i].text == null ? '' : fields[i].text;\n if (fields[i].containsKey('computedText')) {\n textInfo = fields[i].computedText == null ? textInfo : fields[i].computedText;\n }\n }\n }\n\n return textInfo;\n } catch (Exception err) {\n return '';\n }\n ",
|
|
505
513
|
params: {
|
|
506
|
-
value:
|
|
514
|
+
value: '38d423bf-fc24-4183-b8b7-15420c89e318'
|
|
507
515
|
}
|
|
508
516
|
},
|
|
509
|
-
order:
|
|
517
|
+
order: 'desc'
|
|
510
518
|
}
|
|
511
519
|
},
|
|
512
520
|
{
|
|
513
521
|
id: {
|
|
514
|
-
order:
|
|
515
|
-
missing:
|
|
522
|
+
order: 'desc',
|
|
523
|
+
missing: '_last'
|
|
516
524
|
}
|
|
517
525
|
}
|
|
518
526
|
]);
|
|
@@ -670,4 +678,95 @@ describe('taskPipeline', function () {
|
|
|
670
678
|
});
|
|
671
679
|
});
|
|
672
680
|
});
|
|
681
|
+
|
|
682
|
+
describe('buildSourceParams', () => {
|
|
683
|
+
it('should generate es query source params', () => {
|
|
684
|
+
expect(taskPipeline.buildSourceParams([])).to.be.deep.equal({
|
|
685
|
+
_source: []
|
|
686
|
+
});
|
|
687
|
+
expect(
|
|
688
|
+
taskPipeline.buildSourceParams([
|
|
689
|
+
'project_id',
|
|
690
|
+
'owner',
|
|
691
|
+
'ready_at',
|
|
692
|
+
'last_comment',
|
|
693
|
+
'last_comment_date',
|
|
694
|
+
'completed_at',
|
|
695
|
+
'on_hold',
|
|
696
|
+
'3a987cf6-e9e5-47ea-850d-2a913bd3973f',
|
|
697
|
+
'6dcf3721-ba72-4ba7-ba35-5c9bb59cd094',
|
|
698
|
+
'96f07b8e-b345-4e59-a4a4-6f09b6a23977',
|
|
699
|
+
'80878a1d-b688-4a4e-8bdd-f0a65496b444',
|
|
700
|
+
'region',
|
|
701
|
+
'38d423bf-fc24-4183-b8b7-15420c89e318',
|
|
702
|
+
'11019ff2-1749-433d-83cf-51dea9cb7a7c',
|
|
703
|
+
'1c5508e9-ddd5-4dd6-8769-fabfb8752275',
|
|
704
|
+
'notes',
|
|
705
|
+
'project_banner',
|
|
706
|
+
'completed_by',
|
|
707
|
+
'created_at',
|
|
708
|
+
'critical_path_stage',
|
|
709
|
+
'5f6a8066-cc1b-4004-aead-17fc2573934f',
|
|
710
|
+
'days_to_complete',
|
|
711
|
+
'due_date',
|
|
712
|
+
'is_starred',
|
|
713
|
+
'marked_incomplete_at',
|
|
714
|
+
'pending_date',
|
|
715
|
+
'96f54434-d08e-4178-951b-24434c4ace46',
|
|
716
|
+
'81ebe833-9abe-48c3-88a4-7e7abc3f7bb2',
|
|
717
|
+
'a0437397-918c-49a5-93e5-46c51d72d14d',
|
|
718
|
+
'43f1866a-0fa4-4d39-9a1e-65ec3754efa5',
|
|
719
|
+
'af31fd1b-a289-4d25-8ae4-56a81eaf214a',
|
|
720
|
+
'049a46cc-df47-4c49-8c80-e9f3c73363ee',
|
|
721
|
+
'was_marked_incomplete',
|
|
722
|
+
'c81315d1-21ab-48f7-a00f-99ca29fc02ea',
|
|
723
|
+
'066b8231-4689-437a-8872-a6cddabc6b8a',
|
|
724
|
+
'6ee1e6a6-b554-4fba-a786-2e6c49b24aba',
|
|
725
|
+
'c6d14bbc-f9e8-4462-aaa8-9efafc07a7c8',
|
|
726
|
+
'2377f66b-f181-4452-8432-df78d875b455',
|
|
727
|
+
'status',
|
|
728
|
+
'updated_at',
|
|
729
|
+
'608830c0-11f2-4f79-9664-906f3fd56045',
|
|
730
|
+
'2abf2cb0-2c4f-4b53-926e-c04b0da21046',
|
|
731
|
+
'8d6d39d6-d2ac-4270-85e3-e62bcc098bf7',
|
|
732
|
+
'2acbd4b2-8242-46ec-9949-b058f783314b',
|
|
733
|
+
'7fb0c729-478b-4c89-ae68-8d6e2360e39a',
|
|
734
|
+
'18d7567f-873a-40a2-a94a-ee82242b0fa5',
|
|
735
|
+
'80e83585-91d3-463c-8fff-e4f0311f694f'
|
|
736
|
+
])
|
|
737
|
+
).to.be.deep.equal({
|
|
738
|
+
_source: [
|
|
739
|
+
'project_id',
|
|
740
|
+
'user_id',
|
|
741
|
+
'team_id',
|
|
742
|
+
'is_complete',
|
|
743
|
+
'completed_at',
|
|
744
|
+
'is_ready',
|
|
745
|
+
'ready_at',
|
|
746
|
+
'created_at',
|
|
747
|
+
'last_comment_data',
|
|
748
|
+
'on_hold',
|
|
749
|
+
'region_id',
|
|
750
|
+
'notes',
|
|
751
|
+
'project_banner',
|
|
752
|
+
'owner',
|
|
753
|
+
'completed_by',
|
|
754
|
+
'critical_path',
|
|
755
|
+
'due_date',
|
|
756
|
+
'is_starred',
|
|
757
|
+
'marked_incomplete_at',
|
|
758
|
+
'was_marked_incomplete',
|
|
759
|
+
'updated_at'
|
|
760
|
+
],
|
|
761
|
+
script_fields: {
|
|
762
|
+
filtered_fields: {
|
|
763
|
+
script: {
|
|
764
|
+
source:
|
|
765
|
+
"\n def fieldIds = ['3a987cf6-e9e5-47ea-850d-2a913bd3973f','6dcf3721-ba72-4ba7-ba35-5c9bb59cd094','96f07b8e-b345-4e59-a4a4-6f09b6a23977','80878a1d-b688-4a4e-8bdd-f0a65496b444','38d423bf-fc24-4183-b8b7-15420c89e318','11019ff2-1749-433d-83cf-51dea9cb7a7c','1c5508e9-ddd5-4dd6-8769-fabfb8752275','5f6a8066-cc1b-4004-aead-17fc2573934f','96f54434-d08e-4178-951b-24434c4ace46','81ebe833-9abe-48c3-88a4-7e7abc3f7bb2','a0437397-918c-49a5-93e5-46c51d72d14d','43f1866a-0fa4-4d39-9a1e-65ec3754efa5','af31fd1b-a289-4d25-8ae4-56a81eaf214a','049a46cc-df47-4c49-8c80-e9f3c73363ee','c81315d1-21ab-48f7-a00f-99ca29fc02ea','066b8231-4689-437a-8872-a6cddabc6b8a','6ee1e6a6-b554-4fba-a786-2e6c49b24aba','c6d14bbc-f9e8-4462-aaa8-9efafc07a7c8','2377f66b-f181-4452-8432-df78d875b455','608830c0-11f2-4f79-9664-906f3fd56045','2abf2cb0-2c4f-4b53-926e-c04b0da21046','8d6d39d6-d2ac-4270-85e3-e62bcc098bf7','2acbd4b2-8242-46ec-9949-b058f783314b','7fb0c729-478b-4c89-ae68-8d6e2360e39a','18d7567f-873a-40a2-a94a-ee82242b0fa5','80e83585-91d3-463c-8fff-e4f0311f694f'];\n def result = [];\n for (f in params['_source']['fields']) {\n if (fieldIds.contains(f['id'])) {\n result.add(f);\n }\n }\n return result;\n "
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
}
|
|
769
|
+
});
|
|
770
|
+
});
|
|
771
|
+
});
|
|
673
772
|
});
|