@@ -41,6 +41,9 @@ export function SettingsExtensionMappings() {
41
41
setHaloExtensionconfig ( {
42
42
path : 'api/ExecExtensionMapping?AddMapping=Halo' ,
43
43
values : { mappings : originalFormat } ,
44
+ } ) . then ( ( ) => {
45
+ listHaloBackend ( { path : 'api/ExecExtensionMapping?List=Halo' } )
46
+ setMappingValue ( { } )
44
47
} )
45
48
}
46
49
const onNinjaOrgsSubmit = ( ) => {
@@ -52,6 +55,9 @@ export function SettingsExtensionMappings() {
52
55
setNinjaOrgsExtensionconfig ( {
53
56
path : 'api/ExecExtensionMapping?AddMapping=NinjaOrgs' ,
54
57
values : { mappings : originalFormat } ,
58
+ } ) . then ( ( ) => {
59
+ listNinjaOrgsBackend ( { path : 'api/ExecExtensionMapping?List=NinjaOrgs' } )
60
+ setMappingValue ( { } )
55
61
} )
56
62
}
57
63
@@ -68,7 +74,6 @@ export function SettingsExtensionMappings() {
68
74
const onNinjaFieldsSubmit = ( values ) => {
69
75
setNinjaFieldsExtensionconfig ( {
70
76
path : 'api/ExecExtensionMapping?AddMapping=NinjaFields' ,
71
-
72
77
values : { mappings : values } ,
73
78
} )
74
79
}
@@ -91,8 +96,11 @@ export function SettingsExtensionMappings() {
91
96
} ,
92
97
//filter out any undefined values
93
98
) . filter ( ( item ) => item !== undefined )
94
- setHaloMappingsArray ( ( currentHaloMappings ) => [ ...currentHaloMappings , ...newMappings ] )
95
-
99
+ setHaloMappingsArray ( ( currentHaloMappings ) => [ ...currentHaloMappings , ...newMappings ] ) . then (
100
+ ( ) => {
101
+ listHaloBackend ( { path : 'api/ExecExtensionMapping?List=Halo' } )
102
+ } ,
103
+ )
96
104
setHaloAutoMap ( true )
97
105
}
98
106
@@ -235,7 +243,7 @@ export function SettingsExtensionMappings() {
235
243
< CippButtonCard
236
244
title = { 'HaloPSA Mapping' }
237
245
titleType = "big"
238
- isFetching = { listHaloBackend . isFetching }
246
+ isFetching = { listBackendHaloResult . isFetching }
239
247
CardButton = {
240
248
< >
241
249
< CButton form = "haloform" className = "me-2" type = "submit" >
@@ -253,7 +261,7 @@ export function SettingsExtensionMappings() {
253
261
</ >
254
262
}
255
263
>
256
- { listBackendHaloResult . isFetching ? (
264
+ { listBackendHaloResult . isFetching && listBackendHaloResult . isUninitialized ? (
257
265
< CSpinner color = "primary" />
258
266
) : (
259
267
< Form
@@ -281,43 +289,62 @@ export function SettingsExtensionMappings() {
281
289
< RFFSelectSearch
282
290
placeholder = "Select a Tenant"
283
291
name = { `tenant_selector` }
284
- values = { listBackendHaloResult . data ?. Tenants . map ( ( tenant ) => ( {
292
+ values = { listBackendHaloResult . data ?. Tenants . filter ( ( tenant ) => {
293
+ return ! Object . keys ( listBackendHaloResult . data ?. Mappings ) . includes (
294
+ tenant . customerId ,
295
+ )
296
+ } ) . map ( ( tenant ) => ( {
285
297
name : tenant . displayName ,
286
298
value : tenant . customerId ,
287
299
} ) ) }
288
300
onChange = { ( e ) => {
289
301
setMappingArray ( e . value )
290
302
} }
303
+ isLoading = { listBackendHaloResult . isFetching }
291
304
/>
292
305
</ CCol >
293
306
< CCol xs = "1" className = "d-flex justify-content-center align-items-center" >
294
307
< FontAwesomeIcon icon = { 'link' } size = "xl" className = "my-4" />
295
308
</ CCol >
296
309
< CCol xs = "5" >
297
310
< RFFSelectSearch
298
- name = { mappingArray }
299
- values = { listBackendHaloResult . data ?. HaloClients . map ( ( client ) => ( {
311
+ name = "halo_client"
312
+ values = { listBackendHaloResult . data ?. HaloClients . filter ( ( client ) => {
313
+ return ! Object . values ( listBackendHaloResult . data ?. Mappings )
314
+ . map ( ( value ) => {
315
+ return value . value
316
+ } )
317
+ . includes ( client . value )
318
+ } ) . map ( ( client ) => ( {
300
319
name : client . name ,
301
320
value : client . value ,
302
321
} ) ) }
303
322
onChange = { ( e ) => setMappingValue ( e ) }
304
323
placeholder = "Select a HaloPSA Client"
324
+ isLoading = { listBackendHaloResult . isFetching }
305
325
/>
306
326
</ CCol >
307
327
< CButton
308
- onClick = { ( ) =>
309
- //set the new mapping in the array
310
- setHaloMappingsArray ( [
311
- ...haloMappingsArray ,
312
- {
313
- Tenant : listBackendHaloResult . data ?. Tenants . find (
314
- ( tenant ) => tenant . customerId === mappingArray ,
315
- ) ,
316
- haloName : mappingValue . label ,
317
- haloId : mappingValue . value ,
318
- } ,
319
- ] )
320
- }
328
+ onClick = { ( ) => {
329
+ if (
330
+ mappingValue . value !== undefined &&
331
+ Object . values ( haloMappingsArray )
332
+ . map ( ( item ) => item . haloId )
333
+ . includes ( mappingValue . value ) === false
334
+ ) {
335
+ //set the new mapping in the array
336
+ setHaloMappingsArray ( [
337
+ ...haloMappingsArray ,
338
+ {
339
+ Tenant : listBackendHaloResult . data ?. Tenants . find (
340
+ ( tenant ) => tenant . customerId === mappingArray ,
341
+ ) ,
342
+ haloName : mappingValue . label ,
343
+ haloId : mappingValue . value ,
344
+ } ,
345
+ ] )
346
+ }
347
+ } }
321
348
className = { `my-4 circular-button` }
322
349
title = { '+' }
323
350
>
@@ -381,7 +408,7 @@ export function SettingsExtensionMappings() {
381
408
</ >
382
409
}
383
410
>
384
- { listBackendNinjaOrgsResult . isFetching ? (
411
+ { listBackendNinjaOrgsResult . isFetching && listBackendNinjaOrgsResult . isUninitialized ? (
385
412
< CSpinner color = "primary" />
386
413
) : (
387
414
< Form
@@ -409,43 +436,64 @@ export function SettingsExtensionMappings() {
409
436
< RFFSelectSearch
410
437
placeholder = "Select a Tenant"
411
438
name = { `tenant_selector` }
412
- values = { listBackendNinjaOrgsResult . data ?. Tenants . map ( ( tenant ) => ( {
439
+ values = { listBackendNinjaOrgsResult . data ?. Tenants . filter ( ( tenant ) => {
440
+ return ! Object . keys (
441
+ listBackendNinjaOrgsResult . data ?. Mappings ,
442
+ ) . includes ( tenant . customerId )
443
+ } ) . map ( ( tenant ) => ( {
413
444
name : tenant . displayName ,
414
445
value : tenant . customerId ,
415
446
} ) ) }
416
447
onChange = { ( e ) => {
417
448
setMappingArray ( e . value )
418
449
} }
450
+ isLoading = { listBackendNinjaOrgsResult . isFetching }
419
451
/>
420
452
</ CCol >
421
453
< CCol xs = "1" className = "d-flex justify-content-center align-items-center" >
422
454
< FontAwesomeIcon icon = { 'link' } size = "xl" className = "my-4" />
423
455
</ CCol >
424
456
< CCol xs = "5" >
425
457
< RFFSelectSearch
426
- name = { mappingArray }
427
- values = { listBackendNinjaOrgsResult . data ?. NinjaOrgs . map ( ( client ) => ( {
458
+ name = "ninja_org"
459
+ values = { listBackendNinjaOrgsResult . data ?. NinjaOrgs . filter (
460
+ ( client ) => {
461
+ return ! Object . values ( listBackendNinjaOrgsResult . data ?. Mappings )
462
+ . map ( ( value ) => {
463
+ return value . value
464
+ } )
465
+ . includes ( client . value . toString ( ) )
466
+ } ,
467
+ ) . map ( ( client ) => ( {
428
468
name : client . name ,
429
469
value : client . value ,
430
470
} ) ) }
431
471
onChange = { ( e ) => setMappingValue ( e ) }
432
472
placeholder = "Select a NinjaOne Organization"
473
+ isLoading = { listBackendNinjaOrgsResult . isFetching }
433
474
/>
434
475
</ CCol >
435
476
< CButton
436
- onClick = { ( ) =>
477
+ onClick = { ( ) => {
437
478
//set the new mapping in the array
438
- setNinjaMappingsArray ( [
439
- ...ninjaMappingsArray ,
440
- {
441
- Tenant : listBackendNinjaOrgsResult . data ?. Tenants . find (
442
- ( tenant ) => tenant . customerId === mappingArray ,
443
- ) ,
444
- ninjaName : mappingValue . label ,
445
- ninjaId : mappingValue . value ,
446
- } ,
447
- ] )
448
- }
479
+ if (
480
+ mappingValue . value !== undefined &&
481
+ Object . values ( ninjaMappingsArray )
482
+ . map ( ( item ) => item . ninjaId )
483
+ . includes ( mappingValue . value ) === false
484
+ ) {
485
+ setNinjaMappingsArray ( [
486
+ ...ninjaMappingsArray ,
487
+ {
488
+ Tenant : listBackendNinjaOrgsResult . data ?. Tenants . find (
489
+ ( tenant ) => tenant . customerId === mappingArray ,
490
+ ) ,
491
+ ninjaName : mappingValue . label ,
492
+ ninjaId : mappingValue . value ,
493
+ } ,
494
+ ] )
495
+ }
496
+ } }
449
497
className = { `my-4 circular-button` }
450
498
title = { '+' }
451
499
>
0 commit comments