@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
70 lines (69 loc) • 2.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const GqlTypes_1 = require("@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes");
const RcsbFvBuilder_1 = require("../RcsbFvWeb/RcsbFvBuilder");
(0, RcsbFvBuilder_1.buildInstanceSequenceFv)("pfv", "select", "8PDU", {
module: "interface",
onChangeCallback: (r) => {
console.log(r);
},
defaultValue: "A"
}, {
externalTrackBuilder: externalTrackBuilder()
}).then((module) => {
console.log(module);
});
function externalTrackBuilder() {
let myComputedTrack = {
trackId: "blockTrack",
trackHeight: 20,
trackColor: "#F9F9F9",
titleFlagColor: "#48a1b3",
displayType: "block" /* RcsbFvDisplayTypes.BLOCK */,
displayColor: "#56e0f5",
rowTitle: "COMPUTED",
trackData: [{
begin: 10,
end: 100
}]
};
return {
processAlignmentAndFeatures(data) {
return new Promise(resolve => {
var _a;
myComputedTrack.trackData = [];
(_a = data.annotations) === null || _a === void 0 ? void 0 : _a.forEach(a => {
var _a;
(_a = a.features) === null || _a === void 0 ? void 0 : _a.forEach(f => {
var _a, _b;
if (f != null && f.type === GqlTypes_1.FeaturesType.RegionOfInterest) {
if (f.feature_positions)
(_a = myComputedTrack.trackData) === null || _a === void 0 ? void 0 : _a.push(...(_b = f.feature_positions) === null || _b === void 0 ? void 0 : _b.map(p => {
var _a, _b;
return ({
begin: (_a = p === null || p === void 0 ? void 0 : p.beg_seq_id) !== null && _a !== void 0 ? _a : 0,
end: (_b = p === null || p === void 0 ? void 0 : p.end_seq_id) !== null && _b !== void 0 ? _b : undefined
});
}));
}
});
});
resolve(void 0);
});
},
addTo(tracks) {
return new Promise(resolve => {
var _a, _b;
if (((_a = tracks.rcsbContext) === null || _a === void 0 ? void 0 : _a.asymId) === "A" && (myComputedTrack === null || myComputedTrack === void 0 ? void 0 : myComputedTrack.trackData) && myComputedTrack.trackData.length > 0) {
(_b = tracks.annotationTracks) === null || _b === void 0 ? void 0 : _b.push(myComputedTrack);
}
resolve(void 0);
});
},
filterFeatures(data) {
return new Promise(resolve => {
resolve(data.annotations);
});
}
};
}