aboutsummaryrefslogtreecommitdiff
path: root/resources
diff options
context:
space:
mode:
authorThomas Hackl <hackl@data-quest.de>2023-11-03 07:17:31 +0000
committerThomas Hackl <hackl@data-quest.de>2023-11-03 07:17:31 +0000
commit4a8756ddbceca8d9f1cbb09f4edffdbd7968c85a (patch)
tree689e6d4f8b1c587d42469812f9fe7ebfccbe6363 /resources
parent31e6680a953fb9faf595ff971b30500c4ffee678 (diff)
Resolve "Vorlesungsverzeichnis: Umstellen der Filter setzt die Suche zurück"
Closes #3043 Merge request studip/studip!2171
Diffstat (limited to 'resources')
-rw-r--r--resources/vue/components/SearchWidget.vue7
-rw-r--r--resources/vue/components/tree/StudipTree.vue20
-rw-r--r--resources/vue/components/tree/TreeSearchResult.vue8
3 files changed, 33 insertions, 2 deletions
diff --git a/resources/vue/components/SearchWidget.vue b/resources/vue/components/SearchWidget.vue
index b583d83..b2afcf2 100644
--- a/resources/vue/components/SearchWidget.vue
+++ b/resources/vue/components/SearchWidget.vue
@@ -71,6 +71,13 @@ export default {
this.searchterm = '';
STUDIP.eventBus.emit('cancel-search');
}
+ },
+ mounted() {
+ const url = new URL(window.location.href);
+ if (url.searchParams.has('search')) {
+ this.searchterm = url.searchParams.get('search');
+ this.doSearch();
+ }
}
}
</script>
diff --git a/resources/vue/components/tree/StudipTree.vue b/resources/vue/components/tree/StudipTree.vue
index be57f16..136fc95 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 v-if="currentNode" :min-length="3" ref="searchWidget"></search-widget>
</MountingPortal>
</div>
</template>
@@ -175,6 +175,18 @@ export default {
},
exportUrl() {
return STUDIP.URLHelper.getURL('dispatch.php/tree/export_csv');
+ },
+ injectSearchterm(targetId, searchterm) {
+ const form = document.getElementById(targetId).querySelector('form');
+ let input = form.querySelector('input[type="hidden"][name="search"]');
+ if (!input) {
+ input = document.createElement('input');
+ input.setAttribute('id', `${targetId}-searchterm`);
+ input.setAttribute('type', 'hidden');
+ input.setAttribute('name', 'search');
+ form.appendChild(input);
+ }
+ input.setAttribute('value', searchterm);
}
},
mounted() {
@@ -202,14 +214,20 @@ export default {
this.searchConfig = {
searchterm,
semester: this.semester,
+ semclass: this.semClass,
classname: this.startNode.attributes.classname,
startId: this.currentNode.id,
};
+ this.injectSearchterm('semester-selector', searchterm);
+ this.injectSearchterm('semclass-selector', searchterm);
this.isSearching = true;
});
this.globalOn('cancel-search', () => {
this.searchConfig = {};
+ this.searchterm = '';
+ document.getElementById('semester-selector-searchterm')?.remove();
+ document.getElementById('semclass-selector-searchterm')?.remove();
this.isSearching = false;
});
}
diff --git a/resources/vue/components/tree/TreeSearchResult.vue b/resources/vue/components/tree/TreeSearchResult.vue
index c4e0f41..013c1ee 100644
--- a/resources/vue/components/tree/TreeSearchResult.vue
+++ b/resources/vue/components/tree/TreeSearchResult.vue
@@ -101,7 +101,13 @@ export default {
);
this.getNode(this.searchConfig.startId).then(response => {
- return this.getNodeCourses(response.data.data, this.searchConfig.semester, 0, this.searchConfig.searchterm, true);
+ return this.getNodeCourses(
+ response.data.data,
+ this.searchConfig.semester,
+ this.searchConfig.semclass,
+ this.searchConfig.searchterm,
+ true
+ );
}).then(courses => {
this.courses = courses.data.data;