54 lines
1.0 KiB
JavaScript
54 lines
1.0 KiB
JavaScript
|
export class UI {
|
||
|
constructor() {
|
||
|
document.getElementById('button-run').
|
||
|
addEventListener('click', evt=>evt.preventDefault())
|
||
|
|
||
|
document.addEventListener('keydown', evt=>this.keyHandler(evt))
|
||
|
}
|
||
|
setTrigger(t) {
|
||
|
this.trigger = t
|
||
|
}
|
||
|
run() {
|
||
|
this.trigger.run()
|
||
|
}
|
||
|
keyHandler(evt) {
|
||
|
if (evt.altKey && evt.shiftKey && evt.key == 'R') {
|
||
|
evt.preventDefault()
|
||
|
evt.stopPropagation()
|
||
|
this.run()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
export class Trigger {
|
||
|
constructor(id, name) {
|
||
|
this.id = id
|
||
|
this.name = name
|
||
|
}
|
||
|
run() {
|
||
|
const result = document.getElementById('run-result')
|
||
|
const classes = result.classList
|
||
|
const expr = document.getElementById('expr').value
|
||
|
|
||
|
fetch(`/trigger/run/${this.id}`, {
|
||
|
method: 'POST',
|
||
|
cache: 'no-cache',
|
||
|
body: expr,
|
||
|
})
|
||
|
.then(data => data.json())
|
||
|
.then(json => {
|
||
|
if (!json.OK) {
|
||
|
classes.remove('ok')
|
||
|
classes.add('error')
|
||
|
result.innerText = json.Error
|
||
|
return
|
||
|
}
|
||
|
|
||
|
classes.remove('error')
|
||
|
classes.add('ok')
|
||
|
result.innerText = json.Output
|
||
|
})
|
||
|
.catch(err => alert(err))
|
||
|
}
|
||
|
}
|