From 4a02b48efeefe441f7105b6b34881f56d56e63b6 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 14 Aug 2023 16:12:00 +0200 Subject: [PATCH] #5 df: You can select a scenario now based on a google-like search bar --- src/components/ScenarioTestMenu.jsx | 66 ++++++++++++++++++----------- src/index.css | 33 +++++++++++++++ 2 files changed, 75 insertions(+), 24 deletions(-) diff --git a/src/components/ScenarioTestMenu.jsx b/src/components/ScenarioTestMenu.jsx index d915942..1606c6b 100644 --- a/src/components/ScenarioTestMenu.jsx +++ b/src/components/ScenarioTestMenu.jsx @@ -1,5 +1,5 @@ import React, {useEffect, useState} from 'react'; -import {useEdges, useOnSelectionChange, useReactFlow} from 'reactflow'; +import {useReactFlow} from 'reactflow'; import * as scenarioSpecs from '../data/scenariotest-specs.json'; import ResizeBar from './ResizeBar'; import * as mapping from '../data/werkstatt-en.json'; @@ -67,6 +67,7 @@ export default function ScenarioTestMenu(props) { const [loadDecision, setLoadDecision] = useState(null); const [resilienceDecision, setResilienceDecision] = useState(null); const [isActivityView, setIsActivityView] = useState(true); + const [filteredScenarios, setFilteredScenarios] = useState(null); // state-based RQA-definition const [rqa, setRqa] = useState(initRQADefiniton); @@ -398,19 +399,26 @@ export default function ScenarioTestMenu(props) { setResponseMeasure(null); } - const handleScenarioChange = (e) => { - let chosenScenarioDescription = e.target.value; - let chosenScenario = scenarios.find((scenario) => scenario.description === chosenScenarioDescription); - console.log(chosenScenario); - setSelectedScenario(chosenScenario); - setLoadDesign(chosenScenario.load_design); - setResilienceDesign(chosenScenario.resilience_design); + const handleScenarioChange = (selectedScenario) => { + setSelectedScenario(selectedScenario); + setLoadDesign(selectedScenario?.load_design); + setResilienceDesign(selectedScenario?.resilience_design); + setFilteredScenarios(null); setLoadDecision(null); setResilienceDecision(null); setResponseMeasure(null); } + const filterScenarios = (e) => { + const inputText = e.target.value; + let filteredScenarios = deepCopy(scenarios); + filteredScenarios = filteredScenarios.filter(scenario => + scenario.description.toLowerCase().includes(inputText.toLowerCase()) + ); + setFilteredScenarios(filteredScenarios); + } + const handleLoadDecisionChange = (e) => { let chosenLoadDecision = e.target.value; setLoadDecision(chosenLoadDecision); @@ -480,9 +488,9 @@ export default function ScenarioTestMenu(props) { activity: allActivities[selectedActivity], mode: selectedMode, description: selectedScenario.description, - expected: responseMeasure, - loadDesign: loadDesign, - resilienceDesign: resilienceDesign + response_measure: responseMeasure, + load_design: loadDesign, + resilience_design: resilienceDesign }; rqa.scenarios.push(scenario); @@ -768,24 +776,34 @@ export default function ScenarioTestMenu(props) { {selectedMode !== null ?
- +
+ {filteredScenarios?.map((scenario) => { + return ( +
handleScenarioChange(scenario)}>{scenario.description} +
+ ) })} - +
+

{selectedScenario?.description}

+ {/**/}
: null} - {selectedMode === "What if" && selectedScenario !== null ?