UNPKG

@kinvolk/headlamp-plugin

Version:

The needed infrastructure for building Headlamp plugins.

66 lines (65 loc) 2.78 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 { useTranslation } from 'react-i18next'; import { useParams } from 'react-router-dom'; import HTTPRoute from '../../lib/k8s/httpRoute'; import { EmptyContent, LabelListItem, NameValueTable } from '../common'; import { DetailsGrid } from '../common/Resource'; import SectionBox from '../common/SectionBox'; import { GatewayParentRefSection } from './utils'; function HTTPRouteRuleTable(props) { const { rule } = props; const { t } = useTranslation(['glossary', 'translation']); const mainRows = [ { name: rule.name, withHighlightStyle: true, hide: rule.name === undefined, }, { name: t('translation|BackendRefs'), value: rule.backendRefs?.length, hide: (rule.backendRefs?.length || 0) === 0, }, { name: t('translation|Matches'), value: rule.matches?.length, hide: (rule.matches?.length || 0) === 0, }, ]; return _jsx(NameValueTable, { rows: mainRows }); } export default function HTTPRouteDetails(props) { const params = useParams(); const { name = params.name, namespace = params.namespace } = props; const { t } = useTranslation(['glossary', 'translation']); return (_jsx(DetailsGrid, { resourceType: HTTPRoute, name: name, namespace: namespace, extraInfo: httpRoute => httpRoute && [ { name: 'Hostnames', value: _jsx(LabelListItem, { labels: httpRoute.hostnames.map(tls => `${tls}`) }), }, ], withEvents: true, extraSections: (item) => item && [ { id: 'headlamp.httproute-rules', section: item && (_jsx(SectionBox, { title: t('Rules'), children: item.rules.length === 0 ? (_jsx(EmptyContent, { children: t('No data') })) : (item.rules.map((rule, index) => (_jsx(HTTPRouteRuleTable, { rule: rule }, index)))) })), }, { id: 'headlamp.httproute-parentrefs', section: _jsx(GatewayParentRefSection, { parentRefs: item?.parentRefs || [] }), }, ] })); }