Skip to content

Commit 7f66352

Browse files
authored
Merge pull request #4007 from jaehanbyun/fix/ingress-class-default-indicator
frontend: IngressClassList: Add Default and Parameters columns
2 parents fbd7a09 + 4ba5228 commit 7f66352

File tree

15 files changed

+173
-54
lines changed

15 files changed

+173
-54
lines changed

frontend/src/components/ingress/ClassList.tsx

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616

1717
import { useTranslation } from 'react-i18next';
1818
import IngressClass from '../../lib/k8s/ingressClass';
19-
import { HoverInfoLabel } from '../common/Label';
2019
import ResourceListView from '../common/Resource/ResourceListView';
2120

2221
export default function IngressClassList() {
@@ -30,30 +29,34 @@ export default function IngressClassList() {
3029
}}
3130
resourceClass={IngressClass}
3231
columns={[
33-
{
34-
id: 'default',
35-
label: '',
36-
gridTemplate: 0.1,
37-
getValue: resource => (resource?.isDefault ? t('Default Ingress Class') : null),
38-
render: (resource: IngressClass) =>
39-
resource && resource.isDefault ? <DefaultLabel /> : null,
40-
sort: false,
41-
disableFiltering: true,
42-
},
4332
'name',
4433
{
4534
id: 'controller',
4635
label: t('Controller'),
4736
filterVariant: 'multi-select',
4837
getValue: (ingressClass: IngressClass) => ingressClass.spec?.controller,
38+
gridTemplate: 'auto',
39+
},
40+
{
41+
id: 'default',
42+
label: t('Default'),
43+
filterVariant: 'checkbox',
44+
getValue: resource => String(resource?.isDefault ?? false),
45+
render: (resource: IngressClass) => (resource && resource.isDefault ? t('Yes') : null),
46+
gridTemplate: 'auto',
47+
},
48+
{
49+
id: 'parameters',
50+
label: t('Parameters'),
51+
getValue: (ingressClass: IngressClass) => {
52+
const params = ingressClass.spec?.parameters;
53+
if (!params) return '';
54+
const { kind, apiGroup, name } = params;
55+
return apiGroup ? `${kind}.${apiGroup}/${name}` : name;
56+
},
4957
},
5058
'age',
5159
]}
5260
/>
5361
);
5462
}
55-
56-
export function DefaultLabel() {
57-
const { t } = useTranslation('glossary');
58-
return <HoverInfoLabel label="" hoverInfo={t('Default Ingress Class')} icon="mdi:star" />;
59-
}

frontend/src/components/ingress/__snapshots__/ClassList.Items.stories.storyshot

