[ngrams] fixes to highlight

- Simplified reloads
- less boxes, more pure state
parent 64a9dd42
Pipeline #4394 failed with stage
in 0 seconds
...@@ -52,7 +52,8 @@ type CommonProps = ...@@ -52,7 +52,8 @@ type CommonProps =
, cache :: Record Cache , cache :: Record Cache
) )
type AnnotatedFieldProps = type AnnotatedFieldProps =
( ngrams :: T.Box NgramsTable ( -- ngrams :: T.Box NgramsTable
ngrams' :: NgramsTable
| CommonProps ) | CommonProps )
type MouseEvent = E.SyntheticEvent DE.MouseEvent type MouseEvent = E.SyntheticEvent DE.MouseEvent
...@@ -65,8 +66,8 @@ annotatedField :: R2.Leaf AnnotatedFieldProps ...@@ -65,8 +66,8 @@ annotatedField :: R2.Leaf AnnotatedFieldProps
annotatedField = R2.leaf annotatedFieldCpt annotatedField = R2.leaf annotatedFieldCpt
annotatedFieldCpt :: R.Component AnnotatedFieldProps annotatedFieldCpt :: R.Component AnnotatedFieldProps
annotatedFieldCpt = here.component "annotatedField" cpt where annotatedFieldCpt = here.component "annotatedField" cpt where
cpt props _ = do cpt props@{ ngrams' } _ = do
ngrams' <- T.useLive T.unequal props.ngrams -- ngrams' <- T.useLive T.unequal props.ngrams
menuRef <- R.useRef (Nothing :: Maybe (Record AnnotationMenu)) menuRef <- R.useRef (Nothing :: Maybe (Record AnnotationMenu))
redrawMenu <- T.useBox false redrawMenu <- T.useBox false
......
...@@ -13,7 +13,9 @@ import Data.Set (Set) ...@@ -13,7 +13,9 @@ import Data.Set (Set)
import Data.Set as Set import Data.Set as Set
import Data.String (length) import Data.String (length)
import Data.String as String import Data.String as String
import Data.Tuple (Tuple(..))
import Data.Tuple.Nested ((/\)) import Data.Tuple.Nested ((/\))
import Effect.Class (liftEffect)
import Gargantext.Components.Annotation.Field as AnnotatedField import Gargantext.Components.Annotation.Field as AnnotatedField
import Gargantext.Components.Annotation.Types as AFT import Gargantext.Components.Annotation.Types as AFT
import Gargantext.Components.AutoUpdate (autoUpdate) import Gargantext.Components.AutoUpdate (autoUpdate)
...@@ -26,7 +28,7 @@ import Gargantext.Components.NgramsTable.AutoSync (useAutoSync) ...@@ -26,7 +28,7 @@ import Gargantext.Components.NgramsTable.AutoSync (useAutoSync)
import Gargantext.Components.Node (NodePoly(..)) import Gargantext.Components.Node (NodePoly(..))
import Gargantext.Config.REST (logRESTError) import Gargantext.Config.REST (logRESTError)
import Gargantext.Core.NgramsTable.Functions (addNewNgramA, applyNgramsPatches, coreDispatch, findNgramRoot, setTermListA, computeCache) import Gargantext.Core.NgramsTable.Functions (addNewNgramA, applyNgramsPatches, coreDispatch, findNgramRoot, setTermListA, computeCache)
import Gargantext.Core.NgramsTable.Types (CoreAction(..), NgramsTable(..), NgramsTerm, Versioned(..), replace) import Gargantext.Core.NgramsTable.Types (CoreAction(..), NgramsTable(..), NgramsTerm, State, Versioned(..), replace)
import Gargantext.Hooks.FirstEffect (useFirstEffect') import Gargantext.Hooks.FirstEffect (useFirstEffect')
import Gargantext.Hooks.Loader (useLoader) import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Sessions (Session) import Gargantext.Sessions (Session)
...@@ -49,7 +51,6 @@ here = R2.here "Gargantext.Components.Document.Layout" ...@@ -49,7 +51,6 @@ here = R2.here "Gargantext.Components.Document.Layout"
type Props = type Props =
( loaded :: LoadedData ( loaded :: LoadedData
, path :: DocPath , path :: DocPath
, reload :: T2.ReloadS
, session :: Session , session :: Session
| Options | Options
) )
...@@ -69,15 +70,13 @@ layoutCpt :: R.Component Props ...@@ -69,15 +70,13 @@ layoutCpt :: R.Component Props
layoutCpt = here.component "layout" cpt where layoutCpt = here.component "layout" cpt where
cpt props@{ path: path@{ listIds cpt props@{ path: path@{ listIds
, nodeId } , nodeId }
, reload
, session } _ = do , session } _ = do
reload' <- T.useLive T.unequal reload
case A.head listIds of case A.head listIds of
Nothing -> pure $ H.div {} [ H.text "No list supplied!" ] Nothing -> pure $ H.div {} [ H.text "No list supplied!" ]
Just listId -> Just listId ->
useLoader { errorHandler useLoader { errorHandler
, loader: \p -> getContextNgrams session p.contextId p.listId , loader: \p -> getContextNgrams session p.contextId p.listId
, path: { contextId: nodeId, listId, reload: reload' } , path: { contextId: nodeId, listId }
, render: \contextNgrams -> , render: \contextNgrams ->
layoutWithContextNgrams $ Record.merge props { contextNgrams } } layoutWithContextNgrams $ Record.merge props { contextNgrams } }
where where
...@@ -93,20 +92,32 @@ layoutWithContextNgramsCpt :: R.Component WithContextNgramsProps ...@@ -93,20 +92,32 @@ layoutWithContextNgramsCpt :: R.Component WithContextNgramsProps
layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where
-- Component -- Component
cpt { contextNgrams cpt { contextNgrams
, path
, reload
, loaded: , loaded:
loaded@{ ngramsTable: Versioned { data: initTable } loaded@{ ngramsTable: Versioned { data: initTable }
, document: NodePoly { hyperdata: Document doc } , document: NodePoly { hyperdata: Document doc }
} }
, path
, sideControlsSlot , sideControlsSlot
} _ = do } _ = do
-- | States -- | States
-- | -- |
reload' <- T.useLive T.unequal reload
state'@{ ngramsLocalPatch } /\ state <- contextNgramsS <- T.useBox contextNgrams
R2.useBox' $ initialState { loaded } contextNgrams' <- T.useLive T.unequal contextNgramsS
-- ngrams <- T.useBox initTable
-- ngrams' <- T.useLive T.unequal ngrams
state <- T.useBox $ initialState { loaded }
state'@{ ngramsLocalPatch } <- T.useLive T.unequal state
let ngrams' = applyNgramsPatches state' initTable
-- R.useEffect' $ do
-- let (NgramsTable { ngrams_repo_elements: nre }) = ngrams'
-- let nre' = Map.mapMaybeWithKey (\k v -> Just { k, v }) nre
-- here.log2 "[layout] nre" $ A.fromFoldable nre'
-- here.log2 "[layout] contextNgrams" contextNgrams
-- here.log2 "[layout] contextNgrams'" contextNgrams'
-- here.log2 "[layout] state'" state'
mode' /\ mode <- R2.useBox' AFT.EditionMode mode' /\ mode <- R2.useBox' AFT.EditionMode
...@@ -116,9 +127,6 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where ...@@ -116,9 +127,6 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where
onPending' <- R2.useLive' onPending onPending' <- R2.useLive' onPending
result' <- R2.useLive' result result' <- R2.useLive' result
ngrams <- T.useBox initTable
ngrams' <- T.useLive T.unequal ngrams
-- | Computed -- | Computed
-- | -- |
let let
...@@ -127,7 +135,7 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where ...@@ -127,7 +135,7 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where
-- ngrams = applyNgramsPatches state' initTable -- ngrams = applyNgramsPatches state' initTable
cache = computeCache ngrams' $ Set.fromFoldable contextNgrams cache = computeCache ngrams' $ Set.fromFoldable contextNgrams'
setTermListOrAddA ngram Nothing = setTermListOrAddA ngram Nothing =
addNewNgramA ngram addNewNgramA ngram
...@@ -141,14 +149,17 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where ...@@ -141,14 +149,17 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where
let patch = setTermListOrAddA root mOldList termList let patch = setTermListOrAddA root mOldList termList
-- here.log2 "[setTermList] patch" patch -- here.log2 "[setTermList] patch" patch
dispatch patch dispatch patch
T.write_ (applyNgramsPatches state' initTable) ngrams -- T.write_ (applyNgramsPatches state' initTable) ngrams
case mOldList of
Nothing -> T.write_ (contextNgrams' <> [ root ]) contextNgramsS
Just _ -> pure unit
-- here.log2 "[setTermList] calling reload" reload' -- here.log2 "[setTermList] calling reload" reload'
T2.reload reload -- T2.reload reload
hasAbstract = maybe false (not String.null) doc.abstract hasAbstract = maybe false (not String.null) doc.abstract
annotate text = AnnotatedField.annotatedField annotate text = AnnotatedField.annotatedField
{ ngrams { ngrams'
, setTermList , setTermList
, text , text
, mode: mode' , mode: mode'
...@@ -228,7 +239,8 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where ...@@ -228,7 +239,8 @@ layoutWithContextNgramsCpt = here.component "layoutWithContextNgrams" cpt where
autoUpdate autoUpdate
{ duration: 5000 { duration: 5000
, effect: dispatch $ Synchronize , effect: dispatch $ Synchronize
{ afterSync: \_ -> pure unit { afterSync: \_ -> do
liftEffect $ here.log "[autoSync] synchronize war run"
} }
} }
-- @NOTE #386: revert manual for automatic sync -- @NOTE #386: revert manual for automatic sync
......
...@@ -44,8 +44,6 @@ docFocusCpt = here.component "main" cpt where ...@@ -44,8 +44,6 @@ docFocusCpt = here.component "main" cpt where
-- | States -- | States
-- | -- |
state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData) state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData)
reload <- T.useBox T2.newReload
reload' <- T.useLive T.unequal reload
-- | Computed -- | Computed
-- | -- |
...@@ -92,7 +90,6 @@ docFocusCpt = here.component "main" cpt where ...@@ -92,7 +90,6 @@ docFocusCpt = here.component "main" cpt where
layout layout
{ loaded { loaded
, path , path
, reload
, session , session
, sideControlsSlot: Just $ , sideControlsSlot: Just $
H.div H.div
......
...@@ -42,8 +42,6 @@ nodeCpt = here.component "node" cpt where ...@@ -42,8 +42,6 @@ nodeCpt = here.component "node" cpt where
session <- useSession session <- useSession
state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData) state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData)
reload <- T.useBox T2.newReload
reload' <- T.useLive T.unequal reload
-- | Computed -- | Computed
-- | -- |
...@@ -89,7 +87,6 @@ nodeCpt = here.component "node" cpt where ...@@ -89,7 +87,6 @@ nodeCpt = here.component "node" cpt where
layout layout
{ loaded { loaded
, path , path
, reload
, session , session
} }
} }
...@@ -556,9 +556,6 @@ sideTextCpt = here.component "sideText" cpt where ...@@ -556,9 +556,6 @@ sideTextCpt = here.component "sideText" cpt where
-- R.useEffect' $ do -- R.useEffect' $ do
-- here.log2 "[sideText] state'" state' -- here.log2 "[sideText] state'" state'
reload <- T.useBox T2.newReload
reload' <- T.useLive T.unequal reload
-- | Computed -- | Computed
-- | -- |
let let
...@@ -585,11 +582,10 @@ sideTextCpt = here.component "sideText" cpt where ...@@ -585,11 +582,10 @@ sideTextCpt = here.component "sideText" cpt where
-- } -- }
useLoader { errorHandler: logRESTError here "[sidePanelText]" useLoader { errorHandler: logRESTError here "[sidePanelText]"
, loader: \{ path, reload'} -> loadData path , loader: \{ path } -> loadData path
, path: { path, reload' } , path: { path }
, render: \loaded -> loadedSideText { loaded , render: \loaded -> loadedSideText { loaded
, path , path
, reload
, session } , session }
} }
...@@ -622,13 +618,12 @@ sideTextCpt = here.component "sideText" cpt where ...@@ -622,13 +618,12 @@ sideTextCpt = here.component "sideText" cpt where
type LoadedSideTextProps = type LoadedSideTextProps =
( loaded :: LoadedData ( loaded :: LoadedData
, path :: DocPath , path :: DocPath
, reload :: T2.ReloadS
, session :: Session ) , session :: Session )
loadedSideText :: R2.Leaf LoadedSideTextProps loadedSideText :: R2.Leaf LoadedSideTextProps
loadedSideText = R2.leaf loadedSideTextCpt loadedSideText = R2.leaf loadedSideTextCpt
loadedSideTextCpt :: R.Component LoadedSideTextProps loadedSideTextCpt :: R.Component LoadedSideTextProps
loadedSideTextCpt = here.component "loadedSideText" cpt where loadedSideTextCpt = here.component "loadedSideText" cpt where
cpt { loaded, path, reload, session } _ = do cpt { loaded, path, session } _ = do
pure $ H.div { className: "graph-doc-focus" } pure $ H.div { className: "graph-doc-focus" }
[ layout { loaded, path, reload, session } ] [ layout { loaded, path, session } ]
...@@ -45,9 +45,6 @@ docFocusCpt = here.component "main" cpt where ...@@ -45,9 +45,6 @@ docFocusCpt = here.component "main" cpt where
-- | -- |
state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData) state' /\ state <- R2.useBox' (Nothing :: Maybe LoadedData)
reload <- T.useBox T2.newReload
reload' <- T.useLive T.unequal reload
-- | Computed -- | Computed
-- | -- |
let let
...@@ -93,7 +90,6 @@ docFocusCpt = here.component "main" cpt where ...@@ -93,7 +90,6 @@ docFocusCpt = here.component "main" cpt where
layout layout
{ loaded { loaded
, path , path
, reload
, session , session
, sideControlsSlot: Just $ , sideControlsSlot: Just $
H.div H.div
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment