diff --git a/web/server/vue-cli/src/components/Report/ReportFilter/Filters/FilePathFilter.vue b/web/server/vue-cli/src/components/Report/ReportFilter/Filters/FilePathFilter.vue
index bcbd0d38e8..c2d9768b11 100644
--- a/web/server/vue-cli/src/components/Report/ReportFilter/Filters/FilePathFilter.vue
+++ b/web/server/vue-cli/src/components/Report/ReportFilter/Filters/FilePathFilter.vue
@@ -30,6 +30,22 @@
/>
+
+
+
+
+
+ Filter by wildcard pattern: {{ treeFilter }}
+
+
+
@@ -79,7 +95,8 @@
variant="text"
class="apply-btn"
color="primary"
- :disabled="treeSelection.length === 0"
+ :disabled="treeSelection.length === 0 &&
+ !(patternSelected && treeFilter)"
@click="applyTreeSelection(onApplyFinished)"
>
@@ -126,8 +143,13 @@ const anywhereId = "anywhere-filepath";
const allFileCounts = ref({});
const treeSelection = ref([]);
const treeFilter = ref("");
+const patternSelected = ref(false);
const route = useRoute();
+watch(treeFilter, () => {
+ patternSelected.value = false;
+});
+
const filteredFileCounts = computed(() => {
if (!treeFilter.value) return allFileCounts.value;
const pattern = treeFilter.value
@@ -258,17 +280,27 @@ function fetchAllFileCounts() {
function clearAll(onApplyFinished) {
treeSelection.value = [];
+ patternSelected.value = false;
baseSelectOptionFilter.clear(true);
if (onApplyFinished) onApplyFinished();
}
function applyTreeSelection(onApplyFinished) {
- if (!treeSelection.value.length) return;
const items = treeSelection.value.map(fp => {
const filterId = isDirectory(fp) ? fp + "/*" : fp;
return { id: filterId, title: filterId, count: "N/A" };
});
+
+ if (patternSelected.value && treeFilter.value) {
+ items.push({
+ id: treeFilter.value, title: treeFilter.value, count: "N/A"
+ });
+ }
+
+ if (!items.length) return;
+
baseSelectOptionFilter.setSelectedItems(items);
+ patternSelected.value = false;
if (onApplyFinished) onApplyFinished();
}