@rcsb/rcsb-saguaro
Version:
RCSB 1D Feature Viewer
95 lines (94 loc) • 4.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RcsbD3VariantManager = void 0;
const tslib_1 = require("tslib");
const d3_selection_1 = require("d3-selection");
const d3_axis_1 = require("d3-axis");
const RcsbD3Constants_1 = require("../RcsbD3Constants");
const classes = tslib_1.__importStar(require("../../../scss/RcsbBoard.module.scss"));
class RcsbD3VariantManager {
constructor() {
this.circleElements = (0, d3_selection_1.select)(RcsbD3Constants_1.RcsbD3Constants.EMPTY);
}
plot(config) {
this.circleElements = config.elements.append(RcsbD3Constants_1.RcsbD3Constants.CIRCLE);
this.circleElements.attr(RcsbD3Constants_1.RcsbD3Constants.CX, (d) => {
var _a;
if (d.begin == undefined)
throw "Position element not found";
return (_a = config.xScale(d.begin)) !== null && _a !== void 0 ? _a : 0;
})
.attr(RcsbD3Constants_1.RcsbD3Constants.CY, (d) => {
if (d.label == undefined)
throw "Variant value not found";
const y = config.yScale(d.label);
if (y == undefined)
throw "Variant value (" + d.value + ") not available";
return y;
})
.attr(RcsbD3Constants_1.RcsbD3Constants.R, config.radius)
.attr(RcsbD3Constants_1.RcsbD3Constants.FILL, (d) => {
if (typeof d.color === "string") {
return d.color;
}
else if (typeof config.color === "string") {
return config.color;
}
else {
console.warn("Config color noy found");
return "#CCCCCC";
}
});
RcsbD3VariantManager.includeAxis(config.trackG, config.xScale, config.yScale, config.height);
}
move(config) {
this.circleElements.attr(RcsbD3Constants_1.RcsbD3Constants.CX, (d) => {
var _a;
if (d.begin == undefined)
throw "Position element not found";
return (_a = config.xScale(d.begin)) !== null && _a !== void 0 ? _a : 0;
})
.attr(RcsbD3Constants_1.RcsbD3Constants.CY, (d) => {
if (d.label == undefined)
throw "Variant value not found";
const y = config.yScale(d.label);
if (y == undefined)
throw "Variant value (" + d.value + ") not available";
return y;
});
RcsbD3VariantManager.includeAxis(config.trackG, config.xScale, config.yScale, config.height);
}
static includeAxis(trackG, xScale, yScale, height) {
trackG.selectAll("." + classes.rcsbAxis).remove();
trackG.selectAll("." + classes.rcsbVariantGrid).remove();
trackG.append(RcsbD3Constants_1.RcsbD3Constants.G).classed(classes.rcsbVariantGrid, true);
yScale.domain().forEach((aa) => {
const aaY = yScale(aa);
if (aaY != undefined)
trackG.selectAll("." + classes.rcsbVariantGrid).append(RcsbD3Constants_1.RcsbD3Constants.LINE)
.attr(RcsbD3Constants_1.RcsbD3Constants.LINE, "stroke:#EEEEEE;")
.attr(RcsbD3Constants_1.RcsbD3Constants.X1, xScale.range()[0])
.attr(RcsbD3Constants_1.RcsbD3Constants.Y1, aaY)
.attr(RcsbD3Constants_1.RcsbD3Constants.X2, xScale.range()[1])
.attr(RcsbD3Constants_1.RcsbD3Constants.Y2, aaY);
else
console.warn("Variation (" + aa + ") not found");
});
trackG.selectAll("." + classes.rcsbElement).each(function () {
if (this.parentNode != undefined)
this.parentNode.append(this);
});
const variantAxis = (0, d3_axis_1.axisLeft)(yScale.getScale());
const gAxis = trackG.append(RcsbD3Constants_1.RcsbD3Constants.G);
gAxis.classed(classes.rcsbAxis, true)
.attr(RcsbD3Constants_1.RcsbD3Constants.TRANSFORM, "translate(20,0)")
.append(RcsbD3Constants_1.RcsbD3Constants.RECT)
.attr(RcsbD3Constants_1.RcsbD3Constants.FILL, "white")
.attr(RcsbD3Constants_1.RcsbD3Constants.X, -20)
.attr(RcsbD3Constants_1.RcsbD3Constants.Y, 0)
.attr(RcsbD3Constants_1.RcsbD3Constants.HEIGHT, height)
.attr(RcsbD3Constants_1.RcsbD3Constants.WIDTH, 15);
gAxis.call(variantAxis);
}
}
exports.RcsbD3VariantManager = RcsbD3VariantManager;