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
88d50b7e
Commit
88d50b7e
authored
Nov 25, 2019
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev-contact' into dev
parents
bee8bd29
efd8673a
Changes
10
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
86 additions
and
64 deletions
+86
-64
App.purs
src/Gargantext/Components/App.purs
+7
-7
Annuaire.purs
src/Gargantext/Components/Nodes/Annuaire.purs
+39
-25
Tabs.purs
...gantext/Components/Nodes/Annuaire/User/Contacts/Tabs.purs
+4
-4
Types.purs
...antext/Components/Nodes/Annuaire/User/Contacts/Types.purs
+2
-1
Corpus.purs
src/Gargantext/Components/Nodes/Corpus.purs
+4
-5
Texts.purs
src/Gargantext/Components/Nodes/Texts.purs
+0
-1
Ends.purs
src/Gargantext/Ends.purs
+1
-0
Prelude.purs
src/Gargantext/Prelude.purs
+3
-1
Router.purs
src/Gargantext/Router.purs
+5
-2
Routes.purs
src/Gargantext/Routes.purs
+21
-18
No files found.
src/Gargantext/Components/App.purs
View file @
88d50b7e
...
@@ -63,9 +63,9 @@ appCpt = R.hooksComponent "G.C.App.app" cpt where
...
@@ -63,9 +63,9 @@ appCpt = R.hooksComponent "G.C.App.app" cpt where
Texts sid nodeId -> withSession sid $ \session -> forested $ textsLayout { nodeId, session, frontends }
Texts sid nodeId -> withSession sid $ \session -> forested $ textsLayout { nodeId, session, frontends }
Lists sid nodeId -> withSession sid $ \session -> forested $ listsLayout { nodeId, session }
Lists sid nodeId -> withSession sid $ \session -> forested $ listsLayout { nodeId, session }
Dashboard sid _nodeId -> withSession sid $ \session -> forested $ dashboardLayout {}
Dashboard sid _nodeId -> withSession sid $ \session -> forested $ dashboardLayout {}
Annuaire sid nodeId
-> withSession sid $ \session -> forested $ annuaireLayout {
nodeId, session }
Annuaire sid nodeId
-> withSession sid $ \session -> forested $ annuaireLayout { frontends,
nodeId, session }
UserPage sid nodeId -> withSession sid $ \session -> forested $ userLayout { frontends, nodeId, session }
UserPage sid nodeId -> withSession sid $ \session -> forested $ userLayout { frontends, nodeId, session }
ContactPage sid nodeId -> withSession sid $ \session -> forested $ userLayout { frontends, nodeId, session }
ContactPage sid
_aId
nodeId -> withSession sid $ \session -> forested $ userLayout { frontends, nodeId, session }
CorpusDocument sid corpusId listId nodeId ->
CorpusDocument sid corpusId listId nodeId ->
withSession sid $ \session -> forested $ documentLayout { nodeId, listId, session, corpusId: Just corpusId }
withSession sid $ \session -> forested $ documentLayout { nodeId, listId, session, corpusId: Just corpusId }
Document sid listId nodeId ->
Document sid listId nodeId ->
...
...
src/Gargantext/Components/Nodes/Annuaire.purs
View file @
88d50b7e
...
@@ -11,8 +11,9 @@ import Reactix as R
...
@@ -11,8 +11,9 @@ import Reactix as R
import Reactix.DOM.HTML as H
import Reactix.DOM.HTML as H
import Gargantext.Components.Nodes.Annuaire.User.Contacts.Types (Contact(..), HyperdataContact(..), ContactWhere(..))
import Gargantext.Components.Nodes.Annuaire.User.Contacts.Types (Contact(..), HyperdataContact(..), ContactWhere(..))
import Gargantext.Components.Table as T
import Gargantext.Components.Table as T
import Gargantext.Ends (url)
import Gargantext.Ends (url
, Frontends
)
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Routes (SessionRoute(..))
import Gargantext.Routes as Routes
import Gargantext.Sessions (Session, sessionId, get)
import Gargantext.Sessions (Session, sessionId, get)
import Gargantext.Types (NodePath(..), NodeType(..))
import Gargantext.Types (NodePath(..), NodeType(..))
import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Hooks.Loader (useLoader)
...
@@ -29,7 +30,7 @@ toRows (AnnuaireTable a) = a.annuaireTable
...
@@ -29,7 +30,7 @@ toRows (AnnuaireTable a) = a.annuaireTable
-- | Top level layout component. Loads an annuaire by id and renders
-- | Top level layout component. Loads an annuaire by id and renders
-- | the annuaire using the result
-- | the annuaire using the result
type LayoutProps = ( nodeId :: Int, session :: Session )
type LayoutProps = ( nodeId :: Int, session :: Session
, frontends :: Frontends
)
annuaireLayout :: Record LayoutProps -> R.Element
annuaireLayout :: Record LayoutProps -> R.Element
annuaireLayout props = R.createElement annuaireLayoutCpt props []
annuaireLayout props = R.createElement annuaireLayoutCpt props []
...
@@ -37,15 +38,17 @@ annuaireLayout props = R.createElement annuaireLayoutCpt props []
...
@@ -37,15 +38,17 @@ annuaireLayout props = R.createElement annuaireLayoutCpt props []
annuaireLayoutCpt :: R.Component LayoutProps
annuaireLayoutCpt :: R.Component LayoutProps
annuaireLayoutCpt = R.hooksComponent "G.P.Annuaire.annuaireLayout" cpt
annuaireLayoutCpt = R.hooksComponent "G.P.Annuaire.annuaireLayout" cpt
where
where
cpt {nodeId, session} _ = do
cpt {nodeId, session
, frontends
} _ = do
path <- R.useState' nodeId
path <- R.useState' nodeId
useLoader (fst path) (getAnnuaireInfo session) $
useLoader (fst path) (getAnnuaireInfo session) $
\info -> annuaire {session, path, info}
\info -> annuaire {session, path, info
, frontends
}
type AnnuaireProps =
type AnnuaireProps =
( session :: Session
( session :: Session
, path :: R.State Int
, path :: R.State Int
, info :: AnnuaireInfo )
, info :: AnnuaireInfo
, frontends :: Frontends
)
-- | Renders a basic table and the page loader
-- | Renders a basic table and the page loader
annuaire :: Record AnnuaireProps -> R.Element
annuaire :: Record AnnuaireProps -> R.Element
...
@@ -55,24 +58,29 @@ annuaire props = R.createElement annuaireCpt props []
...
@@ -55,24 +58,29 @@ annuaire props = R.createElement annuaireCpt props []
annuaireCpt :: R.Component AnnuaireProps
annuaireCpt :: R.Component AnnuaireProps
annuaireCpt = R.staticComponent "G.P.Annuaire.annuaire" cpt
annuaireCpt = R.staticComponent "G.P.Annuaire.annuaire" cpt
where
where
cpt {session, path, info: info@(AnnuaireInfo {name, date: date'})} _ = R.fragment
cpt {session, path, info: info@(AnnuaireInfo {name, date: date'})
, frontends
} _ = R.fragment
[ T.tableHeaderLayout headerProps
[ T.tableHeaderLayout headerProps
, H.p {} []
, H.p {} []
, H.div {className: "col-md-3"}
, H.div {className: "col-md-3"}
[ H.text " Filter ", H.input { className: "form-control", style } ]
[ H.text " Filter ", H.input { className: "form-control", style } ]
, H.br {}
, H.br {}
, pageLayout { info, session, annuairePath: path
} ]
, pageLayout { info, session, annuairePath: path
, frontends
} ]
where
where
headerProps = { title: name, desc: name, query: "", date, user: ""}
headerProps = { title: name, desc: name, query: "", date, user: ""}
date = "Last update: " <> date'
date = "Last update: " <> date'
style = {width: "250px", display: "inline-block"}
style = {width: "250px", display: "inline-block"}
type PagePath = { nodeId :: Int, params :: T.Params }
type PagePath = { nodeId :: Int
, params :: T.Params
, frontends :: Frontends
}
type PageLayoutProps =
type PageLayoutProps =
( session :: Session
( session :: Session
, annuairePath :: R.State Int
, annuairePath :: R.State Int
, info :: AnnuaireInfo )
, info :: AnnuaireInfo
, frontends :: Frontends
)
pageLayout :: Record PageLayoutProps -> R.Element
pageLayout :: Record PageLayoutProps -> R.Element
pageLayout props = R.createElement pageLayoutCpt props []
pageLayout props = R.createElement pageLayoutCpt props []
...
@@ -80,18 +88,19 @@ pageLayout props = R.createElement pageLayoutCpt props []
...
@@ -80,18 +88,19 @@ pageLayout props = R.createElement pageLayoutCpt props []
pageLayoutCpt :: R.Component PageLayoutProps
pageLayoutCpt :: R.Component PageLayoutProps
pageLayoutCpt = R.hooksComponent "G.P.Annuaire.pageLayout" cpt
pageLayoutCpt = R.hooksComponent "G.P.Annuaire.pageLayout" cpt
where
where
cpt {annuairePath, info, session} _ = do
cpt {annuairePath, info, session
, frontends
} _ = do
pagePath <- R.useState' (initialPagePath (fst annuairePath))
pagePath <- R.useState' (initialPagePath
frontends
(fst annuairePath))
useLoader (fst pagePath) (loadPage session) $
useLoader (fst pagePath) (loadPage session) $
\table -> page {session, table, pagePath, annuairePath}
\table -> page {session, table, pagePath, annuairePath}
initialPagePath
nodeId = {nodeId, params: T.initialParam
s}
initialPagePath
frontends nodeId = {nodeId, params: T.initialParams, frontend
s}
type PageProps =
type PageProps =
( session :: Session
( session :: Session
, annuairePath :: R.State Int
, annuairePath :: R.State Int
, pagePath :: R.State PagePath
, pagePath :: R.State PagePath
-- , info :: AnnuaireInfo
-- , info :: AnnuaireInfo
, table :: AnnuaireTable )
, table :: AnnuaireTable
)
page :: Record PageProps -> R.Element
page :: Record PageProps -> R.Element
page props = R.createElement pageCpt props []
page props = R.createElement pageCpt props []
...
@@ -100,26 +109,31 @@ pageCpt :: R.Component PageProps
...
@@ -100,26 +109,31 @@ pageCpt :: R.Component PageProps
pageCpt = R.staticComponent "LoadedAnnuairePage" cpt
pageCpt = R.staticComponent "LoadedAnnuairePage" cpt
where
where
cpt { session, annuairePath, pagePath
cpt { session, annuairePath, pagePath
, table: (AnnuaireTable {annuaireTable})
} _ = do
, table: (AnnuaireTable {annuaireTable})} _ = do
T.table { rows, params, container, colNames, totalRecords, wrapColElts }
T.table { rows, params, container, colNames, totalRecords, wrapColElts }
where
where
totalRecords = 4361 -- TODO
totalRecords = 4361 -- TODO
rows = (\c -> {row: contactCells session c, delete: false}) <$> annuaireTable
path = fst pagePath
rows = (\c -> {row: contactCells session path.frontends path.nodeId c, delete: false}) <$> annuaireTable
container = T.defaultContainer { title: "Annuaire" } -- TODO
container = T.defaultContainer { title: "Annuaire" } -- TODO
colNames = T.ColumnName <$> [ "", "Name", "Company", "Service", "Role"]
colNames = T.ColumnName <$> [ "", "Name", "Company", "Service", "Role"]
wrapColElts = const identity
wrapColElts = const identity
setParams f = snd pagePath $ \{nodeId, params: ps} ->
setParams f = snd pagePath $ \
pp@
{nodeId, params: ps} ->
{params: f ps, nodeId:
fst annuairePath}
pp {params = f ps, nodeId =
fst annuairePath}
params = T.initialParams /\ setParams
params = T.initialParams /\ setParams
contactCells :: Session -> Maybe Contact -> Array R.Element
type AnnuaireId = Int
contactCells session = maybe [] render
contactCells :: Session -> Frontends -> AnnuaireId -> Maybe Contact -> Array R.Element
contactCells session frontends aId = maybe [] render
where
where
render (Contact { id, hyperdata : (HyperdataContact contact@{who: who, ou:ou} ) }) =
render (Contact { id, hyperdata : (HyperdataContact contact@{who: who, ou:ou} ) }) =
let nodepath = NodePath (sessionId session) NodeContact (Just id)
--let nodepath = NodePath (sessionId session) NodeContact (Just id)
href = url session nodepath in
let nodepath = Routes.ContactPage (sessionId session) aId id
href = url frontends nodepath in
[ H.text ""
[ H.text ""
, H.a { href, target: "blank" } [ H.text $ maybe "name" identity contact.title ]
, H.a { href} [ H.text $ maybe "name" identity contact.title ]
--, H.a { href, target: "blank" } [ H.text $ maybe "name" identity contact.title ]
, H.text $ maybe "No ContactWhere" contactWhereOrg (head $ ou)
, H.text $ maybe "No ContactWhere" contactWhereOrg (head $ ou)
, H.text $ maybe "No ContactWhere" contactWhereDept (head $ ou)
, H.text $ maybe "No ContactWhere" contactWhereDept (head $ ou)
, H.div {className: "nooverflow"}
, H.div {className: "nooverflow"}
...
...
src/Gargantext/Components/Nodes/Annuaire/User/Contacts/Tabs.purs
View file @
88d50b7e
src/Gargantext/Components/Nodes/Annuaire/User/Contacts/Types.purs
View file @
88d50b7e
...
@@ -17,7 +17,8 @@ newtype Contact =
...
@@ -17,7 +17,8 @@ newtype Contact =
, parentId :: Maybe Int
, parentId :: Maybe Int
, name :: Maybe String
, name :: Maybe String
, date :: Maybe String
, date :: Maybe String
, hyperdata :: HyperdataContact }
, hyperdata :: HyperdataContact
}
derive instance newtypeContact :: Newtype Contact _
derive instance newtypeContact :: Newtype Contact _
...
...
src/Gargantext/Components/Nodes/Corpus.purs
View file @
88d50b7e
module Gargantext.Components.Nodes.Corpus where
module Gargantext.Components.Nodes.Corpus where
import Prelude ((<<<))
import Prelude ((<<<))
import Data.Argonaut (class DecodeJson, decodeJson, (.:), (.
?
?))
import Data.Argonaut (class DecodeJson, decodeJson, (.:), (.
:
?))
import Data.Array (head)
import Data.Array (head)
import Data.Maybe (Maybe(..))
import Data.Maybe (Maybe(..))
import Effect.Aff (Aff, throwError)
import Effect.Aff (Aff, throwError)
...
@@ -24,10 +24,9 @@ corpusLayoutCpt = R.staticComponent "G.P.Corpus.corpusLayout" cpt
...
@@ -24,10 +24,9 @@ corpusLayoutCpt = R.staticComponent "G.P.Corpus.corpusLayout" cpt
where
where
cpt {nodeId} _ =
cpt {nodeId} _ =
H.div {}
H.div {}
[ H.h1 {} [H.text "Corpus Description"]
[ H.iframe { src: gargMd , width: "100%", height: "100%"} []
, H.p {} [H.text "Soon: corpus synthesis here (when all others charts/features will be stabilized)."]
]
]
gargMd = "https://hackmd.iscpif.fr/g9Aah4iwQtCayIzsKQjA0Q#"
newtype CorpusInfo =
newtype CorpusInfo =
CorpusInfo
CorpusInfo
{ title :: String
{ title :: String
...
@@ -65,7 +64,7 @@ instance decodeCorpusInfo :: DecodeJson CorpusInfo where
...
@@ -65,7 +64,7 @@ instance decodeCorpusInfo :: DecodeJson CorpusInfo where
desc <- obj .: "desc"
desc <- obj .: "desc"
query <- obj .: "query"
query <- obj .: "query"
authors <- obj .: "authors"
authors <- obj .: "authors"
chart <- obj .
?
? "chart"
chart <- obj .
:
? "chart"
let totalRecords = 47361 -- TODO
let totalRecords = 47361 -- TODO
pure $ CorpusInfo {title, desc, query, authors, chart, totalRecords}
pure $ CorpusInfo {title, desc, query, authors, chart, totalRecords}
...
...
src/Gargantext/Components/Nodes/Texts.purs
View file @
88d50b7e
...
@@ -17,7 +17,6 @@ import Gargantext.Components.Nodes.Corpus.Chart.Histo (histo)
...
@@ -17,7 +17,6 @@ import Gargantext.Components.Nodes.Corpus.Chart.Histo (histo)
import Gargantext.Components.Tab as Tab
import Gargantext.Components.Tab as Tab
import Gargantext.Components.Table as Table
import Gargantext.Components.Table as Table
import Gargantext.Ends (Frontends)
import Gargantext.Ends (Frontends)
import Gargantext.Routes (AppRoute)
import Gargantext.Sessions (Session)
import Gargantext.Sessions (Session)
import Gargantext.Types (CTabNgramType(..), TabSubType(..), TabType(..))
import Gargantext.Types (CTabNgramType(..), TabSubType(..), TabType(..))
...
...
src/Gargantext/Ends.purs
View file @
88d50b7e
...
@@ -166,6 +166,7 @@ sessionPath (R.Chart {chartType, tabType} i) =
...
@@ -166,6 +166,7 @@ sessionPath (R.Chart {chartType, tabType} i) =
<> "?ngramsType=" <> showTabType' tabType
<> "?ngramsType=" <> showTabType' tabType
<> "&listType=GraphTerm" -- <> show listId
<> "&listType=GraphTerm" -- <> show listId
-- <> maybe "" (\x -> "&limit=" <> show x) limit
-- <> maybe "" (\x -> "&limit=" <> show x) limit
-- sessionPath (R.NodeAPI (NodeContact s a i) i) = sessionPath $ "annuaire/" <> show a <> "/contact/" <> show i
------- misc routing stuff
------- misc routing stuff
...
...
src/Gargantext/Prelude.purs
View file @
88d50b7e
...
@@ -7,7 +7,9 @@ import Effect.Class (class MonadEffect, liftEffect)
...
@@ -7,7 +7,9 @@ import Effect.Class (class MonadEffect, liftEffect)
logs:: forall message effect.
logs:: forall message effect.
(MonadEffect effect) => Show message => message
(MonadEffect effect)
=> Show message
=> message
-> effect Unit
-> effect Unit
logs = liftEffect <<< log <<< show
logs = liftEffect <<< log <<< show
src/Gargantext/Router.purs
View file @
88d50b7e
...
@@ -23,13 +23,16 @@ router = oneOf
...
@@ -23,13 +23,16 @@ router = oneOf
, Lists <$> (route "lists" *> sid) <*> int
, Lists <$> (route "lists" *> sid) <*> int
, Annuaire <$> (route "annuaire" *> sid) <*> int
, Annuaire <$> (route "annuaire" *> sid) <*> int
, UserPage <$> (route "user" *> sid) <*> int
, UserPage <$> (route "user" *> sid) <*> int
, ContactPage <$> (route "contact" *> sid) <*> int
, ContactPage <$> (route "annuaire" *> sid) <*> int
<*> (lit "contact" *> int)
, Home <$ lit ""
, Home <$ lit ""
]
]
where
where
route str = lit "" *> lit str
route str = lit "" *> lit str
int :: Match Int
int :: Match Int
int = floor <$> num
int = floor <$> num
sid :: Match SessionId
sid :: Match SessionId
sid = SessionId <$> str
sid = SessionId <$> str
src/Gargantext/Routes.purs
View file @
88d50b7e
...
@@ -17,7 +17,10 @@ data AppRoute
...
@@ -17,7 +17,10 @@ data AppRoute
| Lists SessionId Int
| Lists SessionId Int
| Annuaire SessionId Int
| Annuaire SessionId Int
| UserPage SessionId Int
| UserPage SessionId Int
| ContactPage SessionId Int
| ContactPage SessionId AnnuaireId ContactId
type AnnuaireId = Int
type ContactId = Int
data SessionRoute
data SessionRoute
= Tab TabType (Maybe Id)
= Tab TabType (Maybe Id)
...
@@ -44,7 +47,7 @@ instance showAppRoute :: Show AppRoute where
...
@@ -44,7 +47,7 @@ instance showAppRoute :: Show AppRoute where
show (Lists s i) = "lists" <> show i <> " (" <> show s <> ")"
show (Lists s i) = "lists" <> show i <> " (" <> show s <> ")"
show (Annuaire s i) = "Annuaire" <> show i <> " (" <> show s <> ")"
show (Annuaire s i) = "Annuaire" <> show i <> " (" <> show s <> ")"
show (UserPage s i) = "User" <> show i <> " (" <> show s <> ")"
show (UserPage s i) = "User" <> show i <> " (" <> show s <> ")"
show (ContactPage s
i)
= "Contact" <> show i <> " (" <> show s <> ")"
show (ContactPage s
_a i)
= "Contact" <> show i <> " (" <> show s <> ")"
appPath :: AppRoute -> String
appPath :: AppRoute -> String
appPath Home = ""
appPath Home = ""
...
@@ -59,4 +62,4 @@ appPath (Texts s i) = "texts/" <> show s <> "/" <> show i
...
@@ -59,4 +62,4 @@ appPath (Texts s i) = "texts/" <> show s <> "/" <> show i
appPath (Lists s i) = "lists/" <> show s <> "/" <> show i
appPath (Lists s i) = "lists/" <> show s <> "/" <> show i
appPath (Annuaire s i) = "annuaire/" <> show s <> "/" <> show i
appPath (Annuaire s i) = "annuaire/" <> show s <> "/" <> show i
appPath (UserPage s i) = "user/" <> show s <> "/" <> show i
appPath (UserPage s i) = "user/" <> show s <> "/" <> show i
appPath (ContactPage s
i) = "contact/" <> show s <> "
/" <> show i
appPath (ContactPage s
a i) = "annuaire/" <> show s <> "/" <> show a <> "/contact
/" <> show i
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