Skip to content

Commit f6d09ef

Browse files
authored
Merge pull request #2439 from JohnDuprey/dev
Improve Extension Mappings
2 parents 5d81b46 + b0ed799 commit f6d09ef

File tree

1 file changed

+85
-37
lines changed

1 file changed

+85
-37
lines changed

src/views/cipp/app-settings/SettingsExtensionMappings.jsx

Lines changed: 85 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ export function SettingsExtensionMappings() {
4141
setHaloExtensionconfig({
4242
path: 'api/ExecExtensionMapping?AddMapping=Halo',
4343
values: { mappings: originalFormat },
44+
}).then(() => {
45+
listHaloBackend({ path: 'api/ExecExtensionMapping?List=Halo' })
46+
setMappingValue({})
4447
})
4548
}
4649
const onNinjaOrgsSubmit = () => {
@@ -52,6 +55,9 @@ export function SettingsExtensionMappings() {
5255
setNinjaOrgsExtensionconfig({
5356
path: 'api/ExecExtensionMapping?AddMapping=NinjaOrgs',
5457
values: { mappings: originalFormat },
58+
}).then(() => {
59+
listNinjaOrgsBackend({ path: 'api/ExecExtensionMapping?List=NinjaOrgs' })
60+
setMappingValue({})
5561
})
5662
}
5763

@@ -68,7 +74,6 @@ export function SettingsExtensionMappings() {
6874
const onNinjaFieldsSubmit = (values) => {
6975
setNinjaFieldsExtensionconfig({
7076
path: 'api/ExecExtensionMapping?AddMapping=NinjaFields',
71-
7277
values: { mappings: values },
7378
})
7479
}
@@ -91,8 +96,11 @@ export function SettingsExtensionMappings() {
9196
},
9297
//filter out any undefined values
9398
).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+
)
96104
setHaloAutoMap(true)
97105
}
98106

@@ -235,7 +243,7 @@ export function SettingsExtensionMappings() {
235243
<CippButtonCard
236244
title={'HaloPSA Mapping'}
237245
titleType="big"
238-
isFetching={listHaloBackend.isFetching}
246+
isFetching={listBackendHaloResult.isFetching}
239247
CardButton={
240248
<>
241249
<CButton form="haloform" className="me-2" type="submit">
@@ -253,7 +261,7 @@ export function SettingsExtensionMappings() {
253261
</>
254262
}
255263
>
256-
{listBackendHaloResult.isFetching ? (
264+
{listBackendHaloResult.isFetching && listBackendHaloResult.isUninitialized ? (
257265
<CSpinner color="primary" />
258266
) : (
259267
<Form
@@ -281,43 +289,62 @@ export function SettingsExtensionMappings() {
281289
<RFFSelectSearch
282290
placeholder="Select a Tenant"
283291
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) => ({
285297
name: tenant.displayName,
286298
value: tenant.customerId,
287299
}))}
288300
onChange={(e) => {
289301
setMappingArray(e.value)
290302
}}
303+
isLoading={listBackendHaloResult.isFetching}
291304
/>
292305
</CCol>
293306
<CCol xs="1" className="d-flex justify-content-center align-items-center">
294307
<FontAwesomeIcon icon={'link'} size="xl" className="my-4" />
295308
</CCol>
296309
<CCol xs="5">
297310
<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) => ({
300319
name: client.name,
301320
value: client.value,
302321
}))}
303322
onChange={(e) => setMappingValue(e)}
304323
placeholder="Select a HaloPSA Client"
324+
isLoading={listBackendHaloResult.isFetching}
305325
/>
306326
</CCol>
307327
<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+
}}
321348
className={`my-4 circular-button`}
322349
title={'+'}
323350
>
@@ -381,7 +408,7 @@ export function SettingsExtensionMappings() {
381408
</>
382409
}
383410
>
384-
{listBackendNinjaOrgsResult.isFetching ? (
411+
{listBackendNinjaOrgsResult.isFetching && listBackendNinjaOrgsResult.isUninitialized ? (
385412
<CSpinner color="primary" />
386413
) : (
387414
<Form
@@ -409,43 +436,64 @@ export function SettingsExtensionMappings() {
409436
<RFFSelectSearch
410437
placeholder="Select a Tenant"
411438
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) => ({
413444
name: tenant.displayName,
414445
value: tenant.customerId,
415446
}))}
416447
onChange={(e) => {
417448
setMappingArray(e.value)
418449
}}
450+
isLoading={listBackendNinjaOrgsResult.isFetching}
419451
/>
420452
</CCol>
421453
<CCol xs="1" className="d-flex justify-content-center align-items-center">
422454
<FontAwesomeIcon icon={'link'} size="xl" className="my-4" />
423455
</CCol>
424456
<CCol xs="5">
425457
<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) => ({
428468
name: client.name,
429469
value: client.value,
430470
}))}
431471
onChange={(e) => setMappingValue(e)}
432472
placeholder="Select a NinjaOne Organization"
473+
isLoading={listBackendNinjaOrgsResult.isFetching}
433474
/>
434475
</CCol>
435476
<CButton
436-
onClick={() =>
477+
onClick={() => {
437478
//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+
}}
449497
className={`my-4 circular-button`}
450498
title={'+'}
451499
>

0 commit comments

Comments
 (0)