Skip to content

Commit 86f7aa3

Browse files
authored
Merge pull request #4017 from jaehanbyun/feat/storageclass-default-indicator
frontend: StorageClassesTable: add default indicator column
2 parents 636333b + cc40dd9 commit 86f7aa3

File tree

4 files changed

+134
-2
lines changed

4 files changed

+134
-2
lines changed

frontend/src/components/storage/ClassList.tsx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,14 @@ export default function ClassList() {
3636
filterVariant: 'multi-select',
3737
getValue: storageClass => storageClass.provisioner,
3838
},
39+
{
40+
id: 'default',
41+
label: t('Default'),
42+
filterVariant: 'checkbox',
43+
getValue: resource => String(resource?.isDefault ?? false),
44+
render: (resource: StorageClass) => (resource && resource.isDefault ? t('Yes') : null),
45+
gridTemplate: 'auto',
46+
},
3947
{
4048
id: 'reclaimPolicy',
4149
label: t('Reclaim Policy'),

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

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
</div>
164164
</div>
165165
<table
166-
class="MuiTable-root css-1lubqn6-MuiTable-root"
166+
class="MuiTable-root css-t7kba7-MuiTable-root"
167167
>
168168
<thead
169169
class="MuiTableHead-root css-1tmrira-MuiTableHead-root"
@@ -330,6 +330,61 @@
330330
/>
331331
</div>
332332
</th>
333+
<th
334+
aria-sort="none"
335+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1019980-MuiTableCell-root"
336+
colspan="1"
337+
data-can-sort="true"
338+
data-index="-1"
339+
scope="col"
340+
>
341+
<div
342+
class="Mui-TableHeadCell-Content MuiBox-root css-1w86f15"
343+
>
344+
<div
345+
class="Mui-TableHeadCell-Content-Labels MuiBox-root css-68rqdf"
346+
>
347+
<div
348+
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
349+
>
350+
Default
351+
</div>
352+
<span
353+
aria-label="Sort by Default ascending"
354+
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
355+
data-mui-internal-clone-element="true"
356+
>
357+
<span
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>
333388
<th
334389
aria-sort="none"
335390
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-pa5bge-MuiTableCell-root"
@@ -628,6 +683,9 @@
628683
>
629684
csi.test
630685
</td>
686+
<td
687+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
688+
/>
631689
<td
632690
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-10q82xd-MuiTableCell-root"
633691
>

frontend/src/components/storage/__snapshots__/VolumeList.Items.stories.storyshot

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@
163163
</div>
164164
</div>
165165
<table
166-
class="MuiTable-root css-1lubqn6-MuiTable-root"
166+
class="MuiTable-root css-t7kba7-MuiTable-root"
167167
>
168168
<thead
169169
class="MuiTableHead-root css-1tmrira-MuiTableHead-root"
@@ -330,6 +330,61 @@
330330
/>
331331
</div>
332332
</th>
333+
<th
334+
aria-sort="none"
335+
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1019980-MuiTableCell-root"
336+
colspan="1"
337+
data-can-sort="true"
338+
data-index="-1"
339+
scope="col"
340+
>
341+
<div
342+
class="Mui-TableHeadCell-Content MuiBox-root css-1w86f15"
343+
>
344+
<div
345+
class="Mui-TableHeadCell-Content-Labels MuiBox-root css-68rqdf"
346+
>
347+
<div
348+
class="Mui-TableHeadCell-Content-Wrapper MuiBox-root css-lapokc"
349+
>
350+
Default
351+
</div>
352+
<span
353+
aria-label="Sort by Default ascending"
354+
class="MuiBadge-root css-1c32n2y-MuiBadge-root"
355+
data-mui-internal-clone-element="true"
356+
>
357+
<span
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>
333388
<th
334389
aria-sort="none"
335390
class="MuiTableCell-root MuiTableCell-head MuiTableCell-alignLeft MuiTableCell-sizeMedium css-pa5bge-MuiTableCell-root"
@@ -626,6 +681,9 @@
626681
<td
627682
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-1ilsbxl-MuiTableCell-root"
628683
/>
684+
<td
685+
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-12j49la-MuiTableCell-root"
686+
/>
629687
<td
630688
class="MuiTableCell-root MuiTableCell-alignLeft MuiTableCell-sizeMedium css-10q82xd-MuiTableCell-root"
631689
/>

frontend/src/lib/k8s/storageClass.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ class StorageClass extends KubeObject<KubeStorageClass> {
3939
return baseObject;
4040
}
4141

42+
get isDefault(): boolean {
43+
const annotations = this.jsonData.metadata?.annotations;
44+
if (annotations !== undefined) {
45+
return annotations['storageclass.kubernetes.io/is-default-class'] === 'true';
46+
}
47+
return false;
48+
}
49+
4250
get provisioner() {
4351
return this.jsonData.provisioner;
4452
}

0 commit comments

Comments
 (0)