Add error callback for catalogFromVizier, catalogFromSimbad/NED/SkyBot. Use the proxy for NED queries

Co-authored-by: szpetny <>
This commit is contained in:
bmatthieu3
2023-05-16 10:09:09 +02:00
parent c18c586f5d
commit 706ea7a672
3 changed files with 32 additions and 18 deletions

View File

@@ -1871,7 +1871,7 @@ A.MOCFromJSON = function (jsonMOC, options) {
// TODO: try first without proxy, and then with, if param useProxy not set
// API
A.catalogFromURL = function (url, options, successCallback, useProxy) {
A.catalogFromURL = function (url, options, successCallback, errorCallback, useProxy) {
var catalog = A.catalog(options);
Catalog.parseVOTable(
url,
@@ -1896,6 +1896,7 @@ A.catalogFromURL = function (url, options, successCallback, useProxy) {
successCallback(sources);
}
},
errorCallback,
catalog.maxNbSources,
useProxy,
catalog.raField, catalog.decField
@@ -1906,17 +1907,17 @@ A.catalogFromURL = function (url, options, successCallback, useProxy) {
// API
// @param target: can be either a string representing a position or an object name, or can be an object with keys 'ra' and 'dec' (values being in decimal degrees)
A.catalogFromSimbad = function (target, radius, options, successCallback) {
A.catalogFromSimbad = function (target, radius, options, successCallback, errorCallback) {
options = options || {};
if (!('name' in options)) {
options['name'] = 'Simbad';
}
var url = URLBuilder.buildSimbadCSURL(target, radius);
return A.catalogFromURL(url, options, successCallback, false);
return A.catalogFromURL(url, options, successCallback, errorCallback, false);
};
// API
A.catalogFromNED = function (target, radius, options, successCallback) {
A.catalogFromNED = function (target, radius, options, successCallback, errorCallback) {
options = options || {};
if (!('name' in options)) {
options['name'] = 'NED';
@@ -1939,29 +1940,29 @@ A.catalogFromNED = function (target, radius, options, successCallback) {
}
}
return A.catalogFromURL(url, options, successCallback);
return A.catalogFromURL(url, options, successCallback, errorCallback, true);
};
// API
A.catalogFromVizieR = function (vizCatId, target, radius, options, successCallback) {
A.catalogFromVizieR = function (vizCatId, target, radius, options, successCallback, errorCallback) {
options = options || {};
if (!('name' in options)) {
options['name'] = 'VizieR:' + vizCatId;
}
var url = URLBuilder.buildVizieRCSURL(vizCatId, target, radius, options);
return A.catalogFromURL(url, options, successCallback, false);
return A.catalogFromURL(url, options, successCallback, errorCallback, false);
};
// API
A.catalogFromSkyBot = function (ra, dec, radius, epoch, queryOptions, options, successCallback) {
A.catalogFromSkyBot = function (ra, dec, radius, epoch, queryOptions, options, successCallback, errorCallback) {
queryOptions = queryOptions || {};
options = options || {};
if (!('name' in options)) {
options['name'] = 'SkyBot';
}
var url = URLBuilder.buildSkyBotCSURL(ra, dec, radius, epoch, queryOptions);
return A.catalogFromURL(url, options, successCallback, false);
return A.catalogFromURL(url, options, successCallback, errorCallback, false);
};
A.hipsDefinitionFromURL = function(url, successCallback) {

View File

@@ -300,10 +300,10 @@ export let Catalog = (function() {
// return an array of Source(s) from a VOTable url
// callback function is called each time a TABLE element has been parsed
Catalog.parseVOTable = function(url, callback, maxNbSources, useProxy, raField, decField) {
Catalog.parseVOTable = function(url, successCallback, errorCallback, maxNbSources, useProxy, raField, decField) {
VOTable.parse(
url,
(fields, rows, type) => {
(fields, rows) => {
let sources = [];
let footprints = [];
@@ -350,10 +350,12 @@ export let Catalog = (function() {
return true;
})
if (callback) {
callback(sources, footprints, fields);
if (successCallback) {
successCallback(sources, footprints, fields);
}
},
errorCallback,
useProxy,
raField,
decField
)

View File

@@ -32,19 +32,23 @@ import { Utils } from "./../Utils.js";
export let VOTable = (function() {
function VOTable(url, callback) {
function VOTable(url, successCallback, errorCallback) {
fetch(url)
.then((response) => response.text())
.then((xml) => {
ALEvent.AL_USE_WASM.dispatchedTo(document.body, {callback: (wasm) => {
let votable = wasm.parseVOTable(xml);
callback(votable);
successCallback(votable);
}});
})
.catch((e) => errorCallback(e))
};
VOTable.parse = function (url, callback, raField, decField) {
url = Utils.handleCORSNotSameOrigin(url);
VOTable.parse = function (url, successCallback, errorCallback, useProxy, raField, decField) {
if(useProxy) {
url = Utils.handleCORSNotSameOrigin(url);
}
fetch(url)
.then((response) => response.text())
@@ -79,7 +83,7 @@ export let VOTable = (function() {
let rows = data.get("rows");
if (rows) {
callback(fields, rows)
successCallback(fields, rows)
}
}
})
@@ -88,6 +92,13 @@ export let VOTable = (function() {
}
})
})
.catch((e) => {
if (errorCallback) {
errorCallback(e);
} else {
throw e;
}
})
};
// return an array of Source(s) from a VOTable url