Commit 4da3ef16 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

[errors] get rid of temporary throwError.*RESTError

parent c82a7f6b
Pipeline #1711 failed with stage
...@@ -4,9 +4,9 @@ module Gargantext.Components.GraphExplorer.Sidebar ...@@ -4,9 +4,9 @@ module Gargantext.Components.GraphExplorer.Sidebar
import Gargantext.Prelude import Gargantext.Prelude
import Control.Monad.Error.Class (throwError)
import Control.Parallel (parTraverse) import Control.Parallel (parTraverse)
import Data.Array (head, last, concat) import Data.Array (head, last, concat)
import Data.Array as A
import Data.Either (Either(..)) import Data.Either (Either(..))
import Data.Int (fromString) import Data.Int (fromString)
import Data.Map as Map import Data.Map as Map
...@@ -14,7 +14,7 @@ import Data.Maybe (Maybe(..), fromJust) ...@@ -14,7 +14,7 @@ import Data.Maybe (Maybe(..), fromJust)
import Data.Sequence as Seq import Data.Sequence as Seq
import Data.Set as Set import Data.Set as Set
import Effect (Effect) import Effect (Effect)
import Effect.Aff (Aff, error, launchAff_) import Effect.Aff (Aff, launchAff_)
import Effect.Class (liftEffect) import Effect.Class (liftEffect)
import Gargantext.Components.GraphExplorer.Legend as Legend import Gargantext.Components.GraphExplorer.Legend as Legend
import Gargantext.Components.GraphExplorer.Types as GET import Gargantext.Components.GraphExplorer.Types as GET
...@@ -28,7 +28,7 @@ import Gargantext.Data.Array (mapMaybe) ...@@ -28,7 +28,7 @@ import Gargantext.Data.Array (mapMaybe)
import Gargantext.Ends (Frontends) import Gargantext.Ends (Frontends)
import Gargantext.Hooks.Sigmax.Types as SigmaxT import Gargantext.Hooks.Sigmax.Types as SigmaxT
import Gargantext.Sessions (Session) import Gargantext.Sessions (Session)
import Gargantext.Types (CTabNgramType, NodeID, TabSubType(..), TabType(..), TermList(..), modeTabType) import Gargantext.Types (CTabNgramType, FrontendError(..), NodeID, TabSubType(..), TabType(..), TermList(..), modeTabType)
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Toestand as T2 import Gargantext.Utils.Toestand as T2
import Partial.Unsafe (unsafePartial) import Partial.Unsafe (unsafePartial)
...@@ -43,7 +43,8 @@ here :: R2.Here ...@@ -43,7 +43,8 @@ here :: R2.Here
here = R2.here "Gargantext.Components.GraphExplorer.Sidebar" here = R2.here "Gargantext.Components.GraphExplorer.Sidebar"
type Common = ( type Common = (
graphId :: NodeID errors :: T.Box (Array FrontendError)
, graphId :: NodeID
, metaData :: GET.MetaData , metaData :: GET.MetaData
, reloadForest :: T2.ReloadS , reloadForest :: T2.ReloadS
, removedNodeIds :: T.Box SigmaxT.NodeIds , removedNodeIds :: T.Box SigmaxT.NodeIds
...@@ -61,7 +62,6 @@ type Props = ( ...@@ -61,7 +62,6 @@ type Props = (
sidebar :: R2.Component Props sidebar :: R2.Component Props
sidebar = R.createElement sidebarCpt sidebar = R.createElement sidebarCpt
sidebarCpt :: R.Component Props sidebarCpt :: R.Component Props
sidebarCpt = here.component "sidebar" cpt sidebarCpt = here.component "sidebar" cpt
where where
...@@ -86,7 +86,6 @@ type SideTabNavProps = ( ...@@ -86,7 +86,6 @@ type SideTabNavProps = (
sideTabNav :: R2.Component SideTabNavProps sideTabNav :: R2.Component SideTabNavProps
sideTabNav = R.createElement sideTabNavCpt sideTabNav = R.createElement sideTabNavCpt
sideTabNavCpt :: R.Component SideTabNavProps sideTabNavCpt :: R.Component SideTabNavProps
sideTabNavCpt = here.component "sideTabNav" cpt sideTabNavCpt = here.component "sideTabNav" cpt
where where
...@@ -111,11 +110,10 @@ type SideTabProps = Props ...@@ -111,11 +110,10 @@ type SideTabProps = Props
sideTabLegend :: R2.Component SideTabProps sideTabLegend :: R2.Component SideTabProps
sideTabLegend = R.createElement sideTabLegendCpt sideTabLegend = R.createElement sideTabLegendCpt
sideTabLegendCpt :: R.Component SideTabProps sideTabLegendCpt :: R.Component SideTabProps
sideTabLegendCpt = here.component "sideTabLegend" cpt sideTabLegendCpt = here.component "sideTabLegend" cpt
where where
cpt props@{ metaData: GET.MetaData { legend } } _ = do cpt { metaData: GET.MetaData { legend } } _ = do
pure $ H.div {} pure $ H.div {}
[ Legend.legend { items: Seq.fromFoldable legend } [ Legend.legend { items: Seq.fromFoldable legend }
, documentation EN , documentation EN
...@@ -123,7 +121,6 @@ sideTabLegendCpt = here.component "sideTabLegend" cpt ...@@ -123,7 +121,6 @@ sideTabLegendCpt = here.component "sideTabLegend" cpt
sideTabData :: R2.Component SideTabProps sideTabData :: R2.Component SideTabProps
sideTabData = R.createElement sideTabDataCpt sideTabData = R.createElement sideTabDataCpt
sideTabDataCpt :: R.Component SideTabProps sideTabDataCpt :: R.Component SideTabProps
sideTabDataCpt = here.component "sideTabData" cpt sideTabDataCpt = here.component "sideTabData" cpt
where where
...@@ -143,18 +140,10 @@ sideTabDataCpt = here.component "sideTabData" cpt ...@@ -143,18 +140,10 @@ sideTabDataCpt = here.component "sideTabData" cpt
} [] } []
] ]
] ]
where
checkbox text = RH.li {}
[ RH.span {} [ RH.text text ]
, RH.input { type: "checkbox"
, className: "checkbox"
, defaultChecked: true
, title: "Mark as completed" } ]
sideTabCommunity :: R2.Component SideTabProps sideTabCommunity :: R2.Component SideTabProps
sideTabCommunity = R.createElement sideTabCommunityCpt sideTabCommunity = R.createElement sideTabCommunityCpt
sideTabCommunityCpt :: R.Component SideTabProps sideTabCommunityCpt :: R.Component SideTabProps
sideTabCommunityCpt = here.component "sideTabCommunity" cpt sideTabCommunityCpt = here.component "sideTabCommunity" cpt
where where
...@@ -185,7 +174,6 @@ type SelectedNodesProps = ( ...@@ -185,7 +174,6 @@ type SelectedNodesProps = (
selectedNodes :: R2.Component SelectedNodesProps selectedNodes :: R2.Component SelectedNodesProps
selectedNodes = R.createElement selectedNodesCpt selectedNodes = R.createElement selectedNodesCpt
selectedNodesCpt :: R.Component SelectedNodesProps selectedNodesCpt :: R.Component SelectedNodesProps
selectedNodesCpt = here.component "selectedNodes" cpt selectedNodesCpt = here.component "selectedNodes" cpt
where where
...@@ -228,7 +216,6 @@ selectedNodesCpt = here.component "selectedNodes" cpt ...@@ -228,7 +216,6 @@ selectedNodesCpt = here.component "selectedNodes" cpt
neighborhood :: R2.Component Props neighborhood :: R2.Component Props
neighborhood = R.createElement neighborhoodCpt neighborhood = R.createElement neighborhoodCpt
neighborhoodCpt :: R.Component Props neighborhoodCpt :: R.Component Props
neighborhoodCpt = here.component "neighborhood" cpt neighborhoodCpt = here.component "neighborhood" cpt
where where
...@@ -262,6 +249,7 @@ updateTermButtonCpt :: R.Component UpdateTermButtonProps ...@@ -262,6 +249,7 @@ updateTermButtonCpt :: R.Component UpdateTermButtonProps
updateTermButtonCpt = here.component "updateTermButton" cpt updateTermButtonCpt = here.component "updateTermButton" cpt
where where
cpt { buttonType cpt { buttonType
, errors
, graphId , graphId
, metaData , metaData
, nodesMap , nodesMap
...@@ -280,10 +268,11 @@ updateTermButtonCpt = here.component "updateTermButton" cpt ...@@ -280,10 +268,11 @@ updateTermButtonCpt = here.component "updateTermButton" cpt
, on: { click: onClickRemove selectedNodeIds' } , on: { click: onClickRemove selectedNodeIds' }
} [ RH.text text ] } [ RH.text text ]
where where
onClickRemove selectedNodeIds' e = do onClickRemove selectedNodeIds' _ = do
let nodes = mapMaybe (\id -> Map.lookup id nodesMap) let nodes = mapMaybe (\id -> Map.lookup id nodesMap)
$ Set.toUnfoldable selectedNodeIds' $ Set.toUnfoldable selectedNodeIds'
sendPatches { graphId: graphId sendPatches { errors
, graphId: graphId
, metaData: metaData , metaData: metaData
, nodes , nodes
, session: session , session: session
...@@ -300,7 +289,7 @@ badge selectedNodeIds {id, label} = ...@@ -300,7 +289,7 @@ badge selectedNodeIds {id, label} =
, on: { click: onClick } , on: { click: onClick }
} [ RH.h6 {} [ RH.text label ] ] } [ RH.h6 {} [ RH.text label ] ]
where where
onClick e = do onClick _ = do
T.write_ (Set.singleton id) selectedNodeIds T.write_ (Set.singleton id) selectedNodeIds
badges :: SigmaxT.SGraph -> SigmaxT.NodeIds -> Seq.Seq (Record SigmaxT.Node) badges :: SigmaxT.SGraph -> SigmaxT.NodeIds -> Seq.Seq (Record SigmaxT.Node)
...@@ -311,7 +300,8 @@ neighbourBadges graph selectedNodeIds = SigmaxT.neighbours graph selectedNodes' ...@@ -311,7 +300,8 @@ neighbourBadges graph selectedNodeIds = SigmaxT.neighbours graph selectedNodes'
selectedNodes' = SigmaxT.graphNodes $ SigmaxT.nodesById graph selectedNodeIds selectedNodes' = SigmaxT.graphNodes $ SigmaxT.nodesById graph selectedNodeIds
type SendPatches = type SendPatches =
( graphId :: NodeID ( errors :: T.Box (Array FrontendError)
, graphId :: NodeID
, metaData :: GET.MetaData , metaData :: GET.MetaData
, nodes :: Array (Record SigmaxT.Node) , nodes :: Array (Record SigmaxT.Node)
, reloadForest :: T2.ReloadS , reloadForest :: T2.ReloadS
...@@ -320,13 +310,15 @@ type SendPatches = ...@@ -320,13 +310,15 @@ type SendPatches =
) )
sendPatches :: Record SendPatches -> Effect Unit sendPatches :: Record SendPatches -> Effect Unit
sendPatches { metaData, nodes, session, termList, reloadForest } = do sendPatches { errors, metaData, nodes, reloadForest, session, termList } = do
launchAff_ do launchAff_ do
patches <- (parTraverse (sendPatch termList session metaData) nodes) -- :: Aff (Array NTC.VersionedNgramsPatches) patches <- (parTraverse (sendPatch termList session metaData) nodes) -- :: Aff (Array NTC.VersionedNgramsPatches)
let mPatch = last patches let mPatch = last patches
case mPatch of case mPatch of
Nothing -> pure unit Nothing -> pure unit
Just (Left _err) -> throwError $ error $ "[sendPatches] RESTError" Just (Left err) -> liftEffect $ do
T.modify_ (A.cons $ FRESTError { error: err }) errors
here.log2 "[sendPatches] RESTError" err
Just (Right (NTC.Versioned _patch)) -> do Just (Right (NTC.Versioned _patch)) -> do
liftEffect $ T2.reload reloadForest liftEffect $ T2.reload reloadForest
...@@ -341,7 +333,7 @@ sendPatch termList session (GET.MetaData metaData) node = do ...@@ -341,7 +333,7 @@ sendPatch termList session (GET.MetaData metaData) node = do
case eRet of case eRet of
Left err -> pure $ Left err Left err -> pure $ Left err
Right ret -> do Right ret -> do
task <- NTC.postNgramsChartsAsync coreParams -- TODO add task _task <- NTC.postNgramsChartsAsync coreParams -- TODO add task
pure $ Right ret pure $ Right ret
where where
nodeId :: NodeID nodeId :: NodeID
...@@ -362,9 +354,6 @@ sendPatch termList session (GET.MetaData metaData) node = do ...@@ -362,9 +354,6 @@ sendPatch termList session (GET.MetaData metaData) node = do
term :: NTC.NgramsTerm term :: NTC.NgramsTerm
term = NTC.normNgram tabNgramType node.label term = NTC.normNgram tabNgramType node.label
pt :: NTC.NgramsTablePatch
pt = NTC.fromNgramsPatches np
np :: NTC.NgramsPatches np :: NTC.NgramsPatches
np = NTC.singletonPatchMap term $ NTC.NgramsPatch { patch_children: mempty, patch_list } np = NTC.singletonPatchMap term $ NTC.NgramsPatch { patch_children: mempty, patch_list }
......
...@@ -26,11 +26,6 @@ import Data.Tuple (Tuple(..)) ...@@ -26,11 +26,6 @@ import Data.Tuple (Tuple(..))
import Data.Tuple.Nested ((/\)) import Data.Tuple.Nested ((/\))
import Effect (Effect) import Effect (Effect)
import Effect.Aff (Aff) import Effect.Aff (Aff)
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
import Unsafe.Coerce (unsafeCoerce)
import Gargantext.AsyncTasks as GAT import Gargantext.AsyncTasks as GAT
import Gargantext.Components.AutoUpdate (autoUpdateElt) import Gargantext.Components.AutoUpdate (autoUpdateElt)
import Gargantext.Components.NgramsTable.Components as NTC import Gargantext.Components.NgramsTable.Components as NTC
...@@ -43,12 +38,16 @@ import Gargantext.Config.REST (RESTError) ...@@ -43,12 +38,16 @@ import Gargantext.Config.REST (RESTError)
import Gargantext.Hooks.Loader (useLoader) import Gargantext.Hooks.Loader (useLoader)
import Gargantext.Routes (SessionRoute(..)) as R import Gargantext.Routes (SessionRoute(..)) as R
import Gargantext.Sessions (Session, get) import Gargantext.Sessions (Session, get)
import Gargantext.Types (CTabNgramType, OrderBy(..), SearchQuery, TabType, TermList(..), TermSize, termLists, termSizes) import Gargantext.Types (CTabNgramType, FrontendError, OrderBy(..), SearchQuery, TabType, TermList(..), TermSize, termLists, termSizes)
import Gargantext.Utils (queryMatchesLabel, toggleSet, sortWith) import Gargantext.Utils (queryMatchesLabel, toggleSet, sortWith)
import Gargantext.Utils.CacheAPI as GUC import Gargantext.Utils.CacheAPI as GUC
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Gargantext.Utils.Seq as Seq import Gargantext.Utils.Seq as Seq
import Gargantext.Utils.Toestand as T2 import Gargantext.Utils.Toestand as T2
import Reactix as R
import Reactix.DOM.HTML as H
import Toestand as T
import Unsafe.Coerce (unsafeCoerce)
here :: R2.Here here :: R2.Here
here = R2.here "Gargantext.Components.NgramsTable" here = R2.here "Gargantext.Components.NgramsTable"
...@@ -250,12 +249,13 @@ tableContainerCpt { dispatch ...@@ -250,12 +249,13 @@ tableContainerCpt { dispatch
-- NEXT -- NEXT
type CommonProps = ( type CommonProps = (
afterSync :: Unit -> Aff Unit afterSync :: Unit -> Aff Unit
, reloadForest :: T2.ReloadS , errors :: T.Box (Array FrontendError)
, reloadRoot :: T2.ReloadS , reloadForest :: T2.ReloadS
, tabNgramType :: CTabNgramType , reloadRoot :: T2.ReloadS
, tasks :: T.Box GAT.Storage , tabNgramType :: CTabNgramType
, withAutoUpdate :: Boolean , tasks :: T.Box GAT.Storage
, withAutoUpdate :: Boolean
) )
type Props = type Props =
...@@ -273,6 +273,7 @@ loadedNgramsTableCpt :: R.Component Props ...@@ -273,6 +273,7 @@ loadedNgramsTableCpt :: R.Component Props
loadedNgramsTableCpt = here.component "loadedNgramsTable" cpt where loadedNgramsTableCpt = here.component "loadedNgramsTable" cpt where
cpt { afterSync cpt { afterSync
, cacheState , cacheState
, errors
, mTotalRows , mTotalRows
, path , path
, reloadForest , reloadForest
...@@ -343,7 +344,7 @@ loadedNgramsTableCpt = here.component "loadedNgramsTable" cpt where ...@@ -343,7 +344,7 @@ loadedNgramsTableCpt = here.component "loadedNgramsTable" cpt where
totalRecords = fromMaybe (Seq.length rows) mTotalRows totalRecords = fromMaybe (Seq.length rows) mTotalRows
afterSync' _ = do afterSync' _ = do
chartsAfterSync path' tasks unit chartsAfterSync path' errors tasks unit
afterSync unit afterSync unit
syncResetButton = syncResetButtons { afterSync: afterSync' syncResetButton = syncResetButtons { afterSync: afterSync'
...@@ -509,12 +510,12 @@ selectNgramsOnFirstPage rows = Set.fromFoldable $ (view $ _NgramsElement <<< _ng ...@@ -509,12 +510,12 @@ selectNgramsOnFirstPage rows = Set.fromFoldable $ (view $ _NgramsElement <<< _ng
type MainNgramsTableProps = ( type MainNgramsTableProps = (
cacheState :: T.Box NT.CacheState cacheState :: T.Box NT.CacheState
, defaultListId :: Int , defaultListId :: Int
-- ^ This node can be a corpus or contact. -- ^ This node can be a corpus or contact.
, path :: T.Box PageParams , path :: T.Box PageParams
, session :: Session , session :: Session
, tabType :: TabType , tabType :: TabType
| CommonProps | CommonProps
) )
...@@ -526,6 +527,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt ...@@ -526,6 +527,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt
cpt { afterSync cpt { afterSync
, cacheState , cacheState
, defaultListId , defaultListId
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
...@@ -541,6 +543,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt ...@@ -541,6 +543,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt
NT.CacheOn -> do NT.CacheOn -> do
let render versioned = mainNgramsTablePaint { afterSync let render versioned = mainNgramsTablePaint { afterSync
, cacheState: cacheState' , cacheState: cacheState'
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
...@@ -560,6 +563,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt ...@@ -560,6 +563,7 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt
-- path <- R.useState' path -- path <- R.useState' path
let render versionedWithCount = mainNgramsTablePaintNoCache { afterSync let render versionedWithCount = mainNgramsTablePaintNoCache { afterSync
, cacheState: cacheState' , cacheState: cacheState'
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
...@@ -615,20 +619,20 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt ...@@ -615,20 +619,20 @@ mainNgramsTableCpt = here.component "mainNgramsTable" cpt
handleResponse v = v handleResponse v = v
type MainNgramsTablePaintProps = ( type MainNgramsTablePaintProps = (
cacheState :: NT.CacheState cacheState :: NT.CacheState
, path :: T.Box PageParams , path :: T.Box PageParams
, versioned :: VersionedNgramsTable , versioned :: VersionedNgramsTable
| CommonProps | CommonProps
) )
mainNgramsTablePaint :: R2.Component MainNgramsTablePaintProps mainNgramsTablePaint :: R2.Component MainNgramsTablePaintProps
mainNgramsTablePaint = R.createElement mainNgramsTablePaintCpt mainNgramsTablePaint = R.createElement mainNgramsTablePaintCpt
mainNgramsTablePaintCpt :: R.Component MainNgramsTablePaintProps mainNgramsTablePaintCpt :: R.Component MainNgramsTablePaintProps
mainNgramsTablePaintCpt = here.component "mainNgramsTablePaint" cpt mainNgramsTablePaintCpt = here.component "mainNgramsTablePaint" cpt
where where
cpt { afterSync cpt { afterSync
, cacheState , cacheState
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
...@@ -640,6 +644,7 @@ mainNgramsTablePaintCpt = here.component "mainNgramsTablePaint" cpt ...@@ -640,6 +644,7 @@ mainNgramsTablePaintCpt = here.component "mainNgramsTablePaint" cpt
pure $ loadedNgramsTable { afterSync pure $ loadedNgramsTable { afterSync
, cacheState , cacheState
, errors
, mTotalRows: Nothing , mTotalRows: Nothing
, path , path
, reloadForest , reloadForest
...@@ -666,6 +671,7 @@ mainNgramsTablePaintNoCacheCpt = here.component "mainNgramsTablePaintNoCache" cp ...@@ -666,6 +671,7 @@ mainNgramsTablePaintNoCacheCpt = here.component "mainNgramsTablePaintNoCache" cp
where where
cpt { afterSync cpt { afterSync
, cacheState , cacheState
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
...@@ -680,6 +686,7 @@ mainNgramsTablePaintNoCacheCpt = here.component "mainNgramsTablePaintNoCache" cp ...@@ -680,6 +686,7 @@ mainNgramsTablePaintNoCacheCpt = here.component "mainNgramsTablePaintNoCache" cp
pure $ loadedNgramsTable { pure $ loadedNgramsTable {
afterSync afterSync
, cacheState , cacheState
, errors
, mTotalRows: Just count , mTotalRows: Just count
, path: path , path: path
, reloadForest , reloadForest
......
...@@ -81,8 +81,8 @@ module Gargantext.Components.NgramsTable.Core ...@@ -81,8 +81,8 @@ module Gargantext.Components.NgramsTable.Core
import Gargantext.Prelude import Gargantext.Prelude
import Control.Monad.Error.Class (throwError)
import Control.Monad.State (class MonadState, execState) import Control.Monad.State (class MonadState, execState)
import DOM.Simple.Console (log2)
import Data.Array (head) import Data.Array (head)
import Data.Array as A import Data.Array as A
import Data.Bifunctor (lmap) import Data.Bifunctor (lmap)
...@@ -120,7 +120,6 @@ import Data.Traversable (for, traverse_, traverse) ...@@ -120,7 +120,6 @@ import Data.Traversable (for, traverse_, traverse)
import Data.TraversableWithIndex (traverseWithIndex) import Data.TraversableWithIndex (traverseWithIndex)
import Data.Tuple (Tuple(..)) import Data.Tuple (Tuple(..))
import Data.Tuple.Nested ((/\)) import Data.Tuple.Nested ((/\))
import DOM.Simple.Console (log2)
import Effect (Effect) import Effect (Effect)
import Effect.Aff (Aff, error, launchAff_) import Effect.Aff (Aff, error, launchAff_)
import Effect.Class (liftEffect) import Effect.Class (liftEffect)
...@@ -128,23 +127,23 @@ import Effect.Exception.Unsafe (unsafeThrow) ...@@ -128,23 +127,23 @@ import Effect.Exception.Unsafe (unsafeThrow)
import FFI.Simple.Functions (delay) import FFI.Simple.Functions (delay)
import Foreign as F import Foreign as F
import Foreign.Object as FO import Foreign.Object as FO
import Partial (crashWith)
import Partial.Unsafe (unsafePartial)
import Reactix as R
import Reactix.DOM.HTML as H
import Simple.JSON as JSON
import Toestand as T
import Gargantext.AsyncTasks as GAT import Gargantext.AsyncTasks as GAT
import Gargantext.Components.Table as T import Gargantext.Components.Table as T
import Gargantext.Components.Table.Types as T import Gargantext.Components.Table.Types as T
import Gargantext.Config.REST (RESTError) import Gargantext.Config.REST (RESTError)
import Gargantext.Config.Utils (handleRESTError)
import Gargantext.Routes (SessionRoute(..)) import Gargantext.Routes (SessionRoute(..))
import Gargantext.Sessions (Session, get, post, put) import Gargantext.Sessions (Session, get, post, put)
import Gargantext.Types (AsyncTask, AsyncTaskType(..), AsyncTaskWithType(..), CTabNgramType(..), ListId, OrderBy(..), ScoreType(..), TabSubType(..), TabType(..), TermList(..), TermSize(..)) import Gargantext.Types (AsyncTask, AsyncTaskType(..), AsyncTaskWithType(..), CTabNgramType(..), FrontendError, ListId, OrderBy(..), ScoreType(..), TabSubType(..), TabType(..), TermList(..), TermSize(..))
import Gargantext.Utils.Either (eitherMap) import Gargantext.Utils.Either (eitherMap)
import Gargantext.Utils.KarpRabin (indicesOfAny) import Gargantext.Utils.KarpRabin (indicesOfAny)
import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Reactix as R2
import Partial (crashWith)
import Partial.Unsafe (unsafePartial)
import Reactix as R
import Reactix.DOM.HTML as H
import Simple.JSON as JSON
import Toestand as T
here :: R2.Here here :: R2.Here
here = R2.here "Gargantext.Components.NgramsTable.Core" here = R2.here "Gargantext.Components.NgramsTable.Core"
...@@ -1117,21 +1116,20 @@ chartsAfterSync :: forall props discard. ...@@ -1117,21 +1116,20 @@ chartsAfterSync :: forall props discard.
, tabType :: TabType , tabType :: TabType
| props | props
} }
-> T.Box (Array FrontendError)
-> T.Box GAT.Storage -> T.Box GAT.Storage
-> discard -> discard
-> Aff Unit -> Aff Unit
chartsAfterSync path'@{ nodeId } tasks _ = do chartsAfterSync path'@{ nodeId } errors tasks _ = do
task <- postNgramsChartsAsync path' eTask <- postNgramsChartsAsync path'
liftEffect $ do handleRESTError errors eTask $ \task -> liftEffect $ do
log2 "[chartsAfterSync] Synchronize task" task log2 "[chartsAfterSync] Synchronize task" task
GAT.insert nodeId task tasks GAT.insert nodeId task tasks
postNgramsChartsAsync :: forall s. CoreParams s -> Aff AsyncTaskWithType postNgramsChartsAsync :: forall s. CoreParams s -> Aff (Either RESTError AsyncTaskWithType)
postNgramsChartsAsync { listIds, nodeId, session, tabType } = do postNgramsChartsAsync { listIds, nodeId, session, tabType } = do
eTask :: Either RESTError AsyncTask <- post session putNgramsAsync acu eTask :: Either RESTError AsyncTask <- post session putNgramsAsync acu
case eTask of pure $ (\task -> AsyncTaskWithType { task, typ: UpdateNgramsCharts }) <$> eTask
Left _err -> liftEffect $ throwError $ error "[postNgramsChartsAsync] RESTError"
Right task -> pure $ AsyncTaskWithType { task, typ: UpdateNgramsCharts }
where where
acu = AsyncNgramsChartsUpdate { listId: head listIds acu = AsyncNgramsChartsUpdate { listId: head listIds
, tabType } , tabType }
......
...@@ -113,10 +113,9 @@ type NgramsViewTabsProps = ...@@ -113,10 +113,9 @@ type NgramsViewTabsProps =
ngramsView :: R2.Leaf NgramsViewTabsProps ngramsView :: R2.Leaf NgramsViewTabsProps
ngramsView props = R.createElement ngramsViewCpt props [] ngramsView props = R.createElement ngramsViewCpt props []
ngramsViewCpt :: R.Component NgramsViewTabsProps ngramsViewCpt :: R.Component NgramsViewTabsProps
ngramsViewCpt = here.component "ngramsView" cpt where ngramsViewCpt = here.component "ngramsView" cpt where
cpt props@{ defaultListId, mode, nodeId, session } _ = do cpt props@{ defaultListId, errors, mode, nodeId, session } _ = do
path <- T.useBox $ path <- T.useBox $
NTC.initialPageParams session nodeId NTC.initialPageParams session nodeId
[ defaultListId ] (TabDocument TabDocs) [ defaultListId ] (TabDocument TabDocs)
...@@ -126,6 +125,7 @@ ngramsViewCpt = here.component "ngramsView" cpt where ...@@ -126,6 +125,7 @@ ngramsViewCpt = here.component "ngramsView" cpt where
props' path = props' path =
(Record.merge most (Record.merge most
{ afterSync { afterSync
, errors
, path , path
, tabType: TabPairing (TabNgramType $ modeTabType mode) , tabType: TabPairing (TabNgramType $ modeTabType mode)
, tabNgramType: modeTabType' mode , tabNgramType: modeTabType' mode
......
...@@ -92,29 +92,36 @@ tabsCpt = here.component "tabs" cpt ...@@ -92,29 +92,36 @@ tabsCpt = here.component "tabs" cpt
, "Trash" /\ docs -- TODO pass-in trash mode , "Trash" /\ docs -- TODO pass-in trash mode
] ]
where where
patentsView = { reloadRoot patentsView = { cacheState
, tasks
, cacheState
, defaultListId , defaultListId
, errors
, mode: Patents , mode: Patents
, nodeId , nodeId
, reloadForest , reloadForest
, session } , reloadRoot
booksView = { reloadRoot , session
, tasks , tasks
, cacheState }
booksView = { cacheState
, defaultListId , defaultListId
, errors
, mode: Books , mode: Books
, nodeId , nodeId
, reloadForest , reloadForest
, session } , reloadRoot
commView = { reloadRoot, tasks , session
, cacheState , tasks
}
commView = { cacheState
, defaultListId , defaultListId
, errors
, mode: Communication , mode: Communication
, nodeId , nodeId
, reloadForest , reloadForest
, session } , reloadRoot
, session
, tasks
}
chart = mempty chart = mempty
totalRecords = 4736 -- TODO totalRecords = 4736 -- TODO
docs = DT.docViewLayout docs = DT.docViewLayout
...@@ -138,6 +145,7 @@ tabsCpt = here.component "tabs" cpt ...@@ -138,6 +145,7 @@ tabsCpt = here.component "tabs" cpt
type NgramsViewTabsProps = ( type NgramsViewTabsProps = (
cacheState :: T.Box LTypes.CacheState cacheState :: T.Box LTypes.CacheState
, defaultListId :: Int , defaultListId :: Int
, errors :: T.Box (Array FrontendError)
, mode :: Mode , mode :: Mode
, nodeId :: Int , nodeId :: Int
, reloadForest :: T2.ReloadS , reloadForest :: T2.ReloadS
...@@ -154,6 +162,7 @@ ngramsViewCpt = here.component "ngramsView" cpt ...@@ -154,6 +162,7 @@ ngramsViewCpt = here.component "ngramsView" cpt
where where
cpt { cacheState cpt { cacheState
, defaultListId , defaultListId
, errors
, reloadForest , reloadForest
, reloadRoot , reloadRoot
, mode , mode
...@@ -166,6 +175,7 @@ ngramsViewCpt = here.component "ngramsView" cpt ...@@ -166,6 +175,7 @@ ngramsViewCpt = here.component "ngramsView" cpt
afterSync: \_ -> pure unit afterSync: \_ -> pure unit
, cacheState , cacheState
, defaultListId , defaultListId
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
......
...@@ -95,6 +95,7 @@ ngramsViewCpt = here.component "ngramsView" cpt where ...@@ -95,6 +95,7 @@ ngramsViewCpt = here.component "ngramsView" cpt where
<> [ NT.mainNgramsTable { afterSync: afterSync chartsReload <> [ NT.mainNgramsTable { afterSync: afterSync chartsReload
, cacheState , cacheState
, defaultListId , defaultListId
, errors
, path , path
, reloadForest , reloadForest
, reloadRoot , reloadRoot
......
...@@ -224,7 +224,8 @@ openedSidePanel :: R2.Component (WithSession Props) ...@@ -224,7 +224,8 @@ openedSidePanel :: R2.Component (WithSession Props)
openedSidePanel = R.createElement openedSidePanelCpt openedSidePanel = R.createElement openedSidePanelCpt
openedSidePanelCpt :: R.Component (WithSession Props) openedSidePanelCpt :: R.Component (WithSession Props)
openedSidePanelCpt = here.component "openedSidePanel" cpt where openedSidePanelCpt = here.component "openedSidePanel" cpt where
cpt { boxes: { graphVersion