annotate src/app/analysis-item/analysis-item.component.ts @ 348:d17d5038b11a

Wire up as necessary to push the handlers down the tree. This is unfinished.
author Lucas Thompson <dev@lucas.im>
date Thu, 25 May 2017 17:56:14 +0100
parents 2d7da410ba46
children 524f5cd75737
rev   line source
dev@170 1 /**
dev@170 2 * Created by lucast on 21/03/2017.
dev@170 3 */
dev@231 4 import {
dev@231 5 ChangeDetectionStrategy,
dev@231 6 Component,
dev@231 7 Input,
dev@231 8 OnInit
dev@236 9 } from '@angular/core';
dev@348 10 import {naivePagingMapper} from '../visualisations/WavesJunk';
dev@348 11 import {OnSeekHandler, TimePixelMapper} from '../playhead/PlayHeadHelpers';
dev@170 12
dev@200 13 export interface AnalysisItem {
dev@200 14 rootAudioUri: string;
dev@200 15 hasSharedTimeline: boolean;
dev@200 16 isRoot: boolean;
dev@200 17 extractorKey: string;
dev@200 18 title?: string;
dev@200 19 description?: string;
dev@206 20 id?: string;
dev@224 21 progress?: number;
dev@348 22 audioData?: AudioBuffer;
dev@170 23 }
dev@170 24
dev@170 25 @Component({
dev@170 26 selector: 'ugly-analysis-item',
dev@170 27 templateUrl: './analysis-item.component.html',
dev@231 28 styleUrls: ['./analysis-item.component.css'],
dev@231 29 changeDetection: ChangeDetectionStrategy.OnPush
dev@170 30 })
dev@224 31 export class AnalysisItemComponent implements OnInit {
dev@224 32
dev@189 33 @Input() timeline: Timeline;
dev@200 34 @Input() isActive: boolean;
dev@231 35 @Input() item: AnalysisItem;
dev@285 36 @Input() contentWidth: number;
dev@348 37 @Input() onSeek: OnSeekHandler;
dev@224 38 private hasProgressOnInit = false;
dev@224 39
dev@348 40
dev@348 41 // TODO move
dev@348 42 private DOES_NOT_BELONG_HERE: TimePixelMapper;
dev@348 43
dev@224 44 ngOnInit(): void {
dev@231 45 this.hasProgressOnInit = this.item.progress != null;
dev@348 46 this.DOES_NOT_BELONG_HERE = naivePagingMapper(this.timeline);
dev@224 47 }
dev@224 48
dev@224 49 isLoading(): boolean {
dev@231 50 return this.hasProgressOnInit && this.item.progress < 100;
dev@224 51 }
dev@348 52
dev@348 53 isAudioItem(): boolean {
dev@348 54 return this.item &&
dev@348 55 this.item.isRoot &&
dev@348 56 this.item.audioData instanceof AudioBuffer;
dev@348 57 }
dev@170 58 }