program-item-factory.ts
2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import {ProgramItem, PROGRAM_ITEM_TYPE_SLIDESHOW, PROGRAM_ITEM_TYPE_VIDEO } from './program-item';
import { ProgramRepository } from './../program-repository';
export class ProgramItemFactory {
protected _programRepository:ProgramRepository;
protected _basePath:string;
set basePath(bp:string) {
this._basePath = bp;
}
get basePath() : string {
return this._basePath;
}
set programRepository(pr:ProgramRepository) {
this._programRepository = pr;
}
get programRepository() : ProgramRepository {
return this._programRepository;
}
getProgramItem(programItemId:string) : Promise<ProgramItem> {
return this.programRepository
.findById(programItemId)
.then((programItem) => {
return this.prepareProgramItem(programItem.program_item_type, programItem);
});
}
prepareProgramItem(type:string, data:any) : Promise<ProgramItem> {
let programItem = new ProgramItem();
programItem.type = type;
if (data.infoboxes) {
programItem.data.infoboxes = data.infoboxes;
}
if (type === PROGRAM_ITEM_TYPE_VIDEO) {
return this.prepareVideoItem(programItem, data);
} else if (type === PROGRAM_ITEM_TYPE_SLIDESHOW) {
return this.prepareSlideshowItem(programItem, data);
} else {
return null;
}
}
prepareSlideshowItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {
return this._programRepository.findByIds(data.images)
.then(images => {
programItem.data.speed = data.settings.speed;
programItem.data.effect = data.settings.effect;
programItem.data.images = [];
if (images && images.length > 0) {
for (let image of images) {
if (image && image.filename) {
programItem.data.images.push(this.basePath + image.filename);
}
}
}
return programItem;
});
}
prepareVideoItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {
return this._programRepository.findById(data.video)
.then((data) => {
programItem.data.video = this.basePath + data['filename'];
return programItem;
});
}
}