Lines changed: 115 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
</div>
164164
</div>
165165
<table
166-
class="MuiTable-root css-1b3kskg-MuiTable-root"
166+
class="MuiTable-root css-iyjoyr-MuiTable-root"
167167
>
168168
<thead
169169
class="MuiTableHead-root css-1tmrira-MuiTableHead-root"
@@ -222,20 +222,53 @@
222222
</th>
223223
<th
224224
aria-sort="none"
225-
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-8d0bva-MuiTableCell-root"
225+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-pksupb-MuiTableCell-root"
226226
colspan="1"
227+
data-can-sort="true"
227228
data-index="-1"
228229
scope="col"
229230
>
230231
<div
231232
class="Mui-TableHeadCell-Content MuiBox-root css-1w86f15"
232233
>
233234
<div
234-
class="Mui-TableHeadCell-Content-Labels MuiBox-root css-1byo2ey"
235+
class="Mui-TableHeadCell-Content-Labels MuiBox-root css-68rqdf"
235236
>
236237
<div
237-
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-1sbs8jn"
238-
/>
238+
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
239+
>
240+
Name
241+
</div>
242+
<span
243+
aria-label="Sort by Name ascending"
244+
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
245+
data-mui-internal-clone-element="true"
246+
>
247+
<span
248+
aria-label="Sort by Name ascending"
249+
class="MuiButtonBase-root MuiTableSortLabel-root Mui-active css-542clt-MuiButtonBase-root-MuiTableSortLabel-root"
250+
role="button"
251+
tabindex="0"
252+
>
253+
<svg
254+
aria-hidden="true"
255+
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTableSortLabel-icon MuiTableSortLabel-iconDirectionAsc css-1vweko9-MuiSvgIcon-root-MuiTableSortLabel-icon"
256+
data-testid="SyncAltIcon"
257+
focusable="false"
258+
style="transform: rotate(-90deg) scaleX(0.9) translateX(-1px);"
259+
viewBox="0 0 24 24"
260+
>
261+
<path
262+
d="m18 12 4-4-4-4v3H3v2h15zM6 12l-4 4 4 4v-3h15v-2H6z"
263+
/>
264+
</svg>
265+
</span>
266+
<span
267+
class="MuiBadge-badge MuiBadge-standard MuiBadge-invisible MuiBadge-anchorOriginTopRight MuiBadge-anchorOriginTopRightCircular MuiBadge-overlapCircular css-dniquu-MuiBadge-badge"
268+
>
269+
0
270+
</span>
271+
</span>
239272
</div>
240273
<div
241274
class="Mui-TableHeadCell-Content-Actions MuiBox-root css-epvm6"
@@ -244,7 +277,7 @@
244277
</th>
245278
<th
246279
aria-sort="none"
247-
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-pksupb-MuiTableCell-root"
280+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1tfioef-MuiTableCell-root"
248281
colspan="1"
249282
data-can-sort="true"
250283
data-index="-1"
@@ -259,15 +292,15 @@
259292
<div
260293
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
261294
>
262-
Name
295+
Controller
263296
</div>
264297
<span
265-
aria-label="Sort by Name ascending"
298+
aria-label="Sort by Controller ascending"
266299
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
267300
data-mui-internal-clone-element="true"
268301
>
269302
<span
270-
aria-label="Sort by Name ascending"
303+
aria-label="Sort by Controller ascending"
271304
class="MuiButtonBase-root MuiTableSortLabel-root Mui-active css-542clt-MuiButtonBase-root-MuiTableSortLabel-root"
272305
role="button"
273306
tabindex="0"
@@ -299,7 +332,7 @@
299332
</th>
300333
<th
301334
aria-sort="none"
302-
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1tfioef-MuiTableCell-root"
335+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1019980-MuiTableCell-root"
303336
colspan="1"
304337
data-can-sort="true"
305338
data-index="-1"
@@ -314,15 +347,70 @@
314347
<div
315348
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
316349
>
317-
Controller
350+
Default
318351
</div>
319352
<span
320-
aria-label="Sort by Controller ascending"
353+
aria-label="Sort by Default ascending"
321354
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
322355
data-mui-internal-clone-element="true"
323356
>
324357
<span
325-
aria-label="Sort by Controller ascending"
358+
aria-label="Sort by Default ascending"
359+
class="MuiButtonBase-root MuiTableSortLabel-root Mui-active css-542clt-MuiButtonBase-root-MuiTableSortLabel-root"
360+
role="button"
361+
tabindex="0"
362+
>
363+
<svg
364+
aria-hidden="true"
365+
class="MuiSvgIcon-root MuiSvgIcon-fontSizeMedium MuiTableSortLabel-icon MuiTableSortLabel-iconDirectionAsc css-1vweko9-MuiSvgIcon-root-MuiTableSortLabel-icon"
366+
data-testid="SyncAltIcon"
367+
focusable="false"
368+
style="transform: rotate(-90deg) scaleX(0.9) translateX(-1px);"
369+
viewBox="0 0 24 24"
370+
>
371+
<path
372+
d="m18 12 4-4-4-4v3H3v2h15zM6 12l-4 4 4 4v-3h15v-2H6z"
373+
/>
374+
</svg>
375+
</span>
376+
<span
377+
class="MuiBadge-badge MuiBadge-standard MuiBadge-invisible MuiBadge-anchorOriginTopRight MuiBadge-anchorOriginTopRightCircular MuiBadge-overlapCircular css-dniquu-MuiBadge-badge"
378+
>
379+
0
380+
</span>
381+
</span>
382+
</div>
383+
<div
384+
class="Mui-TableHeadCell-Content-Actions MuiBox-root css-epvm6"
385+
/>
386+
</div>
387+
</th>
388+
<th
389+
aria-sort="none"
390+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-zcylxz-MuiTableCell-root"
391+
colspan="1"
392+
data-can-sort="true"
393+
data-index="-1"
394+
scope="col"
395+
>
396+
<div
397+
class="Mui-TableHeadCell-Content MuiBox-root css-1w86f15"
398+
>
399+
<div
400+
class="Mui-TableHeadCell-Content-Labels MuiBox-root css-68rqdf"
401+
>
402+
<div
403+
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
404+
>
405+
Parameters
406+
</div>
407+
<span
408+
aria-label="Sort by Parameters ascending"
409+
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
410+
data-mui-internal-clone-element="true"
411+
>
412+
<span
413+
aria-label="Sort by Parameters ascending"
326414
class="MuiButtonBase-root MuiTableSortLabel-root Mui-active css-542clt-MuiButtonBase-root-MuiTableSortLabel-root"
327415
role="button"
328416
tabindex="0"
@@ -470,9 +558,6 @@
470558
/>
471559
</span>
472560
</td>
473-
<td
474-
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
475-
/>
476561
<td
477562
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1adoll5-MuiTableCell-root"
478563
>
@@ -488,6 +573,12 @@
488573
>
489574
test
490575
</td>
576+
<td
577+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
578+
/>
579+
<td
580+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12uioej-MuiTableCell-root"
581+
/>
491582
<td
492583
class="MuiTableCell-root MuiTableCell-alignRight MuiTableCell-sizeMedium css-14i1ub9-MuiTableCell-root"
493584
>
@@ -560,15 +651,6 @@
560651
/>
561652
</span>
562653
</td>
563-
<td
564-
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
565-
>
566-
<p
567-
aria-label="Default Ingress Class"
568-
class="MuiTypography-root MuiTypography-body1 css-1d0cpfm-MuiTypography-root"
569-
data-mui-internal-clone-element="true"
570-
/>
571-
</td>
572654
<td
573655
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1adoll5-MuiTableCell-root"
574656
>
@@ -584,6 +666,14 @@
584666
>
585667
test
586668
</td>
669+
<td
670+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
671+
>
672+
Yes
673+
</td>
674+
<td
675+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12uioej-MuiTableCell-root"
676+
/>
587677
<td
588678
class="MuiTableCell-root MuiTableCell-alignRight MuiTableCell-sizeMedium css-14i1ub9-MuiTableCell-root"
589679
>

