UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

37 lines (36 loc) 1.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.diffPieSector = void 0; var utils_1 = require("../../utils"); var constants_1 = require("./constants"); var applyChartTypes = ['pie_chart', 'donut_chart']; exports.diffPieSector = { id: 'diff-pie-sector', type: 'SOFT', docs: { lintText: 'The difference between sectors of a pie chart should be large enough.', }, trigger: function (_a) { var chartType = _a.chartType; return applyChartTypes.includes(chartType); }, validator: function (args) { var result = 1; var dataProps = args.dataProps; if (dataProps) { var intervalField = dataProps.find(function (field) { return (0, utils_1.hasSubset)(field.levelOfMeasurements, ['Interval']); }); if (intervalField && intervalField.sum && intervalField.rawData) { var sum = intervalField.sum; var scale_1 = 1 / sum; var scaledSamples = intervalField.rawData.map(function (v) { return v * scale_1; }); var scaledProduct = scaledSamples.reduce(function (a, c) { return a * c; }); var count = intervalField.rawData.length; var maxProduct = Math.pow((1 / count), count); // Math.abs(maxProduct - Math.abs(scaledProduct)) / maxProduct 这个值 小于 0.5 会被认为有点问题 result = constants_1.MAX_SOFT_RULE_COEFFICIENT * 0.2 * (Math.abs(maxProduct - Math.abs(scaledProduct)) / maxProduct); } } result = result < 1 / constants_1.MAX_SOFT_RULE_COEFFICIENT ? 1 / constants_1.MAX_SOFT_RULE_COEFFICIENT : result; return result; }, };