/**
 * @since Tue Mar 06 2018
 * @author Charles Gouldmann - Klean
 * 
 * TODO: Get params outside of router-outlet 
 * possible soloution: https://stackoverflow.com/questions/39836600/angular-2-how-do-i-get-params-of-a-route-from-outside-of-a-router-outlet/46945472#46945472
 * 
 * or get URL on navigationEnd
 */


import { Component, Inject, Input } from '@angular/core'
import { Router, ActivatedRoute, Params, ParamMap } from '@angular/router'

import { SearchService }        from '../../services/svc.search'
import { AppHelper } from '@k-settings/app-helper'

@Component({
    moduleId: module.id+ '',
    selector: 'search-input',
    templateUrl: './tpl.input.pug',
    styleUrls: ['sty.input.scss']
})

export class SearchInputComponent {

    // Variables ----
    @Input('template') template: string = 'full'
    routeParam: string
    
    public search = '';

    handleResultSelected(result) {
        this.search = result;
    }

    constructor(
        private _searchService : SearchService,
        private _activatedRoute : ActivatedRoute,
        private _router : Router
    ) {
        _activatedRoute.paramMap.subscribe((params) => {
            this.routeParam = params.get('needle')
        })
    }

    // Lifecycle hooks ----

    // Functions ----

    /**
	 * Initiates a call to service to get results and update observable.
	 * Also changes the current route to reflect `needle` if on search route.
	 * 
	 * @param needle 
	 */
	searchFor(needle: string) {
        console.log(this.routeParam)

		// if(!!this.routeParam && this.routeParam != needle) {
            this._router.navigate([AppHelper.search, needle])
		// }
		this._searchService.getSearchResults(needle)
    }
}
