UNPKG

@qn-pandora/pandora-visualization

Version:

Pandora 通用可视化库

148 lines (147 loc) 5.87 kB
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; }; import { get, isNil, includes } from 'lodash'; import { action, observable } from 'mobx'; import bind from '../../../../utils/bind'; var STYLE_OPTION_DECORATOR = 'STYLE_OPTION_DECORATOR'; /** * style option 装饰器 * @param extraDesc 额外附加的装饰器,默认为observable.ref,设置为非函数值的时候不附加装饰器 */ export function styleOption(extraDesc) { if (extraDesc === void 0) { extraDesc = observable.ref; } return function (target, propName, descriptor) { // 将属性的值存储在原型链的STYLE_OPTION_DECORATOR中 if (!Object.prototype.hasOwnProperty.call(target, STYLE_OPTION_DECORATOR)) { var protoValue = target[STYLE_OPTION_DECORATOR] || []; Object.defineProperty(target, STYLE_OPTION_DECORATOR, { enumerable: false, writable: true, configurable: true, value: __spread(protoValue) }); } target[STYLE_OPTION_DECORATOR].push(propName); if (typeof extraDesc === 'function') { return extraDesc(target, propName, descriptor); } // 不额外挂载装饰器 return; }; } var ChartStyleService = /** @class */ (function () { function ChartStyleService(_) { this.displayColors = []; // 用于自定义颜色 } /** * 获取style option装饰器存储下来的内容 */ ChartStyleService.prototype.getStyleOptionNames = function () { return get(this, STYLE_OPTION_DECORATOR, []); }; /** * 获取style option装饰器装饰的所有属性值 */ ChartStyleService.prototype.getStyleOptions = function () { var _this = this; return this.getStyleOptionNames().reduce(function (res, item) { res[item] = _this[item]; return res; }, { chartType: this.chartType }); }; ChartStyleService.prototype.set = function (key, value) { var _this_1 = this; var styleOptionNames = this.getStyleOptionNames(); var _this = this; if (typeof key === 'object') { // set(obj: Partial<T>, allowNil?: boolean): void var obj = key; var allowNil = !!value; var styleOptionHandlers = styleOptionNames.map(function (optionName) { return ({ field: optionName, // set<K extends keyof T>(key: K, value: T[K]): void handler: function (value) { return _this_1.set(optionName, value); } }); }); this.executeFieldHandlers(obj, styleOptionHandlers, allowNil); return; } // set<K extends keyof T>(key: K, value: T[K]): void if (includes(styleOptionNames, key)) { _this[key] = value; } }; /** * 提供属性自定义set的批量处理函数 * @param obj * @param fieldHandlers * @param allowNil */ ChartStyleService.prototype.executeFieldHandlers = function (obj, fieldHandlers, allowNil) { fieldHandlers.forEach(function (_a) { var field = _a.field, handler = _a.handler; if (!obj.hasOwnProperty(field)) { return; } var value = obj[field]; if (allowNil || !isNil(value)) { handler(value); } }); }; ChartStyleService.prototype.setDisplayColors = function (colors) { this.displayColors = colors; }; __decorate([ styleOption(), __metadata("design:type", Array) ], ChartStyleService.prototype, "displayColors", void 0); __decorate([ action, __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Object]), __metadata("design:returntype", void 0) ], ChartStyleService.prototype, "set", null); __decorate([ bind, action, __metadata("design:type", Function), __metadata("design:paramtypes", [Object, Array, Boolean]), __metadata("design:returntype", void 0) ], ChartStyleService.prototype, "executeFieldHandlers", null); __decorate([ bind, action, __metadata("design:type", Function), __metadata("design:paramtypes", [Array]), __metadata("design:returntype", void 0) ], ChartStyleService.prototype, "setDisplayColors", null); return ChartStyleService; }()); export default ChartStyleService;