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

Skip to content
Snippets Groups Projects
teaserContent.component.ts 3.99 KiB
Newer Older
import { Component, OnInit } from '@angular/core';

import { SearchService, AutoCompletionEntry } from 'app/search/service/search-service';
import { SearchInputComponent } from 'app/search/search-input/search-input.component';
Michael Breu's avatar
Michael Breu committed
import { CloudData, CloudOptions } from  'angular-tag-cloud-module'
import Color from 'ts-color-class';

import { Router } from '@angular/router';

@Component({
  selector: 'jhi-teaser-content',
  templateUrl: './teaserContent.component.html',
Daniel Rainer's avatar
Daniel Rainer committed
  styleUrls: ['./teaserContent.component.scss'],
  providers: [SearchInputComponent],
})
export class TeaserContentComponent implements OnInit {
Michael Breu's avatar
Michael Breu committed
  public keywords: Array<AutoCompletionEntry> = new Array<AutoCompletionEntry>();
  public contributors: Array<AutoCompletionEntry> = new Array<AutoCompletionEntry>();
  public programmingLanguages: Array<AutoCompletionEntry> = new Array<AutoCompletionEntry>();
Michael Breu's avatar
Michael Breu committed

    options: CloudOptions = {
        overflow: false,
Michael Breu's avatar
Michael Breu committed
        zoomOnHover: {scale: 1.2, transitionTime: 0.5}
Michael Breu's avatar
Michael Breu committed
        
      };
  public keywordCloudData:  CloudData[] = [];
  public contributorCloudData:  CloudData[] = [];
  public programmingLanguageCloudData:  CloudData[] = [];

  constructor(private searchService: SearchService, private router: Router, private searchInputComponent: SearchInputComponent) {}
Michael Breu's avatar
Michael Breu committed

Daniel Rainer's avatar
Daniel Rainer committed
    this.searchService.getKeywordsAutoComplete('').subscribe(
Michael Breu's avatar
Michael Breu committed
      (data: Array<AutoCompletionEntry>) => {
Daniel Rainer's avatar
Daniel Rainer committed
        this.keywords = data;
Michael Breu's avatar
Michael Breu committed
        this.keywordCloudData = [];
        this.keywords.forEach(kw => this.keywordCloudData.push( {text: kw.target.toString(), weight: kw.hitCount.valueOf(), color: this.randomColor(new Color('#ffaaee'), new Color('#440000')).getHex()}) )
Daniel Rainer's avatar
Daniel Rainer committed
      },
      () => {
        alert('Initialization of keywords failed');
      }
    );

    this.searchService.getProgrammingLanguageAutoComplete('').subscribe(
Michael Breu's avatar
Michael Breu committed
      (data: Array<AutoCompletionEntry>) => {
Daniel Rainer's avatar
Daniel Rainer committed
        this.programmingLanguages = data;
Michael Breu's avatar
Michael Breu committed
        this.programmingLanguageCloudData = [];
        this.programmingLanguages.forEach(pl => this.programmingLanguageCloudData.push( {text: pl.target.toString(), weight: pl.hitCount.valueOf(),  color: this.randomColor(new Color('#2222ff'), new Color('#004444')).getHex()}))
Daniel Rainer's avatar
Daniel Rainer committed
      },
      () => {
        alert('Initialization of programming languages failed');
      }
    );
    this.searchService.getContributorCreatorAutoComplete('').subscribe(
Michael Breu's avatar
Michael Breu committed
      (data: Array<AutoCompletionEntry>) => {
Daniel Rainer's avatar
Daniel Rainer committed
        this.contributors = data;
Michael Breu's avatar
Michael Breu committed
        this.contributorCloudData = [];
        this.contributors.forEach(pl => this.contributorCloudData.push( {text: pl.target.toString(), weight: pl.hitCount.valueOf(),  color: this.randomColor(new Color('#aaff44'), new Color('#004400')).getHex()}) )
Daniel Rainer's avatar
Daniel Rainer committed
      },
      () => {
        alert('Initialization of contributors failed');
      }
    );
Michael Breu's avatar
Michael Breu committed
  
Michael Breu's avatar
Michael Breu committed
  onKeywordClick(event: CloudData): void {
        this.clickKeyword(event.text);
Michael Breu's avatar
Michael Breu committed
    }
  
  onProgrammingLanguageClick(event: CloudData): void {
    this.clickLanguage(event.text);
    }

  onContributorClick(event: CloudData): void {
    this.clickContributor(event.text);
    }
  clickLanguage(programmingLanguage: String): void {
    this.router.navigate(['/search'], { queryParams: { pl: programmingLanguage } });
  }
  clickContributor(contributor: String): void {
    this.router.navigate(['/search'], { queryParams: { a: contributor } });
  }

  clickKeyword(keyWord: String): void {
    this.router.navigate(['/search'], { queryParams: { kw: keyWord } });
  }
  
  private randomColor(main: Color, deviation: Color): Color {
    const upperBound = new Color(Math.min(main.getRed()+deviation.getRed(), 255),Math.min(main.getGreen()+deviation.getGreen(), 255), Math.min(main.getBlue()+deviation.getBlue(), 255));
    const target = new Color(
        Math.max(Math.round(upperBound.getRed()-2*deviation.getRed()*Math.random()), 0),
        Math.max(Math.round(upperBound.getGreen()-2*deviation.getGreen()*Math.random()), 0),
        Math.max(Math.round(upperBound.getBlue()-2*deviation.getBlue()*Math.random()), 0));
    return target;
    
}