frontend/src/i18n/i18next-parser.config.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@
1616

1717
import fs from 'fs';
1818
import path from 'path';
19+
import { fileURLToPath } from 'url';
1920
import sharedConfig from './i18nextSharedConfig.mjs';
2021

21-
const directoryPath = path.join(import.meta.dirname, sharedConfig.localesPath);
22+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
23+
const directoryPath = path.join(__dirname, sharedConfig.localesPath);
2224
const currentLocales = [];
2325

2426
fs.readdirSync(directoryPath).forEach(file => currentLocales.push(file));

frontend/src/i18n/locales/de/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "Horizontaler Pod-Autoskalierer",
9696
"Ingress Classes": "Ingress Classes",
97-
"Default Ingress Class": "Standard Ingress Class",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "Standard-Backend",
99101
"Backends": "Backends",
100102
"Ingresses": "Ingresses",

frontend/src/i18n/locales/en/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "Reference Grants",
9595
"Horizontal Pod Autoscalers": "Horizontal Pod Autoscalers",
9696
"Ingress Classes": "Ingress Classes",
97-
"Default Ingress Class": "Default Ingress Class",
97+
"Default": "Default",
98+
"Yes": "Yes",
99+
"Parameters": "Parameters",
98100
"Default Backend": "Default Backend",
99101
"Backends": "Backends",
100102
"Ingresses": "Ingresses",

frontend/src/i18n/locales/es/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "Horizontal Pod Autoscalers",
9696
"Ingress Classes": "Ingress Classes",
97-
"Default Ingress Class": "Default Ingress Class",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "Backend por defecto",
99101
"Backends": "Backends",
100102
"Ingresses": "Ingresses",

frontend/src/i18n/locales/fr/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "Horizontal Pod Autoscalers",
9696
"Ingress Classes": "Ingress Classes",
97-
"Default Ingress Class": "Default Ingress Class",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "Backend par défaut",
99101
"Backends": "Backends",
100102
"Ingresses": "Ingresses",

frontend/src/i18n/locales/hi/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "हॉरिज़ॉन्टल Pod ऑटोस्केलर्स",
9696
"Ingress Classes": "इंग्रेस क्लासेज",
97-
"Default Ingress Class": "डिफॉल्ट इंग्रेस क्लास",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "डिफॉल्ट बैकएंड",
99101
"Backends": "बैकएंड्स",
100102
"Ingresses": "इंग्रेसेज",

frontend/src/i18n/locales/it/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "Autoscaler Orizzontali Pod",
9696
"Ingress Classes": "Classi Ingress",
97-
"Default Ingress Class": "Classe Ingress Predefinita",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "Backend Predefinito",
99101
"Backends": "Backend",
100102
"Ingresses": "Ingress",

frontend/src/i18n/locales/ja/glossary.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,9 @@
9494
"Reference Grants": "",
9595
"Horizontal Pod Autoscalers": "水平ポッドオートスケーラー",
9696
"Ingress Classes": "イングレスクラス",
97-
"Default Ingress Class": "デフォルトイングレスクラス",
97+
"Default": "",
98+
"Yes": "",
99+
"Parameters": "",
98100
"Default Backend": "デフォルトバックエンド",
99101
"Backends": "バックエンド",
100102
"Ingresses": "イングレス",

0 commit comments

Comments
 (0)