UNPKG

@visactor/vmind

Version:

<div align="center"> <a href="https://github.com/VisActor#gh-light-mode-only" target="_blank"> <img alt="VisActor Logo" width="200" src="https://github.com/VisActor/.github/blob/main/profile/logo_500_200_light.svg"/> </a> <a href="https://githu

115 lines (111 loc) 5.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.BaseStatistics = void 0; const vutils_1 = require("@visactor/vutils"), types_1 = require("../../../../types"), type_1 = require("../../type"), utils_1 = require("../../utils"), getMinMaxAvg = data => { const min = { index: -1, value: 1 / 0 }, max = { index: -1, value: -1 / 0 }; let sum = 0, validCount = 0; return data.forEach(((value, index) => { (0, vutils_1.isValidNumber)(value) && (sum += value, validCount++, value < min.value && (min.index = index, min.value = value), value > max.value && (max.index = index, max.value = value)); })), { min: min, max: max, avg: sum / validCount }; }, getBaseInsightByDataset = context => { const {xField: xField, measureId: measureId, dataset: dataset, isStack: isStack, dimensionValues: dimensionValues, dimensionStackSumMap: dimensionStackSumMap, axisTitle: axisTitle = [], isAxesArea: isAxesArea = !1, axesDirection: axesDirection, seriesId: seriesId, seriesIndex: seriesIndex} = context, dataList = dataset.map(((d, index) => ({ index: index, dataItem: d }))), result = [], yField = (0, vutils_1.isArray)(measureId) ? measureId[0] : measureId, valueList = isStack ? dimensionStackSumMap[yField] : dataList.map((d => Number(d.dataItem[yField]))), {min: min, max: max, avg: avg} = getMinMaxAvg(valueList), titleName = ((0, vutils_1.isArray)(axisTitle) ? null == axisTitle ? void 0 : axisTitle[0] : axisTitle) || ""; return -1 !== min.index && result.push({ name: "min", type: type_1.InsightType.Min, fieldId: yField, value: min.value, significant: 1, data: isStack ? dataList.filter((d => d.dataItem[xField] === dimensionValues[min.index])) : [ { index: min.index, dataItem: dataList[min.index].dataItem } ], info: { seriesId: seriesId, seriesIndex: seriesIndex, isAxesArea: isAxesArea, titleName: titleName, isGroup: isStack, dimValue: isStack ? dimensionValues[min.index] : dataList[min.index].dataItem[xField] } }), -1 !== max.index && result.push({ name: "max", type: type_1.InsightType.Max, fieldId: yField, value: max.value, significant: 1, data: isStack ? dataList.filter((d => d.dataItem[xField] === dimensionValues[max.index])) : [ { index: max.index, dataItem: dataList[max.index].dataItem } ], info: { isAxesArea: isAxesArea, titleName: titleName, seriesId: seriesId, seriesIndex: seriesIndex, isGroup: isStack, dimValue: isStack ? dimensionValues[max.index] : dataList[max.index].dataItem[xField] } }), (0, vutils_1.isValidNumber)(avg) && result.push({ name: "avg", type: type_1.InsightType.Avg, fieldId: yField, value: avg, significant: 1, data: [], info: { seriesId: seriesId, seriesIndex: seriesIndex, isAxesArea: isAxesArea, titleName: titleName, axesDirection: axesDirection } }), result; }, BaseStatisticsFunction = (context, options) => { const result = [], {spec: spec, chartType: chartType, cell: cell, leftAxesDataList: leftAxesDataList, rightAxesDataList: rightAxesDataList} = context, {y: celly, x: cellx} = cell, xField = (0, vutils_1.isArray)(cellx) ? cellx[0] : cellx, yField = (0, vutils_1.isArray)(celly) ? celly[0] : celly, baseInfo = Object.assign(Object.assign({}, context), { xField: xField, measureId: yField }); return leftAxesDataList && result.push(...getBaseInsightByDataset(Object.assign(Object.assign(Object.assign({}, baseInfo), leftAxesDataList), { isAxesArea: !0, measureId: null == leftAxesDataList ? void 0 : leftAxesDataList.yField, axisTitle: leftAxesDataList.axisTitle || (null == options ? void 0 : options.defaultLeftAxisName), isStack: (0, utils_1.isStackChartInAxes)(leftAxesDataList.series, chartType), axesDirection: "left" }))), rightAxesDataList && result.push(...getBaseInsightByDataset(Object.assign(Object.assign(Object.assign({}, baseInfo), rightAxesDataList), { isAxesArea: !0, measureId: null == rightAxesDataList ? void 0 : rightAxesDataList.yField, axisTitle: rightAxesDataList.axisTitle || (null == options ? void 0 : options.defaultRightAxisName), isStack: (0, utils_1.isStackChartInAxes)(rightAxesDataList.series, chartType), axesDirection: "right" }))), !leftAxesDataList && !rightAxesDataList && result.push(...getBaseInsightByDataset(Object.assign(Object.assign({}, baseInfo), { axisTitle: "", seriesId: "", seriesIndex: null, isStack: (0, utils_1.isStackChart)(spec, chartType, cell) }))), result; }; exports.BaseStatistics = { name: "base", forceChartType: [ types_1.ChartType.DualAxisChart, types_1.ChartType.LineChart, types_1.ChartType.BarChart, types_1.ChartType.AreaChart ], insightType: type_1.InsightType.Min, supportPercent: !1, algorithmFunction: BaseStatisticsFunction }; //# sourceMappingURL=baseStatistics.js.map