Commit f5c319e9 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[Graph] some sigma fixes to current code

But still doesn't compile...
parent bac07dd6
...@@ -38,8 +38,8 @@ type Props sigma fa2 = ...@@ -38,8 +38,8 @@ type Props sigma fa2 =
) )
type Last sigma fa2 = type Last sigma fa2 =
( graph :: R.Ref (Maybe Graph)) ( graph :: R.Ref (Maybe Graph)
, fa2 :: R.Ref (Maybe fa2)) , fa2 :: R.Ref (Maybe fa2)
, sigma :: R.Ref (Maybe sigma) , sigma :: R.Ref (Maybe sigma)
) )
...@@ -60,22 +60,24 @@ graphCpt = R.hooksComponent "Graph" cpt ...@@ -60,22 +60,24 @@ graphCpt = R.hooksComponent "Graph" cpt
Right (container /\ sigma) -> do Right (container /\ sigma) -> do
Sigma.setSettings sigma props.sigmaSettings Sigma.setSettings sigma props.sigmaSettings
good <- addRenderer container sigma good <- addRenderer container sigma
if good if good then
setLast last props setLast last props
else
pure unit
R.setRef sigmaRef sigma R.setRef sigmaRef sigma
R.useEffect3 props.graph props.forceAtlas2Settings props.sigmaSettings R.useEffect3 props.graph props.forceAtlas2Settings props.sigmaSettings $
startSigma ref props.sigmaRef props.sigmaSettings props.forceAtlas2Settings props.graph
startSigma ref props.sigmaRef props.sigmaSettings props.forceAtlas2Settings props.graph
pure $ RH.div { ref: containerRef, style: {height: "95%"} } [] pure $ RH.div { ref: containerRef, style: {height: "95%"} } []
graphEffect {graph, forceAtlas2Settings, sigmaSettings} = graphEffect {graph, forceAtlas2Settings, sigmaSettings} = R.useEffect3 graph forceAtlas2Settings sigmaSettings $
R.useEffect3 graph forceAtlas2Settings sigmaSettings do pure unit
setLast :: forall s fa2. R.Ref (Record (Last s fa2)) -> R.Record (Props s fa2) -> Effect Unit setLast :: forall s fa2. R.Ref (Record (Last s fa2)) -> R.Record (Props s fa2) -> Effect Unit
setLast ref {graph, forceAtlas2Settings, sigmaSettings} = R.setRef ref new where setLast ref {graph, forceAtlas2Settings, sigmaSettings} = R.setRef ref new
new = {graph, fa2: forceAtlas2Settings, sigma: sigmaSettings} where
new = {graph, fa2: forceAtlas2Settings, sigma: sigmaSettings}
assertContainer :: R.Ref (Nullable DOM.Element) -> Either (Effect Unit) DOM.Element assertContainer :: R.Ref (Nullable DOM.Element) -> Either (Effect Unit) DOM.Element
assertContainer ref = note err $ R.readNullableRef containerRef where assertContainer ref = note err $ R.readNullableRef containerRef where
...@@ -92,8 +94,8 @@ addRenderer container sigma = do ...@@ -92,8 +94,8 @@ addRenderer container sigma = do
Right r -> pure True Right r -> pure True
Left e -> log2 "[G.C.Graph.graph] Error creating renderer: " e *> pure False Left e -> log2 "[G.C.Graph.graph] Error creating renderer: " e *> pure False
either err Right $ Sigma.sigma where --either err Right $ Sigma.sigma where
err = log2 "[G.C.Graph.graph] Error initialising sigma: " -- err = log2 "[G.C.Graph.graph] Error initialising sigma: "
useSigma containerRef props = do useSigma containerRef props = do
sigmaRef <- R2.nothingRef sigmaRef <- R2.nothingRef
...@@ -107,8 +109,8 @@ useSigma containerRef props = do ...@@ -107,8 +109,8 @@ useSigma containerRef props = do
log2 "[G.H.Sigmax.useSigma] Sigma initialised: " sigma log2 "[G.H.Sigmax.useSigma] Sigma initialised: " sigma
R.setRef sigmaRef sigma R.setRef sigmaRef sigma
pure $ Sigma.killSigma sigma pure $ Sigma.killSigma sigma
h sigma = do --h sigma = do
log2 "[G.C.Graph.graph] Found sigma!" sigma -- log2 "[G.C.Graph.graph] Found sigma!" sigma
pure sigmaRef pure sigmaRef
where where
named msg = "[G.C.Graph.useSigma] " <> msg named msg = "[G.C.Graph.useSigma] " <> msg
...@@ -117,7 +119,7 @@ useSigma containerRef props = do ...@@ -117,7 +119,7 @@ useSigma containerRef props = do
assertAddRenderer sigma container = --assertAddRenderer sigma container =
type SigmaSettings = type SigmaSettings =
( animationsTime :: Number ( animationsTime :: Number
......
...@@ -49,7 +49,8 @@ cleanupFirst sigma = ...@@ -49,7 +49,8 @@ cleanupFirst sigma =
startSigma :: forall settings faSettings n e. R.Ref (Nullable Element) -> R.Ref (Maybe Sigma) -> settings -> faSettings -> Graph n e -> R.Hooks Unit startSigma :: forall settings faSettings n e. R.Ref (Nullable Element) -> R.Ref (Maybe Sigma) -> settings -> faSettings -> Graph n e -> R.Hooks Unit
startSigma ref sigmaRef settings forceAtlas2Settings graph = do startSigma ref sigmaRef settings forceAtlas2Settings graph = do
{sigma, isNew} <- useSigma ref settings sigmaRef --{sigma, isNew} <- useSigma ref settings sigmaRef
sigmaRef <- useSigma
useCanvasRenderer ref sigma useCanvasRenderer ref sigma
if isNew then do if isNew then do
...@@ -72,22 +73,33 @@ startSigma ref sigmaRef settings forceAtlas2Settings graph = do ...@@ -72,22 +73,33 @@ startSigma ref sigmaRef settings forceAtlas2Settings graph = do
useSigma :: R.Hooks (R.Ref (Maybe Sigma)) useSigma :: R.Hooks (R.Ref (Maybe Sigma))
useSigma = do useSigma = do
sigmaRef <- R2.nothingRef sRef <- R2.nothingRef
R.useEffectOnce $ delay unit $ \_ -> cleanupRef <- R.useRef Seq.empty
case Sigma.sigma unit of sigmaRef <- R.useRef $ Just { sigma: sRef, cleanup: cleanupRef }
Left e ->
log2 "[G.H.Sigmax.useSigma] Error initialising sigma: " e R.useEffectOnce $ delay unit $ \_ -> do
let s = Sigma.sigma unit
case s of
Left e -> do
pure $ log2 "[G.H.Sigmax.useSigma] Error initialising sigma: " e
Right sigma -> do Right sigma -> do
log2 "[G.H.Sigmax.useSigma] Sigma initialised: " sigma _ <- pure $ log2 "[G.H.Sigmax.useSigma] Sigma initialised: " sigma
R.setRef sigmaRef (Sigma.sigma unit) _ <- pure $ R.setRef sRef $ Just sigma
pure $ pure unit
updateSettings :: forall settings. Sigma -> R.Ref settings -> settings -> Effect Bool pure sigmaRef
updateSettings :: forall settings. Eq settings => Sigma -> R.Ref settings -> settings -> Effect Boolean
updateSettings sigma ref settings = updateSettings sigma ref settings =
| (R.readRef ref) == settings = pure false if (R.readRef ref) == settings then
| otherwise pure false
= Sigma.setSettings sigma settings else
*> pure $ R.setRef ref settings case R.readRef sigma.sigma of
*> pure true Nothing -> pure false
Just s -> do
_ <- Sigma.setSettings s settings
_ <- pure $ R.setRef ref settings
pure true
-- | Manages a renderer for the sigma -- | Manages a renderer for the sigma
useCanvasRenderer :: R.Ref (Nullable Element) -> Sigma -> R.Hooks Unit useCanvasRenderer :: R.Ref (Nullable Element) -> Sigma -> R.Hooks Unit
...@@ -112,14 +124,18 @@ useCanvasRenderer container sigma = ...@@ -112,14 +124,18 @@ useCanvasRenderer container sigma =
errorKillingMsg = "[useCanvasRenderer] Error killing renderer:" errorKillingMsg = "[useCanvasRenderer] Error killing renderer:"
killedMsg = "[useCanvasRenderer] Killed renderer" killedMsg = "[useCanvasRenderer] Killed renderer"
createSigma :: forall settings err. settings -> Effect (Either err Sigma.Sigma) --createSigma :: forall settings err. settings -> Effect (Either err Sigma.Sigma)
createSigma settings = do --createSigma settings = do
log2 "[useSigma] Initializing sigma with settings" settings -- log2 "[useSigma] Initializing sigma with settings" settings
ret <- Sigma.sigma {settings} -- ret <- Sigma.sigma unit
ret <$ logStatus ret -- case ret of
where -- Left err -> pure unit
logStatus (Left err) = log2 "[useSigma] Error during sigma creation:" err -- Right s -> Sigma.setSettings s settings
logStatus (Right x) = log2 "[useSigma] Initialised sigma successfully:" x -- _ <- pure $ logStatus ret
-- pure ret
-- where
-- logStatus (Left err) = log2 "[useSigma] Error during sigma creation:" err
-- logStatus (Right x) = log2 "[useSigma] Initialised sigma successfully:" x
cleanupSigma :: Sigma -> String -> Effect Unit cleanupSigma :: Sigma -> String -> Effect Unit
cleanupSigma sigma context = traverse_ kill (readSigma sigma) cleanupSigma sigma context = traverse_ kill (readSigma 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