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 }
|