UNPKG

@rcsb/rcsb-saguaro-app

Version:
39 lines (38 loc) 1.95 kB
"use strict"; 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;