@formant/ava
Version:
A framework for automated visual analytics.
98 lines (97 loc) • 3.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
/* eslint-disable no-template-curly-in-string */
var lodash_1 = require("lodash");
var ntv_1 = require("../../../ntv");
var base_1 = require("./base");
var helpers_1 = require("./helpers");
var little_date_1 = require("little-date");
var date_fns_1 = require("date-fns");
var variableMetaMap = {
dateRange: {
varType: 'time_desc',
},
measure: {
varType: 'metric_name',
},
max: {
varType: 'metric_value',
},
min: {
varType: 'metric_value',
},
total: {
varType: 'metric_value',
},
'.x': {
varType: 'dim_value',
},
'.y': {
varType: 'metric_value',
},
'.base': {
varType: 'metric_value',
},
'.diff': {
varType: 'delta_value',
},
};
var TimeSeriesOutlierNarrativeStrategy = /** @class */ (function (_super) {
tslib_1.__extends(TimeSeriesOutlierNarrativeStrategy, _super);
function TimeSeriesOutlierNarrativeStrategy() {
return _super !== null && _super.apply(this, arguments) || this;
}
TimeSeriesOutlierNarrativeStrategy.prototype.generateTextSpec = function (insightInfo, lang) {
var patterns = insightInfo.patterns, data = insightInfo.data;
var _a = patterns[0], measure = _a.measure, dimension = _a.dimension;
var spec = (0, ntv_1.generateTextSpec)({
structures: TimeSeriesOutlierNarrativeStrategy.structures[lang],
variable: {
dateRange: "".concat((0, little_date_1.formatDateRange)(new Date((0, lodash_1.first)(data)[dimension]), new Date((0, lodash_1.last)(data)[dimension]), { includeTime: false })),
total: patterns.length,
measure: measure,
max: (0, lodash_1.maxBy)(data, measure)[measure],
min: (0, lodash_1.minBy)(data, measure)[measure],
outliers: patterns.map(function (point) {
var base = point.baselines[point.index];
var diff = point.y - base;
return tslib_1.__assign(tslib_1.__assign({}, point), { base: base, diffDesc: (0, helpers_1.getDiffDesc)(diff, lang), x: (0, date_fns_1.format)(new Date(point.x), 'MMM d, yyyy'), diff: diff });
}),
},
});
return spec.sections[0].paragraphs;
};
TimeSeriesOutlierNarrativeStrategy.insightType = 'time_series_outlier';
TimeSeriesOutlierNarrativeStrategy.structures = {
'zh-CN': [
{
template: '${dateRange},${measure} 波动范围为最大值 ${max}, 最小值 ${min},有 ${total} 个异常点,按超过基线大小排序如下:',
variableMetaMap: variableMetaMap,
},
{
template: '${.x},${measure} 为 ${.y}, 相比基线(${.base})${.diffDesc} ${.diff}。',
displayType: 'bullet',
bulletOrder: true,
useVariable: 'outliers',
variableMetaMap: variableMetaMap,
},
],
'en-US': [
{
template: '${total} outliers detected for ${measure} during ${dateRange}',
displayType: 'paragraph',
variableMetaMap: variableMetaMap,
},
{
template: '${.x}: ${measure} at ${.y} (${.diffDesc} ${.diff} baseline)',
displayType: 'bullet',
bulletOrder: true,
useVariable: 'outliers',
variableMetaMap: variableMetaMap,
},
],
};
return TimeSeriesOutlierNarrativeStrategy;
}(base_1.InsightNarrativeStrategy));
exports.default = TimeSeriesOutlierNarrativeStrategy;