Skip to content

Commit fff3856

Browse files
xingzhang-suselsongsuse
authored andcommitted
Fixed bug on percentage presentation
1 parent f21c6d5 commit fff3856

File tree

5 files changed

+48
-27
lines changed

5 files changed

+48
-27
lines changed

pkg/sbombastic-image-vulnerability-scanner/config/table-headers.ts

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,22 +44,18 @@ export const REGISTRY_SCAN_TABLE = [
4444
{
4545
name: "progress",
4646
labelKey: "imageScanner.registries.registrytable.header.progress",
47-
getValue: (row: any) => {
48-
return {
49-
progress: row.progress,
50-
error: row.error,
51-
};
52-
},
47+
getValue: (row: any) => row,
5348
formatter: "ProgressCell",
5449
sort: "progress",
50+
width: 120,
5551
},
5652
{
5753
name: "previousScan",
5854
labelKey: "imageScanner.registries.registrytable.header.prevScan",
5955
getValue: (row: any) => row,
6056
formatter: "PreviousScanCell",
6157
sort: "previousScan",
62-
width: 150,
58+
width: 200,
6359
},
6460
];
6561

pkg/sbombastic-image-vulnerability-scanner/formatters/PreviousScanCell.vue

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
<script>
22
import ProgressCell from "@sbombastic-image-vulnerability-scanner/formatters/ProgressCell";
33
export default {
4+
components: {
5+
ProgressCell
6+
},
7+
name: "PreviousScanCell",
48
props: {
59
value: {
610
type: String,
@@ -28,12 +32,12 @@ export default {
2832
<template>
2933
<div class="previous-scan-cell">
3034
<div class="dot" :class="getStatusDotClass(row)"></div>
31-
<div class="status" :class="getStatusLabelClass(row)">{{ getStatusText(row) }}</div>
35+
<div class="status" :class="getStatusLabelClass(row)">{{ getStatusText(row) }}</div>
3236
<div v-if="row.prevProgress">
33-
<ProgressCell :status="{ progress: row.prevProgress, error: row.error }" />
37+
<span>{{ t("imageScanner.general.at") }}</span><ProgressCell style="display: inline-block;" :row="{ progress: row.prevProgress, error: null}" />
3438
</div>
35-
<div v-if="row.prevScanStatus.toLowerCase() === 'failed' && row.error">
36-
<span class="error-message">|<span style="margin-left: 10px;">{{ t("imageScanner.general.error") }}</span></span>
39+
<div v-if="row.prevScanStatus.toLowerCase() === 'failed' && row.PrevError">
40+
<span class="error-message">|<span style="margin-left: 8px;">{{ t("imageScanner.general.error") }}</span></span>
3741
</div>
3842
</div>
3943
</template>

pkg/sbombastic-image-vulnerability-scanner/formatters/ProgressCell.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<script>
22
export default {
33
props: {
4-
value: {
4+
row: {
55
type: Object,
66
required: true
77
}
@@ -10,8 +10,13 @@ export default {
1010
</script>
1111
<template>
1212
<div class="progress-cell">
13-
<span v-if="value.progress" class="progress-text">{{ value.progress }}% | <span v-if="value.error">{{ value.error }}</span></span>
13+
<span v-if="row.progress" class="progress-text">{{ row.progress }}%
14+
<span v-if="row.error">|
15+
<span style="margin-left: 4px;">{{ t("imageScanner.general.error") }}</span>
16+
</span>
17+
</span>
1418
<span v-else class="progress-text text-muted">n/a</span>
19+
1520
</div>
1621
</template>
1722
<style lang="scss" scoped>

pkg/sbombastic-image-vulnerability-scanner/l10n/en-us.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ imageScanner:
135135
justNow: Just now
136136
none: none
137137
error: Error
138+
at: at
138139

139140
typeLabel:
140141
sbombastic.rancher.io.registry: Registries configuration

pkg/sbombastic-image-vulnerability-scanner/pages/c/_cluster/sbombastic-image-vulnerability-scanner/RegistriesConfiguration.vue

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<template>
2-
<div>
2+
<div class="page">
33
<div class="header-section">
44
<div class="header-left">
55
<div class="title-wrap">
@@ -39,15 +39,16 @@
3939
<SortableTable
4040
ref="table"
4141
:has-advanced-filtering="false"
42+
:row-actions="true"
4243
:rows="rows"
4344
:headers="headers"
4445
@selection="onSelectionChange"
4546
>
4647
<template #header-left>
47-
<div class="bulk-actions">
48-
<ScanButton :selectedRegistries="selectedRows?.map(row => {return {name: row.metadata.name, namespace: row.metadata.namespace}})" :reloadFn="loadData" />
48+
<div class="table-top-left">
49+
<ScanButton class="table-btn" :selectedRegistries="selectedRows?.map(row => {return {name: row.metadata.name, namespace: row.metadata.namespace}})" :reloadFn="loadData" />
4950
<button
50-
class="btn role-primary"
51+
class="btn role-primary table-btn"
5152
:disabled="!(selectedRows && selectedRows.length)"
5253
@click="promptRemoveRegistry()"
5354
>
@@ -128,6 +129,7 @@ import { template } from "lodash";
128129
}
129130
return new Date(b.status.startTime) - new Date(a.status.startTime);
130131
});
132+
console.group("scanJobCRD", scanJobCRD)
131133
132134
const scanJobMap = this.getScanJobMap(scanJobCRD);
133135
const registryDataset = this.getRegistryDataset(registriesCRD, scanJobMap);
@@ -186,9 +188,10 @@ import { template } from "lodash";
186188
scanJobMap[`${rec.metadata.namespace}/${rec.spec.registry}`].length > 0 &&
187189
scanJobMap[`${rec.metadata.namespace}/${rec.spec.registry}`].length < 2) {
188190
scanJobMap[`${rec.metadata.namespace}/${rec.spec.registry}`].push(rec);
189-
} else {
191+
} else if (!scanJobMap[`${rec.metadata.namespace}/${rec.spec.registry}`]) {
190192
scanJobMap[`${rec.metadata.namespace}/${rec.spec.registry}`] = [rec];
191193
}
194+
console.log("scanJobMap", scanJobMap['default/test-xz-2']);
192195
});
193196
return scanJobMap;
194197
},
@@ -212,11 +215,12 @@ import { template } from "lodash";
212215
rec.id = `${rec.metadata.namespace}/${rec.metadata.name}`;
213216
rec.currStatus = status;
214217
rec.prevScanStatus = prevScanStatus;
215-
rec.progress = scanjobs[0] && scanjobs[0].status.imageCount && scanjobs[0].status.scannedImageCount?
216-
Math.ceil(scanjobs[0].status.scannedImageCount / scanjobs[0].status.imageCount * 100) : 0;
217-
rec.prevProgress = scanjobs[1] && scanjobs[1].status.imageCount && scanjobs[1].status.scannedImageCount?
218-
Math.ceil(scanjobs[1].status.scannedImageCount / scanjobs[1].status.imageCount * 100) : 0;
219-
rec.error = scanjobs[0] && scanjobs[0].status.statusResult.type === "Failed" ? scanjobs[0].status.statusResult.message : "";
218+
rec.progress = scanjobs[0] && scanjobs[0].status.imagesCount && scanjobs[0].status.scannedImagesCount?
219+
Math.ceil(scanjobs[0].status.scannedImagesCount / scanjobs[0].status.imagesCount * 100) : 0;
220+
rec.prevProgress = scanjobs[1] && scanjobs[1].status.imagesCount && scanjobs[1].status.scannedImagesCount?
221+
Math.ceil(scanjobs[1].status.scannedImagesCount / scanjobs[1].status.imagesCount * 100) : 0;
222+
rec.error = scanjobs[0] && scanjobs[0].status.statusResult.type.toLowerCase() === "failed" ? scanjobs[0].status.statusResult.message : "";
223+
rec.PrevError = scanjobs[1] && scanjobs[1].status.statusResult.type.toLowerCase() === "failed" ? scanjobs[1].status.statusResult.message : "";
220224
221225
// Summarize the data for Latest status updates panel
222226
registryStatusList.push({
@@ -295,7 +299,7 @@ import { template } from "lodash";
295299
.page {
296300
display: flex;
297301
flex-direction: column;
298-
padding: 0 20px 20px 20px;
302+
padding: 24px;
299303
min-height: 100%;
300304
}
301305
.header-section {
@@ -304,7 +308,19 @@ import { template } from "lodash";
304308
gap: 24px;
305309
align-self: stretch;
306310
margin-bottom: 24px;
307-
.header-left {
311+
312+
}
313+
.table-top-left {
314+
display: flex;
315+
align-items: start-end;
316+
justify-content: start;
317+
flex: 1 0 0;
318+
gap: 16px;
319+
.table-btn {
320+
height: 40px;
321+
}
322+
}
323+
.header-left {
308324
display: flex;
309325
flex-direction: column;
310326
justify-content: center;
@@ -360,7 +376,7 @@ import { template } from "lodash";
360376
align-items: flex-end;
361377
justify-content: end;
362378
flex: 1 0 0;
363-
gap: 24px;
379+
gap: 16px;
364380
}
365381
.header-btn {
366382
height: 40px;
@@ -379,7 +395,6 @@ import { template } from "lodash";
379395
background: url('../../../../assets/img/refresh.svg') no-repeat center center;
380396
background-size: contain;
381397
}
382-
}
383398
.summary-section {
384399
display: flex;
385400
min-width: 912px;

0 commit comments

Comments
 (0)