/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import "./overview-workload-status.scss"; import React from "react"; import capitalize from "lodash/capitalize"; import { observer } from "mobx-react"; import { PieChart } from "../chart"; import { cssVar } from "../../utils"; import type { ChartData } from "chart.js"; import { ThemeStore } from "../../theme.store"; interface Props { status: Record; } @observer export class OverviewWorkloadStatus extends React.Component { elem?: HTMLElement; renderChart() { if (!this.elem) { return null; } const cssVars = cssVar(this.elem); const chartData: Required = { labels: [], datasets: [], }; const statuses = Object.entries(this.props.status).filter(([, val]) => val > 0); if (statuses.length === 0) { chartData.datasets.push({ data: [1], backgroundColor: [ThemeStore.getInstance().activeTheme.colors.pieChartDefaultColor], label: "Empty", }); } else { const data: number[] = []; const backgroundColor: string[] = []; for (const [status, value] of statuses) { data.push(value); backgroundColor.push(cssVars.get(`--workload-status-${status.toLowerCase()}`).toString()); chartData.labels.push(`${capitalize(status)}: ${value}`); } chartData.datasets.push({ data, backgroundColor, label: "Status", }); } return ( ); } render() { return (
this.elem = e}>
{this.renderChart()}
); } }