diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js index 60317103c827716f5fdfb2cf2b0b5ea8e4aaddd9..658873604d76b15b9bd8f117c70afd3fbc935326 100644 --- a/src/api/SwaggerApi.js +++ b/src/api/SwaggerApi.js @@ -414,7 +414,6 @@ export function useRenewToken() { } export function unpackLokilog(logData) { - console.log(logData); return { ...logData }; } @@ -455,5 +454,15 @@ export function useNamingNames() { const api = useContext(apiContext); const method = callAndUnpack((iocName) => api.apis.Naming.fetchIOCByName({iocName: iocName}), unpackNamingList) + return useAsync({ fcn: method, call: false, init: [] }); +} + +export function unpackTagAndCommitIdList(tagList) { + return tagList.toString().split(","); +} + +export function useTagsAndCommitIds() { + const api = useContext(apiContext); + const method = callAndUnpack((repoUrl) => api.apis.Git.listTagsAndCommitIds({gitRepo: repoUrl}), unpackTagAndCommitIdList) return useAsync({ fcn: method, call: false, init: [] }); } \ No newline at end of file diff --git a/src/components/IOC/IOCDialog.js b/src/components/IOC/IOCDialog.js index 9c3f35ea80419efba0246ca0eb6cb148ffb22cca..6a2e53839a0c5fbefe7a200d7a1c055933a133b8 100644 --- a/src/components/IOC/IOCDialog.js +++ b/src/components/IOC/IOCDialog.js @@ -1,7 +1,7 @@ import React, { useEffect, useState } from "react"; import { Button, TextField, Dialog, DialogActions, DialogContent, DialogTitle, makeStyles } from "@material-ui/core"; import { Autocomplete } from "@material-ui/lab"; -import { useCSEntrySearch, useNamingNames } from "../../api/SwaggerApi"; +import { useCSEntrySearch, useNamingNames, useTagsAndCommitIds } from "../../api/SwaggerApi"; import { useTypingTimer } from "../common/SearchBoxFilter/TypingTimer"; const useStyles = makeStyles((theme) => ({ @@ -18,6 +18,8 @@ export function IOCDialog({ open, setOpen, isUpdateIoc, submitCallback, title, b const [names, getNames] = useNamingNames(); const [name, setName] = useState(""); const [nameQuery, onNameKeyUp] = useTypingTimer({interval: 500}); + const [tagOrCommitId, getTagOrCommitId] = useTagsAndCommitIds([]); + const [gitRepo, setGitRepo] = useState(""); const handleClose = () => { setOpen(false); @@ -26,12 +28,10 @@ export function IOCDialog({ open, setOpen, isUpdateIoc, submitCallback, title, b console.log({...init}); console.log(hosts); console.log(host); - console.log(names); - console.log(name); - useEffect(() => getHosts(`fqdn:"${query}"`), [query, getHosts]); + useEffect(() => getHosts(`fqdn:"${query}"`), [query, getHosts, getTagOrCommitId]); - useEffect(() => getNames(nameQuery), [nameQuery, getNames]); + useEffect(() => getNames(nameQuery), [nameQuery, getNames, getTagOrCommitId]); const onSubmit = (event) => { event.preventDefault(); @@ -71,7 +71,6 @@ export function IOCDialog({ open, setOpen, isUpdateIoc, submitCallback, title, b autoHighlight id="nameAutocomplete" options={names} - defaultValue = { init } getOptionLabel={(option) => {console.log(option?.name); return option?.name}} renderInput={(params) => <TextField {...params} label="IOC name" variant="outlined" required/>} onChange={(event, value, reason) => setName(value)} @@ -80,14 +79,24 @@ export function IOCDialog({ open, setOpen, isUpdateIoc, submitCallback, title, b } <TextField autoComplete="off" className={classes.textField} id="description" label="description" variant="outlined" defaultValue={init.description || ""} fullWidth /> - <TextField autoComplete="off" className={classes.textField} id="git" label="git" variant="outlined" defaultValue={init.git || ""} fullWidth /> - <TextField autoComplete="off" className={classes.textField} id="version" label="git reference" variant="outlined" defaultValue={init.version || ""} fullWidth /> + <TextField autoComplete="off" className={classes.textField} id="git" label="git" variant="outlined" defaultValue={init.git || ""} fullWidth onChange={(event) => setGitRepo(event.target.value)} /> + + <Autocomplete + className={classes.textField} + autoHighlight + id="version" + options={tagOrCommitId} + onFocus={(event) => {getTagOrCommitId(gitRepo);}} + getOptionLabel={(option) => {return option}} + disabled={(!gitRepo) || (gitRepo.trim() === "")} + renderInput={(params) => <TextField {...params} label="Git reference" variant="outlined"/>} + /> + <Autocomplete className={classes.textField} autoHighlight id="host" options={hosts} - defaultValue = { init } getOptionLabel={option => {console.log(option); return option?.csEntryHost?.fqdn}} renderInput={(params) => <TextField {...params} label="host" variant="outlined" />} onChange={(event, value, reason) => setHost(value)}