UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

80 lines (79 loc) 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSpecificInsight = exports.filterValidInsightInfoForAnnotationSpec = exports.getChartSpecWithoutAugmentedMarks = exports.getAnnotationSpec = exports.patternInfo2InsightInfo = void 0; var tslib_1 = require("tslib"); var lodash_1 = require("lodash"); var chart_1 = require("../chart"); var insights_1 = require("../insights"); var narrative_1 = tslib_1.__importDefault(require("../narrative")); var util_1 = require("../insights/util"); var strategy_1 = require("../chart/strategy"); var patternInfo2InsightInfo = function (props) { var dimensions = props.dimensions, measures = props.measures, data = props.data, patternInfos = props.patternInfos; return { subspace: [], dimensions: dimensions, measures: measures, patterns: patternInfos, data: data, }; }; exports.patternInfo2InsightInfo = patternInfo2InsightInfo; var getAnnotationSpec = function (insightInfo) { var _a, _b; var insightType = ((_a = insightInfo.patterns[0]) !== null && _a !== void 0 ? _a : {}).type; var insightType2AugmentedMarks = { trend: chart_1.trendAugmentedMarksStrategy, change_point: chart_1.changePointAugmentedMarksStrategy, time_series_outlier: chart_1.timeSeriesOutlierStrategyAugmentedMarksStrategy, low_variance: chart_1.lowVarianceAugmentedMarkStrategy, category_outlier: chart_1.categoryOutlierAugmentedMarksStrategy, }; return (_b = insightType2AugmentedMarks[insightType]) === null || _b === void 0 ? void 0 : _b.call(insightType2AugmentedMarks, insightInfo); }; exports.getAnnotationSpec = getAnnotationSpec; var getChartSpecWithoutAugmentedMarks = function (insightInfo, insightType) { var chartMark = (0, strategy_1.insight2ChartStrategy)(tslib_1.__assign(tslib_1.__assign({}, insightInfo), ((0, lodash_1.size)(insightInfo.patterns) === 0 ? { patterns: [{ type: insightType }], } : {}))); return (0, strategy_1.viewSpecStrategy)([chartMark], insightInfo); }; exports.getChartSpecWithoutAugmentedMarks = getChartSpecWithoutAugmentedMarks; var filterValidInsightInfoForAnnotationSpec = function (_a) { var _b = _a.patternInfos, patternInfos = _b === void 0 ? [] : _b, insightType = _a.insightType; if (insightType === 'time_series_outlier') return (0, util_1.pickValidTimeSeriesOutlierPatterns)(patternInfos); return (0, util_1.pickValidPattern)(patternInfos); }; exports.filterValidInsightInfoForAnnotationSpec = filterValidInsightInfoForAnnotationSpec; var getSpecificInsight = function (props) { var _a = props.options, options = _a === void 0 ? {} : _a, insightType = props.insightType; var _b = options.visualizationOptions, visualizationOptions = _b === void 0 ? { lang: 'zh-CN' } : _b; var patternInfos = (0, insights_1.insightPatternsExtractor)(props); var validPatternInfos = (0, exports.filterValidInsightInfoForAnnotationSpec)({ patternInfos: patternInfos, insightType: insightType }); var totalInsightInfo = (0, exports.patternInfo2InsightInfo)(tslib_1.__assign(tslib_1.__assign({}, props), { patternInfos: patternInfos })); if ((0, lodash_1.size)(validPatternInfos)) { var validInsightInfo = (0, exports.patternInfo2InsightInfo)(tslib_1.__assign(tslib_1.__assign({}, props), { patternInfos: validPatternInfos })); var annotationSpec = (0, exports.getAnnotationSpec)(validInsightInfo); var chartSpec_1 = (0, chart_1.generateInsightChartSpec)(validInsightInfo); var narrativeSpec = (0, narrative_1.default)(validInsightInfo, visualizationOptions); return tslib_1.__assign(tslib_1.__assign({}, totalInsightInfo), { visualizationSpecs: [ { annotationSpec: annotationSpec, chartSpec: chartSpec_1, patternType: insightType, narrativeSpec: narrativeSpec, }, ] }); } var chartSpec = (0, exports.getChartSpecWithoutAugmentedMarks)(totalInsightInfo, insightType); return tslib_1.__assign(tslib_1.__assign({}, totalInsightInfo), { visualizationSpecs: [ { chartSpec: chartSpec, patternType: insightType, }, ] }); }; exports.getSpecificInsight = getSpecificInsight;