mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-11-13 20:01:46 -05:00
167 lines
6.2 KiB
HTML
167 lines
6.2 KiB
HTML
|
<!doctype html>
|
||
|
<html lang="en" style="height:100%;min-height:100%;">
|
||
|
<head>
|
||
|
<title>SDRangel Aladin</title>
|
||
|
|
||
|
<style>
|
||
|
.aladin-fov {
|
||
|
display: none;
|
||
|
visibility: hidden
|
||
|
}
|
||
|
.aladin-location {
|
||
|
display: none;
|
||
|
visibility: hidden
|
||
|
}
|
||
|
</style>
|
||
|
</head>
|
||
|
<body style="margin:0;padding:0;height:100%;">
|
||
|
|
||
|
<div id="aladin-lite-div" style="width:100%;height:100%;"></div>
|
||
|
<script type="text/javascript" src="https://aladin.cds.unistra.fr/AladinLite/api/v3/latest/aladin.js" charset="utf-8"></script>
|
||
|
<script type="text/javascript">
|
||
|
let aladin;
|
||
|
A.init.then(() => {
|
||
|
// Create Aladin
|
||
|
aladin = A.aladin('#aladin-lite-div', {
|
||
|
survey: "P/DSS2/color",
|
||
|
fov: 60,
|
||
|
showProjectionControl: false,
|
||
|
showFrame: false,
|
||
|
fullScreen: true, // fullScreen in terms of the div element, not the entire monitor
|
||
|
showFullscreenControl: false,
|
||
|
showGotoControl: false,
|
||
|
showZoomControl: false,
|
||
|
showSimbadPointerControl: true,
|
||
|
showContextMenu: true
|
||
|
});
|
||
|
|
||
|
// Load some catalogs, but don't show them - displayLabel doesn't seem to work for these ProgressiveCat only Catalog
|
||
|
let hips = A.catalogHiPS('https://axel.u-strasbg.fr/HiPSCatService/Simbad', { onClick: 'showTable', name: 'Simbad' });
|
||
|
hips.isShowing = false;
|
||
|
aladin.addCatalog(hips);
|
||
|
hips = A.catalogHiPS('http://axel.u-strasbg.fr/HiPSCatService/I/345/gaia2', { onClick: 'showTable', color: 'orange', name: 'Gaia' });
|
||
|
hips.isShowing = false;
|
||
|
aladin.addCatalog(hips);
|
||
|
|
||
|
// Report ra/dec/time
|
||
|
setInterval(function () { reportView(); }, 100);
|
||
|
|
||
|
reportReady();
|
||
|
});
|
||
|
|
||
|
// Stop browser popup menu from appearing over the top of the Aladin menu
|
||
|
document.addEventListener('contextmenu', event => event.preventDefault());
|
||
|
</script>
|
||
|
|
||
|
<script type="text/javascript">
|
||
|
|
||
|
// Use WebSockets for handling commands from SDRangel Plugin
|
||
|
// and sending events back to it
|
||
|
let socket = new WebSocket("ws://127.0.0.1:$WS_PORT$");
|
||
|
|
||
|
var antennaHpbw = 5.0;
|
||
|
var antennaOverlay;
|
||
|
var antennaCircle;
|
||
|
|
||
|
socket.onmessage = function (event) {
|
||
|
try {
|
||
|
const command = JSON.parse(event.data);
|
||
|
|
||
|
if (command.command == "setView") {
|
||
|
aladin.gotoRaDec(command.ra * 15.0, command.dec); // Convert RA from hours to degrees, J2000
|
||
|
} else if (command.command == "setPosition") {
|
||
|
// Not supported
|
||
|
} else if (command.command == "projection") {
|
||
|
aladin.setProjection(command.projection);
|
||
|
} else if (command.command == "setDateTime") {
|
||
|
// Not supported
|
||
|
} else if (command.command == "track") {
|
||
|
aladin.gotoObject(command.name);
|
||
|
} else if (command.command == "setBackground") {
|
||
|
aladin.setImageSurvey(command.background);
|
||
|
} else if (command.command == "setProjection") {
|
||
|
aladin.setProjection(command.projection);
|
||
|
} else if (command.command == "showNames") {
|
||
|
for (var i = 0; i < aladin.view.catalogs.length; i++) {
|
||
|
aladin.view.catalogs[i].displayLabel = command.show;
|
||
|
}
|
||
|
aladin.view.requestRedraw();
|
||
|
} else if (command.command == "showConstellations") {
|
||
|
// Not supported
|
||
|
} else if (command.command == "showReticle") {
|
||
|
aladin.showReticle(command.show);
|
||
|
} else if (command.command == "showGrid") {
|
||
|
if (command.show) {
|
||
|
aladin.showCooGrid();
|
||
|
} else {
|
||
|
aladin.hideCooGrid();
|
||
|
}
|
||
|
} else if (command.command == "showAntennaFoV") {
|
||
|
if (command.show) {
|
||
|
showAntennaFoV();
|
||
|
} else {
|
||
|
hideAntennaFoV();
|
||
|
}
|
||
|
} else if (command.command == "setAntennaFoV") {
|
||
|
antennaHpbw = command.hpbw;
|
||
|
if (antennaCircle) {
|
||
|
antennaCircle.setRadius(antennaHpbw);
|
||
|
}
|
||
|
} else {
|
||
|
console.log(`Unknown command ${command.command}`);
|
||
|
}
|
||
|
|
||
|
} catch (e) {
|
||
|
console.log(`Erroring processing received message:\n${e}\n${event.data}`);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
function createAntennaFoV() {
|
||
|
antennaOverlay = A.graphicOverlay({ color: '#ffffff', lineWidth: 1 });
|
||
|
aladin.addOverlay(antennaOverlay);
|
||
|
const [ra, dec] = aladin.getRaDec();
|
||
|
antennaCircle = A.circle(ra, dec, antennaHpbw);
|
||
|
antennaOverlay.add(antennaCircle);
|
||
|
}
|
||
|
|
||
|
function showAntennaFoV() {
|
||
|
antennaCircle.show();
|
||
|
}
|
||
|
|
||
|
function hideAntennaFoV() {
|
||
|
antennaCircle.hide();
|
||
|
}
|
||
|
|
||
|
function reportReady() {
|
||
|
console.log("reportReady " + socket.readyState);
|
||
|
|
||
|
createAntennaFoV();
|
||
|
|
||
|
if (socket.readyState === 1) {
|
||
|
socket.send(JSON.stringify({
|
||
|
event: "ready"
|
||
|
}));
|
||
|
} else {
|
||
|
setTimeout(reportReady, 100);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function reportView() {
|
||
|
if (socket.readyState === 1) {
|
||
|
const [ra, dec] = aladin.getRaDec();
|
||
|
const [fovX, fovY] = aladin.getFov();
|
||
|
socket.send(JSON.stringify({
|
||
|
event: "view",
|
||
|
ra: ra / 15.0, // Convert RA from degrees to hours
|
||
|
dec: dec,
|
||
|
fov: fovX
|
||
|
}));
|
||
|
|
||
|
antennaCircle.setCenter([ra, dec]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
</script>
|
||
|
</body>
|
||
|
</html>
|