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,21 +60,23 @@ graphCpt = R.hooksComponent "Graph" cpt
Right (container /\ sigma) -> do
Sigma.setSettings sigma props.sigmaSettings
good <- addRenderer container sigma
if good
if good then
setLast last props
else
pure unit
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
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
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
......@@ -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
pure sigmaRef
updateSettings :: forall settings. Sigma -> R.Ref settings -> settings -> Effect Bool
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