Commit 7477bfd1 authored by Karen Konou's avatar Karen Konou

Merge branch 'dev-support-emitting-warnings' into 'dev'

Dev support emitting warnings

See merge request !519
parents fb187f54 8b09569f
Pipeline #7811 failed with stages
in 22 minutes and 8 seconds
......@@ -36,53 +36,20 @@ componentCpt = here.component "main" cpt
{}
(mapWithIndex (showError errors) errors')
showError errors i (FStringError { error }) =
RB.alert
{ dismissible: true
, onClose
, variant: "danger"
}
[ H.text error ]
where
onClose = do
here.error2 "click!" error
T.modify_
( \es -> case deleteAt i es of
Nothing -> es
Just es' -> es'
)
errors
showError errors i (FRESTError { error }) =
RB.alert
{ dismissible: true
, onClose
, variant: "danger"
}
[ H.text $ show error ]
where
onClose = do
here.error2 "click!" error
T.modify_
( \es -> case deleteAt i es of
Nothing -> es
Just es' -> es'
)
errors
showError errors i (FStringError { error }) = errorAlert errors i "danger" error
showError errors i (FStringWarning { warning }) = errorAlert errors i "warning" warning
showError errors i (FRESTError { error }) = errorAlert errors i "danger" (show error)
showError errors i (FOtherError { error }) = errorAlert errors i "danger" (show error)
showError errors i (FOtherError { error }) =
errorAlert errors i variant txt =
RB.alert
{ dismissible: true
, onClose
, variant: "danger"
, variant
}
[ H.text $ show error ]
[ H.text txt ]
where
onClose = do
here.error2 "click!" error
T.modify_
( \es -> case deleteAt i es of
Nothing -> es
......
......@@ -6,11 +6,12 @@ import Data.Array as A
import Data.Either (Either(..))
import Data.Foldable (foldl)
import Data.Maybe (fromMaybe, Maybe(..))
import Data.Traversable (traverse_)
import Effect (Effect)
import Effect.Aff (Aff)
import Effect.Class (liftEffect)
import Gargantext.Config.REST (RESTError, logRESTError)
import Gargantext.Types (AsyncEvent(..), AsyncTaskLog(..), FrontendError(..), asyncTaskLogEventsErrorMessage)
import Gargantext.Types (AsyncEvent(..), AsyncTaskLog(..), FrontendError(..), asyncErrorToFrontendError, asyncTaskLogEventsErrors)
import Gargantext.Utils.Reactix as R2
import Toestand as T
......@@ -54,7 +55,4 @@ handleErrorInAsyncTaskLog
-> AsyncTaskLog
-> Effect Unit
handleErrorInAsyncTaskLog errors atl =
case asyncTaskLogEventsErrorMessage atl of
Nothing -> pure unit
Just error ->
T.modify_ (A.cons $ FStringError { error }) errors
traverse_ (\e -> T.modify_ (A.cons $ asyncErrorToFrontendError e) errors) (asyncTaskLogEventsErrors atl)
......@@ -838,8 +838,17 @@ derive instance Generic AsyncEvent _
derive instance Newtype AsyncEvent _
derive newtype instance JSON.ReadForeign AsyncEvent
asyncEventErrorMessage :: AsyncEvent -> Maybe String
asyncEventErrorMessage (AsyncEvent { level: "ERROR", message }) = Just message
data AsyncError
= AsyncErrorMessage String
| AsyncWarningMessage String
asyncErrorToFrontendError :: AsyncError -> FrontendError
asyncErrorToFrontendError (AsyncErrorMessage error) = FStringError { error }
asyncErrorToFrontendError (AsyncWarningMessage warning) = FStringWarning { warning }
asyncEventErrorMessage :: AsyncEvent -> Maybe AsyncError
asyncEventErrorMessage (AsyncEvent { level: "ERROR", message }) = Just $ AsyncErrorMessage message
asyncEventErrorMessage (AsyncEvent { level: "WARNING", message }) = Just $ AsyncWarningMessage message
asyncEventErrorMessage _ = Nothing
newtype AsyncTaskLog = AsyncTaskLog
......@@ -853,17 +862,9 @@ derive instance Generic AsyncTaskLog _
derive instance Newtype AsyncTaskLog _
derive newtype instance JSON.ReadForeign AsyncTaskLog
asyncTaskLogEventsErrorMessage :: AsyncTaskLog -> Maybe String
asyncTaskLogEventsErrorMessage (AsyncTaskLog { events }) =
foldl eventErrorMessage' Nothing events
where
eventErrorMessage' acc ae =
case asyncEventErrorMessage ae of
Nothing -> acc
Just e' ->
case acc of
Nothing -> Just e'
Just acc' -> Just $ e' <> "\n" <> acc'
asyncTaskLogEventsErrors :: AsyncTaskLog -> Array AsyncError
asyncTaskLogEventsErrors (AsyncTaskLog { events }) =
A.mapMaybe asyncEventErrorMessage events
asyncTaskLogPercent :: AsyncTaskLog -> Number
asyncTaskLogPercent (AsyncTaskLog { failed, remaining, succeeded }) = 100.0 * nom / denom
......@@ -877,7 +878,7 @@ asyncTaskLogIsFinished (AsyncTaskLog { remaining }) = remaining == 0
asyncTaskLogIsError :: AsyncTaskLog -> Boolean
asyncTaskLogIsError atl@(AsyncTaskLog { events }) =
asyncTaskLogIsFinished atl
&& (A.length $ A.filter (\(AsyncEvent { level }) -> level == "ERROR") events)
&& (A.length $ A.filter (\(AsyncEvent { level }) -> level == "ERROR" || level == "WARNING") events)
> 0
-- New type tasks (async workers)
......@@ -920,6 +921,7 @@ toggleSidePanelState Opened = Closed
data FrontendError
= FStringError { error :: String }
| FStringWarning { warning :: String }
| FRESTError { error :: RESTError }
| FOtherError { error :: String }
......
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