module Gargantext.Components.Nodes.Corpus.Chart.Utils where import Data.Maybe (Maybe(..)) import Effect (Effect) import Effect.Aff (launchAff_) import Effect.Class (liftEffect) import Reactix as R import Reactix.DOM.HTML as H import Gargantext.Prelude import Gargantext.Components.Nodes.Corpus.Chart.API (recomputeChart) import Gargantext.Components.Nodes.Corpus.Chart.Types (Path) import Gargantext.Sessions (Session) import Gargantext.Types as T import Gargantext.Utils.Reactix as R2 import Gargantext.Utils.Toestand as T2 here :: R2.Here here = R2.here "Gargantext.Components.Nodes.Corpus.Chart.Utils" type ReloadButtonProps = ( reload :: T2.ReloadS ) reloadButton :: R2.Leaf ReloadButtonProps reloadButton = R2.leaf reloadButtonCpt reloadButtonCpt :: R.Component ReloadButtonProps reloadButtonCpt = here.component "reloadButton" cpt where cpt { reload } _ = do pure $ H.a { className, on: { click }, title: "Reload" } [] where className = "pr-1 fa fa-refresh" click _ = T2.reload reload mNgramsTypeFromTabType :: T.TabType -> Maybe T.CTabNgramType mNgramsTypeFromTabType (T.TabCorpus (T.TabNgramType ngramType)) = Just ngramType mNgramsTypeFromTabType (T.TabDocument (T.TabNgramType ngramType)) = Just ngramType mNgramsTypeFromTabType _ = Nothing type ChartUpdateButtonProps = ( chartType :: T.ChartType , path :: Record Path , reload :: T2.ReloadS , session :: Session ) chartUpdateButton :: R2.Leaf ChartUpdateButtonProps chartUpdateButton = R2.leaf chartUpdateButtonCpt chartUpdateButtonCpt :: R.Component ChartUpdateButtonProps chartUpdateButtonCpt = here.component "chartUpdateButton" cpt where cpt { path: { corpusId, listId, tabType } , reload, chartType, session } _ = do pure $ H.a { className, on: { click }, title: "Update chart data" } [] where className = "chart-update-button fa fa-database" click :: forall a. a -> Effect Unit click _ = do launchAff_ $ do case mNgramsTypeFromTabType tabType of Just ngramsType -> do _ <- recomputeChart session chartType ngramsType corpusId listId liftEffect $ T2.reload reload Nothing -> pure unit