From fb530035d13807932860f1d8ecde06f2729ad3b9 Mon Sep 17 00:00:00 2001
From: Elmar Ludwig <elmar.ludwig@uni-osnabrueck.de>
Date: Wed, 23 Oct 2024 16:05:40 +0200
Subject: [PATCH] =?UTF-8?q?Revert=20"Resolve=20"Vorlesungsverzeichnis:=20S?=
 =?UTF-8?q?uche=20sucht=20nicht=20(nur)=20im=20ausgew=C3=A4hlen=20Bereich"?=
 =?UTF-8?q?"?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

This reverts commit 045839d4eefff31b67fba7bdde424ae1b07093b1.
---
 resources/vue/components/SearchWidget.vue     | 24 +-------
 resources/vue/components/tree/StudipTree.vue  | 11 ++--
 .../vue/components/tree/StudipTreeList.vue    |  7 +--
 .../vue/components/tree/StudipTreeTable.vue   |  7 +--
 .../vue/components/tree/TreeSearchResult.vue  | 59 ++++---------------
 resources/vue/mixins/TreeMixin.js             |  2 +-
 6 files changed, 21 insertions(+), 89 deletions(-)

diff --git a/resources/vue/components/SearchWidget.vue b/resources/vue/components/SearchWidget.vue
index b583d834242..4b17820b0bb 100644
--- a/resources/vue/components/SearchWidget.vue
+++ b/resources/vue/components/SearchWidget.vue
@@ -5,7 +5,7 @@
                 <ul class="needles">
                     <li>
                         <div class="input-group files-search">
-                            <input type="text" id="searchterm" name="searchterm" v-model.trim="searchterm"
+                            <input type="text" id="searchterm" name="searchterm" v-model="searchterm"
                                    :placeholder="$gettext('Veranstaltung suchen')"
                                    :aria-label="$gettext('Veranstaltung suchen')">
                             <a v-if="isActive" @click.prevent="cancelSearch" class="reset-search">
@@ -13,10 +13,7 @@
                             </a>
                             <button type="submit" class="submit-search" :title="$gettext('Suchen')"
                                     @click.prevent="doSearch">
-                                <studip-icon shape="search"
-                                             :role="maySearch ? 'clickable' : 'inactive'"
-                                             :size="20"
-                                ></studip-icon>
+                                <studip-icon shape="search" :size="20"></studip-icon>
                             </button>
                         </div>
                     </li>
@@ -36,34 +33,17 @@ export default {
         StudipIcon,
         SidebarWidget
     },
-    props: {
-        minLength: {
-            type: Number,
-            default: 0,
-        }
-    },
     data() {
         return {
             searchterm: '',
             isActive: false
         };
     },
