Commit 2e21ebc9 authored by Karen Konou's avatar Karen Konou

[Folder View] Back button to home when needed

parent 95e4db52
...@@ -23,7 +23,8 @@ import Gargantext.Components.Forest.Tree.Node.Action.Update (updateRequest) ...@@ -23,7 +23,8 @@ import Gargantext.Components.Forest.Tree.Node.Action.Update (updateRequest)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadArbitraryFile, uploadFile) import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadArbitraryFile, uploadFile)
import Gargantext.Components.Forest.Tree.Node.Box (nodePopupView) import Gargantext.Components.Forest.Tree.Node.Box (nodePopupView)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeOut(..)) import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeOut(..))
import Gargantext.Components.GraphQL.Endpoints (getTreeFirstLevel) import Gargantext.Components.GraphQL.Endpoints (getNode, getTreeFirstLevel)
import Gargantext.Components.GraphQL.Node (Node)
import Gargantext.Components.GraphQL.Tree (TreeFirstLevel, TreeNode) import Gargantext.Components.GraphQL.Tree (TreeFirstLevel, TreeNode)
import Gargantext.Config.REST (AffRESTError, logRESTError) import Gargantext.Config.REST (AffRESTError, logRESTError)
import Gargantext.Config.Utils (handleRESTError) import Gargantext.Config.Utils (handleRESTError)
...@@ -134,6 +135,9 @@ icon :: FolderStyle -> GT.NodeType -> String ...@@ -134,6 +135,9 @@ icon :: FolderStyle -> GT.NodeType -> String
icon FolderUp _ = "fa fa-folder-open" icon FolderUp _ = "fa fa-folder-open"
icon _ nodeType = GT.fldr nodeType false icon _ nodeType = GT.fldr nodeType false
treeId :: Session -> Int
treeId (Session {treeId: tId}) = tId
folderSimple :: R2.Component FolderSimpleProps folderSimple :: R2.Component FolderSimpleProps
folderSimple = R.createElement folderSimpleCpt folderSimple = R.createElement folderSimpleCpt
...@@ -149,7 +153,6 @@ folderSimpleCpt = here.component "folderSimpleCpt" cpt where ...@@ -149,7 +153,6 @@ folderSimpleCpt = here.component "folderSimpleCpt" cpt where
, H.br {} , H.br {}
, H.text text ] , H.text text ]
where where
treeId (Session {treeId: tId}) = tId
route nId rootId nType sid route nId rootId nType sid
| rootId == nodeId = Home | rootId == nodeId = Home
| otherwise = getFolderPath nType sid nId | otherwise = getFolderPath nType sid nId
...@@ -220,7 +223,7 @@ folderCpt = here.component "folderCpt" cpt where ...@@ -220,7 +223,7 @@ folderCpt = here.component "folderCpt" cpt where
backButton :: R2.Component () backButton :: R2.Component ()
backButton = R.createElement backButtonCpt backButton = R.createElement backButtonCpt
backButtonCpt :: R.Component () backButtonCpt :: R.Component ()
backButtonCpt = R.hooksComponent "backButton" cpt where backButtonCpt = here.component "backButton" cpt where
cpt _ _ = do cpt _ _ = do
{ goToPreviousPage } <- useLinkHandler { goToPreviousPage } <- useLinkHandler
...@@ -232,6 +235,43 @@ backButtonCpt = R.hooksComponent "backButton" cpt where ...@@ -232,6 +235,43 @@ backButtonCpt = R.hooksComponent "backButton" cpt where
H.i { className: "fa fa-arrow-left", title: "Previous view"} [] H.i { className: "fa fa-arrow-left", title: "Previous view"} []
] ]
backButtonSmart :: R2.Component (nodeId :: Int, session :: Session)
backButtonSmart = R.createElement backButtonSmartCpt
backButtonSmartCpt :: R.Component (nodeId :: Int, session :: Session)
backButtonSmartCpt = here.component "backButtonSmart" cpt where
cpt {nodeId, session} _ = do
reload <- T.useBox T2.newReload
reload' <- T.useLive T.unequal reload
useLoader { errorHandler
, loader: loadNode
, path: { nodeId, session, reload: reload' }
, render: \node -> backButtonSmartMain { node, session } []
}
where
errorHandler = logRESTError here "[folderView]"
backButtonSmartMain :: R2.Component (node :: Node, session :: Session)
backButtonSmartMain = R.createElement backButtonSmartMainCpt
backButtonSmartMainCpt :: R.Component (node :: Node, session :: Session)
backButtonSmartMainCpt = here.component "backButtonSmartMain" cpt where
cpt { node, session } _ = do
handlers <- useLinkHandler
let rootId = treeId session
pure $
H.button {
className: "btn btn-primary"
, on: { click: action rootId node.parent_id handlers }
} [
H.i { className: "fa fa-arrow-left", title: "Previous view"} []
]
where
action rootId pId handlers
| rootId == pId = handlers.goToRoute Home
| otherwise = handlers.goToPreviousPage unit
type LoadProps = type LoadProps =
( (
session :: Session, session :: Session,
...@@ -242,6 +282,9 @@ type LoadProps = ...@@ -242,6 +282,9 @@ type LoadProps =
loadFolders :: Record LoadProps -> AffRESTError TreeFirstLevel loadFolders :: Record LoadProps -> AffRESTError TreeFirstLevel
loadFolders {nodeId, session} = getTreeFirstLevel session nodeId loadFolders {nodeId, session} = getTreeFirstLevel session nodeId
loadNode :: Record LoadProps -> AffRESTError Node
loadNode {nodeId, session} = getNode session nodeId
type PerformActionProps = type PerformActionProps =
( boxes :: Boxes ( boxes :: Boxes
, nodeId :: Int , nodeId :: Int
......
...@@ -71,7 +71,7 @@ corpusLayoutMainCpt = here.component "corpusLayoutMain" cpt ...@@ -71,7 +71,7 @@ corpusLayoutMainCpt = here.component "corpusLayoutMain" cpt
H.div {} H.div {}
[ [
R2.row [ R2.row [
FV.backButton {} [] FV.backButtonSmart { nodeId, session } []
, tileMenu , tileMenu
{ boxes { boxes
, currentTile: Just corpusCodeRoute , currentTile: Just corpusCodeRoute
......
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