Commit 9c4af297 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[Graph] trying to get graph not refresh, without success still

parent d31416bc
...@@ -6,9 +6,10 @@ module Gargantext.Components.Graph ...@@ -6,9 +6,10 @@ module Gargantext.Components.Graph
where where
import Prelude (bind, discard, pure, ($), unit) import Prelude (bind, discard, pure, ($), unit)
import Data.Maybe (Maybe) import Data.Maybe (Maybe)
import Data.Nullable (null) import Data.Nullable (null, Nullable)
import Data.Sequence as Seq import Data.Sequence as Seq
import DOM.Simple.Console (log, log2) import DOM.Simple.Console (log, log2)
import DOM.Simple.Types (Element)
import FFI.Simple (delay) import FFI.Simple (delay)
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as RH import Reactix.DOM.HTML as RH
...@@ -32,8 +33,9 @@ type Edge = ( id :: String, source :: String, target :: String ) ...@@ -32,8 +33,9 @@ type Edge = ( id :: String, source :: String, target :: String )
type Graph = Sigmax.Graph Node Edge type Graph = Sigmax.Graph Node Edge
type Props sigma forceatlas2 = type Props sigma forceatlas2 =
( graph :: Graph ( elRef :: R.Ref (Nullable Element)
, forceAtlas2Settings :: forceatlas2 , forceAtlas2Settings :: forceatlas2
, graph :: Graph
, sigmaSettings :: sigma , sigmaSettings :: sigma
, sigmaRef :: R.Ref Sigma , sigmaRef :: R.Ref Sigma
) )
...@@ -45,18 +47,15 @@ graphCpt :: forall s fa2. R.Component (Props s fa2) ...@@ -45,18 +47,15 @@ graphCpt :: forall s fa2. R.Component (Props s fa2)
graphCpt = R.hooksComponent "Graph" cpt graphCpt = R.hooksComponent "Graph" cpt
where where
cpt props _ = do cpt props _ = do
ref <- R.useRef null
--startSigma ref props.sigmaRef props.sigmaSettings props.forceAtlas2Settings props.graph
R.useEffectOnce $ do R.useEffectOnce $ do
log "[graphCpt] calling startSigmaEff" log "[graphCpt] calling startSigmaEff"
startSigmaEff ref props.sigmaRef props.sigmaSettings props.forceAtlas2Settings props.graph startSigmaEff props.elRef props.sigmaRef props.sigmaSettings props.forceAtlas2Settings props.graph
delay unit $ \_ -> do delay unit $ \_ -> do
log "[GraphCpt] cleaning up" log "[GraphCpt] cleaning up"
pure $ pure unit pure $ pure unit
pure $ RH.div { ref, style: {height: "95%"} } [] pure $ RH.div { ref: props.elRef, style: {height: "95%"} } []
type SigmaSettings = type SigmaSettings =
( animationsTime :: Number ( animationsTime :: Number
......
...@@ -6,9 +6,11 @@ import Data.FoldableWithIndex (foldMapWithIndex) ...@@ -6,9 +6,11 @@ import Data.FoldableWithIndex (foldMapWithIndex)
import Data.Foldable (foldMap) import Data.Foldable (foldMap)
import Data.Int (toNumber) import Data.Int (toNumber)
import Data.Maybe (Maybe(..)) import Data.Maybe (Maybe(..))
import Data.Nullable (null, Nullable)
import Data.Sequence as Seq import Data.Sequence as Seq
import Data.Tuple (fst,snd) import Data.Tuple (fst,snd)
import Data.Tuple.Nested ((/\)) import Data.Tuple.Nested ((/\))
import DOM.Simple.Types (Element)
import Effect.Aff (Aff) import Effect.Aff (Aff)
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as RH import Reactix.DOM.HTML as RH
...@@ -38,7 +40,10 @@ type LayoutProps = ...@@ -38,7 +40,10 @@ type LayoutProps =
, frontends :: Frontends , frontends :: Frontends
) )
type Props = ( graph :: Maybe Graph.Graph | LayoutProps ) type Props = (
graphElRef :: R.Ref (Nullable Element)
, graph :: Maybe Graph.Graph | LayoutProps
)
-------------------------------------------------------------- --------------------------------------------------------------
explorerLayout :: Record LayoutProps -> R.Element explorerLayout :: Record LayoutProps -> R.Element
...@@ -47,10 +52,12 @@ explorerLayout props = R.createElement explorerLayoutCpt props [] ...@@ -47,10 +52,12 @@ explorerLayout props = R.createElement explorerLayoutCpt props []
explorerLayoutCpt :: R.Component LayoutProps explorerLayoutCpt :: R.Component LayoutProps
explorerLayoutCpt = R.hooksComponent "G.C.GraphExplorer.explorerLayout" cpt explorerLayoutCpt = R.hooksComponent "G.C.GraphExplorer.explorerLayout" cpt
where where
cpt {graphId, mCurrentRoute, treeId, session, sessions, frontends} _ = cpt {graphId, mCurrentRoute, treeId, session, sessions, frontends} _ = do
useLoader graphId (getNodes session) handler graphElRef <- R.useRef null
useLoader graphId (getNodes session) (handler graphElRef)
where where
handler loaded = explorer {graphId, mCurrentRoute, treeId, session, sessions, graph, frontends} handler graphElRef loaded =
explorer {graphElRef, graphId, mCurrentRoute, treeId, session, sessions, graph, frontends}
where graph = Just (convert loaded) where graph = Just (convert loaded)
-------------------------------------------------------------- --------------------------------------------------------------
...@@ -60,7 +67,7 @@ explorer props = R.createElement explorerCpt props [] ...@@ -60,7 +67,7 @@ explorer props = R.createElement explorerCpt props []
explorerCpt :: R.Component Props explorerCpt :: R.Component Props
explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt
where where
cpt {sessions, session, graphId, mCurrentRoute, treeId, graph, frontends} _ = do cpt {graphElRef, sessions, session, graphId, mCurrentRoute, treeId, graph, frontends} _ = do
controls <- Controls.useGraphControls controls <- Controls.useGraphControls
state <- useExplorerState state <- useExplorerState
x /\ setX <- R.useState' 0 x /\ setX <- R.useState' 0
...@@ -80,7 +87,7 @@ explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt ...@@ -80,7 +87,7 @@ explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt
, RH.div {on: {click: \e -> setX $ \x_ -> x_ + 1}} [ RH.text ("Counter: " <> (show x)) ] , RH.div {on: {click: \e -> setX $ \x_ -> x_ + 1}} [ RH.text ("Counter: " <> (show x)) ]
] ]
, row [ tree {mCurrentRoute, treeId} controls showLogin , row [ tree {mCurrentRoute, treeId} controls showLogin
, mGraph controls.sigmaRef {graphId, graph} , mGraph graphElRef controls.sigmaRef {graphId, graph}
, Sidebar.sidebar {showSidePanel: fst controls.showSidePanel} ] , Sidebar.sidebar {showSidePanel: fst controls.showSidePanel} ]
, row [ , row [
] ]
...@@ -103,9 +110,9 @@ explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt ...@@ -103,9 +110,9 @@ explorerCpt = R.hooksComponent "G.C.GraphExplorer.explorer" cpt
pullLeft = RH.div { className: "pull-left" } pullLeft = RH.div { className: "pull-left" }
pullRight = RH.div { className: "pull-right" } pullRight = RH.div { className: "pull-right" }
mGraph :: R.Ref Sigma -> {graphId :: GraphId, graph :: Maybe Graph.Graph} -> R.Element mGraph :: R.Ref (Nullable Element) -> R.Ref Sigma -> {graphId :: GraphId, graph :: Maybe Graph.Graph} -> R.Element
mGraph _ {graph: Nothing} = RH.div {} [] mGraph _ _ {graph: Nothing} = RH.div {} []
mGraph sigmaRef {graphId, graph: Just graph} = graphView sigmaRef {graphId, graph} mGraph graphElRef sigmaRef {graphId, graph: Just graph} = graphView graphElRef sigmaRef {graphId, graph}
useExplorerState :: R.Hooks (Record GET.State) useExplorerState :: R.Hooks (Record GET.State)
useExplorerState = do pure {} useExplorerState = do pure {}
...@@ -130,9 +137,9 @@ type GraphProps = ( ...@@ -130,9 +137,9 @@ type GraphProps = (
, graph :: Graph.Graph , graph :: Graph.Graph
) )
graphView :: R.Ref Sigma -> Record GraphProps -> R.Element graphView :: R.Ref (Nullable Element) -> R.Ref Sigma -> Record GraphProps -> R.Element
--graphView sigmaRef props = R.createElement (R.memo el memoCmp) props [] --graphView sigmaRef props = R.createElement (R.memo el memoCmp) props []
graphView sigmaRef props = R.createElement el props [] graphView elRef sigmaRef props = R.createElement el props []
where where
--memoCmp props1 props2 = props1.graphId == props2.graphId --memoCmp props1 props2 = props1.graphId == props2.graphId
el = R.hooksComponent "GraphView" cpt el = R.hooksComponent "GraphView" cpt
...@@ -141,7 +148,8 @@ graphView sigmaRef props = R.createElement el props [] ...@@ -141,7 +148,8 @@ graphView sigmaRef props = R.createElement el props []
RH.div { id: "graph-view", className: "col-md-12" } RH.div { id: "graph-view", className: "col-md-12" }
[ [
Graph.graph { Graph.graph {
forceAtlas2Settings: Graph.forceAtlas2Settings elRef
, forceAtlas2Settings: Graph.forceAtlas2Settings
, graph , graph
, sigmaSettings: Graph.sigmaSettings , sigmaSettings: Graph.sigmaSettings
, sigmaRef: sigmaRef , sigmaRef: sigmaRef
......
...@@ -83,16 +83,16 @@ controlsCpt = R.hooksComponent "GraphControls" cpt ...@@ -83,16 +83,16 @@ controlsCpt = R.hooksComponent "GraphControls" cpt
--R.useEffect $ handleForceAtlasPause props.sigmaRef localControls.pauseForceAtlas mFAPauseRef --R.useEffect $ handleForceAtlasPause props.sigmaRef localControls.pauseForceAtlas mFAPauseRef
R.useEffect $ handleForceAtlasPause props.sigmaRef localControls.pauseForceAtlas R.useEffect $ handleForceAtlasPause props.sigmaRef localControls.pauseForceAtlas
R.useEffectOnce' $ do --R.useEffectOnce' $ do
timeoutId <- setTimeout 2000 $ do -- timeoutId <- setTimeout 2000 $ do
--R.setRef mFAPauseRef Nothing -- --R.setRef mFAPauseRef Nothing
let (toggled /\ setToggled) = localControls.pauseForceAtlas -- let (toggled /\ setToggled) = localControls.pauseForceAtlas
if toggled then -- if toggled then
setToggled $ const false -- setToggled $ const false
else -- else
pure unit -- pure unit
--R.setRef mFAPauseRef $ Just timeoutId -- --R.setRef mFAPauseRef $ Just timeoutId
pure unit -- pure unit
pure $ case getShowControls props of pure $ case getShowControls props of
false -> RH.div {} [] false -> RH.div {} []
...@@ -121,23 +121,20 @@ controlsCpt = R.hooksComponent "GraphControls" cpt ...@@ -121,23 +121,20 @@ controlsCpt = R.hooksComponent "GraphControls" cpt
where where
--handleForceAtlasPause sigmaRef (toggled /\ setToggled) mFAPauseRef = do --handleForceAtlasPause sigmaRef (toggled /\ setToggled) mFAPauseRef = do
handleForceAtlasPause sigmaRef (toggled /\ setToggled) = do handleForceAtlasPause sigmaRef (toggled /\ setToggled) = do
let mSigma = Sigmax.readSigma $ R.readRef sigmaRef let sigma = R.readRef sigmaRef
pure $ case mSigma of pure $ Sigmax.dependOnSigma sigma "[handleForceAtlasPause] sigma: Nothing" $ \s -> do
Just s -> do log2 "[handleForceAtlasPause] mSigma: Just " s
log2 "[handleForceAtlasPause] mSigma: Just " s log2 "[handleForceAtlasPause] toggled: " toggled
if toggled then if toggled then
Sigma.stopForceAtlas2 s Sigma.stopForceAtlas2 s
else else
Sigma.restartForceAtlas2 s Sigma.restartForceAtlas2 s
-- handle case when user pressed pause/start fa button before timeout fired -- handle case when user pressed pause/start fa button before timeout fired
--case R.readRef mFAPauseRef of --case R.readRef mFAPauseRef of
-- Nothing -> pure unit -- Nothing -> pure unit
-- Just timeoutId -> do -- Just timeoutId -> do
-- R.setRef mFAPauseRef Nothing -- R.setRef mFAPauseRef Nothing
-- clearTimeout timeoutId -- clearTimeout timeoutId
_ -> do
log "[handleForceAtlasPause] mSigma: Nothing"
pure unit
useGraphControls :: R.Hooks (Record Controls) useGraphControls :: R.Hooks (Record Controls)
useGraphControls = do useGraphControls = do
......
...@@ -229,23 +229,25 @@ startSigmaEff ref sigmaRef settings forceAtlas2Settings graph = do ...@@ -229,23 +229,25 @@ startSigmaEff ref sigmaRef settings forceAtlas2Settings graph = do
useForceAtlas2Eff sigma forceAtlas2Settings useForceAtlas2Eff sigma forceAtlas2Settings
Just sig -> do Just sig -> do
log "[startSigmaEff] sigma initialized already" log "[startSigmaEff] sigma initialized already"
isFARunning <- Sigma.isForceAtlas2Running sig
log2 "[startSigmaEff] isFARunning" isFARunning
useCanvasRendererEff ref rSigma useCanvasRendererEff ref rSigma
--useDataEff rSigma graph --useDataEff rSigma graph
--useForceAtlas2Eff rSigma forceAtlas2Settings --useForceAtlas2Eff rSigma forceAtlas2Settings
log "[startSigmaEff] refreshForceAtlas"
Sigma.refreshForceAtlas sig Sigma.refreshForceAtlas sig
--if isFARunning then
-- Sigma.restartForceAtlas2 sig
--else
-- Sigma.stopForceAtlas2 sig
pure unit pure unit
--handleRefresh sigma --handleRefresh sigma
where where
handleRefresh :: Sigma -> Effect Unit handleRefresh :: Sigma -> Effect Unit
handleRefresh sigma = do handleRefresh sigma = dependOnSigma sigma "[handleRefresh] can't refresh" $ \s -> do
let rSigma = readSigma sigma Sigma.refreshForceAtlas s
_ <- case rSigma of
Nothing -> log2 "[handleRefresh] can't refresh" sigma
Just s -> do
Sigma.refreshForceAtlas s
pure unit
useSigmaEff :: forall settings. settings -> R.Ref Sigma -> Effect Sigma useSigmaEff :: forall settings. settings -> R.Ref Sigma -> Effect Sigma
......
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