-    computed: {
-        maySearch() {
-            return this.searchterm.length >= this.minLength;
-        }
-    },
     methods: {
         doSearch() {
-            if (!this.maySearch) {
-                return;
-            }
-
             if (this.searchterm !== '') {
                 this.isActive = true;
                 STUDIP.eventBus.emit('do-search', this.searchterm);
-            } else {
-                this.cancelSearch();
             }
         },
         cancelSearch() {
diff --git a/resources/vue/components/tree/StudipTree.vue b/resources/vue/components/tree/StudipTree.vue
index be57f16ddf1..ff493739f98 100644
--- a/resources/vue/components/tree/StudipTree.vue
+++ b/resources/vue/components/tree/StudipTree.vue
@@ -31,7 +31,7 @@
             <tree-search-result :search-config="searchConfig"></tree-search-result>
         </div>
         <MountingPortal v-if="withSearch" mountTo="#search-widget" name="sidebar-search">
-            <search-widget :min-length="3"></search-widget>
+            <search-widget></search-widget>
         </MountingPortal>
     </div>
 </template>
@@ -199,12 +199,9 @@ export default {
         axios.interceptors.request.eject(loadingIndicator);
 
         this.globalOn('do-search', searchterm => {
-            this.searchConfig = {
-                searchterm,
-                semester: this.semester,
-                classname: this.startNode.attributes.classname,
-                startId: this.currentNode.id,
-            };
+            this.searchConfig.searchterm = searchterm;
+            this.searchConfig.semester = this.semester;
+            this.searchConfig.classname = this.startNode.attributes.classname;
             this.isSearching = true;
         });
 
diff --git a/resources/vue/components/tree/StudipTreeList.vue b/resources/vue/components/tree/StudipTreeList.vue
index b607e02197a..0ba4b550224 100644
--- a/resources/vue/components/tree/StudipTreeList.vue
+++ b/resources/vue/components/tree/StudipTreeList.vue
@@ -99,7 +99,7 @@
                 </tr>
             </tbody>
         </table>
-        <MountingPortal v-if="showExport" mountTo="#export-widget" name="sidebar-export">
+        <MountingPortal v-if="withExport" mountTo="#export-widget" name="sidebar-export">
             <tree-export-widget v-if="courses.length > 0"
                                 :title="$gettext('Veranstaltungen exportieren')" :url="exportUrl()"
                                 :export-data="courses"></tree-export-widget>
@@ -202,11 +202,6 @@ export default {
             showingAllCourses: false
         }
     },
-    computed: {
-        showExport() {
-            return this.withExport && document.getElementById('export-widget');
-        }
-    },
     methods: {
         openNode(node, pushState = true) {
             this.currentNode = node;
diff --git a/resources/vue/components/tree/StudipTreeTable.vue b/resources/vue/components/tree/StudipTreeTable.vue
index 585acd42604..0bfc244fb75 100644
--- a/resources/vue/components/tree/StudipTreeTable.vue
+++ b/resources/vue/components/tree/StudipTreeTable.vue
@@ -115,7 +115,7 @@
                 </tr>
             </draggable>
         </table>
-        <MountingPortal v-if="showExport" mountTo="#export-widget" name="sidebar-export">
+        <MountingPortal v-if="withExport" mountTo="#export-widget" name="sidebar-export">
             <tree-export-widget v-if="courses.length > 0" :title="$gettext('Download des Ergebnisses')" :url="exportUrl()"
                                 :export-data="courses"></tree-export-widget>
         </MountingPortal>
@@ -218,11 +218,6 @@ export default {
             showingAllCourses: false
         }
     },
-    computed: {
-        showExport() {
-            return this.withExport && document.getElementById('export-widget');
-        }
-    },
     methods: {
         openNode(node, pushState = true) {
             this.currentNode = node;
diff --git a/resources/vue/components/tree/TreeSearchResult.vue b/resources/vue/components/tree/TreeSearchResult.vue
index c4e0f415502..19bc6b927a4 100644
--- a/resources/vue/components/tree/TreeSearchResult.vue
+++ b/resources/vue/components/tree/TreeSearchResult.vue
@@ -1,8 +1,6 @@
 <template>
     <div v-if="isLoading">
-        <studip-progress-indicator v-if="showLoadingAnimation"
-                                   :description="searchDescription"
-        ></studip-progress-indicator>
+        <studip-progress-indicator></studip-progress-indicator>
     </div>
     <article v-else class="studip-tree-table">
         <table v-if="courses.length > 0" class="default studip-tree-table">
@@ -47,10 +45,6 @@
                 </tr>
             </tbody>
         </table>
-        <studip-message-box v-else type="info">
-            {{ $gettextInterpolate($gettext('Es wurden keine Ergebnisse zu Ihrem Suchbegriff "%{term}" gefunden.'),
-                { term: searchConfig.searchterm }) }}
-        </studip-message-box>
     </article>
 </template>
 
@@ -60,11 +54,10 @@ import StudipProgressIndicator from '../StudipProgressIndicator.vue';
 import StudipIcon from '../StudipIcon.vue';
 import TreeNodeCoursePath from './TreeNodeCoursePath.vue';
 import TreeCourseDetails from './TreeCourseDetails.vue';
-import StudipMessageBox from "../StudipMessageBox.vue";
 
 export default {
     name: 'TreeSearchResult',
-    components: {StudipMessageBox, StudipIcon, StudipProgressIndicator, TreeNodeCoursePath, TreeCourseDetails },
+    components: { StudipIcon, StudipProgressIndicator, TreeNodeCoursePath, TreeCourseDetails },
     mixins: [ TreeMixin ],
     props: {
         searchConfig: {
@@ -74,47 +67,19 @@ export default {
     },
     data() {
         return {
-            courses: [],
-            isLoading: true,
             node: null,
-            showLoadingAnimation: false,
-            timeout: null,
+            isLoading: false,
+            isLoaded: false,
+            courses: []
         }
     },
-    computed: {
-        searchDescription() {
-            return this.$gettextInterpolate(
-                this.$gettext('Suche nach dem Begriff "%{ term }"'),
-                {term: this.searchConfig.searchterm}
-            );
-        }
-    },
-    watch: {
-        searchConfig: {
-            handler(current, previous) {
-                if (current.searchterm !== previous?.searchterm) {
-                    this.isLoading = true;
-
-                    this.timeout = setTimeout(
-                        () => this.showLoadingAnimation = true,
-                        this.showProgressIndicatorTimeout
-                    );
-
-                    this.getNode(this.searchConfig.startId).then(response => {
-                        return this.getNodeCourses(response.data.data, this.searchConfig.semester, 0, this.searchConfig.searchterm, true);
-                    }).then(courses => {
-                        this.courses = courses.data.data;
-
-                        clearTimeout(this.timeout);
-
-                        this.isLoading = false;
-                        this.showLoadingAnimation = false;
-                    });
-                }
-            },
-            immediate: true,
-            deep: true
-        }
+    mounted() {
+        this.getNode(this.searchConfig.classname + '_root').then(response => {
+            this.getNodeCourses(response.data.data, this.searchConfig.semester,0, this.searchConfig.searchterm, true)
+                .then(courses => {
+                    this.courses = courses.data.data;
+                });
+        });
     }
 }
 </script>
diff --git a/resources/vue/mixins/TreeMixin.js b/resources/vue/mixins/TreeMixin.js
index 9c4c859d7b0..1e72bbedfbc 100644
--- a/resources/vue/mixins/TreeMixin.js
+++ b/resources/vue/mixins/TreeMixin.js
@@ -37,7 +37,7 @@ export const TreeMixin = {
                 parameters['filter[semclass]'] = semClass;
             }
 
-            if (node.attributes['has-children'] && recursive) {
+            if (recursive) {
                 parameters['filter[recursive]'] = true;
             }
 
-- 
GitLab