From d791e2e4b0ea80bc1eec4bbb467c9d2b5f1afbc0 Mon Sep 17 00:00:00 2001 From: Imre Toth <imre.toth@ess.eu> Date: Fri, 23 Jul 2021 14:31:16 +0200 Subject: [PATCH] ICSHWI-7397: Restricting user to enter (valid) tag, or commitId for IOC --- src/api/SwaggerApi.js | 11 ++++++++++- src/components/IOC/IOCDialog.js | 27 ++++++++++++++++++--------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js index 60317103..65887360 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 9c3f35ea..6a2e5383 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)} -- GitLab