in www/secretary/workbench/views/index.js.rb [272:331]
def keydown(event)
if event.keyCode == 38
index = @messages.find_index {|m| m.href == @selected}
self.selectRow @messages[index-1] if index > 0
event.preventDefault()
elsif event.keyCode == 40
index = @messages.find_index {|m| m.href == @selected} + 1
while index < @messages.length and @messages[index].status == :deleted
index += 1
end
self.selectRow @messages[index] if index < @messages.length
event.preventDefault()
elsif event.keyCode == 13 or event.keyCode == 39
selected = @messages.find {|m| m.href == @selected}
window.location.href = selected.href if selected
elsif event.keyCode == 8 or event.keyCode == 46
if event.metaKey or event.ctrlKey
event.preventDefault()
selected = @selected
index = @messages.find_index {|m| m.href == selected}
@messages[index].status = :deletePending if index >= 0
if index > 0
self.selectRow @messages[index-1]
elsif index < @messages.length - 1
self.selectRow @messages[index+1]
else
self.selectRow nil
end
HTTP.delete(selected).then {
index = @messages.find_index {|m| m.href == selected}
@messages[index].status = :deleted if index >= 0
Status.pushDeleted selected
self.selectRow selected if @selected == selected
Vue.forceUpdate()
}.catch {|error|
alert error
}
end
elsif event.keyCode == 'Z'.ord
if event.ctrlKey or event.metaKey
unless Status.undoStack.empty?
self.undo()
event.preventDefault()
end
end
else
console.log "keydown: #{event.keyCode}"
end
end