Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
purescript-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Grégoire Locqueville
purescript-gargantext
Commits
e8891f6a
Commit
e8891f6a
authored
Sep 07, 2021
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[list selector] various refactorings
parent
992d6718
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
344 additions
and
321 deletions
+344
-321
DocsTable.purs
src/Gargantext/Components/DocsTable.purs
+4
-5
FacetsTable.purs
src/Gargantext/Components/FacetsTable.purs
+1
-2
FolderView.purs
src/Gargantext/Components/FolderView.purs
+9
-7
Tree.purs
src/Gargantext/Components/Forest/Tree.purs
+9
-7
Node.purs
src/Gargantext/Components/Forest/Tree/Node.purs
+1
-1
Action.purs
src/Gargantext/Components/Forest/Tree/Node/Action.purs
+21
-85
Add.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Add.purs
+1
-1
Contact.purs
...argantext/Components/Forest/Tree/Node/Action/Contact.purs
+1
-1
Delete.purs
...Gargantext/Components/Forest/Tree/Node/Action/Delete.purs
+1
-1
Download.purs
...rgantext/Components/Forest/Tree/Node/Action/Download.purs
+1
-1
Link.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Link.purs
+1
-1
Merge.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Merge.purs
+1
-1
Move.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Move.purs
+1
-1
Rename.purs
...Gargantext/Components/Forest/Tree/Node/Action/Rename.purs
+1
-1
Search.purs
...Gargantext/Components/Forest/Tree/Node/Action/Search.purs
+12
-11
SearchBar.purs
.../Components/Forest/Tree/Node/Action/Search/SearchBar.purs
+8
-8
SearchField.purs
...omponents/Forest/Tree/Node/Action/Search/SearchField.purs
+73
-69
Share.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Share.purs
+2
-2
Types.purs
src/Gargantext/Components/Forest/Tree/Node/Action/Types.purs
+74
-0
Update.purs
...Gargantext/Components/Forest/Tree/Node/Action/Update.purs
+1
-1
Upload.purs
...Gargantext/Components/Forest/Tree/Node/Action/Upload.purs
+28
-22
Box.purs
src/Gargantext/Components/Forest/Tree/Node/Box.purs
+1
-1
Types.purs
src/Gargantext/Components/Forest/Tree/Node/Box/Types.purs
+1
-1
Tools.purs
src/Gargantext/Components/Forest/Tree/Node/Tools.purs
+2
-1
SubTree.purs
...Gargantext/Components/Forest/Tree/Node/Tools/SubTree.purs
+2
-1
Sync.purs
src/Gargantext/Components/Forest/Tree/Node/Tools/Sync.purs
+2
-5
API.purs
src/Gargantext/Components/GraphExplorer/API.purs
+1
-1
Button.purs
src/Gargantext/Components/GraphExplorer/Button.purs
+0
-1
ListSelection.purs
src/Gargantext/Components/ListSelection.purs
+2
-42
Types.purs
src/Gargantext/Components/ListSelection/Types.purs
+50
-0
NgramsTable.purs
src/Gargantext/Components/NgramsTable.purs
+10
-10
Components.purs
src/Gargantext/Components/NgramsTable/Components.purs
+12
-13
Core.purs
src/Gargantext/Components/NgramsTable/Core.purs
+1
-1
Tabs.purs
...gantext/Components/Nodes/Annuaire/User/Contacts/Tabs.purs
+1
-3
Dashboard.purs
src/Gargantext/Components/Nodes/Corpus/Dashboard.purs
+1
-1
Document.purs
src/Gargantext/Components/Nodes/Corpus/Document.purs
+6
-10
Tabs.purs
src/Gargantext/Components/Nodes/Lists/Tabs.purs
+1
-2
No files found.
src/Gargantext/Components/DocsTable.purs
View file @
e8891f6a
...
@@ -3,7 +3,6 @@ module Gargantext.Components.DocsTable where
...
@@ -3,7 +3,6 @@ module Gargantext.Components.DocsTable where
import Gargantext.Prelude
import Gargantext.Prelude
import DOM.Simple.Console (log2)
import DOM.Simple.Event as DE
import DOM.Simple.Event as DE
import Data.Array as A
import Data.Array as A
import Data.Either (Either)
import Data.Either (Either)
...
@@ -496,9 +495,9 @@ docChooserCpt = here.component "docChooser" cpt
...
@@ -496,9 +495,9 @@ docChooserCpt = here.component "docChooser" cpt
]
]
where
where
onClick selected _ = do
onClick selected _ = do
-- log2 "[docChooser] onClick, listId" listId
--
here.
log2 "[docChooser] onClick, listId" listId
-- log2 "[docChooser] onClick, corpusId" corpusId
--
here.
log2 "[docChooser] onClick, corpusId" corpusId
-- log2 "[docChooser] onClick, nodeId" nodeId
--
here.
log2 "[docChooser] onClick, nodeId" nodeId
-- R2.callTrigger triggerAnnotatedDocIdChange { corpusId, listId, nodeId }
-- R2.callTrigger triggerAnnotatedDocIdChange { corpusId, listId, nodeId }
-- T2.reload tableReload
-- T2.reload tableReload
if selected then do
if selected then do
...
@@ -510,7 +509,7 @@ docChooserCpt = here.component "docChooser" cpt
...
@@ -510,7 +509,7 @@ docChooserCpt = here.component "docChooser" cpt
, mCurrentDocId: Just nodeId
, mCurrentDocId: Just nodeId
, nodeId: nodeId }) sidePanel
, nodeId: nodeId }) sidePanel
T.write_ Opened sidePanelState
T.write_ Opened sidePanelState
log2 "[docChooser] sidePanel opened" sidePanelState
here.
log2 "[docChooser] sidePanel opened" sidePanelState
newtype SearchQuery = SearchQuery {
newtype SearchQuery = SearchQuery {
...
...
src/Gargantext/Components/FacetsTable.purs
View file @
e8891f6a
...
@@ -5,7 +5,6 @@ module Gargantext.Components.FacetsTable where
...
@@ -5,7 +5,6 @@ module Gargantext.Components.FacetsTable where
import Gargantext.Prelude
import Gargantext.Prelude
import DOM.Simple.Console (log2)
import Data.Either (Either(..))
import Data.Either (Either(..))
import Data.Eq.Generic (genericEq)
import Data.Eq.Generic (genericEq)
import Data.Generic.Rep (class Generic)
import Data.Generic.Rep (class Generic)
...
@@ -223,7 +222,7 @@ loadPage { session, nodeId, listId, query, params: {limit, offset, orderBy } } =
...
@@ -223,7 +222,7 @@ loadPage { session, nodeId, listId, query, params: {limit, offset, orderBy } } =
case eSearchResult of
case eSearchResult of
Left err -> pure $ Left err
Left err -> pure $ Left err
Right (SearchResult {result}) -> do
Right (SearchResult {result}) -> do
liftEffect $ log2 "[loadPage] result" result
liftEffect $
here.
log2 "[loadPage] result" result
-- $ SearchQuery {query: concat query, expected: SearchDoc}
-- $ SearchQuery {query: concat query, expected: SearchDoc}
pure $ Right $ case result of
pure $ Right $ case result of
SearchResultDoc {docs} -> Docs {docs: doc2view <$> Seq.fromFoldable docs}
SearchResultDoc {docs} -> Docs {docs: doc2view <$> Seq.fromFoldable docs}
...
...
src/Gargantext/Components/FolderView.purs
View file @
e8891f6a
...
@@ -10,7 +10,6 @@ import Effect.Aff (Aff)
...
@@ -10,7 +10,6 @@ import Effect.Aff (Aff)
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Gargantext.AsyncTasks as GAT
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Add (AddNodeValue(..), addNode)
import Gargantext.Components.Forest.Tree.Node.Action.Add (AddNodeValue(..), addNode)
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Delete (deleteNode, unpublishNode)
import Gargantext.Components.Forest.Tree.Node.Action.Delete (deleteNode, unpublishNode)
...
@@ -19,6 +18,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Merge (mergeNodeReq)
...
@@ -19,6 +18,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Merge (mergeNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (RenameValue(..), rename)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (RenameValue(..), rename)
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Update (updateRequest)
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)
...
@@ -277,8 +277,10 @@ performAction = performAction' where
...
@@ -277,8 +277,10 @@ performAction = performAction' where
performAction' (SharePublic { params }) p = sharePublic params p
performAction' (SharePublic { params }) p = sharePublic params p
performAction' (AddContact params) p = addContact params p
performAction' (AddContact params) p = addContact params p
performAction' (AddNode name nodeType) p = addNode' name nodeType p
performAction' (AddNode name nodeType) p = addNode' name nodeType p
performAction' (UploadFile nodeType fileType mName contents) p = uploadFile' nodeType fileType mName contents p
performAction' (UploadFile nodeType fileType mName contents selection) p =
performAction' (UploadArbitraryFile mName blob) p = uploadArbitraryFile' mName blob p
uploadFile' nodeType fileType mName contents p selection
performAction' (UploadArbitraryFile mName blob selection) p =
uploadArbitraryFile' mName blob p selection
performAction' DownloadNode _ = liftEffect $ here.log "[performAction] DownloadNode"
performAction' DownloadNode _ = liftEffect $ here.log "[performAction] DownloadNode"
performAction' (MoveNode {params}) p = moveNode params p
performAction' (MoveNode {params}) p = moveNode params p
performAction' (MergeNode {params}) p = mergeNode params p
performAction' (MergeNode {params}) p = mergeNode params p
...
@@ -325,14 +327,14 @@ performAction = performAction' where
...
@@ -325,14 +327,14 @@ performAction = performAction' where
addContact params { nodeId: id, session } =
addContact params { nodeId: id, session } =
void $ Contact.contactReq session id params
void $ Contact.contactReq session id params
uploadFile' nodeType fileType mName contents { boxes: { errors, tasks }, nodeId: id, session } = do
uploadFile' nodeType fileType mName contents { boxes: { errors, tasks }, nodeId: id, session }
selection
= do
eTask <- uploadFile { contents, fileType, id, nodeType, mName, session }
eTask <- uploadFile { contents, fileType, id, nodeType, mName, se
lection, se
ssion }
handleRESTError errors eTask $ \task -> liftEffect $ do
handleRESTError errors eTask $ \task -> liftEffect $ do
GAT.insert id task tasks
GAT.insert id task tasks
here.log2 "[performAction] UploadFile, uploaded, task:" task
here.log2 "[performAction] UploadFile, uploaded, task:" task
uploadArbitraryFile' mName blob { boxes: { errors, tasks }, nodeId: id, session } = do
uploadArbitraryFile' mName blob { boxes: { errors, tasks }, nodeId: id, session }
selection
= do
eTask <- uploadArbitraryFile session id { blob, mName }
eTask <- uploadArbitraryFile session id { blob, mName }
selection
handleRESTError errors eTask $ \task -> liftEffect $ do
handleRESTError errors eTask $ \task -> liftEffect $ do
GAT.insert id task tasks
GAT.insert id task tasks
here.log2 "[performAction] UploadArbitraryFile, uploaded, task:" task
here.log2 "[performAction] UploadArbitraryFile, uploaded, task:" task
...
...
src/Gargantext/Components/Forest/Tree.purs
View file @
e8891f6a
...
@@ -12,7 +12,6 @@ import Effect.Class (liftEffect)
...
@@ -12,7 +12,6 @@ import Effect.Class (liftEffect)
import Gargantext.AsyncTasks as GAT
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node (nodeSpan)
import Gargantext.Components.Forest.Tree.Node (nodeSpan)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Add (AddNodeValue(..), addNode)
import Gargantext.Components.Forest.Tree.Node.Action.Add (AddNodeValue(..), addNode)
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Delete (deleteNode, unpublishNode)
import Gargantext.Components.Forest.Tree.Node.Action.Delete (deleteNode, unpublishNode)
...
@@ -21,6 +20,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Merge (mergeNodeReq)
...
@@ -21,6 +20,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Merge (mergeNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNodeReq)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (RenameValue(..), rename)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (RenameValue(..), rename)
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Update (updateRequest)
import Gargantext.Components.Forest.Tree.Node.Action.Update (updateRequest)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadFile, uploadArbitraryFile)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadFile, uploadArbitraryFile)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..), fTreeID)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..), fTreeID)
...
@@ -271,14 +271,14 @@ addNode' name nodeType p@{ boxes: { errors, forestOpen }, session, tree: (NTree
...
@@ -271,14 +271,14 @@ addNode' name nodeType p@{ boxes: { errors, forestOpen }, session, tree: (NTree
liftEffect $ T.modify_ (openNodesInsert (mkNodeId session id)) forestOpen
liftEffect $ T.modify_ (openNodesInsert (mkNodeId session id)) forestOpen
refreshTree p
refreshTree p
uploadFile' nodeType fileType mName contents p@{ boxes: { errors, tasks }, session, tree: (NTree (LNode { id }) _) } = do
uploadFile' nodeType fileType mName contents p@{ boxes: { errors, tasks }, session, tree: (NTree (LNode { id }) _) }
selection
= do
eTask <- uploadFile { contents, fileType, id, mName, nodeType, session }
eTask <- uploadFile { contents, fileType, id, mName, nodeType, se
lection, se
ssion }
handleRESTError errors eTask $ \task -> liftEffect $ do
handleRESTError errors eTask $ \task -> liftEffect $ do
GAT.insert id task tasks
GAT.insert id task tasks
here.log2 "[uploadFile'] UploadFile, uploaded, task:" task
here.log2 "[uploadFile'] UploadFile, uploaded, task:" task
uploadArbitraryFile' mName blob p@{ boxes: { errors, tasks }, session, tree: (NTree (LNode { id }) _) } = do
uploadArbitraryFile' mName blob p@{ boxes: { errors, tasks }, session, tree: (NTree (LNode { id }) _) }
selection
= do
eTask <- uploadArbitraryFile session id { blob, mName }
eTask <- uploadArbitraryFile session id { blob, mName }
selection
handleRESTError errors eTask $ \task -> liftEffect $ do
handleRESTError errors eTask $ \task -> liftEffect $ do
GAT.insert id task tasks
GAT.insert id task tasks
here.log2 "[uploadArbitraryFile'] UploadArbitraryFile, uploaded, task:" task
here.log2 "[uploadArbitraryFile'] UploadArbitraryFile, uploaded, task:" task
...
@@ -313,8 +313,10 @@ performAction (ShareTeam username) p = shareTeam userna
...
@@ -313,8 +313,10 @@ performAction (ShareTeam username) p = shareTeam userna
performAction (SharePublic { params }) p = sharePublic params p
performAction (SharePublic { params }) p = sharePublic params p
performAction (AddContact params) p = addContact params p
performAction (AddContact params) p = addContact params p
performAction (AddNode name nodeType) p = addNode' name nodeType p
performAction (AddNode name nodeType) p = addNode' name nodeType p
performAction (UploadFile nodeType fileType mName contents) p = uploadFile' nodeType fileType mName contents p
performAction (UploadFile nodeType fileType mName contents selection) p =
performAction (UploadArbitraryFile mName blob) p = uploadArbitraryFile' mName blob p
uploadFile' nodeType fileType mName contents p selection
performAction (UploadArbitraryFile mName blob selection) p =
uploadArbitraryFile' mName blob p selection
performAction DownloadNode _ = liftEffect $ here.log "[performAction] DownloadNode"
performAction DownloadNode _ = liftEffect $ here.log "[performAction] DownloadNode"
performAction (MoveNode {params}) p = moveNode params p
performAction (MoveNode {params}) p = moveNode params p
performAction (MergeNode {params}) p = mergeNode params p
performAction (MergeNode {params}) p = mergeNode params p
...
...
src/Gargantext/Components/Forest/Tree/Node.purs
View file @
e8891f6a
...
@@ -10,7 +10,7 @@ import Effect.Aff (Aff, launchAff)
...
@@ -10,7 +10,7 @@ import Effect.Aff (Aff, launchAff)
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Gargantext.AsyncTasks as GAT
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Upload (DroppedFile(..), fileTypeView)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (DroppedFile(..), fileTypeView)
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType(..), UploadFileBlob(..))
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType(..), UploadFileBlob(..))
import Gargantext.Components.Forest.Tree.Node.Box (nodePopupView)
import Gargantext.Components.Forest.Tree.Node.Box (nodePopupView)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action.purs
View file @
e8891f6a
...
@@ -2,12 +2,9 @@ module Gargantext.Components.Forest.Tree.Node.Action where
...
@@ -2,12 +2,9 @@ module Gargantext.Components.Forest.Tree.Node.Action where
import Gargantext.Prelude
import Gargantext.Prelude
import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.Forest.Tree.Node.Action.Contact.Types (AddContactParams)
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Update.Types (UpdateNodeParams)
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType, UploadFileBlob)
import Gargantext.Components.Forest.Tree.Node.Settings (NodeAction(..), glyphiconNodeAction)
import Gargantext.Components.Forest.Tree.Node.Settings (NodeAction(..), glyphiconNodeAction)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (ID)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (ID)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeOut, SubTreeParams(..))
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeOut, SubTreeParams(..))
...
@@ -22,27 +19,6 @@ type Props =
...
@@ -22,27 +19,6 @@ type Props =
)
)
data Action = AddNode String GT.NodeType
| DeleteNode GT.NodeType
| RenameNode String
| UpdateNode UpdateNodeParams
| DoSearch GT.AsyncTaskWithType
| UploadFile GT.NodeType FileType (Maybe String) String
| UploadArbitraryFile (Maybe String) UploadFileBlob
| DownloadNode
| RefreshTree
| ClosePopover
| ShareTeam String
| AddContact AddContactParams
| SharePublic {params :: Maybe SubTreeOut}
| MoveNode {params :: Maybe SubTreeOut}
| MergeNode {params :: Maybe SubTreeOut}
| LinkNode {nodeType :: Maybe GT.NodeType, params :: Maybe SubTreeOut}
| NoAction
subTreeOut :: Action -> Maybe SubTreeOut
subTreeOut :: Action -> Maybe SubTreeOut
subTreeOut (MoveNode {params}) = params
subTreeOut (MoveNode {params}) = params
subTreeOut (MergeNode {params}) = params
subTreeOut (MergeNode {params}) = params
...
@@ -57,47 +33,6 @@ setTreeOut (LinkNode {nodeType, params:_}) p = LinkNode {nodeType, params: p}
...
@@ -57,47 +33,6 @@ setTreeOut (LinkNode {nodeType, params:_}) p = LinkNode {nodeType, params: p}
setTreeOut (SharePublic {params:_}) p = SharePublic {params: p}
setTreeOut (SharePublic {params:_}) p = SharePublic {params: p}
setTreeOut a _ = a
setTreeOut a _ = a
derive instance Generic Action _
instance Eq Action where
eq (AddNode s1 nt1) (AddNode s2 nt2) = (eq s1 s2) && (eq nt1 nt2)
eq (DeleteNode nt1) (DeleteNode nt2) = eq nt1 nt2
eq (RenameNode s1) (RenameNode s2) = eq s1 s2
eq (UpdateNode un1) (UpdateNode un2) = eq un1 un2
eq (DoSearch at1) (DoSearch at2) = eq at1 at2
eq (UploadFile nt1 ft1 s1 _) (UploadFile nt2 ft2 s2 _) = (eq nt1 nt2) && (eq ft1 ft2) && (eq s1 s2)
eq (UploadArbitraryFile s1 _) (UploadArbitraryFile s2 _) = eq s1 s2
eq DownloadNode DownloadNode = true
eq RefreshTree RefreshTree = true
eq ClosePopover ClosePopover = true
eq (ShareTeam s1) (ShareTeam s2) = eq s1 s2
eq (AddContact ac1) (AddContact ac2) = eq ac1 ac2
eq (SharePublic p1) (SharePublic p2) = eq p1 p2
eq (MoveNode p1) (MoveNode p2) = eq p1 p2
eq (MergeNode p1) (MergeNode p2) = eq p1 p2
eq (LinkNode l1) (LinkNode l2) = eq l1 l2
eq NoAction NoAction = true
eq _ _ = false
instance Show Action where
show (AddNode _ _ ) = "AddNode"
show (DeleteNode _ ) = "DeleteNode"
show (RenameNode _ ) = "RenameNode"
show (UpdateNode _ ) = "UpdateNode"
show (ShareTeam _ ) = "ShareTeam"
show (AddContact _ ) = "AddContact"
show (SharePublic _ ) = "SharePublic"
show (DoSearch _ ) = "SearchQuery"
show (UploadFile _ _ _ _) = "UploadFile"
show (UploadArbitraryFile _ _) = "UploadArbitraryFile"
show RefreshTree = "RefreshTree"
show ClosePopover = "ClosePopover"
show DownloadNode = "Download"
show (MoveNode _ ) = "MoveNode"
show (MergeNode _ ) = "MergeNode"
show (LinkNode _ ) = "LinkNode"
show NoAction = "NoAction"
-----------------------------------------------------------------------
-----------------------------------------------------------------------
icon :: Action -> String
icon :: Action -> String
icon (AddNode _ _) = glyphiconNodeAction (Add [])
icon (AddNode _ _) = glyphiconNodeAction (Add [])
...
@@ -108,8 +43,8 @@ icon (ShareTeam _) = glyphiconNodeAction Share
...
@@ -108,8 +43,8 @@ icon (ShareTeam _) = glyphiconNodeAction Share
icon (AddContact _) = glyphiconNodeAction Share
icon (AddContact _) = glyphiconNodeAction Share
icon (SharePublic _ ) = glyphiconNodeAction (Publish { subTreeParams : SubTreeParams {showtypes:[], valitypes:[] }})
icon (SharePublic _ ) = glyphiconNodeAction (Publish { subTreeParams : SubTreeParams {showtypes:[], valitypes:[] }})
icon (DoSearch _) = glyphiconNodeAction SearchBox
icon (DoSearch _) = glyphiconNodeAction SearchBox
icon (UploadFile _ _ _ _
)
= glyphiconNodeAction Upload
icon (UploadFile _ _ _ _
_)
= glyphiconNodeAction Upload
icon (UploadArbitraryFile _ _ ) = glyphiconNodeAction Upload
icon (UploadArbitraryFile _ _
_
) = glyphiconNodeAction Upload
icon RefreshTree = glyphiconNodeAction Refresh
icon RefreshTree = glyphiconNodeAction Refresh
icon ClosePopover = glyphiconNodeAction CloseNodePopover
icon ClosePopover = glyphiconNodeAction CloseNodePopover
icon DownloadNode = glyphiconNodeAction Download
icon DownloadNode = glyphiconNodeAction Download
...
@@ -122,21 +57,22 @@ icon NoAction = "hand-o-right"
...
@@ -122,21 +57,22 @@ icon NoAction = "hand-o-right"
-- icon _ = "hand-o-right"
-- icon _ = "hand-o-right"
text :: Action -> String
text :: Action -> String
text (AddNode _ _ ) = "Add !"
text (AddNode _ _ )
= "Add !"
text (DeleteNode _ ) = "Delete !"
text (DeleteNode _ )
= "Delete !"
text (RenameNode _ ) = "Rename !"
text (RenameNode _ )
= "Rename !"
text (UpdateNode _ ) = "Update !"
text (UpdateNode _ )
= "Update !"
text (ShareTeam _ ) = "Share with team !"
text (ShareTeam _ )
= "Share with team !"
text (AddContact _ ) = "Add contact !"
text (AddContact _ )
= "Add contact !"
text (SharePublic _ ) = "Publish !"
text (SharePublic _ )
= "Publish !"
text (DoSearch _ ) = "Launch search !"
text (DoSearch _ )
= "Launch search !"
text (UploadFile _ _ _ _) = "Upload File !"
text (UploadFile _ _ _ _
_
) = "Upload File !"
text (UploadArbitraryFile _ _) = "Upload arbitrary file !"
text (UploadArbitraryFile
_
_ _) = "Upload arbitrary file !"
text RefreshTree = "Refresh Tree !"
text RefreshTree
= "Refresh Tree !"
text ClosePopover = "Close Popover !"
text ClosePopover
= "Close Popover !"
text DownloadNode = "Download !"
text DownloadNode
= "Download !"
text (MoveNode _ ) = "Move !"
text (MoveNode _ )
= "Move !"
text (MergeNode _ ) = "Merge !"
text (MergeNode _ )
= "Merge !"
text (LinkNode _ ) = "Link !"
text (LinkNode _ )
= "Link !"
text NoAction = "No Action"
text NoAction
= "No Action"
-----------------------------------------------------------------------
-----------------------------------------------------------------------
src/Gargantext/Components/Forest/Tree/Node/Action/Add.purs
View file @
e8891f6a
...
@@ -11,7 +11,7 @@ import Data.String (Pattern(..), indexOf)
...
@@ -11,7 +11,7 @@ import Data.String (Pattern(..), indexOf)
import Data.Tuple.Nested ((/\))
import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff, launchAff_)
import Effect.Aff (Aff, launchAff_)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Settings (SettingsBox(..), settingsBox)
import Gargantext.Components.Forest.Tree.Node.Settings (SettingsBox(..), settingsBox)
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe, panel, submitButton)
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe, panel, submitButton)
import Gargantext.Components.InputWithEnter (inputWithEnter)
import Gargantext.Components.InputWithEnter (inputWithEnter)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Contact.purs
View file @
e8891f6a
...
@@ -10,7 +10,7 @@ import Reactix as R
...
@@ -10,7 +10,7 @@ import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Toestand as T
import Toestand as T
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Contact.Types (AddContactParams(..))
import Gargantext.Components.Forest.Tree.Node.Action.Contact.Types (AddContactParams(..))
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
import Gargantext.Routes as GR
import Gargantext.Routes as GR
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Delete.purs
View file @
e8891f6a
...
@@ -9,7 +9,7 @@ import Effect.Aff (Aff)
...
@@ -9,7 +9,7 @@ import Effect.Aff (Aff)
import Reactix as R
import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Routes (SessionRoute(..))
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Download.purs
View file @
e8891f6a
...
@@ -4,7 +4,7 @@ import Data.Maybe (Maybe(..))
...
@@ -4,7 +4,7 @@ import Data.Maybe (Maybe(..))
import Reactix as R
import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Gargantext.Components.Forest.Tree.Node.Action (Action(DownloadNode))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(DownloadNode))
import Gargantext.Components.Forest.Tree.Node.Tools (fragmentPT, panel, submitButtonHref)
import Gargantext.Components.Forest.Tree.Node.Tools (fragmentPT, panel, submitButtonHref)
import Gargantext.Ends (url)
import Gargantext.Ends (url)
import Gargantext.Prelude (pure, ($))
import Gargantext.Prelude (pure, ($))
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Link.purs
View file @
e8891f6a
...
@@ -7,7 +7,7 @@ import Data.Generic.Rep (class Generic)
...
@@ -7,7 +7,7 @@ import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Data.Show.Generic (genericShow)
import Data.Show.Generic (genericShow)
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Merge.purs
View file @
e8891f6a
...
@@ -10,7 +10,7 @@ import Reactix as R
...
@@ -10,7 +10,7 @@ import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Toestand as T
import Toestand as T
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel, checkbox, checkboxesListGroup)
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel, checkbox, checkboxesListGroup)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Move.purs
View file @
e8891f6a
...
@@ -9,7 +9,7 @@ import Reactix as R
...
@@ -9,7 +9,7 @@ import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Toestand as T
import Toestand as T
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools (submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Rename.purs
View file @
e8891f6a
...
@@ -10,7 +10,7 @@ import Simple.JSON as JSON
...
@@ -10,7 +10,7 @@ import Simple.JSON as JSON
import Gargantext.Prelude
import Gargantext.Prelude
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
import Gargantext.Routes as GR
import Gargantext.Routes as GR
import Gargantext.Sessions (Session, put)
import Gargantext.Sessions (Session, put)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Search.purs
View file @
e8891f6a
...
@@ -6,7 +6,7 @@ import Data.Maybe (Maybe)
...
@@ -6,7 +6,7 @@ import Data.Maybe (Maybe)
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff, launchAff)
import Effect.Aff (Aff, launchAff)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Add (NodePopup)
import Gargantext.Components.Forest.Tree.Node.Action.Add (NodePopup)
import Gargantext.Components.Forest.Tree.Node.Action.Search.SearchBar (searchBar)
import Gargantext.Components.Forest.Tree.Node.Action.Search.SearchBar (searchBar)
import Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField (defaultSearch)
import Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField (defaultSearch)
...
@@ -38,16 +38,17 @@ actionSearchCpt = here.component "actionSearch" cpt
...
@@ -38,16 +38,17 @@ actionSearchCpt = here.component "actionSearch" cpt
where
where
cpt { boxes: { errors }, dispatch, id, nodePopup, session } _ = do
cpt { boxes: { errors }, dispatch, id, nodePopup, session } _ = do
search <- T.useBox $ defaultSearch { node_id = id }
search <- T.useBox $ defaultSearch { node_id = id }
pure $ R.fragment [ H.p { className: "action-search" }
pure $ R.fragment
[ H.text $ "Search and create a private "
[ H.p { className: "action-search" }
<> "corpus with the search query as corpus name." ]
[ H.text $ "Search and create a private "
, searchBar { errors
<> "corpus with the search query as corpus name." ]
, langs: allLangs
, searchBar { errors
, onSearch: searchOn dispatch nodePopup
, langs: allLangs
, search
, onSearch: searchOn dispatch nodePopup
, session
, search
} []
, session
]
} []
]
where
where
searchOn :: (Action -> Aff Unit)
searchOn :: (Action -> Aff Unit)
-> Maybe NodePopup
-> Maybe NodePopup
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Search/SearchBar.purs
View file @
e8891f6a
...
@@ -34,11 +34,11 @@ searchBarCpt = here.component "searchBar" cpt
...
@@ -34,11 +34,11 @@ searchBarCpt = here.component "searchBar" cpt
cpt { errors, langs, onSearch, search, session } _ = do
cpt { errors, langs, onSearch, search, session } _ = do
--onSearchChange session s
--onSearchChange session s
pure $ H.div { className: "search-bar" }
pure $ H.div { className: "search-bar" }
[ searchField { databases: allDatabases
[ searchField { databases: allDatabases
, errors
, errors
, langs
, langs
, onSearch
, onSearch
, search
, search
, session
, session
} []
} []
]
]
src/Gargantext/Components/Forest/Tree/Node/Action/Search/SearchField.purs
View file @
e8891f6a
...
@@ -55,41 +55,40 @@ searchFieldCpt = here.component "searchField" cpt
...
@@ -55,41 +55,40 @@ searchFieldCpt = here.component "searchField" cpt
search' <- T.useLive T.unequal search
search' <- T.useLive T.unequal search
iframeRef <- R.useRef null
iframeRef <- R.useRef null
let params =
let params =
[ searchInput { search } []
[ searchInput { search } []
-- , if length s.term < 3 -- search with love : <3
-- , if length s.term < 3 -- search with love : <3
-- then
-- then
-- H.div {}[]
-- H.div {}[]
-- else
-- else
, H.div {} [ dataFieldNav { datafields: dataFields, search } []
, H.div {}
[ dataFieldNav { datafields: dataFields, search } []
, if isExternal search'.datafield
then databaseInput { databases: props.databases, search } []
, if isExternal search'.datafield
else H.div {
} []
then databaseInput { databases: props.databases, search
} []
else H.div {} []
, if isHAL search'.datafield
then orgInput { orgs: allOrgs, search } []
, if isHAL search'.datafield
else H.div {
} []
then orgInput { orgs: allOrgs, search
} []
else H.div {} []
, if isIMT search'.datafield
then componentIMT { search } []
, if isIMT search'.datafield
else H.div {
} []
then componentIMT { search
} []
else H.div {} []
, if isCNRS search'.datafield
then componentCNRS { search } []
, if isCNRS search'.datafield
else H.div {
} []
then componentCNRS { search
} []
else H.div {} []
, if needsLang search'.datafield
then langNav { langs: props.langs, search } []
, if needsLang search'.datafield
else H.div {
} []
then langNav { langs: props.langs, search
} []
else H.div {} []
, H.div {} [ searchIframes { iframeRef, search } [] ]
]
, H.div {} [ searchIframes { iframeRef, search } []
]
]
]
]
let button = submitButton { errors, onSearch, search, session } []
let button = submitButton { errors, onSearch, search, session } []
pure $
pure $
H.div { className: "search-field" }
H.div { className: "search-field" }
[
[
R.fragment params
R.fragment params
...
@@ -109,16 +108,17 @@ componentIMTCpt = here.component "componentIMT" cpt
...
@@ -109,16 +108,17 @@ componentIMTCpt = here.component "componentIMT" cpt
cpt { search } _ = do
cpt { search } _ = do
search' <- T.useLive T.unequal search
search' <- T.useLive T.unequal search
let liCpt org = H.li {}
let liCpt org =
[ H.input { type: "checkbox"
H.li {}
, checked: isIn org search'.datafield
[ H.input { type: "checkbox"
, on: { change: \_ -> ( T.modify_ (_ { datafield = updateFilter org search'.datafield }) search)
, checked: isIn org search'.datafield
}
, on: { change: \_ -> ( T.modify_ (_ { datafield = updateFilter org search'.datafield }) search)
}
}
, if org == All_IMT
}
then H.i {} [H.text $ " " <> show org]
, if org == All_IMT
else H.text $ " " <> show org
then H.i {} [H.text $ " " <> show org]
]
else H.text $ " " <> show org
]
pure $ R.fragment
pure $ R.fragment
[ H.ul {} $ map liCpt allIMTorgs
[ H.ul {} $ map liCpt allIMTorgs
...
@@ -132,10 +132,10 @@ componentCNRSCpt :: R.Component ComponentProps
...
@@ -132,10 +132,10 @@ componentCNRSCpt :: R.Component ComponentProps
componentCNRSCpt = here.component "componentCNRS" cpt
componentCNRSCpt = here.component "componentCNRS" cpt
where
where
cpt { search } _ = do
cpt { search } _ = do
pure $ R.fragment
[
pure $ R.fragment
H.div {} []
[
H.div {} []
--, filterInput fi
--, filterInput fi
]
]
isExternal :: Maybe DataField -> Boolean
isExternal :: Maybe DataField -> Boolean
...
@@ -247,15 +247,17 @@ langNavCpt = here.component "langNav" cpt
...
@@ -247,15 +247,17 @@ langNavCpt = here.component "langNav" cpt
cpt { langs, search } _ = do
cpt { langs, search } _ = do
search' <- T.useLive T.unequal search
search' <- T.useLive T.unequal search
pure $ R.fragment [ H.div {className: "text-primary center"} [H.text "with lang"]
pure $ R.fragment
, H.div {className: "nav nav-tabs"} ((liItem search') <$> langs)
[ H.div {className: "text-primary center"} [H.text "with lang"]
]
, H.div {className: "nav nav-tabs"} ((liItem search') <$> langs)
]
where
where
liItem :: Search -> Lang -> R.Element
liItem :: Search -> Lang -> R.Element
liItem { lang } lang' =
liItem { lang } lang' =
H.div { className : "nav-item nav-link" <> if (Just lang') == lang then " active" else ""
H.div { className : "nav-item nav-link" <> if (Just lang') == lang then " active" else ""
, on: { click: \_ -> T.modify_ (_ { lang = Just lang' }) search }
, on: { click: \_ -> T.modify_ (_ { lang = Just lang' }) search }
} [ H.text (show lang') ]
}
[ H.text (show lang') ]
------------------------------------------------------------------------
------------------------------------------------------------------------
...
@@ -271,12 +273,13 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt
...
@@ -271,12 +273,13 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt
cpt { datafields, search } _ = do
cpt { datafields, search } _ = do
search'@{ datafield } <- T.useLive T.unequal search
search'@{ datafield } <- T.useLive T.unequal search
pure $ R.fragment [ H.div { className: "text-primary center"} [H.text "with DataField"]
pure $ R.fragment
, H.div {className: "nav nav-tabs"} ((liItem search') <$> dataFields)
[ H.div { className: "text-primary center"} [H.text "with DataField"]
, H.div {className: "center"} [ H.text
, H.div {className: "nav nav-tabs"} ((liItem search') <$> dataFields)
$ maybe "TODO: add Doc Instance" doc datafield
, H.div {className: "center"} [ H.text
]
$ maybe "TODO: add Doc Instance" doc datafield
]
]
]
where
where
liItem :: Search -> DataField -> R.Element
liItem :: Search -> DataField -> R.Element
liItem { datafield } df' =
liItem { datafield } df' =
...
@@ -325,8 +328,8 @@ databaseInputCpt = here.component "databaseInput" cpt
...
@@ -325,8 +328,8 @@ databaseInputCpt = here.component "databaseInput" cpt
}) search
}) search
pure $
pure $
H.div { className: "form-group" }
[
H.div { className: "form-group" }
H.div {className: "text-primary center"} [ H.text "in database" ]
[
H.div {className: "text-primary center"} [ H.text "in database" ]
, R2.select { className: "form-control"
, R2.select { className: "form-control"
, defaultValue: defaultValue search'.datafield
, defaultValue: defaultValue search'.datafield
, on: { change }
, on: { change }
...
@@ -392,16 +395,16 @@ searchInputCpt = here.component "searchInput" cpt
...
@@ -392,16 +395,16 @@ searchInputCpt = here.component "searchInput" cpt
{ term } <- T.useLive T.unequal search
{ term } <- T.useLive T.unequal search
valueRef <- R.useRef term
valueRef <- R.useRef term
pure $ H.div { className: "" }
[
pure $ H.div { className: "" }
inputWithEnter { onBlur: onBlur valueRef search
[
inputWithEnter { onBlur: onBlur valueRef search
, onEnter: onEnter valueRef search
, onEnter: onEnter valueRef search
, onValueChanged: onValueChanged valueRef
, onValueChanged: onValueChanged valueRef
, autoFocus: false
, autoFocus: false
, className: "form-control"
, className: "form-control"
, defaultValue: R.readRef valueRef
, defaultValue: R.readRef valueRef
, placeholder: "Your query here"
, placeholder: "Your query here"
, type: "text" }
, type: "text" }
]
]
-- pure $
-- pure $
-- H.div { className : "" }
-- H.div { className : "" }
...
@@ -442,7 +445,8 @@ submitButtonComponent = here.component "submitButton" cpt
...
@@ -442,7 +445,8 @@ submitButtonComponent = here.component "submitButton" cpt
, "type" : "button"
, "type" : "button"
, on : { click: doSearch onSearch errors session search' }
, on : { click: doSearch onSearch errors session search' }
, style : { width: "100%" }
, style : { width: "100%" }
} [ H.text "Launch Search" ]
}
[ H.text "Launch Search" ]
doSearch os errors s q = \_ -> do
doSearch os errors s q = \_ -> do
log2 "[submitButton] searching" q
log2 "[submitButton] searching" q
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Share.purs
View file @
e8891f6a
...
@@ -13,8 +13,8 @@ import Toestand as T
...
@@ -13,8 +13,8 @@ import Toestand as T
import Gargantext.Prelude
import Gargantext.Prelude
import Gargantext.Components.Forest.Tree.Node.Action (Action)
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action)
import Gargantext.Components.Forest.Tree.Node.Action as Action
import Gargantext.Components.Forest.Tree.Node.Action
.Types
as Action
import Gargantext.Components.Forest.Tree.Node.Tools as Tools
import Gargantext.Components.Forest.Tree.Node.Tools as Tools
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree (subTreeView, SubTreeParamsIn)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Types.purs
0 → 100644
View file @
e8891f6a
module Gargantext.Components.Forest.Tree.Node.Action.Types where
import Gargantext.Prelude
import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe)
import Gargantext.Components.Forest.Tree.Node.Action.Contact.Types (AddContactParams)
import Gargantext.Components.Forest.Tree.Node.Action.Update.Types (UpdateNodeParams)
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType, UploadFileBlob)
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeOut)
import Gargantext.Components.ListSelection.Types (Selection)
import Gargantext.Types as GT
data Action = AddNode String GT.NodeType
| DeleteNode GT.NodeType
| RenameNode String
| UpdateNode UpdateNodeParams
| DoSearch GT.AsyncTaskWithType
| UploadFile GT.NodeType FileType (Maybe String) String Selection
| UploadArbitraryFile (Maybe String) UploadFileBlob Selection
| DownloadNode
| RefreshTree
| ClosePopover
| ShareTeam String
| AddContact AddContactParams
| SharePublic {params :: Maybe SubTreeOut}
| MoveNode {params :: Maybe SubTreeOut}
| MergeNode {params :: Maybe SubTreeOut}
| LinkNode {nodeType :: Maybe GT.NodeType, params :: Maybe SubTreeOut}
| NoAction
derive instance Generic Action _
instance Eq Action where
eq (AddNode s1 nt1) (AddNode s2 nt2) = (eq s1 s2) && (eq nt1 nt2)
eq (DeleteNode nt1) (DeleteNode nt2) = eq nt1 nt2
eq (RenameNode s1) (RenameNode s2) = eq s1 s2
eq (UpdateNode un1) (UpdateNode un2) = eq un1 un2
eq (DoSearch at1) (DoSearch at2) = eq at1 at2
eq (UploadFile nt1 ft1 s1 _ _) (UploadFile nt2 ft2 s2 _ _) =
(eq nt1 nt2) && (eq ft1 ft2) && (eq s1 s2)
eq (UploadArbitraryFile s1 _ _) (UploadArbitraryFile s2 _ _) = eq s1 s2
eq DownloadNode DownloadNode = true
eq RefreshTree RefreshTree = true
eq ClosePopover ClosePopover = true
eq (ShareTeam s1) (ShareTeam s2) = eq s1 s2
eq (AddContact ac1) (AddContact ac2) = eq ac1 ac2
eq (SharePublic p1) (SharePublic p2) = eq p1 p2
eq (MoveNode p1) (MoveNode p2) = eq p1 p2
eq (MergeNode p1) (MergeNode p2) = eq p1 p2
eq (LinkNode l1) (LinkNode l2) = eq l1 l2
eq NoAction NoAction = true
eq _ _ = false
instance Show Action where
show (AddNode _ _ ) = "AddNode"
show (DeleteNode _ ) = "DeleteNode"
show (RenameNode _ ) = "RenameNode"
show (UpdateNode _ ) = "UpdateNode"
show (ShareTeam _ ) = "ShareTeam"
show (AddContact _ ) = "AddContact"
show (SharePublic _ ) = "SharePublic"
show (DoSearch _ ) = "SearchQuery"
show (UploadFile _ _ _ _ _) = "UploadFile"
show (UploadArbitraryFile _ _ _) = "UploadArbitraryFile"
show RefreshTree = "RefreshTree"
show ClosePopover = "ClosePopover"
show DownloadNode = "Download"
show (MoveNode _ ) = "MoveNode"
show (MergeNode _ ) = "MergeNode"
show (LinkNode _ ) = "LinkNode"
show NoAction = "NoAction"
src/Gargantext/Components/Forest/Tree/Node/Action/Update.purs
View file @
e8891f6a
...
@@ -9,7 +9,7 @@ import Toestand as T
...
@@ -9,7 +9,7 @@ import Toestand as T
import Gargantext.Prelude
import Gargantext.Prelude
import Gargantext.Components.Forest.Tree.Node.Action (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Update.Types
import Gargantext.Components.Forest.Tree.Node.Action.Update.Types
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe, submitButton, panel)
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe, submitButton, panel)
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
...
...
src/Gargantext/Components/Forest/Tree/Node/Action/Upload.purs
View file @
e8891f6a
...
@@ -14,11 +14,14 @@ import Data.Tuple.Nested ((/\))
...
@@ -14,11 +14,14 @@ import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff, launchAff)
import Effect.Aff (Aff, launchAff)
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Gargantext.Components.Forest.Tree.Node.Action (Action(..), Props)
import Gargantext.Components.Forest.Tree.Node.Action (Props)
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action(..))
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType(..), UploadFileBlob(..), readUFBAsText)
import Gargantext.Components.Forest.Tree.Node.Action.Upload.Types (FileType(..), UploadFileBlob(..), readUFBAsText)
import Gargantext.Components.Forest.Tree.Node.Tools (fragmentPT, formChoiceSafe, panel)
import Gargantext.Components.Forest.Tree.Node.Tools (fragmentPT, formChoiceSafe, panel)
import Gargantext.Components.Lang (Lang(..))
import Gargantext.Components.Lang (Lang(..))
import Gargantext.Components.ListSelection as ListSelection
import Gargantext.Components.ListSelection as ListSelection
import Gargantext.Components.ListSelection.Types (Selection(..))
import Gargantext.Components.ListSelection.Types as ListSelection
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
import Gargantext.Routes as GR
import Gargantext.Routes as GR
import Gargantext.Sessions (Session(..), postWwwUrlencoded)
import Gargantext.Sessions (Session(..), postWwwUrlencoded)
...
@@ -137,9 +140,9 @@ uploadFileViewCpt = here.component "uploadFileView" cpt
...
@@ -137,9 +140,9 @@ uploadFileViewCpt = here.component "uploadFileView" cpt
let footer = H.div {} [ uploadButton { dispatch
let footer = H.div {} [ uploadButton { dispatch
, fileType
, fileType
, lang
, lang
, id
, mFile
, mFile
, nodeType
, nodeType
, selection
}
}
]
]
pure $ panel bodies footer
pure $ panel bodies footer
...
@@ -159,12 +162,12 @@ uploadFileViewCpt = here.component "uploadFileView" cpt
...
@@ -159,12 +162,12 @@ uploadFileViewCpt = here.component "uploadFileView" cpt
type UploadButtonProps =
type UploadButtonProps =
( dispatch :: Action -> Aff Unit
( dispatch
:: Action -> Aff Unit
, fileType :: T.Box FileType
, fileType
:: T.Box FileType
,
id :: GT.ID
,
lang :: T.Box Lang
,
lang :: T.Box Lang
,
mFile :: T.Box (Maybe UploadFile)
,
mFile :: T.Box (Maybe UploadFile)
,
nodeType :: GT.NodeType
,
nodeType :: GT.NodeType
,
selection :: T.Box ListSelection.Selection
)
)
uploadButton :: Record UploadButtonProps -> R.Element
uploadButton :: Record UploadButtonProps -> R.Element
...
@@ -174,13 +177,14 @@ uploadButtonCpt = here.component "uploadButton" cpt
...
@@ -174,13 +177,14 @@ uploadButtonCpt = here.component "uploadButton" cpt
where
where
cpt { dispatch
cpt { dispatch
, fileType
, fileType
, id
, lang
, lang
, mFile
, mFile
, nodeType
, nodeType
, selection
} _ = do
} _ = do
fileType' <- T.useLive T.unequal fileType
fileType' <- T.useLive T.unequal fileType
mFile' <- T.useLive T.unequal mFile
mFile' <- T.useLive T.unequal mFile
selection' <- T.useLive T.unequal selection
let disabled = case mFile' of
let disabled = case mFile' of
Nothing -> "1"
Nothing -> "1"
...
@@ -190,19 +194,19 @@ uploadButtonCpt = here.component "uploadButton" cpt
...
@@ -190,19 +194,19 @@ uploadButtonCpt = here.component "uploadButton" cpt
, "type" : "button"
, "type" : "button"
, disabled
, disabled
, style : { width: "100%" }
, style : { width: "100%" }
, on: {
click: onClick fileType' mFile'
}
, on: {
click: onClick fileType' mFile' selection'
}
} [ H.text "Upload" ]
} [ H.text "Upload" ]
where
where
onClick fileType' mFile' e = do
onClick fileType' mFile'
selection'
e = do
let { blob, name } = unsafePartial $ fromJust mFile'
let { blob, name } = unsafePartial $ fromJust mFile'
here.log2 "[uploadButton] fileType" fileType'
here.log2 "[uploadButton] fileType" fileType'
void $ launchAff do
void $ launchAff do
case fileType' of
case fileType' of
Arbitrary ->
Arbitrary ->
dispatch $ UploadArbitraryFile (Just name) blob
dispatch $ UploadArbitraryFile (Just name) blob
selection'
_ -> do
_ -> do
contents <- readUFBAsText blob
contents <- readUFBAsText blob
dispatch $ UploadFile nodeType fileType' (Just name) contents
dispatch $ UploadFile nodeType fileType' (Just name) contents
selection'
liftEffect $ do
liftEffect $ do
T.write_ Nothing mFile
T.write_ Nothing mFile
T.write_ CSV fileType
T.write_ CSV fileType
...
@@ -289,7 +293,7 @@ fileTypeViewCpt = here.component "fileTypeView" cpt
...
@@ -289,7 +293,7 @@ fileTypeViewCpt = here.component "fileTypeView" cpt
T.write_ Nothing droppedFile
T.write_ Nothing droppedFile
launchAff $ do
launchAff $ do
contents <- readUFBAsText blob
contents <- readUFBAsText blob
dispatch $ UploadFile nodeType ft Nothing contents
dispatch $ UploadFile nodeType ft Nothing contents
(SelectedLists [])
}
}
} [H.text "Upload"]
} [H.text "Upload"]
Nothing ->
Nothing ->
...
@@ -310,12 +314,13 @@ instance GT.ToQuery FileUploadQuery where
...
@@ -310,12 +314,13 @@ instance GT.ToQuery FileUploadQuery where
where pair :: forall a. Show a => String -> a -> Array (Tuple QP.Key (Maybe QP.Value))
where pair :: forall a. Show a => String -> a -> Array (Tuple QP.Key (Maybe QP.Value))
pair k v = [ QP.keyFromString k /\ (Just $ QP.valueFromString $ show v) ]
pair k v = [ QP.keyFromString k /\ (Just $ QP.valueFromString $ show v) ]
uploadFile :: { contents :: String
uploadFile :: { contents :: String
, fileType :: FileType
, fileType :: FileType
, id :: ID
, id :: ID
, nodeType :: GT.NodeType
, nodeType :: GT.NodeType
, mName :: Maybe String
, mName :: Maybe String
, session :: Session }
, selection :: ListSelection.Selection
, session :: Session }
-> Aff (Either RESTError GT.AsyncTaskWithType)
-> Aff (Either RESTError GT.AsyncTaskWithType)
{-
{-
uploadFile session NodeList id JSON { mName, contents } = do
uploadFile session NodeList id JSON { mName, contents } = do
...
@@ -357,8 +362,9 @@ uploadFile { contents, fileType, id, nodeType, mName, session } = do
...
@@ -357,8 +362,9 @@ uploadFile { contents, fileType, id, nodeType, mName, session } = do
uploadArbitraryFile :: Session
uploadArbitraryFile :: Session
-> ID
-> ID
-> {blob :: UploadFileBlob, mName :: Maybe String}
-> {blob :: UploadFileBlob, mName :: Maybe String}
-> ListSelection.Selection
-> Aff (Either RESTError GT.AsyncTaskWithType)
-> Aff (Either RESTError GT.AsyncTaskWithType)
uploadArbitraryFile session id {mName, blob: UploadFileBlob blob} = do
uploadArbitraryFile session id {mName, blob: UploadFileBlob blob}
selection
= do
contents <- readAsDataURL blob
contents <- readAsDataURL blob
uploadArbitraryDataURL session id mName contents
uploadArbitraryDataURL session id mName contents
...
@@ -475,6 +481,6 @@ uploadTermButtonCpt = here.component "uploadTermButton" cpt
...
@@ -475,6 +481,6 @@ uploadTermButtonCpt = here.component "uploadTermButton" cpt
let {name, blob} = unsafePartial $ fromJust mFile'
let {name, blob} = unsafePartial $ fromJust mFile'
void $ launchAff do
void $ launchAff do
contents <- readUFBAsText blob
contents <- readUFBAsText blob
_ <- dispatch $ UploadFile nodeType uploadType' (Just name) contents
_ <- dispatch $ UploadFile nodeType uploadType' (Just name) contents
(SelectedLists [])
liftEffect $ do
liftEffect $ do
T.write_ Nothing mFile
T.write_ Nothing mFile
src/Gargantext/Components/Forest/Tree/Node/Box.purs
View file @
e8891f6a
...
@@ -6,7 +6,6 @@ import Data.Array as A
...
@@ -6,7 +6,6 @@ import Data.Array as A
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action)
import Gargantext.Components.Forest.Tree.Node.Action.Add (NodePopup(..), addNodeView)
import Gargantext.Components.Forest.Tree.Node.Action.Add (NodePopup(..), addNodeView)
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Contact as Contact
import Gargantext.Components.Forest.Tree.Node.Action.Delete (actionDelete)
import Gargantext.Components.Forest.Tree.Node.Action.Delete (actionDelete)
...
@@ -18,6 +17,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNode)
...
@@ -18,6 +17,7 @@ import Gargantext.Components.Forest.Tree.Node.Action.Move (moveNode)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (renameAction)
import Gargantext.Components.Forest.Tree.Node.Action.Rename (renameAction)
import Gargantext.Components.Forest.Tree.Node.Action.Search (actionSearch)
import Gargantext.Components.Forest.Tree.Node.Action.Search (actionSearch)
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Share as Share
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action)
import Gargantext.Components.Forest.Tree.Node.Action.Update (update)
import Gargantext.Components.Forest.Tree.Node.Action.Update (update)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (actionUpload)
import Gargantext.Components.Forest.Tree.Node.Action.Upload (actionUpload)
import Gargantext.Components.Forest.Tree.Node.Box.Types (NodePopupProps, NodePopupS)
import Gargantext.Components.Forest.Tree.Node.Box.Types (NodePopupProps, NodePopupS)
...
...
src/Gargantext/Components/Forest/Tree/Node/Box/Types.purs
View file @
e8891f6a
...
@@ -5,7 +5,7 @@ import Data.Maybe (Maybe)
...
@@ -5,7 +5,7 @@ import Data.Maybe (Maybe)
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action)
import Gargantext.Components.Forest.Tree.Node.Action
.Types
(Action)
import Gargantext.Components.Forest.Tree.Node.Settings (NodeAction)
import Gargantext.Components.Forest.Tree.Node.Settings (NodeAction)
import Gargantext.Prelude (Unit)
import Gargantext.Prelude (Unit)
import Gargantext.Sessions (Session)
import Gargantext.Sessions (Session)
...
...
src/Gargantext/Components/Forest/Tree/Node/Tools.purs
View file @
e8891f6a
...
@@ -9,7 +9,8 @@ import Data.String.CodeUnits as DSCU
...
@@ -9,7 +9,8 @@ import Data.String.CodeUnits as DSCU
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff, launchAff, launchAff_)
import Effect.Aff (Aff, launchAff, launchAff_)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Action, icon, text)
import Gargantext.Components.Forest.Tree.Node.Action (icon, text)
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action)
import Gargantext.Components.InputWithEnter (inputWithEnter)
import Gargantext.Components.InputWithEnter (inputWithEnter)
import Gargantext.Ends (Frontends, url)
import Gargantext.Ends (Frontends, url)
import Gargantext.Prelude (class Ord, class Read, class Show, Unit, bind, const, discard, map, not, pure, read, show, when, mempty, ($), (<), (<<<), (<>), (<$>), (<*>))
import Gargantext.Prelude (class Ord, class Read, class Show, Unit, bind, const, discard, map, not, pure, read, show, when, mempty, ($), (<), (<<<), (<>), (<$>), (<*>))
...
...
src/Gargantext/Components/Forest/Tree/Node/Tools/SubTree.purs
View file @
e8891f6a
...
@@ -7,7 +7,8 @@ import Data.Either (Either)
...
@@ -7,7 +7,8 @@ import Data.Either (Either)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.Forest.Tree.Node.Action (Props, Action, subTreeOut, setTreeOut)
import Gargantext.Components.Forest.Tree.Node.Action (Props, subTreeOut, setTreeOut)
import Gargantext.Components.Forest.Tree.Node.Action.Types (Action)
import Gargantext.Components.Forest.Tree.Node.Tools (nodeText)
import Gargantext.Components.Forest.Tree.Node.Tools (nodeText)
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..))
import Gargantext.Components.Forest.Tree.Node.Tools.FTree (FTree, LNode(..), NTree(..))
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeParams(..), SubTreeOut(..))
import Gargantext.Components.Forest.Tree.Node.Tools.SubTree.Types (SubTreeParams(..), SubTreeOut(..))
...
...
src/Gargantext/Components/Forest/Tree/Node/Tools/Sync.purs
View file @
e8891f6a
module Gargantext.Components.Forest.Tree.Node.Tools.Sync where
module Gargantext.Components.Forest.Tree.Node.Tools.Sync where
import Gargantext.Prelude
import Gargantext.Prelude
( Unit, bind,
const,
discard, pure, unit, ($), (<>), (==) )
( Unit, bind, discard, pure, unit, ($), (<>), (==) )
import Effect.Aff (Aff, launchAff_)
import Effect.Aff (Aff, launchAff_)
import Data.Tuple.Nested ((/\))
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Data.Tuple (fst)
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Reactix as R
import Reactix as R
...
@@ -69,7 +67,7 @@ graphUpdateButtonCpt = here.component "graphUpdateButton" cpt
...
@@ -69,7 +67,7 @@ graphUpdateButtonCpt = here.component "graphUpdateButton" cpt
onClick true enabled = do
onClick true enabled = do
launchAff_ $ do
launchAff_ $ do
liftEffect $ T.write_ false enabled
liftEffect $ T.write_ false enabled
g <- GraphAPI.updateGraphVersions { graphId: id, session }
_
g <- GraphAPI.updateGraphVersions { graphId: id, session }
liftEffect $ T.write_ true enabled
liftEffect $ T.write_ true enabled
refresh unit
refresh unit
pure unit
pure unit
...
@@ -105,7 +103,6 @@ type NodeListUpdateButtonProps =
...
@@ -105,7 +103,6 @@ type NodeListUpdateButtonProps =
nodeListUpdateButton :: Record NodeListUpdateButtonProps -> R.Element
nodeListUpdateButton :: Record NodeListUpdateButtonProps -> R.Element
nodeListUpdateButton p = R.createElement nodeListUpdateButtonCpt p []
nodeListUpdateButton p = R.createElement nodeListUpdateButtonCpt p []
nodeListUpdateButtonCpt :: R.Component NodeListUpdateButtonProps
nodeListUpdateButtonCpt :: R.Component NodeListUpdateButtonProps
nodeListUpdateButtonCpt = here.component "nodeListUpdateButton" cpt
nodeListUpdateButtonCpt = here.component "nodeListUpdateButton" cpt
where
where
...
...
src/Gargantext/Components/GraphExplorer/API.purs
View file @
e8891f6a
...
@@ -2,7 +2,7 @@ module Gargantext.Components.GraphExplorer.API where
...
@@ -2,7 +2,7 @@ module Gargantext.Components.GraphExplorer.API where
import Gargantext.Prelude
import Gargantext.Prelude
import Data.Either (Either
(..)
)
import Data.Either (Either)
import Data.Maybe (Maybe)
import Data.Maybe (Maybe)
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Gargantext.Components.GraphExplorer.Types as GET
import Gargantext.Components.GraphExplorer.Types as GET
...
...
src/Gargantext/Components/GraphExplorer/Button.purs
View file @
e8891f6a
...
@@ -21,7 +21,6 @@ import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadArbitraryData
...
@@ -21,7 +21,6 @@ import Gargantext.Components.Forest.Tree.Node.Action.Upload (uploadArbitraryData
import Gargantext.Components.GraphExplorer.API (cloneGraph)
import Gargantext.Components.GraphExplorer.API (cloneGraph)
import Gargantext.Components.GraphExplorer.Types as GET
import Gargantext.Components.GraphExplorer.Types as GET
import Gargantext.Components.GraphExplorer.Utils as GEU
import Gargantext.Components.GraphExplorer.Utils as GEU
import Gargantext.Config.REST (RESTError)
import Gargantext.Hooks.Sigmax as Sigmax
import Gargantext.Hooks.Sigmax as Sigmax
import Gargantext.Hooks.Sigmax.Sigma as Sigma
import Gargantext.Hooks.Sigmax.Sigma as Sigma
import Gargantext.Sessions (Session)
import Gargantext.Sessions (Session)
...
...
src/Gargantext/Components/ListSelection.purs
View file @
e8891f6a
...
@@ -2,45 +2,24 @@ module Gargantext.Components.ListSelection where
...
@@ -2,45 +2,24 @@ module Gargantext.Components.ListSelection where
import Gargantext.Prelude
import Gargantext.Prelude
import Control.Bind ((=<<))
import Data.Array as A
import Data.Array as A
import Data.Either (Either)
import Data.Either (Either)
import Data.Eq.Generic (genericEq)
import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype)
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe)
import Gargantext.Components.Forest.Tree.Node.Tools (formChoiceSafe)
import Gargantext.Components.ListSelection.Types (NodeSimple(..), Selection(..), selectedListIds)
import Gargantext.Config.REST (RESTError(..), AffRESTError)
import Gargantext.Config.REST (RESTError(..), AffRESTError)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Sessions (Session(..), get)
import Gargantext.Sessions (Session(..), get)
import Gargantext.Types (ID,
ListId,
NodeType(..), fldr)
import Gargantext.Types (ID, NodeType(..), fldr)
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Reactix as R2
import Reactix as R
import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Simple.JSON as JSON
import Toestand as T
import Toestand as T
here :: R2.Here
here :: R2.Here
here = R2.here "Gargantext.Components.ListSelection"
here = R2.here "Gargantext.Components.ListSelection"
data Selection = MyListsFirst | OtherListsFirst | SelectedLists (Array ListId)
derive instance Generic Selection _
instance Show Selection where
show MyListsFirst = "My lists first"
show OtherListsFirst = "Other lists first"
show (SelectedLists _) = "Selected lists"
instance Eq Selection where eq = genericEq
instance Read Selection where
read "My lists first" = Just MyListsFirst
read "Other lists first" = Just OtherListsFirst
read "Selected lists" = Just $ SelectedLists []
read _ = Nothing
selectedListIds :: Selection -> Array ListId
selectedListIds (SelectedLists ids) = ids
selectedListIds _ = []
type Props =
type Props =
( selection :: T.Box Selection
( selection :: T.Box Selection
, session :: Session
, session :: Session
...
@@ -91,25 +70,6 @@ listIdsRoute = Children NodeList 0 1 Nothing <<< Just
...
@@ -91,25 +70,6 @@ listIdsRoute = Children NodeList 0 1 Nothing <<< Just
treeFirstLevelRoute :: ID -> SessionRoute
treeFirstLevelRoute :: ID -> SessionRoute
treeFirstLevelRoute id = TreeFirstLevel (Just id) ""
treeFirstLevelRoute id = TreeFirstLevel (Just id) ""
-- A simplified data structure (we don't want the full-blown (NodePoly
-- a), we care only about Corpus and NodeList node types, with id,
-- name and that's all).
newtype NodeSimple =
NodeSimple { id :: ID
, name :: String
, nodeType :: NodeType }
derive instance Generic NodeSimple _
derive instance Newtype NodeSimple _
derive instance Eq NodeSimple
instance JSON.ReadForeign NodeSimple where
readImpl f = do
{ node } :: { node :: { id :: ID
, name :: String
, type :: NodeType } } <- JSON.read' f
pure $ NodeSimple { id: node.id
, name: node.name
, nodeType: node.type }
loadTreeChildren :: { root :: ID, session :: Session } -> AffRESTError (Array NodeSimple)
loadTreeChildren :: { root :: ID, session :: Session } -> AffRESTError (Array NodeSimple)
loadTreeChildren { root, session } = do
loadTreeChildren { root, session } = do
eResult :: (Either RESTError { children :: Array NodeSimple }) <- get session $ treeFirstLevelRoute root
eResult :: (Either RESTError { children :: Array NodeSimple }) <- get session $ treeFirstLevelRoute root
...
...
src/Gargantext/Components/ListSelection/Types.purs
0 → 100644
View file @
e8891f6a
module Gargantext.Components.ListSelection.Types where
import Gargantext.Prelude
import Data.Eq.Generic (genericEq)
import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe(..))
import Data.Newtype (class Newtype)
import Gargantext.Types (ID, ListId, NodeType)
import Simple.JSON as JSON
data Selection = MyListsFirst | OtherListsFirst | SelectedLists (Array ListId)
derive instance Generic Selection _
instance Show Selection where
show MyListsFirst = "My lists first"
show OtherListsFirst = "Other lists first"
show (SelectedLists _) = "Selected lists"
instance Eq Selection where eq = genericEq
instance Read Selection where
read "My lists first" = Just MyListsFirst
read "Other lists first" = Just OtherListsFirst
read "Selected lists" = Just $ SelectedLists []
read _ = Nothing
selectedListIds :: Selection -> Array ListId
selectedListIds (SelectedLists ids) = ids
selectedListIds _ = []
----------------------
-- A simplified data structure (we don't want the full-blown (NodePoly
-- a), we care only about Corpus and NodeList node types, with id,
-- name and that's all).
newtype NodeSimple =
NodeSimple { id :: ID
, name :: String
, nodeType :: NodeType }
derive instance Generic NodeSimple _
derive instance Newtype NodeSimple _
derive instance Eq NodeSimple
instance JSON.ReadForeign NodeSimple where
readImpl f = do
{ node } :: { node :: { id :: ID
, name :: String
, type :: NodeType } } <- JSON.read' f
pure $ NodeSimple { id: node.id
, name: node.name
, nodeType: node.type }
src/Gargantext/Components/NgramsTable.purs
View file @
e8891f6a
...
@@ -35,7 +35,7 @@ import Gargantext.Components.Nodes.Lists.Types as NT
...
@@ -35,7 +35,7 @@ import Gargantext.Components.Nodes.Lists.Types as NT
import Gargantext.Components.Table as TT
import Gargantext.Components.Table as TT
import Gargantext.Components.Table.Types as TT
import Gargantext.Components.Table.Types as TT
import Gargantext.Config.REST (RESTError)
import Gargantext.Config.REST (RESTError)
import Gargantext.Hooks.Loader (useLoader
, useLoader
Box)
import Gargantext.Hooks.Loader (useLoaderBox)
import Gargantext.Routes (SessionRoute(..)) as R
import Gargantext.Routes (SessionRoute(..)) as R
import Gargantext.Sessions (Session, get)
import Gargantext.Sessions (Session, get)
import Gargantext.Types (CTabNgramType, OrderBy(..), SearchQuery, TabType, TermList(..), TermSize, termLists, termSizes)
import Gargantext.Types (CTabNgramType, OrderBy(..), SearchQuery, TabType, TermList(..), TermSize, termLists, termSizes)
...
@@ -379,14 +379,14 @@ loadedNgramsTableBodyCpt = here.component "loadedNgramsTableBody" cpt where
...
@@ -379,14 +379,14 @@ loadedNgramsTableBodyCpt = here.component "loadedNgramsTableBody" cpt where
, performAction: performAction <<< CoreAction }
, performAction: performAction <<< CoreAction }
-- autoUpdate :: Array R.Element
-- autoUpdate :: Array R.Element
autoUpdate path' = if withAutoUpdate then
--
autoUpdate path' = if withAutoUpdate then
[ R2.buff
--
[ R2.buff
$ autoUpdateElt
--
$ autoUpdateElt
{ duration: 5000
--
{ duration: 5000
, effect: performAction $ CoreAction $ Synchronize { afterSync: afterSync' }
--
, effect: performAction $ CoreAction $ Synchronize { afterSync: afterSync' }
}
--
}
]
--
]
else []
--
else []
ngramsParentRoot :: Maybe NgramsTerm
ngramsParentRoot :: Maybe NgramsTerm
ngramsParentRoot =
ngramsParentRoot =
...
@@ -595,7 +595,7 @@ mainNgramsTableCacheOnCpt = here.component "mainNgramsTableCacheOn" cpt where
...
@@ -595,7 +595,7 @@ mainNgramsTableCacheOnCpt = here.component "mainNgramsTableCacheOn" cpt where
handleResponse v = v
handleResponse v = v
mainNgramsTableCacheOff :: R2.Component MainNgramsTableProps
mainNgramsTableCacheOff :: R2.Component MainNgramsTableProps
mainNgramsTableCacheOff = R.createElement mainNgramsTableCacheO
n
Cpt
mainNgramsTableCacheOff = R.createElement mainNgramsTableCacheO
ff
Cpt
mainNgramsTableCacheOffCpt :: R.Component MainNgramsTableProps
mainNgramsTableCacheOffCpt :: R.Component MainNgramsTableProps
mainNgramsTableCacheOffCpt = here.component "mainNgramsTableCacheOff" cpt where
mainNgramsTableCacheOffCpt = here.component "mainNgramsTableCacheOff" cpt where
cpt { afterSync
cpt { afterSync
...
...
src/Gargantext/Components/NgramsTable/Components.purs
View file @
e8891f6a
...
@@ -11,11 +11,10 @@ import Data.Set (Set)
...
@@ -11,11 +11,10 @@ import Data.Set (Set)
import Data.Set as Set
import Data.Set as Set
import Effect (Effect)
import Effect (Effect)
import FFI.Simple (delay)
import FFI.Simple (delay)
import Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField (searchQuery)
import Gargantext.Components.NgramsTable.Core (Action(..), Dispatch, NgramsElement, NgramsTable, NgramsTablePatch, NgramsTerm, _NgramsElement, _NgramsRepoElement, _PatchMap, _children, _list, _ngrams, _occurrences, ngramsTermText, replace, setTermListA)
import Gargantext.Components.NgramsTable.Core (Action(..), Dispatch, NgramsElement, NgramsTable, NgramsTablePatch, NgramsTerm, _NgramsElement, _NgramsRepoElement, _PatchMap, _children, _list, _ngrams, _occurrences, ngramsTermText, replace, setTermListA)
import Gargantext.Components.Table as Tbl
import Gargantext.Components.Table as Tbl
import Gargantext.Prelude (Unit, bind, const, discard, map, not, otherwise, pure, show, unit, ($), (+), (/=), (<<<), (<>), (==), (>), (||))
import Gargantext.Prelude (Unit, bind, const, discard, map, not, otherwise, pure, show, unit, ($), (+), (/=), (<<<), (<>), (==), (>), (||))
import Gargantext.Types as T
import Gargantext.Types as
G
T
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Reactix as R2
import React.DOM (a, span, text)
import React.DOM (a, span, text)
import React.DOM.Props as DOM
import React.DOM.Props as DOM
...
@@ -241,8 +240,8 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
...
@@ -241,8 +240,8 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
, on: { click: onClick } } []
, on: { click: onClick } } []
]
]
, selected
, selected
, checkbox T.MapTerm
, checkbox
G
T.MapTerm
, checkbox T.StopTerm
, checkbox
G
T.StopTerm
, H.div {} ( if ngramsParent == Nothing
, H.div {} ( if ngramsParent == Nothing
then [renderNgramsTree { ngramsTable, ngrams, ngramsStyle, ngramsClick, ngramsEdit }]
then [renderNgramsTree { ngramsTable, ngrams, ngramsStyle, ngramsClick, ngramsEdit }]
else [H.a { on: { click: const $ dispatch $ ToggleChild true ngrams } }
else [H.a { on: { click: const $ dispatch $ ToggleChild true ngrams } }
...
@@ -283,7 +282,7 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
...
@@ -283,7 +282,7 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
}
}
checkbox termList' =
checkbox termList' =
let chkd = termList == termList'
let chkd = termList == termList'
termList'' = if chkd then T.CandidateTerm else termList'
termList'' = if chkd then
G
T.CandidateTerm else termList'
in
in
H.input { checked: chkd
H.input { checked: chkd
, className: "checkbox"
, className: "checkbox"
...
@@ -300,18 +299,18 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
...
@@ -300,18 +299,18 @@ renderNgramsItemCpt = here.component "renderNgramsItem" cpt
cycleTermListItem n = setTermListA n (replace termList (nextTermList termList))
cycleTermListItem n = setTermListA n (replace termList (nextTermList termList))
termStyle :: T.TermList -> Number -> DOM.Props
termStyle ::
G
T.TermList -> Number -> DOM.Props
termStyle T.MapTerm opacity = DOM.style { color: "green", opacity }
termStyle
G
T.MapTerm opacity = DOM.style { color: "green", opacity }
termStyle T.StopTerm opacity = DOM.style { color: "red", opacity
termStyle
G
T.StopTerm opacity = DOM.style { color: "red", opacity
, textDecoration: "line-through" }
, textDecoration: "line-through" }
termStyle T.CandidateTerm opacity = DOM.style { color: "#767676", opacity }
termStyle
G
T.CandidateTerm opacity = DOM.style { color: "#767676", opacity }
tablePatchHasNgrams :: NgramsTablePatch -> NgramsTerm -> Boolean
tablePatchHasNgrams :: NgramsTablePatch -> NgramsTerm -> Boolean
tablePatchHasNgrams ngramsTablePatch ngrams =
tablePatchHasNgrams ngramsTablePatch ngrams =
isJust $ ngramsTablePatch.ngramsPatches ^. _PatchMap <<< at ngrams
isJust $ ngramsTablePatch.ngramsPatches ^. _PatchMap <<< at ngrams
nextTermList ::
T.TermList ->
T.TermList
nextTermList ::
GT.TermList -> G
T.TermList
nextTermList
T.MapTerm =
T.StopTerm
nextTermList
GT.MapTerm = G
T.StopTerm
nextTermList
T.StopTerm =
T.CandidateTerm
nextTermList
GT.StopTerm = G
T.CandidateTerm
nextTermList
T.CandidateTerm =
T.MapTerm
nextTermList
GT.CandidateTerm = G
T.MapTerm
src/Gargantext/Components/NgramsTable/Core.purs
View file @
e8891f6a
...
@@ -121,7 +121,7 @@ import Data.TraversableWithIndex (traverseWithIndex)
...
@@ -121,7 +121,7 @@ import Data.TraversableWithIndex (traverseWithIndex)
import Data.Tuple (Tuple(..))
import Data.Tuple (Tuple(..))
import Data.Tuple.Nested ((/\))
import Data.Tuple.Nested ((/\))
import Effect (Effect)
import Effect (Effect)
import Effect.Aff (Aff,
error,
launchAff_)
import Effect.Aff (Aff, launchAff_)
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Effect.Exception.Unsafe (unsafeThrow)
import Effect.Exception.Unsafe (unsafeThrow)
import FFI.Simple.Functions (delay)
import FFI.Simple.Functions (delay)
...
...
src/Gargantext/Components/Nodes/Annuaire/User/Contacts/Tabs.purs
View file @
e8891f6a
...
@@ -7,7 +7,6 @@ import Data.Generic.Rep (class Generic)
...
@@ -7,7 +7,6 @@ import Data.Generic.Rep (class Generic)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Data.Show.Generic (genericShow)
import Data.Show.Generic (genericShow)
import Data.Tuple.Nested ((/\))
import Data.Tuple.Nested ((/\))
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.DocsTable as DT
import Gargantext.Components.DocsTable as DT
import Gargantext.Components.DocsTable.Types (Year)
import Gargantext.Components.DocsTable.Types (Year)
...
@@ -19,9 +18,8 @@ import Gargantext.Components.Nodes.Texts.Types as TTypes
...
@@ -19,9 +18,8 @@ import Gargantext.Components.Nodes.Texts.Types as TTypes
import Gargantext.Components.Tab as Tab
import Gargantext.Components.Tab as Tab
import Gargantext.Ends (Frontends)
import Gargantext.Ends (Frontends)
import Gargantext.Sessions (Session)
import Gargantext.Sessions (Session)
import Gargantext.Types (CTabNgramType(..),
FrontendError, PTabNgramType(..), SidePanelState
, TabSubType(..), TabType(..))
import Gargantext.Types (CTabNgramType(..),
PTabNgramType(..)
, TabSubType(..), TabType(..))
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Toestand as T2
import Reactix as R
import Reactix as R
import Toestand as T
import Toestand as T
...
...
src/Gargantext/Components/Nodes/Corpus/Dashboard.purs
View file @
e8891f6a
...
@@ -15,7 +15,7 @@ import Gargantext.Components.Nodes.Types (FTFieldList(..), FTFieldsWithIndex(..)
...
@@ -15,7 +15,7 @@ import Gargantext.Components.Nodes.Types (FTFieldList(..), FTFieldsWithIndex(..)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Prelude (Unit, bind, discard, pure, read, show, unit, ($), (<$>), (<>), (==))
import Gargantext.Prelude (Unit, bind, discard, pure, read, show, unit, ($), (<$>), (<>), (==))
import Gargantext.Sessions (Session, sessionId)
import Gargantext.Sessions (Session, sessionId)
import Gargantext.Types (
FrontendError,
NodeID)
import Gargantext.Types (NodeID)
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 Reactix as R
import Reactix as R
...
...
src/Gargantext/Components/Nodes/Corpus/Document.purs
View file @
e8891f6a
module Gargantext.Components.Nodes.Corpus.Document where
module Gargantext.Components.Nodes.Corpus.Document where
--import Data.Argonaut (encodeJson) -- DEBUG
--import Data.Argonaut.Core (stringifyWithIndent) -- DEBUG
import Data.Either (Either(..))
import Data.Either (Either(..))
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Tuple (fst)
import Data.Tuple.Nested ((/\))
import Effect.Aff (Aff)
import Effect.Aff (Aff)
import Reactix as R
import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
...
@@ -34,10 +30,10 @@ here :: R2.Here
...
@@ -34,10 +30,10 @@ here :: R2.Here
here = R2.here "Gargantext.Components.Nodes.Corpus.Document"
here = R2.here "Gargantext.Components.Nodes.Corpus.Document"
publicationDate :: Document -> String
publicationDate :: Document -> String
publicationDate (Document
doc@
{publication_year: Nothing}) = ""
publicationDate (Document {publication_year: Nothing}) = ""
publicationDate (Document
doc@
{publication_year: Just py, publication_month: Nothing}) = U.zeroPad 2 py
publicationDate (Document {publication_year: Just py, publication_month: Nothing}) = U.zeroPad 2 py
publicationDate (Document
doc@
{publication_year: Just py, publication_month: Just pm, publication_day: Nothing}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm)
publicationDate (Document {publication_year: Just py, publication_month: Just pm, publication_day: Nothing}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm)
publicationDate (Document
doc@
{publication_year: Just py, publication_month: Just pm, publication_day: Just pd}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm) <> "-" <> (U.zeroPad 2 pd)
publicationDate (Document {publication_year: Just py, publication_month: Just pm, publication_day: Just pd}) = (U.zeroPad 2 py) <> "-" <> (U.zeroPad 2 pm) <> "-" <> (U.zeroPad 2 pd)
docViewWrapper :: R2.Component Props
docViewWrapper :: R2.Component Props
docViewWrapper = R.createElement docViewWrapperCpt
docViewWrapper = R.createElement docViewWrapperCpt
...
@@ -60,10 +56,10 @@ docViewCpt :: R.Component DocViewProps
...
@@ -60,10 +56,10 @@ docViewCpt :: R.Component DocViewProps
docViewCpt = here.component "docView" cpt
docViewCpt = here.component "docView" cpt
where
where
cpt { path
cpt { path
, loaded:
loaded@
{ ngramsTable: Versioned { data: initTable }, document }
, loaded: { ngramsTable: Versioned { data: initTable }, document }
, state
, state
} _children = do
} _children = do
state'@{ ngramsLocalPatch
, ngramsVersion: version
} <- T.useLive T.unequal state
state'@{ ngramsLocalPatch } <- T.useLive T.unequal state
let
let
afterSync = \_ -> pure unit
afterSync = \_ -> pure unit
...
...
src/Gargantext/Components/Nodes/Lists/Tabs.purs
View file @
e8891f6a
...
@@ -6,7 +6,6 @@ import Data.Array as A
...
@@ -6,7 +6,6 @@ import Data.Array as A
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Tuple.Nested ((/\))
import Data.Tuple.Nested ((/\))
import Effect.Class (liftEffect)
import Effect.Class (liftEffect)
import Gargantext.AsyncTasks as GAT
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.App.Data (Boxes)
import Gargantext.Components.NgramsTable as NT
import Gargantext.Components.NgramsTable as NT
import Gargantext.Components.NgramsTable.Core as NTC
import Gargantext.Components.NgramsTable.Core as NTC
...
@@ -18,7 +17,7 @@ import Gargantext.Components.Nodes.Corpus.Types (CorpusData)
...
@@ -18,7 +17,7 @@ import Gargantext.Components.Nodes.Corpus.Types (CorpusData)
import Gargantext.Components.Tab as Tab
import Gargantext.Components.Tab as Tab
import Gargantext.Prelude (bind, pure, unit, ($), (<>))
import Gargantext.Prelude (bind, pure, unit, ($), (<>))
import Gargantext.Sessions (Session)
import Gargantext.Sessions (Session)
import Gargantext.Types (CTabNgramType(..),
FrontendError,
Mode(..), TabSubType(..), TabType(..), modeTabType)
import Gargantext.Types (CTabNgramType(..), Mode(..), TabSubType(..), TabType(..), 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 Reactix as R
import Reactix as R
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment