UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

61 lines (60 loc) 2.48 kB
import { jsx as _jsx } from "react/jsx-runtime"; /* * Copyright 2025 The Kubernetes Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import Box from '@mui/material/Box'; import { useTranslation } from 'react-i18next'; import GatewayClass from '../../lib/k8s/gatewayClass'; import { LightTooltip, StatusLabel } from '../common'; import ResourceListView from '../common/Resource/ResourceListView'; export function makeGatewayStatusLabel(conditions) { if (!conditions) { return null; } const conditionOptions = { Accepted: { status: 'success', icon: 'mdi:check-bold', }, }; const condition = conditions.find(({ status, type }) => type in conditionOptions && status === 'True'); if (!condition) { return null; } const tooltip = ''; const conditionInfo = conditionOptions[condition.type]; return (_jsx(LightTooltip, { title: tooltip, interactive: true, children: _jsx(Box, { display: "inline", children: _jsx(StatusLabel, { status: conditionInfo.status, children: condition.type }) }) })); } export default function GatewayClassList() { const { t } = useTranslation('glossary'); return (_jsx(ResourceListView, { title: t('Gateway Classes'), headerProps: { noNamespaceFilter: true, }, resourceClass: GatewayClass, columns: [ 'name', 'cluster', { id: 'controllerName', label: t('Controller'), getValue: (gatewayClass) => gatewayClass.spec?.controllerName, }, { id: 'conditions', label: t('translation|Conditions'), getValue: (gatewayClass) => gatewayClass.status?.conditions?.find(({ status }) => status === 'True')?.type || null, render: (gatewayClass) => makeGatewayStatusLabel(gatewayClass.status?.conditions || null), }, 'age', ] })); }