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