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
142
Issues
142
List
Board
Labels
Milestones
Merge Requests
4
Merge Requests
4
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
purescript-gargantext
Commits
8c5aa0b4
Commit
8c5aa0b4
authored
Nov 08, 2019
by
Alexandre Delanoë
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[SEARCH FORM] filters added.
parent
7d4298be
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
54 additions
and
25 deletions
+54
-25
packages.dhall
packages.dhall
+3
-0
psc-package.json
psc-package.json
+1
-0
LoadingSpinner.purs
src/Gargantext/Components/LoadingSpinner.purs
+5
-2
SearchBar.purs
src/Gargantext/Components/Search/SearchBar.purs
+11
-3
SearchField.purs
src/Gargantext/Components/Search/SearchField.purs
+18
-10
Types.purs
src/Gargantext/Components/Search/Types.purs
+16
-10
No files found.
packages.dhall
View file @
8c5aa0b4
...
...
@@ -222,6 +222,9 @@ let additions =
]
"https://github.com/slamdata/purescript-uri"
"v7.0.0"
, read = mkPackage ["purescript-prelude", "purescript-maybe", "purescript-string"]
"https://github.com/truqu/purescript-read"
"v1.0.1"
}
in upstream // overrides // additions
psc-package.json
View file @
8c5aa0b4
...
...
@@ -25,6 +25,7 @@
"psci-support"
,
"random"
,
"reactix"
,
"read"
,
"routing"
,
"sequences"
,
"spec-discovery"
,
...
...
src/Gargantext/Components/LoadingSpinner.purs
View file @
8c5aa0b4
...
...
@@ -11,5 +11,8 @@ loadingSpinner props = R.createElement loadingSpinnerCpt props []
loadingSpinnerCpt :: R.Component Props
loadingSpinnerCpt = R.staticComponent "LoadingSpinner" cpt
where
cpt _ _ = H.i {className: "fa fa-circle-o-notch fa-spin fa-3x fa-fw"} [H.text ""]
--cpt _ _ = H.i {className: "fa fa-spinner fa-pulse fa-3x fa-fw"} [H.text ""]
cpt _ _ = H.i {className: "fa fa-smile-o fa-spin fa-3x fa-fw"} [H.text ""]
-- cpt _ _ = H.i {className: "fa fa-globe fa-spin fa-3x fa-fw"} [H.text ""]
-- cpt _ _ = H.i {className: "fa fa-circle-o-notch fa-spin fa-3x fa-fw"} [H.text ""]
-- cpt _ _ = H.i {className: "fa fa-spinner fa-pulse fa-3x fa-fw"} [H.text ""]
src/Gargantext/Components/Search/SearchBar.purs
View file @
8c5aa0b4
...
...
@@ -2,8 +2,10 @@ module Gargantext.Components.Search.SearchBar
( Props, searchBar, searchBarCpt
) where
import Prelude (Unit, bind, discard, not, pure, show, ($), (<>))
import Prelude (Unit, bind, discard, not, pure, show, ($), (<>)
, map
)
import Data.Maybe (Maybe(..))
import Data.Array (nub, concat)
import Data.Set as Set
import Data.Newtype (over)
import Data.Traversable (traverse_)
import Data.Tuple (snd)
...
...
@@ -45,6 +47,7 @@ onSearchChange session (search /\ setSearch) =
liftEffect $ do
log2 "Searching db: " $ show q.database
log2 "Searching term: " q.term
log2 "Searching filters: " q.filters
r <- (performSearch session $ searchQuery q) :: Aff Unit
...
...
@@ -55,5 +58,10 @@ onSearchChange session (search /\ setSearch) =
searchQuery {database: Nothing, lang, term} =
over SearchQuery (_ {query=term}) defaultSearchQuery
searchQuery {database: Just db, lang, term} =
over SearchQuery (_ {databases=[db], lang=lang, query=term}) defaultSearchQuery
searchQuery {database: Just db, lang, term, filters} =
over SearchQuery (_ {databases=[db], lang=lang, query=term, filters=filters'}) defaultSearchQuery
where
filters' = toInt filters
toInt (Just (HAL_StructId {structIds})) = Set.toUnfoldable structIds
toInt (Just (HAL_IMT {imtOrgs, structIds})) = nub $ (concat $ map imtStructId $ Set.toUnfoldable imtOrgs) <> (Set.toUnfoldable structIds)
toInt _ = []
src/Gargantext/Components/Search/SearchField.purs
View file @
8c5aa0b4
...
...
@@ -98,7 +98,7 @@ searchFieldComponent = R.memo (R.hooksComponent "SearchField" cpt) hasChanged
div {} []
else
div {} []
, div { className: "
panel-footer
" }
, div { className: "" }
[ submitButton db term lang org filters props.search ]
]
hasChanged p p' = (fst p.search /= fst p'.search)
...
...
@@ -108,7 +108,7 @@ searchFieldComponent = R.memo (R.hooksComponent "SearchField" cpt) hasChanged
isHAL :: Maybe Database -> Boolean
isHAL (Just HAL) = true
isHAL _ = false
isHAL _
= false
isInFilters :: IMT_org -> Maybe HAL_Filters -> Boolean
isInFilters org (Just (HAL_IMT { imtOrgs })) = Set.member org imtOrgs
...
...
@@ -194,11 +194,19 @@ orgInput (org /\ setOrg) orgs =
filterInput :: R.State String -> R.Element
filterInput (term /\ setTerm) =
div {className: ""} [ input { defaultValue: term
, className: "form-control"
, type: "text"
, on: { change: \e -> setTerm $ const $ e .. "target" .. "value"}
, placeholder : "Filter with struct_Ids as integer" }
]
, className: "form-control"
, type: "text"
, on: { change: \e -> setTerm
$ const
$ e .. "target" .. "value"
}
, "required pattern": "[[0-9]+[ ]+]*"
-- TODO ^FIXME not sure about the regex comprehension: that should match "123 2334 44545" only (Integers separated by one space)
-- form validation with CSS
-- DOC: https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Form_validation
, placeholder : "Filter with struct_Ids as integer"
}
]
searchInput :: R.State String -> R.Element
...
...
@@ -221,13 +229,13 @@ submitButton :: R.State (Maybe Database)
-> R.Element
submitButton (database /\ _) (term /\ _) (lang /\ _) (org/\_) (filters /\ _) (_ /\ setSearch) =
R.fragment [ div { className : "" } []
, button { className: "btn btn-primary
text-center
"
, button { className: "btn btn-primary"
, type: "button"
, on: {c
hange: click
}
, on: {c
lick: doSearch
}
} [ text "Search" ]
]
where
click
= \_ -> do
doSearch
= \_ -> do
case term of
"" -> setSearch $ const Nothing
_ -> setSearch $ const $ Just { database, lang, filters, term, org}
src/Gargantext/Components/Search/Types.purs
View file @
8c5aa0b4
...
...
@@ -271,12 +271,13 @@ instance showSearchOrder :: Show SearchOrder where
newtype SearchQuery = SearchQuery
{ query :: String
, databases :: Array Database
, lang :: Maybe Lang
, lang :: Maybe Lang
, filters :: (Array Int)
, node_id :: Maybe Int
, files_id :: Array String
, offset :: Maybe Int
, limit :: Maybe Int
, order :: Maybe SearchOrder
, order :: Maybe SearchOrder
}
derive instance newtypeSearchQuery :: Newtype SearchQuery _
...
...
@@ -287,10 +288,12 @@ defaultSearchQuery = SearchQuery
, databases: allDatabases
, lang : Nothing
, node_id : Nothing
, filters : []
, files_id : []
, offset: Nothing
, limit: Nothing
, order: Nothing }
, order: Nothing
}
instance toUrlSessionSearchQuery :: ToUrl Session SearchQuery where
toUrl (Session {backend}) q = backendUrl backend q2
...
...
@@ -298,18 +301,21 @@ instance toUrlSessionSearchQuery :: ToUrl Session SearchQuery where
instance searchQueryToQuery :: ToQuery SearchQuery where
toQuery (SearchQuery {offset, limit, order}) =
QP.print id id $ QP.QueryPairs $
pair "offset" offset <> pair "limit" limit <> pair "order" order
QP.print id id $ QP.QueryPairs
$ pair "offset" offset
<> pair "limit" limit
<> pair "order" order
where pair :: forall a. Show a => String -> Maybe a -> Array (Tuple QP.Key (Maybe QP.Value))
pair k = maybe [] $ \v ->
[ QP.keyFromString k /\ Just (QP.valueFromString $ show v) ]
instance encodeJsonSearchQuery :: EncodeJson SearchQuery where
encodeJson (SearchQuery {query, databases, node_id, files_id})
= "query" := query
~> "databases" := databases
~> "node_id" := fromMaybe 0 node_id
~> "files_id" := files_id
encodeJson (SearchQuery {query, databases, node_id, files_id, filters})
= "query" := query
~> "databases" := databases
~> "node_id" := fromMaybe 0 node_id
~> "files_id" := files_id
~> "filters" := filters
~> jsonEmptyObject
...
...
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