Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
haskell-gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
195
Issues
195
List
Board
Labels
Milestones
Merge Requests
12
Merge Requests
12
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
gargantext
haskell-gargantext
Commits
942f8bef
Commit
942f8bef
authored
Aug 12, 2020
by
Przemyslaw Kaminski
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' into dev-doc-annotation-issue
parents
c55bb752
92e50de6
Pipeline
#1008
failed with stage
Changes
24
Pipelines
1
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
24 changed files
with
436 additions
and
168 deletions
+436
-168
gargantext.ini_toModify
gargantext.ini_toModify
+22
-2
package.yaml
package.yaml
+1
-1
Settings.hs
src/Gargantext/API/Admin/Settings.hs
+0
-2
HashedResponse.hs
src/Gargantext/API/HashedResponse.hs
+11
-0
Ngrams.hs
src/Gargantext/API/Ngrams.hs
+7
-7
Node.hs
src/Gargantext/API/Node.hs
+15
-14
Update.hs
src/Gargantext/API/Node/Update.hs
+27
-6
Routes.hs
src/Gargantext/API/Routes.hs
+5
-5
Search.hs
src/Gargantext/API/Search.hs
+234
-49
Config.hs
src/Gargantext/Config.hs
+20
-7
Types.hs
src/Gargantext/Core/Flow/Types.hs
+1
-1
Pairing.hs
src/Gargantext/Database/Action/Flow/Pairing.hs
+12
-8
NgramsByNode.hs
src/Gargantext/Database/Action/Metrics/NgramsByNode.hs
+0
-8
Search.hs
src/Gargantext/Database/Action/Search.hs
+5
-24
Contact.hs
src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs
+0
-2
Default.hs
src/Gargantext/Database/Admin/Types/Hyperdata/Default.hs
+0
-3
Document.hs
src/Gargantext/Database/Admin/Types/Hyperdata/Document.hs
+28
-2
Node.hs
src/Gargantext/Database/Admin/Types/Node.hs
+1
-1
Facet.hs
src/Gargantext/Database/Query/Facet.hs
+7
-7
Node.hs
src/Gargantext/Database/Schema/Node.hs
+13
-12
Utils.hs
src/Gargantext/Prelude/Utils.hs
+11
-2
List.hs
src/Gargantext/Text/List.hs
+2
-2
TFICF.hs
src/Gargantext/Text/Metrics/TFICF.hs
+14
-2
Graph.hs
src/Gargantext/Viz/Graph.hs
+0
-1
No files found.
gargantext.ini_toModify
View file @
942f8bef
[gargantext]
[gargantext]
# Needed to instantiate the first users and first data
MASTER_USER = gargantua
MASTER_USER = gargantua
# SECURITY WARNING: keep the secret key used in production secret!
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = PASSWORD_TO_CHANGE
SECRET_KEY = PASSWORD_TO_CHANGE
# Frames
# Data path to local files
DATA_FILEPATH = FILEPATH_TO_CHANGE
# [external]
# FRAMES
FRAME_WRITE_URL = URL_TO_CHANGE
FRAME_WRITE_URL = URL_TO_CHANGE
FRAME_CALC_URL = URL_TO_CHANGE
FRAME_CALC_URL = URL_TO_CHANGE
FRAME_SEARX_URL = URL_TO_CHANGE
FRAME_ISTEX_URL = URL_TO_CHANGE
[server]
# Server config (TODO connect in ReaderMonad)
ALLOWED_ORIGIN = http://localhost
ALLOWED_ORIGIN_PORT = 8008
ALLOWED_HOST = localhost
ALLOWED_HOST_PORT = 3000
JWT_SETTINGS = TODO
[network]
[network]
# Emails From address (sent by smtp)
# Emails From address (sent by smtp)
MAIL = username@gargantext.org
MAIL = username@gargantext.org
...
@@ -26,5 +46,5 @@ DB_PASS = PASSWORD_TO_CHANGE
...
@@ -26,5 +46,5 @@ DB_PASS = PASSWORD_TO_CHANGE
[logs]
[logs]
LOG_FILE = /var/log/gargantext/backend.log
LOG_FILE = /var/log/gargantext/backend.log
LOG_LEVEL =
DEBUG
LOG_LEVEL =
LevelDebug
LOG_FORMATTER = verbose
LOG_FORMATTER = verbose
package.yaml
View file @
942f8bef
name
:
gargantext
name
:
gargantext
version
:
'
0.0.1.7.
1
'
version
:
'
0.0.1.7.
3
'
synopsis
:
Search, map, share
synopsis
:
Search, map, share
description
:
Please see README.md
description
:
Please see README.md
category
:
Data
category
:
Data
...
...
src/Gargantext/API/Admin/Settings.hs
View file @
942f8bef
...
@@ -75,7 +75,6 @@ data Settings = Settings
...
@@ -75,7 +75,6 @@ data Settings = Settings
,
_cookieSettings
::
CookieSettings
,
_cookieSettings
::
CookieSettings
,
_sendLoginEmails
::
SendEmailType
,
_sendLoginEmails
::
SendEmailType
,
_scrapydUrl
::
BaseUrl
,
_scrapydUrl
::
BaseUrl
,
_fileFolder
::
FilePath
,
_config
::
GargConfig
,
_config
::
GargConfig
}
}
...
@@ -97,7 +96,6 @@ devSettings jwkFile = do
...
@@ -97,7 +96,6 @@ devSettings jwkFile = do
-- , _dbServer = "localhost"
-- , _dbServer = "localhost"
,
_sendLoginEmails
=
LogEmailToConsole
,
_sendLoginEmails
=
LogEmailToConsole
,
_scrapydUrl
=
fromMaybe
(
panic
"Invalid scrapy URL"
)
$
parseBaseUrl
"http://localhost:6800"
,
_scrapydUrl
=
fromMaybe
(
panic
"Invalid scrapy URL"
)
$
parseBaseUrl
"http://localhost:6800"
,
_fileFolder
=
"data"
,
_cookieSettings
=
defaultCookieSettings
{
cookieXsrfSetting
=
Just
xsrfCookieSetting
}
-- TODO-SECURITY tune
,
_cookieSettings
=
defaultCookieSettings
{
cookieXsrfSetting
=
Just
xsrfCookieSetting
}
-- TODO-SECURITY tune
,
_jwtSettings
=
defaultJWTSettings
jwk
-- TODO-SECURITY tune
,
_jwtSettings
=
defaultJWTSettings
jwk
-- TODO-SECURITY tune
,
_config
=
defaultConfig
,
_config
=
defaultConfig
...
...
src/Gargantext/API/HashedResponse.hs
View file @
942f8bef
{-|
Module : Gargantext.API.HashedResponse
Description :
Copyright : (c) CNRS, 2020-Present
License : AGPL + CECILL v3
Maintainer : team@gargantext.org
Stability : experimental
Portability : POSIX
-}
module
Gargantext.API.HashedResponse
where
module
Gargantext.API.HashedResponse
where
import
Data.Aeson
import
Data.Aeson
...
...
src/Gargantext/API/Ngrams.hs
View file @
942f8bef
...
@@ -510,13 +510,13 @@ instance ToSchema a => ToSchema (Replace a) where
...
@@ -510,13 +510,13 @@ instance ToSchema a => ToSchema (Replace a) where
-- TODO Keep constructor is not supported here.
-- TODO Keep constructor is not supported here.
aSchema
<-
declareSchemaRef
(
Proxy
::
Proxy
a
)
aSchema
<-
declareSchemaRef
(
Proxy
::
Proxy
a
)
return
$
NamedSchema
(
Just
"Replace"
)
$
mempty
return
$
NamedSchema
(
Just
"Replace"
)
$
mempty
&
type_
?~
SwaggerObject
&
type_
?~
SwaggerObject
&
properties
.~
&
properties
.~
InsOrdHashMap
.
fromList
InsOrdHashMap
.
fromList
[
(
"old"
,
aSchema
)
[
(
"old"
,
aSchema
)
,
(
"new"
,
aSchema
)
,
(
"new"
,
aSchema
)
]
]
&
required
.~
[
"old"
,
"new"
]
&
required
.~
[
"old"
,
"new"
]
data
NgramsPatch
=
data
NgramsPatch
=
NgramsPatch
{
_patch_children
::
PatchMSet
NgramsTerm
NgramsPatch
{
_patch_children
::
PatchMSet
NgramsTerm
...
...
src/Gargantext/API/Node.hs
View file @
942f8bef
...
@@ -31,6 +31,7 @@ module Gargantext.API.Node
...
@@ -31,6 +31,7 @@ module Gargantext.API.Node
where
where
import
Data.Aeson
(
FromJSON
,
ToJSON
)
import
Data.Aeson
(
FromJSON
,
ToJSON
)
import
Data.Aeson.TH
(
deriveJSON
)
import
Data.Maybe
import
Data.Maybe
import
Data.Swagger
import
Data.Swagger
import
Data.Text
(
Text
())
import
Data.Text
(
Text
())
...
@@ -40,14 +41,14 @@ import Gargantext.API.Metrics
...
@@ -40,14 +41,14 @@ import Gargantext.API.Metrics
import
Gargantext.API.Ngrams
(
TabType
(
..
),
TableNgramsApi
,
apiNgramsTableCorpus
)
import
Gargantext.API.Ngrams
(
TabType
(
..
),
TableNgramsApi
,
apiNgramsTableCorpus
)
import
Gargantext.API.Node.New
import
Gargantext.API.Node.New
import
Gargantext.API.Prelude
import
Gargantext.API.Prelude
import
Gargantext.API.Search
(
SearchDocsAPI
,
searchDocs
,
SearchPairsAPI
,
searchPairs
)
import
Gargantext.API.Table
import
Gargantext.API.Table
import
Gargantext.Core.Types
(
NodeTableResult
)
import
Gargantext.Core.Types
(
NodeTableResult
)
import
Gargantext.Core.Types.Individu
(
User
(
..
))
import
Gargantext.Core.Types.Individu
(
User
(
..
))
import
Gargantext.Core.Types.Main
(
Tree
,
NodeTree
)
import
Gargantext.Core.Types.Main
(
Tree
,
NodeTree
)
import
Gargantext.Core.Utils.Prefix
(
unPrefix
)
import
Gargantext.Database.Action.Flow.Pairing
(
pairing
)
import
Gargantext.Database.Action.Flow.Pairing
(
pairing
)
import
Gargantext.Database.Admin.Types.Node
import
Gargantext.Database.Admin.Types.Hyperdata
import
Gargantext.Database.Admin.Types.Hyperdata
import
Gargantext.Database.Admin.Types.Node
import
Gargantext.Database.Prelude
-- (Cmd, CmdM)
import
Gargantext.Database.Prelude
-- (Cmd, CmdM)
import
Gargantext.Database.Query.Facet
(
FacetDoc
,
OrderBy
(
..
))
import
Gargantext.Database.Query.Facet
(
FacetDoc
,
OrderBy
(
..
))
import
Gargantext.Database.Query.Table.Node
import
Gargantext.Database.Query.Table.Node
...
@@ -64,6 +65,7 @@ import Test.QuickCheck (elements)
...
@@ -64,6 +65,7 @@ import Test.QuickCheck (elements)
import
Test.QuickCheck.Arbitrary
(
Arbitrary
,
arbitrary
)
import
Test.QuickCheck.Arbitrary
(
Arbitrary
,
arbitrary
)
import
qualified
Gargantext.API.Node.Share
as
Share
import
qualified
Gargantext.API.Node.Share
as
Share
import
qualified
Gargantext.API.Node.Update
as
Update
import
qualified
Gargantext.API.Node.Update
as
Update
import
qualified
Gargantext.API.Search
as
Search
import
qualified
Gargantext.Database.Action.Delete
as
Action
(
deleteNode
)
import
qualified
Gargantext.Database.Action.Delete
as
Action
(
deleteNode
)
import
qualified
Gargantext.Database.Query.Table.Node.Update
as
U
(
update
,
Update
(
..
))
import
qualified
Gargantext.Database.Query.Table.Node.Update
as
U
(
update
,
Update
(
..
))
...
@@ -127,14 +129,13 @@ type NodeAPI a = Get '[JSON] (Node a)
...
@@ -127,14 +129,13 @@ type NodeAPI a = Get '[JSON] (Node a)
:<|>
"ngrams"
:>
TableNgramsApi
:<|>
"ngrams"
:>
TableNgramsApi
:<|>
"category"
:>
CatApi
:<|>
"category"
:>
CatApi
:<|>
"search"
:>
SearchDocsAPI
:<|>
"search"
:>
(
Search
.
API
Search
.
SearchResult
)
:<|>
"share"
:>
Share
.
API
:<|>
"share"
:>
Share
.
API
-- Pairing utilities
-- Pairing utilities
:<|>
"pairwith"
:>
PairWith
:<|>
"pairwith"
:>
PairWith
:<|>
"pairs"
:>
Pairs
:<|>
"pairs"
:>
Pairs
:<|>
"pairing"
:>
PairingApi
:<|>
"pairing"
:>
PairingApi
:<|>
"searchPair"
:>
SearchPairsAPI
-- VIZ
-- VIZ
:<|>
"metrics"
:>
ScatterAPI
:<|>
"metrics"
:>
ScatterAPI
...
@@ -204,13 +205,12 @@ nodeAPI p uId id' = withAccess (Proxy :: Proxy (NodeAPI a)) Proxy uId (PathNode
...
@@ -204,13 +205,12 @@ nodeAPI p uId id' = withAccess (Proxy :: Proxy (NodeAPI a)) Proxy uId (PathNode
:<|>
apiNgramsTableCorpus
id'
:<|>
apiNgramsTableCorpus
id'
:<|>
catApi
id'
:<|>
catApi
id'
:<|>
searchDocs
id'
:<|>
Search
.
api
id'
:<|>
Share
.
api
id'
:<|>
Share
.
api
id'
-- Pairing Tools
-- Pairing Tools
:<|>
pairWith
id'
:<|>
pairWith
id'
:<|>
pairs
id'
:<|>
pairs
id'
:<|>
getPair
id'
:<|>
getPair
id'
:<|>
searchPairs
id'
:<|>
scatterApi
id'
:<|>
scatterApi
id'
:<|>
chartApi
id'
:<|>
chartApi
id'
...
@@ -227,12 +227,6 @@ nodeAPI p uId id' = withAccess (Proxy :: Proxy (NodeAPI a)) Proxy uId (PathNode
...
@@ -227,12 +227,6 @@ nodeAPI p uId id' = withAccess (Proxy :: Proxy (NodeAPI a)) Proxy uId (PathNode
data
RenameNode
=
RenameNode
{
r_name
::
Text
}
data
RenameNode
=
RenameNode
{
r_name
::
Text
}
deriving
(
Generic
)
deriving
(
Generic
)
-- TODO unPrefix "r_" FromJSON, ToJSON, ToSchema, adapt frontend.
instance
FromJSON
RenameNode
instance
ToJSON
RenameNode
instance
ToSchema
RenameNode
instance
Arbitrary
RenameNode
where
arbitrary
=
elements
[
RenameNode
"test"
]
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
type
CatApi
=
Summary
" To Categorize NodeNodes: 0 for delete, 1/null neutral, 2 favorite"
type
CatApi
=
Summary
" To Categorize NodeNodes: 0 for delete, 1/null neutral, 2 favorite"
...
@@ -276,7 +270,7 @@ pairs cId = do
...
@@ -276,7 +270,7 @@ pairs cId = do
type
PairWith
=
Summary
"Pair a Corpus with an Annuaire"
type
PairWith
=
Summary
"Pair a Corpus with an Annuaire"
:>
"annuaire"
:>
Capture
"annuaire_id"
AnnuaireId
:>
"annuaire"
:>
Capture
"annuaire_id"
AnnuaireId
:>
"list"
:>
Capture
"list_id"
ListId
:>
QueryParam
"list_id"
ListId
:>
Post
'[
J
SON
]
Int
:>
Post
'[
J
SON
]
Int
pairWith
::
CorpusId
->
GargServer
PairWith
pairWith
::
CorpusId
->
GargServer
PairWith
...
@@ -285,7 +279,6 @@ pairWith cId aId lId = do
...
@@ -285,7 +279,6 @@ pairWith cId aId lId = do
_
<-
insertNodeNode
[
NodeNode
cId
aId
Nothing
Nothing
]
_
<-
insertNodeNode
[
NodeNode
cId
aId
Nothing
Nothing
]
pure
r
pure
r
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
type
TreeAPI
=
QueryParams
"type"
NodeType
:>
Get
'[
J
SON
]
(
Tree
NodeTree
)
type
TreeAPI
=
QueryParams
"type"
NodeType
:>
Get
'[
J
SON
]
(
Tree
NodeTree
)
...
@@ -315,4 +308,12 @@ moveNode :: User
...
@@ -315,4 +308,12 @@ moveNode :: User
->
Cmd
err
[
Int
]
->
Cmd
err
[
Int
]
moveNode
_u
n
p
=
update
(
Move
n
p
)
moveNode
_u
n
p
=
update
(
Move
n
p
)
-------------------------------------------------------------
-------------------------------------------------------------
$
(
deriveJSON
(
unPrefix
"r_"
)
''
R
enameNode
)
instance
ToSchema
RenameNode
instance
Arbitrary
RenameNode
where
arbitrary
=
elements
[
RenameNode
"test"
]
-------------------------------------------------------------
-------------------------------------------------------------
src/Gargantext/API/Node/Update.hs
View file @
942f8bef
...
@@ -17,18 +17,20 @@ module Gargantext.API.Node.Update
...
@@ -17,18 +17,20 @@ module Gargantext.API.Node.Update
where
where
import
Data.Aeson
import
Data.Aeson
import
Data.Maybe
(
Maybe
(
..
))
import
Data.Swagger
import
Data.Swagger
import
GHC.Generics
(
Generic
)
import
GHC.Generics
(
Generic
)
import
Data.Maybe
(
Maybe
(
..
))
import
Gargantext.Prelude
import
Gargantext.API.Admin.Settings
(
HasSettings
)
import
Gargantext.API.Admin.Orchestrator.Types
(
JobLog
(
..
))
import
Gargantext.API.Admin.Orchestrator.Types
(
JobLog
(
..
))
import
Gargantext.API.Admin.Settings
(
HasSettings
)
import
Gargantext.API.Node.Corpus.New
(
AsyncJobs
)
import
Gargantext.API.Node.Corpus.New
(
AsyncJobs
)
import
Gargantext.API.Prelude
(
GargServer
,
simuLogs
)
import
Gargantext.API.Prelude
(
GargServer
,
simuLogs
)
import
Gargantext.Viz.Graph.Distances
(
GraphMetric
(
..
),
Distance
(
..
))
import
Gargantext.Database.Action.Flow.Pairing
(
pairing
)
import
Gargantext.Viz.Graph.API
(
recomputeGraph
)
import
Gargantext.Database.Action.Flow.Types
(
FlowCmdM
)
import
Gargantext.Database.Action.Flow.Types
(
FlowCmdM
)
import
Gargantext.Database.Admin.Types.Node
import
Gargantext.Database.Admin.Types.Node
import
Gargantext.Prelude
(
Ord
,
Eq
,
(
<$>
),
(
$
),
liftBase
,
(
.
),
printDebug
,
pure
)
import
Gargantext.Prelude
(
Ord
,
Eq
,
(
<$>
),
(
$
),
liftBase
,
(
.
),
printDebug
,
pure
)
import
Gargantext.Viz.Graph.API
(
recomputeGraph
)
import
Gargantext.Viz.Graph.Distances
(
GraphMetric
(
..
),
Distance
(
..
))
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
)
import
Prelude
(
Enum
,
Bounded
,
minBound
,
maxBound
)
import
Servant
import
Servant
import
Servant.Job.Async
(
JobFunction
(
..
),
serveJobsAPI
)
import
Servant.Job.Async
(
JobFunction
(
..
),
serveJobsAPI
)
...
@@ -45,6 +47,7 @@ data UpdateNodeParams = UpdateNodeParamsList { methodList :: !Method }
...
@@ -45,6 +47,7 @@ data UpdateNodeParams = UpdateNodeParamsList { methodList :: !Method }
|
UpdateNodeParamsGraph
{
methodGraph
::
!
GraphMetric
}
|
UpdateNodeParamsGraph
{
methodGraph
::
!
GraphMetric
}
|
UpdateNodeParamsTexts
{
methodTexts
::
!
Granularity
}
|
UpdateNodeParamsTexts
{
methodTexts
::
!
Granularity
}
|
UpdateNodeParamsBoard
{
methodBoard
::
!
Charts
}
|
UpdateNodeParamsBoard
{
methodBoard
::
!
Charts
}
|
LinkNodeReq
{
nodeType
::
!
NodeType
,
id
::
!
NodeId
}
deriving
(
Generic
)
deriving
(
Generic
)
----------------------------------------------------------------------
----------------------------------------------------------------------
...
@@ -63,11 +66,11 @@ data Charts = Sources | Authors | Institutes | Ngrams | All
...
@@ -63,11 +66,11 @@ data Charts = Sources | Authors | Institutes | Ngrams | All
api
::
UserId
->
NodeId
->
GargServer
API
api
::
UserId
->
NodeId
->
GargServer
API
api
uId
nId
=
api
uId
nId
=
serveJobsAPI
$
serveJobsAPI
$
JobFunction
(
\
p
log
->
JobFunction
(
\
p
log
''
->
let
let
log'
x
=
do
log'
x
=
do
printDebug
"updateNode"
x
printDebug
"updateNode"
x
liftBase
$
log
x
liftBase
$
log
''
x
in
updateNode
uId
nId
p
(
liftBase
.
log'
)
in
updateNode
uId
nId
p
(
liftBase
.
log'
)
)
)
...
@@ -95,6 +98,24 @@ updateNode uId nId (UpdateNodeParamsGraph metric) logStatus = do
...
@@ -95,6 +98,24 @@ updateNode uId nId (UpdateNodeParamsGraph metric) logStatus = do
,
_scst_events
=
Just
[]
,
_scst_events
=
Just
[]
}
}
updateNode
_uId
nid1
(
LinkNodeReq
nt
nid2
)
logStatus
=
do
logStatus
JobLog
{
_scst_succeeded
=
Just
1
,
_scst_failed
=
Just
0
,
_scst_remaining
=
Just
1
,
_scst_events
=
Just
[]
}
_
<-
case
nt
of
NodeAnnuaire
->
pairing
nid2
nid1
Nothing
-- defaultList
NodeCorpus
->
pairing
nid1
nid2
Nothing
-- defaultList
_
->
panic
$
"[G.API.N.Update.updateNode] NodeType not implemented"
<>
cs
(
show
nt
)
pure
JobLog
{
_scst_succeeded
=
Just
2
,
_scst_failed
=
Just
0
,
_scst_remaining
=
Just
0
,
_scst_events
=
Just
[]
}
updateNode
_uId
_nId
_p
logStatus
=
do
updateNode
_uId
_nId
_p
logStatus
=
do
simuLogs
logStatus
10
simuLogs
logStatus
10
...
...
src/Gargantext/API/Routes.hs
View file @
942f8bef
...
@@ -33,7 +33,7 @@ import Gargantext.API.Count (CountAPI, count, Query)
...
@@ -33,7 +33,7 @@ import Gargantext.API.Count (CountAPI, count, Query)
import
Gargantext.API.Ngrams
(
TableNgramsApi
,
apiNgramsTableDoc
)
import
Gargantext.API.Ngrams
(
TableNgramsApi
,
apiNgramsTableDoc
)
import
Gargantext.API.Node
import
Gargantext.API.Node
import
Gargantext.API.Prelude
import
Gargantext.API.Prelude
import
Gargantext.API.Search
(
SearchPairsAPI
,
searchPairs
)
-- import qualified Gargantext.API.Search as Search
import
Gargantext.Core.Types.Individu
(
User
(
..
))
import
Gargantext.Core.Types.Individu
(
User
(
..
))
import
Gargantext.Database.Admin.Types.Hyperdata
import
Gargantext.Database.Admin.Types.Hyperdata
import
Gargantext.Database.Admin.Types.Node
import
Gargantext.Database.Admin.Types.Node
...
@@ -129,8 +129,8 @@ type GargPrivateAPI' =
...
@@ -129,8 +129,8 @@ type GargPrivateAPI' =
:>
CountAPI
:>
CountAPI
-- Corpus endpoint --> TODO rename s/search/filter/g
-- Corpus endpoint --> TODO rename s/search/filter/g
:<|>
"search"
:>
Capture
"corpus"
NodeId
--
:<|> "search" :> Capture "corpus" NodeId
:>
SearchPairsAPI
-- :> (Search.API Search.SearchResult)
-- TODO move to NodeAPI?
-- TODO move to NodeAPI?
:<|>
"graph"
:>
Summary
"Graph endpoint"
:<|>
"graph"
:>
Summary
"Graph endpoint"
...
@@ -212,8 +212,8 @@ serverPrivateGargAPI' (AuthenticatedUser (NodeId uid))
...
@@ -212,8 +212,8 @@ serverPrivateGargAPI' (AuthenticatedUser (NodeId uid))
:<|>
count
-- TODO: undefined
:<|>
count
-- TODO: undefined
:<|>
withAccess
(
Proxy
::
Proxy
SearchPairsAPI
)
Proxy
uid
-- :<|> withAccess (Proxy :: Proxy (Search.API Search.SearchResult)
) Proxy uid
<$>
PathNode
<*>
searchPairs
-- TODO: move elsewhere
-- <$> PathNode <*> Search.api
-- TODO: move elsewhere
:<|>
withAccess
(
Proxy
::
Proxy
GraphAPI
)
Proxy
uid
:<|>
withAccess
(
Proxy
::
Proxy
GraphAPI
)
Proxy
uid
<$>
PathNode
<*>
graphAPI
uid
-- TODO: mock
<$>
PathNode
<*>
graphAPI
uid
-- TODO: mock
...
...
src/Gargantext/API/Search.hs
View file @
942f8bef
This diff is collapsed.
Click to expand it.
src/Gargantext/Config.hs
View file @
942f8bef
...
@@ -22,16 +22,20 @@ import GHC.Generics (Generic)
...
@@ -22,16 +22,20 @@ import GHC.Generics (Generic)
import
Control.Lens
(
makeLenses
)
import
Control.Lens
(
makeLenses
)
data
GargConfig
=
GargConfig
{
_gc_masteruser
::
Text
data
GargConfig
=
GargConfig
{
_gc_masteruser
::
!
Text
,
_gc_secretkey
::
Text
,
_gc_secretkey
::
!
Text
,
_gc_frame_write_url
::
Text
,
_gc_datafilepath
::
!
FilePath
,
_gc_frame_calc_url
::
Text
,
_gc_frame_write_url
::
!
Text
,
_gc_frame_calc_url
::
!
Text
,
_gc_frame_searx_url
::
!
Text
,
_gc_frame_istex_url
::
!
Text
}
}
deriving
(
Generic
)
deriving
(
Generic
,
Show
)
makeLenses
''
G
argConfig
makeLenses
''
G
argConfig
readConfig
::
FilePath
->
IO
GargConfig
readConfig
::
FilePath
->
IO
GargConfig
readConfig
fp
=
do
readConfig
fp
=
do
ini
<-
readIniFile
fp
ini
<-
readIniFile
fp
...
@@ -45,8 +49,17 @@ readConfig fp = do
...
@@ -45,8 +49,17 @@ readConfig fp = do
pure
$
GargConfig
(
val
"MASTER_USER"
)
pure
$
GargConfig
(
val
"MASTER_USER"
)
(
val
"SECRET_KEY"
)
(
val
"SECRET_KEY"
)
(
cs
$
val
"DATA_FILEPATH"
)
(
val
"FRAME_WRITE_URL"
)
(
val
"FRAME_WRITE_URL"
)
(
val
"FRAME_CALC_URL"
)
(
val
"FRAME_CALC_URL"
)
(
val
"FRAME_SEARX_URL"
)
(
val
"FRAME_ISTEX_URL"
)
defaultConfig
::
GargConfig
defaultConfig
::
GargConfig
defaultConfig
=
GargConfig
"gargantua"
"secret"
"https://frame_write.url"
"https://frame_calc.url"
defaultConfig
=
GargConfig
"gargantua"
"secret"
"data/"
"https://frame_write.url"
"https://frame_calc.url"
"https://frame_searx.url"
"https://frame_istex.url"
src/Gargantext/Core/Flow/Types.hs
View file @
942f8bef
...
@@ -17,7 +17,7 @@ module Gargantext.Core.Flow.Types where
...
@@ -17,7 +17,7 @@ module Gargantext.Core.Flow.Types where
import
Control.Lens
(
Lens
'
)
import
Control.Lens
(
Lens
'
)
import
Data.Map
(
Map
)
import
Data.Map
(
Map
)
import
Data.Maybe
(
Maybe
)
import
Data.Maybe
(
Maybe
)
-- import Control.Applicative
import
Gargantext.Text
(
HasText
(
..
))
import
Gargantext.Text
(
HasText
(
..
))
import
Gargantext.Core.Types.Main
(
HashId
)
import
Gargantext.Core.Types.Main
(
HashId
)
import
Gargantext.Database.Admin.Types.Hyperdata
import
Gargantext.Database.Admin.Types.Hyperdata
...
...
src/Gargantext/Database/Action/Flow/Pairing.hs
View file @
942f8bef
...
@@ -35,6 +35,8 @@ import Gargantext.Database.Prelude (Cmd, runOpaQuery)
...
@@ -35,6 +35,8 @@ import Gargantext.Database.Prelude (Cmd, runOpaQuery)
import
Gargantext.Database.Query.Prelude
(
leftJoin2
,
returnA
,
queryNodeNodeTable
)
import
Gargantext.Database.Query.Prelude
(
leftJoin2
,
returnA
,
queryNodeNodeTable
)
import
Gargantext.Database.Query.Table.Node.Children
(
getAllContacts
)
import
Gargantext.Database.Query.Table.Node.Children
(
getAllContacts
)
import
Gargantext.Database.Query.Table.Node.Select
(
selectNodesWithUsername
)
import
Gargantext.Database.Query.Table.Node.Select
(
selectNodesWithUsername
)
import
Gargantext.Database.Query.Table.Node
(
defaultList
)
import
Gargantext.Database.Query.Table.NodeNode
(
insertNodeNode
)
import
Gargantext.Database.Schema.Ngrams
-- (NgramsType(..))
import
Gargantext.Database.Schema.Ngrams
-- (NgramsType(..))
import
Gargantext.Database.Schema.Node
import
Gargantext.Database.Schema.Node
import
Gargantext.Prelude
hiding
(
sum
)
import
Gargantext.Prelude
hiding
(
sum
)
...
@@ -49,8 +51,8 @@ import qualified Data.Text as DT
...
@@ -49,8 +51,8 @@ import qualified Data.Text as DT
-- | isPairedWith
-- | isPairedWith
-- All NodeAnnuaire paired with a Corpus of NodeId nId:
-- All NodeAnnuaire paired with a Corpus of NodeId nId:
-- isPairedWith NodeAnnuaire corpusId
-- isPairedWith NodeAnnuaire corpusId
isPairedWith
::
Node
Type
->
NodeId
->
Cmd
err
[
NodeId
]
isPairedWith
::
Node
Id
->
NodeType
->
Cmd
err
[
NodeId
]
isPairedWith
n
t
nId
=
runOpaQuery
(
selectQuery
nt
nId
)
isPairedWith
n
Id
nt
=
runOpaQuery
(
selectQuery
nt
nId
)
where
where
selectQuery
::
NodeType
->
NodeId
->
Query
(
Column
PGInt4
)
selectQuery
::
NodeType
->
NodeId
->
Query
(
Column
PGInt4
)
selectQuery
nt'
nId'
=
proc
()
->
do
selectQuery
nt'
nId'
=
proc
()
->
do
...
@@ -64,14 +66,16 @@ isPairedWith nt nId = runOpaQuery (selectQuery nt nId)
...
@@ -64,14 +66,16 @@ isPairedWith nt nId = runOpaQuery (selectQuery nt nId)
where
where
cond
(
node
,
node_node
)
=
node
^.
node_id
.==
node_node
^.
nn_node2_id
cond
(
node
,
node_node
)
=
node
^.
node_id
.==
node_node
^.
nn_node2_id
-----------------------------------------------------------------------
-----------------------------------------------------------------------
pairing
::
AnnuaireId
->
CorpusId
->
ListId
->
GargNoServer
Int
pairing
::
AnnuaireId
->
CorpusId
->
Maybe
ListId
->
GargNoServer
Int
pairing
a
c
l
=
do
pairing
a
c
l'
=
do
l
<-
case
l'
of
Nothing
->
defaultList
c
Just
l''
->
pure
l''
dataPaired
<-
dataPairing
a
(
c
,
l
,
Authors
)
takeName
takeName
dataPaired
<-
dataPairing
a
(
c
,
l
,
Authors
)
takeName
takeName
insertDB
$
prepareInsert
dataPaired
r
<-
insertDB
$
prepareInsert
dataPaired
_
<-
insertNodeNode
[
NodeNode
c
a
Nothing
Nothing
]
pure
r
dataPairing
::
AnnuaireId
dataPairing
::
AnnuaireId
...
...
src/Gargantext/Database/Action/Metrics/NgramsByNode.hs
View file @
942f8bef
...
@@ -19,14 +19,12 @@ module Gargantext.Database.Action.Metrics.NgramsByNode
...
@@ -19,14 +19,12 @@ module Gargantext.Database.Action.Metrics.NgramsByNode
import
Data.Map.Strict
(
Map
,
fromListWith
,
elems
,
toList
,
fromList
)
import
Data.Map.Strict
(
Map
,
fromListWith
,
elems
,
toList
,
fromList
)
import
Data.Map.Strict.Patch
(
PatchMap
,
Replace
,
diff
)
import
Data.Map.Strict.Patch
(
PatchMap
,
Replace
,
diff
)
import
Data.Set
(
Set
)
import
Data.Set
(
Set
)
import
qualified
Data.Ord
as
DO
(
Down
(
..
))
import
Data.Text
(
Text
)
import
Data.Text
(
Text
)
import
Data.Tuple.Extra
(
second
,
swap
)
import
Data.Tuple.Extra
(
second
,
swap
)
import
Database.PostgreSQL.Simple.SqlQQ
(
sql
)
import
Database.PostgreSQL.Simple.SqlQQ
(
sql
)
import
Database.PostgreSQL.Simple.Types
(
Values
(
..
),
QualifiedIdentifier
(
..
))
import
Database.PostgreSQL.Simple.Types
(
Values
(
..
),
QualifiedIdentifier
(
..
))
import
Debug.Trace
(
trace
)
import
Debug.Trace
(
trace
)
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core.Types
(
Ordering
(
..
))
import
Gargantext.Database.Admin.Config
(
nodeTypeId
)
import
Gargantext.Database.Admin.Config
(
nodeTypeId
)
import
Gargantext.Database.Admin.Types.Node
-- (ListId, CorpusId, NodeId)
import
Gargantext.Database.Admin.Types.Node
-- (ListId, CorpusId, NodeId)
import
Gargantext.Database.Prelude
(
Cmd
,
runPGSQuery
)
import
Gargantext.Database.Prelude
(
Cmd
,
runPGSQuery
)
...
@@ -58,12 +56,6 @@ ngramsGroup l _m _n = Text.intercalate " "
...
@@ -58,12 +56,6 @@ ngramsGroup l _m _n = Text.intercalate " "
.
Text
.
replace
"-"
" "
.
Text
.
replace
"-"
" "
sortTficf
::
Ordering
->
(
Map
Text
(
Double
,
Set
Text
))
->
[
(
Text
,(
Double
,
Set
Text
))]
sortTficf
Down
=
List
.
sortOn
(
DO
.
Down
.
fst
.
snd
)
.
toList
sortTficf
Up
=
List
.
sortOn
(
fst
.
snd
)
.
toList
getTficf
::
UserCorpusId
getTficf
::
UserCorpusId
->
MasterCorpusId
->
MasterCorpusId
...
...
src/Gargantext/Database/Action/Search.hs
View file @
942f8bef
...
@@ -115,30 +115,11 @@ searchInCorpusWithContacts cId aId q o l _order =
...
@@ -115,30 +115,11 @@ searchInCorpusWithContacts cId aId q o l _order =
runOpaQuery
$
limit'
l
runOpaQuery
$
limit'
l
$
offset'
o
$
offset'
o
$
orderBy
(
desc
_fp_score
)
$
orderBy
(
desc
_fp_score
)
$
g
roup
cId
aId
$
selectG
roup
cId
aId
$
intercalate
" | "
$
intercalate
" | "
$
map
stemIt
q
$
map
stemIt
q
-- TODO group by
selectContactViaDoc
selectContactViaDoc
::
CorpusId
->
AnnuaireId
->
Text
->
Select
FacetPairedReadNull
selectContactViaDoc
cId
aId
q
=
proc
()
->
do
(
doc
,
(
corpus_doc
,
(
_contact_doc
,
(
annuaire_contact
,
contact
))))
<-
queryContactViaDoc
-<
()
restrict
-<
(
doc
^.
ns_search
)
@@
(
pgTSQuery
$
unpack
q
)
restrict
-<
(
doc
^.
ns_typename
)
.==
(
pgInt4
$
nodeTypeId
NodeDocument
)
restrict
-<
(
corpus_doc
^.
nn_node1_id
)
.==
(
toNullable
$
pgNodeId
cId
)
restrict
-<
(
annuaire_contact
^.
nn_node1_id
)
.==
(
toNullable
$
pgNodeId
aId
)
restrict
-<
(
contact
^.
node_typename
)
.==
(
toNullable
$
pgInt4
$
nodeTypeId
NodeContact
)
returnA
-<
FacetPaired
(
contact
^.
node_id
)
(
contact
^.
node_date
)
(
contact
^.
node_hyperdata
)
(
toNullable
$
pgInt4
1
)
selectContactViaDoc'
::
CorpusId
::
CorpusId
->
AnnuaireId
->
AnnuaireId
->
Text
->
Text
...
@@ -148,7 +129,7 @@ selectContactViaDoc'
...
@@ -148,7 +129,7 @@ selectContactViaDoc'
,
Column
(
Nullable
PGJsonb
)
,
Column
(
Nullable
PGJsonb
)
,
Column
(
Nullable
PGInt4
)
,
Column
(
Nullable
PGInt4
)
)
)
selectContactViaDoc
'
cId
aId
q
=
proc
()
->
do
selectContactViaDoc
cId
aId
q
=
proc
()
->
do
(
doc
,
(
corpus_doc
,
(
_contact_doc
,
(
annuaire_contact
,
contact
))))
<-
queryContactViaDoc
-<
()
(
doc
,
(
corpus_doc
,
(
_contact_doc
,
(
annuaire_contact
,
contact
))))
<-
queryContactViaDoc
-<
()
restrict
-<
(
doc
^.
ns_search
)
@@
(
pgTSQuery
$
unpack
q
)
restrict
-<
(
doc
^.
ns_search
)
@@
(
pgTSQuery
$
unpack
q
)
restrict
-<
(
doc
^.
ns_typename
)
.==
(
pgInt4
$
nodeTypeId
NodeDocument
)
restrict
-<
(
doc
^.
ns_typename
)
.==
(
pgInt4
$
nodeTypeId
NodeDocument
)
...
@@ -161,13 +142,13 @@ selectContactViaDoc' cId aId q = proc () -> do
...
@@ -161,13 +142,13 @@ selectContactViaDoc' cId aId q = proc () -> do
,
toNullable
$
pgInt4
1
,
toNullable
$
pgInt4
1
)
)
g
roup
::
NodeId
selectG
roup
::
NodeId
->
NodeId
->
NodeId
->
Text
->
Text
->
Select
FacetPairedReadNull
->
Select
FacetPairedReadNull
g
roup
cId
aId
q
=
proc
()
->
do
selectG
roup
cId
aId
q
=
proc
()
->
do
(
a
,
b
,
c
,
d
)
<-
aggregate
(
p4
(
groupBy
,
groupBy
,
groupBy
,
O
.
sum
))
(
a
,
b
,
c
,
d
)
<-
aggregate
(
p4
(
groupBy
,
groupBy
,
groupBy
,
O
.
sum
))
(
selectContactViaDoc
'
cId
aId
q
)
-<
()
(
selectContactViaDoc
cId
aId
q
)
-<
()
returnA
-<
FacetPaired
a
b
c
d
returnA
-<
FacetPaired
a
b
c
d
...
...
src/Gargantext/Database/Admin/Types/Hyperdata/Contact.hs
View file @
942f8bef
...
@@ -29,8 +29,6 @@ import Gargantext.Prelude
...
@@ -29,8 +29,6 @@ import Gargantext.Prelude
import
Gargantext.Database.Admin.Types.Hyperdata.Prelude
import
Gargantext.Database.Admin.Types.Hyperdata.Prelude
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
data
HyperdataContact
=
data
HyperdataContact
=
HyperdataContact
{
_hc_bdd
::
Maybe
Text
-- ID of Database source
HyperdataContact
{
_hc_bdd
::
Maybe
Text
-- ID of Database source
,
_hc_who
::
Maybe
ContactWho
,
_hc_who
::
Maybe
ContactWho
...
...
src/Gargantext/Database/Admin/Types/Hyperdata/Default.hs
View file @
942f8bef
...
@@ -109,6 +109,3 @@ defaultHyperdata NodeDashboard = DefaultDashboard defaultHyperdataDashboard
...
@@ -109,6 +109,3 @@ defaultHyperdata NodeDashboard = DefaultDashboard defaultHyperdataDashboard
defaultHyperdata
NodeFrameWrite
=
DefaultFrameWrite
defaultHyperdataFrame
defaultHyperdata
NodeFrameWrite
=
DefaultFrameWrite
defaultHyperdataFrame
defaultHyperdata
NodeFrameCalc
=
DefaultFrameCalc
defaultHyperdataFrame
defaultHyperdata
NodeFrameCalc
=
DefaultFrameCalc
defaultHyperdataFrame
src/Gargantext/Database/Admin/Types/Hyperdata/Document.hs
View file @
942f8bef
...
@@ -21,6 +21,7 @@ Portability : POSIX
...
@@ -21,6 +21,7 @@ Portability : POSIX
module
Gargantext.Database.Admin.Types.Hyperdata.Document
where
module
Gargantext.Database.Admin.Types.Hyperdata.Document
where
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Gargantext.Core.Utils.Prefix
(
unCapitalize
,
dropPrefix
)
import
Gargantext.Database.Admin.Types.Hyperdata.Prelude
import
Gargantext.Database.Admin.Types.Hyperdata.Prelude
...
@@ -44,7 +45,8 @@ data HyperdataDocument = HyperdataDocument { _hd_bdd :: !(Maybe T
...
@@ -44,7 +45,8 @@ data HyperdataDocument = HyperdataDocument { _hd_bdd :: !(Maybe T
,
_hd_publication_minute
::
!
(
Maybe
Int
)
,
_hd_publication_minute
::
!
(
Maybe
Int
)
,
_hd_publication_second
::
!
(
Maybe
Int
)
,
_hd_publication_second
::
!
(
Maybe
Int
)
,
_hd_language_iso2
::
!
(
Maybe
Text
)
,
_hd_language_iso2
::
!
(
Maybe
Text
)
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
defaultHyperdataDocument
::
HyperdataDocument
defaultHyperdataDocument
::
HyperdataDocument
...
@@ -67,6 +69,7 @@ data StatusV3 = StatusV3 { statusV3_error :: !(Maybe Text)
...
@@ -67,6 +69,7 @@ data StatusV3 = StatusV3 { statusV3_error :: !(Maybe Text)
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
$
(
deriveJSON
(
unPrefix
"statusV3_"
)
''
S
tatusV3
)
$
(
deriveJSON
(
unPrefix
"statusV3_"
)
''
S
tatusV3
)
------------------------------------------------------------------------
------------------------------------------------------------------------
data
HyperdataDocumentV3
=
HyperdataDocumentV3
{
_hdv3_publication_day
::
!
(
Maybe
Int
)
data
HyperdataDocumentV3
=
HyperdataDocumentV3
{
_hdv3_publication_day
::
!
(
Maybe
Int
)
,
_hdv3_language_iso2
::
!
(
Maybe
Text
)
,
_hdv3_language_iso2
::
!
(
Maybe
Text
)
...
@@ -132,9 +135,32 @@ instance Hyperdata HyperdataDocument
...
@@ -132,9 +135,32 @@ instance Hyperdata HyperdataDocument
instance
Hyperdata
HyperdataDocumentV3
instance
Hyperdata
HyperdataDocumentV3
------------------------------------------------------------------------
------------------------------------------------------------------------
$
(
makeLenses
''
H
yperdataDocument
)
$
(
makeLenses
''
H
yperdataDocument
)
makePrisms
''
H
yperdataDocument
$
(
makeLenses
''
H
yperdataDocumentV3
)
$
(
makeLenses
''
H
yperdataDocumentV3
)
$
(
deriveJSON
(
unPrefix
"_hd_"
)
''
H
yperdataDocument
)
-- $(deriveJSON (unPrefix "_hd_") ''HyperdataDocument)
instance
FromJSON
HyperdataDocument
where
parseJSON
=
genericParseJSON
(
defaultOptions
{
sumEncoding
=
ObjectWithSingleField
,
fieldLabelModifier
=
unCapitalize
.
dropPrefix
"_hd_"
,
omitNothingFields
=
True
}
)
instance
ToJSON
HyperdataDocument
where
toJSON
=
genericToJSON
(
defaultOptions
{
sumEncoding
=
ObjectWithSingleField
,
fieldLabelModifier
=
unCapitalize
.
dropPrefix
"_hd_"
,
omitNothingFields
=
True
}
)
$
(
deriveJSON
(
unPrefix
"_hdv3_"
)
''
H
yperdataDocumentV3
)
$
(
deriveJSON
(
unPrefix
"_hdv3_"
)
''
H
yperdataDocumentV3
)
instance
ToSchema
HyperdataDocument
where
instance
ToSchema
HyperdataDocument
where
...
...
src/Gargantext/Database/Admin/Types/Node.hs
View file @
942f8bef
...
@@ -57,7 +57,7 @@ type MasterUserId = UserId
...
@@ -57,7 +57,7 @@ type MasterUserId = UserId
type
Node
json
=
NodePoly
NodeId
NodeTypeId
UserId
(
Maybe
ParentId
)
NodeName
UTCTime
json
type
Node
json
=
NodePoly
NodeId
NodeTypeId
UserId
(
Maybe
ParentId
)
NodeName
UTCTime
json
-- | NodeSearch (queries)
-- | NodeSearch (queries)
type
NodeSearch
json
=
NodePolySearch
NodeId
NodeTypeId
UserId
(
Maybe
ParentId
)
NodeName
UTCTime
json
(
Maybe
TSVector
)
--
type NodeSearch json = NodePolySearch NodeId NodeTypeId UserId (Maybe ParentId) NodeName UTCTime json (Maybe TSVector)
------------------------------------------------------------------------
------------------------------------------------------------------------
...
...
src/Gargantext/Database/Query/Facet.hs
View file @
942f8bef
...
@@ -75,23 +75,23 @@ import Gargantext.Database.Schema.Node
...
@@ -75,23 +75,23 @@ import Gargantext.Database.Schema.Node
--instance FromJSON Facet
--instance FromJSON Facet
--instance ToJSON Facet
--instance ToJSON Facet
type
Favorite
=
Int
type
Category
=
Int
type
Title
=
Text
type
Title
=
Text
-- TODO remove Title
-- TODO remove Title
type
FacetDoc
=
Facet
NodeId
UTCTime
Title
HyperdataDocument
(
Maybe
Favorite
)
(
Maybe
Double
)
type
FacetDoc
=
Facet
NodeId
UTCTime
Title
HyperdataDocument
(
Maybe
Category
)
(
Maybe
Double
)
-- type FacetSources = FacetDoc
-- type FacetSources = FacetDoc
-- type FacetAuthors = FacetDoc
-- type FacetAuthors = FacetDoc
-- type FacetTerms = FacetDoc
-- type FacetTerms = FacetDoc
data
Facet
id
created
title
hyperdata
favorite
ngramCount
=
data
Facet
id
created
title
hyperdata
category
ngramCount
=
FacetDoc
{
facetDoc_id
::
id
FacetDoc
{
facetDoc_id
::
id
,
facetDoc_created
::
created
,
facetDoc_created
::
created
,
facetDoc_title
::
title
,
facetDoc_title
::
title
,
facetDoc_hyperdata
::
hyperdata
,
facetDoc_hyperdata
::
hyperdata
,
facetDoc_
favorite
::
favorite
,
facetDoc_
category
::
category
,
facetDoc_
ngramCount
::
ngramCount
,
facetDoc_
score
::
ngramCount
}
deriving
(
Show
,
Generic
)
}
deriving
(
Show
,
Generic
)
{- | TODO after demo
{- | TODO after demo
data Facet id date hyperdata score =
data Facet id date hyperdata score =
...
@@ -318,8 +318,8 @@ orderWith (Just DateDesc) = desc facetDoc_created
...
@@ -318,8 +318,8 @@ orderWith (Just DateDesc) = desc facetDoc_created
orderWith
(
Just
TitleAsc
)
=
asc
facetDoc_title
orderWith
(
Just
TitleAsc
)
=
asc
facetDoc_title
orderWith
(
Just
TitleDesc
)
=
desc
facetDoc_title
orderWith
(
Just
TitleDesc
)
=
desc
facetDoc_title
orderWith
(
Just
ScoreAsc
)
=
asc
facetDoc_
favorite
orderWith
(
Just
ScoreAsc
)
=
asc
facetDoc_
category
orderWith
(
Just
ScoreDesc
)
=
desc
facetDoc_
favorite
orderWith
(
Just
ScoreDesc
)
=
desc
facetDoc_
category
orderWith
(
Just
SourceAsc
)
=
asc
facetDoc_source
orderWith
(
Just
SourceAsc
)
=
asc
facetDoc_source
orderWith
(
Just
SourceDesc
)
=
desc
facetDoc_source
orderWith
(
Just
SourceDesc
)
=
desc
facetDoc_source
...
...
src/Gargantext/Database/Schema/Node.hs
View file @
942f8bef
...
@@ -156,16 +156,17 @@ $(deriveJSON (unPrefix "_ns_") ''NodePolySearch)
...
@@ -156,16 +156,17 @@ $(deriveJSON (unPrefix "_ns_") ''NodePolySearch)
$
(
makeLenses
''
N
odePolySearch
)
$
(
makeLenses
''
N
odePolySearch
)
nodeTableSearch
::
Table
NodeSearchWrite
NodeSearchRead
nodeTableSearch
::
Table
NodeSearchWrite
NodeSearchRead
nodeTableSearch
=
Table
"nodes"
(
pNodeSearch
NodeSearch
{
_ns_id
=
optional
"id"
nodeTableSearch
=
Table
"nodes"
(
pNodeSearch
,
_ns_typename
=
required
"typename"
NodeSearch
{
_ns_id
=
optional
"id"
,
_ns_userId
=
required
"user_id"
,
_ns_typename
=
required
"typename"
,
_ns_userId
=
required
"user_id"
,
_ns_parentId
=
required
"parent_id"
,
_ns_name
=
required
"name"
,
_ns_parentId
=
required
"parent_id"
,
_ns_date
=
optional
"date"
,
_ns_name
=
required
"name"
,
_ns_date
=
optional
"date"
,
_ns_hyperdata
=
required
"hyperdata"
,
_ns_search
=
optional
"search"
,
_ns_hyperdata
=
required
"hyperdata"
}
,
_ns_search
=
optional
"search"
)
}
)
------------------------------------------------------------------------
------------------------------------------------------------------------
src/Gargantext/Prelude/Utils.hs
View file @
942f8bef
...
@@ -20,6 +20,7 @@ import Control.Monad.Reader (MonadReader)
...
@@ -20,6 +20,7 @@ import Control.Monad.Reader (MonadReader)
import
Control.Monad.Reader
(
ask
)
import
Control.Monad.Reader
(
ask
)
import
Data.Text
(
Text
)
import
Data.Text
(
Text
)
import
GHC.IO
(
FilePath
)
import
GHC.IO
(
FilePath
)
import
Gargantext.Config
import
Gargantext.API.Admin.Settings
import
Gargantext.API.Admin.Settings
import
Gargantext.Database.Admin.Types.Node
(
NodeId
,
NodeType
)
import
Gargantext.Database.Admin.Types.Node
(
NodeId
,
NodeType
)
import
Gargantext.Prelude
import
Gargantext.Prelude
...
@@ -41,6 +42,14 @@ data NodeToHash = NodeToHash { nodeType :: NodeType
...
@@ -41,6 +42,14 @@ data NodeToHash = NodeToHash { nodeType :: NodeType
type
FolderPath
=
FilePath
type
FolderPath
=
FilePath
type
FileName
=
FilePath
type
FileName
=
FilePath
-- | toPath example of use:
-- toPath 2 "gargantexthello"
-- ("ga/rg","antexthello")
--
-- toPath 3 "gargantexthello"
-- ("gar/gan","texthello")
toPath
::
Int
->
Text
->
(
FolderPath
,
FileName
)
toPath
::
Int
->
Text
->
(
FolderPath
,
FileName
)
toPath
n
x
=
(
Text
.
unpack
$
Text
.
intercalate
"/"
[
x1
,
x2
],
Text
.
unpack
xs
)
toPath
n
x
=
(
Text
.
unpack
$
Text
.
intercalate
"/"
[
x1
,
x2
],
Text
.
unpack
xs
)
where
where
...
@@ -57,7 +66,7 @@ class ReadFile a where
...
@@ -57,7 +66,7 @@ class ReadFile a where
writeFile
::
(
MonadReader
env
m
,
MonadBase
IO
m
,
HasSettings
env
,
SaveFile
a
)
writeFile
::
(
MonadReader
env
m
,
MonadBase
IO
m
,
HasSettings
env
,
SaveFile
a
)
=>
a
->
m
FilePath
=>
a
->
m
FilePath
writeFile
a
=
do
writeFile
a
=
do
dataPath
<-
view
(
settings
.
fileFolder
)
<$>
ask
dataPath
<-
view
(
settings
.
config
.
gc_datafilepath
)
<$>
ask
(
fp
,
fn
)
<-
liftBase
$
(
toPath
3
)
.
hash
.
show
<$>
newStdGen
(
fp
,
fn
)
<-
liftBase
$
(
toPath
3
)
.
hash
.
show
<$>
newStdGen
let
foldPath
=
dataPath
<>
"/"
<>
fp
let
foldPath
=
dataPath
<>
"/"
<>
fp
...
@@ -72,5 +81,5 @@ writeFile a = do
...
@@ -72,5 +81,5 @@ writeFile a = do
readFile
::
(
MonadReader
env
m
,
MonadBase
IO
m
,
HasSettings
env
,
ReadFile
a
)
readFile
::
(
MonadReader
env
m
,
MonadBase
IO
m
,
HasSettings
env
,
ReadFile
a
)
=>
FilePath
->
m
a
=>
FilePath
->
m
a
readFile
fp
=
do
readFile
fp
=
do
dataPath
<-
view
(
settings
.
fileFolder
)
<$>
ask
dataPath
<-
view
(
settings
.
config
.
gc_datafilepath
)
<$>
ask
liftBase
$
readFile'
$
dataPath
<>
"/"
<>
fp
liftBase
$
readFile'
$
dataPath
<>
"/"
<>
fp
src/Gargantext/Text/List.hs
View file @
942f8bef
...
@@ -21,7 +21,8 @@ import Gargantext.API.Ngrams (NgramsElement, mkNgramsElement, RootParent(..), mS
...
@@ -21,7 +21,8 @@ import Gargantext.API.Ngrams (NgramsElement, mkNgramsElement, RootParent(..), mS
-- import Gargantext.API.Ngrams.Tools (getCoocByNgrams', Diagonal(..))
-- import Gargantext.API.Ngrams.Tools (getCoocByNgrams', Diagonal(..))
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core
(
Lang
(
..
))
import
Gargantext.Core.Types
(
ListType
(
..
),
MasterCorpusId
,
UserCorpusId
,
Ordering
(
..
))
import
Gargantext.Core.Types
(
ListType
(
..
),
MasterCorpusId
,
UserCorpusId
,
Ordering
(
..
))
import
Gargantext.Database.Action.Metrics.NgramsByNode
(
getTficf
,
sortTficf
,
ngramsGroup
,
getNodesByNgramsUser
,
groupNodesByNgramsWith
)
import
Gargantext.Database.Action.Metrics.NgramsByNode
(
getTficf
,
ngramsGroup
,
getNodesByNgramsUser
,
groupNodesByNgramsWith
)
import
Gargantext.Text.Metrics.TFICF
(
sortTficf
)
import
Gargantext.Database.Prelude
(
Cmd
)
import
Gargantext.Database.Prelude
(
Cmd
)
import
Gargantext.Database.Schema.Ngrams
(
NgramsType
(
..
))
import
Gargantext.Database.Schema.Ngrams
(
NgramsType
(
..
))
import
Gargantext.Prelude
import
Gargantext.Prelude
...
@@ -199,7 +200,6 @@ toGargList stop l n = case stop n of
...
@@ -199,7 +200,6 @@ toGargList stop l n = case stop n of
False
->
(
l
,
n
)
False
->
(
l
,
n
)
isStopTerm
::
StopSize
->
Text
->
Bool
isStopTerm
::
StopSize
->
Text
->
Bool
isStopTerm
(
StopSize
n
)
x
=
Text
.
length
x
<
n
||
any
isStopChar
(
Text
.
unpack
x
)
isStopTerm
(
StopSize
n
)
x
=
Text
.
length
x
<
n
||
any
isStopChar
(
Text
.
unpack
x
)
where
where
...
...
src/Gargantext/Text/Metrics/TFICF.hs
View file @
942f8bef
...
@@ -19,14 +19,20 @@ module Gargantext.Text.Metrics.TFICF ( TFICF
...
@@ -19,14 +19,20 @@ module Gargantext.Text.Metrics.TFICF ( TFICF
,
Total
(
..
)
,
Total
(
..
)
,
Count
(
..
)
,
Count
(
..
)
,
tficf
,
tficf
,
sortTficf
)
)
where
where
import
Data.Text
(
Text
)
import
Data.Text
(
Text
)
import
Gargantext.Prelude
import
Gargantext.Prelude
import
Data.Set
(
Set
)
import
Gargantext.Core.Types
(
Ordering
(
..
))
import
Data.Map.Strict
(
Map
,
toList
)
import
qualified
Data.Ord
as
DO
(
Down
(
..
))
import
qualified
Data.List
as
List
path
::
Text
path
::
Text
path
=
"
Gargantext.Text.Metrics.TFICF
"
path
=
"
[G.T.Metrics.TFICF]
"
type
TFICF
=
Double
type
TFICF
=
Double
...
@@ -42,8 +48,14 @@ tficf :: TficfContext Count Total
...
@@ -42,8 +48,14 @@ tficf :: TficfContext Count Total
->
TFICF
->
TFICF
tficf
(
TficfInfra
(
Count
ic
)
(
Total
it
)
)
tficf
(
TficfInfra
(
Count
ic
)
(
Total
it
)
)
(
TficfSupra
(
Count
sc
)
(
Total
st
)
)
(
TficfSupra
(
Count
sc
)
(
Total
st
)
)
|
it
>=
ic
&&
st
>=
sc
=
(
ic
/
it
)
/
log
(
sc
/
st
)
|
it
>=
ic
&&
st
>=
sc
&&
it
<=
st
=
(
ic
/
it
)
/
log
(
sc
/
st
)
|
otherwise
=
panic
$
"[ERR]"
<>
path
<>
" Frequency impossible"
|
otherwise
=
panic
$
"[ERR]"
<>
path
<>
" Frequency impossible"
tficf
_
_
=
panic
$
"[ERR]"
<>
path
<>
"Undefined for these contexts"
tficf
_
_
=
panic
$
"[ERR]"
<>
path
<>
"Undefined for these contexts"
sortTficf
::
Ordering
->
(
Map
Text
(
Double
,
Set
Text
))
->
[
(
Text
,(
Double
,
Set
Text
))]
sortTficf
Down
=
List
.
sortOn
(
DO
.
Down
.
fst
.
snd
)
.
toList
sortTficf
Up
=
List
.
sortOn
(
fst
.
snd
)
.
toList
src/Gargantext/Viz/Graph.hs
View file @
942f8bef
...
@@ -16,7 +16,6 @@ Portability : POSIX
...
@@ -16,7 +16,6 @@ Portability : POSIX
module
Gargantext.Viz.Graph
module
Gargantext.Viz.Graph
where
where
import
Control.Lens
(
makeLenses
)
import
Control.Lens
(
makeLenses
)
import
Data.ByteString.Lazy
as
DBL
(
readFile
,
writeFile
)
import
Data.ByteString.Lazy
as
DBL
(
readFile
,
writeFile
)
import
Data.Text
(
Text
,
pack
)
import
Data.Text
(
Text
,
pack
)
...
...
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