@rcsb/rcsb-saguaro-3d
Version:
RCSB Molstar/Saguaro Web App
96 lines • 3.94 kB
JavaScript
import { RcsbFv3DAssembly } from "../../RcsbFv3D/RcsbFv3DAssembly";
import { FeaturesType } from "@rcsb/rcsb-api-tools/lib/RcsbGraphQL/Types/Borrego/GqlTypes";
document.addEventListener("DOMContentLoaded", function (event) {
function getJsonFromUrl() {
const url = location.search;
var query = url.substring(1);
var result = {};
query.split("&").forEach(function (part) {
var item = part.split("=");
result[item[0]] = decodeURIComponent(item[1]);
});
return result;
}
const args = getJsonFromUrl().pdbId ? getJsonFromUrl() : { pdbId: "1A0E" };
const defaultAsymId = "A";
const config = {
entryId: args.pdbId,
title: "Title " + args.pdbId,
subtitle: "Subtitle for " + args.pdbId,
asymId: defaultAsymId
};
const panel3d = new RcsbFv3DAssembly({
elementId: "null",
config: config,
instanceSequenceConfig: {
dropdownTitle: "Chain",
module: "interface",
defaultValue: defaultAsymId,
onChangeCallback: (context, module) => {
console.log(context);
}
},
additionalConfig: {
boardConfig: {
elementClickCallback: (e) => {
console.log(`Element clicked ${e === null || e === void 0 ? void 0 : e.type}`);
}
},
externalTrackBuilder: externalTrackBuilder()
},
useOperatorsFlag: true
});
panel3d.render();
});
function externalTrackBuilder() {
let myComputedTrack = {
trackId: "blockTrack",
trackHeight: 20,
trackColor: "#F9F9F9",
titleFlagColor: "#48a1b3",
displayType: "block" /* RcsbFvDisplayTypes.BLOCK */,
displayColor: "#56e0f5",
rowTitle: "COMPUTED",
trackData: []
};
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 === FeaturesType.Site) {
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);
});
}
};
}
//# sourceMappingURL=index.js.map