node-red-contrib-mobius-flow-base 2.5.86-beta.6 → 2.5.86-beta.60

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.
@@ -0,0 +1,438 @@
1
+ initMobsearch = {
2
+ toRid: (mobiusSrvc, opts) => {
3
+ getMobsearch(mobiusSrvc, true, false, opts);
4
+ },
5
+ toIns: (mobiusSrvc, opts) => {
6
+ getMobsearch(mobiusSrvc, false, false, opts);
7
+ },
8
+ toRidListed: (mobiusSrvc, opts) => {
9
+ getMobsearch(mobiusSrvc, true, true, opts);
10
+ },
11
+ toInsListed: (mobiusSrvc, opts) => {
12
+ getMobsearch(mobiusSrvc, false, true, opts);
13
+ },
14
+ };
15
+
16
+ // RID ONLY
17
+ // opts.uriFieldName
18
+ // opts.selectionIndex
19
+ // opts.containerRowName
20
+ // opts.containerName
21
+ // opts.containerSecondFieldName
22
+
23
+ function getMobsearch(mobiusSrvc, useRid, listed, opts) {
24
+ console.log($(`#${opts.uriFieldName}`).val());
25
+ //level dependent html
26
+ let rows =
27
+ useRid === true
28
+ ? `
29
+ <input type="text" id="instance-search-hid" style="width:13%;" placeholder="HID">
30
+ <input type="text" id="instance-search-sid" style="width:8%;" placeholder="SID">
31
+ <input type="text" id="instance-search-pid" style="width:10%;" placeholder="PID">
32
+ <input type="text" id="instance-search-ins" style="width:10%;" placeholder="INS">
33
+ <input type="text" id="instance-search-rid" style="width:8%;" placeholder="RID">
34
+ `
35
+ : `
36
+ <input type="text" id="instance-search-hid" style="width:15%;" placeholder="HID">
37
+ <input type="text" id="instance-search-sid" style="width:10%;" placeholder="SID">
38
+ <input type="text" id="instance-search-pid" style="width:10%;" placeholder="PID">
39
+ <input type="text" id="instance-search-ins" style="width:10%;" placeholder="INS">
40
+ `;
41
+ let alertMsg = useRid === true ? `and/or RID ` : ``;
42
+
43
+ //Add new html
44
+ document.getElementById('mobsearch').innerHTML += `
45
+ <div id="instance-search-row">
46
+ <div class="form-row">
47
+ <label for="instance-search-sid"><i class="fa fa-tasks"></i> URI</label>
48
+ ${rows}
49
+ <a id="node-search-return" class="searchbutton" style="vertical-align: middle"><i id="node-search-return-icon" class="fa fa-arrow-left"></i></a>
50
+ <a id="node-search-accept" class="searchbutton" style="vertical-align: middle; color: #CCCCCC"><i id="node-search-accept-icon" class="fa fa-check"></i></a>
51
+ </div>
52
+ </div>
53
+ <div id="wildcard-alert-row" class="form-row hidden" style="color:#555555" align="center">
54
+ <p>Please note: The selection of wildcard '+'
55
+ means a search for a specific instance or resource
56
+ cannot be performed. As such, enter the
57
+ INS ${alertMsg}manually.</p>
58
+ </div>
59
+ `;
60
+
61
+ if (!listed) {
62
+ //Add search button
63
+ document.getElementById('input-row').innerHTML += `
64
+ <a id="node-lookup-instance" class="searchbutton" style="vertical-align: middle"><i id="node-lookup-instance-icon" class="fa fa-search"></i></a>
65
+ `;
66
+ }
67
+
68
+ //Inital setup
69
+ $('#instance-search-row').hide();
70
+ $('#wildcard-alert-row').hide();
71
+ $('#node-search-return').addClass('disabled');
72
+ $.getJSON(`mgethid?mobius=${mobiusSrvc}`, function (response) {
73
+ $('#instance-search-hid').val(response);
74
+ });
75
+ let readyToAccept = false;
76
+
77
+ let searchObject = {};
78
+ if (listed) {
79
+ searchObject = {
80
+ hid: '',
81
+ sid: '',
82
+ pid: '',
83
+ ins: '',
84
+ rid: '',
85
+ objects: [],
86
+ };
87
+ } else {
88
+ searchObject = {
89
+ hid: $('#instance-search-hid').val(),
90
+ sid: $('#instance-search-sid').val(),
91
+ pid: $('#instance-search-pid').val(),
92
+ ins: $('#instance-search-ins').val(),
93
+ rid: $('#instance-search-rid').val(),
94
+ objects: [],
95
+ };
96
+ }
97
+
98
+ //End init setup
99
+
100
+ //Function to search for RIDs
101
+ function ridSearch(objects, ins) {
102
+ $.getJSON(
103
+ `mdiscover?mobius=${mobiusSrvc}&uri=${searchObject.hid}/${searchObject.sid}/${searchObject.pid}/${searchObject.ins}`,
104
+ (response) => {
105
+ resList = response.value[0].resources;
106
+ ress = ['#'];
107
+ for (let j = 0; j < resList.length; j++) {
108
+ ress.push(`${resList[j].rid} - ${resList[j].name}`);
109
+ }
110
+ $('#instance-search-rid')
111
+ .autocomplete({
112
+ source: ress,
113
+ minLength: 0,
114
+ close: function (event, ui) {
115
+ acceptCheck();
116
+ $('#instance-search-rid').autocomplete('destroy');
117
+ $('#instance-search-rid').val($('#instance-search-rid').val().substring(0, 2));
118
+ searchObject.rid = $('#instance-search-rid').val();
119
+ },
120
+ })
121
+ .autocomplete('search', '');
122
+ }
123
+ );
124
+ }
125
+
126
+ //Function to search for INSs
127
+ function insSearch(objects, pid) {
128
+ let inss = ['#', '+'];
129
+ for (let i = 0; i < objects.length; i++) {
130
+ if (objects[i].pid === pid) {
131
+ const name = objects[i].resources[1].pv;
132
+ if (name === '') {
133
+ inss.push(objects[i].ins);
134
+ } else {
135
+ inss.push(`${objects[i].ins} - ${name}`);
136
+ }
137
+ }
138
+ }
139
+ $('#instance-search-ins')
140
+ .autocomplete({
141
+ source: inss,
142
+ minLength: 0,
143
+ close: function (event, ui) {
144
+ acceptCheck();
145
+ $('#instance-search-ins').autocomplete('destroy');
146
+ if ($('#instance-search-ins').val().length > 4) {
147
+ $('#instance-search-ins').val($('#instance-search-ins').val().substring(0, 4));
148
+ }
149
+ searchObject.ins = $('#instance-search-ins').val();
150
+ },
151
+ })
152
+ .autocomplete('search', '');
153
+ }
154
+
155
+ //Function to search for PIDs
156
+ function pidsSearch(objects) {
157
+ searchObject.objects = objects;
158
+ let pids = ['#', '+'];
159
+ for (let i = 0; i < objects.length; i++) {
160
+ pids.push(`${objects[i].pid} - ${objects[i].profileName}`);
161
+ }
162
+ pids = [...new Set(pids)];
163
+ $('#instance-search-pid')
164
+ .autocomplete({
165
+ source: pids,
166
+ minLength: 0,
167
+ close: function (event, ui) {
168
+ acceptCheck();
169
+ $('#instance-search-pid').autocomplete('destroy');
170
+ if ($('#instance-search-pid').val().length > 4) {
171
+ $('#instance-search-pid').val($('#instance-search-pid').val().substring(0, 4));
172
+ }
173
+ searchObject.pid = $('#instance-search-pid').val();
174
+ },
175
+ })
176
+ .autocomplete('search', '');
177
+ }
178
+
179
+ //Function to search for SIDs, and then fetch child objects based on selection
180
+ function serviceSearch(response) {
181
+ let services = ['#', '+'];
182
+ for (let i = 0; i < response.length; i++) {
183
+ if (response[i].sid !== '009') {
184
+ services.push(`${response[i].sid} - ${response[i].name}`);
185
+ }
186
+ }
187
+ $('#instance-search-sid')
188
+ .autocomplete({
189
+ source: services,
190
+ minLength: 0,
191
+ close: function (event, ui) {
192
+ acceptCheck();
193
+ $('#instance-search-sid').autocomplete('destroy');
194
+ if ($('#instance-search-sid').val().length > 3) {
195
+ $('#instance-search-sid').val($('#instance-search-sid').val().substring(0, 3));
196
+ }
197
+ searchObject.sid = $('#instance-search-sid').val();
198
+ if (searchObject.sid === '+') {
199
+ for (let i = 2; i < services.length; i++) {
200
+ $.getJSON(
201
+ `mgetobjects?mobius=${mobiusSrvc}&hid=${searchObject.hid}&sid=${services[
202
+ i
203
+ ].substring(0, 3)}`,
204
+ (objects) => {
205
+ searchObject.objects = searchObject.objects.concat(objects);
206
+ }
207
+ );
208
+ }
209
+ } else {
210
+ $.getJSON(
211
+ `mgetobjects?mobius=${mobiusSrvc}&hid=${searchObject.hid}&sid=${searchObject.sid}`,
212
+ (objects) => {
213
+ searchObject.objects = objects;
214
+ }
215
+ );
216
+ }
217
+ },
218
+ })
219
+ .autocomplete('search', '');
220
+ }
221
+
222
+ //Start a new search
223
+ function startSearch() {
224
+ $('#wildcard-alert-row').hide();
225
+ $('#instance-search-sid').val('');
226
+ $('#instance-search-pid').val('');
227
+ $('#instance-search-ins').val('');
228
+ searchObject.hid = $('#instance-search-hid').val();
229
+ searchObject.sid = '';
230
+ searchObject.pid = '';
231
+ searchObject.ins = '';
232
+ if (/((^([0-9A-F]){6}$)|^$)/.test(searchObject.hid)) {
233
+ $.getJSON(`mgetservices?mobius=${mobiusSrvc}&hid=${searchObject.hid}`, serviceSearch).fail(
234
+ (err) => {
235
+ console.log('Some kind of html failure message on service discovery');
236
+ }
237
+ );
238
+ }
239
+ }
240
+
241
+ //Finish a search
242
+ function finishSearch() {
243
+ $('#wildcard-alert-row').hide();
244
+ let uri = `${searchObject.hid}/${searchObject.sid}/${searchObject.pid}/${searchObject.ins}`;
245
+ if (useRid) {
246
+ uri = uri + `/${searchObject.rid}`;
247
+ }
248
+ if (uri.includes('#')) {
249
+ uri = uri.substring(0, uri.indexOf('#') + 1);
250
+ }
251
+ if (listed) {
252
+ opts.list[opts.selectionIndex].uri = uri;
253
+ updateList();
254
+ } else {
255
+ $(`#${opts.uriFieldName}`).val(uri);
256
+ }
257
+ $('#node-search-accept').css('color', '#CCCCCC');
258
+ readyToAccept = false;
259
+ $('#node-search-return').addClass('disabled');
260
+ $('#node-search-accept').addClass('disabled');
261
+ $('#node-lookup-instance').removeClass('disabled');
262
+ $('#instance-search-row').hide();
263
+ $('#instance-row').show();
264
+ }
265
+
266
+ //Function to update if accept button is grade out and functions based on conditions of fields
267
+ function acceptCheck() {
268
+ if (useRid) {
269
+ if (
270
+ ($('#instance-search-hid').val() !== '' &&
271
+ $('#instance-search-sid').val() !== '' &&
272
+ $('#instance-search-pid').val() !== '' &&
273
+ $('#instance-search-ins').val() !== '' &&
274
+ $('#instance-search-rid').val() !== '') ||
275
+ $('#instance-search-sid').val() === '#' ||
276
+ $('#instance-search-pid').val() === '#' ||
277
+ $('#instance-search-ins').val() === '#' ||
278
+ $('#instance-search-rid').val() === '#'
279
+ ) {
280
+ $('#node-search-accept').css('color', '#555555');
281
+ readyToAccept = true;
282
+ } else {
283
+ $('#node-search-accept').css('color', '#CCCCCC');
284
+ readyToAccept = false;
285
+ }
286
+ } else {
287
+ if (
288
+ ($('#instance-search-hid').val() !== '' &&
289
+ $('#instance-search-sid').val() !== '' &&
290
+ $('#instance-search-pid').val() !== '' &&
291
+ $('#instance-search-ins').val() !== '') ||
292
+ $('#instance-search-sid').val() === '#' ||
293
+ $('#instance-search-pid').val() === '#' ||
294
+ $('#instance-search-ins').val() === '#'
295
+ ) {
296
+ $('#node-search-accept').css('color', '#555555');
297
+ readyToAccept = true;
298
+ } else {
299
+ $('#node-search-accept').css('color', '#CCCCCC');
300
+ readyToAccept = false;
301
+ }
302
+ }
303
+ if (
304
+ $('#instance-search-sid').val() !== '+' &&
305
+ $('#instance-search-pid').val() !== '+' &&
306
+ $('#instance-search-ins').val() !== '+'
307
+ ) {
308
+ $('#wildcard-alert-row').hide();
309
+ } else {
310
+ $('#wildcard-alert-row').show();
311
+ }
312
+ }
313
+
314
+ function updateList() {
315
+ $(`#${opts.containerName}`)
316
+ .editableList('items')
317
+ .each(function (i) {
318
+ let item = $(this);
319
+ let secondField = item.find(`.${opts.containerSecondFieldName}`).val();
320
+ opts.list[i][Object.keys(opts.list[i])[1]] = secondField;
321
+ });
322
+ $(`#${opts.containerName}`).editableList('empty');
323
+ for (let i = 0; i < opts.list.length; i++) {
324
+ let item = opts.list[i];
325
+ $(`#${opts.containerName}`).editableList('addItem', item);
326
+ }
327
+ $(`#${opts.containerRowName}`).show();
328
+ }
329
+
330
+ // Respond to clicks
331
+ $('#node-lookup-instance').click(function () {
332
+ //When search button is clicked
333
+ $('#instance-search-sid').val('');
334
+ $('#instance-search-pid').val('');
335
+ $('#instance-search-ins').val('');
336
+ if (useRid) {
337
+ $('#instance-search-rid').val('');
338
+ }
339
+ $('#node-lookup-instance').addClass('disabled');
340
+ $('#node-search-return').removeClass('disabled');
341
+ $('#node-search-accept').removeClass('disabled');
342
+ $('#instance-row').hide();
343
+ $('#instance-search-row').show();
344
+ });
345
+ $('#instance-search-sid').click(function () {
346
+ //SID field clicked
347
+ $('#instance-search-pid').val('');
348
+ $('#instance-search-ins').val('');
349
+ searchObject.pid = '';
350
+ searchObject.ins = '';
351
+ if (useRid) {
352
+ searchObject.rid = '';
353
+ }
354
+ searchObject.objects = [];
355
+ startSearch();
356
+ });
357
+ $('#instance-search-pid').click(function () {
358
+ //PID field clicked
359
+ $('#instance-search-ins').val('');
360
+
361
+ searchObject.ins = '';
362
+
363
+ if (useRid) {
364
+ $('#instance-search-rid').val('');
365
+ searchObject.rid = '';
366
+ }
367
+ if (searchObject.sid !== '') {
368
+ pidsSearch(searchObject.objects);
369
+ }
370
+ });
371
+ $('#instance-search-ins').click(function () {
372
+ //INS field clicked
373
+ if (useRid) {
374
+ $('#instance-search-rid').val('');
375
+ searchObject.rid = '';
376
+ }
377
+ if (searchObject.pid !== '' && searchObject.pid !== '+' && searchObject.sid !== '+') {
378
+ insSearch(searchObject.objects, searchObject.pid);
379
+ }
380
+ });
381
+
382
+ if (useRid) {
383
+ $('#instance-search-rid').click(function () {
384
+ //RID clicked
385
+ if (
386
+ searchObject.ins !== '' &&
387
+ searchObject.ins !== '+' &&
388
+ searchObject.pid !== '+' &&
389
+ searchObject.sid !== '+'
390
+ ) {
391
+ ridSearch(searchObject.objects, searchObject.ins);
392
+ }
393
+ });
394
+ }
395
+ $('#node-search-return').click(function () {
396
+ //Return/Back button clicked
397
+ $('#node-search-return').addClass('disabled');
398
+ $('#node-search-accept').addClass('disabled');
399
+ $('#node-lookup-instance').removeClass('disabled');
400
+ $('#instance-search-row').hide();
401
+ $('#instance-row').show();
402
+ });
403
+ $('#node-search-accept').click(function () {
404
+ //Accept button clicked
405
+ if (readyToAccept) {
406
+ finishSearch();
407
+ }
408
+ });
409
+
410
+ // Respond to search field changes
411
+ $('#instance-search-hid').change(function () {
412
+ acceptCheck();
413
+ $('#instance-search-sid').val('');
414
+ $('#instance-search-pid').val('');
415
+ $('#instance-search-ins').val('');
416
+ if (useRid) {
417
+ $('#instance-search-rid').val('');
418
+ }
419
+ });
420
+ $('#instance-search-sid').change(function () {
421
+ searchObject.sid = $('#instance-search-sid').val();
422
+ acceptCheck();
423
+ });
424
+ $('#instance-search-pid').change(function () {
425
+ searchObject.pid = $('#instance-search-pid').val();
426
+ acceptCheck();
427
+ });
428
+ $('#instance-search-ins').change(function () {
429
+ searchObject.ins = $('#instance-search-ins').val();
430
+ acceptCheck();
431
+ });
432
+ if (useRid) {
433
+ $('#instance-search-rid').change(function () {
434
+ searchObject.rid = $('#instance-search-rid').val();
435
+ acceptCheck();
436
+ });
437
+ }
438
+ }