Files
mz25key/webserver/js/mouse.js
2022-09-04 17:05:08 +01:00

142 lines
4.3 KiB
JavaScript

// Method to display a message in a message field. The existing html is saved and replaced
// with the new html. After a timeout period the original html is restored.
//
$origMessage = null;
$origId = null;
$msgTimerId = null;
function showMessage(timeout, id, message)
{
// Is this a new message whilst one is active?
if($origMessage !== null)
{
// Cancel timer and restore original message.
clearTimeout($msgTimerId);
$('#' + $origId).html($origMessage);
}
// Store original message and Id so that on timer expiry it can be replaced..
$origMessage = $('#' + id).html();
$origId = id;
// Change HTML and set timer to restore it.
$('#' + id).html(message);
$msgTimerId = setTimeout(function(msgFieldId)
{
$('#' + msgFieldId).html($origMessage);
$origMessage = null;
}, timeout, id);
}
// Method to enable the correct side-bar menu for the underlying host interface.
function enableIfConfig()
{
// Disable keymap if no host is connected to the SharpKey. KeyInterface is the base class which exists when
// no host was detected to invoke a host specific sub-class.
if(activeInterface === "KeyInterface ")
{
document.getElementById("keyMapAvailable").style.display = 'none';
}
// Mouse interface active?
else if(activeInterface === "Mouse ")
{
document.getElementById("keyMapAvailable").style.display = 'none';
document.getElementById("mouseCfgAvailable").style.display = 'compact';
} else
{
document.getElementById("keyMapAvailable").style.display = 'compact';
// Secondary interface available?
if(secondaryInterface == "Mouse ")
{
document.getElementById("mouseCfgAvailable").style.display = 'compact';
} else
{
document.getElementById("mouseCfgAvailable").style.display = 'none';
}
}
}
// Method to convert a string/numeric into a hex number and range check it to be within and 8bit unsigned range.
function hexConvert(inVal, invert)
{
if(isNaN(inVal) == true && isNaN('0x' + inVal) == false)
{
inVal = parseInt(inVal, 16);
}
else if(isNaN(inVal) == false && typeof inVal == 'string' && inVal.length > 0)
{
if(inVal.toUpperCase().indexOf("0X") == 0)
{
inVal = parseInt(inVal, 16);
} else
{
inVal = parseInt(inVal, 10);
}
}
else if(isNaN(inVal) == true || inVal.length == 0)
{
inVal = 0;
}
if(inVal < 0)
{
inVal = 0;
}
else if(inVal > 255)
{
inVal = 255;
}
if(invert == true)
{
inVal = (~inVal) & 0xFF;
}
return('0x' + (inVal).toString(16).toUpperCase());
}
$(document).ready(function() {
// Setup the menu options according to underlying interface.
enableIfConfig();
// AJAX code to post in a controlled manner so that we can receive back an error/success message to the commit.
$("#mouseHostCfgSave").submit( function(e)
{
var form = $(this);
var actionUrl = form.attr('action');
// Prevent default submit action, we want to manually submit and be able to receive a response for errors/success.
e.preventDefault();
$.ajax(
{
type: "POST",
url: actionUrl,
data: form.serialize(), // serializes the form's elements.
success: function(data)
{
// Show the message then revert back to original text.
showMessage(10000, "mouseHostCfgMsg", data);
}
});
});
$("#mousePS2CfgSave").submit( function(e)
{
var form = $(this);
var actionUrl = form.attr('action');
// Prevent default submit action, we want to manually submit and be able to receive a response for errors/success.
e.preventDefault();
$.ajax(
{
type: "POST",
url: actionUrl,
data: form.serialize(), // serializes the form's elements.
success: function(data)
{
// Show the message then revert back to original text.
showMessage(10000, "mousePS2CfgMsg", data);
}
});
});
});