From faf7e9c98f08ef8f50bf27b7be1e28edde342815 Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Wed, 20 Aug 2025 12:05:05 +0200 Subject: [PATCH] Try to improve responsiveness when refreshing project list --- .../src/store/modules/projects/actions.js | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/lib/www/client/source/src/store/modules/projects/actions.js b/lib/www/client/source/src/store/modules/projects/actions.js index 38bca66..8af8eef 100644 --- a/lib/www/client/source/src/store/modules/projects/actions.js +++ b/lib/www/client/source/src/store/modules/projects/actions.js @@ -5,6 +5,17 @@ import { duration_to_ms, ms_to_duration, normalise_duration, add_durations } fro */ async function refreshProjects ({commit, dispatch, state, rootState}) { + async function getSummary (project) { + const url = `/project/${project.pid}/summary`; + const init = {}; + const summary = await dispatch('api', [url, init, null, {silent:true}]); + if (summary) { + return {...project, ...summary}; + } else { + return project; + } + } + if (state.loading) { commit('abortProjectsLoading'); } @@ -20,23 +31,22 @@ async function refreshProjects ({commit, dispatch, state, rootState}) { const res = await dispatch('api', [url, init, null, {silent:true}]); if (res) { - for (let index in res) { - const project = res[index]; - if (!project.pid) { - console.warn("Project has no Project ID!"); - continue; - } + let projects; - const url = `/project/${project.pid}/summary`; - const init = {}; - const summary = await dispatch('api', [url, init, null, {silent:true}]); - if (summary) { - res[index] = {...project, ...summary}; - } + if (res.some( project => project.pid == null )) { + console.warn("At least one project found with no PID!"); + projects = res.filter( project => project.pid != null ); + } else { + projects = res; } - commit('setProjects', res); + + commit('setProjects', projects); // First without summaries commit('setProjectsTimestamp', tstamp); + + projects = await Promise.all(projects.map( getSummary )); + + commit('setProjects', projects); // Then with summaries } commit('clearProjectsLoading'); dispatch('prepareGroups');