Commit e6c7df25 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[GraphExplorer] fixes after dysfun's quick commit

parent 2e3c679a
...@@ -47,7 +47,7 @@ import Web.Storage.Storage (getItem) ...@@ -47,7 +47,7 @@ import Web.Storage.Storage (getItem)
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as RH import Reactix.DOM.HTML as RH
type Props = () type Props s fa2 = ()
explorer :: forall s fa2. Record (Props s fa2) -> R.Element explorer :: forall s fa2. Record (Props s fa2) -> R.Element
explorer props = R.createElement explorerCpt props [] explorer props = R.createElement explorerCpt props []
...@@ -61,9 +61,9 @@ explorerCpt = R.hooksComponent "Explorer" cpt ...@@ -61,9 +61,9 @@ explorerCpt = R.hooksComponent "Explorer" cpt
outer outer
[ inner [ inner
[ row1 [ row1
[ col [ pullLeft [ Toggle.treeTogglebutton controls.showTree ] ] [ col [ pullLeft [ Toggle.treeToggleButton controls.showTree ] ]
, col [ Toggle.controlsToggleButton controls.showControls ] , col [ Toggle.controlsToggleButton controls.showControls ]
, col [ pullRight [ Toggle.sidePanelToggleButton controls.showSidePanel ] ] , col [ pullRight [ Toggle.sidebarToggleButton controls.showSidePanel ] ]
] ]
, row [ Controls.controls controls ] , row [ Controls.controls controls ]
, row [ graph controls, sidebar controls ] , row [ graph controls, sidebar controls ]
......
...@@ -10,22 +10,28 @@ module Gargantext.Components.GraphExplorer.Controls ...@@ -10,22 +10,28 @@ module Gargantext.Components.GraphExplorer.Controls
, getMultiNodeSelect, setMultiNodeSelect , getMultiNodeSelect, setMultiNodeSelect
) where ) where
import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Prelude
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as RH import Reactix.DOM.HTML as RH
import Gargantext.Components.GraphExplorer.ToggleButton (edgesToggleButton)
import Gargantext.Utils.Reactix as R2
type Controls = type Controls =
( showTree :: R.State Boolean ( cursorSize :: R.State Number
, showControls :: R.State Boolean
, showSidePanel :: R.State Boolean
, showEdges :: R.State Boolean
, cursorSize :: R.State Number
, labelSize :: R.State Number , labelSize :: R.State Number
, nodeSize :: R.State Number , nodeSize :: R.State Number
, multiNodeSelect :: R.Ref Boolean , multiNodeSelect :: R.Ref Boolean
, showControls :: R.State Boolean
, showEdges :: R.State Boolean
, showSidePanel :: R.State Boolean
, showTree :: R.State Boolean
) )
controls = Record Controls -> R.Element controls :: Record Controls -> R.Element
controls props = R.createElement controlsCpt props [] controls props = R.createElement controlsCpt props []
controlsCpt :: R.Component Controls controlsCpt :: R.Component Controls
...@@ -35,84 +41,84 @@ controlsCpt = R.hooksComponent "GraphControls" cpt ...@@ -35,84 +41,84 @@ controlsCpt = R.hooksComponent "GraphControls" cpt
case getShowControls props of case getShowControls props of
false -> pure $ RH.div {} [] false -> pure $ RH.div {} []
true -> do true -> do
RH.div { className: "col-md-12", style: { paddingBottom: "10px" } } pure $ RH.div { className: "col-md-12", style: { paddingBottom: "10px" } }
[ menu { id: "toolbar" } [ R2.menu { id: "toolbar" }
[ RH.ul {} [ RH.ul {}
[ -- change type button (?) [ -- change type button (?)
RH.li {} [ edgesToggleButton props.showEdges ] RH.li {} [ edgesToggleButton props.showEdges ]
-- change level -- change level
-- file upload -- file upload
-- run demo -- run demo
-- search button -- search button
-- search topics -- search topics
-- cursor size: 0-100 -- cursor size: 0-100
-- labels size: 1-4 -- labels size: 1-4
-- node size : 5-15 -- node size : 5-15
-- edge size : ?? -- edge size : ??
-- zoom: 0 -100 - calculate ratio -- zoom: 0 -100 - calculate ratio
-- toggle multi node selection -- toggle multi node selection
-- spatialization (pause ForceAtlas2) -- spatialization (pause ForceAtlas2)
-- save button -- save button
]
] ]
] ]
]
useGraphControls :: R.Hooks (Record Controls) useGraphControls :: R.Hooks (Record Controls)
useGraphControls = do useGraphControls = do
showTree <- R.useState' false cursorSize <- R.useState' 10.0
labelSize <- R.useState' 3.0
nodeSize <- R.useState' 10.0
multiNodeSelect <- R.useRef false
showControls <- R.useState' false showControls <- R.useState' false
showSidePanel <- R.useState' false
showEdges <- R.useState' true showEdges <- R.useState' true
cursorSize <- R.useState' 10 showSidePanel <- R.useState' false
labelSize <- R.useState' 3 showTree <- R.useState' false
nodeSize <- R.useState' 10
multiNodeSelect <- R.useRef false
pure { showTree, showControls, showSidePanel, showEdges, cursorSize, labelSize, nodeSize, multiNodeSelect } pure { showTree, showControls, showSidePanel, showEdges, cursorSize, labelSize, nodeSize, multiNodeSelect }
getShowTree :: Controls -> Boolean getShowTree :: Record Controls -> Boolean
getShowTree { showTree: ( should /\ _ ) } = should getShowTree { showTree: ( should /\ _ ) } = should
getShowControls :: Controls -> Boolean getShowControls :: Record Controls -> Boolean
getShowControls { showControls: ( should /\ _ ) } = should getShowControls { showControls: ( should /\ _ ) } = should
getShowSidePanel :: Controls -> Boolean getShowSidePanel :: Record Controls -> Boolean
getShowSidePanel { showSidePanel: ( should /\ _ ) } = should getShowSidePanel { showSidePanel: ( should /\ _ ) } = should
getShowEdges :: Controls -> Boolean getShowEdges :: Record Controls -> Boolean
getShowEdges { showEdges: ( should /\ _ ) } = should getShowEdges { showEdges: ( should /\ _ ) } = should
getCursorSize :: Controls -> Number getCursorSize :: Record Controls -> Number
getCursorSize { cursorSize: ( size /\ _ ) } = size getCursorSize { cursorSize: ( size /\ _ ) } = size
getLabelSize :: Controls -> Number getLabelSize :: Record Controls -> Number
getLabelSize { labelSize: ( size /\ _ ) } = size getLabelSize { labelSize: ( size /\ _ ) } = size
getNodeSize :: Controls -> Number getNodeSize :: Record Controls -> Number
getNodeSize { nodeSize: ( size /\ _ ) } = size getNodeSize { nodeSize: ( size /\ _ ) } = size
getMultiNodeSelect :: Controls -> Boolean getMultiNodeSelect :: Record Controls -> Boolean
getMultiNodeSelect { multiNodeSelect } = R.readRef multiNodeSelect getMultiNodeSelect { multiNodeSelect } = R.readRef multiNodeSelect
setShowTree :: Controls -> Boolean -> Effect Unit setShowTree :: Record Controls -> Boolean -> Effect Unit
setShowTree { showTree: ( _ /\ set ) } = set setShowTree { showTree: ( _ /\ set ) } v = set $ const v
setShowControls :: Controls -> Boolean -> Effect Unit setShowControls :: Record Controls -> Boolean -> Effect Unit
setShowControls { showControls: ( _ /\ set ) } = set setShowControls { showControls: ( _ /\ set ) } v = set $ const v
setShowSidePanel :: Controls -> Boolean -> Effect Unit setShowSidePanel :: Record Controls -> Boolean -> Effect Unit
setShowSidePanel { showSidePanel: ( _ /\ set ) } = set setShowSidePanel { showSidePanel: ( _ /\ set ) } v = set $ const v
setShowEdges :: Controls -> Boolean -> Effect Unit setShowEdges :: Record Controls -> Boolean -> Effect Unit
setShowEdges { showEdges: ( _ /\ set ) } = set setShowEdges { showEdges: ( _ /\ set ) } v = set $ const v
setCursorSize :: Controls -> Number -> Effect Unit setCursorSize :: Record Controls -> Number -> Effect Unit
setCursorSize { cursorSize: ( _ /\ setSize ) } = setSize setCursorSize { cursorSize: ( _ /\ setSize ) } v = setSize $ const v
setLabelSize :: Controls -> Number -> Effect Unit setLabelSize :: Record Controls -> Number -> Effect Unit
setLabelSize { labelSize: ( _ /\ setSize) } = setSize setLabelSize { labelSize: ( _ /\ setSize) } v = setSize $ const v
setNodeSize :: Controls -> Number -> Effect Unit setNodeSize :: Record Controls -> Number -> Effect Unit
setNodeSize { nodeSize: ( _ /\ setSize ) } = setSize setNodeSize { nodeSize: ( _ /\ setSize ) } v = setSize $ const v
setMultiNodeSelect :: Controls -> Boolean -> Effect Unit setMultiNodeSelect :: Record Controls -> Boolean -> Effect Unit
setMultiNodeSelect { multiNodeSelect } = R.setRef multiNodeSelect setMultiNodeSelect { multiNodeSelect } = R.setRef multiNodeSelect
...@@ -2,7 +2,8 @@ module Gargantext.Components.GraphExplorer.ControlsToggleButton ...@@ -2,7 +2,8 @@ module Gargantext.Components.GraphExplorer.ControlsToggleButton
( Props, controlsToggleButton, controlsToggleButtonCpt ( Props, controlsToggleButton, controlsToggleButtonCpt
) where ) where
import Prelude (bind, pure, ($)) import Data.Tuple.Nested ((/\))
import Prelude
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as H import Reactix.DOM.HTML as H
...@@ -10,15 +11,15 @@ type Props = ( state :: R.State Boolean ) ...@@ -10,15 +11,15 @@ type Props = ( state :: R.State Boolean )
controlsToggleButton :: Record Props -> R.Element controlsToggleButton :: Record Props -> R.Element
controlsToggleButton props = R.createElement controlsToggleButtonCpt props [] controlsToggleButton props = R.createElement controlsToggleButtonCpt props []
controlsToggleButtonCpt :: R.Component Props controlsToggleButtonCpt :: R.Component Props
controlsToggleButtonCpt = R.hooksComponent "GraphControlsToggleButton" cpt controlsToggleButtonCpt = R.hooksComponent "GraphControlsToggleButton" cpt
where where
cpt {state} _ = do cpt {state} _ = do
let (open /\ setOpen) = state let (open /\ setOpen) = state
pure $ pure $
RH.button H.button
{ className: "btn btn-primary", on: {click: \_ -> setOpen not } } { className: "btn btn-primary", on: {click: \_ -> setOpen not } }
[ RH.text (text open) ] [ H.text (text open) ]
text true = "Hide Controls" text true = "Hide Controls"
text false = "Show Controls" text false = "Show Controls"
...@@ -2,9 +2,11 @@ module Gargantext.Components.GraphExplorer.Legend ...@@ -2,9 +2,11 @@ module Gargantext.Components.GraphExplorer.Legend
( Props, legend, legendCpt ( Props, legend, legendCpt
) where ) where
import Data.Seq (Seq) import Prelude hiding (map)
import Data.Seq as Seq
import Data.Traversable (foldMap) import Data.Sequence (Seq)
import Data.Sequence as Seq
import Data.Traversable (foldMap, traverseDefault)
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as RH import Reactix.DOM.HTML as RH
import Gargantext.Components.GraphExplorer.Types (Cluster(..), MetaData(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData, intColor) import Gargantext.Components.GraphExplorer.Types (Cluster(..), MetaData(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData, intColor)
...@@ -17,11 +19,11 @@ legend props = R.createElement legendCpt props [] ...@@ -17,11 +19,11 @@ legend props = R.createElement legendCpt props []
legendCpt :: R.Component Props legendCpt :: R.Component Props
legendCpt = R.hooksComponent "Legend" cpt legendCpt = R.hooksComponent "Legend" cpt
where where
cpt {items} _ = pure $ RH.div {} (foldMap entry items) cpt {items} _ = pure $ RH.div {} [foldMap entry items]
entry :: Legend -> R.Element entry :: Legend -> R.Element
entry (Legend {id_, label}) = entry (Legend {id_, label}) =
RH.p {} RH.p {}
[ RH.span { style: { width: 10, height: 10, backgroundColor: intColor id_, display: "inline-block" } } [] [ RH.span { style: { width: 10, height: 10, backgroundColor: intColor id_, display: "inline-block" } } []
, RH.text # " " <> label , RH.text $ " " <> label
]
...@@ -6,24 +6,25 @@ module Gargantext.Components.GraphExplorer.ToggleButton ...@@ -6,24 +6,25 @@ module Gargantext.Components.GraphExplorer.ToggleButton
, edgesToggleButton , edgesToggleButton
) where ) where
import Prelude (bind, pure, ($)) import Prelude
import Data.Tuple.Nested ((/\))
import Reactix as R import Reactix as R
import Reactix.HTML as H import Reactix.DOM.HTML as H
type Props = ( state :: R.State Boolean, onMessage :: String, offMessage :: String ) type Props = ( state :: R.State Boolean, onMessage :: String, offMessage :: String )
toggleButton :: Record Props -> R.Element toggleButton :: Record Props -> R.Element
toggleButton props = R.createElement toggleButtonCpt props [] toggleButton props = R.createElement toggleButtonCpt props []
toggleButtonCpt :: R.Component Props toggleButtonCpt :: R.Component Props
toggleButtonCpt = R.hooksComponent "ToggleButton" cpt toggleButtonCpt = R.hooksComponent "ToggleButton" cpt
where where
cpt {state, onMessage, offMessage} _ = do cpt {state, onMessage, offMessage} _ = do
let (toggled /\ setToggled) = state let (toggled /\ setToggled) = state
pure $ pure $
RH.button H.button
{ className: "btn btn-primary", on: {click: \_ -> setToggled not } } { className: "btn btn-primary", on: {click: \_ -> setToggled not } }
[ RH.text (text onMessage offMessage toggled) ] [ H.text (text onMessage offMessage toggled) ]
text on _off true = on text on _off true = on
text _on off false = off text _on off false = off
......
module Gargantext.Components.GraphExplorer.Types where module Gargantext.Components.GraphExplorer.Types where
import Prelude import Prelude
import Partial.Unsafe (unsafePartial)
import Data.Argonaut (class DecodeJson, decodeJson, (.?)) import Data.Argonaut (class DecodeJson, decodeJson, (.?))
import Data.Array (concat, fromFoldable, group, sort, take) import Data.Array (concat, fromFoldable, group, sort, take, (!!), length)
import Data.Maybe (Maybe(..), maybe, fromJust)
import Data.Newtype (class Newtype) import Data.Newtype (class Newtype)
import Data.Maybe (Maybe(..), maybe)
newtype Node = Node newtype Node = Node
{ id_ :: String { id_ :: String
, size :: Int , size :: Int
...@@ -145,5 +147,3 @@ defaultPalette = ["#5fa571","#ab9ba2","#da876d","#bdd3ff","#b399df","#ffdfed","# ...@@ -145,5 +147,3 @@ defaultPalette = ["#5fa571","#ab9ba2","#da876d","#bdd3ff","#b399df","#ffdfed","#
intColor :: Int -> String intColor :: Int -> String
intColor i = unsafePartial $ fromJust $ defaultPalette !! (i `mod` length defaultPalette) intColor i = unsafePartial $ fromJust $ defaultPalette !! (i `mod` length defaultPalette)
...@@ -24,6 +24,7 @@ import Effect.Aff (Aff) ...@@ -24,6 +24,7 @@ import Effect.Aff (Aff)
import Effect.Class (liftEffect) import Effect.Class (liftEffect)
import Gargantext.Hooks.Sigmax.Types as Sigmax import Gargantext.Hooks.Sigmax.Types as Sigmax
import Gargantext.Hooks.Sigmax.Sigmajs (CameraProps, SigmaNode, cameras, getCameraProps, goTo, pauseForceAtlas2, sigmaOnMouseMove) import Gargantext.Hooks.Sigmax.Sigmajs (CameraProps, SigmaNode, cameras, getCameraProps, goTo, pauseForceAtlas2, sigmaOnMouseMove)
import Gargantext.Components.GraphExplorer (getAuthData, getNodes, intColor)
import Gargantext.Components.GraphExplorer.Types (Cluster(..), MetaData(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData) import Gargantext.Components.GraphExplorer.Types (Cluster(..), MetaData(..), Edge(..), GraphData(..), Legend(..), Node(..), getLegendData)
import Gargantext.Components.Login.Types (AuthData(..), TreeId) import Gargantext.Components.Login.Types (AuthData(..), TreeId)
import Gargantext.Components.RandomText (words) import Gargantext.Components.RandomText (words)
...@@ -31,6 +32,7 @@ import Gargantext.Components.Graph as Graph ...@@ -31,6 +32,7 @@ import Gargantext.Components.Graph as Graph
import Gargantext.Components.Tree as Tree import Gargantext.Components.Tree as Tree
import Gargantext.Config as Config import Gargantext.Config as Config
import Gargantext.Config.REST (get) import Gargantext.Config.REST (get)
import Gargantext.Pages.Layout.Actions (Action(..))
import Gargantext.Pages.Corpus.Graph.Tabs as GT import Gargantext.Pages.Corpus.Graph.Tabs as GT
import Gargantext.Types (class Optional) import Gargantext.Types (class Optional)
import Gargantext.Utils (toggleSet) import Gargantext.Utils (toggleSet)
...@@ -234,8 +236,8 @@ render d p (State {sigmaGraphData, settings, legendData}) c = ...@@ -234,8 +236,8 @@ render d p (State {sigmaGraphData, settings, legendData}) c =
-- for_ (cameras s !! 0) $ \cam -> -- for_ (cameras s !! 0) $ \cam ->
-- void $ goTo cam (f $ getCameraProps cam) -- void $ goTo cam (f $ getCameraProps cam)
, text $ " " <> label -- , text $ " " <> label
] -- ]
specOld :: Spec State {} Action specOld :: Spec State {} Action
...@@ -327,7 +329,7 @@ specOld = fold [treespec treeSpec, graphspec $ simpleSpec performAction render'] ...@@ -327,7 +329,7 @@ specOld = fold [treespec treeSpec, graphspec $ simpleSpec performAction render']
] ]
] ]
-} -}
, li [className "col-md-1"] li [className "col-md-1"]
[ span [] [text "Selector"] [ span [] [text "Selector"]
, input [ _type "range" , input [ _type "range"
, _id "cursorSizeRange" , _id "cursorSizeRange"
......
...@@ -44,6 +44,9 @@ overState f (_state /\ setState) = setState f ...@@ -44,6 +44,9 @@ overState f (_state /\ setState) = setState f
select :: ElemFactory select :: ElemFactory
select = createDOMElement "select" select = createDOMElement "select"
menu :: ElemFactory
menu = createDOMElement "menu"
effToggler :: forall e. R.State Boolean -> EffectFn1 e Unit effToggler :: forall e. R.State Boolean -> EffectFn1 e Unit
effToggler (_value /\ setValue) = mkEffectFn1 $ \e -> setValue not effToggler (_value /\ setValue) = mkEffectFn1 $ \e -> setValue not
......
...@@ -3351,10 +3351,6 @@ react-is@^16.8.1, react-is@^16.8.4: ...@@ -3351,10 +3351,6 @@ react-is@^16.8.1, react-is@^16.8.4:
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA== integrity sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==
"react-sigma@git://github.com/np/react-sigma.git#shouldComponentUpdate":
version "1.2.29"
resolved "git://github.com/np/react-sigma.git#0023eb24248c7bc61aec872bc26552e3d569b974"
react-testing-library@^6.1.2: react-testing-library@^6.1.2:
version "6.1.2" version "6.1.2"
resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-6.1.2.tgz#f6bba6eeecedac736eb00b22b4c70bae04535a4f" resolved "https://registry.yarnpkg.com/react-testing-library/-/react-testing-library-6.1.2.tgz#f6bba6eeecedac736eb00b22b4c70bae04535a4f"
...@@ -3701,8 +3697,9 @@ shelljs@^0.8.2, shelljs@^0.8.3: ...@@ -3701,8 +3697,9 @@ shelljs@^0.8.2, shelljs@^0.8.3:
interpret "^1.0.0" interpret "^1.0.0"
rechoir "^0.6.2" rechoir "^0.6.2"
sigma@../sigma.js: "sigma@git://github.com/jjl/sigma.js#garg":
version "1.2.1" version "1.2.1"
resolved "git://github.com/jjl/sigma.js#64a0e1ccd48550387ad4a56292dcbaef3258c929"
signal-exit@^3.0.0, signal-exit@^3.0.2: signal-exit@^3.0.0, signal-exit@^3.0.2:
version "3.0.2" version "3.0.2"
......
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