mirror of
https://github.com/prometheus/prometheus.git
synced 2025-08-13 17:47:10 +02:00
* set useFetch loading flag to be true initially Signed-off-by: blalov <boiskila@gmail.com> * make extended props optional Signed-off-by: blalov <boiskila@gmail.com> * add status indicator to targets page Signed-off-by: blalov <boiskila@gmail.com> * add status indicator to tsdb status page Signed-off-by: blalov <boiskila@gmail.com> * spread response in Alerts Signed-off-by: blalov <boiskila@gmail.com> * disable eslint func retun type rule Signed-off-by: blalov <boiskila@gmail.com> * add status indicator to Service Discovery page Signed-off-by: blalov <boiskila@gmail.com> * refactor PanelList Signed-off-by: blalov <boiskila@gmail.com> * test fix Signed-off-by: blalov <boiskila@gmail.com> * use local storage hook in PanelList Signed-off-by: blalov <boiskila@gmail.com> * use 'useFetch' for fetching metrics Signed-off-by: blalov <boiskila@gmail.com> * left-overs Signed-off-by: blalov <boiskila@gmail.com> * remove targets page custom error message Signed-off-by: Boyko Lalov <boiskila@gmail.com> * adding components displayName Signed-off-by: Boyko Lalov <boiskila@gmail.com> * display more user friendly error messages Signed-off-by: Boyko Lalov <boiskila@gmail.com> * update status page snapshot Signed-off-by: Boyko Lalov <boiskila@gmail.com> * pr review changes Signed-off-by: Boyko Lalov <boiskila@gmail.com> * fix broken tests Signed-off-by: Boyko Lalov <boiskila@gmail.com> * fix typos Signed-off-by: Boyko Lalov <boiskila@gmail.com>
47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
import React, { FC, ComponentType } from 'react';
|
|
import { Alert } from 'reactstrap';
|
|
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
|
|
import { faSpinner } from '@fortawesome/free-solid-svg-icons';
|
|
|
|
interface StatusIndicatorProps {
|
|
error?: Error;
|
|
isLoading?: boolean;
|
|
customErrorMsg?: JSX.Element;
|
|
componentTitle?: string;
|
|
}
|
|
|
|
export const withStatusIndicator = <T extends {}>(Component: ComponentType<T>): FC<StatusIndicatorProps & T> => ({
|
|
error,
|
|
isLoading,
|
|
customErrorMsg,
|
|
componentTitle,
|
|
...rest
|
|
}) => {
|
|
if (error) {
|
|
return (
|
|
<Alert color="danger">
|
|
{customErrorMsg ? (
|
|
customErrorMsg
|
|
) : (
|
|
<>
|
|
<strong>Error:</strong> Error fetching {componentTitle || Component.displayName}: {error.message}
|
|
</>
|
|
)}
|
|
</Alert>
|
|
);
|
|
}
|
|
|
|
if (isLoading) {
|
|
return (
|
|
<FontAwesomeIcon
|
|
size="3x"
|
|
icon={faSpinner}
|
|
spin
|
|
className="position-absolute"
|
|
style={{ transform: 'translate(-50%, -50%)', top: '50%', left: '50%' }}
|
|
/>
|
|
);
|
|
}
|
|
return <Component {...(rest as T)} />;
|
|
};
|