[search] search query json format fixes

Related to haskell-gargantext#441

Related to commmit
haskell-gargantext@bc29319c
parent 3b50603a
Pipeline #7205 passed with stages
in 19 minutes and 52 seconds
...@@ -55,7 +55,7 @@ searchIframesCpt = here.component "searchIframes" cpt ...@@ -55,7 +55,7 @@ searchIframesCpt = here.component "searchIframes" cpt
pure $ pure $
if isIsTex_Advanced search'.datafield then divIframe { frameSource: Istex, iframeRef, search } [] if isIsTex_Advanced search'.datafield then divIframe { frameSource: Istex, iframeRef, search } []
else if Just Web == search'.datafield then divIframe { frameSource: Searx, iframeRef, search } [] else if Web == search'.datafield then divIframe { frameSource: Searx, iframeRef, search } []
else H.div {} [] else H.div {} []
type IFrameProps = type IFrameProps =
......
...@@ -36,8 +36,7 @@ here = R2.here "Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField ...@@ -36,8 +36,7 @@ here = R2.here "Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField
defaultSearch :: Search defaultSearch :: Search
defaultSearch = defaultSearch =
{ databases: Empty { datafield: External Empty
, datafield: Just (External Empty)
, node_id: Nothing , node_id: Nothing
, epoApiUser: Nothing , epoApiUser: Nothing
, epoApiToken: Nothing , epoApiToken: Nothing
...@@ -201,97 +200,73 @@ componentCNRSCpt = here.component "componentCNRS" cpt ...@@ -201,97 +200,73 @@ componentCNRSCpt = here.component "componentCNRS" cpt
--, filterInput fi --, filterInput fi
] ]
isExternal :: Maybe DataField -> Boolean isExternal :: DataField -> Boolean
isExternal (Just (External _)) = true isExternal (External _) = true
isExternal _ = false isExternal _ = false
isArxiv :: Maybe DataField -> Boolean isArxiv :: DataField -> Boolean
isArxiv isArxiv (External Arxiv) = true
( Just
(External Arxiv)
) = true
isArxiv _ = false isArxiv _ = false
isHAL :: Maybe DataField -> Boolean isHAL :: DataField -> Boolean
isHAL isHAL (External (HAL _)) = true
( Just
(External (HAL _))
) = true
isHAL _ = false isHAL _ = false
isIsTex :: Maybe DataField -> Boolean isIsTex :: DataField -> Boolean
isIsTex isIsTex (External (IsTex)) = true
( Just
(External (IsTex))
) = true
isIsTex _ = false isIsTex _ = false
isIMT :: Maybe DataField -> Boolean isIMT :: DataField -> Boolean
isIMT isIMT
( Just ( External
( External ( HAL
( HAL (Just (IMT _))
(Just (IMT _))
)
) )
) = true ) = true
isIMT _ = false isIMT _ = false
isCNRS :: Maybe DataField -> Boolean isCNRS :: DataField -> Boolean
isCNRS isCNRS
( Just ( External
( External ( HAL
( HAL (Just (CNRS _))
(Just (CNRS _))
)
) )
) = true ) = true
isCNRS _ = false isCNRS _ = false
isPubmed :: Maybe DataField -> Boolean isPubmed :: DataField -> Boolean
isPubmed isPubmed (External (PubMed _)) = true
( Just
(External (PubMed _))
) = true
isPubmed _ = false isPubmed _ = false
getPubmedAPIKey :: Maybe DataField -> Maybe String getPubmedAPIKey :: DataField -> Maybe String
getPubmedAPIKey (Just (External (PubMed mAPI))) = mAPI getPubmedAPIKey (External (PubMed mAPI)) = mAPI
getPubmedAPIKey _ = Nothing getPubmedAPIKey _ = Nothing
isEPO :: Maybe DataField -> Boolean isEPO :: DataField -> Boolean
isEPO isEPO (External EPO) = true
( Just
(External EPO)
) = true
isEPO _ = false isEPO _ = false
needsLang :: Maybe DataField -> Boolean needsLang :: DataField -> Boolean
needsLang (Just Gargantext) = true needsLang Gargantext = true
needsLang (Just Web) = true needsLang Web = true
needsLang needsLang (External (HAL _)) = true
( Just
(External (HAL _))
) = true
needsLang _ = false needsLang _ = false
isIn :: IMT_org -> Maybe DataField -> Boolean isIn :: IMT_org -> DataField -> Boolean
isIn isIn
org org
( Just ( External
( External ( HAL
( HAL ( Just
( Just (IMT imtOrgs)
(IMT imtOrgs)
)
) )
) )
) = Set.member org imtOrgs ) = Set.member org imtOrgs
isIn _ _ = false isIn _ _ = false
updateFilter :: IMT_org -> Array IMT_org -> Maybe DataField -> Maybe DataField updateFilter :: IMT_org -> Array IMT_org -> DataField -> DataField
updateFilter org allIMTorgs (Just (External (HAL (Just (IMT imtOrgs))))) = updateFilter org allIMTorgs (External (HAL (Just (IMT imtOrgs)))) =
Just $ External $ HAL $ Just $ IMT imtOrgs' External $ HAL $ Just $ IMT imtOrgs'
where where
imtOrgs' = imtOrgs' =
if Set.member org imtOrgs then if Set.member org imtOrgs then
...@@ -300,7 +275,7 @@ updateFilter org allIMTorgs (Just (External (HAL (Just (IMT imtOrgs))))) = ...@@ -300,7 +275,7 @@ updateFilter org allIMTorgs (Just (External (HAL (Just (IMT imtOrgs))))) =
else if org == All_IMT then Set.fromFoldable allIMTorgs else if org == All_IMT then Set.fromFoldable allIMTorgs
else Set.insert org imtOrgs else Set.insert org imtOrgs
updateFilter org allIMTorgs _ = (Just (External (HAL (Just (IMT imtOrgs'))))) updateFilter org allIMTorgs _ = (External (HAL (Just (IMT imtOrgs'))))
where where
imtOrgs' = imtOrgs' =
if org == All_IMT then Set.fromFoldable allIMTorgs if org == All_IMT then Set.fromFoldable allIMTorgs
...@@ -353,8 +328,7 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt ...@@ -353,8 +328,7 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt
[ H.div { className: "text-primary text-bold p-1" } [ H.text "Search options:" ] [ H.div { className: "text-primary text-bold p-1" } [ H.text "Search options:" ]
, H.div { className: "nav nav-tabs" } ((liItem search') <$> dataFields) , H.div { className: "nav nav-tabs" } ((liItem search') <$> dataFields)
, H.div { className: "center p-1" } , H.div { className: "center p-1" }
[ H.text [ H.text $ doc datafield
$ maybe "TODO: add Doc Instance" doc datafield
] ]
] ]
where where
...@@ -369,8 +343,7 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt ...@@ -369,8 +343,7 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt
, on: , on:
{ click: \_ -> T.modify_ { click: \_ -> T.modify_
( _ ( _
{ datafield = Just df' { datafield = df'
, databases = datafield2database df'
} }
) )
search search
...@@ -404,7 +377,7 @@ databaseInputCpt = here.component "databaseInput" cpt ...@@ -404,7 +377,7 @@ databaseInputCpt = here.component "databaseInput" cpt
let let
db = case search'.datafield of db = case search'.datafield of
(Just (External x)) -> Just x (External x) -> Just x
_ -> Nothing _ -> Nothing
dbInputValue = fromMaybe "" $ dbToInputValue <$> db dbInputValue = fromMaybe "" $ dbToInputValue <$> db
...@@ -423,8 +396,7 @@ databaseInputCpt = here.component "databaseInput" cpt ...@@ -423,8 +396,7 @@ databaseInputCpt = here.component "databaseInput" cpt
T.modify_ T.modify_
( _ ( _
{ datafield = Just $ External updatedValue { datafield = External updatedValue
, databases = updatedValue
} }
) )
search search
...@@ -481,7 +453,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt ...@@ -481,7 +453,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt
R.useEffectOnce' $ do R.useEffectOnce' $ do
when (getPubmedAPIKey search'.datafield /= pubmedAPIKey) $ do when (getPubmedAPIKey search'.datafield /= pubmedAPIKey) $ do
T.modify_ (\s -> s { datafield = Just $ External $ PubMed pubmedAPIKey }) search T.modify_ (\s -> s { datafield = External $ PubMed pubmedAPIKey }) search
-- T.write_ (search' { pubmedApiKey = pubmedAPIKey }) search -- T.write_ (search' { pubmedApiKey = pubmedAPIKey }) search
pure $ pure $
...@@ -506,7 +478,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt ...@@ -506,7 +478,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt
s -> Just s s -> Just s
T.modify_ T.modify_
( \s -> ( \s ->
s { datafield = Just $ External $ PubMed mVal } s { datafield = External $ PubMed mVal }
) )
searchS searchS
...@@ -615,7 +587,7 @@ orgInputCpt = here.component "orgInput" cpt ...@@ -615,7 +587,7 @@ orgInputCpt = here.component "orgInput" cpt
let let
change e = do change e = do
let value = R.unsafeEventValue e let value = R.unsafeEventValue e
T.modify_ (_ { datafield = Just $ External $ HAL $ read value }) search T.modify_ (_ { datafield = External $ HAL $ read value }) search
pure $ H.div { className: "form-group p-1 m-0" } pure $ H.div { className: "form-group p-1 m-0" }
[ H.div { className: "text-primary center" } [ H.text "filter with organization: " ] [ H.div { className: "text-primary center" } [ H.text "filter with organization: " ]
...@@ -689,7 +661,7 @@ datafieldInputCpt = here.component "datafieldInput" cpt ...@@ -689,7 +661,7 @@ datafieldInputCpt = here.component "datafieldInput" cpt
else H.div {} [] else H.div {} []
, if needsLang search'.datafield then , if needsLang search'.datafield then
if search'.datafield == Just Web then if search'.datafield == Web then
langNav { langs: A.filter (\lang -> lang == FR) langs, search } [] langNav { langs: A.filter (\lang -> lang == FR) langs, search } []
else else
langNav { langs, search } [] langNav { langs, search } []
...@@ -822,19 +794,10 @@ triggerSearch { onSearch, errors, session, selection, search } = ...@@ -822,19 +794,10 @@ triggerSearch { onSearch, errors, session, selection, search } =
-- modalShow "addCorpus" -- modalShow "addCorpus"
searchQuery :: ListSelection.Selection -> Search -> SearchQuery searchQuery :: ListSelection.Selection -> Search -> SearchQuery
searchQuery selection { datafield: Nothing, term } =
over SearchQuery
( _
{ query = term
, selection = selection
}
)
defaultSearchQuery
-- TODO Simplify both HAL Nothing and HAL (Just IMT) cases -- TODO Simplify both HAL Nothing and HAL (Just IMT) cases
searchQuery searchQuery
selection selection
{ databases { datafield: datafield@(External (HAL Nothing))
, datafield: datafield@(Just (External (HAL Nothing)))
, lang , lang
, node_id , node_id
, term , term
...@@ -842,8 +805,7 @@ searchQuery ...@@ -842,8 +805,7 @@ searchQuery
} = } =
over SearchQuery over SearchQuery
( _ ( _
{ databases = databases { datafield = datafield
, datafield = datafield
, lang = lang , lang = lang
, node_id = node_id , node_id = node_id
, query = queryHAL term Nothing lang years , query = queryHAL term Nothing lang years
...@@ -854,8 +816,7 @@ searchQuery ...@@ -854,8 +816,7 @@ searchQuery
searchQuery searchQuery
selection selection
{ databases { datafield: datafield@(External (HAL (Just (IMT imtOrgs))))
, datafield: datafield@(Just (External (HAL (Just (IMT imtOrgs)))))
, lang , lang
, node_id , node_id
, term , term
...@@ -863,8 +824,7 @@ searchQuery ...@@ -863,8 +824,7 @@ searchQuery
} = } =
over SearchQuery over SearchQuery
( _ ( _
{ databases = databases { datafield = datafield
, datafield = datafield
, lang = lang , lang = lang
, node_id = node_id , node_id = node_id
, query = queryHAL term (Just imtOrgs) lang years , query = queryHAL term (Just imtOrgs) lang years
...@@ -874,8 +834,7 @@ searchQuery ...@@ -874,8 +834,7 @@ searchQuery
defaultSearchQuery defaultSearchQuery
searchQuery searchQuery
selection selection
{ databases { datafield: datafield@(External EPO)
, datafield: datafield@(Just (External EPO))
, lang , lang
, epoApiUser , epoApiUser
, epoApiToken , epoApiToken
...@@ -884,8 +843,7 @@ searchQuery ...@@ -884,8 +843,7 @@ searchQuery
} = } =
over SearchQuery over SearchQuery
( _ ( _
{ databases = databases { datafield = datafield
, datafield = datafield
, lang = lang , lang = lang
, node_id = node_id , node_id = node_id
, epoAPIUser = epoApiUser , epoAPIUser = epoApiUser
...@@ -897,29 +855,25 @@ searchQuery ...@@ -897,29 +855,25 @@ searchQuery
defaultSearchQuery defaultSearchQuery
searchQuery searchQuery
selection selection
{ databases { datafield: datafield@(External (PubMed mAPIKey))
, datafield: datafield@(Just (External (PubMed mAPIKey)))
, lang , lang
, node_id , node_id
, term , term
} = } =
over SearchQuery over SearchQuery
( _ ( _
{ databases = databases { datafield = datafield
, datafield = datafield
, lang = lang , lang = lang
, node_id = node_id , node_id = node_id
, pubmedAPIKey = mAPIKey
, query = term , query = term
, selection = selection , selection = selection
} }
) )
defaultSearchQuery defaultSearchQuery
searchQuery selection { databases, datafield, lang, term, node_id } = searchQuery selection { datafield, lang, term, node_id } =
over SearchQuery over SearchQuery
( _ ( _
{ databases = databases { datafield = datafield
, datafield = datafield
, lang = lang , lang = lang
, node_id = node_id , node_id = node_id
, query = term , query = term
......
...@@ -2,6 +2,7 @@ module Gargantext.Components.Forest.Tree.Node.Action.Search.Types where ...@@ -2,6 +2,7 @@ module Gargantext.Components.Forest.Tree.Node.Action.Search.Types where
import Gargantext.Prelude import Gargantext.Prelude
import Data.Array as A
-- import Data.Bounded (class Bounded) -- import Data.Bounded (class Bounded)
import Data.Either (Either) import Data.Either (Either)
-- import Data.Enum (class Enum, class BoundedEnum) -- import Data.Enum (class Enum, class BoundedEnum)
...@@ -26,8 +27,7 @@ import URI.Extra.QueryPairs as QP ...@@ -26,8 +27,7 @@ import URI.Extra.QueryPairs as QP
import URI.Query as Q import URI.Query as Q
type Search = type Search =
{ databases :: Database { datafield :: DataField
, datafield :: Maybe DataField
, url :: String , url :: String
, lang :: Maybe Lang , lang :: Maybe Lang
, node_id :: Maybe Int , node_id :: Maybe Int
...@@ -37,11 +37,8 @@ type Search = ...@@ -37,11 +37,8 @@ type Search =
, years :: Array String , years :: Array String
} }
isIsTex_Advanced :: Maybe DataField -> Boolean isIsTex_Advanced :: DataField -> Boolean
isIsTex_Advanced isIsTex_Advanced (External (IsTex_Advanced)) = true
( Just
(External (IsTex_Advanced))
) = true
isIsTex_Advanced _ = false isIsTex_Advanced _ = false
------------------------------------------------------------------------ ------------------------------------------------------------------------
...@@ -80,7 +77,7 @@ instance Doc DataField where ...@@ -80,7 +77,7 @@ instance Doc DataField where
derive instance Eq DataField derive instance Eq DataField
instance JSON.WriteForeign DataField where instance JSON.WriteForeign DataField where
writeImpl (External db) = JSON.writeImpl { "External": JSON.writeImpl $ show db } writeImpl (External db) = JSON.writeImpl { "External": db }
writeImpl Gargantext = JSON.writeImpl "Gargantext" writeImpl Gargantext = JSON.writeImpl "Gargantext"
writeImpl Web = JSON.writeImpl "Web" writeImpl Web = JSON.writeImpl "Web"
writeImpl Files = JSON.writeImpl "Files" writeImpl Files = JSON.writeImpl "Files"
...@@ -175,7 +172,9 @@ instance Doc Database where ...@@ -175,7 +172,9 @@ instance Doc Database where
derive instance Eq Database derive instance Eq Database
instance JSON.WriteForeign Database where instance JSON.WriteForeign Database where
writeImpl f = JSON.writeImpl $ show f writeImpl (PubMed mAPIKey) = JSON.writeImpl { "db": "PubMed", "api_key": mAPIKey }
writeImpl (HAL mOrg) = JSON.writeImpl { "db": "HAL", "org": mOrg }
writeImpl d = JSON.writeImpl { "db": show d }
allDatabases :: Array Database allDatabases :: Array Database
allDatabases = allDatabases =
...@@ -251,6 +250,9 @@ instance Read Org where ...@@ -251,6 +250,9 @@ instance Read Org where
read _ = Nothing read _ = Nothing
derive instance Eq Org derive instance Eq Org
-- | NOTE: IMT_org list isn't really used here in JSON
-- | encoding. Instead, for HAL, a special query is constructed in
-- | SearchField (queryHAL function).)
instance JSON.WriteForeign Org where instance JSON.WriteForeign Org where
writeImpl = JSON.writeImpl <<< show writeImpl = JSON.writeImpl <<< show
...@@ -293,8 +295,7 @@ instance Show SearchOrder where ...@@ -293,8 +295,7 @@ instance Show SearchOrder where
newtype SearchQuery = SearchQuery newtype SearchQuery = SearchQuery
{ query :: String { query :: String
, databases :: Database , datafield :: DataField
, datafield :: Maybe DataField
, files_id :: Array String , files_id :: Array String
, lang :: Maybe Lang , lang :: Maybe Lang
, limit :: Maybe Int , limit :: Maybe Int
...@@ -303,7 +304,6 @@ newtype SearchQuery = SearchQuery ...@@ -303,7 +304,6 @@ newtype SearchQuery = SearchQuery
, order :: Maybe SearchOrder , order :: Maybe SearchOrder
, epoAPIUser :: Maybe String , epoAPIUser :: Maybe String
, epoAPIToken :: Maybe String , epoAPIToken :: Maybe String
, pubmedAPIKey :: Maybe String
, selection :: ListSelection.Selection , selection :: ListSelection.Selection
} }
...@@ -328,34 +328,29 @@ instance GT.ToQuery SearchQuery where ...@@ -328,34 +328,29 @@ instance GT.ToQuery SearchQuery where
instance JSON.WriteForeign SearchQuery where instance JSON.WriteForeign SearchQuery where
writeImpl writeImpl
( SearchQuery ( SearchQuery
{ databases { datafield
, datafield
, lang , lang
, node_id , node_id
, epoAPIUser , epoAPIUser
, epoAPIToken , epoAPIToken
, pubmedAPIKey
, query , query
, selection , selection
} }
) = ) =
JSON.writeImpl JSON.writeImpl
{ query: query -- String.replace (String.Pattern "\"") (String.Replacement "\\\"") query { query: query -- String.replace (String.Pattern "\"") (String.Replacement "\\\"") query
, databases
, datafield , datafield
, lang: maybe "EN" show lang , lang: maybe "EN" show lang
, node_id: fromMaybe 0 node_id , node_id: fromMaybe 0 node_id
, flowListWith: selection , flowListWith: selection
, epoAPIUser , epoAPIUser
, epoAPIToken , epoAPIToken
, pubmedAPIKey
} }
defaultSearchQuery :: SearchQuery defaultSearchQuery :: SearchQuery
defaultSearchQuery = SearchQuery defaultSearchQuery = SearchQuery
{ query: "" { query: ""
, databases: Empty , datafield: External Empty
, datafield: Nothing
, files_id: [] , files_id: []
, lang: Nothing , lang: Nothing
, limit: Nothing , limit: Nothing
...@@ -364,7 +359,6 @@ defaultSearchQuery = SearchQuery ...@@ -364,7 +359,6 @@ defaultSearchQuery = SearchQuery
, order: Nothing , order: Nothing
, epoAPIUser: Nothing , epoAPIUser: Nothing
, epoAPIToken: Nothing , epoAPIToken: Nothing
, pubmedAPIKey: Nothing
, selection: ListSelection.NoList -- MyListsFirst , selection: ListSelection.NoList -- MyListsFirst
} }
......
...@@ -68,8 +68,7 @@ asyncProgressCpt = R2.hereComponent here "asyncProgress" hCpt ...@@ -68,8 +68,7 @@ asyncProgressCpt = R2.hereComponent here "asyncProgress" hCpt
here.log "[onProgress] TODO: Implement status killed" here.log "[onProgress] TODO: Implement status killed"
if if
GT.asyncTaskLogIsFinished atl || GT.asyncTaskLogIsFinished atl then do
GT.asyncTaskLogIsError atl then do
handleErrorInAsyncTaskLog errors atl handleErrorInAsyncTaskLog errors atl
-- resetInterval intervalIdRef Nothing (pure unit) -- resetInterval intervalIdRef Nothing (pure unit)
onFinish unit onFinish unit
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment