forked from platypush/platypush
on the web panel as tabs - Added support for popup notifications on the web panel - Added voice assistant interactive notifications to the web panel - Added new playing music notifications to the web panel
113 lines
3.7 KiB
JavaScript
113 lines
3.7 KiB
JavaScript
$(document).ready(function() {
|
|
var $container = $('#zb-container'),
|
|
$controlsContainer = $('.zb-controls-container'),
|
|
curDirection = undefined;
|
|
|
|
var initBindings = function() {
|
|
$controlsContainer.on('mousedown touchstart', '.zb-ctrl-btn[data-direction]', function() {
|
|
var direction = $(this).data('direction');
|
|
curDirection = direction;
|
|
console.log(direction + ' press start');
|
|
|
|
$(this).addClass('selected');
|
|
execute({
|
|
type: 'request',
|
|
action: 'gpio.zeroborg.drive',
|
|
args: {
|
|
direction: direction
|
|
}
|
|
});
|
|
});
|
|
|
|
$controlsContainer.on('mouseup touchend', '.zb-ctrl-btn[data-direction]', function() {
|
|
console.log($(this).data('direction') + ' press end');
|
|
curDirection = undefined;
|
|
|
|
$(this).removeClass('selected');
|
|
execute({
|
|
type: 'request',
|
|
action: 'gpio.zeroborg.stop',
|
|
});
|
|
});
|
|
|
|
$controlsContainer.on('click touch', '.zb-ctrl-btn[data-action]', function() {
|
|
console.log('Running ' + $(this).data('action') + ' action');
|
|
|
|
if ($(this).data('action') === 'stop') {
|
|
$controlsContainer.find('.zb-ctrl-btn[data-action=auto]').removeClass('selected');
|
|
curDirection = undefined;
|
|
|
|
execute({
|
|
type: 'request',
|
|
action: 'gpio.zeroborg.stop',
|
|
});
|
|
} else if ($(this).data('action') === 'auto') {
|
|
$(this).toggleClass('selected');
|
|
curDirection = 'auto_toggle';
|
|
|
|
execute({
|
|
type: 'request',
|
|
action: 'gpio.zeroborg.drive',
|
|
args: {
|
|
direction: 'auto_toggle'
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
var keyEventToDirection = function(event) {
|
|
var direction;
|
|
|
|
switch (event.keyCode) {
|
|
case 32: // SPACE bar
|
|
direction = 'auto'; break;
|
|
case 37: // LEFT
|
|
direction = 'left'; break;
|
|
case 38: // UP
|
|
direction = 'up'; break;
|
|
case 39: // RIGHT
|
|
direction = 'right'; break;
|
|
case 40: // DOWN
|
|
direction = 'down'; break;
|
|
default:
|
|
return;
|
|
}
|
|
|
|
return direction;
|
|
};
|
|
|
|
$container.on('keydown', function(event) {
|
|
if (curDirection) {
|
|
return;
|
|
}
|
|
|
|
var direction = keyEventToDirection(event);
|
|
if (direction) {
|
|
if (direction === 'auto') {
|
|
$controlsContainer.find('.zb-ctrl-btn[data-action=auto]').click();
|
|
} else {
|
|
$controlsContainer.find('.zb-ctrl-btn[data-direction=' + direction + ']').mousedown();
|
|
}
|
|
}
|
|
});
|
|
|
|
$container.on('keyup', function(event) {
|
|
var direction = keyEventToDirection(event);
|
|
if (direction) {
|
|
if (direction === 'auto') {
|
|
$controlsContainer.find('.zb-ctrl-btn[data-action=auto]').click();
|
|
$controlsContainer.find('.zb-ctrl-btn[data-action=stop]').click();
|
|
} else {
|
|
$controlsContainer.find('.zb-ctrl-btn[data-direction=' + direction + ']').mouseup();
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
var init = function() {
|
|
initBindings();
|
|
};
|
|
|
|
init();
|
|
});
|
|
|