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