diff --git a/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js index b769a1f3f103ce7f22dfe21ccd6e5dd457eafaac..b6b6109b0e35df3b6ac548b29878ea10f59865ed 100644 --- a/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js +++ b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js @@ -2,8 +2,8 @@ import React, { useState, useEffect, useCallback, - useMemo, - useContext + useContext, + useMemo } from "react"; import AccessControl from "../../auth/AccessControl"; import { ConfirmationDialog, useAPIMethod } from "@ess-ics/ce-ui-common"; @@ -30,15 +30,12 @@ export default function ChangeHostAdmin({ }) { const initHost = useMemo( () => ({ - netBoxHost: { - fqdn: ioc?.activeDeployment.host.fqdn, - hostId: ioc?.activeDeployment.host.hostId - } + fqdn: ioc.activeDeployment.host.fqdn, + hostId: ioc.activeDeployment.host.hostId }), - [ioc?.activeDeployment?.host] + [ioc.activeDeployment.host] ); const [host, setHost] = useState(initHost); - const client = useContext(apiContext); const { @@ -53,8 +50,7 @@ export default function ChangeHostAdmin({ const [query, onHostKeyUp] = useTypingTimer({ interval: 500 }); const noModification = useCallback( - () => - !host || host?.netBoxHost?.hostId === ioc.activeDeployment.host.hostId, + () => !host || host?.hostId === ioc.activeDeployment.host.hostId, [host, ioc] ); @@ -81,6 +77,10 @@ export default function ChangeHostAdmin({ useEffect(() => { if (updatedIoc) { getIOC(); + setHost({ + fqdn: updatedIoc.activeDeployment.host.fqdn, + hostId: updatedIoc.activeDeployment.host.hostId + }); resetTab(); setButtonDisabled(false); } @@ -99,15 +99,15 @@ export default function ChangeHostAdmin({ setButtonDisabled(true); updateHost( { - ioc_id: ioc?.id + ioc_id: ioc.id }, { requestBody: { - hostId: host?.netBoxHost.hostId + hostId: host?.hostId } } ); - }, [updateHost, ioc, host?.netBoxHost?.hostId, setButtonDisabled]); + }, [updateHost, ioc, host?.hostId, setButtonDisabled]); let disabledButtonTitle = ""; if (buttonDisabled || ioc.operationInProgress) { @@ -188,7 +188,7 @@ export default function ChangeHostAdmin({ clearOnBlur={false} value={host} getOptionLabel={(option) => { - return option?.netBoxHost?.fqdn ?? ""; + return option?.fqdn ?? ""; }} renderInput={(params) => ( <TextField diff --git a/src/components/IOC/IOCAdmin/IOCAdmin.js b/src/components/IOC/IOCAdmin/IOCAdmin.js index 64ac9a541918532522ed73784ef09018d32dc8bb..9896e36cd6b440675c9657e5e65eb0d418992fe8 100644 --- a/src/components/IOC/IOCAdmin/IOCAdmin.js +++ b/src/components/IOC/IOCAdmin/IOCAdmin.js @@ -20,7 +20,7 @@ export default function IOCAdmin({ buttonDisabled={buttonDisabled} setButtonDisabled={setButtonDisabled} /> - {ioc.activeDeployment && ( + {ioc.activeDeployment ? ( <ChangeHostAdmin ioc={ioc} getIOC={getIOC} @@ -28,7 +28,7 @@ export default function IOCAdmin({ buttonDisabled={buttonDisabled} setButtonDisabled={setButtonDisabled} /> - )} + ) : null} <AdministerUndeployment ioc={ioc} buttonDisabled={buttonDisabled} diff --git a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js index 13bf0de6b9e6473add1c551baf439f50b5de8709..bd7516c67955ac32cea33baf50bfe8dc3c7d05e8 100644 --- a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js +++ b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js @@ -1,4 +1,10 @@ -import React, { useCallback, useContext, useEffect, useState } from "react"; +import React, { + useCallback, + useContext, + useEffect, + useState, + useMemo +} from "react"; import { Button, TextField, @@ -8,7 +14,6 @@ import { Alert, Stack } from "@mui/material"; -import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer"; import { apiContext } from "../../../api/DeployApi"; import { useAPIMethod, @@ -62,8 +67,16 @@ export function IOCDeployDialog({ [callGetTagOrCommitId] ); - const [host, setHost] = useState(deployIocFormDefaults); - const [query, onHostKeyUp] = useTypingTimer({ interval: 500 }); + const initHost = useMemo( + () => ({ + fqdn: deployIocFormDefaults.netBoxHost?.fqdn, + hostId: deployIocFormDefaults.netBoxHost?.hostId + }), + [deployIocFormDefaults.netBoxHost] + ); + + const [host, setHost] = useState(initHost); + const [query, setQuery] = useState(""); const [gitRepo, setGitRepo] = useState(deployIocFormDefaults.git || ""); const [revision, setRevision] = useState(deployIocFormDefaults); const gitProjectId = deployIocFormDefaults.gitProjectId; @@ -73,7 +86,7 @@ export function IOCDeployDialog({ }; useEffect(() => { - getHosts({ query: `${query}` }); + getHosts({ query }); }, [query, getHosts]); useEffect(() => { @@ -94,11 +107,7 @@ export function IOCDeployDialog({ requestBody: { sourceUrl: git, sourceVersion: revision.reference, - hostId: host - ? host.netBoxHost.hostId - : deployIocFormDefaults.netBoxHost - ? deployIocFormDefaults.netBoxHost.hostId - : undefined + hostId: host.hostId } } ); @@ -166,9 +175,9 @@ export function IOCDeployDialog({ options={query ? hosts?.netBoxHosts ?? [] : []} loading={loadingHosts} clearOnBlur={false} - defaultValue={deployIocFormDefaults} + value={host} getOptionLabel={(option) => { - return option?.netBoxHost?.fqdn ?? ""; + return option?.fqdn ?? ""; }} renderInput={(params) => ( <TextField @@ -196,11 +205,7 @@ export function IOCDeployDialog({ setHost(value); resetError(); }} - onInputChange={(event) => { - if (event) { - onHostKeyUp(event.nativeEvent); - } - }} + onInputChange={(_event, value) => setQuery(value)} disabled={hasActiveDeployment} autoSelect filterOptions={(options) => options}