fix: add machine actions to 'Dashboard > Machine Details'

This commit is contained in:
João Leal 2021-04-23 15:01:39 +01:00 committed by Josh Harvey
parent 3ac49760da
commit f69b71da65
6 changed files with 390 additions and 413 deletions

View file

@ -91,9 +91,54 @@ function getMachineName (machineId) {
.then(it => it.name)
}
function getMachine (machineId) {
function getMachine (machineId, config) {
const fullyFunctionalStatus = { label: 'Fully functional', type: 'success' }
const unresponsiveStatus = { label: 'Unresponsive', type: 'error' }
const stuckStatus = { label: 'Stuck', type: 'error' }
const sql = 'SELECT * FROM devices WHERE device_id=$1'
return db.oneOrNone(sql, [machineId]).then(res => _.mapKeys(_.camelCase)(res))
const queryMachine = db.oneOrNone(sql, [machineId]).then(r => ({
deviceId: r.device_id,
cashbox: r.cashbox,
cassette1: r.cassette1,
cassette2: r.cassette2,
version: r.version,
model: r.model,
pairedAt: new Date(r.created),
lastPing: new Date(r.last_online),
name: r.name,
paired: r.paired
}))
return Promise.all([queryMachine, dbm.machineEvents(), config])
.then(([machine, events, config]) => {
const pings = checkPings([machine])
const getStatus = (ping, stuck) => {
if (ping && ping.age) return unresponsiveStatus
if (stuck && stuck.age) return stuckStatus
return fullyFunctionalStatus
}
const addName = r => {
const cashOutConfig = configManager.getCashOut(r.deviceId, config)
const cashOut = !!cashOutConfig.active
const statuses = [
getStatus(
_.first(pings[r.deviceId]),
_.first(checkStuckScreen(events, r.name))
)
]
return _.assign(r, { cashOut, statuses })
}
return addName(machine)
})
}
function renameMachine (rec) {