import React, { useState, useEffect } from 'react'; import ReactGA from 'react-ga4'; import theme from '../theme.jsx'; import PaperComponent from "../components/PaperComponent.jsx" import UsecaseSearch, { usecaseTypes } from "../components/UsecaseSearch.jsx" import { Paper, Typography, Divider, IconButton, Badge, CircularProgress, Tooltip, Dialog, } from "@material-ui/core"; import { Close as CloseIcon, Delete as DeleteIcon, AutoFixHigh as AutoFixHighIcon, Done as DoneIcon, } from "@mui/icons-material"; const SuggestedWorkflows = (props) => { const { globalUrl, userdata, usecaseSuggestions, frameworkData, setUsecaseSuggestions, inputSearch, apps, } = props const [usecaseSearch, setUsecaseSearch] = React.useState("") const [usecaseSearchType, setUsecaseSearchType] = React.useState("") const [finishedUsecases, setFinishedUsecases] = React.useState([]) const [previousUsecase, setPreviousUsecase] = React.useState("") const [closeWindow, setCloseWindow] = React.useState(false) const isCloud = window.location.host === "localhost:3002" || window.location.host === "shuffler.io"; useEffect(() => { if (closeWindow === true) { console.log("WINDOW CLOSED") finishedUsecases.push(usecaseSearch) setFinishedUsecases(finishedUsecases) setCloseWindow(false) } }, [closeWindow]) if (usecaseSuggestions === undefined || usecaseSuggestions.length === 0) { return null } if (inputSearch !== previousUsecase) { setPreviousUsecase(inputSearch) setFinishedUsecases([]) } if (finishedUsecases.length === usecaseSuggestions.length) { console.log("Closing finished usecases 2") return null } //useEffect(() => { // //if (defaultSearch === // //setFinishedUsecases(finishedUsecases) // console.log("Finished default usecase?", usecaseSearch) //}, [usecaseSearch]) const foundZindex = usecaseSearch.length > 0 && usecaseSearchType.length > 0 ? -1 : 12500 const IndividualUsecase = (props) => { const { usecase, index } = props const [hovering, setHovering] = React.useState(false) const usecasename = usecase.name const bordercolor = usecase.color !== undefined ? usecase.color : "rgba(255,255,255,0.3)" const srcimage = usecase.items[0].app var dstimage = usecase.items[1].app if (usecase.items.length > 2) { dstimage = usecase.items[2].app } if (srcimage === undefined || dstimage === undefined) { console.log("Error in src or dst: returning!") return null } const finished = finishedUsecases.includes(usecasename) const selectedIcon = finished ? : if (finished) { return null } // Simple visual of the usecase return (
{ setHovering(true) }} onMouseOut={() => { setHovering(false) }} onClick={() => { if (isCloud) { ReactGA.event({ category: "welcome", action: "click_suggested_workflow", label: usecasename, }) } console.log("Try usecase ", usecasename) setUsecaseSearchType(usecase.type) setUsecaseSearch(usecasename) }}>
{usecasename}
{srcimage.large_image} {dstimage.large_image}
{selectedIcon}
) } // return ( 0 && usecaseSearchType.length > 0} onClose={() => { finishedUsecases.push(usecaseSearch) setFinishedUsecases(finishedUsecases) setUsecaseSearch("") setUsecaseSearchType("") }} PaperProps={{ style: { pointerEvents: "auto", backgroundColor: theme.palette.surfaceColor, color: "white", minWidth: 450, padding: 50, overflow: "hidden", zIndex: 10050, border: theme.palette.defaultBorder, }, }} > { finishedUsecases.push(usecaseSearch) setFinishedUsecases(finishedUsecases) setUsecaseSearch("") setUsecaseSearchType("") }} >
Suggested Workflows ({finishedUsecases.length}/{usecaseSuggestions.length}) { if (setUsecaseSuggestions !== undefined) { setUsecaseSuggestions([]) } }} > {usecaseSuggestions.map((usecase, index) => { return ( ) })}
) } export default SuggestedWorkflows;