Commit 1fdd677f authored by Karen Konou's avatar Karen Konou

[Tree flat] Filter results on backend

parent 2fcc7fd7
...@@ -337,6 +337,7 @@ treeAPI id = tree TreeAdvanced id ...@@ -337,6 +337,7 @@ treeAPI id = tree TreeAdvanced id
:<|> tree TreeFirstLevel id :<|> tree TreeFirstLevel id
type TreeFlatAPI = QueryParams "type" NodeType type TreeFlatAPI = QueryParams "type" NodeType
:> QueryParam "query" Text
:> Get '[JSON] [NodeTree] :> Get '[JSON] [NodeTree]
treeFlatAPI :: NodeId -> GargServer TreeFlatAPI treeFlatAPI :: NodeId -> GargServer TreeFlatAPI
......
...@@ -44,6 +44,7 @@ import Control.Lens (view, toListOf, at, each, _Just, to, set, makeLenses) ...@@ -44,6 +44,7 @@ import Control.Lens (view, toListOf, at, each, _Just, to, set, makeLenses)
import Control.Monad.Error.Class (MonadError()) import Control.Monad.Error.Class (MonadError())
import Data.List (tail, concat, nub) import Data.List (tail, concat, nub)
import qualified Data.List as List import qualified Data.List as List
import qualified Data.Text as Text
import Data.Map.Strict (Map, fromListWith, lookup) import Data.Map.Strict (Map, fromListWith, lookup)
-- import Data.Monoid (mconcat) -- import Data.Monoid (mconcat)
import Data.Proxy import Data.Proxy
...@@ -148,12 +149,16 @@ tree_first_level r nodeTypes = do ...@@ -148,12 +149,16 @@ tree_first_level r nodeTypes = do
tree_flat :: (HasTreeError err, HasNodeError err) tree_flat :: (HasTreeError err, HasNodeError err)
=> RootId => RootId
-> [NodeType] -> [NodeType]
-> Maybe Text
-> Cmd err [NodeTree] -> Cmd err [NodeTree]
tree_flat r nodeTypes = do tree_flat r nodeTypes q = do
mainRoot <- findNodes r Private nodeTypes mainRoot <- findNodes r Private nodeTypes
publicRoots <- findNodes r PublicDirect nodeTypes publicRoots <- findNodes r PublicDirect nodeTypes
sharedRoots <- findNodes r SharedDirect nodeTypes sharedRoots <- findNodes r SharedDirect nodeTypes
pure $ map toNodeTree (mainRoot <> sharedRoots <> publicRoots) let ret = map toNodeTree (mainRoot <> sharedRoots <> publicRoots)
case q of
Just v -> pure $ filter (\(NodeTree {_nt_name}) -> Text.isInfixOf (Text.toLower v) (Text.toLower _nt_name)) ret
Nothing -> pure $ ret
------------------------------------------------------------------------ ------------------------------------------------------------------------
......
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