This is the codeAbility Sharing Platform! Learn more about the codeAbility Sharing Platform.

Skip to content
Snippets Groups Projects
mock-search.component.ts 1.83 KiB
Newer Older
import { Component, OnInit } from '@angular/core';
import { Exercise } from 'app/shared/model/exercise.model';
import { SearchInput } from 'app/shared/model/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 {
  mockResults: Exercise[] = [];
  selectedResult?: Exercise;
  hitCount?: number;
  constructor(protected searchService: SearchService) {}
  public get results(): Exercise[] {
    return this.mockResults;
  }

  selectExercise(exercise: Exercise): void {
    this.selectedResult = exercise;
  }
  search(searchInput: SearchInput): void {
    if (!searchInput.fulltextQuery) {
      this.mockResults = [];
    } else {
      this.searchService.searchPageDetails(searchInput).subscribe(
        (data: SearchResultsDTO) => this.parseSearchResultsDTO(data),
        () => alert('Search failed')
      );
    }
  }

  parseSearchResultsDTO(searchResultsDTO: SearchResultsDTO): void {
    this.hitCount = searchResultsDTO.hitCount;
    this.mockResults = searchResultsDTO.searchResult.map(this.searchResultToExercise);
  }

  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',
    };
  }