UNPKG

@rcsb/rcsb-saguaro-app

Version:
71 lines (70 loc) 3.53 kB
"use strict"; 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;