diff --git a/src/components/loadtest/SpecButtons.jsx b/src/components/loadtest/SpecButtons.jsx deleted file mode 100644 index d3de5c0..0000000 --- a/src/components/loadtest/SpecButtons.jsx +++ /dev/null @@ -1,76 +0,0 @@ -import React, { useState, useEffect } from 'react' -import * as tooltips from '../../data/loadtest-tooltips.json'; -import { Tooltip } from 'react-tooltip'; -import { toSnakeCase } from '../../utils/formatting'; -export default function SpecButtons({ spec, setInputs, inputs, data, tooltip, context }) { - const [value, setValue] = useState(); - - - let arr; - - arr = data ? data : []; - - if (typeof arr == Array) { - arr.forEach(item => { - const regex = /_id$/; - const id_key = Object.keys(item).find(key => regex.test(key)); - item.render_id = item[id_key] - - }); - } - - - useEffect(() => { - - - }, [inputs.Stimulus]) - - const onOptionChange = (e) => { - - setInputs((prevState) => ({ - ...prevState, - [context]: ({ ...prevState[context], [e.target.name]: e.target.value }) - })) - } - - return ( -
-

- {spec} - -

- - {Array.isArray(arr) ? arr.map((item) => { - return ( -
- -
- {item.values && item.values.map((value) => { - return ( - - - - - ) - })} -
-
- ) - }) : Array.isArray(arr.values) && - -
-
- {arr.values.map((item) => ( - - - - - ))} -
-
- } -
- ) -} diff --git a/src/components/loadtest/SpecCheckbox.jsx b/src/components/loadtest/SpecCheckbox.jsx deleted file mode 100644 index 71e6cf2..0000000 --- a/src/components/loadtest/SpecCheckbox.jsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { useState, useEffect } from 'react' - -export default function SpecCheckbox({ spec, setInputs, inputs, data, tooltip }) { - const [checked, setChecked] = useState({}); - - const handleMetricsCheck = (e) => { - - const { name, checked } = e.target; - setChecked((prevState) => ({ - ...prevState, - [name]: checked - })) - setInputs((prevState) => ({ - ...prevState, - ["Result Metrics"]: prevState.result_metrics ? [...prevState.result_metrics, name] : [name] - })); - } - - // Initializing the checkbox state, so the warning with the controlled / uncontrolled problem goes away - useEffect(() => { - const initialCheckedState = {}; - data.forEach((metric) => { - initialCheckedState[metric] = false; - }); - setChecked(initialCheckedState); - }, [data]); - - return ( -
- {data.map((metric, index) => { - return ( -
- -
- ) - })} -
- ) -} diff --git a/src/components/loadtest/SpecSlider.jsx b/src/components/loadtest/SpecSlider.jsx deleted file mode 100644 index 146503d..0000000 --- a/src/components/loadtest/SpecSlider.jsx +++ /dev/null @@ -1,55 +0,0 @@ -import React, { useState, useEffect } from 'react' -import { Tooltip } from 'react-tooltip'; -import * as tooltips from '../../data/loadtest-tooltips.json'; -import { toSnakeCase } from '../../utils/formatting'; - -export default function SpecSlider({ spec, context, setInputs, inputs, data, tooltip }) { - - const [value, setValue] = useState(0); - - const arr = data ? data : []; - - arr.forEach(item => { - const regex = /_id$/; - const id_key = Object.keys(item).find(key => regex.test(key)); - item.render_id = item[id_key] - - }); - - useEffect(() => { - if (inputs["Load Design"] && Object.keys(inputs["Load Design"]).length === 0) - setValue(0) - }, [inputs]) - - const handleSliderChange = (e) => { - if (!context) { - setValue(e.target.value) - setInputs((prevState) => ({ - ...prevState, - [spec]: e.target.value - })); - } - else { - setValue(e.target.value) - setInputs((prevState) => ({ - ...prevState, - [context]: ({ ...prevState[context], [spec]: e.target.value }) - - })); - } - - } - - return ( -
- - - -
- ) -} diff --git a/src/components/testing/Breadcrumb.jsx b/src/components/rqaExplorer/rqaTree/Breadcrumb.jsx similarity index 100% rename from src/components/testing/Breadcrumb.jsx rename to src/components/rqaExplorer/rqaTree/Breadcrumb.jsx diff --git a/src/components/testing/MenuSidebar.jsx b/src/components/rqaExplorer/rqaTree/MenuSidebar.jsx similarity index 100% rename from src/components/testing/MenuSidebar.jsx rename to src/components/rqaExplorer/rqaTree/MenuSidebar.jsx diff --git a/src/components/testing/components/Burger.jsx b/src/components/rqaExplorer/rqaTree/components/Burger.jsx similarity index 100% rename from src/components/testing/components/Burger.jsx rename to src/components/rqaExplorer/rqaTree/components/Burger.jsx diff --git a/src/components/testing/components/DomainList.jsx b/src/components/rqaExplorer/rqaTree/components/DomainList.jsx similarity index 100% rename from src/components/testing/components/DomainList.jsx rename to src/components/rqaExplorer/rqaTree/components/DomainList.jsx diff --git a/src/components/testing/components/DomainListItem.jsx b/src/components/rqaExplorer/rqaTree/components/DomainListItem.jsx similarity index 100% rename from src/components/testing/components/DomainListItem.jsx rename to src/components/rqaExplorer/rqaTree/components/DomainListItem.jsx diff --git a/src/components/testing/components/DomainTabs.jsx b/src/components/rqaExplorer/rqaTree/components/DomainTabs.jsx similarity index 100% rename from src/components/testing/components/DomainTabs.jsx rename to src/components/rqaExplorer/rqaTree/components/DomainTabs.jsx diff --git a/src/components/testing/components/YourDomains.jsx b/src/components/rqaExplorer/rqaTree/components/YourDomains.jsx similarity index 100% rename from src/components/testing/components/YourDomains.jsx rename to src/components/rqaExplorer/rqaTree/components/YourDomains.jsx diff --git a/src/components/rqa_explorer/RqaInputField.jsx b/src/components/rqa_explorer/RqaInputField.jsx deleted file mode 100644 index c32734e..0000000 --- a/src/components/rqa_explorer/RqaInputField.jsx +++ /dev/null @@ -1,62 +0,0 @@ -import React, { useState } from "react"; -import KeyboardArrowRightIcon from "@mui/icons-material/KeyboardArrowRight"; -import KeyboardArrowDownIcon from "@mui/icons-material/KeyboardArrowDown"; -import { useRef } from "react"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { createRqa } from "../../queries/rqa"; -export default function RqaInputField({ setInputOpen }) { - const [value, setValue] = useState(); - const queryClient = useQueryClient(); - - const spacingVariants = { - 0: "px-0", - 1: "px-2", - 2: "px-4", - 3: "px-6", - 4: "px-8", - 5: "px-10", - 6: "px-16", - 8: "px-32", - }; - - const createRqaMutation = useMutation({ - mutationFn: createRqa, - onSuccess: (data) => { - //queryClient.setQueryData(["rqas", data.id], data); - queryClient.invalidateQueries(["rqas"]); - setValue(""); - setInputOpen(false); - }, - }); - - const handleChange = (e) => { - setValue(e.target.value); - }; - - function handleSave(e) { - if (e.key == "Enter" || e.type == "blur") { - createRqaMutation.mutate({ - name: value, - domain_id: 1, - environment: "DEV", - }); - } - } - - return ( -
- - -
- ); -} diff --git a/src/components/testing/DeleteLoadtest.jsx b/src/components/testing/DeleteLoadtest.jsx deleted file mode 100644 index c3e0486..0000000 --- a/src/components/testing/DeleteLoadtest.jsx +++ /dev/null @@ -1,32 +0,0 @@ -import React from "react"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { deleteLoadtest } from "../../queries/rqa"; -import DeleteIcon from "@mui/icons-material/Delete"; -export default function DeleteLoadtest({ data, parentMenuRef, rqaId }) { - const queryClient = useQueryClient(); - - console.log(data); - - const deleteLoadtestMutation = useMutation({ - mutationFn: deleteLoadtest, - onSuccess: (data) => { - //queryClient.setQueryData(["rqas", data.id], data); - queryClient.invalidateQueries(["rqas"]); - parentMenuRef.current.open = false; - }, - }); - - const handleDelete = (e) => { - e.preventDefault(); - deleteLoadtestMutation.mutate({ - rqaId: rqaId, - loadtestName: data.name, - }); - }; - - return ( - - ); -} diff --git a/src/components/testing/DeleteRqa.jsx b/src/components/testing/DeleteRqa.jsx deleted file mode 100644 index 66ada16..0000000 --- a/src/components/testing/DeleteRqa.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React from "react"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { deleteLoadtest, deleteRqa } from "../../queries/rqa"; -import DeleteIcon from "@mui/icons-material/Delete"; -export default function DeleteRqa({ data, parentMenuRef, action }) { - const queryClient = useQueryClient(); - - const deleteLoadtestMutation = useMutation({ - mutationFn: deleteRqa, - onSuccess: (data) => { - //queryClient.setQueryData(["rqas", data.id], data); - queryClient.invalidateQueries(["rqas"]); - parentMenuRef.current.open = false; - }, - }); - - const handleDelete = (e) => { - e.preventDefault(); - deleteLoadtestMutation.mutate({ - rqaId: data.id, - }); - }; - - return ( - - ); -} diff --git a/src/components/testing/EditLoadtest.jsx b/src/components/testing/EditLoadtest.jsx deleted file mode 100644 index 0b0130f..0000000 --- a/src/components/testing/EditLoadtest.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { deleteLoadtest } from "../../queries/rqa"; - -import EditIcon from "@mui/icons-material/Edit"; -export default function EditLoadtest({ - data, - parentMenuRef, - rqaId, - loadtestSpecifier, -}) { - const queryClient = useQueryClient(); - - console.log(data); - - const deleteLoadtestMutation = useMutation({ - mutationFn: deleteLoadtest, - onSuccess: (data) => { - //queryClient.setQueryData(["rqas", data.id], data); - queryClient.invalidateQueries(["rqas"]); - parentMenuRef.current.open = false; - }, - }); - - const handleDelete = (e) => { - console.log(loadtestSpecifier); - loadtestSpecifier(true); - }; - - return ( - - ); -} diff --git a/src/components/testing/Explorer.jsx b/src/components/testing/Explorer.jsx deleted file mode 100644 index 15ed585..0000000 --- a/src/components/testing/Explorer.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React from "react"; -import { useRef } from "react"; -import RqaDefinition from "./RqaDefinition"; -import DeleteRqa from "./DeleteRqa"; -import { deleteRqa } from "../../queries/rqa"; -import RqaInputField from "../rqa_explorer/RqaInputField"; -export default function Explorer({ data, loadtestSpecifier }) { - const detailsRef = useRef(); - return ( - - ); -} diff --git a/src/components/testing/Loadtest.jsx b/src/components/testing/Loadtest.jsx deleted file mode 100644 index d17ccd7..0000000 --- a/src/components/testing/Loadtest.jsx +++ /dev/null @@ -1,36 +0,0 @@ -import React from "react"; -import Stimulus from "./Stimulus"; -import Parametrization from "./Parametrization"; -import ResponseMeasures from "./ResponseMeasures"; -import ResultMetrics from "./ResultMetrics"; - -import DeleteButton from "./DeleteLoadtest"; -import { deleteLoadtest } from "../../queries/rqa"; -import DeleteLoadtest from "./DeleteLoadtest"; -import EditLoadtest from "./EditLoadtest"; -export default function Loadtest({ - data, - parentMenuRef, - rqaId, - loadtestSpecifier, -}) { - return ( -
- - {data.name} - - - - -
- ); -} diff --git a/src/components/testing/Loadtests.jsx b/src/components/testing/Loadtests.jsx deleted file mode 100644 index e80e440..0000000 --- a/src/components/testing/Loadtests.jsx +++ /dev/null @@ -1,27 +0,0 @@ -import React, { useRef } from "react"; -import Loadtest from "./Loadtest"; - -export default function Loadtests({ data, rqaId, loadtestSpecifier }) { - const detailsRef = useRef(); - return ( -
- - Loadtests - - -
- ); -} diff --git a/src/components/testing/Parametrization.jsx b/src/components/testing/Parametrization.jsx deleted file mode 100644 index 2b76d12..0000000 --- a/src/components/testing/Parametrization.jsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from "react"; -import { useState } from "react"; -import { changeCasing } from "../../utils/formatting"; - -export default function Parametrization({ data }) { - const [expand, setExpand] = useState(false); - const [expandKeys, setExpandKeys] = useState({}); - - // Convert path_variables, request_body... - let formattedData = changeCasing(data, true, false); - - console.log(formattedData); - - const handleExpandKeys = (Param) => { - setExpandKeys((prevState) => { - const updatedParams = { ...prevState }; - updatedParams[Param] = !prevState[Param] || false; - return updatedParams; - }); - }; - - return ( -
- - Parametrization - - -
- ); -} diff --git a/src/components/testing/ResponseMeasures.jsx b/src/components/testing/ResponseMeasures.jsx deleted file mode 100644 index 559c699..0000000 --- a/src/components/testing/ResponseMeasures.jsx +++ /dev/null @@ -1,26 +0,0 @@ -import React, { useState } from "react"; -import { changeCasing } from "../../utils/formatting"; - -export default function ResponseMeasures({ data }) { - const [expand, setExpand] = useState(false); - let formattedData = changeCasing(data, true, true); - console.log(formattedData); - return ( -
- - setExpand(true)}>Response Measures - - -
- ); -} diff --git a/src/components/testing/ResultMetrics.jsx b/src/components/testing/ResultMetrics.jsx deleted file mode 100644 index 20f2d76..0000000 --- a/src/components/testing/ResultMetrics.jsx +++ /dev/null @@ -1,29 +0,0 @@ -import React, { useState } from "react"; -import { toHumanCasing } from "../../utils/formatting"; - -export default function ResultMetrics({ data }) { - const [expand, setExpand] = useState(false); - - let formattedData = []; - data.forEach((metric) => { - formattedData.push(toHumanCasing(metric)); - }); - - console.log(formattedData); - return ( -
- - Result Metrics - - -
- ); -} diff --git a/src/components/testing/RqaDefinition.jsx b/src/components/testing/RqaDefinition.jsx deleted file mode 100644 index d78d4d1..0000000 --- a/src/components/testing/RqaDefinition.jsx +++ /dev/null @@ -1,45 +0,0 @@ -import React, { useState } from "react"; -import Loadtests from "./Loadtests"; -export default function RqaDefinition({ data, loadtestSpecifier }) { - console.log(data); - return ( - - ); -} diff --git a/src/components/testing/Stimulus.jsx b/src/components/testing/Stimulus.jsx deleted file mode 100644 index 92cb4c8..0000000 --- a/src/components/testing/Stimulus.jsx +++ /dev/null @@ -1,30 +0,0 @@ -import React, { useState } from "react"; -import { changeCasing } from "../../utils/formatting"; - -export default function Stimulus({ data }) { - const [expand, setExpand] = useState(false); - - console.log(data); - - const formattedData = changeCasing(data, true, true); - console.log(formattedData); - - return ( -
- - Stimulus - - -
- ); -} diff --git a/src/components/testing/loadtest/LoadtestCheck.jsx b/src/components/testing/loadtest/LoadtestCheck.jsx deleted file mode 100644 index ca718bf..0000000 --- a/src/components/testing/loadtest/LoadtestCheck.jsx +++ /dev/null @@ -1,17 +0,0 @@ -import React, { useState } from "react"; -import { toSnakeCase } from "../../../utils/formatting"; -export default function LoadtestCheck({ option, inputs, onChange }) { - return ( -
- -
- ); -} diff --git a/src/components/testing/loadtest/LoadtestRadios.jsx b/src/components/testing/loadtest/LoadtestRadios.jsx deleted file mode 100644 index 279edf6..0000000 --- a/src/components/testing/loadtest/LoadtestRadios.jsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from "react"; -import { toSnakeCase } from "../../../utils/formatting"; - -export default function LoadtestRadios({ - label, - value, - options, - onChange, - optionName, - optionValue, -}) { - return ( -
- -
- {options.map((option, key) => { - return ( - - ); - })} -
-
- ); -} diff --git a/src/components/testing/loadtest/LoadtestSelect.jsx b/src/components/testing/loadtest/LoadtestSelect.jsx deleted file mode 100644 index 1896d5c..0000000 --- a/src/components/testing/loadtest/LoadtestSelect.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { toSnakeCase } from "../../../utils/formatting"; - -export default function LoadtestSelect({ - label, - value, - options, - onChange, - optionName, - optionValue, -}) { - return ( -
- - -
- ); -} diff --git a/src/components/testing/loadtest/LoadtestSlider.jsx b/src/components/testing/loadtest/LoadtestSlider.jsx deleted file mode 100644 index e367f62..0000000 --- a/src/components/testing/loadtest/LoadtestSlider.jsx +++ /dev/null @@ -1,35 +0,0 @@ -import React from "react"; -import { toSnakeCase } from "../../../utils/formatting"; - -export default function LoadtestSlider({ label, value, onChange }) { - return ( -
- - -
- 0% - 10% - 20% - 30% - 40% - 50% - 60% - 70% - 80% - 90% - 100% -
-
- ); -} diff --git a/src/components/testing/loadtest/LoadtestSpecifier.jsx b/src/components/testing/loadtest/LoadtestSpecifier.jsx deleted file mode 100644 index adb94f4..0000000 --- a/src/components/testing/loadtest/LoadtestSpecifier.jsx +++ /dev/null @@ -1,297 +0,0 @@ -import React, { useEffect, useState } from "react"; -import LoadtestSelect from "./LoadtestSelect"; -import LoadtestSlider from "./LoadtestSlider"; -import LoadtestRadios from "./LoadtestRadios"; -import LoadtestCheck from "./LoadtestCheck"; -import DropdownLeft from "../../DropdownLeft"; -import { useMutation, useQueryClient } from "@tanstack/react-query"; -import { addLoadtestToRqa } from "../../../queries/rqa"; -export default function LoadtestSpecifier({ - rqas, - domain, - loadtestSpecs, - selectedEdge, -}) { - const queryClient = useQueryClient(); - - const [inputs, setInputs] = useState({ - name: "Test", - system: "", - activity: "", - load_profile: "", - accuracy: 0, - highest_load: "", - time_to_highest_load: "", - path_variables: [], - response_time: "", - result_metrics: [], - }); - - const [showAdd, setShowAdd] = useState(); - - // We need to extract the Endpoint from the DAM to get the Parametrization - const [endpoint, setEndpoint] = useState(); - - const handleChange = (event) => { - const name = event.target.name; - const value = event.target.value; - setInputs((values) => ({ ...values, [name]: value })); - }; - - const handleResultMetricsChange = (optionId, isChecked) => { - if (isChecked) { - setInputs((prevInputs) => ({ - ...prevInputs, - result_metrics: [...prevInputs.result_metrics, optionId], - })); - } else { - setInputs((prevInputs) => ({ - ...prevInputs, - result_metrics: prevInputs.result_metrics.filter( - (id) => id !== optionId - ), - })); - } - }; - - const handlePathVariableChange = (event) => { - const name = event.target.name; - const value = event.target.value; - let path_variables_copy = inputs.path_variables; - path_variables_copy.find((variable) => variable.key == name).value = value; - - setInputs((values) => ({ - ...values, - path_variables: path_variables_copy, - })); - }; - - // Show only the Activities for the selected System - const getActivities = () => { - if (inputs.system) { - return domain?.systems?.find( - (system) => system.system_id == inputs.system - )?.activities; - } - return []; - }; - - const getDesignParameters = () => { - if (inputs.load_profile) { - const stimulus = loadtestSpecs.stimuluses.find( - (stimulus) => stimulus.id == inputs.load_profile - ); - if (!stimulus.supported) return false; - - return stimulus.designParameters; - } - return []; - }; - - const getEndpoint = useEffect(() => { - if (inputs.activity) { - setEndpoint( - domain.systems - .find((system) => system.system_id == inputs.system) - .activities.find( - (activity) => activity.activity_id == inputs.activity - ).endpoint - ); - } - }, [inputs.activity]); - - // Before we can initialize the path_variables, we have to know the endpoint - // Without it we donĀ“t know the keys - const setParametrization = useEffect(() => { - if (endpoint) { - let path_variables = []; - endpoint.path_variables.forEach((path_variable) => { - path_variables.push({ key: path_variable.name, value: "" }); - }); - console.log(path_variables); - setInputs((values) => ({ - ...values, - path_variables: path_variables, - })); - } - }, [endpoint]); - - // Change System and Actvitivity, when selecte Eddge changes - useEffect(() => { - if (domain) { - console.log("edge"); - console.log(domain); - getSystemAndActivityBasedOnSelectedEdge(); - } - }, [selectedEdge, domain]); - - const getSystemAndActivityBasedOnSelectedEdge = async () => { - if (selectedEdge) { - console.log("selectedEdge"); - let system = domain.systems.find( - (system) => system.system_id == selectedEdge.system - ); - let activity = system.activities.find( - (activity) => activity.activity_id == selectedEdge.mappingId - ); - setInputs((prevState) => ({ - ...prevState, - System: system.system_id, - Activity: activity.activity_id, - })); - } - }; - - useEffect(() => { - function checkProperties(obj) { - for (let key in obj) { - if (obj.hasOwnProperty(key)) { - const value = obj[key]; - - if ( - value === null || - value === undefined || - value === "" || - (typeof value === "object" && Object.keys(value).length === 0) || - (Array.isArray(value) && value.length === 0) - ) { - console.log(key); - return false; - } - } - } - return true; - } - - if (checkProperties(inputs)) { - setShowAdd(true); - } else { - setShowAdd(false); - } - }, [inputs]); - - const addToRqa = (rqaId) => { - console.log(rqaId); - rqaMutation.mutate({ rqaId, inputs: inputs }); - }; - - const rqaMutation = useMutation({ - mutationFn: addLoadtestToRqa, - onSuccess: (data) => { - //queryClient.setQueryData(["rqas", data.id], data); - queryClient.invalidateQueries(["rqas"]); - }, - }); - - return ( -
-

Loadtest Specification

-

Domain Story Item

- - -
-

Load Design

- - {getDesignParameters() ? ( - getDesignParameters().map((designParameter) => { - return ( - - ); - }) - ) : ( -

This Load Profile is not supported yet!

- )} - -
-

Response Measures

- {loadtestSpecs.responseMeasures.map((responseMeasure) => { - return ( - - ); - })} - -
-

Result Metrics

- {loadtestSpecs.metrics.map((option) => { - return ( - - handleResultMetricsChange(option.id, e.target.checked) - } - inputs={inputs} - /> - ); - })} - - {endpoint && ( -
-

Parametrization Details

- {endpoint.path_variables && ( -
-

Path Variables

- {endpoint.path_variables.map((path_variable) => { - let variableName = path_variable.name; - console.log(); - return ( - variable.key == variableName - )?.value - } - options={path_variable.szenarios} - optionName={"name"} - optionValue={"path"} - /> - ); - })} -
- )} -
- )} - {showAdd && } -
- ); -} diff --git a/src/pages/Testing.tsx b/src/pages/Testing.tsx index ab4c7da..a9c418c 100644 --- a/src/pages/Testing.tsx +++ b/src/pages/Testing.tsx @@ -1,23 +1,15 @@ import { useQuery } from "@tanstack/react-query"; import React from "react"; import { useState } from "react"; -import LoadtestSpecifier from "../components/testing/loadtest/LoadtestSpecifier"; -import { getAllRqas } from "../queries/rqa"; + import werkstatt from "../data/werkstatt.json"; import loadtestSpecs from "../data/loadtest-specs.json"; export default function Testing() { - const rqaQuery = useQuery({ - queryKey: ["rqas"], - queryFn: getAllRqas, - }); + return (
- +
); }