From 8b5225cc4b999cf0bc16027cbe07ec1519d1d31d Mon Sep 17 00:00:00 2001 From: Emmanuel Raviart <emmanuel@raviart.com> Date: Wed, 30 Oct 2024 16:25:31 +0100 Subject: [PATCH] Fasten simulations & launch simulations. --- src/lib/shared.svelte.ts | 19 +++++++++++++------ src/routes/+layout.svelte | 9 ++++----- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/lib/shared.svelte.ts b/src/lib/shared.svelte.ts index 4eac4e226..e21dbec9a 100644 --- a/src/lib/shared.svelte.ts +++ b/src/lib/shared.svelte.ts @@ -718,6 +718,11 @@ async function sendTestCasesSimulation( calculation.situationIndex === undefined ? shared.evaluationByNameArray : [...shared.evaluationByNameArray] + + // Use an intermediate variable to avoir multiple updates of shared.valuesByCalculationNameByVariableNameArray + // in following loop. + let valuesByCalculationNameByVariableNameArray = + shared.valuesByCalculationNameByVariableNameArray for (const { entity: entityKey, name: variableName, @@ -746,8 +751,8 @@ async function sendTestCasesSimulation( // Split evaluation.value vector for each situation. { let testCasesPopulationIndex = 0 - shared.valuesByCalculationNameByVariableNameArray = - shared.valuesByCalculationNameByVariableNameArray.map( + valuesByCalculationNameByVariableNameArray = + valuesByCalculationNameByVariableNameArray.map( ( valuesByCalculationNameByVariableName, situationIndex, @@ -784,7 +789,7 @@ async function sendTestCasesSimulation( // Variable has been computed for a single test case. const updatedValuesByCalculationNameByVariableNameArray = [ - ...shared.valuesByCalculationNameByVariableNameArray, + ...valuesByCalculationNameByVariableNameArray, ] const valuesByCalculationNameByVariableName = { ...updatedValuesByCalculationNameByVariableNameArray[ @@ -800,7 +805,7 @@ async function sendTestCasesSimulation( updatedValuesByCalculationNameByVariableNameArray[ calculation.situationIndex ] = valuesByCalculationNameByVariableName - shared.valuesByCalculationNameByVariableNameArray = + valuesByCalculationNameByVariableNameArray = updatedValuesByCalculationNameByVariableNameArray } @@ -818,7 +823,7 @@ async function sendTestCasesSimulation( updatedEvaluationByNameArray = updatedEvaluationByNameArray.map( (evaluationByName, situationIndex): EvaluationByName => { const situation = shared.testCases[situationIndex] - const values = shared.valuesByCalculationNameByVariableNameArray[ + const values = valuesByCalculationNameByVariableNameArray[ situationIndex ][variableName][calculationName] as VariableValues const entitySituation = @@ -863,7 +868,7 @@ async function sendTestCasesSimulation( // First, update delta and values of evaluations. const situation = shared.testCases[calculation.situationIndex] - const values = shared.valuesByCalculationNameByVariableNameArray[ + const values = valuesByCalculationNameByVariableNameArray[ calculation.situationIndex ][variableName][calculationName] as VariableValues const entitySituation = situation[entity.key_plural as string] ?? {} @@ -902,6 +907,8 @@ async function sendTestCasesSimulation( } } } + shared.valuesByCalculationNameByVariableNameArray = + valuesByCalculationNameByVariableNameArray // Update deltaSums of evaluations from their new delta. if (calculation.situationIndex === undefined) { diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index eb18b2ba3..1db2297d3 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -112,11 +112,10 @@ $effect(() => { updateOnSliderChange(shared.testCases) }) - // TODO svelte5: find out why requestAllTestCasesCalculations makes the UI lag - // onMount(() => { - // // Launch first simulation. - // requestAllTestCasesCalculations(null) - // }) + onMount(() => { + // Launch first simulation. + requestAllTestCasesCalculations(null) + }) $effect(() => { if ( requestedCalculations.budgetVariableName !== undefined && -- GitLab