UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

338 lines (337 loc) 14.3 kB
"use strict"; var __extends = (this && this.__extends) || (function () { var extendStatics = function (d, b) { extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; }; return extendStatics(d, b); }; return function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; var __spread = (this && this.__spread) || function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var mobx_1 = require("mobx"); var lodash_1 = require("lodash"); var one_d_1 = __importDefault(require("../stores/one-d")); var bind_1 = __importDefault(require("../../../utils/bind")); var honeycomb_1 = require("../../../constants/honeycomb"); var chart_drill_down_1 = require("../../../services/chart-drill-down"); var chart_common_action_1 = require("../../../services/chart-common-action"); var util_1 = require("./util"); var DefaultColor = '#1C7BDC'; var HoneycombStore = /** @class */ (function (_super) { __extends(HoneycombStore, _super); function HoneycombStore() { return _super !== null && _super.apply(this, arguments) || this; } HoneycombStore.prototype.getItemSplitterColor = function (value, colorSplit) { if (!colorSplit || !colorSplit.colorPalette.value) { return DefaultColor; } var colorPalette = colorSplit.colorPalette, _a = colorSplit.scale, scale = _a === void 0 ? [] : _a; var colors = colorPalette.value; if (!lodash_1.isNil(value) && lodash_1.isNumber(lodash_1.toNumber(value)) && !isNaN(lodash_1.toNumber(value)) && lodash_1.size(scale) && lodash_1.size(colors)) { var min_1 = lodash_1.first(scale); var max_1 = lodash_1.last(scale); if (lodash_1.isNumber(min_1) && lodash_1.toNumber(value) <= min_1) { return colors[0]; } if (lodash_1.isNumber(max_1) && lodash_1.toNumber(value) >= max_1) { return lodash_1.last(colors); } var index = scale.findIndex(function (item) { return lodash_1.isNumber(item) && lodash_1.toNumber(item) >= lodash_1.toNumber(value); }); if (index >= 1) { return colors[index - 1]; } if (!lodash_1.isNumber(max_1)) { return lodash_1.last(colors); } } return DefaultColor; }; HoneycombStore.prototype.getItemGradientColor = function (value, colors) { var _a = this.minMax, min = _a.min, max = _a.max; return util_1.getColor(min, max, value, colors); }; HoneycombStore.prototype.getItemColor = function (value) { var _a = this.chartStyleService, colorType = _a.colorType, colorSplitter = _a.colorSplitter, colors = _a.colors; if (colorType === honeycomb_1.EColorType.Custom) { return this.getItemSplitterColor(value, colorSplitter); } return this.getItemGradientColor(value, colors); }; Object.defineProperty(HoneycombStore.prototype, "data", { get: function () { return this.dataset.rows; }, enumerable: false, configurable: true }); Object.defineProperty(HoneycombStore.prototype, "minMax", { get: function () { var currentMetrics = this.chartStyleService.currentMetrics; var fields = this.dataset.fields; if (currentMetrics.length == 0) { return { min: 0, max: 0 }; } var metricIndex = lodash_1.findIndex(fields, function (f) { return f.key === currentMetrics[0]; }); var data = this.data.map(function (item) { return isNaN(lodash_1.toNumber(item[metricIndex])) ? 0 : lodash_1.toNumber(item[metricIndex]); }); return { min: lodash_1.min(data) || 0, max: lodash_1.max(data) || 0 }; }, enumerable: false, configurable: true }); Object.defineProperty(HoneycombStore.prototype, "series", { get: function () { var _this = this; var _a = this.chartStyleService, currentBuckets = _a.currentBuckets, currentMetrics = _a.currentMetrics; var fields = this.dataset.fields; if (currentMetrics.length == 0) { return []; } var metricIndex = lodash_1.findIndex(fields, function (f) { return f.key === currentMetrics[0]; }); var bucketsIndexs = currentBuckets .map(function (m) { return lodash_1.findIndex(fields, function (f) { return f.key === m; }); }) .filter(function (num) { return num !== -1; }); if (metricIndex === -1 || bucketsIndexs.length === 0) { return []; } // 没有分组(第一个分组不做分组,用于填充蜂窝图的值) if (currentBuckets.length <= 1) { var data = this.data.map(function (item, index) { var name = fields[metricIndex].key; var value = isNaN(lodash_1.toNumber(item[metricIndex])) ? 0 : lodash_1.toNumber(item[metricIndex]); var color = _this.getItemColor(value); value = _this.chartStyleService.unitTransformer(value); if (currentBuckets[0]) { var firstBucketIndex = bucketsIndexs[0]; name = (item[firstBucketIndex][0] || ''); } var originRow = _this.originDataset.rows[index]; return { name: name, value: value, line: [], color: color, originRow: originRow }; }); return [{ name: currentBuckets[0] || currentMetrics[0], data: data }]; } var resMap = {}; this.data.forEach(function (item, index) { var indexes = __spread([metricIndex], bucketsIndexs); var values = indexes.map(function (index) { var label = fields[index].key; var value = item[index][0]; return { label: label, value: value }; }); var metricValue = values[0]; values.shift(); var firstBucketValue = values[0]; values.shift(); var key = values .slice() .map(function (item) { return item.label + "=" + item.value; }) .join(','); var name = firstBucketValue.label + "=" + firstBucketValue.value + "," + key; var value = isNaN(lodash_1.toNumber(metricValue.value)) ? 0 : lodash_1.toNumber(item[metricIndex]); var color = _this.getItemColor(value); value = _this.chartStyleService.unitTransformer(value); var originRow = _this.originDataset.rows[index]; if (!resMap[key]) { resMap[key] = [ { key: key, name: name, value: value, line: [], color: color, originRow: originRow } ]; } else { var data = resMap[key]; data.push({ name: "" + name, value: value, line: [], color: color, originRow: originRow }); resMap[key] = data; } }); var series = lodash_1.keys(resMap).map(function (itemKey) { return { name: itemKey, data: resMap[itemKey] }; }); return series; }, enumerable: false, configurable: true }); Object.defineProperty(HoneycombStore.prototype, "option", { get: function () { var _a = this.chartStyleService, maxRadius = _a.maxRadius, minRadius = _a.minRadius, distance = _a.distance, honeycombNum = _a.honeycombNum, lineGroupNum = _a.lineGroupNum; var option = { margin: { top: 20, left: 20, right: 20, bottom: 0 }, honeycomb: { /** * 最大半径 */ maxRadius: maxRadius || 100, /** * 最小半径 */ minRadius: minRadius || 10, /** * 蜂窝间距占半径比例,小数表示 * 0.06 */ distance: distance || 0.06 }, groups: { /** * 每个组每一行蜂窝数目 */ honeycombNum: honeycombNum || 6, /** * 图表每一行图表组数 */ lineGroupNum: lineGroupNum || 3, /** * 标题高度 */ titleHeight: 20, /** * 是否显示title */ showTitle: true }, series: this.series }; return option; }, enumerable: false, configurable: true }); Object.defineProperty(HoneycombStore.prototype, "originFields", { get: function () { return this.originDataset.fields; }, enumerable: false, configurable: true }); HoneycombStore.prototype.handleDrillDown = function (params) { this.onAction({ currentBuckets: this.currentBuckets, currentMetrics: this.currentMetrics, originRow: params.originRow, fields: this.originFields }, chart_drill_down_1.HoneycombDrillDownService, chart_common_action_1.HoneycombActionService); }; __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [Number, Object]), __metadata("design:returntype", void 0) ], HoneycombStore.prototype, "getItemSplitterColor", null); __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [Number, Array]), __metadata("design:returntype", void 0) ], HoneycombStore.prototype, "getItemGradientColor", null); __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [Number]), __metadata("design:returntype", void 0) ], HoneycombStore.prototype, "getItemColor", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], HoneycombStore.prototype, "data", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], HoneycombStore.prototype, "minMax", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], HoneycombStore.prototype, "series", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], HoneycombStore.prototype, "option", null); __decorate([ mobx_1.computed, __metadata("design:type", Object), __metadata("design:paramtypes", []) ], HoneycombStore.prototype, "originFields", null); __decorate([ bind_1.default, __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", void 0) ], HoneycombStore.prototype, "handleDrillDown", null); return HoneycombStore; }(one_d_1.default)); exports.default = HoneycombStore;