2020-03-14 00:02:20 +08:00
|
|
|
import React from "react";
|
2020-03-31 14:36:40 +08:00
|
|
|
import { useCluster, ClusterStatus, Cluster } from "../providers/cluster";
|
2020-03-14 00:02:20 +08:00
|
|
|
|
2020-03-31 14:36:40 +08:00
|
|
|
function ClusterStatusButton({ onClick }: { onClick: () => void }) {
|
2020-03-19 18:18:58 +08:00
|
|
|
return (
|
|
|
|
<div onClick={onClick}>
|
|
|
|
<Button />
|
|
|
|
</div>
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
|
|
|
function Button() {
|
2020-03-31 14:36:40 +08:00
|
|
|
const { status, cluster, name, customUrl } = useCluster();
|
|
|
|
const statusName = cluster !== Cluster.Custom ? `${name}` : `${customUrl}`;
|
2020-03-14 00:02:20 +08:00
|
|
|
|
|
|
|
switch (status) {
|
2020-03-31 14:36:40 +08:00
|
|
|
case ClusterStatus.Connected:
|
2020-03-19 18:18:58 +08:00
|
|
|
return (
|
|
|
|
<span className="btn btn-outline-success lift">
|
|
|
|
<span className="fe fe-check-circle mr-2"></span>
|
|
|
|
{statusName}
|
|
|
|
</span>
|
|
|
|
);
|
2020-03-14 00:02:20 +08:00
|
|
|
|
2020-03-31 14:36:40 +08:00
|
|
|
case ClusterStatus.Connecting:
|
2020-03-14 00:02:20 +08:00
|
|
|
return (
|
2020-03-19 18:18:58 +08:00
|
|
|
<span className="btn btn-outline-warning lift">
|
2020-03-14 00:02:20 +08:00
|
|
|
<span
|
2020-03-19 18:18:58 +08:00
|
|
|
className="spinner-grow spinner-grow-sm text-warning mr-2"
|
2020-03-14 00:02:20 +08:00
|
|
|
role="status"
|
|
|
|
aria-hidden="true"
|
|
|
|
></span>
|
2020-03-19 18:18:58 +08:00
|
|
|
{statusName}
|
2020-03-17 12:04:04 +08:00
|
|
|
</span>
|
2020-03-14 00:02:20 +08:00
|
|
|
);
|
|
|
|
|
2020-03-31 14:36:40 +08:00
|
|
|
case ClusterStatus.Failure:
|
2020-03-19 18:18:58 +08:00
|
|
|
return (
|
|
|
|
<span className="btn btn-outline-danger lift">
|
|
|
|
<span className="fe fe-alert-circle mr-2"></span>
|
|
|
|
{statusName}
|
|
|
|
</span>
|
|
|
|
);
|
2020-03-14 00:02:20 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-03-31 14:36:40 +08:00
|
|
|
export default ClusterStatusButton;
|