@qn-pandora/pandora-visualization
Version:
Pandora 通用可视化库
155 lines (154 loc) • 6.22 kB
JavaScript
;
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 });
exports.styleOption = void 0;
var lodash_1 = require("lodash");
var mobx_1 = require("mobx");
var bind_1 = __importDefault(require("../../../../utils/bind"));
var STYLE_OPTION_DECORATOR = 'STYLE_OPTION_DECORATOR';
/**
* style option 装饰器
* @param extraDesc 额外附加的装饰器,默认为observable.ref,设置为非函数值的时候不附加装饰器
*/
function styleOption(extraDesc) {
if (extraDesc === void 0) { extraDesc = mobx_1.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;
};
}
exports.styleOption = styleOption;
var ChartStyleService = /** @class */ (function () {
function ChartStyleService(_) {
this.displayColors = []; // 用于自定义颜色
}
/**
* 获取style option装饰器存储下来的内容
*/
ChartStyleService.prototype.getStyleOptionNames = function () {
return lodash_1.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 (lodash_1.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 || !lodash_1.isNil(value)) {
handler(value);
}
});
};
ChartStyleService.prototype.setDisplayColors = function (colors) {
this.displayColors = colors;
};
__decorate([
styleOption(),
__metadata("design:type", Array)
], ChartStyleService.prototype, "displayColors", void 0);
__decorate([
mobx_1.action,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Object]),
__metadata("design:returntype", void 0)
], ChartStyleService.prototype, "set", null);
__decorate([
bind_1.default,
mobx_1.action,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Object, Array, Boolean]),
__metadata("design:returntype", void 0)
], ChartStyleService.prototype, "executeFieldHandlers", null);
__decorate([
bind_1.default,
mobx_1.action,
__metadata("design:type", Function),
__metadata("design:paramtypes", [Array]),
__metadata("design:returntype", void 0)
], ChartStyleService.prototype, "setDisplayColors", null);
return ChartStyleService;
}());
exports.default = ChartStyleService;