Skip to content

Commit 60fb40a

Browse files
committed
Feat: Column base filters out of table on Image details page
1 parent 0b6774b commit 60fb40a

File tree

1 file changed

+50
-14
lines changed

1 file changed

+50
-14
lines changed

pkg/sbombastic-image-vulnerability-scanner/components/ImageDetails.vue

Lines changed: 50 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@
137137
</div>
138138
</div>
139139

140-
<!-- Search Filters - Disabled for MVP version -->
141-
<!-- <div class="search-filters">
140+
<!-- Search Filters -->
141+
<div class="search-filters">
142142
<div class="filter-row">
143143
<div class="filter-item">
144144
<label>CVE</label>
@@ -154,14 +154,27 @@
154154
</div>
155155
<div class="filter-item">
156156
<label>{{ t('imageScanner.imageDetails.score') }}</label>
157-
<div class="filter-input-wrapper">
157+
<div class="filter-input-wrapper score-range-wrapper">
158158
<input
159-
v-model="filters.score"
160-
type="text"
161-
placeholder="0 - 9.9"
159+
v-model="filters.scoreMin"
160+
type="number"
161+
min="0"
162+
max="10"
163+
step="0.1"
164+
placeholder="0"
165+
class="filter-input score-input"
166+
/>
167+
<span class="score-separator">-</span>
168+
<input
169+
v-model="filters.scoreMax"
170+
type="number"
171+
min="0"
172+
max="10"
173+
step="0.1"
174+
placeholder="9.9"
162175
class="filter-input score-input"
163176
/>
164-
<i class="icon icon-filter" style="color: #6C6C76; margin-left: 8px;"></i>
177+
<i class="icon icon-filter_alt" style="color: #6C6C76; margin-left: 8px;"></i>
165178
</div>
166179
</div>
167180
<div class="filter-item">
@@ -207,7 +220,7 @@
207220
</select>
208221
</div>
209222
</div>
210-
</div> -->
223+
</div>
211224

212225
<!-- Vulnerability Table -->
213226
<SortableTable
@@ -216,7 +229,7 @@
216229
:has-advanced-filtering="false"
217230
:namespaced="false"
218231
:row-actions="false"
219-
:search="true"
232+
:search="false"
220233
:key-field="'cveId'"
221234
@selection="onSelectionChange"
222235
>
@@ -271,7 +284,8 @@ export default {
271284
showAllProperties: false,
272285
filters: {
273286
cveSearch: '',
274-
score: '',
287+
scoreMin: '',
288+
scoreMax: '',
275289
packageSearch: '',
276290
fixAvailable: 'any',
277291
severity: 'any',
@@ -352,11 +366,12 @@ export default {
352366
);
353367
}
354368
355-
if (this.filters.score) {
356-
const score = parseFloat(this.filters.score);
369+
if (this.filters.scoreMin || this.filters.scoreMax) {
357370
filtered = filtered.filter(v => {
358-
const vulnScore = parseFloat(v.score.split(' ')[0]);
359-
return vulnScore >= score;
371+
const vulnScore = parseFloat(v.score.split(' ')[0]) || 0;
372+
const minScore = this.filters.scoreMin ? parseFloat(this.filters.scoreMin) : 0;
373+
const maxScore = this.filters.scoreMax ? parseFloat(this.filters.scoreMax) : 10;
374+
return vulnScore >= minScore && vulnScore <= maxScore;
360375
});
361376
}
362377
@@ -796,14 +811,35 @@ export default {
796811
background: transparent;
797812
}
798813
814+
.score-range-wrapper {
815+
display: flex;
816+
align-items: center;
817+
gap: 8px;
818+
}
819+
799820
.score-input {
821+
flex: 1;
822+
min-width: 60px;
823+
text-align: center;
800824
color: #BEC1D2;
801825
}
802826
803827
.score-input::placeholder {
804828
color: #BEC1D2;
805829
}
806830
831+
.score-separator {
832+
color: #6C6C76;
833+
font-weight: 500;
834+
font-size: 14px;
835+
}
836+
837+
.score-filter-icon {
838+
color: #6C6C76;
839+
margin-left: 8px;
840+
font-size: 16px;
841+
}
842+
807843
.filter-input:focus {
808844
outline: none;
809845
}

0 commit comments

Comments
 (0)