From cf8f8cb2f5e5e819ac6e7bfb4308ffe1c49a199f Mon Sep 17 00:00:00 2001
From: Przemek Kaminski <pk@intrepidus.pl>
Date: Thu, 14 May 2020 08:40:13 +0200
Subject: [PATCH] [ngrams] performance fix for ngrams table that I broke

I broke it in previous commit, by not caching ngramsTable in displayRow
and instead recomputing it every time from initTable.
---
 src/Gargantext/Components/NgramsTable.purs | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/src/Gargantext/Components/NgramsTable.purs b/src/Gargantext/Components/NgramsTable.purs
index ebdd6d4a0..5c4ac23ac 100644
--- a/src/Gargantext/Components/NgramsTable.purs
+++ b/src/Gargantext/Components/NgramsTable.purs
@@ -402,9 +402,6 @@ loadedNgramsTableSpecCpt = R.hooksComponent "G.C.NT.loadedNgramsTable" cpt
                                                     , ngramsSelectAll = false }
             toggler s = s { ngramsSelection = roots
                           , ngramsSelectAll = true }
-              where
-                ngramsTable = applyNgramsPatches state initTable
-                roots = rootsOf ngramsTable
         performAction Synchronize = syncPatchesR path' (state /\ setState)
         performAction (CommitPatch pt) =
           commitPatchR (Versioned {version: ngramsVersion, data: pt}) (state /\ setState)
@@ -431,12 +428,13 @@ loadedNgramsTableSpecCpt = R.hooksComponent "G.C.NT.loadedNgramsTable" cpt
             <$> Map.toUnfoldable (Map.filter rowsFilter (ngramsTable ^. _NgramsTable))
             )
         rowsFilter :: NgramsElement -> Boolean
-        rowsFilter = displayRow state searchQuery versioned termListFilter
+        rowsFilter = displayRow state searchQuery ngramsTable termListFilter
         addOcc (Tuple ne ngramsElement) =
           let Additive occurrences = sumOccurrences ngramsTable ngramsElement in
           Tuple ne (ngramsElement # _NgramsElement <<< _occurrences .~ occurrences)
 
         ngramsTable = applyNgramsPatches state initTable
+        roots = rootsOf ngramsTable
 
         convertRow (Tuple ngrams ngramsElement) =
           { row: renderNgramsItem { dispatch: performAction
@@ -476,12 +474,12 @@ loadedNgramsTableSpecCpt = R.hooksComponent "G.C.NT.loadedNgramsTable" cpt
         setSearchQuery x    = setPath $ _ { searchQuery    = x }
 
 
-displayRow :: State -> SearchQuery -> VersionedNgramsTable -> Maybe TermList -> NgramsElement -> Boolean
+displayRow :: State -> SearchQuery -> NgramsTable -> Maybe TermList -> NgramsElement -> Boolean
 displayRow state@{ ngramsChildren
                  , ngramsLocalPatch
                  , ngramsParent }
            searchQuery
-           (Versioned { data: initTable })
+           ngramsTable
            termListFilter
            (NgramsElement {ngrams, root, list}) =
   root == Nothing
@@ -501,7 +499,6 @@ displayRow state@{ ngramsChildren
   || tablePatchHasNgrams ngramsLocalPatch ngrams
   -- ^ unless they are being processed at the moment.
   where
-    ngramsTable = applyNgramsPatches state initTable
     ngramsParentRoot :: Maybe NgramsTerm
     ngramsParentRoot =
       (\np -> ngramsTable ^? at np
-- 
2.21.0