Mercurial > hg > ugly-duckling
annotate src/app/notebook-feed/notebook-feed.component.ts @ 284:f0c9c9d860e7
Introduce app level, injectable, observable for dimension changes.
author | Lucas Thompson <dev@lucas.im> |
---|---|
date | Thu, 04 May 2017 16:57:57 +0100 |
parents | 5ab9e6132424 |
children | 2d7da410ba46 |
rev | line source |
---|---|
dev@171 | 1 /** |
dev@171 | 2 * Created by lucast on 21/03/2017. |
dev@171 | 3 */ |
dev@232 | 4 import { |
dev@232 | 5 ChangeDetectionStrategy, |
dev@232 | 6 Component, |
dev@232 | 7 Input |
dev@236 | 8 } from '@angular/core'; |
dev@178 | 9 import Waves from 'waves-ui'; |
dev@236 | 10 import {AnalysisItem} from '../analysis-item/analysis-item.component'; |
dev@171 | 11 |
dev@171 | 12 @Component({ |
dev@171 | 13 selector: 'ugly-notebook-feed', |
dev@171 | 14 templateUrl: './notebook-feed.component.html', |
dev@232 | 15 styleUrls: ['./notebook-feed.component.css'], |
dev@232 | 16 changeDetection: ChangeDetectionStrategy.OnPush |
dev@171 | 17 }) |
dev@171 | 18 export class NotebookFeedComponent { |
dev@201 | 19 @Input() analyses: AnalysisItem[]; |
dev@201 | 20 @Input() set rootAudioUri(uri: string) { |
dev@201 | 21 this._rootAudioUri = uri; |
dev@171 | 22 } |
dev@171 | 23 |
dev@201 | 24 get rootAudioUri(): string { |
dev@201 | 25 return this._rootAudioUri; |
dev@171 | 26 } |
dev@201 | 27 private _rootAudioUri: string; |
dev@282 | 28 private timelines: Map<string, Timeline>; |
dev@181 | 29 |
dev@181 | 30 constructor() { |
dev@282 | 31 this.timelines = new Map(); |
dev@282 | 32 } |
dev@282 | 33 |
dev@282 | 34 getOrCreateTimeline(item: AnalysisItem): Timeline | void { |
dev@282 | 35 if (!item.hasSharedTimeline) { |
dev@282 | 36 return; |
dev@282 | 37 } |
dev@282 | 38 |
dev@282 | 39 if (this.timelines.has(item.rootAudioUri)) { |
dev@282 | 40 return this.timelines.get(item.rootAudioUri); |
dev@282 | 41 } else { |
dev@282 | 42 const timeline = new Waves.core.Timeline(); |
dev@282 | 43 this.timelines.set(item.rootAudioUri, timeline); |
dev@282 | 44 return timeline; |
dev@282 | 45 } |
dev@181 | 46 } |
dev@171 | 47 } |