mirror of
https://gitlab.com/openstapps/openstapps.git
synced 2026-01-09 19:22:51 +00:00
feat: search url query param handling
This commit is contained in:
committed by
Rainer Killinger
parent
38f0a30076
commit
f349bd7233
@@ -175,7 +175,7 @@ describe('dashboard', async function () {
|
||||
.find('.searchbar')
|
||||
.type('test', {scrollBehavior: false})
|
||||
.type('{enter}', {scrollBehavior: false});
|
||||
cy.url().should('eq', Cypress.config().baseUrl + '/search/test');
|
||||
cy.url().should('eq', Cypress.config().baseUrl + '/search?query=test');
|
||||
cy.get('ion-searchbar').should('have.value', 'test');
|
||||
|
||||
cy.get('stapps-data-list-item').should('have.length.greaterThan', 0);
|
||||
@@ -185,7 +185,7 @@ describe('dashboard', async function () {
|
||||
cy.visit('/overview');
|
||||
|
||||
cy.get('stapps-search-section').find('ion-icon[name=search]').click();
|
||||
cy.url().should('eq', Cypress.config().baseUrl + '/search/');
|
||||
cy.url().should('eq', Cypress.config().baseUrl + '/search?query=');
|
||||
cy.get('ion-searchbar').should('not.have.value');
|
||||
|
||||
cy.get('stapps-data-list-item').should('have.length', 0);
|
||||
|
||||
@@ -35,7 +35,7 @@ export class SearchSectionComponent {
|
||||
*/
|
||||
onSubmitSearch() {
|
||||
this.router
|
||||
.navigate(['/search', this.searchTerm])
|
||||
.navigate(['/search'], {queryParams: {query: this.searchTerm}})
|
||||
.then(() => this.hideKeyboard());
|
||||
}
|
||||
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
/*
|
||||
* Copyright (C) 2022 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
* You should have received a copy of the GNU General Public License along with
|
||||
* this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
import {NgModule} from '@angular/core';
|
||||
import {RouterModule, Routes} from '@angular/router';
|
||||
@@ -20,7 +20,6 @@ import {SearchPageComponent} from './list/search-page.component';
|
||||
|
||||
const dataRoutes: Routes = [
|
||||
{path: 'search', component: SearchPageComponent},
|
||||
{path: 'search/:term', component: SearchPageComponent},
|
||||
{path: 'data-detail/:uid', component: DataDetailComponent},
|
||||
{path: 'canteen', component: FoodDataListComponent},
|
||||
];
|
||||
|
||||
@@ -277,6 +277,11 @@ export class SearchPageComponent implements OnInit, OnDestroy {
|
||||
* Search event of search bar
|
||||
*/
|
||||
searchStringChanged(queryValue: string) {
|
||||
this.router.navigate([], {
|
||||
relativeTo: this.route,
|
||||
queryParams: {query: queryValue},
|
||||
queryParamsHandling: 'merge',
|
||||
});
|
||||
this.queryTextChanged.next(queryValue);
|
||||
}
|
||||
|
||||
@@ -366,7 +371,7 @@ export class SearchPageComponent implements OnInit, OnDestroy {
|
||||
* Initialize
|
||||
*/
|
||||
async ionViewWillEnter() {
|
||||
const term = this.route.snapshot.paramMap.get('term') || undefined;
|
||||
const term = this.route.snapshot.queryParamMap.get('query') || undefined;
|
||||
if (term) {
|
||||
this.queryText = term;
|
||||
this.searchStringChanged(term);
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
'search.type' | translate
|
||||
}}</ion-button>
|
||||
<ion-button
|
||||
[routerLink]="['/hebis-search/' + (queryText || '')]"
|
||||
[skipLocationChange]="true"
|
||||
[routerLink]="['/hebis-search']"
|
||||
queryParamsHandling="merge"
|
||||
[routerAnimation]="routeAnimation"
|
||||
fill="outline"
|
||||
size="large"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (C) 2018-2021 StApps
|
||||
* Copyright (C) 2022 StApps
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by the Free
|
||||
* Software Foundation, version 3.
|
||||
@@ -19,7 +19,6 @@ import {HebisSearchPageComponent} from './list/hebis-search-page.component';
|
||||
|
||||
const hebisRoutes: Routes = [
|
||||
{path: 'hebis-search', component: HebisSearchPageComponent},
|
||||
{path: 'hebis-search/:term', component: HebisSearchPageComponent},
|
||||
{path: 'hebis-detail/:uid', component: HebisDetailComponent},
|
||||
];
|
||||
|
||||
|
||||
@@ -37,7 +37,8 @@
|
||||
<ion-toolbar color="primary" class="category-tab">
|
||||
<ion-buttons class="ion-justify-content-between">
|
||||
<ion-button
|
||||
[routerLink]="['/search/' + (queryText || '')]"
|
||||
[routerLink]="['/search']"
|
||||
queryParamsHandling="preserve"
|
||||
[routerAnimation]="routeAnimation"
|
||||
fill="outline"
|
||||
size="large"
|
||||
|
||||
Reference in New Issue
Block a user