@formant/ava
Version:
A framework for automated visual analytics.
80 lines (79 loc) • 4.38 kB
JavaScript
;
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;