108 lines
No EOL
3.5 KiB
JavaScript
108 lines
No EOL
3.5 KiB
JavaScript
var CameraAddress = "http://Studio-Camera-6K-Pro.local"
|
|
var CameraAPIAddress = CameraAddress+"/control/api/v1"
|
|
|
|
var Camera = {
|
|
"maximumAperture": 100.0,
|
|
"minimumAperture": 0.0
|
|
}
|
|
|
|
function sleep(ms) {
|
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
}
|
|
|
|
function getIrisBounds() {
|
|
// First we get the maximum aperture of the lens
|
|
var requestBody = {"apertureStop": 100.0};
|
|
sendRequest("PUT",CameraAPIAddress+"/lens/iris",JSON.stringify(requestBody));
|
|
sleep(1000).then(() =>
|
|
sendRequest("GET",CameraAPIAddress+"/lens/iris").then(function(value) {
|
|
Camera.maximumAperture = parseFloat(value.apertureStop);
|
|
})
|
|
);
|
|
|
|
// Then we get the minimum aperture of the lens
|
|
requestBody = {"apertureStop": 0.0};
|
|
sleep(1500).then(() =>
|
|
sendRequest("PUT",CameraAPIAddress+"/lens/iris",JSON.stringify(requestBody))
|
|
);
|
|
sleep(2500).then(() =>
|
|
sendRequest("GET",CameraAPIAddress+"/lens/iris").then(function(value) {
|
|
Camera.minimumAperture = parseFloat(value.apertureStop);
|
|
})
|
|
);
|
|
|
|
sleep(3000).then(() => {
|
|
var irisRangeSlider = document.getElementById("irisRange");
|
|
irisRangeSlider.value = 0.0;
|
|
|
|
upadteIrisTextLabels();
|
|
});
|
|
}
|
|
|
|
function sendButtonPressed() {
|
|
const requestRadioGET = document.getElementById("requestTypeGET");
|
|
|
|
const requestEndpointText = document.getElementById("queryName").value;
|
|
|
|
const requestMethod = (requestRadioGET.checked ? "GET" : "PUT");
|
|
const requestURL = CameraAPIAddress+requestEndpointText;
|
|
const requestData = document.getElementById("queryBody").value;
|
|
|
|
console.log("Method: ",requestMethod);
|
|
console.log("URL: ",requestURL);
|
|
console.log("Data: ",requestData);
|
|
|
|
sendRequest(requestMethod,requestURL,requestData);
|
|
};
|
|
|
|
async function sendRequest(method, url, data) {
|
|
const xhttp = new XMLHttpRequest();
|
|
var responseObject;
|
|
|
|
xhttp.onload = function() {
|
|
if (this.responseText) {
|
|
document.getElementById("responseTextParagraph").innerHTML = this.responseText;
|
|
responseObject = JSON.parse(this.responseText);
|
|
} else {
|
|
document.getElementById("responseTextParagraph").innerHTML = this.statusText;
|
|
responseObject = {"status": this.statusText};
|
|
}
|
|
}
|
|
|
|
xhttp.open(method, url, false);
|
|
xhttp.send(data);
|
|
|
|
return responseObject;
|
|
}
|
|
|
|
function onBodyLoad() {
|
|
document.getElementById("documentationLink").href = CameraAddress+"/control/documentation.html";
|
|
document.getElementById("mediaManagerLink").href = CameraAddress;
|
|
|
|
getIrisBounds();
|
|
}
|
|
|
|
function irisInputHandler() {
|
|
// Get HTML Elements
|
|
var irisSliderValue = parseFloat(document.getElementById("irisRange").value);
|
|
|
|
// Set up request body
|
|
var requestBody = {"normalised": irisSliderValue};
|
|
|
|
// Update text labels
|
|
upadteIrisTextLabels();
|
|
|
|
// Send request
|
|
sendRequest("PUT",CameraAPIAddress+"/lens/iris",JSON.stringify(requestBody));
|
|
}
|
|
|
|
function upadteIrisTextLabels() {
|
|
var irisDisplayText = document.getElementById("currentIrisNumber");
|
|
var irisSliderValue = parseFloat(document.getElementById("irisRange").value);
|
|
|
|
var apertureStop = irisSliderValue;
|
|
irisDisplayText.innerHTML = parseFloat(Camera.minimumAperture + (apertureStop*(Camera.maximumAperture-Camera.minimumAperture))).toFixed(1);
|
|
|
|
document.getElementById("irisRangeMinLabel").innerHTML = Camera.minimumAperture.toFixed(1);
|
|
document.getElementById("irisRangeMaxLabel").innerHTML = Camera.maximumAperture.toFixed(1);
|
|
} |