UNPKG

@formant/ava

Version:

A framework for automated visual analytics.

98 lines (97 loc) 3.81 kB
"use strict"; 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;