import { Component, OnInit } from '@angular/core'; import { Exercise } from 'app/shared/model/exercise.model'; import { SearchInput } from 'app/shared/model/search/search-input.model'; import { SearchService } from 'app/search/service/search-service'; import { SearchResultsDTO } from 'app/shared/model/search/search-results-dto.model'; import { SearchResultDTO } from 'app/shared/model/search/search-result-dto.model'; @Component({ selector: 'jhi-mock-search', templateUrl: './mock-search.component.html', styleUrls: ['./mock-search.scss'], }) export class MockSearchComponent implements OnInit { results: Exercise[] = []; selectedResult?: Exercise; hitCount = 0; private searchInput: SearchInput = new SearchInput(); constructor(protected searchService: SearchService) {} ngOnInit(): void {} selectExercise(exercise: Exercise): void { this.selectedResult = exercise; } updateSearchInput(searchInput: SearchInput): void { searchInput.page = 0; this.searchInput = searchInput; this.results = []; this.hitCount = 0; this.search(); } private search(): void { if (this.searchInput.fulltextQuery) { this.searchService.searchPageDetails(this.searchInput).subscribe( (data: SearchResultsDTO) => { const searchResults = this.parseSearchResultsDTO(data); this.results = this.results.concat(searchResults); ++this.searchInput.page; }, () => alert('Search failed') ); } } private parseSearchResultsDTO(searchResultsDTO: SearchResultsDTO): Exercise[] { this.hitCount += searchResultsDTO.hitCount; return searchResultsDTO.searchResult.map(this.searchResultToExercise); } private searchResultToExercise(searchResult: SearchResultDTO): Exercise { return { title: searchResult.title, license: searchResult.license, description: searchResult.description, programmingLanguages: searchResult.programmingLanguage, languages: searchResult.language, creators: searchResult.creator, imageURL: searchResult.image, rating: 5, lastUpdate: '2021-01-01', timeRequired: searchResult.timeRequired, requires: searchResult.requires, deprecated: searchResult.deprecated, difficulty: searchResult.difficulty, educationLevel: searchResult.educationLevel, format: searchResult.format, keyword: searchResult.keyword, status: searchResult.status, type: searchResult.type, version: searchResult.version, }; } onScroll(): void { this.search(); } }