Commit 0fc58ba2 authored by Karen Konou's avatar Karen Konou

[Graph/phylo explorer] improve related doc search

parent 4df661c3
Pipeline #6474 passed with stages
in 19 minutes and 26 seconds
......@@ -4,7 +4,7 @@ module Gargantext.Components.GraphExplorer.Sidebar.DocList
import Gargantext.Prelude
import Data.Array (catMaybes, head)
import Data.Array (catMaybes, foldl, head)
import Data.Array as A
import Data.Foldable (intercalate)
import Data.Map as Map
......@@ -22,6 +22,7 @@ import Gargantext.Components.GraphExplorer.Types as GET
import Gargantext.Config (defaultFrontends)
import Gargantext.Config.REST (RESTError(..))
import Gargantext.Ends (Frontends, url)
import Gargantext.Hooks.LinkHandler (useLinkHandler)
import Gargantext.Hooks.Loader (useLoaderEffect)
import Gargantext.Hooks.Session (useSession)
import Gargantext.Hooks.Sigmax.Types as SigmaxT
......@@ -172,6 +173,8 @@ docListCpt = here.component "main" cpt where
, path: path'
, state
}
{ goToURL } <- useLinkHandler
-- | Effects
-- |
......@@ -234,6 +237,16 @@ docListCpt = here.component "main" cpt where
_
= false
webSearch :: Array String -> (String -> Effect Unit) -> Effect Unit
webSearch q f = do
let url = foldl (\acc elem -> acc <> (elem <> "+")) "https://duckduckgo.com/?q=" q
f url
wikipediaSearch :: Array String -> (String -> Effect Unit) -> Effect Unit
wikipediaSearch q f = do
let url = foldl (\acc elem -> acc <> (elem <> "+")) "https://en.wikipedia.org/w/index.php?search=" q
f url
-- | Render
-- |
pure $
......@@ -243,11 +256,19 @@ docListCpt = here.component "main" cpt where
R.fragment
[
R2.when (results == Seq.empty) $
B.caveat
{}
H.div {}
[
H.text "Searching relevant document(s)"
H.ul { className: "flex-row list-group vertical-align-middle" }
[ H.li {} [ andOrButton { state: buttonState } ]
, H.li {} [ H.h6 {} [ H.text "No related documents" ] ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> webSearch (A.fromFoldable selectedNgramsTerms') goToURL } ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> wikipediaSearch (A.fromFoldable selectedNgramsTerms') goToURL } ]
]
, B.caveat
{}
[
H.text "No document found in your corpus for your selected terms"
]
]
,
R2.when (not $ eq results Seq.empty) $
......@@ -257,8 +278,8 @@ docListCpt = here.component "main" cpt where
H.ul { className: "flex-row list-group vertical-align-middle" }
[ H.li {} [ andOrButton { state: buttonState } ]
, H.li {} [ H.h6 {} [ H.text $ show (Seq.length results) <> " related documents" ] ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> pure unit} ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> pure unit} ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> webSearch (A.fromFoldable selectedNgramsTerms') goToURL } ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> wikipediaSearch (A.fromFoldable selectedNgramsTerms') goToURL } ]
]
, H.ul
{ className: intercalate " "
......
......@@ -4,6 +4,7 @@ module Gargantext.Components.PhyloExplorer.Sidebar.DocList
import Gargantext.Prelude
import Data.Array (foldl)
import Data.Array as A
import Data.Foldable (intercalate)
import Data.Maybe (Maybe(..))
......@@ -19,6 +20,7 @@ import Gargantext.Components.Search (SearchQuery(..), SearchType(..))
import Gargantext.Config (defaultFrontends)
import Gargantext.Config.REST (RESTError(..))
import Gargantext.Ends (Frontends, url)
import Gargantext.Hooks.LinkHandler (useLinkHandler)
import Gargantext.Hooks.Loader (useLoaderEffect)
import Gargantext.Hooks.Session (useSession)
import Gargantext.Hooks.UpdateEffect (useUpdateEffect1')
......@@ -162,6 +164,8 @@ docListCpt = here.component "main" cpt where
, path: path'
}
{ goToURL } <- useLinkHandler
-- | Effects
-- |
......@@ -220,6 +224,16 @@ docListCpt = here.component "main" cpt where
_
= false
webSearch :: Array String -> (String -> Effect Unit) -> Effect Unit
webSearch q f = do
let url = foldl (\acc elem -> acc <> (elem <> "+")) "https://duckduckgo.com/?q=" q
f url
wikipediaSearch :: Array String -> (String -> Effect Unit) -> Effect Unit
wikipediaSearch q f = do
let url = foldl (\acc elem -> acc <> (elem <> "+")) "https://en.wikipedia.org/w/index.php?search=" q
f url
-- | Render
-- |
pure $
......@@ -229,11 +243,19 @@ docListCpt = here.component "main" cpt where
R.fragment
[
R2.when (results == Seq.empty) $
B.caveat
{}
H.div {}
[
H.text "No document found in your corpus for your selected terms"
H.ul { className: "flex-row list-group vertical-align-middle" }
[ H.li {} [ andOrButton { state: buttonState } ]
, H.li {} [ H.h6 {} [ H.text "No related documents" ] ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> webSearch q' goToURL} ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> wikipediaSearch q' goToURL} ]
]
, B.caveat
{}
[
H.text "No document found in your corpus for your selected terms"
]
]
,
R2.when (not $ eq results Seq.empty) $
......@@ -242,8 +264,8 @@ docListCpt = here.component "main" cpt where
H.ul { className: "flex-row list-group vertical-align-middle" }
[ H.li {} [ andOrButton { state: buttonState } ]
, H.li {} [ H.h6 {} [ H.text $ show (Seq.length results) <> " related documents" ] ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> pure unit} ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> pure unit} ]
, H.li {} [ B.iconButton { name: "search", title: "Search the web", callback: \_ -> webSearch q' goToURL} ]
, H.li {} [ B.iconButton { name: "wikipedia-w", title: "Search Wikipedia", callback: \_ -> wikipediaSearch q' goToURL} ]
]
,
H.ul
......
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