diff --git a/.gitignore b/.gitignore index 9b164f6..6452f28 100644 --- a/.gitignore +++ b/.gitignore @@ -66,4 +66,5 @@ config.js tmp/*.png public/assets/ data/bundles/* -!data/bundles/default/ +!data/bundles/default +!data/bundles/default/* diff --git a/data/backgrounds/talvi.jpg b/data/backgrounds/talvi.jpg deleted file mode 100644 index 7d808c3..0000000 Binary files a/data/backgrounds/talvi.jpg and /dev/null differ diff --git a/data/bundles/default/bundle.json b/data/bundles/default/bundle.json index b1d262d..8df663a 100644 --- a/data/bundles/default/bundle.json +++ b/data/bundles/default/bundle.json @@ -7,7 +7,7 @@ "displayTime": true, "styleHeader": { "stroke": "", - "fill": "#f90", + "fill": "#fff", "fontSize": 56, "fontWeight": 900, "fontFamily": "Arial" diff --git a/data/bundles/default/images/toolbar.png b/data/bundles/default/images/toolbar.png new file mode 100644 index 0000000..c3d3807 Binary files /dev/null and b/data/bundles/default/images/toolbar.png differ diff --git a/data/bundles/default/render/03191688-bb93-4376-a3ab-53ed790b2155.png b/data/bundles/default/render/03191688-bb93-4376-a3ab-53ed790b2155.png index e3adf73..ee6512e 100644 Binary files a/data/bundles/default/render/03191688-bb93-4376-a3ab-53ed790b2155.png and b/data/bundles/default/render/03191688-bb93-4376-a3ab-53ed790b2155.png differ diff --git a/data/bundles/default/render/39e5205f-9ace-4597-9873-f9ea5846dff0.png b/data/bundles/default/render/39e5205f-9ace-4597-9873-f9ea5846dff0.png deleted file mode 100644 index 2e7e204..0000000 Binary files a/data/bundles/default/render/39e5205f-9ace-4597-9873-f9ea5846dff0.png and /dev/null differ diff --git a/data/bundles/default/render/6a298b8c-9246-411f-b364-2d73c7e292d0.png b/data/bundles/default/render/6a298b8c-9246-411f-b364-2d73c7e292d0.png index b00a786..c2a597c 100644 Binary files a/data/bundles/default/render/6a298b8c-9246-411f-b364-2d73c7e292d0.png and b/data/bundles/default/render/6a298b8c-9246-411f-b364-2d73c7e292d0.png differ diff --git a/data/bundles/default/render/f0411f05-a312-44a7-82fd-778328ba390e.png b/data/bundles/default/render/f0411f05-a312-44a7-82fd-778328ba390e.png index e049f16..a44663f 100644 Binary files a/data/bundles/default/render/f0411f05-a312-44a7-82fd-778328ba390e.png and b/data/bundles/default/render/f0411f05-a312-44a7-82fd-778328ba390e.png differ diff --git a/data/bundles/default/slides.json b/data/bundles/default/slides.json index f6e50e8..0058191 100644 --- a/data/bundles/default/slides.json +++ b/data/bundles/default/slides.json @@ -1,7 +1,7 @@ [ { "uuid": "f0411f05-a312-44a7-82fd-778328ba390e", - "name": "testing 123", + "name": "Welcome", "duration": null, "enabled": true, "displayTime": null, @@ -11,7 +11,7 @@ }, { "uuid": "03191688-bb93-4376-a3ab-53ed790b2155", - "name": "2 header", + "name": "Features", "duration": null, "enabled": true, "displayTime": null, @@ -21,22 +21,12 @@ }, { "uuid": "6a298b8c-9246-411f-b364-2d73c7e292d0", - "name": "header test 3", + "name": "Language support", "duration": null, "enabled": true, "displayTime": null, "transition": null, "type": "slide", "index": 2 - }, - { - "uuid": "39e5205f-9ace-4597-9873-f9ea5846dff0", - "name": "header", - "duration": null, - "enabled": true, - "displayTime": null, - "transition": null, - "type": "slide", - "index": 3 } ] \ No newline at end of file diff --git a/data/bundles/default/slides/03191688-bb93-4376-a3ab-53ed790b2155 b/data/bundles/default/slides/03191688-bb93-4376-a3ab-53ed790b2155 index 3196396..c056f3e 100644 --- a/data/bundles/default/slides/03191688-bb93-4376-a3ab-53ed790b2155 +++ b/data/bundles/default/slides/03191688-bb93-4376-a3ab-53ed790b2155 @@ -1 +1 @@ -{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":150,"top":40,"width":267.64,"height":63.28,"fill":"#f90","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"2 header","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}},{"type":"i-text","version":"2.7.0","left":150,"top":113.28,"width":211.61,"height":63.28,"fill":"#f90","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"header","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}}]} \ No newline at end of file +{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":505.15,"top":73,"width":268.71,"height":63.28,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"Features","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}},{"type":"i-text","version":"2.7.0","left":227,"top":194.61,"width":825.13,"height":413.67,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"Easy-to-use editor for slides supports\nadding text and images to slides.\n\n\n\nFinnish and English language support, \nautomatically set from browser language.\n\nSupports web content as slides with scaling\nis useful for timetables, tournament brackets...","fontSize":32,"fontWeight":900,"fontFamily":"Arial","textAlign":"center","id":"normal","styles":{}},{"type":"image","version":"2.7.0","left":200,"top":291.07,"width":1310,"height":141,"scaleX":0.68,"scaleY":0.68,"crossOrigin":"","src":"/images/default/toolbar.png","filters":[]}]} \ No newline at end of file diff --git a/data/bundles/default/slides/39e5205f-9ace-4597-9873-f9ea5846dff0 b/data/bundles/default/slides/39e5205f-9ace-4597-9873-f9ea5846dff0 deleted file mode 100644 index 42ddaea..0000000 --- a/data/bundles/default/slides/39e5205f-9ace-4597-9873-f9ea5846dff0 +++ /dev/null @@ -1 +0,0 @@ -{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":150,"top":40,"width":211.61,"height":63.28,"fill":"#f90","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"header","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}},{"type":"i-text","version":"2.7.0","left":247,"top":113.28,"width":261.25,"height":36.16,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"paragraph text","fontSize":32,"fontWeight":900,"fontFamily":"Arial","id":"normal","styles":{}},{"type":"i-text","version":"2.7.0","left":250,"top":159.44,"width":91.61,"height":36.16,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"text2","fontSize":32,"fontWeight":900,"fontFamily":"Arial","id":"normal","styles":{}}]} \ No newline at end of file diff --git a/data/bundles/default/slides/6a298b8c-9246-411f-b364-2d73c7e292d0 b/data/bundles/default/slides/6a298b8c-9246-411f-b364-2d73c7e292d0 index f03cbf9..498f98d 100644 --- a/data/bundles/default/slides/6a298b8c-9246-411f-b364-2d73c7e292d0 +++ b/data/bundles/default/slides/6a298b8c-9246-411f-b364-2d73c7e292d0 @@ -1 +1 @@ -{"version":"2.6.0","objects":[{"type":"i-text","version":"2.6.0","left":151,"top":40,"width":267.64,"height":63.28,"fill":"#f90","shadow":{"color":"#000","blur":3,"offsetX":0,"offsetY":0,"affectStroke":false},"text":"header 3","fontSize":56,"fontWeight":900,"fontFamily":"Arial Black","id":"header","styles":{}}]} \ No newline at end of file +{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":362.25,"top":128,"width":554.5,"height":63.28,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"Language support","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}},{"type":"i-text","version":"2.7.0","left":189.79,"top":280,"width":878.06,"height":78.11,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"Finnish and english support by default\nCan be extended by translating to new languages","fontSize":32,"fontWeight":900,"fontFamily":"Arial","textAlign":"center","id":"normal","styles":{}}]} \ No newline at end of file diff --git a/data/bundles/default/slides/f0411f05-a312-44a7-82fd-778328ba390e b/data/bundles/default/slides/f0411f05-a312-44a7-82fd-778328ba390e index 886f990..963d6c9 100644 --- a/data/bundles/default/slides/f0411f05-a312-44a7-82fd-778328ba390e +++ b/data/bundles/default/slides/f0411f05-a312-44a7-82fd-778328ba390e @@ -1 +1 @@ -{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":150,"top":40,"width":345.35,"height":63.28,"fill":"#f90","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"testing 123","fontSize":56,"fontWeight":900,"fontFamily":"Arial","id":"header","styles":{}},{"type":"i-text","version":"2.7.0","left":250,"top":113.28,"width":261.25,"height":36.16,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"paragraph text","fontSize":32,"fontWeight":900,"fontFamily":"Arial","id":"normal","styles":{}},{"type":"i-text","version":"2.7.0","left":250,"top":159.44,"width":261.25,"height":36.16,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"paragraph text","fontSize":32,"fontWeight":900,"fontFamily":"Arial","id":"normal","styles":{}}]} \ No newline at end of file +{"version":"2.7.0","objects":[{"type":"i-text","version":"2.7.0","left":426.4,"top":62,"width":388.97,"height":63.28,"fill":"rgb(251, 251, 251)","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"InfoScreen 3","fontSize":56,"fontWeight":900,"fontFamily":"Arial","textAlign":"center","id":"header","styles":{"0":{"11":{"fill":"rgb(25, 152, 55)"}}}},{"type":"i-text","version":"2.7.0","left":579.49,"top":113,"width":235.7,"height":36.16,"fill":"rgb(250, 250, 250)","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"for lanparties","fontSize":32,"fontWeight":900,"fontFamily":"Arial","id":"normal","styles":{}},{"type":"i-text","version":"2.7.0","left":59,"top":200,"width":1141.39,"height":329.78,"fill":"#fff","stroke":"","shadow":{"color":"rgba(0,0,0,0.6)","blur":5,"offsetX":2,"offsetY":2,"affectStroke":false},"text":"Can display easily slides from browser\nyou just need network connection, laptop with a browser\n\nOutput resolution does not matter, all contents are automatically\n scaled from full hd or half-hd as source material\n\nSupports multiple client-displays, by default you have 3 screens:\nbigscreen, sidescreen and kiosk","fontSize":32,"fontWeight":900,"fontFamily":"Arial","textAlign":"center","id":"normal","styles":{}}]} \ No newline at end of file diff --git a/modules/admin.js b/modules/admin.js index a519604..649e55c 100644 --- a/modules/admin.js +++ b/modules/admin.js @@ -130,8 +130,8 @@ class admin { serverOptions.streamSource = ""; cli.success("stop stream"); } - view.io.emit("callbackLoad", view.getSlideData()); - updateDashboard(io); + view.io.emit("callback.load", view.getSlideData()); + updateDashboard(io); }); @@ -139,7 +139,7 @@ class admin { let view = getView(); view.clearTimers(); getServerOptions().loop = false; - updateDashboard(io); + updateDashboard(io); }); socket.on('controls.next', function (data) { @@ -151,7 +151,7 @@ class admin { view.serverOptions.blackout = view.serverOptions.blackout === false; view.io.emit("callback.blackout", {serverOptions: view.serverOptions}); - updateDashboard(io); + updateDashboard(io); }); socket.on("controls.preview", function (data) { @@ -198,7 +198,7 @@ class admin { bundleSettings.setSlideStatus(fileName, false); } - updateDashboard(socket); + updateDashboard(socket); }); // override @@ -211,8 +211,7 @@ class admin { dispatcher.emit("all.override", data); } else { let view = getView(); - view.overrideSlide(data.json, data.png, data.duration); - view.displayCurrentSlide(); + view.overrideSlide(data.json, data.png, data.duration, data.transition); } } catch (err) { cli.error("error, admin.override", err); @@ -232,11 +231,11 @@ class admin { }); socket.on('admin.listSlides', function (data) { - updateDashboard(socket); + updateDashboard(socket); }); socket.on('admin.listBundles', function (data) { - updateDashboard(socket); + updateDashboard(socket); }); @@ -250,13 +249,12 @@ class admin { } // calculate next slide order for all displays which has the bundle selected - for (let display of screenView) { - if (display.serverOptions.currentBundle === data.bundleName) { - for (let slide of bundle.allSlides) { - // calculate new index for next slide; - if (slide.uuid === display.serverOptions.currentFile) { - display.serverOptions.loopIndex = slide.index + 1; - } + let display = screenView; + if (display.serverOptions.currentBundle === data.bundleName) { + for (let slide of bundle.allSlides) { + // calculate new index for next slide; + if (slide.uuid === display.serverOptions.currentFile) { + display.serverOptions.loopIndex = slide.index + 1; } } } @@ -271,6 +269,7 @@ class admin { let bundle = bundleManager.getBundle(data.bundleName); bundle.removeUuid(data.uuid); updateSlides(io, bundle.name, bundle); + announce(null, "callback.removeSlide", data); } catch (err) { cli.error("error while removing slide", err); } @@ -402,7 +401,7 @@ class admin { } getServerOptions().transition = transition; - updateDashboard(io); + updateDashboard(io); }); socket.on('edit.save', function (data) { @@ -479,7 +478,7 @@ class admin { let replace = "^data:" + data.type + ";base64,"; let re = new RegExp(replace, "g"); - fs.writeFileSync(".data/bundles/" + data.bundleName + "/images/" + filename + ext, data.imageData.replace(re, ""), "base64"); + fs.writeFileSync("./data/bundles/" + data.bundleName + "/images/" + filename + ext, data.imageData.replace(re, ""), "base64"); cli.success("upload of " + filename + ext); socket.emit("callback.edit.updateFileList", {}); } catch (err) { @@ -491,7 +490,7 @@ class admin { socket.on('edit.deleteImage', function (data) { try { - fs.unlinkSync(".data/bundles/" + data.bundleName + "/images/" + data.name); + fs.unlinkSync("./data/bundles/" + data.bundleName + "/images/" + data.name); cli.success("delete " + data.name); socket.emit("callback.edit.updateFileList", {}); } catch (err) { diff --git a/modules/display.js b/modules/display.js index 1d8aee9..10ef5be 100644 --- a/modules/display.js +++ b/modules/display.js @@ -76,7 +76,8 @@ class display { dispatcher.on("announce", function (obj) { // if global announce, ie screens is null - if (obj.screens == null) { + if (obj.screens === null) { + console.log("announcing: " + this.displayId); io.emit(obj.event, obj.data); } else { // screens is array @@ -107,7 +108,7 @@ class display { socket.on('sync', function () { cli.info("request sync " + self.name); - socket.emit("callbackLoad", self.getSlideData()); + socket.emit("callback.load", self.getSlideData()); }); }); // io @@ -137,7 +138,7 @@ class display { this.serverOptions.currentId = bundle.enabledSlides.indexOf(this.serverOptions.currentFile); this.serverOptions.transition = bundle.getBundleData().transition; this.serverOptions.loop = true; - this.io.emit("callbackLoad", this.getSlideData()); + this.io.emit("callback.load", this.getSlideData()); this.mainLoop(); } @@ -226,8 +227,10 @@ class display { this.serverOptions.loopIndex += 1; } - overrideSlide(json, pngData, duration) { + overrideSlide(json, pngData, duration, transition) { this.clearTimers(); + var _transition = this.serverOptions.transition; + this.serverOptions.transition = transition; this.serverOptions.loop = false; this.serverOptions.isAnnounce = true; // save temporarily png data... @@ -240,6 +243,8 @@ class display { that.mainLoop(); }, duration * 1000)); } + this.displayCurrentSlide(); + this.serverOptions.transition = _transition; } displayCurrentSlide() { diff --git a/public/js/display.js b/public/js/display.js index 5897545..a4a3d91 100644 --- a/public/js/display.js +++ b/public/js/display.js @@ -80,7 +80,6 @@ function getLayer(offset) { return "layer" + (layer + offset) % 2; } - // socketio callbacks /** when connected **/ socket.on('connect', function () { @@ -111,18 +110,18 @@ socket.on('callback.time', function (data) { }); /** callback Load **/ -socket.on('callbackLoad', function (data) { +socket.on('callback.load', function (data) { serverOptions = data.serverOptions; bundleData = data.bundleData; preloadImages(data.slides); checkBlackout(); - setBackground(data.bundleData.background); - if (checkStream(serverOptions) === false) { - if (doNext) { - doNext = false; + setTimeout(function () { + setBackground(data.bundleData.background); + if (checkStream(serverOptions) === false) { nextSlide(data); } - } + }, 1000); + }); @@ -136,6 +135,10 @@ socket.on('callback.update', function (data) { } }); +socket.on('callback.removeSlide', function (data) { + window.f.clearImageById(data.uuid); +}); + socket.on('callback.reload', function () { location.reload(true); }); @@ -202,7 +205,6 @@ function checkBlackout() { function nextSlide(data) { serverOptions = data.serverOptions; bundleData = data.bundleData; - var needWait = checkImages(data.slides); checkTimeDisplay(); if (serverOptions.isAnnounce) { @@ -249,11 +251,8 @@ function nextSlide(data) { clearIFrame(getWebLayer(1)); }, 2500); - $("#slider").show(); - setTimeout(function () { - window.f.showImageById(serverOptions.currentFile, transition); - }, needWait ? 1000 : 50); - +// $("#slider").show(); + window.f.showImageById(serverOptions.currentFile, transition); break; } } @@ -362,12 +361,20 @@ function preloadImages(allSlides) { function reloadImage(data) { if (serverOptions.currentBundle === data.bundleName) { - window.f.clearImageById(data.uuid); - window.f.setupImages(); getDataUri("/render/" + data.bundleName + "/" + data.uuid + ".png?" + uuidv4(), data.uuid, function (imageId, imageData, image) { - image.id = imageId; - window.f.images.push(image); - window.f.imageData.push(imageData); + var found = false; + for (var i in window.f.images) { + if (window.f.images[i].id === data.uuid) { + window.f.imageData[i] = imageData; + found = true; + } + } + if (!found) { + console.log("notfound, adding!"); + image.id = imageId; + window.f.images.push(image); + window.f.imageData.push(imageData); + } }); } } @@ -392,7 +399,6 @@ function checkImages(allSlides) { // new slides count is less than slides in rotation // remove slides if (allIds.length < fluxIds.length) { - var diffIds = symmetricDifference(fluxIds, allIds); for (var l in diffIds) { window.f.clearImageById(diffIds[l]); @@ -466,7 +472,7 @@ function getDataUri(url, imageId, callback) { canvas.height = this.naturalHeight; // or 'height' if you want a special/scaled size canvas.getContext('2d').drawImage(this, 0, 0); - callback(imageId, canvas.toDataURL('image/png'), this); + callback(imageId, canvas.toDataURL('image/png'), {src: url}); }; image.src = url; } diff --git a/public/js/displayLite.js b/public/js/displayLite.js index ce90802..332f5b6 100644 --- a/public/js/displayLite.js +++ b/public/js/displayLite.js @@ -57,7 +57,7 @@ $(function () { /** callback Load **/ - socket.on('callbackLoad', function (data) { + socket.on('callback.load', function (data) { serverOptions = data.serverOptions; bundleData = data.bundleData; checkBlackout(); diff --git a/public/js/edit.js b/public/js/edit.js index 600ee98..6b25aaa 100644 --- a/public/js/edit.js +++ b/public/js/edit.js @@ -34,7 +34,7 @@ $(function () { $('html').keyup(function (e) { if (e.keyCode === 46) { - obj = canvas.getActiveObject(); + var obj = canvas.getActiveObject(); if (!obj.isEditing) { removeSelectedObjects(); } @@ -216,12 +216,14 @@ socket.on('callback.edit.updateFileList', function (data) { socket.on('callback.edit', function (data) { bundleData = data.bundleData; canvas.clear(); + console.log(data); + if (data.slideData.name != null) { slideName = data.slideData.name; $("#slideName").val(slideName); } - $("#duration").val(data.slideData.duration + ""); + $("#duration").val(data.slideData.duration || ""); if (data.slideData.displayTime !== null) { $("#override").checkbox('set checked'); @@ -277,7 +279,7 @@ socket.on('callback.edit', function (data) { }); function setBackground(background) { - background = "/background/" + bundleData.bundleName + "/" + background; + background = "/background/" + background; var video = document.getElementById("bgvid2"); var bg = $("#bg"); @@ -541,7 +543,7 @@ function removeSelectedObjects() { for (var i in obj) { canvas.remove(obj[i]); } - canvas.discardActiveObject(); + canvas.discardActiveObject(null); canvas.requestRenderAll(); } @@ -554,11 +556,13 @@ function cueSlide(id) { } } - if (confirm('Force display of the current slide?') && bool) { + if (confirm('Force display of the current slide?')) { var duration = null; if ($.isNumeric($("#duration").val())) { duration = parseFloat($("#duration").val()); } + var transition = $("#transitions").dropdown("get value"); + if (transition === "null") transition = ""; var objects = canvas.getObjects('line'); for (let i in objects) { @@ -569,8 +573,10 @@ function cueSlide(id) { json: canvas.toJSON(['id']), png: canvas.toDataURL('png'), displayId: id, - duration: duration + duration: duration, + transition: transition }; + socket.emit("admin.override", obj); drawGrid(); @@ -584,6 +590,7 @@ function save() { for (let i in objects) { canvas.remove(objects[i]); } + slideName = $("#slideName").val(); if (slideName === "untitled") { var texts = canvas.getObjects('i-text'); diff --git a/public/js/flux.js b/public/js/flux.js index 12d451e..fd1ffff 100644 --- a/public/js/flux.js +++ b/public/js/flux.js @@ -72,7 +72,7 @@ window.flux = { this.options.transitions = newTrans; this.images = []; - this.imageData = []; + this["imageData"] = []; this.imageLoadedCount = 0; this.currentImageIndex = 0; this.nextImageIndex = 1; @@ -89,7 +89,7 @@ window.flux = { window.location = $(event.target).data('href'); }); - this.imageContainer = $('
').css({ + this.imageContainer = $('
').css({ 'position': 'relative', 'overflow': 'hidden', 'min-height': '100px', @@ -105,8 +105,8 @@ window.flux = { } // Create the placeholders for the current and next image - this.image1 = $('
').appendTo(this.imageContainer); - this.image2 = $('
').appendTo(this.imageContainer); + this.image1 = $('
').appendTo(this.imageContainer); + this.image2 = $('
').appendTo(this.imageContainer); $(this.image1).add(this.image2).css({ 'position': 'absolute', @@ -114,21 +114,6 @@ window.flux = { 'left': '0px' }); - // Get a list of the images to use - this.element.find('img, a img').each(function (index, found_img) { - var imgClone = found_img.cloneNode(false), - link = $(found_img).parent(); - - // If this img is directly inside a link then save the link for later use - if (link.is('a')) - $(imgClone).data('href', link.attr('href')); - - _this.images.push(imgClone); - - // Remove the images from the DOM - $(found_img).remove(); - }); - // Load the images afterwards as IE seems to load images synchronously for (var i = 0; i < this.images.length; i++) { var image = new Image(); @@ -230,8 +215,8 @@ window.flux = { this.setNextIndex(index); // Temporarily stop the transition interval - // clearInterval(this.interval); - // this.interval = null; + // clearInterval(this.interval); + // this.interval = null; this.setupImages(); this.transition(trans, opts); @@ -270,8 +255,8 @@ window.flux = { clearImageById: function (id) { for (var i in this.images) { if (this.images[i].id === id) { - this.imageData.splice(i, 1); this.images.splice(i, 1); + this.imageData.splice(i, 1); } } }, @@ -463,7 +448,6 @@ window.flux = { }, getImageData: function (index) { index = index % this.imageData.length; - return this.imageData[index]; }, setNextIndex: function (nextIndex) { diff --git a/public/js/preview.js b/public/js/preview.js index 385a62f..c199b86 100644 --- a/public/js/preview.js +++ b/public/js/preview.js @@ -93,7 +93,7 @@ socket.on('callback.preview', function (data) { function setBackground() { - background = "/background/" + bundleData.bundleName + "/" + bundleData.background; + background = "/background/" + bundleData.background; var video = document.getElementById("bgvid"); var bg = $("#bg"); @@ -143,19 +143,6 @@ function fixCanvas() { canvas.calcOffset(); } -function override() { - var obj = canvas.toJSON(['id']); - var video = document.getElementById("bgvid"); - var bg = ""; - if (video.src.indexOf(".mp4") !== -1) { - bg = video.src; - } else { - bg = video.poster; - } - - socket.emit("admin.override", {json: obj, displayId: displayId, background: bg}); -} - function nextSlide(data, updateOptions) { serverOptions = data.serverOptions; diff --git a/routes/admin.js b/routes/admin.js index 6f3ade5..ea650ae 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -143,7 +143,7 @@ module.exports = function (websocket, dispatcher) { router.get('/ajax/imagelist', function (req, res, next) { let bundle = req.query['bundle']; - let bundleRoot = path.normalize("./data/bundles" + bundle); + let bundleRoot = path.normalize("./data/bundles/" + bundle); let bundleImages = fs.readdirSync(bundleRoot + "/images", { dotfiles: false }); diff --git a/views/admin/editSlide.twig b/views/admin/editSlide.twig index 20d9010..61f3a3e 100644 --- a/views/admin/editSlide.twig +++ b/views/admin/editSlide.twig @@ -66,7 +66,8 @@
{{ t("actions.save") }} {% if displayId != null %} - {{ t("actions.announce") }} + {{ t("actions.announce") }} {% endif %} {{ t("actions.announceAll") }} {{ t("actions.cancel") }} @@ -155,8 +156,10 @@
-
-
+
+
+
+