@outliant/sunrise-utils 1.2.1 → 1.2.2
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 +7 -0
- package/helpers/projectFilter/index.js +28 -14
- package/helpers/sourceParams.js +45 -0
- package/helpers/taskFilter/index.js +50 -22
- 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/CHANGELOG.md
CHANGED
|
@@ -4,8 +4,15 @@ 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.2](https://github.com/outliant/sunrise-utils/compare/1.2.1...1.2.2)
|
|
8
|
+
|
|
9
|
+
- chore: pipeline improvements #86b27p240 [`911f6dd`](https://github.com/outliant/sunrise-utils/commit/911f6dd7bdf2e26986aec0671d1610d18ebe5cfc)
|
|
10
|
+
|
|
7
11
|
#### [1.2.1](https://github.com/outliant/sunrise-utils/compare/1.2.0...1.2.1)
|
|
8
12
|
|
|
13
|
+
> 7 September 2024
|
|
14
|
+
|
|
15
|
+
- chore(release): 1.2.1 [`a10f2ea`](https://github.com/outliant/sunrise-utils/commit/a10f2ea60e39f40de1a9d5a33372e9209e53c935)
|
|
9
16
|
- chore: add credit-hold for project banners options [`94669b7`](https://github.com/outliant/sunrise-utils/commit/94669b7ba216596f5fb413d96a8a9dc466ca0c1e)
|
|
10
17
|
|
|
11
18
|
#### [1.2.0](https://github.com/outliant/sunrise-utils/compare/1.1.32...1.2.0)
|
|
@@ -14,31 +14,36 @@ 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
49
|
validate: (validator) => validator && validator.isCommercial(),
|
|
@@ -55,56 +60,65 @@ module.exports.defaultCustomColumns = [
|
|
|
55
60
|
label: 'No',
|
|
56
61
|
value: 'No'
|
|
57
62
|
}
|
|
58
|
-
]
|
|
63
|
+
],
|
|
64
|
+
select_fields: ['is_paused']
|
|
59
65
|
},
|
|
60
66
|
{
|
|
61
67
|
name: 'Is Generated',
|
|
62
68
|
value: 'is_generated',
|
|
63
69
|
type: 'is_generated',
|
|
64
|
-
field_type: 'select'
|
|
70
|
+
field_type: 'select',
|
|
71
|
+
select_fields: ['is_generated']
|
|
65
72
|
},
|
|
66
73
|
{
|
|
67
74
|
name: 'Project ID',
|
|
68
75
|
value: 'project_id',
|
|
69
76
|
type: 'project_id',
|
|
70
|
-
field_type: 'text'
|
|
77
|
+
field_type: 'text',
|
|
78
|
+
select_fields: ['_id']
|
|
71
79
|
},
|
|
72
80
|
{
|
|
73
81
|
name: 'Last Pulse Comment',
|
|
74
82
|
value: 'lastPulseComment',
|
|
75
83
|
type: 'lastPulseComment',
|
|
76
|
-
field_type: 'textarea'
|
|
84
|
+
field_type: 'textarea',
|
|
85
|
+
select_fields: ['last_pulse_data']
|
|
77
86
|
},
|
|
78
87
|
{
|
|
79
88
|
name: 'Last Pulse Comment User',
|
|
80
89
|
value: 'lastPulseCommentUser',
|
|
81
90
|
type: 'lastPulseCommentUser',
|
|
82
|
-
field_type: 'select'
|
|
91
|
+
field_type: 'select',
|
|
92
|
+
select_fields: ['last_pulse_data']
|
|
83
93
|
},
|
|
84
94
|
{
|
|
85
95
|
name: 'Last Pulse Comment Date',
|
|
86
96
|
value: 'lastPulseCommentDate',
|
|
87
97
|
type: 'lastPulseCommentDate',
|
|
88
|
-
field_type: 'date'
|
|
98
|
+
field_type: 'date',
|
|
99
|
+
select_fields: ['last_pulse_data']
|
|
89
100
|
},
|
|
90
101
|
{
|
|
91
102
|
name: 'Created',
|
|
92
103
|
value: 'created_at',
|
|
93
104
|
type: 'created_at',
|
|
94
|
-
field_type: 'date'
|
|
105
|
+
field_type: 'date',
|
|
106
|
+
select_fields: ['created_at']
|
|
95
107
|
},
|
|
96
108
|
{
|
|
97
109
|
name: 'Updated',
|
|
98
110
|
value: 'updated_at',
|
|
99
111
|
type: 'updated_at',
|
|
100
|
-
field_type: 'date'
|
|
112
|
+
field_type: 'date',
|
|
113
|
+
select_fields: ['updated_at']
|
|
101
114
|
},
|
|
102
115
|
{
|
|
103
116
|
name: 'Banners',
|
|
104
117
|
value: 'banner',
|
|
105
118
|
type: 'banner',
|
|
106
119
|
field_type: 'checkbox',
|
|
107
|
-
options: PROJECT_BANNERS
|
|
120
|
+
options: PROJECT_BANNERS,
|
|
121
|
+
select_fields: ['banner']
|
|
108
122
|
}
|
|
109
123
|
];
|
|
110
124
|
|
|
@@ -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
|
+
};
|
|
@@ -66,51 +66,65 @@ module.exports.defaultCustomColumns = [
|
|
|
66
66
|
value: 'owner',
|
|
67
67
|
type: 'owner',
|
|
68
68
|
field_type: 'select',
|
|
69
|
-
options: []
|
|
69
|
+
options: [],
|
|
70
|
+
select_fields: ['user_id', 'team_id']
|
|
70
71
|
},
|
|
71
72
|
{
|
|
72
73
|
name: 'Age',
|
|
73
74
|
value: 'ready_at',
|
|
74
75
|
type: 'ready_at',
|
|
75
|
-
field_type: 'date'
|
|
76
|
+
field_type: 'date',
|
|
77
|
+
select_fields: [
|
|
78
|
+
'is_complete',
|
|
79
|
+
'completed_at',
|
|
80
|
+
'is_ready',
|
|
81
|
+
'ready_at',
|
|
82
|
+
'created_at'
|
|
83
|
+
]
|
|
76
84
|
},
|
|
77
85
|
{
|
|
78
86
|
name: 'Days to Complete',
|
|
79
87
|
value: 'days_to_complete',
|
|
80
88
|
type: 'days_to_complete',
|
|
81
|
-
field_type: 'number'
|
|
89
|
+
field_type: 'number',
|
|
90
|
+
select_fields: ['ready_at', 'completed_at']
|
|
82
91
|
},
|
|
83
92
|
{
|
|
84
93
|
name: 'Pending Date',
|
|
85
94
|
value: 'pending_date',
|
|
86
95
|
type: 'pending_date',
|
|
87
|
-
field_type: 'date'
|
|
96
|
+
field_type: 'date',
|
|
97
|
+
select_fields: ['ready_at']
|
|
88
98
|
},
|
|
89
99
|
{
|
|
90
100
|
name: 'Project ID',
|
|
91
101
|
value: 'project_id',
|
|
92
102
|
type: 'project_id',
|
|
93
|
-
field_type: 'text'
|
|
103
|
+
field_type: 'text',
|
|
104
|
+
select_fields: ['project_id']
|
|
94
105
|
},
|
|
95
106
|
{
|
|
96
107
|
name: 'Status',
|
|
97
108
|
value: 'status',
|
|
98
109
|
type: 'status',
|
|
99
110
|
field_type: 'select',
|
|
100
|
-
options: []
|
|
111
|
+
options: [],
|
|
112
|
+
select_fields: ['is_complete', 'is_ready']
|
|
101
113
|
},
|
|
102
114
|
{
|
|
103
115
|
name: 'Region',
|
|
104
116
|
value: 'region',
|
|
105
117
|
type: 'region',
|
|
106
118
|
field_type: 'checkbox',
|
|
107
|
-
options: []
|
|
119
|
+
options: [],
|
|
120
|
+
select_fields: ['region_id']
|
|
108
121
|
},
|
|
109
122
|
{
|
|
110
123
|
name: 'Description',
|
|
111
124
|
value: 'notes',
|
|
112
125
|
type: 'notes',
|
|
113
|
-
field_type: 'textarea'
|
|
126
|
+
field_type: 'textarea',
|
|
127
|
+
select_fields: ['notes']
|
|
114
128
|
},
|
|
115
129
|
{
|
|
116
130
|
name: 'Cancelled',
|
|
@@ -126,7 +140,8 @@ module.exports.defaultCustomColumns = [
|
|
|
126
140
|
label: 'No',
|
|
127
141
|
value: 'No'
|
|
128
142
|
}
|
|
129
|
-
]
|
|
143
|
+
],
|
|
144
|
+
select_fields: ['on_hold']
|
|
130
145
|
},
|
|
131
146
|
{
|
|
132
147
|
validate: (validator) => validator && validator.isCommercial(),
|
|
@@ -143,57 +158,66 @@ module.exports.defaultCustomColumns = [
|
|
|
143
158
|
label: 'No',
|
|
144
159
|
value: 'No'
|
|
145
160
|
}
|
|
146
|
-
]
|
|
161
|
+
],
|
|
162
|
+
select_fields: ['is_paused']
|
|
147
163
|
},
|
|
148
164
|
{
|
|
149
165
|
name: 'Last Comment',
|
|
150
166
|
value: 'last_comment',
|
|
151
167
|
type: 'last_comment',
|
|
152
|
-
field_type: 'textarea'
|
|
168
|
+
field_type: 'textarea',
|
|
169
|
+
select_fields: ['last_comment_data']
|
|
153
170
|
},
|
|
154
171
|
{
|
|
155
172
|
name: 'Last Comment Date',
|
|
156
173
|
value: 'last_comment_date',
|
|
157
174
|
type: 'last_comment_date',
|
|
158
|
-
field_type: 'date'
|
|
175
|
+
field_type: 'date',
|
|
176
|
+
select_fields: ['last_comment_data']
|
|
159
177
|
},
|
|
160
178
|
{
|
|
161
179
|
name: 'Due Date',
|
|
162
180
|
value: 'due_date',
|
|
163
181
|
type: 'due_date',
|
|
164
|
-
field_type: 'date'
|
|
182
|
+
field_type: 'date',
|
|
183
|
+
select_fields: ['due_date']
|
|
165
184
|
},
|
|
166
185
|
{
|
|
167
186
|
name: 'Completed By',
|
|
168
187
|
value: 'completed_by',
|
|
169
188
|
type: 'completed_by',
|
|
170
189
|
field_type: 'select',
|
|
171
|
-
options: []
|
|
190
|
+
options: [],
|
|
191
|
+
select_fields: ['owner', 'completed_by']
|
|
172
192
|
},
|
|
173
193
|
{
|
|
174
194
|
name: 'Completed At',
|
|
175
195
|
value: 'completed_at',
|
|
176
196
|
type: 'completed_at',
|
|
177
|
-
field_type: 'date'
|
|
197
|
+
field_type: 'date',
|
|
198
|
+
select_fields: ['completed_at']
|
|
178
199
|
},
|
|
179
200
|
{
|
|
180
201
|
name: 'Created',
|
|
181
202
|
value: 'created_at',
|
|
182
203
|
type: 'created_at',
|
|
183
|
-
field_type: 'date'
|
|
204
|
+
field_type: 'date',
|
|
205
|
+
select_fields: ['created_at']
|
|
184
206
|
},
|
|
185
207
|
{
|
|
186
208
|
name: 'Updated',
|
|
187
209
|
value: 'updated_at',
|
|
188
210
|
type: 'updated_at',
|
|
189
|
-
field_type: 'date'
|
|
211
|
+
field_type: 'date',
|
|
212
|
+
select_fields: ['updated_at']
|
|
190
213
|
},
|
|
191
214
|
{
|
|
192
215
|
name: 'Critical Path Stage',
|
|
193
216
|
value: 'critical_path_stage',
|
|
194
217
|
type: 'critical_path_stage',
|
|
195
218
|
field_type: 'select',
|
|
196
|
-
options: []
|
|
219
|
+
options: [],
|
|
220
|
+
select_fields: ['critical_path']
|
|
197
221
|
},
|
|
198
222
|
{
|
|
199
223
|
name: 'Was Marked Incomplete',
|
|
@@ -209,26 +233,30 @@ module.exports.defaultCustomColumns = [
|
|
|
209
233
|
label: 'No',
|
|
210
234
|
value: 'No'
|
|
211
235
|
}
|
|
212
|
-
]
|
|
236
|
+
],
|
|
237
|
+
select_fields: ['was_marked_incomplete']
|
|
213
238
|
},
|
|
214
239
|
{
|
|
215
240
|
name: 'Marked Incomplete At',
|
|
216
241
|
value: 'marked_incomplete_at',
|
|
217
242
|
type: 'marked_incomplete_at',
|
|
218
|
-
field_type: 'date'
|
|
243
|
+
field_type: 'date',
|
|
244
|
+
select_fields: ['marked_incomplete_at']
|
|
219
245
|
},
|
|
220
246
|
{
|
|
221
247
|
name: 'Banners',
|
|
222
248
|
value: 'project_banner',
|
|
223
249
|
type: 'project_banner',
|
|
224
250
|
field_type: 'checkbox',
|
|
225
|
-
options: PROJECT_BANNERS
|
|
251
|
+
options: PROJECT_BANNERS,
|
|
252
|
+
select_fields: ['project_banner']
|
|
226
253
|
},
|
|
227
254
|
{
|
|
228
255
|
name: 'Is Starred',
|
|
229
256
|
value: 'is_starred',
|
|
230
257
|
type: 'is_starred',
|
|
231
|
-
field_type: 'boolean'
|
|
258
|
+
field_type: 'boolean',
|
|
259
|
+
select_fields: ['is_starred']
|
|
232
260
|
}
|
|
233
261
|
];
|
|
234
262
|
|
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
|
});
|