diff --git a/src/lib/shared.svelte.ts b/src/lib/shared.svelte.ts index 4eac4e2266117ee8284e726e718857ba7417a22d..e21dbec9a78fe1d5059a059011a06db81b708877 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 eb18b2ba3a429d2404ef480fc63ccb8e42a6321f..1db2297d3f09047f6bc1267780d45e7125923151 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 &&