-
-
{message}
+import { InlineLoading } from '../../Loading';
+
+export const OK_STATE = 'OK_STATE';
+export const ERROR_STATE = 'ERROR_STATE';
+export const WARNING_STATE = 'WARNING_STATE';
+export const LOADING_STATE = 'LOADING_STATE';
+
+const getIcon = state => {
+ let icon;
+ let className;
+ switch (state) {
+ case OK_STATE:
+ icon = 'check-circle';
+ className = 'ok';
+ break;
+ case ERROR_STATE:
+ icon = 'exclamation-circle';
+ className = 'error';
+ break;
+ case WARNING_STATE:
+ default:
+ icon = 'exclamation-triangle';
+ className = 'warning';
+ }
+ return (
+
+
+
+ );
+};
+
+export const HealthItem = ({ state, LoadingComponent, message, details }) => (
+
+ {state === LOADING_STATE ?
: getIcon(state)}
+
+
{message}
+ {details &&
{details}
}
+
);
+HealthItem.defaultProps = {
+ details: null,
+ state: null,
+ LoadingComponent: InlineLoading,
+};
+
HealthItem.propTypes = {
message: PropTypes.string.isRequired,
- icon: PropTypes.string.isRequired,
- classname: PropTypes.string.isRequired,
+ details: PropTypes.string,
+ state: PropTypes.string,
+ LoadingComponent: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
};
diff --git a/src/components/Dashboard/Health/strings.js b/src/components/Dashboard/Health/strings.js
new file mode 100644
index 000000000..d7e5a4a3f
--- /dev/null
+++ b/src/components/Dashboard/Health/strings.js
@@ -0,0 +1,10 @@
+export const OCS_HEALTHY = 'OCS is healthy';
+export const OCS_DEGRADED = 'OCS health is degraded';
+export const OCS_ERROR = 'OCS health is in error state';
+export const OCS_UNKNOWN = 'OCS is not available';
+
+export const CNV_HEALTHY = 'CNV is healthy';
+export const CNV_ERROR = 'CNV is in error state';
+
+export const OCP_HEALTHY = 'OpenShift is healthy';
+export const OCP_ERROR = 'Openshift is in error state';
diff --git a/src/components/Dashboard/Health/tests/__snapshots__/HealthBody.test.js.snap b/src/components/Dashboard/Health/tests/__snapshots__/HealthBody.test.js.snap
index 8d1d5c332..d67d8556a 100644
--- a/src/components/Dashboard/Health/tests/__snapshots__/HealthBody.test.js.snap
+++ b/src/components/Dashboard/Health/tests/__snapshots__/HealthBody.test.js.snap
@@ -5,9 +5,12 @@ exports[`
renders correctly 1`] = `
className="kubevirt-health__body"
>
`;
diff --git a/src/components/Dashboard/Health/tests/__snapshots__/HealthItem.test.js.snap b/src/components/Dashboard/Health/tests/__snapshots__/HealthItem.test.js.snap
index 2fe582593..d54217e57 100644
--- a/src/components/Dashboard/Health/tests/__snapshots__/HealthItem.test.js.snap
+++ b/src/components/Dashboard/Health/tests/__snapshots__/HealthItem.test.js.snap
@@ -2,18 +2,22 @@
exports[`