/// import {Component} from "@angular/core"; import {AutoCompleteService} from "./autocomplete.service"; import {AutoCompleteItem} from "../../../../common/entities/AutoCompleteItem"; import {Message} from "../../../../common/entities/Message"; @Component({ selector: 'gallery-search', templateUrl: 'app/gallery/search/search.gallery.component.html', styleUrls: ['app/gallery/search/search.gallery.component.css'], providers: [AutoCompleteService] }) export class GallerySearchComponent { autoCompleteItems:Array = []; constructor(private _autoCompleteService:AutoCompleteService) { } getSuggestions(event:KeyboardEvent){ let searchText = (event.target).value; if(searchText.trim().length > 0) { this._autoCompleteService.autoComplete(searchText).then((message:Message>) =>{ if(message.error){ //TODO: implement console.error(message.error); return; } this.showSuggestions(message.result,searchText); }); }else{ this.emptyAutoComplete(); } } private showSuggestions(suggestions:Array,searchText:string){ this.emptyAutoComplete(); suggestions.forEach((item)=>{ let preIndex = item.text.toLowerCase().indexOf(searchText.toLowerCase()); let renderItem = new AutoCompleteRenderItem(); if(preIndex > -1){ renderItem.preText = item.text.substring(0,preIndex); renderItem.highLightText = item.text.substring(preIndex, preIndex + searchText.length); renderItem.postText = item.text.substring(preIndex + searchText.length); }else{ renderItem.postText = item.text; } this.autoCompleteItems.push(renderItem); }); } public onFocusLost(event){ this.autoCompleteItems = []; } private emptyAutoComplete(){ this.autoCompleteItems = []; } } class AutoCompleteRenderItem{ constructor(public preText:string = "",public highLightText:string = "", public postText:string = ""){ } }