@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
38 lines (37 loc) • 1.78 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MultipleEntityInstanceTranslate = void 0;
const PolymerEntityInstanceTranslate_1 = require("./PolymerEntityInstanceTranslate");
const Operator_1 = require("../Helpers/Operator");
const TagDelimiter_1 = require("@rcsb/rcsb-api-tools/lib/RcsbUtils/TagDelimiter");
class MultipleEntityInstanceTranslate {
constructor() {
this.entityInstanceTranslateMap = new Map();
}
add(data) {
const entryEntityInstanceMapList = new Map();
data.forEach(d => {
var _a;
const entityId = d.entryId + TagDelimiter_1.TagDelimiter.entity + d.entityId;
if (!entryEntityInstanceMapList.has(entityId))
entryEntityInstanceMapList.set(entityId, new Array());
(_a = entryEntityInstanceMapList.get(entityId)) === null || _a === void 0 ? void 0 : _a.push(d);
});
entryEntityInstanceMapList.forEach((v, entityId) => {
this.entityInstanceTranslateMap.set(entityId, new PolymerEntityInstanceTranslate_1.PolymerEntityInstanceTranslate(v));
});
}
getEntity(entityId) {
return this.entityInstanceTranslateMap.get(entityId);
}
getEntities() {
return Array.from(this.entityInstanceTranslateMap.keys());
}
getEntries() {
return Operator_1.Operator.uniqueValues(Array.from(this.entityInstanceTranslateMap.keys()).map(entityId => TagDelimiter_1.TagDelimiter.parseEntity(entityId).entryId));
}
getInstances() {
return Operator_1.Operator.uniqueValues(Array.from(this.entityInstanceTranslateMap.values()).map(peit => peit.getData()).flat().map(e => e.asymId));
}
}
exports.MultipleEntityInstanceTranslate = MultipleEntityInstanceTranslate;