Newer
Older
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';
import { AccountService } from 'app/core/auth/account.service';
selector: 'jhi-search',
templateUrl: './search.component.html',
styleUrls: ['./search.scss'],
export class SearchComponent implements OnInit {
hitCount = 0;
private searchInput: SearchInput = new SearchInput();
constructor(protected searchService: SearchService, public accountService: AccountService) {}
selectExercise(exercise: Exercise): void {
this.selectedResult = exercise;
}
updateSearchInput(searchInput: SearchInput): void {
searchInput.page = 0;
this.searchInput = searchInput;
this.results = [];

Eduard Frankford
committed
if (
this.searchInput.fulltextQuery ||
this.searchInput.metadata.programmingLanguage ||
this.searchInput.metadata.keyword ||
this.searchInput.metadata.author ||
this.searchInput.metadata.license
) {
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[] {
return searchResultsDTO.searchResult.map(this.searchResultToExercise);
private searchResultToExercise(searchResult: SearchResultDTO): Exercise {
title: searchResult.metadata.title,
license: searchResult.metadata.license,
description: searchResult.metadata.description,
programmingLanguages: searchResult.metadata.programmingLanguage,
languages: searchResult.metadata.language,
creators: searchResult.metadata.creator,
contributor: searchResult.metadata.contributor,
publisher: searchResult.metadata.publisher,
imageURL: searchResult.metadata.image,
lastUpdate: searchResult.project.last_activity_at,
timeRequired: searchResult.metadata.timeRequired,
requires: searchResult.metadata.requires,
deprecated: searchResult.metadata.deprecated,
difficulty: searchResult.metadata.difficulty,
educationLevel: searchResult.metadata.educationLevel,
format: searchResult.metadata.format,
keyword: searchResult.metadata.keyword,
status: searchResult.metadata.status,
type: searchResult.metadata.type,
structure: searchResult.metadata.structure,
version: searchResult.metadata.version,
metadataVersion: searchResult.metadata.metadataVersion,
gitlabURL: searchResult.project.url,

Michael Breu
committed
views: searchResult.views,
downloads: searchResult.downloads,
onScroll(): void {
this.search();
}