filo_caspar/app/status/index.js

107 lines
2.4 KiB
JavaScript

const socket = require('../shared/socket')
const m = require('mithril')
const Status = {
oninit: function() {
this.current = []
this.connected = socket.connected
this.status = {
connected: false,
playing: false,
}
socket.on('casparcg.status', data => {
this.status = data
m.redraw()
})
socket.on('content.list', data => {
this.current = data
m.redraw()
})
socket.on('connect', () => this.updateConnected(true))
socket.on('disconnect', () => this.updateConnected(false))
},
updateConnected: function(connected) {
this.connected = connected
m.redraw()
},
hide: function(item) {
socket.emit('content.hide', {
name: item.name,
})
},
view: function() {
return [
m('header', [
m('h2', 'Active graphics:'),
m('div.status', {
class: this.status.connected && 'green',
}, 'connected'),
m('div.status', {
class: this.status.playing && 'green',
}, 'playing'),
]),
this.current.map(item =>
m('div.item', { key: `header-${item.id}` }, [
m('h3', `${item.name} - ${item.display}`),
m('button', {
onclick: () => this.hide(item),
}, 'Hide'),
])
),
this.current.length === 0 && m('div.empty', 'No active graphics') || null,
!this.connected && m('div.disconnected', `
Lost connection with server, Attempting to reconnect
`) || null,
]
},
}
m.mount(document.getElementById('container'), Status)
// var engines = {
// text: require('./text'),
// countdown: require('./countdown'),
// schedule: require('./schedule'),
// }
// function display(data) {
// var exists = document.getElementById(data.graphic.name)
// var engine = data.graphic.engine
// if (exists) {
// exists.innerHtml = data.html
// exists.tag.innerHtml = data.css
// engines[engine].update(data)
// return
// }
// if (engines[engine]) {
// engines[engine].init(data)
// }
// }
// socket.on('client.display', display)
// socket.on('client.hide', function (data) {
// var exists = document.getElementById(data.name)
// if (exists) {
// exists.classList.remove('root-element-display')
// window.setTimeout(function () {
// exists.tag.remove()
// exists.remove()
// }, 1500)
// }
// })
// socket.on('client.reset', function(data) {
// data.forEach(display)
// })