mirror of
https://github.com/cds-astro/aladin-lite.git
synced 2026-01-07 02:24:59 -08:00
83 lines
3.6 KiB
JavaScript
83 lines
3.6 KiB
JavaScript
// Copyright 2018 - UDS/CNRS
|
|
// The Aladin Lite program is distributed under the terms
|
|
// of the GNU General Public License version 3.
|
|
//
|
|
// This file is part of Aladin Lite.
|
|
//
|
|
// Aladin Lite is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, version 3 of the License.
|
|
//
|
|
// Aladin Lite is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// The GNU General Public License is available in COPYING file
|
|
// along with Aladin Lite.
|
|
//
|
|
|
|
|
|
|
|
/******************************************************************************
|
|
* Aladin Lite project
|
|
*
|
|
* File SimbadPointer.js
|
|
*
|
|
* The SIMBAD pointer will query Simbad for a given position and radius and
|
|
* return information on the object with
|
|
*
|
|
* Author: Thomas Boch [CDS]
|
|
*
|
|
*****************************************************************************/
|
|
import { Coo } from "./libs/astro/coo.js";
|
|
import { Utils } from "./Utils";
|
|
import { AladinUtils } from "./AladinUtils.js";
|
|
|
|
export let SimbadPointer = (function() {
|
|
const SimbadPointer = {};
|
|
|
|
SimbadPointer.MIRRORS = ['https://alasky.cds.unistra.fr/cgi/simbad-flat/simbad-quick.py', 'https://alaskybis.cds.unistra.fr/cgi/simbad-flat/simbad-quick.py']; // list of base URL for Simbad pointer service
|
|
|
|
|
|
SimbadPointer.query = function(ra, dec, radiusDegrees, aladinInstance) {
|
|
var coo = new Coo(ra, dec, 7);
|
|
var params = {"Ident": coo.format('s/'), "SR": radiusDegrees};
|
|
|
|
Utils.loadFromUrls(SimbadPointer.MIRRORS, {contentType: "text/plain", data: params, dataType: 'text'})
|
|
.then((result) => {
|
|
|
|
var regexp = /(.*?)\/(.*?)\((.*?),(.*?)\)/g;
|
|
var match = regexp.exec(result);
|
|
if (match) {
|
|
var objCoo = new Coo();
|
|
objCoo.parse(match[1]);
|
|
var objName = match[2];
|
|
var title = '<div class="aladin-sp-title"><a target="_blank" href="https://simbad.cds.unistra.fr/simbad/sim-id?Ident=' + encodeURIComponent(objName) + '">' + objName + '</a></div>';
|
|
var content = '<div class="aladin-sp-content">';
|
|
content += '<em>Type: </em>' + match[4] + '<br>';
|
|
var magnitude = match[3];
|
|
if (Utils.isNumber(magnitude)) {
|
|
content += '<em>Mag: </em>' + magnitude + '<br>';
|
|
}
|
|
content += '<br><a target="_blank" href="http://cdsportal.u-strasbg.fr/?target=' + encodeURIComponent(objName) + '">Query in CDS portal</a>';
|
|
content += '</div>';
|
|
|
|
aladinInstance.showPopup(objCoo.lon, objCoo.lat, title, content);
|
|
}
|
|
else {
|
|
let noMatchTitle = '<div class="aladin-sp-title">Ohoh</div>';
|
|
let formattedRadiusString = AladinUtils.degreesToString(radiusDegrees);
|
|
let noMatchContent = '<div class="aladin-sp-content">No match was found on <a href="https://simbad.cds.unistra.fr/simbad">Simbad</a> in ' + formattedRadiusString + ' around this point.</div>';
|
|
aladinInstance.showPopup(coo.lon, coo.lat, noMatchTitle, noMatchContent);
|
|
}
|
|
})
|
|
.catch((e) => {
|
|
aladinInstance.hidePopup();
|
|
})
|
|
};
|
|
|
|
return SimbadPointer;
|
|
})();
|
|
|