Commit eacd8241 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[sidebar] tag cloud for neighbour badges

Rescale the font-size according to the log of node.size (node.score).
parent 0b5b7644
...@@ -33,6 +33,7 @@ import Gargantext.Sessions (Session) ...@@ -33,6 +33,7 @@ import Gargantext.Sessions (Session)
import Gargantext.Types (CTabNgramType, FrontendError(..), NodeID, TabSubType(..), TabType(..), TermList(..), modeTabType) import Gargantext.Types (CTabNgramType, FrontendError(..), NodeID, TabSubType(..), TabType(..), TermList(..), modeTabType)
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Toestand as T2 import Gargantext.Utils.Toestand as T2
import Math as Math
import Partial.Unsafe (unsafePartial) import Partial.Unsafe (unsafePartial)
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as H import Reactix.DOM.HTML as H
...@@ -182,6 +183,8 @@ selectedNodesCpt = here.component "selectedNodes" cpt ...@@ -182,6 +183,8 @@ selectedNodesCpt = here.component "selectedNodes" cpt
{ selectedNodeIds } <- GEST.focusedSidePanel sidePanelGraph { selectedNodeIds } <- GEST.focusedSidePanel sidePanelGraph
selectedNodeIds' <- T.useLive T.unequal selectedNodeIds selectedNodeIds' <- T.useLive T.unequal selectedNodeIds
let badges' = neighbourBadges graph selectedNodeIds'
pure $ R2.row pure $ R2.row
[ R2.col 12 [ R2.col 12
[ RH.ul { className: "nav nav-tabs d-flex justify-content-center" [ RH.ul { className: "nav nav-tabs d-flex justify-content-center"
...@@ -191,9 +194,7 @@ selectedNodesCpt = here.component "selectedNodes" cpt ...@@ -191,9 +194,7 @@ selectedNodesCpt = here.component "selectedNodes" cpt
[ RH.div { className: "d-flex flex-wrap justify-content-center" [ RH.div { className: "d-flex flex-wrap justify-content-center"
, role: "tabpanel" } , role: "tabpanel" }
( Seq.toUnfoldable ( Seq.toUnfoldable
$ ( Seq.map (badge selectedNodeIds) $ ( Seq.map (\node -> badge { node, selectedNodeIds }) badges')
(badges graph selectedNodeIds')
)
) )
, H.br {} , H.br {}
] ]
...@@ -225,15 +226,15 @@ neighborhoodCpt = here.component "neighborhood" cpt ...@@ -225,15 +226,15 @@ neighborhoodCpt = here.component "neighborhood" cpt
{ selectedNodeIds } <- GEST.focusedSidePanel sidePanelGraph { selectedNodeIds } <- GEST.focusedSidePanel sidePanelGraph
selectedNodeIds' <- T.useLive T.unequal selectedNodeIds selectedNodeIds' <- T.useLive T.unequal selectedNodeIds
let badges' = neighbourBadges graph selectedNodeIds'
pure $ RH.div { className: "tab-content", id: "myTabContent" } pure $ RH.div { className: "tab-content", id: "myTabContent" }
[ RH.div { -- className: "flex-space-around d-flex justify-content-center" [ RH.div { -- className: "flex-space-around d-flex justify-content-center"
className: "d-flex flex-wrap flex-space-around" className: "d-flex flex-wrap flex-space-around"
, id: "home" , id: "home"
, role: "tabpanel" , role: "tabpanel"
} }
(Seq.toUnfoldable $ Seq.map (badge selectedNodeIds) (Seq.toUnfoldable $ Seq.map (\node -> badge { node, selectedNodeIds }) badges')
$ neighbourBadges graph selectedNodeIds'
)
] ]
...@@ -284,15 +285,26 @@ updateTermButtonCpt = here.component "updateTermButton" cpt ...@@ -284,15 +285,26 @@ updateTermButtonCpt = here.component "updateTermButton" cpt
T.write_ SigmaxT.emptyNodeIds selectedNodeIds T.write_ SigmaxT.emptyNodeIds selectedNodeIds
type BadgeProps =
badge :: T.Box SigmaxT.NodeIds -> Record SigmaxT.Node -> R.Element ( node :: Record SigmaxT.Node
badge selectedNodeIds {id, label} = , selectedNodeIds :: T.Box SigmaxT.NodeIds )
RH.a { className: "badge badge-pill badge-light"
, on: { click: onClick } badge :: R2.Leaf BadgeProps
} [ RH.h6 {} [ RH.text label ] ] badge props = R.createElement badgeCpt props []
where badgeCpt :: R.Component BadgeProps
onClick _ = do badgeCpt = here.component "badge" cpt where
T.write_ (Set.singleton id) selectedNodeIds cpt { node: { id, label, size }, selectedNodeIds } _ = do
let scale = Math.max 1.0 (Math.log size)
let style = {
fontSize: show scale <> "em"
}
pure $ RH.a { className: "badge badge-pill badge-light"
, on: { click: onClick }
} [ RH.h6 { style } [ RH.text label ] ]
where
onClick _ = do
T.write_ (Set.singleton id) selectedNodeIds
badges :: SigmaxT.SGraph -> SigmaxT.NodeIds -> Seq.Seq (Record SigmaxT.Node) badges :: SigmaxT.SGraph -> SigmaxT.NodeIds -> Seq.Seq (Record SigmaxT.Node)
badges graph selectedNodeIds = SigmaxT.graphNodes $ SigmaxT.nodesById graph selectedNodeIds badges graph selectedNodeIds = SigmaxT.graphNodes $ SigmaxT.nodesById graph selectedNodeIds
......
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