diff --git a/dist/index.js b/dist/index.js index 8242d4c..6f66033 100644 --- a/dist/index.js +++ b/dist/index.js @@ -51,6 +51,15 @@ class PlayoutBee extends base_1.InstanceBase { this. updateStatus(base_1.InstanceStatus.Connecting, "connecting"); } + remainingtimecode() { + if (this.player.assets != undefined && this.player.assets.length != 0) { + let currentAsset = this.player.assets[this.player.currentAsset]; + return (currentAsset.outPoint - (this.player.timecode + currentAsset.inPoint)) >= 0 ? (currentAsset.outPoint - (this.player.timecode + currentAsset.inPoint)) : 0; + } + else { + return (0); + } + } updateActions() { this.setActionDefinitions({ "play": { @@ -91,16 +100,15 @@ class PlayoutBee extends base_1.InstanceBase { "select": { name: "Select Clip", options: [{ - type: "number", + type: "textinput", id: "clip", label: "Clip ID", - default: 0, + default: "0", required: true, - min: 0, - max: 9999, }], - callback: (action) => { - this.callAPI("/api/select/" + action.options.clip); + callback: async (action) => { + var id = await this.parseVariablesInString(action.options.clip?.toString() || "0"); + this.callAPI("/api/select/" + id); } }, "goto": { @@ -135,6 +143,74 @@ class PlayoutBee extends base_1.InstanceBase { this.callAPI("/api/last/" + action.options.time); } }, + "setAction": { + name: "Set Action of Asset", + description: "Set the action of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "dropdown", + id: "action", + label: "Action", + default: "true", + choices: [{ id: "0", label: "pause" }, { id: "1", label: "playNext" }, { id: "2", label: "next" }, { id: "3", label: "loop" }, { id: "4", label: "reset" }], + } + ], + callback: async (action) => { + this.callAPI("/api/asset/" + action.options.clip + "/action/" + action.options.action); + } + }, + "rotate": { + name: "Set Rotation of Asset", + description: "Set the Rotation of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "dropdown", + id: "rotation", + label: "Rotation", + default: "0", + choices: [{ id: "0", label: "0" }, { id: "90", label: "90" }, { id: "180", label: "180" }, { id: "270", label: "270" }, { id: "360", label: "360" }], + } + ], + callback: async (action) => { + this.callAPI("/api/asset/" + action.options.clip + "/rotate/" + action.options.rotation); + } + }, + "volume": { + name: "Set Volume of Asset", + description: "Set the Rotation of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "textinput", + id: "volume", + label: "Volume", + default: "0", + } + ], + callback: async (action) => { + this.callAPI("/api/asset/" + action.options.clip + "/volume/" + action.options.volume); + } + } }); } updateFeedbacks() { @@ -187,6 +263,29 @@ class PlayoutBee extends base_1.InstanceBase { return this.player ? parseInt(this.player.currentAsset) === feedback.options.clip : false; } }, + "ClipAction": { + type: "boolean", + name: "Action of Clip", + description: "If the selected clip is the one specified", + options: [{ + type: "textinput", + id: "assetID", + label: "Asset ID", + default: "0", + required: true, + }, { + type: "dropdown", + id: "action", + label: "Action", + default: "true", + choices: [{ id: "0", label: "pause" }, { id: "1", label: "playNext" }, { id: "2", label: "next" }, { id: "3", label: "loop" }, { id: "4", label: "reset" }], + }], + defaultStyle: { color: (0, base_1.combineRgb)(255, 255, 255), bgcolor: (0, base_1.combineRgb)(0, 255, 0) }, + callback: (feedback) => { + let id = feedback.options.assetID; + return this.player ? this.player.assets[id].action === feedback.options.action : false; + } + } }); } updateVariables() { @@ -239,6 +338,32 @@ class PlayoutBee extends base_1.InstanceBase { label: "Milisecond of the timecode", name: "milisecond" }); + variables.push({ + variableId: "remainingTimecode", + label: "Timecode", + name: "remainingTimecode" + }); + variables.push({ + variableId: "remainingTimecode_hh", + label: "Hour of the timecode", + name: "remainingHour" + }); + variables.push({ + variableId: "remainingTimecode_mm", + label: "Minute of the timecode", + name: "remainingMinute" + }); + variables.push({ + variableId: "remainingTimecode_ss", + label: "Second of the timecode", + name: "remainingSecond" + }); + variables.push({ + variableId: "remainingTimecode_ms", + label: "Milisecond of the timecode", + name: "remainingMilisecond" + }); + console.log("variables"); this.setVariableDefinitions(variables); let values = {}; for (let i = 0; i < this.player.assets.length; i++) { @@ -252,6 +377,7 @@ class PlayoutBee extends base_1.InstanceBase { } } updateTimecode(timecode) { + this.player.timecode = timecode; let values = {}; //get the timecode and split it into hours, minutes, seconds and frames let calcs = (0, util_1.sToTime)(timecode); @@ -260,13 +386,22 @@ class PlayoutBee extends base_1.InstanceBase { values["timecode_mm"] = calcs.minutes; values["timecode_ss"] = calcs.seconds; values["timecode_ms"] = calcs.frames; + //get the remaining timecode and split it into hours, minutes, seconds and frames + calcs = (0, util_1.sToTime)(this.remainingtimecode()); + values["remainingTimecode"] = calcs.timecode; + values["remainingTimecode_hh"] = calcs.hours; + values["remainingTimecode_mm"] = calcs.minutes; + values["remainingTimecode_ss"] = calcs.seconds; + values["remainingTimecode_ms"] = calcs.frames; this.setVariableValues(values); } callAPI(url) { + console.log("callAPI", url); axios_1.default.get("http://" + this.config.host + ":" + this.config.port + url).then((res) => { this.log("info", res.data); }).catch((err) => { this.log("error", err); + console.log(err); }); } updatePresets() { diff --git a/dist/index.js.map b/dist/index.js.map index 9b86667..4580fd6 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/socket.js b/dist/socket.js index 2f2c679..d4fadfc 100644 --- a/dist/socket.js +++ b/dist/socket.js @@ -23,7 +23,7 @@ class SocketAPI extends events_1.default { }); this.io.on("update", (player) => { this.PlayoutBee.player = player; - this.PlayoutBee.checkFeedbacks("selectedClip", "stopped", "paused", "playing"); + this.PlayoutBee.checkFeedbacks("selectedClip", "stopped", "paused", "playing", "ClipAction"); this.PlayoutBee.updateVariables(); }); this.io.on("updateTimecode", (timecode) => { diff --git a/dist/socket.js.map b/dist/socket.js.map index b54ae94..3f7fb5b 100644 --- a/dist/socket.js.map +++ b/dist/socket.js.map @@ -1 +1 @@ -{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAkC;AAClC,uDAAsC;AAEtC,MAAa,SAAU,SAAQ,gBAAY;IACvC,EAAE,CAAM;IACR,UAAU,CAAM;IAChB,YAAY,GAAW,EAAC,UAAc;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,IAAA,qBAAE,EAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;QACjF,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAC,CAAC,MAAU,EAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAC,CAAC,QAAY,EAAC,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAA;IACF,CAAC;CACJ;AAxBD,8BAwBC"} \ No newline at end of file +{"version":3,"file":"socket.js","sourceRoot":"","sources":["../src/socket.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAkC;AAClC,uDAAsC;AAEtC,MAAa,SAAU,SAAQ,gBAAY;IACvC,EAAE,CAAM;IACR,UAAU,CAAM;IAChB,YAAY,GAAW,EAAC,UAAc;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,EAAE,GAAG,IAAA,qBAAE,EAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YACvD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;YAC5D,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;QACjF,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAC,CAAC,MAAU,EAAC,EAAE;YAC9B,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,cAAc,EAAC,SAAS,EAAC,QAAQ,EAAC,SAAS,EAAC,YAAY,CAAC,CAAC;YACzF,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,gBAAgB,EAAC,CAAC,QAAY,EAAC,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAA;IACF,CAAC;CACJ;AAxBD,8BAwBC"} \ No newline at end of file diff --git a/dist/util.js b/dist/util.js index 7f01a08..24f2efa 100644 --- a/dist/util.js +++ b/dist/util.js @@ -7,10 +7,10 @@ function sToTime(s) { exports.sToTime = sToTime; function msToTime(ms) { let fps = 30; - let frames = Math.round(ms / 1000 * fps) % fps; - let seconds = Math.round(ms / 1000) % 60; - let minutes = Math.round(ms / (1000 * 60)) % 60; - let hours = Math.round(ms / (1000 * 60 * 60)) % 24; + let frames = Math.floor((ms / 1000 * fps) % fps); + let seconds = Math.floor((ms / 1000) % 60); + let minutes = Math.floor((ms / (1000 * 60)) % 60); + let hours = Math.floor((ms / (1000 * 60 * 60)) % 24); let Stringhours = (hours < 10) ? "0" + hours : hours; let Stringminutes = (minutes < 10) ? "0" + minutes : minutes; let Stringseconds = (seconds < 10) ? "0" + seconds : seconds; diff --git a/dist/util.js.map b/dist/util.js.map index 60841c7..9119c90 100644 --- a/dist/util.js.map +++ b/dist/util.js.map @@ -1 +1 @@ -{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AACA,SAAgB,OAAO,CAAC,CAAQ;IACxB,OAAM,CAAC,QAAQ,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFL,0BAEK;AACL,SAAS,QAAQ,CAAC,EAAS;IAC3B,IAAI,GAAG,GAAE,EAAE,CAAC;IACZ,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;IAC5C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,IAAI,CAAC,GAAC,EAAE,CAAA;IACpC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,CAAC,IAAI,GAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAA;IACzC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAC,CAAC,IAAI,GAAC,EAAE,GAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAA;IAE1C,IAAI,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,IAAI,aAAa,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,IAAI,aAAa,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,IAAI,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,YAAY,EAAC,CAAA;AACzL,CAAC"} \ No newline at end of file +{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;AACA,SAAgB,OAAO,CAAC,CAAQ;IACxB,OAAM,CAAC,QAAQ,CAAC,CAAC,GAAC,IAAI,CAAC,CAAC,CAAA;AAC5B,CAAC;AAFL,0BAEK;AACL,SAAS,QAAQ,CAAC,EAAS;IAEvB,IAAI,GAAG,GAAE,EAAE,CAAC;IACZ,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC,IAAI,CAAC,GAAC,EAAE,CAAC,CAAA;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC,CAAC,IAAI,GAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAA;IAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAC,CAAC,IAAI,GAAC,EAAE,GAAC,EAAE,CAAC,CAAC,GAAC,EAAE,CAAC,CAAA;IAEhD,IAAI,WAAW,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,IAAI,aAAa,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,IAAI,aAAa,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,IAAI,YAAY,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACzD,OAAO,EAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,aAAa,GAAG,GAAG,GAAG,YAAY,EAAC,CAAA;AACzL,CAAC"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 5f82dc8..7acc795 100644 --- a/src/index.ts +++ b/src/index.ts @@ -49,6 +49,14 @@ class PlayoutBee extends InstanceBase { this. updateStatus(InstanceStatus.Connecting, "connecting") } + remainingtimecode(){ + if(this.player.assets != undefined && this.player.assets.length != 0){ + let currentAsset = this.player.assets[this.player.currentAsset]; + return (currentAsset.outPoint - (this.player.timecode+currentAsset.inPoint)) >= 0 ? (currentAsset.outPoint - (this.player.timecode+currentAsset.inPoint)) : 0; + }else{ + return(0) + } + } updateActions(): void { this.setActionDefinitions({ "play": { @@ -89,16 +97,16 @@ class PlayoutBee extends InstanceBase { "select": { name: "Select Clip", options: [{ - type: "number", + type: "textinput", id: "clip", label: "Clip ID", - default: 0, + default: "0", required: true, - min: 0, - max: 9999, + }], - callback: (action) => { - this.callAPI("/api/select/"+action.options.clip) + callback: async (action) => { + var id = await this.parseVariablesInString(action.options.clip?.toString() || "0" ) + this.callAPI("/api/select/"+id) } }, "goto": { @@ -133,6 +141,75 @@ class PlayoutBee extends InstanceBase { this.callAPI("/api/last/"+action.options.time) } }, + "setAction":{ + name: "Set Action of Asset", + description: "Set the action of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "dropdown", + id: "action", + label: "Action", + default: "true", + choices: [{id:"0",label:"pause"},{id:"1",label:"playNext"},{id:"2",label:"next"},{id:"3",label:"loop"},{id:"4",label:"reset"}], + } + ], + callback: async (action) => { + this.callAPI("/api/asset/"+ action.options.clip+"/action/"+action.options.action) + } + }, + + "rotate":{ + name: "Set Rotation of Asset", + description: "Set the Rotation of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "dropdown", + id: "rotation", + label: "Rotation", + default: "0", + choices: [{id:"0",label:"0"},{id:"90",label:"90"},{id:"180",label:"180"},{id:"270",label:"270"},{id:"360",label:"360"}], + } + ], + callback: async (action) => { + this.callAPI("/api/asset/"+ action.options.clip+"/rotate/"+action.options.rotation) + } + }, + "volume":{ + name: "Set Volume of Asset", + description: "Set the Rotation of the Asset", + options: [{ + type: "textinput", + id: "clip", + label: "Clip", + default: "0", + regex: "/(current)*\d*(next)*(prev)*/g", + required: true, + }, + { + type: "textinput", + id: "volume", + label: "Volume", + default: "0", + } + ], + callback: async (action) => { + this.callAPI("/api/asset/"+ action.options.clip+"/volume/"+action.options.volume) + } + } }) @@ -188,6 +265,29 @@ class PlayoutBee extends InstanceBase { return this.player ? parseInt(this.player.currentAsset) === feedback.options.clip : false } }, + "ClipAction": { + type: "boolean", + name: "Action of Clip", + description: "If the selected clip is the one specified", + options: [{ + type: "textinput", + id: "assetID", + label: "Asset ID", + default: "0", + required: true, + },{ + type: "dropdown", + id: "action", + label: "Action", + default: "true", + choices: [{id:"0",label:"pause"},{id:"1",label:"playNext"},{id:"2",label:"next"},{id:"3",label:"loop"},{id:"4",label:"reset"}], + }], + defaultStyle: {color: combineRgb(255,255,255), bgcolor: combineRgb(0,255,0)}, + callback: (feedback) => { + let id:string = feedback.options.assetID as string; + return this.player ? this.player.assets[id].action === feedback.options.action : false + } + } }) } @@ -241,6 +341,32 @@ class PlayoutBee extends InstanceBase { label: "Milisecond of the timecode", name: "milisecond" }) + variables.push({ + variableId: "remainingTimecode", + label: "Timecode", + name: "remainingTimecode" + }) + variables.push({ + variableId: "remainingTimecode_hh", + label: "Hour of the timecode", + name: "remainingHour" + }) + variables.push({ + variableId: "remainingTimecode_mm", + label: "Minute of the timecode", + name: "remainingMinute" + }) + variables.push({ + variableId: "remainingTimecode_ss", + label: "Second of the timecode", + name: "remainingSecond" + }) + variables.push({ + variableId: "remainingTimecode_ms", + label: "Milisecond of the timecode", + name: "remainingMilisecond" + }) + console.log("variables") this.setVariableDefinitions(variables) let values: CompanionVariableValues = {}; for(let i = 0; i < this.player.assets.length; i++){ @@ -258,6 +384,7 @@ class PlayoutBee extends InstanceBase { } updateTimecode(timecode:number){ + this.player.timecode = timecode; let values: CompanionVariableValues = {}; //get the timecode and split it into hours, minutes, seconds and frames let calcs = sToTime(timecode) @@ -266,14 +393,24 @@ class PlayoutBee extends InstanceBase { values["timecode_mm"] = calcs.minutes; values["timecode_ss"] = calcs.seconds; values["timecode_ms"] = calcs.frames; + + //get the remaining timecode and split it into hours, minutes, seconds and frames + calcs = sToTime(this.remainingtimecode()) + values["remainingTimecode"] = calcs.timecode; + values["remainingTimecode_hh"] = calcs.hours; + values["remainingTimecode_mm"] = calcs.minutes; + values["remainingTimecode_ss"] = calcs.seconds; + values["remainingTimecode_ms"] = calcs.frames; this.setVariableValues(values) } callAPI(url:string){ + console.log("callAPI",url) axios.get("http://"+this.config.host+":"+this.config.port+url).then((res) => { this.log("info",res.data) }).catch((err) => { this.log("error",err) + console.log(err) }) } updatePresets(){ diff --git a/src/socket.ts b/src/socket.ts index bc78bf6..aff5d9c 100644 --- a/src/socket.ts +++ b/src/socket.ts @@ -18,7 +18,7 @@ export class SocketAPI extends EventEmitter{ }) this.io.on("update",(player:any)=>{ this.PlayoutBee.player = player; - this.PlayoutBee.checkFeedbacks("selectedClip","stopped","paused","playing"); + this.PlayoutBee.checkFeedbacks("selectedClip","stopped","paused","playing","ClipAction"); this.PlayoutBee.updateVariables(); }) this.io.on("updateTimecode",(timecode:any)=>{ diff --git a/src/util.ts b/src/util.ts index b873360..4d61f49 100644 --- a/src/util.ts +++ b/src/util.ts @@ -3,15 +3,17 @@ export function sToTime(s:number){ return(msToTime(s*1000)) } function msToTime(ms:number) { -let fps= 30; -let frames = Math.round(ms/1000 * fps) % fps -let seconds = Math.round(ms/1000)%60 -let minutes = Math.round(ms/(1000*60))%60 -let hours = Math.round(ms/(1000*60*60))%24 - + + let fps= 30; + let frames = Math.floor((ms/1000 * fps) % fps) + let seconds = Math.floor((ms/1000)%60) + let minutes = Math.floor((ms/(1000*60))%60) + let hours = Math.floor((ms/(1000*60*60))%24) + let Stringhours = (hours < 10) ? "0" + hours : hours; let Stringminutes = (minutes < 10) ? "0" + minutes : minutes; let Stringseconds = (seconds < 10) ? "0" + seconds : seconds; let Stringframes = (frames < 10) ? "0" + frames : frames; return {hours: Stringhours, minutes: Stringminutes, seconds: Stringseconds, frames: Stringframes, timecode: Stringhours + ":" + Stringminutes + ":" + Stringseconds + ":" + Stringframes} -} \ No newline at end of file +} +