UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

58 lines (57 loc) 2.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.nominalEnumCombinatorial = void 0; var utils_1 = require("../../utils"); var utils_2 = require("../utils"); var constants_1 = require("./constants"); var applyChartTypes = [ 'bar_chart', 'column_chart', 'grouped_bar_chart', 'grouped_column_chart', 'stacked_bar_chart', 'stacked_column_chart', ]; function getNominalFields(dataProps) { return dataProps.filter(function (field) { return (0, utils_1.hasSubset)(field.levelOfMeasurements, ['Nominal']); }); } exports.nominalEnumCombinatorial = { id: 'nominal-enum-combinatorial', type: 'SOFT', docs: { lintText: 'Single (Basic) and Multi (Stacked, Grouped,...) charts should be optimized recommended by nominal enums combinatorial numbers.', }, trigger: function (_a) { var chartType = _a.chartType, dataProps = _a.dataProps; return (applyChartTypes.includes(chartType) && getNominalFields(dataProps).length >= 2); }, validator: function (args) { var result = 1; var dataProps = args.dataProps, chartType = args.chartType; if (dataProps) { var nominalFields = getNominalFields(dataProps); if (nominalFields.length >= 2) { var sortedNominals = nominalFields.sort(utils_2.compare); var f1 = sortedNominals[0]; var f2 = sortedNominals[1]; if (f1.distinct === f1.count) { if (['bar_chart', 'column_chart'].includes(chartType)) { result = constants_1.MAX_SOFT_RULE_COEFFICIENT * 0.5; } } if (f1.count && f1.distinct && f2.distinct && f1.count > f1.distinct) { var typeOptions = [ 'grouped_bar_chart', 'grouped_column_chart', 'stacked_bar_chart', 'stacked_column_chart', ]; if (typeOptions.includes(chartType)) { result = constants_1.MAX_SOFT_RULE_COEFFICIENT * 0.5; } } } } return result; }, };