diff options
| author | Thomas Hackl <hackl@data-quest.de> | 2023-11-03 07:17:31 +0000 |
|---|---|---|
| committer | Thomas Hackl <hackl@data-quest.de> | 2023-11-03 07:17:31 +0000 |
| commit | 4a8756ddbceca8d9f1cbb09f4edffdbd7968c85a (patch) | |
| tree | 689e6d4f8b1c587d42469812f9fe7ebfccbe6363 /resources | |
| parent | 31e6680a953fb9faf595ff971b30500c4ffee678 (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.vue | 7 | ||||
| -rw-r--r-- | resources/vue/components/tree/StudipTree.vue | 20 | ||||
| -rw-r--r-- | resources/vue/components/tree/TreeSearchResult.vue | 8 |
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; |
