Showing
28 changed files
with
510 additions
and
439 deletions
build/bundle.js
deleted
100644 → 0
| 1 | -'use strict'; | ||
| 2 | - | ||
| 3 | -Object.defineProperty(exports, '__esModule', { value: true }); | ||
| 4 | - | ||
| 5 | -var events = require('events'); | ||
| 6 | - | ||
| 7 | -function __extends(d, b) { | ||
| 8 | - for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; | ||
| 9 | - function __() { this.constructor = d; } | ||
| 10 | - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| 11 | -} | ||
| 12 | - | ||
| 13 | -var Util = (function () { | ||
| 14 | - function Util() { | ||
| 15 | - } | ||
| 16 | - Util.getISODate = function () { | ||
| 17 | - return (new Date()).toISOString().slice(0, 10); | ||
| 18 | - }; | ||
| 19 | - Util.getDateInMinutes = function () { | ||
| 20 | - var now = new Date(); | ||
| 21 | - return (now.getHours() * 60) + now.getMinutes(); | ||
| 22 | - }; | ||
| 23 | - /** | ||
| 24 | - * convert a time input to minutes | ||
| 25 | - * e.g. 23:59 = 1439 | ||
| 26 | - */ | ||
| 27 | - Util.convertToMinutes = function (time) { | ||
| 28 | - var times = time.split(":"); | ||
| 29 | - var convered = (parseInt(times[0]) * 60) + parseInt(times[1]); | ||
| 30 | - return (convered >= 0 && convered <= 1439) ? convered : 0; | ||
| 31 | - }; | ||
| 32 | - Util.calculateNextMinute = function () { | ||
| 33 | - return (60 - (Math.round((new Date()).getTime() / 1000) % 60)) * 1000; | ||
| 34 | - }; | ||
| 35 | - return Util; | ||
| 36 | -}()); | ||
| 37 | - | ||
| 38 | -var STATE_START = "start"; | ||
| 39 | -var STATE_STOP = "stop"; | ||
| 40 | -var Player = (function (_super) { | ||
| 41 | - __extends(Player, _super); | ||
| 42 | - function Player() { | ||
| 43 | - _super.call(this); | ||
| 44 | - this._minutesReplication = 3; | ||
| 45 | - this._replicationRetry = 10000; | ||
| 46 | - this._currentProgramItemId = ''; | ||
| 47 | - this._currentReplicationCounter = 0; | ||
| 48 | - this._state = STATE_STOP; | ||
| 49 | - } | ||
| 50 | - Object.defineProperty(Player.prototype, "state", { | ||
| 51 | - set: function (st) { | ||
| 52 | - this._state = st; | ||
| 53 | - }, | ||
| 54 | - enumerable: true, | ||
| 55 | - configurable: true | ||
| 56 | - }); | ||
| 57 | - Object.defineProperty(Player.prototype, "programManager", { | ||
| 58 | - get: function () { | ||
| 59 | - return this._programManager; | ||
| 60 | - }, | ||
| 61 | - set: function (pm) { | ||
| 62 | - this._programManager = pm; | ||
| 63 | - }, | ||
| 64 | - enumerable: true, | ||
| 65 | - configurable: true | ||
| 66 | - }); | ||
| 67 | - Object.defineProperty(Player.prototype, "programRepository", { | ||
| 68 | - get: function () { | ||
| 69 | - return this._programRepository; | ||
| 70 | - }, | ||
| 71 | - set: function (pr) { | ||
| 72 | - this._programRepository = pr; | ||
| 73 | - }, | ||
| 74 | - enumerable: true, | ||
| 75 | - configurable: true | ||
| 76 | - }); | ||
| 77 | - Object.defineProperty(Player.prototype, "minutesReplication", { | ||
| 78 | - get: function () { | ||
| 79 | - return this._minutesReplication; | ||
| 80 | - }, | ||
| 81 | - set: function (mr) { | ||
| 82 | - this._minutesReplication = mr; | ||
| 83 | - }, | ||
| 84 | - enumerable: true, | ||
| 85 | - configurable: true | ||
| 86 | - }); | ||
| 87 | - Object.defineProperty(Player.prototype, "replicationRetry", { | ||
| 88 | - get: function () { | ||
| 89 | - return this._replicationRetry; | ||
| 90 | - }, | ||
| 91 | - set: function (rr) { | ||
| 92 | - this._replicationRetry = rr; | ||
| 93 | - }, | ||
| 94 | - enumerable: true, | ||
| 95 | - configurable: true | ||
| 96 | - }); | ||
| 97 | - Player.prototype.triggerReplication = function () { | ||
| 98 | - var _this = this; | ||
| 99 | - console.info("digsig-player-service: trigger replication"); | ||
| 100 | - return this.programRepository.replicate() | ||
| 101 | - .then(function (changes) { | ||
| 102 | - _this._currentReplicationCounter = 0; | ||
| 103 | - _this.trigger(function () { _this.triggerProgramItemId(changes); }); | ||
| 104 | - }) | ||
| 105 | - .catch(function (error) { | ||
| 106 | - _this.trigger(function () { _this.triggerReplication(); }, _this.replicationRetry); | ||
| 107 | - _this.emit('error', error); | ||
| 108 | - }); | ||
| 109 | - }; | ||
| 110 | - Player.prototype.triggerProgramItemId = function (changes) { | ||
| 111 | - var _this = this; | ||
| 112 | - if (changes === void 0) { changes = false; } | ||
| 113 | - console.info("digsig-player-service: trigger program item id"); | ||
| 114 | - this.programManager.getCurrentProgramItemId() | ||
| 115 | - .then(function (programItemId) { | ||
| 116 | - _this._currentReplicationCounter++; | ||
| 117 | - // if there is a new program item id trigger play | ||
| 118 | - // else (1) calculate next potential program change point | ||
| 119 | - // or (2) trigger replication | ||
| 120 | - if (programItemId && (programItemId != _this._currentProgramItemId || changes)) { | ||
| 121 | - _this._currentProgramItemId = programItemId; | ||
| 122 | - _this.emit('play', programItemId); | ||
| 123 | - } | ||
| 124 | - if (_this._currentReplicationCounter >= _this._minutesReplication) { | ||
| 125 | - _this.triggerReplication(); | ||
| 126 | - } | ||
| 127 | - else { | ||
| 128 | - _this.trigger(function () { _this.triggerProgramItemId(); }, Util.calculateNextMinute()); | ||
| 129 | - } | ||
| 130 | - }); | ||
| 131 | - }; | ||
| 132 | - Player.prototype.trigger = function (func, milliseconds) { | ||
| 133 | - if (milliseconds === void 0) { milliseconds = 0; } | ||
| 134 | - if (this._state === STATE_START) { | ||
| 135 | - setTimeout(function () { func(); }, milliseconds); | ||
| 136 | - } | ||
| 137 | - }; | ||
| 138 | - Player.prototype.start = function () { | ||
| 139 | - if (this._state === STATE_STOP) { | ||
| 140 | - this.triggerReplication(); | ||
| 141 | - this._state = STATE_START; | ||
| 142 | - } | ||
| 143 | - }; | ||
| 144 | - Player.prototype.stop = function () { | ||
| 145 | - this._state = STATE_STOP; | ||
| 146 | - }; | ||
| 147 | - return Player; | ||
| 148 | -}(events.EventEmitter)); | ||
| 149 | - | ||
| 150 | -var ProgramManager = (function () { | ||
| 151 | - function ProgramManager() { | ||
| 152 | - } | ||
| 153 | - Object.defineProperty(ProgramManager.prototype, "programRepository", { | ||
| 154 | - get: function () { | ||
| 155 | - return this._programRepository; | ||
| 156 | - }, | ||
| 157 | - set: function (pr) { | ||
| 158 | - this._programRepository = pr; | ||
| 159 | - }, | ||
| 160 | - enumerable: true, | ||
| 161 | - configurable: true | ||
| 162 | - }); | ||
| 163 | - ProgramManager.prototype.getCurrentProgramItemId = function () { | ||
| 164 | - var _this = this; | ||
| 165 | - return new Promise(function (resolve, reject) { | ||
| 166 | - _this.findCurrentProgramSegment().then(function (programSegment) { | ||
| 167 | - var currentProgramItemId = programSegment.default; | ||
| 168 | - if (programSegment.schedule) { | ||
| 169 | - currentProgramItemId = _this.findCurrentProgramItem(programSegment.schedule, Util.getDateInMinutes()); | ||
| 170 | - } | ||
| 171 | - resolve(currentProgramItemId); | ||
| 172 | - }); | ||
| 173 | - }); | ||
| 174 | - }; | ||
| 175 | - /** | ||
| 176 | - * find program item in schedule, which fits | ||
| 177 | - * according to current hh:mm | ||
| 178 | - */ | ||
| 179 | - ProgramManager.prototype.findCurrentProgramItem = function (schedule, dateInMinutes) { | ||
| 180 | - var timeList = []; | ||
| 181 | - var tmpSchedule = {}; | ||
| 182 | - dateInMinutes--; // make it not so strict, which will start one minute earlier | ||
| 183 | - for (var startTime in schedule) { | ||
| 184 | - if (schedule.hasOwnProperty(startTime)) { | ||
| 185 | - var minutes = Util.convertToMinutes(startTime); | ||
| 186 | - timeList.push(minutes); | ||
| 187 | - tmpSchedule[minutes] = schedule[startTime]; | ||
| 188 | - } | ||
| 189 | - } | ||
| 190 | - // sort ascending (-) | ||
| 191 | - timeList.sort(function (a, b) { return a - b; }); | ||
| 192 | - var last = 0; | ||
| 193 | - for (var i = 0; i < timeList.length; i++) { | ||
| 194 | - if (timeList[i] <= dateInMinutes) { | ||
| 195 | - last = timeList[i]; | ||
| 196 | - } | ||
| 197 | - else { | ||
| 198 | - break; | ||
| 199 | - } | ||
| 200 | - } | ||
| 201 | - return tmpSchedule[last]; | ||
| 202 | - }; | ||
| 203 | - /** | ||
| 204 | - * Find the program segment | ||
| 205 | - * This is dependent on the date set on the device | ||
| 206 | - */ | ||
| 207 | - ProgramManager.prototype.findCurrentProgramSegment = function () { | ||
| 208 | - var _this = this; | ||
| 209 | - return new Promise(function (resolve, reject) { | ||
| 210 | - var today = Util.getISODate(); | ||
| 211 | - _this.programRepository.findByType('program') | ||
| 212 | - .then(function (programs) { | ||
| 213 | - if (programs.length > 0) { | ||
| 214 | - var program = programs[0]; | ||
| 215 | - var programSegmentId = void 0; | ||
| 216 | - // if there is a program_segment for today else default | ||
| 217 | - if (program.schedule && program.schedule[today]) { | ||
| 218 | - programSegmentId = program.schedule[today]; | ||
| 219 | - } | ||
| 220 | - else { | ||
| 221 | - programSegmentId = program.default; | ||
| 222 | - } | ||
| 223 | - _this.programRepository | ||
| 224 | - .findById(programSegmentId) | ||
| 225 | - .then(function (programSegment) { | ||
| 226 | - resolve(programSegment); | ||
| 227 | - }).catch(function (error) { | ||
| 228 | - reject("program segment not found"); | ||
| 229 | - }); | ||
| 230 | - } | ||
| 231 | - else { | ||
| 232 | - reject('No Program found'); | ||
| 233 | - } | ||
| 234 | - }).catch(function (error) { | ||
| 235 | - reject(error); | ||
| 236 | - }); | ||
| 237 | - }); | ||
| 238 | - }; | ||
| 239 | - return ProgramManager; | ||
| 240 | -}()); | ||
| 241 | - | ||
| 242 | -var PROGRAM_ITEM_TYPE_SLIDESHOW = "slideshow"; | ||
| 243 | -var PROGRAM_ITEM_TYPE_VIDEO = "video"; | ||
| 244 | -var ProgramItem = (function () { | ||
| 245 | - function ProgramItem() { | ||
| 246 | - this._type = ""; | ||
| 247 | - this._data = {}; | ||
| 248 | - } | ||
| 249 | - Object.defineProperty(ProgramItem.prototype, "type", { | ||
| 250 | - get: function () { | ||
| 251 | - return this._type; | ||
| 252 | - }, | ||
| 253 | - set: function (t) { | ||
| 254 | - this._type = t; | ||
| 255 | - }, | ||
| 256 | - enumerable: true, | ||
| 257 | - configurable: true | ||
| 258 | - }); | ||
| 259 | - Object.defineProperty(ProgramItem.prototype, "data", { | ||
| 260 | - get: function () { | ||
| 261 | - return this._data; | ||
| 262 | - }, | ||
| 263 | - set: function (d) { | ||
| 264 | - this._data = d; | ||
| 265 | - }, | ||
| 266 | - enumerable: true, | ||
| 267 | - configurable: true | ||
| 268 | - }); | ||
| 269 | - return ProgramItem; | ||
| 270 | -}()); | ||
| 271 | - | ||
| 272 | -var ProgramItemFactory = (function () { | ||
| 273 | - function ProgramItemFactory() { | ||
| 274 | - } | ||
| 275 | - Object.defineProperty(ProgramItemFactory.prototype, "basePath", { | ||
| 276 | - get: function () { | ||
| 277 | - return this._basePath; | ||
| 278 | - }, | ||
| 279 | - set: function (bp) { | ||
| 280 | - this._basePath = bp; | ||
| 281 | - }, | ||
| 282 | - enumerable: true, | ||
| 283 | - configurable: true | ||
| 284 | - }); | ||
| 285 | - Object.defineProperty(ProgramItemFactory.prototype, "programRepository", { | ||
| 286 | - get: function () { | ||
| 287 | - return this._programRepository; | ||
| 288 | - }, | ||
| 289 | - set: function (pr) { | ||
| 290 | - this._programRepository = pr; | ||
| 291 | - }, | ||
| 292 | - enumerable: true, | ||
| 293 | - configurable: true | ||
| 294 | - }); | ||
| 295 | - ProgramItemFactory.prototype.getProgramItem = function (programItemId) { | ||
| 296 | - var _this = this; | ||
| 297 | - return this.programRepository | ||
| 298 | - .findById(programItemId) | ||
| 299 | - .then(function (programItem) { | ||
| 300 | - return _this.prepareProgramItem(programItem.program_item_type, programItem); | ||
| 301 | - }); | ||
| 302 | - }; | ||
| 303 | - ProgramItemFactory.prototype.prepareProgramItem = function (type, data) { | ||
| 304 | - var programItem = new ProgramItem(); | ||
| 305 | - programItem.type = type; | ||
| 306 | - if (data.infoboxes) { | ||
| 307 | - programItem.data.infoboxes = data.infoboxes; | ||
| 308 | - } | ||
| 309 | - if (type === PROGRAM_ITEM_TYPE_VIDEO) { | ||
| 310 | - return this.prepareVideoItem(programItem, data); | ||
| 311 | - } | ||
| 312 | - else if (type === PROGRAM_ITEM_TYPE_SLIDESHOW) { | ||
| 313 | - return this.prepareSlideshowItem(programItem, data); | ||
| 314 | - } | ||
| 315 | - else { | ||
| 316 | - return null; | ||
| 317 | - } | ||
| 318 | - }; | ||
| 319 | - ProgramItemFactory.prototype.prepareSlideshowItem = function (programItem, data) { | ||
| 320 | - var _this = this; | ||
| 321 | - return this._programRepository.findByIds(data.images) | ||
| 322 | - .then(function (images) { | ||
| 323 | - programItem.data.speed = data.settings.speed; | ||
| 324 | - programItem.data.effect = data.settings.effect; | ||
| 325 | - programItem.data.images = []; | ||
| 326 | - if (images && images.length > 0) { | ||
| 327 | - for (var _i = 0, images_1 = images; _i < images_1.length; _i++) { | ||
| 328 | - var image = images_1[_i]; | ||
| 329 | - if (image && image.filename) { | ||
| 330 | - programItem.data.images.push(_this.basePath + image.filename); | ||
| 331 | - } | ||
| 332 | - } | ||
| 333 | - } | ||
| 334 | - return programItem; | ||
| 335 | - }); | ||
| 336 | - }; | ||
| 337 | - ProgramItemFactory.prototype.prepareVideoItem = function (programItem, data) { | ||
| 338 | - var _this = this; | ||
| 339 | - return this._programRepository.findById(data.video) | ||
| 340 | - .then(function (data) { | ||
| 341 | - programItem.data.video = _this.basePath + data['filename']; | ||
| 342 | - return programItem; | ||
| 343 | - }); | ||
| 344 | - }; | ||
| 345 | - return ProgramItemFactory; | ||
| 346 | -}()); | ||
| 347 | - | ||
| 348 | -exports.Player = Player; | ||
| 349 | -exports.ProgramManager = ProgramManager; | ||
| 350 | -exports.PROGRAM_ITEM_TYPE_SLIDESHOW = PROGRAM_ITEM_TYPE_SLIDESHOW; | ||
| 351 | -exports.PROGRAM_ITEM_TYPE_VIDEO = PROGRAM_ITEM_TYPE_VIDEO; | ||
| 352 | -exports.ProgramItem = ProgramItem; | ||
| 353 | -exports.ProgramItemFactory = ProgramItemFactory; | ||
| 354 | -//# sourceMappingURL=bundle.js.map |
build/bundle.js.map
deleted
100644 → 0
| 1 | -{"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.speed = data.settings.speed;\n programItem.data.effect = data.settings.effect;\n programItem.data.images = [];\n\n if (images && images.length > 0) {\n for (let image of images) {\n if (image && image.filename) {\n programItem.data.images.push(this.basePath + image.filename);\n }\n }\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.video = this.basePath + data['filename']; \n return programItem;\n });\n }\n\n}"],"names":["EventEmitter"],"mappings":"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"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/index.d.ts
0 → 100644
dist/index.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +function __export(m) { | ||
| 3 | + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; | ||
| 4 | +} | ||
| 5 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 6 | +__export(require("./player")); | ||
| 7 | +__export(require("./program-manager")); | ||
| 8 | +__export(require("./program-item/program-item")); | ||
| 9 | +__export(require("./program-item/program-item-factory")); | ||
| 10 | +//# sourceMappingURL=index.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/index.js.map
0 → 100644
| 1 | +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,8BAAyB;AACzB,uCAAkC;AAClC,iDAA4C;AAC5C,yDAAoD"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/player.d.ts
0 → 100644
| 1 | +/// <reference types="node" /> | ||
| 2 | +import { EventEmitter } from 'events'; | ||
| 3 | +import { ProgramRepository } from './program-repository'; | ||
| 4 | +import { ProgramManager } from './program-manager'; | ||
| 5 | +export declare class Player extends EventEmitter { | ||
| 6 | + constructor(); | ||
| 7 | + protected _programRepository: ProgramRepository; | ||
| 8 | + protected _programManager: ProgramManager; | ||
| 9 | + protected _minutesReplication: number; | ||
| 10 | + protected _replicationRetry: number; | ||
| 11 | + protected _currentProgramItemId: string; | ||
| 12 | + protected _currentReplicationCounter: number; | ||
| 13 | + protected _state: string; | ||
| 14 | + state: string; | ||
| 15 | + programManager: ProgramManager; | ||
| 16 | + programRepository: ProgramRepository; | ||
| 17 | + minutesReplication: number; | ||
| 18 | + replicationRetry: number; | ||
| 19 | + triggerReplication(): Promise<void>; | ||
| 20 | + triggerProgramItemId(changes?: boolean): void; | ||
| 21 | + trigger(func: Function, milliseconds?: number): void; | ||
| 22 | + start(): void; | ||
| 23 | + stop(): void; | ||
| 24 | +} |
dist/player.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +var __extends = (this && this.__extends) || (function () { | ||
| 3 | + var extendStatics = Object.setPrototypeOf || | ||
| 4 | + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || | ||
| 5 | + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; | ||
| 6 | + return function (d, b) { | ||
| 7 | + extendStatics(d, b); | ||
| 8 | + function __() { this.constructor = d; } | ||
| 9 | + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); | ||
| 10 | + }; | ||
| 11 | +})(); | ||
| 12 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 13 | +var events_1 = require("events"); | ||
| 14 | +var util_1 = require("./util"); | ||
| 15 | +var STATE_START = "start"; | ||
| 16 | +var STATE_STOP = "stop"; | ||
| 17 | +var Player = (function (_super) { | ||
| 18 | + __extends(Player, _super); | ||
| 19 | + function Player() { | ||
| 20 | + var _this = _super.call(this) || this; | ||
| 21 | + _this._minutesReplication = 3; | ||
| 22 | + _this._replicationRetry = 10000; | ||
| 23 | + _this._currentProgramItemId = ''; | ||
| 24 | + _this._currentReplicationCounter = 0; | ||
| 25 | + _this._state = STATE_STOP; | ||
| 26 | + return _this; | ||
| 27 | + } | ||
| 28 | + Object.defineProperty(Player.prototype, "state", { | ||
| 29 | + set: function (st) { | ||
| 30 | + this._state = st; | ||
| 31 | + }, | ||
| 32 | + enumerable: true, | ||
| 33 | + configurable: true | ||
| 34 | + }); | ||
| 35 | + Object.defineProperty(Player.prototype, "programManager", { | ||
| 36 | + get: function () { | ||
| 37 | + return this._programManager; | ||
| 38 | + }, | ||
| 39 | + set: function (pm) { | ||
| 40 | + this._programManager = pm; | ||
| 41 | + }, | ||
| 42 | + enumerable: true, | ||
| 43 | + configurable: true | ||
| 44 | + }); | ||
| 45 | + Object.defineProperty(Player.prototype, "programRepository", { | ||
| 46 | + get: function () { | ||
| 47 | + return this._programRepository; | ||
| 48 | + }, | ||
| 49 | + set: function (pr) { | ||
| 50 | + this._programRepository = pr; | ||
| 51 | + }, | ||
| 52 | + enumerable: true, | ||
| 53 | + configurable: true | ||
| 54 | + }); | ||
| 55 | + Object.defineProperty(Player.prototype, "minutesReplication", { | ||
| 56 | + get: function () { | ||
| 57 | + return this._minutesReplication; | ||
| 58 | + }, | ||
| 59 | + set: function (mr) { | ||
| 60 | + this._minutesReplication = mr; | ||
| 61 | + }, | ||
| 62 | + enumerable: true, | ||
| 63 | + configurable: true | ||
| 64 | + }); | ||
| 65 | + Object.defineProperty(Player.prototype, "replicationRetry", { | ||
| 66 | + get: function () { | ||
| 67 | + return this._replicationRetry; | ||
| 68 | + }, | ||
| 69 | + set: function (rr) { | ||
| 70 | + this._replicationRetry = rr; | ||
| 71 | + }, | ||
| 72 | + enumerable: true, | ||
| 73 | + configurable: true | ||
| 74 | + }); | ||
| 75 | + Player.prototype.triggerReplication = function () { | ||
| 76 | + var _this = this; | ||
| 77 | + console.info("digsig-player-service: trigger replication"); | ||
| 78 | + return this.programRepository.replicate() | ||
| 79 | + .then(function (changes) { | ||
| 80 | + _this._currentReplicationCounter = 0; | ||
| 81 | + _this.trigger(function () { _this.triggerProgramItemId(changes); }); | ||
| 82 | + }) | ||
| 83 | + .catch(function (error) { | ||
| 84 | + _this.trigger(function () { _this.triggerReplication(); }, _this.replicationRetry); | ||
| 85 | + _this.emit('error', error); | ||
| 86 | + }); | ||
| 87 | + }; | ||
| 88 | + Player.prototype.triggerProgramItemId = function (changes) { | ||
| 89 | + var _this = this; | ||
| 90 | + if (changes === void 0) { changes = false; } | ||
| 91 | + console.info("digsig-player-service: trigger program item id"); | ||
| 92 | + this.programManager.getCurrentProgramItemId() | ||
| 93 | + .then(function (programItemId) { | ||
| 94 | + _this._currentReplicationCounter++; | ||
| 95 | + // if there is a new program item id trigger play | ||
| 96 | + // else (1) calculate next potential program change point | ||
| 97 | + // or (2) trigger replication | ||
| 98 | + if (programItemId && (programItemId != _this._currentProgramItemId || changes)) { | ||
| 99 | + _this._currentProgramItemId = programItemId; | ||
| 100 | + _this.emit('play', programItemId); | ||
| 101 | + } | ||
| 102 | + if (_this._currentReplicationCounter >= _this._minutesReplication) { | ||
| 103 | + _this.triggerReplication(); | ||
| 104 | + } | ||
| 105 | + else { | ||
| 106 | + _this.trigger(function () { _this.triggerProgramItemId(); }, util_1.Util.calculateNextMinute()); | ||
| 107 | + } | ||
| 108 | + }); | ||
| 109 | + }; | ||
| 110 | + Player.prototype.trigger = function (func, milliseconds) { | ||
| 111 | + if (milliseconds === void 0) { milliseconds = 0; } | ||
| 112 | + if (this._state === STATE_START) { | ||
| 113 | + setTimeout(function () { func(); }, milliseconds); | ||
| 114 | + } | ||
| 115 | + }; | ||
| 116 | + Player.prototype.start = function () { | ||
| 117 | + if (this._state === STATE_STOP) { | ||
| 118 | + this.triggerReplication(); | ||
| 119 | + this._state = STATE_START; | ||
| 120 | + } | ||
| 121 | + }; | ||
| 122 | + Player.prototype.stop = function () { | ||
| 123 | + this._state = STATE_STOP; | ||
| 124 | + }; | ||
| 125 | + return Player; | ||
| 126 | +}(events_1.EventEmitter)); | ||
| 127 | +exports.Player = Player; | ||
| 128 | +//# sourceMappingURL=player.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/player.js.map
0 → 100644
| 1 | +{"version":3,"file":"player.js","sourceRoot":"","sources":["../src/player.ts"],"names":[],"mappings":"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"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-item/program-item-factory.d.ts
0 → 100644
| 1 | +import { ProgramItem } from './program-item'; | ||
| 2 | +import { ProgramRepository } from './../program-repository'; | ||
| 3 | +export declare class ProgramItemFactory { | ||
| 4 | + protected _programRepository: ProgramRepository; | ||
| 5 | + protected _basePath: string; | ||
| 6 | + basePath: string; | ||
| 7 | + programRepository: ProgramRepository; | ||
| 8 | + getProgramItem(programItemId: string): Promise<ProgramItem>; | ||
| 9 | + prepareProgramItem(type: string, data: any): Promise<ProgramItem>; | ||
| 10 | + prepareSlideshowItem(programItem: ProgramItem, data: any): Promise<ProgramItem>; | ||
| 11 | + prepareVideoItem(programItem: ProgramItem, data: any): Promise<ProgramItem>; | ||
| 12 | +} |
dist/program-item/program-item-factory.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 3 | +var program_item_1 = require("./program-item"); | ||
| 4 | +var ProgramItemFactory = (function () { | ||
| 5 | + function ProgramItemFactory() { | ||
| 6 | + } | ||
| 7 | + Object.defineProperty(ProgramItemFactory.prototype, "basePath", { | ||
| 8 | + get: function () { | ||
| 9 | + return this._basePath; | ||
| 10 | + }, | ||
| 11 | + set: function (bp) { | ||
| 12 | + this._basePath = bp; | ||
| 13 | + }, | ||
| 14 | + enumerable: true, | ||
| 15 | + configurable: true | ||
| 16 | + }); | ||
| 17 | + Object.defineProperty(ProgramItemFactory.prototype, "programRepository", { | ||
| 18 | + get: function () { | ||
| 19 | + return this._programRepository; | ||
| 20 | + }, | ||
| 21 | + set: function (pr) { | ||
| 22 | + this._programRepository = pr; | ||
| 23 | + }, | ||
| 24 | + enumerable: true, | ||
| 25 | + configurable: true | ||
| 26 | + }); | ||
| 27 | + ProgramItemFactory.prototype.getProgramItem = function (programItemId) { | ||
| 28 | + var _this = this; | ||
| 29 | + return this.programRepository | ||
| 30 | + .findById(programItemId) | ||
| 31 | + .then(function (programItem) { | ||
| 32 | + return _this.prepareProgramItem(programItem.program_item_type, programItem); | ||
| 33 | + }); | ||
| 34 | + }; | ||
| 35 | + ProgramItemFactory.prototype.prepareProgramItem = function (type, data) { | ||
| 36 | + var programItem = new program_item_1.ProgramItem(); | ||
| 37 | + programItem.type = type; | ||
| 38 | + if (data.infoboxes) { | ||
| 39 | + programItem.data.infoboxes = data.infoboxes; | ||
| 40 | + } | ||
| 41 | + if (type === program_item_1.PROGRAM_ITEM_TYPE_VIDEO) { | ||
| 42 | + return this.prepareVideoItem(programItem, data); | ||
| 43 | + } | ||
| 44 | + else if (type === program_item_1.PROGRAM_ITEM_TYPE_SLIDESHOW) { | ||
| 45 | + return this.prepareSlideshowItem(programItem, data); | ||
| 46 | + } | ||
| 47 | + else { | ||
| 48 | + return null; | ||
| 49 | + } | ||
| 50 | + }; | ||
| 51 | + ProgramItemFactory.prototype.prepareSlideshowItem = function (programItem, data) { | ||
| 52 | + var _this = this; | ||
| 53 | + return this._programRepository.findByIds(data.images) | ||
| 54 | + .then(function (images) { | ||
| 55 | + programItem.data.speed = data.settings.speed; | ||
| 56 | + programItem.data.effect = data.settings.effect; | ||
| 57 | + programItem.data.images = []; | ||
| 58 | + if (images && images.length > 0) { | ||
| 59 | + for (var _i = 0, images_1 = images; _i < images_1.length; _i++) { | ||
| 60 | + var image = images_1[_i]; | ||
| 61 | + if (image && image.filename) { | ||
| 62 | + programItem.data.images.push(_this.basePath + image.filename); | ||
| 63 | + } | ||
| 64 | + } | ||
| 65 | + } | ||
| 66 | + return programItem; | ||
| 67 | + }); | ||
| 68 | + }; | ||
| 69 | + ProgramItemFactory.prototype.prepareVideoItem = function (programItem, data) { | ||
| 70 | + var _this = this; | ||
| 71 | + return this._programRepository.findById(data.video) | ||
| 72 | + .then(function (data) { | ||
| 73 | + programItem.data.video = _this.basePath + data['filename']; | ||
| 74 | + return programItem; | ||
| 75 | + }); | ||
| 76 | + }; | ||
| 77 | + return ProgramItemFactory; | ||
| 78 | +}()); | ||
| 79 | +exports.ProgramItemFactory = ProgramItemFactory; | ||
| 80 | +//# sourceMappingURL=program-item-factory.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 1 | +{"version":3,"file":"program-item-factory.js","sourceRoot":"","sources":["../../src/program-item/program-item-factory.ts"],"names":[],"mappings":"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"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-item/program-item.d.ts
0 → 100644
dist/program-item/program-item.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 3 | +exports.PROGRAM_ITEM_TYPE_SLIDESHOW = "slideshow"; | ||
| 4 | +exports.PROGRAM_ITEM_TYPE_VIDEO = "video"; | ||
| 5 | +var ProgramItem = (function () { | ||
| 6 | + function ProgramItem() { | ||
| 7 | + this._type = ""; | ||
| 8 | + this._data = {}; | ||
| 9 | + } | ||
| 10 | + Object.defineProperty(ProgramItem.prototype, "type", { | ||
| 11 | + get: function () { | ||
| 12 | + return this._type; | ||
| 13 | + }, | ||
| 14 | + set: function (t) { | ||
| 15 | + this._type = t; | ||
| 16 | + }, | ||
| 17 | + enumerable: true, | ||
| 18 | + configurable: true | ||
| 19 | + }); | ||
| 20 | + Object.defineProperty(ProgramItem.prototype, "data", { | ||
| 21 | + get: function () { | ||
| 22 | + return this._data; | ||
| 23 | + }, | ||
| 24 | + set: function (d) { | ||
| 25 | + this._data = d; | ||
| 26 | + }, | ||
| 27 | + enumerable: true, | ||
| 28 | + configurable: true | ||
| 29 | + }); | ||
| 30 | + return ProgramItem; | ||
| 31 | +}()); | ||
| 32 | +exports.ProgramItem = ProgramItem; | ||
| 33 | +//# sourceMappingURL=program-item.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-item/program-item.js.map
0 → 100644
| 1 | +{"version":3,"file":"program-item.js","sourceRoot":"","sources":["../../src/program-item/program-item.ts"],"names":[],"mappings":";;AAAa,QAAA,2BAA2B,GAAG,WAAW,CAAC;AAC1C,QAAA,uBAAuB,GAAG,OAAO,CAAC;AAE/C;IAAA;QAEc,UAAK,GAAU,EAAE,CAAC;QAClB,UAAK,GAAO,EAAE,CAAC;IAkB7B,CAAC;IAhBG,sBAAI,6BAAI;aAIR;YACI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;aAND,UAAS,CAAQ;YACb,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACnB,CAAC;;;OAAA;IAMD,sBAAI,6BAAI;aAIR;YACI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;QACtB,CAAC;aAND,UAAS,CAAK;YACV,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;QACnB,CAAC;;;OAAA;IAML,kBAAC;AAAD,CAAC,AArBD,IAqBC;AArBY,kCAAW"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-manager.d.ts
0 → 100644
| 1 | +import { ProgramRepository } from './program-repository'; | ||
| 2 | +export declare class ProgramManager { | ||
| 3 | + protected _programRepository: ProgramRepository; | ||
| 4 | + programRepository: ProgramRepository; | ||
| 5 | + getCurrentProgramItemId(): Promise<string>; | ||
| 6 | + /** | ||
| 7 | + * find program item in schedule, which fits | ||
| 8 | + * according to current hh:mm | ||
| 9 | + */ | ||
| 10 | + findCurrentProgramItem(schedule: any, dateInMinutes: number): string; | ||
| 11 | + /** | ||
| 12 | + * Find the program segment | ||
| 13 | + * This is dependent on the date set on the device | ||
| 14 | + */ | ||
| 15 | + findCurrentProgramSegment(): Promise<any>; | ||
| 16 | +} |
dist/program-manager.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 3 | +var util_1 = require("./util"); | ||
| 4 | +var ProgramManager = (function () { | ||
| 5 | + function ProgramManager() { | ||
| 6 | + } | ||
| 7 | + Object.defineProperty(ProgramManager.prototype, "programRepository", { | ||
| 8 | + get: function () { | ||
| 9 | + return this._programRepository; | ||
| 10 | + }, | ||
| 11 | + set: function (pr) { | ||
| 12 | + this._programRepository = pr; | ||
| 13 | + }, | ||
| 14 | + enumerable: true, | ||
| 15 | + configurable: true | ||
| 16 | + }); | ||
| 17 | + ProgramManager.prototype.getCurrentProgramItemId = function () { | ||
| 18 | + var _this = this; | ||
| 19 | + return new Promise(function (resolve, reject) { | ||
| 20 | + _this.findCurrentProgramSegment().then(function (programSegment) { | ||
| 21 | + var currentProgramItemId = programSegment.default; | ||
| 22 | + if (programSegment.schedule) { | ||
| 23 | + currentProgramItemId = _this.findCurrentProgramItem(programSegment.schedule, util_1.Util.getDateInMinutes()); | ||
| 24 | + } | ||
| 25 | + resolve(currentProgramItemId); | ||
| 26 | + }); | ||
| 27 | + }); | ||
| 28 | + }; | ||
| 29 | + /** | ||
| 30 | + * find program item in schedule, which fits | ||
| 31 | + * according to current hh:mm | ||
| 32 | + */ | ||
| 33 | + ProgramManager.prototype.findCurrentProgramItem = function (schedule, dateInMinutes) { | ||
| 34 | + var timeList = []; | ||
| 35 | + var tmpSchedule = {}; | ||
| 36 | + dateInMinutes--; // make it not so strict, which will start one minute earlier | ||
| 37 | + for (var startTime in schedule) { | ||
| 38 | + if (schedule.hasOwnProperty(startTime)) { | ||
| 39 | + var minutes = util_1.Util.convertToMinutes(startTime); | ||
| 40 | + timeList.push(minutes); | ||
| 41 | + tmpSchedule[minutes] = schedule[startTime]; | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | + // sort ascending (-) | ||
| 45 | + timeList.sort(function (a, b) { return a - b; }); | ||
| 46 | + var last = 0; | ||
| 47 | + for (var i = 0; i < timeList.length; i++) { | ||
| 48 | + if (timeList[i] <= dateInMinutes) { | ||
| 49 | + last = timeList[i]; | ||
| 50 | + } | ||
| 51 | + else { | ||
| 52 | + break; | ||
| 53 | + } | ||
| 54 | + } | ||
| 55 | + return tmpSchedule[last]; | ||
| 56 | + }; | ||
| 57 | + /** | ||
| 58 | + * Find the program segment | ||
| 59 | + * This is dependent on the date set on the device | ||
| 60 | + */ | ||
| 61 | + ProgramManager.prototype.findCurrentProgramSegment = function () { | ||
| 62 | + var _this = this; | ||
| 63 | + return new Promise(function (resolve, reject) { | ||
| 64 | + var today = util_1.Util.getISODate(); | ||
| 65 | + _this.programRepository.findByType('program') | ||
| 66 | + .then(function (programs) { | ||
| 67 | + if (programs.length > 0) { | ||
| 68 | + var program = programs[0]; | ||
| 69 | + var programSegmentId = void 0; | ||
| 70 | + // if there is a program_segment for today else default | ||
| 71 | + if (program.schedule && program.schedule[today]) { | ||
| 72 | + programSegmentId = program.schedule[today]; | ||
| 73 | + } | ||
| 74 | + else { | ||
| 75 | + programSegmentId = program.default; | ||
| 76 | + } | ||
| 77 | + _this.programRepository | ||
| 78 | + .findById(programSegmentId) | ||
| 79 | + .then(function (programSegment) { | ||
| 80 | + resolve(programSegment); | ||
| 81 | + }).catch(function (error) { | ||
| 82 | + reject("program segment not found"); | ||
| 83 | + }); | ||
| 84 | + } | ||
| 85 | + else { | ||
| 86 | + reject('No Program found'); | ||
| 87 | + } | ||
| 88 | + }).catch(function (error) { | ||
| 89 | + reject(error); | ||
| 90 | + }); | ||
| 91 | + }); | ||
| 92 | + }; | ||
| 93 | + return ProgramManager; | ||
| 94 | +}()); | ||
| 95 | +exports.ProgramManager = ProgramManager; | ||
| 96 | +//# sourceMappingURL=program-manager.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-manager.js.map
0 → 100644
| 1 | +{"version":3,"file":"program-manager.js","sourceRoot":"","sources":["../src/program-manager.ts"],"names":[],"mappings":"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"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/program-repository.d.ts
0 → 100644
| 1 | +export interface ProgramRepository { | ||
| 2 | + findById(id: string): Promise<any>; | ||
| 3 | + findByIds(ids: Array<string>): Promise<Array<any>>; | ||
| 4 | + findByType(type: string): Promise<Array<any>>; | ||
| 5 | + /** | ||
| 6 | + * returns true / false depending on if there where any changes to download | ||
| 7 | + */ | ||
| 8 | + replicate(): Promise<boolean>; | ||
| 9 | +} |
dist/program-repository.js
0 → 100644
dist/program-repository.js.map
0 → 100644
| 1 | +{"version":3,"file":"program-repository.js","sourceRoot":"","sources":["../src/program-repository.ts"],"names":[],"mappings":""} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/util.d.ts
0 → 100644
dist/util.js
0 → 100644
| 1 | +"use strict"; | ||
| 2 | +Object.defineProperty(exports, "__esModule", { value: true }); | ||
| 3 | +var Util = (function () { | ||
| 4 | + function Util() { | ||
| 5 | + } | ||
| 6 | + Util.getISODate = function () { | ||
| 7 | + return (new Date()).toISOString().slice(0, 10); | ||
| 8 | + }; | ||
| 9 | + Util.getDateInMinutes = function () { | ||
| 10 | + var now = new Date(); | ||
| 11 | + return (now.getHours() * 60) + now.getMinutes(); | ||
| 12 | + }; | ||
| 13 | + /** | ||
| 14 | + * convert a time input to minutes | ||
| 15 | + * e.g. 23:59 = 1439 | ||
| 16 | + */ | ||
| 17 | + Util.convertToMinutes = function (time) { | ||
| 18 | + var times = time.split(":"); | ||
| 19 | + var convered = (parseInt(times[0]) * 60) + parseInt(times[1]); | ||
| 20 | + return (convered >= 0 && convered <= 1439) ? convered : 0; | ||
| 21 | + }; | ||
| 22 | + Util.calculateNextMinute = function () { | ||
| 23 | + return (60 - (Math.round((new Date()).getTime() / 1000) % 60)) * 1000; | ||
| 24 | + }; | ||
| 25 | + return Util; | ||
| 26 | +}()); | ||
| 27 | +exports.Util = Util; | ||
| 28 | +//# sourceMappingURL=util.js.map | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
dist/util.js.map
0 → 100644
| 1 | +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;AAAA;IAAA;IAyBA,CAAC;IAvBU,eAAU,GAAjB;QACI,MAAM,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAC,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,qBAAgB,GAAvB;QACI,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,UAAU,EAAE,CAAC;IACpD,CAAC;IAED;;;OAGG;IACI,qBAAgB,GAAvB,UAAwB,IAAW;QAC/B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC9D,CAAC;IAEM,wBAAmB,GAA1B;QACI,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1E,CAAC;IAEL,WAAC;AAAD,CAAC,AAzBD,IAyBC;AAzBY,oBAAI"} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
index.d.ts
deleted
100644 → 0
| 1 | -interface ProgramRepository { | ||
| 2 | - findById(id:string) : Promise<any>; | ||
| 3 | - findByIds(ids:Array<string>) : Promise<Array<any>>; | ||
| 4 | - findByType(type:string) : Promise<Array<any>>; | ||
| 5 | - replicate() : Promise<boolean>; | ||
| 6 | -} | ||
| 7 | - | ||
| 8 | -interface Player { | ||
| 9 | - new() : Player; | ||
| 10 | - | ||
| 11 | - on(name:string, any); | ||
| 12 | - once(name:string, any); | ||
| 13 | - | ||
| 14 | - start() : void; | ||
| 15 | - stop() : void; | ||
| 16 | - | ||
| 17 | - programRepository: ProgramRepository; | ||
| 18 | - programManager: ProgramManager; | ||
| 19 | -} | ||
| 20 | - | ||
| 21 | -interface ProgramManager { | ||
| 22 | - new() : ProgramManager; | ||
| 23 | - | ||
| 24 | - programRepository: ProgramRepository; | ||
| 25 | -} | ||
| 26 | - | ||
| 27 | -interface ProgramItemFactory { | ||
| 28 | - new() : ProgramItemFactory; | ||
| 29 | - getProgramItem(programItemId:string) : Promise<any>; | ||
| 30 | - | ||
| 31 | - basePath: string; | ||
| 32 | - programRepository: ProgramRepository; | ||
| 33 | -} | ||
| 34 | - | ||
| 35 | -declare var digsigPlayer: { | ||
| 36 | - ProgramRepository: ProgramRepository, | ||
| 37 | - ProgramManager: ProgramManager, | ||
| 38 | - Player : Player, | ||
| 39 | - ProgramItemFactory: ProgramItemFactory | ||
| 40 | -}; | ||
| 41 | - | ||
| 42 | -declare module "digsig-player-service" { | ||
| 43 | - export = digsigPlayer; | ||
| 44 | -} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| ... | @@ -2,26 +2,22 @@ | ... | @@ -2,26 +2,22 @@ |
| 2 | "name": "digsig-player-service", | 2 | "name": "digsig-player-service", |
| 3 | "version": "1.0.0", | 3 | "version": "1.0.0", |
| 4 | "description": "", | 4 | "description": "", |
| 5 | - "main": "build/bundle.js", | 5 | + "main": "dist/index.js", |
| 6 | - "types": "index.d.ts", | 6 | + "module": "dist/index.js", |
| 7 | + "typings": "dist/index.d.ts", | ||
| 7 | "scripts": { | 8 | "scripts": { |
| 8 | - "pretest": "tsc --target es5 --outDir .tmp spec/index.ts", | 9 | + "pretest": "tsc --noImplicitAny false -p ./spec", |
| 9 | "test": "jasmine .tmp/spec/index.js", | 10 | "test": "jasmine .tmp/spec/index.js", |
| 10 | - "posttest": "rm -rf .tmp", | 11 | + "posttest": "npm run clean", |
| 11 | - "build:tsc": "rollup -c rollup.config.js" | 12 | + "build": "npm run clean && tsc", |
| 13 | + "clean": "rm -rf .tmp && rm -rf dist" | ||
| 12 | }, | 14 | }, |
| 13 | "author": "Stefan Huber <stefan.huber@beyondit.at>", | 15 | "author": "Stefan Huber <stefan.huber@beyondit.at>", |
| 14 | "license": "ISC", | 16 | "license": "ISC", |
| 15 | "devDependencies": { | 17 | "devDependencies": { |
| 16 | - "@types/es6-promise": "0.0.32", | 18 | + "@types/jasmine": "^2.5.47", |
| 17 | - "@types/jasmine": "^2.5.41", | 19 | + "@types/node": "^7.0.22", |
| 18 | - "@types/node": "^7.0.0", | 20 | + "jasmine": "^2.6.0", |
| 19 | - "jasmine": "^2.5.3", | 21 | + "typescript": "^2.3.3" |
| 20 | - "rollup": "^0.41.4", | ||
| 21 | - "rollup-plugin-commonjs": "^7.0.0", | ||
| 22 | - "rollup-plugin-node-builtins": "^2.0.0", | ||
| 23 | - "rollup-plugin-node-globals": "^1.1.0", | ||
| 24 | - "rollup-plugin-typescript": "^0.8.1", | ||
| 25 | - "typescript": "^2.1.5" | ||
| 26 | } | 22 | } |
| 27 | } | 23 | } | ... | ... |
rollup.config.js
deleted
100644 → 0
| 1 | -var typescript = require('rollup-plugin-typescript'); | ||
| 2 | -var builtins = require('rollup-plugin-node-builtins'); | ||
| 3 | -var globals = require('rollup-plugin-node-globals'); | ||
| 4 | - | ||
| 5 | -var rollupConfig = { | ||
| 6 | - | ||
| 7 | - moduleName : 'digsig', | ||
| 8 | - | ||
| 9 | - entry: 'src/index.ts', | ||
| 10 | - | ||
| 11 | - sourceMap: true, | ||
| 12 | - | ||
| 13 | - format: 'cjs', | ||
| 14 | - | ||
| 15 | - dest: 'build/bundle.js', | ||
| 16 | - | ||
| 17 | - plugins: [ | ||
| 18 | - // builtins(), | ||
| 19 | - // globals(), | ||
| 20 | - typescript() | ||
| 21 | - ] | ||
| 22 | - | ||
| 23 | -}; | ||
| 24 | - | ||
| 25 | -module.exports = rollupConfig; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
spec/tsconfig.json
0 → 100644
| 1 | +{ | ||
| 2 | + "compilerOptions": { | ||
| 3 | + "target": "es5", | ||
| 4 | + "module": "commonjs", | ||
| 5 | + "moduleResolution": "node", | ||
| 6 | + "sourceMap": false, | ||
| 7 | + "emitDecoratorMetadata": true, | ||
| 8 | + "experimentalDecorators": true, | ||
| 9 | + "lib": [ "es2015", "dom" ], | ||
| 10 | + "noImplicitAny": true, | ||
| 11 | + "suppressImplicitAnyIndexErrors": true, | ||
| 12 | + "outDir": "../.tmp" | ||
| 13 | + } | ||
| 14 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
tsconfig.json
0 → 100644
| 1 | +{ | ||
| 2 | + "compilerOptions": { | ||
| 3 | + "allowSyntheticDefaultImports": true, | ||
| 4 | + "declaration": true, | ||
| 5 | + "experimentalDecorators": true, | ||
| 6 | + "emitDecoratorMetadata": true, | ||
| 7 | + "lib": ["dom", "es2015"], | ||
| 8 | + "noImplicitAny": false, | ||
| 9 | + "outDir": "./dist/", | ||
| 10 | + "target": "es5", | ||
| 11 | + "sourceMap": true | ||
| 12 | + }, | ||
| 13 | + "exclude": [ | ||
| 14 | + "node_modules", | ||
| 15 | + "spec" | ||
| 16 | + ] | ||
| 17 | +} | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment