From 6696f699ffd785bd66123b09b250300e16bd08dd Mon Sep 17 00:00:00 2001
From: Sotiris Tsepelakis <sotirios.tsepelakis@tuwien.ac.at>
Date: Sun, 26 Nov 2023 20:40:05 +0100
Subject: [PATCH] UI: render and populate licenses selector

---
 dbrepo-ui/components/search/AdvancedSearch.vue | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/dbrepo-ui/components/search/AdvancedSearch.vue b/dbrepo-ui/components/search/AdvancedSearch.vue
index 2a89bb91ef..9061d359f0 100644
--- a/dbrepo-ui/components/search/AdvancedSearch.vue
+++ b/dbrepo-ui/components/search/AdvancedSearch.vue
@@ -68,6 +68,13 @@
               type="number"
               :label="generateFriendlyName(field)"
               clearable />
+            <v-autocomplete
+              v-if="field.attribute_name === 'licenses'"
+              v-model="advancedSearchData[generateDynamicVModelKey(field)]"
+              :items="fetchLicenses()"
+              :label="generateFriendlyName(field)"
+              clearable
+              multiple />
           </v-col>
         </v-row>
         <p v-if="isColumnFilter" class="mt-4">
@@ -291,6 +298,13 @@ export default {
       // Checks if item's attribute_name matches any wanted field
       // The expected response is of a flattened format, so this method must be modified accordingly if the response is changed
       return this.dynamicFieldsMap()[this.advancedSearchData.type].includes(item.attribute_name)
+    },
+    fetchLicenses () {
+      // Licenses is a nested object in the backend, but without any values.
+      // Instead, we define our custom license generator with a controlled vocabulary.
+      return [
+        'Apache-2.0', 'BSD-3-Clause', 'BSD-4-Clause', 'CC-BY-4.0', 'CC0-1.0', 'GPL-3.0-only', 'MIT'
+      ]
     }
   }
 }
-- 
GitLab