UNPKG

@visactor/vmind

Version:

<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu

46 lines (42 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.LineChartMajorityValue = void 0; const vutils_1 = require("@visactor/vutils"), type_1 = require("../../type"), types_1 = require("../../../../types"), getMajorityInGroup = (dataset, measureId, seriesId, dimensionId, threshold = .85) => { const result = [], sum = dataset.reduce(((prev, cur) => { const dataValue = parseFloat(cur.dataItem[measureId]); return prev + ((0, vutils_1.isNumber)(dataValue) ? Math.abs(dataValue) : 0); }), 0); return sum - Number.EPSILON < 0 ? [] : (dataset.forEach((d => { const seriesName = d.dataItem[seriesId], dimensionName = d.dataItem[dimensionId], dataValue = parseFloat(d.dataItem[measureId]), ratio = ((0, vutils_1.isNumber)(dataValue) ? Math.abs(dataValue) : 0) / sum; ratio > threshold && result.push({ type: type_1.InsightType.MajorityValue, data: [ d ], fieldId: measureId, value: d.dataItem[measureId], significant: ratio, seriesName: seriesName, info: { ratio: ratio, dimensionName: dimensionName } }); })), result); }, calcMajorityValue = (context, options) => { const result = [], {cell: cell, dimensionDataMap: dimensionDataMap, seriesDataMap: seriesDataMap} = context, {threshold: threshold} = options || {}, {y: celly, x: cellx, color: color} = cell, yField = (0, vutils_1.isArray)(celly) ? celly.flat() : [ celly ], xField = (0, vutils_1.isArray)(cellx) ? cellx[0] : cellx; let groupField; return groupField = (0, vutils_1.isArray)(cellx) && cellx.length > 1 ? cellx[1] : (0, vutils_1.isArray)(color) ? color[0] : color, groupField && xField ? Object.keys(seriesDataMap).length <= 1 ? [] : (Object.keys(dimensionDataMap).forEach((dimension => { const dimensionDataset = dimensionDataMap[dimension], dimensionInsights = getMajorityInGroup(dimensionDataset, yField[0], groupField, xField, threshold); result.push(...dimensionInsights); })), result) : []; }; exports.LineChartMajorityValue = { name: "majorityValue", forceChartType: [ types_1.ChartType.BarChart, types_1.ChartType.AreaChart, types_1.ChartType.WaterFallChart ], insightType: type_1.InsightType.MajorityValue, algorithmFunction: calcMajorityValue }; //# sourceMappingURL=index.js.map