From 00a446454d4721fc49517815655f6b4f8a17b554 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 10 Jun 2016 17:43:40 +0200 Subject: Add tags support to the video list --- client/src/app/shared/search/index.ts | 1 + client/src/app/shared/search/search.component.ts | 21 +++++++++++++++++++-- client/src/app/shared/search/search.service.ts | 15 +++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 client/src/app/shared/search/search.service.ts (limited to 'client/src/app/shared') diff --git a/client/src/app/shared/search/index.ts b/client/src/app/shared/search/index.ts index a49a4f1a9..a897ed099 100644 --- a/client/src/app/shared/search/index.ts +++ b/client/src/app/shared/search/index.ts @@ -1,3 +1,4 @@ export * from './search-field.type'; export * from './search.component'; export * from './search.model'; +export * from './search.service'; diff --git a/client/src/app/shared/search/search.component.ts b/client/src/app/shared/search/search.component.ts index c14c2d99c..ed1ce807a 100644 --- a/client/src/app/shared/search/search.component.ts +++ b/client/src/app/shared/search/search.component.ts @@ -1,9 +1,10 @@ -import { Component, EventEmitter, Output } from '@angular/core'; +import { Component, EventEmitter, Output, OnInit } from '@angular/core'; import { DROPDOWN_DIRECTIVES} from 'ng2-bootstrap/components/dropdown'; import { Search } from './search.model'; import { SearchField } from './search-field.type'; +import { SearchService } from './search.service'; // Temporary @Component({ selector: 'my-search', @@ -11,7 +12,7 @@ import { SearchField } from './search-field.type'; directives: [ DROPDOWN_DIRECTIVES ] }) -export class SearchComponent { +export class SearchComponent implements OnInit { @Output() search = new EventEmitter(); fieldChoices = { @@ -26,6 +27,21 @@ export class SearchComponent { value: '' }; + constructor(private searchService: SearchService) {} + + ngOnInit() { + this.searchService.searchChanged.subscribe( + newSearchCriterias => { + // Put a field by default + if (!newSearchCriterias.field) { + newSearchCriterias.field = 'name'; + } + + this.searchCriterias = newSearchCriterias; + } + ); + } + get choiceKeys() { return Object.keys(this.fieldChoices); } @@ -35,6 +51,7 @@ export class SearchComponent { $event.stopPropagation(); this.searchCriterias.field = choice; + this.doSearch(); } doSearch() { diff --git a/client/src/app/shared/search/search.service.ts b/client/src/app/shared/search/search.service.ts new file mode 100644 index 000000000..787c02d2b --- /dev/null +++ b/client/src/app/shared/search/search.service.ts @@ -0,0 +1,15 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs/Subject'; + +import { Search } from './search.model'; + +// This class is needed to communicate between videos/list and search component +// Remove it when we'll be able to subscribe to router changes +@Injectable() +export class SearchService { + searchChanged: Subject; + + constructor() { + this.searchChanged = new Subject(); + } +} -- cgit v1.2.3