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

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