mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-29 17:41:13 +00:00
Move hacks to hack (match k8s pattern).
This commit is contained in:
111
hack/crawl/ui/src/app/search/search.component.ts
Normal file
111
hack/crawl/ui/src/app/search/search.component.ts
Normal file
@@ -0,0 +1,111 @@
|
||||
import { Component, OnInit, NgModule } from '@angular/core';
|
||||
import { Router, ActivatedRoute } from '@angular/router';
|
||||
import { SearchResults } from '../documents';
|
||||
import { HistogramComponent } from '../histogram/histogram.component';
|
||||
import { TimeseriesComponent } from '../timeseries/timeseries.component';
|
||||
import { SearchService } from './search.service';
|
||||
|
||||
const perPage = 10;
|
||||
|
||||
@Component({
|
||||
selector: 'app-search',
|
||||
templateUrl: './search.component.html',
|
||||
styleUrls: ['./search.component.css'],
|
||||
providers: [SearchService]
|
||||
})
|
||||
export class SearchComponent implements OnInit {
|
||||
inputQuery: string[] = [];
|
||||
from: number = 0;
|
||||
disableNav: boolean = false;
|
||||
|
||||
docs: SearchResults = {
|
||||
hits: {
|
||||
total: 0,
|
||||
hits: [],
|
||||
},
|
||||
};
|
||||
|
||||
kindBreakdown = new HistogramComponent();
|
||||
timeseries = new TimeseriesComponent();
|
||||
|
||||
constructor(
|
||||
private searcher : SearchService,
|
||||
private router: Router,
|
||||
private route: ActivatedRoute
|
||||
) {}
|
||||
|
||||
ngOnInit() {
|
||||
this.route.queryParams.subscribe(params => {
|
||||
if (params.q instanceof Array) {
|
||||
this.inputQuery = params.q || [""]
|
||||
} else {
|
||||
this.inputQuery = [params.q || "" ];
|
||||
}
|
||||
|
||||
this.from = parseInt(params.from) || 0;
|
||||
if (this.from < 0) {
|
||||
this.from = Math.max(this.from, 0);
|
||||
this.searchWithParams();
|
||||
}
|
||||
|
||||
this.searcher.search(params).subscribe(sr => {
|
||||
this.docs = sr;
|
||||
this.kindBreakdown.update(sr.aggregations.kinds).subscribe(selectedKind => {
|
||||
this.addToQuery('kind='+selectedKind)
|
||||
this.search();
|
||||
})
|
||||
this.timeseries.update(sr.aggregations.timeseries);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public addToQuery(q: string) {
|
||||
for (let v of this.inputQuery) {
|
||||
if (v == q) {
|
||||
return
|
||||
}
|
||||
}
|
||||
this.inputQuery.push(q)
|
||||
}
|
||||
|
||||
search(): void {
|
||||
this.from = 0;
|
||||
this.searchWithParams();
|
||||
}
|
||||
|
||||
searchWithParams(): void {
|
||||
let params = {
|
||||
q: this.inputQuery,
|
||||
from: this.from,
|
||||
}
|
||||
this.router.navigate([], {
|
||||
relativeTo: this.route,
|
||||
queryParams: params,
|
||||
});
|
||||
}
|
||||
|
||||
first(): boolean {
|
||||
return this.from <= 0 || this.disableNav;
|
||||
}
|
||||
|
||||
last(): boolean {
|
||||
return this.from + perPage >= this.docs.hits.total || this.disableNav;
|
||||
}
|
||||
|
||||
next (): void {
|
||||
this.from += perPage;
|
||||
this.searchWithParams();
|
||||
}
|
||||
prev (): void {
|
||||
this.from -= perPage;
|
||||
this.searchWithParams();
|
||||
}
|
||||
|
||||
get inputQueryValue() : string {
|
||||
return this.inputQuery.join(' ')
|
||||
}
|
||||
|
||||
set inputQueryValue(input : string) {
|
||||
this.inputQuery = [input]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user