forked from Simnation/Main
203 lines
6.4 KiB
JavaScript
203 lines
6.4 KiB
JavaScript
window.onload = (e) => {
|
|
window.addEventListener('message', onMessageRecieved);
|
|
};
|
|
|
|
let config = {
|
|
timeFormat: 0,
|
|
dateFormat: 0
|
|
};
|
|
let lastZoomBarLength = 243; // (243px, default for 1920:1080)
|
|
const months = {
|
|
1: 'JAN', 2: 'FEB', 3: 'MAR', 4: 'APR', 5: 'MAY', 6: 'JUN', 7: 'JUL', 8: 'AUG', 9: 'SEP', 10: 'OCT', 11: 'NOV', 12: 'DEC'
|
|
};
|
|
|
|
function FormatDate(day, month, year) {
|
|
let date;
|
|
switch(config.dateFormat) {
|
|
case 0:
|
|
date = month+"/"+day+"/"+year.slice(-2); // 0 = MM/DD/YY
|
|
break;
|
|
case 1:
|
|
date = day+"/"+month+"/"+year.slice(-2); // 1 = DD/MM/YY
|
|
break;
|
|
case 2:
|
|
date = year.slice(-2)+"/"+month+"/"+day; // 2 = YY/MM/DD
|
|
break;
|
|
case 3:
|
|
date = day+"-"+months[month]+"-"+year; // 2 = DD-Mon-YYYY
|
|
break;
|
|
default:
|
|
console.log("Error: date format was invalid!");
|
|
}
|
|
|
|
$("#date").text(date);
|
|
};
|
|
|
|
function UpdateZuluTime() {
|
|
const date = new Date();
|
|
const hours = date.getUTCHours().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
const minutes = date.getUTCMinutes().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
const seconds = date.getUTCSeconds().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
const time = hours+":"+minutes+":"+seconds+" Z";
|
|
$("#time").text(time);
|
|
|
|
const day = date.getUTCDate().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
let month = date.getUTCMonth()+1; month = month.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
const year = date.getUTCFullYear().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
|
|
FormatDate(day, month, year);
|
|
};
|
|
|
|
function UpdateOSTime() {
|
|
const date = new Date();
|
|
let hours = date.getHours().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
let minutes = date.getMinutes().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
let seconds = date.getSeconds().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
|
|
let time = hours+":"+minutes+":"+seconds
|
|
$("#time").text(time);
|
|
};
|
|
|
|
function UpdateOSDate() {
|
|
const date = new Date();
|
|
const day = date.getDate().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
let month = date.getMonth()+1; month = month.toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
const year = date.getFullYear().toLocaleString('en-US', { minimumIntegerDigits: 2, useGrouping: false });
|
|
|
|
FormatDate(day, month, year);
|
|
};
|
|
|
|
function onMessageRecieved(event) {
|
|
let data = event.data;
|
|
|
|
if (data != undefined) {
|
|
switch(data.action) {
|
|
case 'updateData':
|
|
$.each(data.set, function(id, value) {
|
|
$("#"+id).text(value);
|
|
});
|
|
|
|
// Show/hide/change license plate
|
|
if (data.info.numberplate == false) {
|
|
$("#numberplate-wrapper").hide();
|
|
} else if (data.info.numberplate != undefined) {
|
|
$("#ta-numberplate").text(data.info.numberplate);
|
|
if (!$("#numberplate-wrapper").is(":visible")) {
|
|
$("#numberplate-wrapper").show();
|
|
};
|
|
};
|
|
|
|
// Handle time and date
|
|
if (data.info.time) {
|
|
UpdateOSDate();
|
|
$("#time").text(data.info.time);
|
|
} else {
|
|
if (config.timeFormat == 0) {
|
|
UpdateZuluTime();
|
|
} else {
|
|
UpdateOSTime();
|
|
UpdateOSDate();
|
|
};
|
|
};
|
|
break;
|
|
case 'updateDataFrame':
|
|
// Camera Pitch
|
|
$('#pitch-line').css('transform', 'rotate(' + data.pitch + 'deg)');
|
|
|
|
// Camera Relative Heading
|
|
$('#heading-line').css('transform', 'rotate(' + data.heading + 'deg)');
|
|
|
|
// Bearing
|
|
$('#bearing-img').attr('src', 'images/bearing.svg#svgView(viewBox(' + (data.bearing - 89) + ', 0, 180, 8))');
|
|
$('#bearing-directions').attr('src', 'images/bearing-directions.svg#svgView(viewBox(' + (data.bearing - 90) + ', 0, 180, 10))');
|
|
break;
|
|
case 'setVisionState':
|
|
$("#vision-state").text(data.state); // Sets text in bottom left corner
|
|
break;
|
|
case 'setZoomBarLevel':
|
|
let barLength = $("#zoom-bar").width() || lastZoomBarLength;
|
|
let barPercent = barLength / 100;
|
|
if (barLength != lastZoomBarLength) {
|
|
lastZoomBarLength = barLength;
|
|
};
|
|
|
|
barLength = barLength - barPercent * 17.5 // Reduce the bar length by 17.5% to compensate for overflow
|
|
let pixels = barLength / 100 * data.percentage + barPercent * 5;
|
|
$("#zoom-arrow").css("margin-left", pixels + "px");
|
|
break;
|
|
case 'open':
|
|
$("#wrapper").show();
|
|
break;
|
|
case 'close':
|
|
$("#wrapper").hide();
|
|
break;
|
|
case 'startLockScanning':
|
|
$("#lock-bar-container").show();
|
|
$("#lock-bar-progress").stop().css({"width": 0}).animate({
|
|
width: 11 +'%'
|
|
}, {
|
|
duration: parseInt(200),
|
|
});
|
|
break;
|
|
case 'updateLockScanning':
|
|
const end = data.value * 10 + 1
|
|
$("#lock-bar-progress").stop().animate({
|
|
width: end+'%'
|
|
}, {
|
|
duration: parseInt(200),
|
|
easing : "linear"
|
|
});
|
|
break;
|
|
case 'lockScanningFinished':
|
|
$("#lock-bar-container").hide();
|
|
break;
|
|
case 'setCameraLockState':
|
|
if (data.state == true) {
|
|
$("#lock-state").addClass("lock-state-active");
|
|
} else {
|
|
$("#lock-state").removeClass("lock-state-active");
|
|
};
|
|
$("#lock-type").text(data.type);
|
|
break;
|
|
case 'setCameraLabel':
|
|
$("#camera-label").text(data.label);
|
|
break;
|
|
case 'setConfigData':
|
|
$.each(data.set, function(id, value) {
|
|
$("#"+id).text(value);
|
|
});
|
|
|
|
if (data.showLatitudeLongitude == true) {
|
|
$("#hi-latitude").show();
|
|
$("#hi-longitude").show();
|
|
$("#ta-latitude").show();
|
|
$("#ta-longitude").show();
|
|
} else {
|
|
$(".street").css('display', 'inline-block');
|
|
};
|
|
|
|
if (data.showLicensePlate == false) {
|
|
$("#numberplate-wrapper").hide();
|
|
};
|
|
|
|
if (data.hideMinimap == false) {
|
|
$("#camera-info").css("bottom", data.zoomBarOffset+"%");
|
|
};
|
|
|
|
if (data.showInstructions == true) {
|
|
$("#relative-info").css("bottom", "6%");
|
|
if (data.hideMinimap == true) {
|
|
$("#camera-info").css("bottom", "6%");
|
|
};
|
|
};
|
|
|
|
config.timeFormat = data.timeFormat;
|
|
config.dateFormat = data.dateFormat;
|
|
break;
|
|
default:
|
|
console.log("Error: spesifed action was not found!", data.action);
|
|
}
|
|
} else {
|
|
console.log("Error: data was not defined!");
|
|
};
|
|
};
|