From 84173f3dc457b7b9eeba2cb7d3386f1e45c56932 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benjamin=20=C3=85strand?= <benjamin01.astrand@gmail.com> Date: Wed, 6 Dec 2023 11:51:28 +0100 Subject: [PATCH] Cached improvementWorks on homePage and profilePage --- client/homePage.ts | 22 ++++++++++++++++++++-- client/profilePage.ts | 2 +- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/client/homePage.ts b/client/homePage.ts index 6064f45..104a540 100644 --- a/client/homePage.ts +++ b/client/homePage.ts @@ -37,6 +37,8 @@ interface Project { let myIdeaCards: { [key: number]: IdeaCard } = {}; +const cache: {[key: string]: any[]} = {}; + class IdeaCard { private header: string; private department: string; @@ -323,7 +325,9 @@ export async function loadPage(listenersLoaded: boolean) { } const projectContainer = document.getElementById("project-container"); if (projectContainer) { - await getProjects(projectContainer, listenersLoaded, user.id); + const startGetProjects = performance.now(); + getProjects(projectContainer, listenersLoaded, user.id); + console.log(`getProjects duration: ${performance.now() - startGetProjects} ms`) } console.log("innan"); const departmentContainer = document.getElementById( @@ -490,7 +494,19 @@ export async function getProjects( listenersLoaded: boolean, userHsaId: string ) { - const data = await getImprovementWorksForUser(userHsaId); + let data: any[] = []; + + if(cache[userHsaId]) { + const startGetCachedProjects = performance.now(); + data = cache[userHsaId]; + console.log(`getCachedProjects duration: ${performance.now() - startGetCachedProjects} ms`); + } else { + const startGetImprovementWorksForUser = performance.now(); + data = await getImprovementWorksForUser(userHsaId); + cache[userHsaId] = data; + console.log(`getImprovementWorksForUser duration: ${performance.now() - startGetImprovementWorksForUser} ms`); + } + let id = 0; data.forEach(async (project) => { let title = project.name; @@ -511,7 +527,9 @@ export async function getProjects( dateStarted ); projectCards[i] = card; + const startGenerateHTML = performance.now(); let cardHTML = card.generateHTML(); + console.log(`GenerateHTML duration ${performance.now() - startGenerateHTML} ms`); let div = document.createElement("div"); div.className = "homePageProjectCardDiv"; // Set the class name(s) here div.innerHTML = cardHTML; diff --git a/client/profilePage.ts b/client/profilePage.ts index d4d55da..6706058 100644 --- a/client/profilePage.ts +++ b/client/profilePage.ts @@ -259,7 +259,7 @@ async function createNewIdeaCard( } const projectContainer = document.getElementById("project-container"); if(projectContainer) { - await getProjects(projectContainer, listenersLoaded, user.id); + getProjects(projectContainer, listenersLoaded, user.id); } }) -- GitLab