paperless-ngx/src-ui/src/app/components/search/search.component.ts

66 lines
1.5 KiB
TypeScript
Raw Normal View History

2020-10-27 01:10:18 +01:00
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
2020-11-02 12:25:02 +01:00
import { SearchHit } from 'src/app/data/search-result';
import { SearchService } from 'src/app/services/rest/search.service';
2020-10-27 01:10:18 +01:00
@Component({
selector: 'app-search',
templateUrl: './search.component.html',
styleUrls: ['./search.component.scss']
2020-10-27 01:10:18 +01:00
})
export class SearchComponent implements OnInit {
2020-11-02 12:25:02 +01:00
results: SearchHit[] = []
2020-10-27 01:10:18 +01:00
query: string = ""
2020-11-02 01:35:09 +01:00
searching = false
2020-11-02 12:25:02 +01:00
currentPage = 1
pageCount = 1
resultCount
correctedQuery: string = null
constructor(private searchService: SearchService, private route: ActivatedRoute, private router: Router) { }
2020-10-27 01:10:18 +01:00
ngOnInit(): void {
this.route.queryParamMap.subscribe(paramMap => {
this.query = paramMap.get('query')
2020-11-02 01:35:09 +01:00
this.searching = true
2020-11-02 12:25:02 +01:00
this.currentPage = 1
this.loadPage()
2020-10-27 01:10:18 +01:00
})
}
searchCorrectedQuery() {
this.router.navigate(["search"], {queryParams: {query: this.correctedQuery}})
this.correctedQuery = null
2020-10-27 01:10:18 +01:00
}
2020-11-02 12:25:02 +01:00
loadPage(append: boolean = false) {
this.searchService.search(this.query, this.currentPage).subscribe(result => {
if (append) {
this.results.push(...result.results)
} else {
this.results = result.results
}
this.pageCount = result.page_count
this.searching = false
this.resultCount = result.count
this.correctedQuery = result.corrected_query
2020-11-02 12:25:02 +01:00
})
}
onScroll() {
if (this.currentPage < this.pageCount) {
this.currentPage += 1
this.loadPage(true)
}
}
2020-10-27 01:10:18 +01:00
}