@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
71 lines (70 loc) • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NcbiGenomeSequenceData = void 0;
const tslib_1 = require("tslib");
const rxjs_1 = require("rxjs");
const web_resources_json_1 = tslib_1.__importDefault(require("../../RcsbServerConfig/web.resources.json"));
class NcbiGenomeSequenceData {
static update(ncbiId, strand, reverse, trackWidth) {
let process = null;
return (where) => {
if (process)
process.unsubscribe();
return new Promise((resolve, reject) => {
const delta = trackWidth ? trackWidth / (where.to - where.from) : 1000 / (where.to - where.from);
if (delta > 4) {
let N = 0;
const timeout = 5000;
const getGenomeSequence = () => {
const Http = new XMLHttpRequest();
Http.timeout = timeout;
const url = NcbiGenomeSequenceData.urlPrefix + 'id=' + ncbiId + '&from=' + where.from + '&to=' + where.to + '&strand=' + strand + NcbiGenomeSequenceData.urlSuffix;
Http.open("GET", url);
Http.send();
Http.onloadend = (e) => {
const sequence = Http.responseText.split("\n").slice(1).join("");
if (sequence.length < 1) {
N++;
console.warn("HTTP error while access URL: " + url + " - empty sequence - " + N);
if (N < 4) {
process = rxjs_1.asyncScheduler.schedule(() => {
getGenomeSequence();
}, timeout);
}
else {
reject("HTTP error while access URL: " + url + " - No more attempts after " + N);
}
}
else {
const selectedOption = [{
begin: where.from,
label: reverse ? sequence.split("").reverse().join("") : sequence
}];
resolve(selectedOption);
}
};
Http.onerror = (e) => {
N++;
console.warn("HTTP error while access URL: " + url + " - " + N);
if (N < 4) {
process = rxjs_1.asyncScheduler.schedule(() => {
getGenomeSequence();
}, timeout);
}
else {
reject("HTTP error while access URL: " + url + " - No more attempts after " + N);
}
};
};
getGenomeSequence();
}
else {
resolve([]);
}
});
};
}
}
exports.NcbiGenomeSequenceData = NcbiGenomeSequenceData;
NcbiGenomeSequenceData.urlPrefix = web_resources_json_1.default.ncbi_genome_sequence.url;
NcbiGenomeSequenceData.urlSuffix = web_resources_json_1.default.ncbi_genome_sequence.url_suffix;