diff --git a/lib/timec.js b/lib/timec.js index cefcfd2..95af5cb 100644 --- a/lib/timec.js +++ b/lib/timec.js @@ -1,211 +1,230 @@ -"use strict"; -//DATABASE -Object.defineProperty(exports, "__esModule", { value: true }); -const low = require("lowdb"); -var db = low("db.json"); -const sid = require("short-id"); -sid.configure({ length: 12 }); -db.defaults({}).write(); -//SOCKETIO -const httpp = require("http"); -var http = httpp.createServer(); -const io = require("socket.io"); -var ioClient = require("socket.io-client")("http://localhost:5000"); -var ios = io(http); -const artnetp = require("artnet"); -const universe = 21; -var artnet = artnetp({ host: "192.168.1.255" }); -class FrameTime { - constructor(millis) { - this.lframe = 0; - this.lseconds = 0; - this.lminutes = 0; - this.lhours = 0; - this.lmilliseconds = 0; - if (Number.isInteger(millis)) { - this.milliseconds = millis; - } - else if (typeof millis === "object") { - if (Number.isInteger(Number(millis.frame)) && Number.isInteger(Number(millis.seconds)) && Number.isInteger(Number(millis.minutes)) && Number.isInteger(Number(millis.hours))) { - this.lframe = millis.frame; //use the local, because its mor performant - this.lseconds = millis.seconds; - this.lminutes = millis.minutes; - this.lhours = millis.hours; - this.calcMillis(); - } - else if (Number.isInteger(millis.milliseconds)) { - this.milliseconds = millis.milliseconds; - } - } - } - get milliseconds() { - return this.lmilliseconds; - } - set milliseconds(val) { - this.lmilliseconds = val; - this.millisToFrame(); - } - get frame() { - return this.lframe; - } - set frame(val) { - this.lframe = val; - this.calcMillis(); - } - get seconds() { - return this.lseconds; - } - set seconds(val) { - this.lseconds = val; - this.calcMillis(); - } - get minutes() { - return this.lminutes; - } - set minutes(val) { - this.lminutes = val; - this.calcMillis(); - } - get hours() { - return this.lhours; - } - set hours(val) { - this.lhours = val; - this.calcMillis(); - } - calcMillis() { - this.lmilliseconds = (this.frame / 25 * 1000) + this.seconds * 1000 + this.minutes * 60 * 1000 + this.hours * 60 * 60 * 1000; - } - millisToFrame() { - var millis = this.lmilliseconds; - this.frame = Math.floor((millis % 1000) * 25 / 1000); - this.seconds = Math.floor((millis / 1000) % 60); - this.minutes = Math.floor((millis / (1000 * 60)) % 60); - this.hours = Math.floor((millis / (1000 * 60 * 60)) % 24); - } -} -class Timecode { - vlcUpdate(vlc) { - this.startTime = new Date().getTime() - vlc.time; - this.filePlaying = vlc.file; - } - update(time) { - var d = new Date().getTime() - this.startTime; - this.toTrigger.forEach(e => { - if (e.time.milliseconds <= d) { - console.log(e); - ios.emit("artnet", e.art); - artnet.set(universe, e.art.subnet); - var i = this.toTrigger.indexOf(e); - this.toTrigger.splice(i, 1); - } - }); - var data = {}; - data.time = new FrameTime(d); - data.track = this.activeTrack.id; - ios.emit("update", data); - } - loadTrack(trackid) { - this.playing = false; - var track = db.get(trackid).value(); - var tr = []; - track.triggers.forEach(t => { - var te = new TrackEvent(); - te.art = t.art; - te.id = t.id; - te.time = new FrameTime(t.time); - tr.push(te); - }); - this.activeTrack = track; - this.toTrigger = tr; - this.filePlaying = track.file; - this.startTime = 0; - } - play() { - if (this.filePlaying) { - ioClient.emit("play", { file: this.filePlaying }); - ioClient.on("playing", () => { - this.startTime = new Date().getTime(); - }); - ioClient.on("update", (data) => { - this.vlcUpdate(data); - }); - } - else { - this.startTime = new Date().getTime(); - this.playing = true; - } - this.interval = setInterval(this.update.bind(this), 1000 / 25); - } - stop() { - clearInterval(this.interval); - this.playing = false; - if (this.filePlaying) { - ioClient.emit("stop"); - ios.emit("stopped"); - } - this.startTime = 0; - } -} -class TrackEvent { -} -class Track { -} -var timecode = new Timecode(); -ios.on("connection", socket => { - function senddata() { - ios.emit("get_data", { - tracks: db.getState(), - loaded: timecode.activeTrack - }); - } - console.log("Client", socket.id, "connected"); - socket.on("load", (id) => { - var track = db.get(id).value(); - if (track === undefined) { - return socket.emit("play_error", "Track doesn't exist"); - } - timecode.loadTrack(id); - senddata(); - }); - socket.on("play", () => { - if (timecode.playing) { - return socket.emit("play_error", "the active track must be stoppen before re-plaing it"); - } - timecode.play(); - }); - socket.on("stop", () => { - timecode.stop(); - timecode.loadTrack(timecode.activeTrack.id); - }); - socket.on("create", (data) => { - var track = new Track(); - track.displayName = data.name; - track.file = data.file; - track.id = sid.generate(); - track.triggers = []; - db.set(track.id, track).write(); - socket.emit("created", track); - senddata(); - }); - socket.on("set", (data) => { - var tid = data.track; - var time = new FrameTime(data.time); - var tracke = new TrackEvent(); - tracke.art = data.art; - tracke.time = time; - tracke.id = sid.generate(); - db.get(tid + ".triggers").push(tracke).write(); - socket.emit("set_finished", tracke); - senddata(); - }); - socket.on("get", () => { - senddata(); - }); - socket.on("delete", (data) => { - db.get(data.track + ".triggers").remove({ id: data.id }).write(); - senddata(); - }); -}); -http.listen(5001); +//DATABASE +"use strict"; +const low = require("lowdb"); +var db = low("db.json"); +const sid = require("short-id"); +sid.configure({ length: 12 }); +db.defaults({}).write(); +//SOCKETIO +const httpp = require("http"); +var http = httpp.createServer(); +const io = require("socket.io"); +var ioClient = require("socket.io-client")("http://192.168.1.22:5000", { reconect: true }); +ioClient.on("connect", () => { + console.log("connected"); +}); +var ios = io(http); +const artnetp = require("artnet"); +const universe = 21; +var artnet = artnetp({ host: "192.168.1.255" }); +class FrameTime { + constructor(millis) { + this.lframe = 0; + this.lseconds = 0; + this.lminutes = 0; + this.lhours = 0; + this.lmilliseconds = 0; + if (Number.isInteger(millis)) { + this.milliseconds = millis; + } + else if (typeof millis === "object") { + if (Number.isInteger(Number(millis.frame)) && Number.isInteger(Number(millis.seconds)) && Number.isInteger(Number(millis.minutes)) && Number.isInteger(Number(millis.hours))) { + this.lframe = millis.frame; //use the local, because its mor performant + this.lseconds = millis.seconds; + this.lminutes = millis.minutes; + this.lhours = millis.hours; + this.calcMillis(); + } + else if (Number.isInteger(millis.milliseconds)) { + this.milliseconds = millis.milliseconds; + } + } + } + get milliseconds() { + return this.lmilliseconds; + } + set milliseconds(val) { + this.lmilliseconds = val; + this.millisToFrame(); + } + get frame() { + return this.lframe; + } + set frame(val) { + this.lframe = val; + this.calcMillis(); + } + get seconds() { + return this.lseconds; + } + set seconds(val) { + this.lseconds = val; + this.calcMillis(); + } + get minutes() { + return this.lminutes; + } + set minutes(val) { + this.lminutes = val; + this.calcMillis(); + } + get hours() { + return this.lhours; + } + set hours(val) { + this.lhours = val; + this.calcMillis(); + } + calcMillis() { + this.lmilliseconds = (this.frame / 25 * 1000) + this.seconds * 1000 + this.minutes * 60 * 1000 + this.hours * 60 * 60 * 1000; + } + millisToFrame() { + var millis = this.lmilliseconds; + this.frame = Math.floor((millis % 1000) * 25 / 1000); + this.seconds = Math.floor((millis / 1000) % 60); + this.minutes = Math.floor((millis / (1000 * 60)) % 60); + this.hours = Math.floor((millis / (1000 * 60 * 60)) % 24); + } +} +class Timecode { + vlcUpdate(vlc) { + if (!vlc.is_playing) { + this.stop(); + } + else { + this.startTime = new Date().getTime() - vlc.time; + this.filePlaying = vlc.file; + console.log("vlc_update", vlc); + } + } + update(time) { + var d = new Date().getTime() - this.startTime; + this.toTrigger.forEach(e => { + if (e.time.milliseconds <= d) { + console.log(e); + ios.emit("artnet", e.art); + artnet.set(universe, e.art.subnet); + var i = this.toTrigger.indexOf(e); + this.toTrigger.splice(i, 1); + } + }); + var data = {}; + data.time = new FrameTime(d); + data.track = this.activeTrack.id; + data.filePlaying = this.filePlaying; + ios.emit("update", data); + } + loadTrack(trackid) { + this.playing = false; + var track = db.get(trackid).value(); + var tr = []; + track.triggers.forEach(t => { + var te = new TrackEvent(); + te.art = t.art; + te.id = t.id; + te.time = new FrameTime(t.time); + tr.push(te); + }); + this.activeTrack = track; + this.toTrigger = tr; + this.filePlaying = track.file; + this.startTime = 0; + } + play() { + if (!this.activeTrack) + return; + if (this.filePlaying) { + ioClient.emit("play", { file: this.filePlaying }); + ioClient.on("playing", () => { + this.startTime = new Date().getTime(); + }); + ioClient.on("update", (data) => { + this.vlcUpdate(data); + }); + } + else { + this.startTime = new Date().getTime(); + this.playing = true; + } + this.interval = setInterval(this.update.bind(this), 1000 / 25); + } + stop() { + clearInterval(this.interval); + this.playing = false; + if (this.filePlaying) { + ioClient.emit("stop"); + ios.emit("stopped"); + } + this.startTime = 0; + } +} +class TrackEvent { +} +class Track { +} +var timecode = new Timecode(); +ios.on("connection", socket => { + senddata(); + function senddata() { + ios.emit("get_data", { + tracks: db.getState(), + loaded: timecode.activeTrack + }); + } + console.log("Client", socket.id, "connected"); + socket.on("load", (id) => { + var track = db.get(id).value(); + if (track === undefined) { + return socket.emit("play_error", "Track doesn't exist"); + } + timecode.loadTrack(id); + senddata(); + }); + socket.on("play", () => { + if (timecode.playing) { + return socket.emit("play_error", "the active track must be stoppen before re-plaing it"); + } + timecode.play(); + }); + socket.on("stop", () => { + timecode.stop(); + timecode.loadTrack(timecode.activeTrack.id); + }); + socket.on("create", (data) => { + var track = new Track(); + track.displayName = data.name; + track.file = data.file; + track.id = sid.generate(); + track.triggers = []; + db.set(track.id, track).write(); + socket.emit("created", track); + senddata(); + }); + socket.on("set", (data) => { + var tid = data.track; + var time = new FrameTime(data.time); + if (data.id && data.id != "") { + var tracke = db.get(tid + ".triggers").find({ id: data.id }).assign({ + art: data.art, + time: time, + }).write(); + } + else { + var tracke = new TrackEvent(); + tracke.art = data.art; + tracke.time = time; + tracke.id = sid.generate(); + db.get(tid + ".triggers").push(tracke).write(); + } + senddata(); + }); + socket.on("get", () => { + senddata(); + }); + socket.on("delete", (data) => { + db.get(data.track + ".triggers").remove({ id: data.id }).write(); + senddata(); + }); +}); +http.listen(5001); //# sourceMappingURL=timec.js.map \ No newline at end of file diff --git a/lib/timec.js.map b/lib/timec.js.map index 03a90b9..6ebb321 100644 --- a/lib/timec.js.map +++ b/lib/timec.js.map @@ -1 +1 @@ -{"version":3,"file":"timec.js","sourceRoot":"","sources":["../src/timec.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"timec.js","sourceRoot":"","sources":["../src/timec.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/timec.ts b/src/timec.ts index b96f7cd..157df96 100644 --- a/src/timec.ts +++ b/src/timec.ts @@ -10,9 +10,11 @@ db.defaults({}).write(); import * as httpp from "http"; var http = httpp.createServer(); import io = require("socket.io"); -var ioClient = require("socket.io-client")("192.168.1.22:5000"); +var ioClient = require("socket.io-client")("http://192.168.1.22:5000", {reconect:true}); +ioClient.on("connect", ()=>{ + console.log("connected"); +}) var ios = io(http); - const artnetp = require("artnet"); const universe = 21; var artnet = artnetp({host:"192.168.1.255"}); @@ -107,8 +109,13 @@ class Timecode { toTrigger:Array; vlcUpdate(vlc:VlcUpdate) { - this.startTime = new Date().getTime() - vlc.time; - this.filePlaying = vlc.file; + if(!vlc.is_playing){ + this.stop(); + } else { + this.startTime = new Date().getTime() - vlc.time; + this.filePlaying = vlc.file; + console.log("vlc_update", vlc); + } } update(time:FrameTime) { @@ -125,6 +132,7 @@ class Timecode { var data:any = {}; data.time = new FrameTime(d); data.track = this.activeTrack.id; + data.filePlaying = this.filePlaying; ios.emit("update", data); } @@ -146,6 +154,7 @@ class Timecode { } play() { + if(!this.activeTrack)return; if(this.filePlaying){ ioClient.emit("play", {file:this.filePlaying}); ioClient.on("playing", ()=>{ @@ -197,6 +206,7 @@ interface VlcUpdate { var timecode = new Timecode(); ios.on("connection", socket=>{ + senddata(); function senddata(){ ios.emit("get_data", { tracks: db.getState(), diff --git a/web/index.html b/web/index.html index f7dd590..1ae71a2 100644 --- a/web/index.html +++ b/web/index.html @@ -16,6 +16,8 @@ + +
@@ -97,6 +99,7 @@ if(selected.id !== data.track) return; //Nur wenn abgespielter track ausgewählt timenow = data.time.lmilliseconds; $("#actualtime").html(data.time.lhours + ":" + data.time.lminutes + ":" + data.time.lseconds + ":" + data.time.lframe); + $("#fplay").html(data.filePlaying); }); $("#track_select").on("change", function () {