@rcsb/rcsb-saguaro-app
Version:
RCSB 1D Saguaro Web App
39 lines (38 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DistributionChartFactory = void 0;
const RcsbDistributionConfig_1 = require("../../../../../RcsbAnnotationConfig/RcsbDistributionConfig");
const Operator_1 = require("../../../../../RcsbUtils/Helpers/Operator");
const ChartConfigInterface_1 = require("@rcsb/rcsb-charts/lib/RcsbChartComponent/ChartConfigInterface");
class DistributionChartFactory {
constructor(distributionConfig) {
this.distributionConfig = distributionConfig !== null && distributionConfig !== void 0 ? distributionConfig : new RcsbDistributionConfig_1.RcsbDistributionConfig();
}
getChart(residueDistribution) {
var _a, _b;
const sort = (_a = this.distributionConfig.getBlockConfig(residueDistribution.attribute)) === null || _a === void 0 ? void 0 : _a.sort;
const axisLabel = (_b = this.distributionConfig.getBlockConfig(residueDistribution.attribute)) === null || _b === void 0 ? void 0 : _b.axisLabel;
return {
chartType: ChartConfigInterface_1.ChartType.barplot,
attribute: residueDistribution.attribute,
attributeName: residueDistribution.attribute,
contentType: "number",
data: residueDistribution.buckets.map(b => ({
label: b.label,
population: b.residueSet.size,
objectConfig: {
color: b.color,
objectId: b.id
}
})),
title: residueDistribution.title,
chartConfig: {
sort: sort ? (a, b) => (sort.findIndex(x => x === a.x) - sort.findIndex(x => x === b.x)) : undefined,
tooltipText: (d) => (`${Operator_1.Operator.digitGrouping(d.y)} residues`),
axisLabel,
domainEmptyBins: true
}
};
}
}
exports.DistributionChartFactory = DistributionChartFactory;