Stefan Huber

added infoboxes to factory

......@@ -179,6 +179,7 @@ var ProgramManager = (function () {
ProgramManager.prototype.findCurrentProgramItem = function (schedule, dateInMinutes) {
var timeList = [];
var tmpSchedule = {};
dateInMinutes--; // make it not so strict, which will start one minute earlier
for (var startTime in schedule) {
if (schedule.hasOwnProperty(startTime)) {
var minutes = Util.convertToMinutes(startTime);
......@@ -300,6 +301,9 @@ var ProgramItemFactory = (function () {
ProgramItemFactory.prototype.prepareProgramItem = function (type, data) {
var 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);
}
......
{"version":3,"file":"bundle.js","sources":["../src/util.ts","../src/player.ts","../src/program-manager.ts","../src/program-item/program-item.ts","../src/program-item/program-item-factory.ts"],"sourcesContent":["export class Util {\n\n static getISODate() : string {\n return (new Date()).toISOString().slice(0,10);\n }\n\n static getDateInMinutes() : number {\n let now = new Date();\n return (now.getHours() * 60) + now.getMinutes();\n }\n\n /**\n * convert a time input to minutes\n * e.g. 23:59 = 1439\n */\n static convertToMinutes(time:string) : number {\n let times = time.split(\":\");\n let convered = (parseInt(times[0]) * 60) + parseInt(times[1]);\n return (convered >= 0 && convered <= 1439) ? convered : 0;\n }\n\n static calculateNextMinute() : number {\n return (60 - (Math.round((new Date()).getTime() / 1000) % 60)) * 1000;\n }\n\n}","import { EventEmitter } from 'events';\nimport {ProgramRepository} from './program-repository';\nimport {ProgramManager} from './program-manager';\nimport {Util} from './util';\n\nconst STATE_START = \"start\";\nconst STATE_STOP = \"stop\";\n\nexport class Player extends EventEmitter {\n\n constructor() {\n super();\n }\n\n protected _programRepository:ProgramRepository;\n protected _programManager:ProgramManager;\n protected _minutesReplication:number = 3;\n protected _replicationRetry:number = 10000;\n\n protected _currentProgramItemId:string = '';\n protected _currentReplicationCounter:number = 0;\n protected _state = STATE_STOP;\n\n set state(st:string) {\n this._state = st;\n }\n\n set programManager(pm:ProgramManager) {\n this._programManager = pm;\n }\n\n get programManager() : ProgramManager {\n return this._programManager;\n }\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n set minutesReplication(mr:number) {\n this._minutesReplication = mr;\n }\n\n get minutesReplication() : number {\n return this._minutesReplication;\n }\n\n set replicationRetry(rr:number) {\n this._replicationRetry = rr;\n }\n\n get replicationRetry() : number {\n return this._replicationRetry;\n }\n\n triggerReplication() : Promise<void> {\n console.info(\"digsig-player-service: trigger replication\");\n\n return this.programRepository.replicate()\n .then(changes => { \n this._currentReplicationCounter = 0;\n this.trigger(() => { this.triggerProgramItemId(changes); });\n })\n .catch(error => { \n this.trigger(() => { this.triggerReplication(); }, this.replicationRetry);\n this.emit('error', error);\n });\n }\n\n triggerProgramItemId(changes:boolean = false) {\n console.info(\"digsig-player-service: trigger program item id\");\n\n this.programManager.getCurrentProgramItemId()\n .then(programItemId => {\n this._currentReplicationCounter++;\n\n // if there is a new program item id trigger play\n // else (1) calculate next potential program change point\n // or (2) trigger replication\n\n if (programItemId && (programItemId != this._currentProgramItemId || changes)) {\n this._currentProgramItemId = programItemId;\n this.emit('play', programItemId);\n }\n \n if (this._currentReplicationCounter >= this._minutesReplication) {\n this.triggerReplication();\n } else {\n this.trigger(() => { this.triggerProgramItemId(); }, Util.calculateNextMinute());\n }\n });\n }\n\n trigger(func:Function, milliseconds:number = 0) {\n if (this._state === STATE_START) { \n setTimeout(() => { func(); }, milliseconds);\n } \n }\n\n start() {\n if (this._state === STATE_STOP) {\n this.triggerReplication();\n this._state = STATE_START;\n }\n }\n\n stop() {\n this._state = STATE_STOP;\n }\n\n}","import {ProgramRepository} from './program-repository';\nimport {Util} from './util';\nimport {ProgramItem, PROGRAM_ITEM_TYPE_SLIDESHOW, PROGRAM_ITEM_TYPE_VIDEO } from './program-item/program-item'\n\nexport class ProgramManager {\n\n protected _programRepository:ProgramRepository;\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n getCurrentProgramItemId() : Promise<string> {\n return new Promise<string> ((resolve, reject) => {\n this.findCurrentProgramSegment().then(programSegment => {\n let currentProgramItemId = programSegment.default;\n if (programSegment.schedule) {\n currentProgramItemId = this.findCurrentProgramItem(programSegment.schedule, Util.getDateInMinutes());\n }\n resolve(currentProgramItemId);\n });\n }); \n }\n\n /**\n * find program item in schedule, which fits\n * according to current hh:mm\n */\n findCurrentProgramItem(schedule:any, dateInMinutes:number) : string {\n let timeList:any = [];\n let tmpSchedule:any = {};\n\n for (let startTime in schedule) {\n if (schedule.hasOwnProperty(startTime)) {\n let minutes = Util.convertToMinutes(startTime);\n timeList.push(minutes);\n tmpSchedule[minutes] = schedule[startTime];\n }\n }\n\n // sort ascending (-)\n timeList.sort((a,b) => { return a-b; });\n\n let last = 0;\n for (let i = 0; i < timeList.length; i++) {\n if (timeList[i] <= dateInMinutes) {\n last = timeList[i];\n } else {\n break;\n }\n }\n\n return tmpSchedule[last];\n }\n\n /**\n * Find the program segment\n * This is dependent on the date set on the device\n */\n findCurrentProgramSegment() : Promise<any> {\n return new Promise<any>((resolve, reject) => {\n let today = Util.getISODate();\n \n this.programRepository.findByType('program')\n .then(programs => {\n \n if (programs.length > 0) {\n let program:any = programs[0];\n let programSegmentId;\n\n // if there is a program_segment for today else default\n if (program.schedule && program.schedule[today]) {\n programSegmentId = program.schedule[today];\n } else {\n programSegmentId = program.default;\n }\n \n this.programRepository\n .findById(programSegmentId)\n .then(programSegment => { \n resolve(programSegment);\n }).catch(error => { \n reject(\"program segment not found\");\n });\n } else {\n reject('No Program found');\n }\n\n }).catch(error => {\n reject(error);\n });\n });\n }\n\n}","export const PROGRAM_ITEM_TYPE_SLIDESHOW = \"slideshow\";\nexport const PROGRAM_ITEM_TYPE_VIDEO = \"video\";\n\nexport class ProgramItem {\n\n protected _type:string;\n protected _data:any;\n\n set type(t:string) {\n this._type = t;\n }\n\n get type():string {\n return this._type;\n }\n\n set data(d:any) {\n this._data = d;\n }\n\n get data():any {\n return this._data;\n }\n\n}","import {ProgramItem, PROGRAM_ITEM_TYPE_SLIDESHOW, PROGRAM_ITEM_TYPE_VIDEO } from './program-item';\nimport { ProgramRepository } from './../program-repository';\n\nexport class ProgramItemFactory {\n\n protected _programRepository:ProgramRepository;\n protected _basePath:string;\n\n set basePath(bp:string) {\n this._basePath = bp;\n }\n \n get basePath() : string {\n return this._basePath;\n }\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n getProgramItem(programItemId:string) : Promise<ProgramItem> {\n return this.programRepository\n .findById(programItemId)\n .then((programItem) => {\n return this.prepareProgramItem(programItem.program_item_type, programItem);\n });\n }\n\n prepareProgramItem(type:string, data:any) : Promise<ProgramItem> {\n let programItem = new ProgramItem();\n programItem.type = type;\n\n if (type === PROGRAM_ITEM_TYPE_VIDEO) {\n return this.prepareVideoItem(programItem, data);\n } else if (type === PROGRAM_ITEM_TYPE_SLIDESHOW) {\n return this.prepareSlideshowItem(programItem, data);\n } else {\n return null;\n }\n } \n\n prepareSlideshowItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {\n return this._programRepository.findByIds(data.images)\n .then(images => { \n programItem.data = {\n speed : data.settings.speed ,\n effect : data.settings.effect ,\n images : []\n }; \n\n for (let image of images) {\n programItem.data.images.push(this.basePath + image.filename);\n }\n\n return programItem;\n });\n }\n\n prepareVideoItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {\n return this._programRepository.findById(data.video)\n .then((data) => { \n programItem.data = {\n video : this.basePath + data['filename']\n }; \n return programItem;\n });\n }\n\n}"],"names":["EventEmitter"],"mappings":"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"}
\ No newline at end of file
{"version":3,"file":"bundle.js","sources":["../src/util.ts","../src/player.ts","../src/program-manager.ts","../src/program-item/program-item.ts","../src/program-item/program-item-factory.ts"],"sourcesContent":["export class Util {\n\n static getISODate() : string {\n return (new Date()).toISOString().slice(0,10);\n }\n\n static getDateInMinutes() : number {\n let now = new Date();\n return (now.getHours() * 60) + now.getMinutes();\n }\n\n /**\n * convert a time input to minutes\n * e.g. 23:59 = 1439\n */\n static convertToMinutes(time:string) : number {\n let times = time.split(\":\");\n let convered = (parseInt(times[0]) * 60) + parseInt(times[1]);\n return (convered >= 0 && convered <= 1439) ? convered : 0;\n }\n\n static calculateNextMinute() : number {\n return (60 - (Math.round((new Date()).getTime() / 1000) % 60)) * 1000;\n }\n\n}","import { EventEmitter } from 'events';\nimport {ProgramRepository} from './program-repository';\nimport {ProgramManager} from './program-manager';\nimport {Util} from './util';\n\nconst STATE_START = \"start\";\nconst STATE_STOP = \"stop\";\n\nexport class Player extends EventEmitter {\n\n constructor() {\n super();\n }\n\n protected _programRepository:ProgramRepository;\n protected _programManager:ProgramManager;\n protected _minutesReplication:number = 3;\n protected _replicationRetry:number = 10000;\n\n protected _currentProgramItemId:string = '';\n protected _currentReplicationCounter:number = 0;\n protected _state = STATE_STOP;\n\n set state(st:string) {\n this._state = st;\n }\n\n set programManager(pm:ProgramManager) {\n this._programManager = pm;\n }\n\n get programManager() : ProgramManager {\n return this._programManager;\n }\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n set minutesReplication(mr:number) {\n this._minutesReplication = mr;\n }\n\n get minutesReplication() : number {\n return this._minutesReplication;\n }\n\n set replicationRetry(rr:number) {\n this._replicationRetry = rr;\n }\n\n get replicationRetry() : number {\n return this._replicationRetry;\n }\n\n triggerReplication() : Promise<void> {\n console.info(\"digsig-player-service: trigger replication\");\n\n return this.programRepository.replicate()\n .then(changes => { \n this._currentReplicationCounter = 0;\n this.trigger(() => { this.triggerProgramItemId(changes); });\n })\n .catch(error => { \n this.trigger(() => { this.triggerReplication(); }, this.replicationRetry);\n this.emit('error', error);\n });\n }\n\n triggerProgramItemId(changes:boolean = false) {\n console.info(\"digsig-player-service: trigger program item id\");\n\n this.programManager.getCurrentProgramItemId()\n .then(programItemId => {\n this._currentReplicationCounter++;\n\n // if there is a new program item id trigger play\n // else (1) calculate next potential program change point\n // or (2) trigger replication\n\n if (programItemId && (programItemId != this._currentProgramItemId || changes)) {\n this._currentProgramItemId = programItemId;\n this.emit('play', programItemId);\n }\n \n if (this._currentReplicationCounter >= this._minutesReplication) {\n this.triggerReplication();\n } else {\n this.trigger(() => { this.triggerProgramItemId(); }, Util.calculateNextMinute());\n }\n });\n }\n\n trigger(func:Function, milliseconds:number = 0) {\n if (this._state === STATE_START) { \n setTimeout(() => { func(); }, milliseconds);\n } \n }\n\n start() {\n if (this._state === STATE_STOP) {\n this.triggerReplication();\n this._state = STATE_START;\n }\n }\n\n stop() {\n this._state = STATE_STOP;\n }\n\n}","import {ProgramRepository} from './program-repository';\nimport {Util} from './util';\nimport {ProgramItem, PROGRAM_ITEM_TYPE_SLIDESHOW, PROGRAM_ITEM_TYPE_VIDEO } from './program-item/program-item'\n\nexport class ProgramManager {\n\n protected _programRepository:ProgramRepository;\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n getCurrentProgramItemId() : Promise<string> {\n return new Promise<string> ((resolve, reject) => {\n this.findCurrentProgramSegment().then(programSegment => {\n let currentProgramItemId = programSegment.default;\n if (programSegment.schedule) {\n currentProgramItemId = this.findCurrentProgramItem(programSegment.schedule, Util.getDateInMinutes());\n }\n resolve(currentProgramItemId);\n });\n }); \n }\n\n /**\n * find program item in schedule, which fits\n * according to current hh:mm\n */\n findCurrentProgramItem(schedule:any, dateInMinutes:number) : string {\n let timeList:any = [];\n let tmpSchedule:any = {};\n dateInMinutes--; // make it not so strict, which will start one minute earlier\n\n for (let startTime in schedule) {\n if (schedule.hasOwnProperty(startTime)) {\n let minutes = Util.convertToMinutes(startTime);\n timeList.push(minutes);\n tmpSchedule[minutes] = schedule[startTime];\n }\n }\n\n // sort ascending (-)\n timeList.sort((a,b) => { return a-b; });\n\n let last = 0;\n for (let i = 0; i < timeList.length; i++) {\n if (timeList[i] <= dateInMinutes) {\n last = timeList[i];\n } else {\n break;\n }\n }\n\n return tmpSchedule[last];\n }\n\n /**\n * Find the program segment\n * This is dependent on the date set on the device\n */\n findCurrentProgramSegment() : Promise<any> {\n return new Promise<any>((resolve, reject) => {\n let today = Util.getISODate();\n \n this.programRepository.findByType('program')\n .then(programs => {\n \n if (programs.length > 0) {\n let program:any = programs[0];\n let programSegmentId;\n\n // if there is a program_segment for today else default\n if (program.schedule && program.schedule[today]) {\n programSegmentId = program.schedule[today];\n } else {\n programSegmentId = program.default;\n }\n \n this.programRepository\n .findById(programSegmentId)\n .then(programSegment => { \n resolve(programSegment);\n }).catch(error => { \n reject(\"program segment not found\");\n });\n } else {\n reject('No Program found');\n }\n\n }).catch(error => {\n reject(error);\n });\n });\n }\n\n}","export const PROGRAM_ITEM_TYPE_SLIDESHOW = \"slideshow\";\nexport const PROGRAM_ITEM_TYPE_VIDEO = \"video\";\n\nexport class ProgramItem {\n\n protected _type:string;\n protected _data:any;\n\n set type(t:string) {\n this._type = t;\n }\n\n get type():string {\n return this._type;\n }\n\n set data(d:any) {\n this._data = d;\n }\n\n get data():any {\n return this._data;\n }\n\n}","import {ProgramItem, PROGRAM_ITEM_TYPE_SLIDESHOW, PROGRAM_ITEM_TYPE_VIDEO } from './program-item';\nimport { ProgramRepository } from './../program-repository';\n\nexport class ProgramItemFactory {\n\n protected _programRepository:ProgramRepository;\n protected _basePath:string;\n\n set basePath(bp:string) {\n this._basePath = bp;\n }\n \n get basePath() : string {\n return this._basePath;\n }\n\n set programRepository(pr:ProgramRepository) {\n this._programRepository = pr;\n }\n\n get programRepository() : ProgramRepository {\n return this._programRepository;\n }\n\n getProgramItem(programItemId:string) : Promise<ProgramItem> {\n return this.programRepository\n .findById(programItemId)\n .then((programItem) => {\n return this.prepareProgramItem(programItem.program_item_type, programItem);\n });\n }\n\n prepareProgramItem(type:string, data:any) : Promise<ProgramItem> {\n let programItem = new ProgramItem();\n programItem.type = type;\n\n if (data.infoboxes) {\n programItem.data.infoboxes = data.infoboxes;\n }\n\n if (type === PROGRAM_ITEM_TYPE_VIDEO) {\n return this.prepareVideoItem(programItem, data);\n } else if (type === PROGRAM_ITEM_TYPE_SLIDESHOW) {\n return this.prepareSlideshowItem(programItem, data);\n } else {\n return null;\n }\n } \n\n prepareSlideshowItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {\n return this._programRepository.findByIds(data.images)\n .then(images => { \n programItem.data = {\n speed : data.settings.speed ,\n effect : data.settings.effect ,\n images : []\n }; \n\n for (let image of images) {\n programItem.data.images.push(this.basePath + image.filename);\n }\n\n return programItem;\n });\n }\n\n prepareVideoItem(programItem:ProgramItem, data:any) : Promise<ProgramItem> {\n return this._programRepository.findById(data.video)\n .then((data) => { \n programItem.data = {\n video : this.basePath + data['filename']\n }; \n return programItem;\n });\n }\n\n}"],"names":["EventEmitter"],"mappings":"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"}
\ No newline at end of file
......
......@@ -34,6 +34,10 @@ export class ProgramItemFactory {
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) {
......