From 0666eb2cf28c733eb6651f71f6ee31589e550db3 Mon Sep 17 00:00:00 2001 From: Robert Schlick Date: Thu, 19 Aug 2021 14:52:40 +0200 Subject: [PATCH] Feature/2080 - Fix issues for workshop * Admin: T07 instances can now be set to private or public * Fix error when clicking outside of model bounds in results chart * T07: Fix y-axis in charts --- src/scenes/dashboard/commands/index.ts | 104 +++++++++--------- .../shared/complexTools/ResultsChart.tsx | 22 +++- src/scenes/shared/complexTools/ResultsMap.tsx | 5 + src/scenes/t07/components/CrossSection.tsx | 2 + 4 files changed, 80 insertions(+), 53 deletions(-) diff --git a/src/scenes/dashboard/commands/index.ts b/src/scenes/dashboard/commands/index.ts index a1d18c367..ecaafa6d4 100644 --- a/src/scenes/dashboard/commands/index.ts +++ b/src/scenes/dashboard/commands/index.ts @@ -2,64 +2,70 @@ import ModflowModelCommand from '../../../scenes/t03/commands/modflowModelComman import ScenarioAnalysisCommand from '../../t07/commands/scenarioAnalysisCommand'; import SimpleToolCommand from '../../../scenes/shared/simpleTools/commands/SimpleToolsCommand'; +interface IPayload { + id: string; + name: string; + description: string; + isPublic: boolean; +} + export const createToolInstance = (tool: string, payload: any) => { - switch (tool) { - case 'T03': - return (ModflowModelCommand.createModflowModel(payload)); - case 'T07': - return (ScenarioAnalysisCommand.createScenarioAnalysis(payload.scenarioanalysisId, payload.modelToCloneId, - payload.name, payload.description, payload.isPublic)); - default: - return (SimpleToolCommand.createToolInstance(payload)); - } + switch (tool) { + case 'T03': + return (ModflowModelCommand.createModflowModel(payload)); + case 'T07': + return (ScenarioAnalysisCommand.createScenarioAnalysis(payload.scenarioanalysisId, payload.modelToCloneId, + payload.name, payload.description, payload.isPublic)); + default: + return (SimpleToolCommand.createToolInstance(payload)); + } }; export const cloneToolInstance = (tool: string, id: string, newId: string) => { - switch (tool) { - case 'T03': - return (ModflowModelCommand.cloneModflowModel({id, newId, isTool: true})); - case 'T07': - return ScenarioAnalysisCommand.cloneScenarioAnalysis({id, newId}); - default: - return (SimpleToolCommand.cloneToolInstance({id, newId})); - } + switch (tool) { + case 'T03': + return (ModflowModelCommand.cloneModflowModel({id, newId, isTool: true})); + case 'T07': + return ScenarioAnalysisCommand.cloneScenarioAnalysis({id, newId}); + default: + return (SimpleToolCommand.cloneToolInstance({id, newId})); + } }; export const deleteToolInstance = (tool: string, id: string) => { - switch (tool) { - case 'T03': - return (ModflowModelCommand.deleteModflowModel({id})); - case 'T07': - return (ScenarioAnalysisCommand.deleteScenarioAnalysis(id)); - default: - return (SimpleToolCommand.deleteToolInstance({id})); - } + switch (tool) { + case 'T03': + return (ModflowModelCommand.deleteModflowModel({id})); + case 'T07': + return (ScenarioAnalysisCommand.deleteScenarioAnalysis(id)); + default: + return (SimpleToolCommand.deleteToolInstance({id})); + } }; -export const updateToolInstance = (tool: string, payload: any) => { - switch (tool) { - case 'T03': - return (ModflowModelCommand.updateModflowModelMetadata( - payload.id, payload.name, payload.description, payload.isPublic - )); - case 'T07': - return (ScenarioAnalysisCommand.updateScenarioAnalysis(payload.scenarioanalysisId, payload.name, - payload.description, payload.isPublic)); - default: - return (SimpleToolCommand.updateToolInstance(payload)); - } +export const updateToolInstance = (tool: string, payload: IPayload) => { + switch (tool) { + case 'T03': + return (ModflowModelCommand.updateModflowModelMetadata( + payload.id, payload.name, payload.description, payload.isPublic + )); + case 'T07': + return (ScenarioAnalysisCommand.updateScenarioAnalysis(payload.id, payload.name, + payload.description, payload.isPublic)); + default: + return (SimpleToolCommand.updateToolInstance(payload)); + } }; -export const updateToolInstanceMetadata = (tool: string, payload: any) => { - switch (tool) { - case 'T03': - return (ModflowModelCommand.updateModflowModelMetadata( - payload.id, payload.name, payload.description, payload.isPublic - )); - case 'T07': - return (ScenarioAnalysisCommand.updateScenarioAnalysis(payload.scenarioanalysisId, payload.name, - payload.description, payload.isPublic)); - default: - return (SimpleToolCommand.updateToolInstanceMetadata(payload.id, payload.name, payload.description, payload.isPublic)); - } +export const updateToolInstanceMetadata = (tool: string, payload: IPayload) => { + switch (tool) { + case 'T03': + return (ModflowModelCommand.updateModflowModelMetadata( + payload.id, payload.name, payload.description, payload.isPublic + )); + case 'T07': + return (ScenarioAnalysisCommand.updateScenarioAnalysis(payload.id, payload.name, payload.description, payload.isPublic)); + default: + return (SimpleToolCommand.updateToolInstanceMetadata(payload.id, payload.name, payload.description, payload.isPublic)); + } }; diff --git a/src/scenes/shared/complexTools/ResultsChart.tsx b/src/scenes/shared/complexTools/ResultsChart.tsx index ec4569f2f..83d90a631 100644 --- a/src/scenes/shared/complexTools/ResultsChart.tsx +++ b/src/scenes/shared/complexTools/ResultsChart.tsx @@ -160,14 +160,28 @@ const resultsChart = ({data, selectedModels, row, col, show, yLabel = ''}: IProp referenceTo = row; } - const localMin = Math.floor(min(processedData.map((d) => d.value)) || 0); - const localMax = Math.ceil(max(processedData.map((d) => d.value)) || 0); + const values: number[] = []; + processedData.forEach((r) => { + Object.keys(r).filter((p) => p !== 'name').forEach((p) => { + values.push(r[p]); + }); + }); + + const localMin = Math.floor(min(values) || 0); + const localMax = Math.ceil(max(values) || 0); return ( - - + + diff --git a/src/scenes/shared/complexTools/ResultsMap.tsx b/src/scenes/shared/complexTools/ResultsMap.tsx index 521d54415..2bb780dae 100644 --- a/src/scenes/shared/complexTools/ResultsMap.tsx +++ b/src/scenes/shared/complexTools/ResultsMap.tsx @@ -91,6 +91,11 @@ const ResultsMap = (props: IProps) => { }, [props.activeCell]); const handleClickOnMap = ({ latlng }: LeafletMouseEvent) => { + if (latlng.lat > props.model.boundingBox.yMax || latlng.lat < props.model.boundingBox.yMin || + latlng.lng > props.model.boundingBox.xMax || latlng.lng < props.model.boundingBox.xMin) { + return null; + } + const activeCell = getCellFromClick( props.model.boundingBox, props.model.gridSize, diff --git a/src/scenes/t07/components/CrossSection.tsx b/src/scenes/t07/components/CrossSection.tsx index 73cfabe39..fbdb4e7e4 100644 --- a/src/scenes/t07/components/CrossSection.tsx +++ b/src/scenes/t07/components/CrossSection.tsx @@ -250,6 +250,7 @@ const CrossSection = (props: IProps) => { col={selectedCol} row={selectedRow} show={'row'} + yLabel={selectedType} /> @@ -261,6 +262,7 @@ const CrossSection = (props: IProps) => { col={selectedCol} row={selectedRow} show={'col'} + yLabel={selectedType} />