[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
pure $
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 {} []
type IFrameProps =
......
......@@ -36,8 +36,7 @@ here = R2.here "Gargantext.Components.Forest.Tree.Node.Action.Search.SearchField
defaultSearch :: Search
defaultSearch =
{ databases: Empty
, datafield: Just (External Empty)
{ datafield: External Empty
, node_id: Nothing
, epoApiUser: Nothing
, epoApiToken: Nothing
......@@ -201,97 +200,73 @@ componentCNRSCpt = here.component "componentCNRS" cpt
--, filterInput fi
]
isExternal :: Maybe DataField -> Boolean
isExternal (Just (External _)) = true
isExternal :: DataField -> Boolean
isExternal (External _) = true
isExternal _ = false
isArxiv :: Maybe DataField -> Boolean
isArxiv
( Just
(External Arxiv)
) = true
isArxiv :: DataField -> Boolean
isArxiv (External Arxiv) = true
isArxiv _ = false
isHAL :: Maybe DataField -> Boolean
isHAL
( Just
(External (HAL _))
) = true
isHAL :: DataField -> Boolean
isHAL (External (HAL _)) = true
isHAL _ = false
isIsTex :: Maybe DataField -> Boolean
isIsTex
( Just
(External (IsTex))
) = true
isIsTex :: DataField -> Boolean
isIsTex (External (IsTex)) = true
isIsTex _ = false
isIMT :: Maybe DataField -> Boolean
isIMT :: DataField -> Boolean
isIMT
( Just
( External
( HAL
(Just (IMT _))
)
( External
( HAL
(Just (IMT _))
)
) = true
isIMT _ = false
isCNRS :: Maybe DataField -> Boolean
isCNRS :: DataField -> Boolean
isCNRS
( Just
( External
( HAL
(Just (CNRS _))
)
( External
( HAL
(Just (CNRS _))
)
) = true
isCNRS _ = false
isPubmed :: Maybe DataField -> Boolean
isPubmed
( Just
(External (PubMed _))
) = true
isPubmed :: DataField -> Boolean
isPubmed (External (PubMed _)) = true
isPubmed _ = false
getPubmedAPIKey :: Maybe DataField -> Maybe String
getPubmedAPIKey (Just (External (PubMed mAPI))) = mAPI
getPubmedAPIKey :: DataField -> Maybe String
getPubmedAPIKey (External (PubMed mAPI)) = mAPI
getPubmedAPIKey _ = Nothing
isEPO :: Maybe DataField -> Boolean
isEPO
( Just
(External EPO)
) = true
isEPO :: DataField -> Boolean
isEPO (External EPO) = true
isEPO _ = false
needsLang :: Maybe DataField -> Boolean
needsLang (Just Gargantext) = true
needsLang (Just Web) = true
needsLang
( Just
(External (HAL _))
) = true
needsLang :: DataField -> Boolean
needsLang Gargantext = true
needsLang Web = true
needsLang (External (HAL _)) = true
needsLang _ = false
isIn :: IMT_org -> Maybe DataField -> Boolean
isIn :: IMT_org -> DataField -> Boolean
isIn
org
( Just
( External
( HAL
( Just
(IMT imtOrgs)
)
( External
( HAL
( Just
(IMT imtOrgs)
)
)
) = Set.member org imtOrgs
isIn _ _ = false
updateFilter :: IMT_org -> Array IMT_org -> Maybe DataField -> Maybe DataField
updateFilter org allIMTorgs (Just (External (HAL (Just (IMT imtOrgs))))) =
Just $ External $ HAL $ Just $ IMT imtOrgs'
updateFilter :: IMT_org -> Array IMT_org -> DataField -> DataField
updateFilter org allIMTorgs (External (HAL (Just (IMT imtOrgs)))) =
External $ HAL $ Just $ IMT imtOrgs'
where
imtOrgs' =
if Set.member org imtOrgs then
......@@ -300,7 +275,7 @@ updateFilter org allIMTorgs (Just (External (HAL (Just (IMT imtOrgs))))) =
else if org == All_IMT then Set.fromFoldable allIMTorgs
else Set.insert org imtOrgs
updateFilter org allIMTorgs _ = (Just (External (HAL (Just (IMT imtOrgs')))))
updateFilter org allIMTorgs _ = (External (HAL (Just (IMT imtOrgs'))))
where
imtOrgs' =
if org == All_IMT then Set.fromFoldable allIMTorgs
......@@ -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: "nav nav-tabs" } ((liItem search') <$> dataFields)
, H.div { className: "center p-1" }
[ H.text
$ maybe "TODO: add Doc Instance" doc datafield
[ H.text $ doc datafield
]
]
where
......@@ -369,8 +343,7 @@ dataFieldNavCpt = here.component "dataFieldNav" cpt
, on:
{ click: \_ -> T.modify_
( _
{ datafield = Just df'
, databases = datafield2database df'
{ datafield = df'
}
)
search
......@@ -404,7 +377,7 @@ databaseInputCpt = here.component "databaseInput" cpt
let
db = case search'.datafield of
(Just (External x)) -> Just x
(External x) -> Just x
_ -> Nothing
dbInputValue = fromMaybe "" $ dbToInputValue <$> db
......@@ -423,8 +396,7 @@ databaseInputCpt = here.component "databaseInput" cpt
T.modify_
( _
{ datafield = Just $ External updatedValue
, databases = updatedValue
{ datafield = External updatedValue
}
)
search
......@@ -481,7 +453,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt
R.useEffectOnce' $ 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
pure $
......@@ -506,7 +478,7 @@ pubmedInputLoadedCpt = here.component "pubmedInputLoaded" cpt
s -> Just s
T.modify_
( \s ->
s { datafield = Just $ External $ PubMed mVal }
s { datafield = External $ PubMed mVal }
)
searchS
......@@ -615,7 +587,7 @@ orgInputCpt = here.component "orgInput" cpt
let
change e = do
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" }
[ H.div { className: "text-primary center" } [ H.text "filter with organization: " ]
......@@ -689,7 +661,7 @@ datafieldInputCpt = here.component "datafieldInput" cpt
else H.div {} []
, 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 } []
else
langNav { langs, search } []
......@@ -822,19 +794,10 @@ triggerSearch { onSearch, errors, session, selection, search } =
-- modalShow "addCorpus"
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
searchQuery
selection
{ databases
, datafield: datafield@(Just (External (HAL Nothing)))
{ datafield: datafield@(External (HAL Nothing))
, lang
, node_id
, term
......@@ -842,8 +805,7 @@ searchQuery
} =
over SearchQuery
( _
{ databases = databases
, datafield = datafield
{ datafield = datafield
, lang = lang
, node_id = node_id
, query = queryHAL term Nothing lang years
......@@ -854,8 +816,7 @@ searchQuery
searchQuery
selection
{ databases
, datafield: datafield@(Just (External (HAL (Just (IMT imtOrgs)))))
{ datafield: datafield@(External (HAL (Just (IMT imtOrgs))))
, lang
, node_id
, term
......@@ -863,8 +824,7 @@ searchQuery
} =
over SearchQuery
( _
{ databases = databases
, datafield = datafield
{ datafield = datafield
, lang = lang
, node_id = node_id
, query = queryHAL term (Just imtOrgs) lang years
......@@ -874,8 +834,7 @@ searchQuery
defaultSearchQuery
searchQuery
selection
{ databases
, datafield: datafield@(Just (External EPO))
{ datafield: datafield@(External EPO)
, lang
, epoApiUser
, epoApiToken
......@@ -884,8 +843,7 @@ searchQuery
} =
over SearchQuery
( _
{ databases = databases
, datafield = datafield
{ datafield = datafield
, lang = lang
, node_id = node_id
, epoAPIUser = epoApiUser
......@@ -897,29 +855,25 @@ searchQuery
defaultSearchQuery
searchQuery
selection
{ databases
, datafield: datafield@(Just (External (PubMed mAPIKey)))
{ datafield: datafield@(External (PubMed mAPIKey))
, lang
, node_id
, term
} =
over SearchQuery
( _
{ databases = databases
, datafield = datafield
{ datafield = datafield
, lang = lang
, node_id = node_id
, pubmedAPIKey = mAPIKey
, query = term
, selection = selection
}
)
defaultSearchQuery
searchQuery selection { databases, datafield, lang, term, node_id } =
searchQuery selection { datafield, lang, term, node_id } =
over SearchQuery
( _
{ databases = databases
, datafield = datafield
{ datafield = datafield
, lang = lang
, node_id = node_id
, query = term
......
......@@ -2,6 +2,7 @@ module Gargantext.Components.Forest.Tree.Node.Action.Search.Types where
import Gargantext.Prelude
import Data.Array as A
-- import Data.Bounded (class Bounded)
import Data.Either (Either)
-- import Data.Enum (class Enum, class BoundedEnum)
......@@ -26,8 +27,7 @@ import URI.Extra.QueryPairs as QP
import URI.Query as Q
type Search =
{ databases :: Database
, datafield :: Maybe DataField
{ datafield :: DataField
, url :: String
, lang :: Maybe Lang
, node_id :: Maybe Int
......@@ -37,11 +37,8 @@ type Search =
, years :: Array String
}
isIsTex_Advanced :: Maybe DataField -> Boolean
isIsTex_Advanced
( Just
(External (IsTex_Advanced))
) = true
isIsTex_Advanced :: DataField -> Boolean
isIsTex_Advanced (External (IsTex_Advanced)) = true
isIsTex_Advanced _ = false
------------------------------------------------------------------------
......@@ -80,7 +77,7 @@ instance Doc DataField where
derive instance Eq DataField
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 Web = JSON.writeImpl "Web"
writeImpl Files = JSON.writeImpl "Files"
......@@ -175,7 +172,9 @@ instance Doc Database where
derive instance Eq Database
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 =
......@@ -251,6 +250,9 @@ instance Read Org where
read _ = Nothing
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
writeImpl = JSON.writeImpl <<< show
......@@ -293,8 +295,7 @@ instance Show SearchOrder where
newtype SearchQuery = SearchQuery
{ query :: String
, databases :: Database
, datafield :: Maybe DataField
, datafield :: DataField
, files_id :: Array String
, lang :: Maybe Lang
, limit :: Maybe Int
......@@ -303,7 +304,6 @@ newtype SearchQuery = SearchQuery
, order :: Maybe SearchOrder
, epoAPIUser :: Maybe String
, epoAPIToken :: Maybe String
, pubmedAPIKey :: Maybe String
, selection :: ListSelection.Selection
}
......@@ -328,34 +328,29 @@ instance GT.ToQuery SearchQuery where
instance JSON.WriteForeign SearchQuery where
writeImpl
( SearchQuery
{ databases
, datafield
{ datafield
, lang
, node_id
, epoAPIUser
, epoAPIToken
, pubmedAPIKey
, query
, selection
}
) =
JSON.writeImpl
{ query: query -- String.replace (String.Pattern "\"") (String.Replacement "\\\"") query
, databases
, datafield
, lang: maybe "EN" show lang
, node_id: fromMaybe 0 node_id
, flowListWith: selection
, epoAPIUser
, epoAPIToken
, pubmedAPIKey
}
defaultSearchQuery :: SearchQuery
defaultSearchQuery = SearchQuery
{ query: ""
, databases: Empty
, datafield: Nothing
, datafield: External Empty
, files_id: []
, lang: Nothing
, limit: Nothing
......@@ -364,7 +359,6 @@ defaultSearchQuery = SearchQuery
, order: Nothing
, epoAPIUser: Nothing
, epoAPIToken: Nothing
, pubmedAPIKey: Nothing
, selection: ListSelection.NoList -- MyListsFirst
}
......
......@@ -68,8 +68,7 @@ asyncProgressCpt = R2.hereComponent here "asyncProgress" hCpt
here.log "[onProgress] TODO: Implement status killed"
if
GT.asyncTaskLogIsFinished atl ||
GT.asyncTaskLogIsError atl then do
GT.asyncTaskLogIsFinished atl then do
handleErrorInAsyncTaskLog errors atl
-- resetInterval intervalIdRef Nothing (pure 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