138 lines
4.4 KiB
Java
138 lines
4.4 KiB
Java
"use strict";
|
||
Object.defineProperty(exports, "__esModule", { value: true });
|
||
var tslib_1 = require("tslib");
|
||
var util_1 = require("@antv/util");
|
||
var wolfy87_eventemitter_1 = tslib_1.__importDefault(require("wolfy87-eventemitter"));
|
||
var view_1 = require("./view");
|
||
var constants_1 = tslib_1.__importDefault(require("./constants"));
|
||
/**
|
||
* 数据集
|
||
* @public
|
||
*/
|
||
var DataSet = /** @class */ (function (_super) {
|
||
tslib_1.__extends(DataSet, _super);
|
||
/**
|
||
* @param initialProps - 初始状态
|
||
*/
|
||
function DataSet(initialProps) {
|
||
if (initialProps === void 0) { initialProps = { state: {} }; }
|
||
var _this = _super.call(this) || this;
|
||
/**
|
||
* 否是 DataSet
|
||
*/
|
||
_this.isDataSet = true;
|
||
_this._onChangeTimer = null;
|
||
/**
|
||
* 所有挂在数据集上的数据视图(key-value 对)
|
||
*/
|
||
_this.views = {};
|
||
/**
|
||
* 存储数据集上的状态量(key-value 对)
|
||
*/
|
||
_this.state = {};
|
||
// assign(me, initialProps);
|
||
_this.state = initialProps.state;
|
||
return _this;
|
||
}
|
||
/**
|
||
* 注册一个数据连接函数,注册后所有数据视图都可以使用 name 来引用这个数据连接函数,从而接入某种数据源。
|
||
* @param name - 类型
|
||
* @param connector - 解析逻辑
|
||
*/
|
||
DataSet.registerConnector = function (name, connector) {
|
||
DataSet.connectors[name] = connector;
|
||
};
|
||
DataSet.getConnector = function (name) {
|
||
return DataSet.connectors[name] || DataSet.connectors.default;
|
||
};
|
||
/**
|
||
* 注册一个数据处理函数,注册后所有数据视图都可以使用 name 来引用这个数据处理函数,从而进行某种数据处理
|
||
* @param name - transform 类型
|
||
* @param transform - transform逻辑
|
||
*/
|
||
DataSet.registerTransform = function (name, transform) {
|
||
DataSet.transforms[name] = transform;
|
||
};
|
||
DataSet.getTransform = function (name) {
|
||
return DataSet.transforms[name] || DataSet.transforms.default;
|
||
};
|
||
DataSet.prototype._getUniqueViewName = function () {
|
||
var name = util_1.uniqueId('view_');
|
||
while (this.views[name]) {
|
||
name = util_1.uniqueId('view_');
|
||
}
|
||
return name;
|
||
};
|
||
DataSet.prototype.createView = function (name, options) {
|
||
if (util_1.isNil(name)) {
|
||
name = this._getUniqueViewName();
|
||
}
|
||
if (util_1.isObject(name)) {
|
||
options = name;
|
||
name = this._getUniqueViewName();
|
||
}
|
||
if (this.views[name]) {
|
||
throw new Error("data view exists: " + name);
|
||
}
|
||
var view = new view_1.View(this, options);
|
||
this.views[name] = view;
|
||
return view;
|
||
};
|
||
/**
|
||
* 返回 name 对应的数据视图实例
|
||
* @param name - name
|
||
*/
|
||
DataSet.prototype.getView = function (name) {
|
||
return this.views[name];
|
||
};
|
||
/**
|
||
* 设置 name 对应的数据视图实例为 dv
|
||
* @param name - 名称
|
||
* @param view - data view
|
||
*/
|
||
DataSet.prototype.setView = function (name, view) {
|
||
this.views[name] = view;
|
||
};
|
||
/**
|
||
* 设置状态量 name 的值为 value
|
||
* @param name - 状态名
|
||
* @param value - 值
|
||
*/
|
||
DataSet.prototype.setState = function (name, value) {
|
||
var _this = this;
|
||
this.state[name] = value;
|
||
if (this._onChangeTimer) {
|
||
window.clearTimeout(this._onChangeTimer);
|
||
this._onChangeTimer = null;
|
||
}
|
||
this._onChangeTimer = window.setTimeout(function () {
|
||
_this.emit('statechange', name, value);
|
||
}, 16); // execute after one frame
|
||
};
|
||
/**
|
||
* 常量,譬如 DataSet.CONSTANTS.HIERARCHY 是树形结构的名称
|
||
*/
|
||
DataSet.CONSTANTS = constants_1.default;
|
||
/**
|
||
* 注册的 Connector(key-value 对)
|
||
*/
|
||
DataSet.connectors = {};
|
||
/**
|
||
* 已注册的 Transform(key-value 对)
|
||
*/
|
||
DataSet.transforms = {};
|
||
DataSet.DataSet = DataSet;
|
||
DataSet.DataView = view_1.View; // alias
|
||
DataSet.View = view_1.View;
|
||
DataSet.version = '____DATASET_VERSION____';
|
||
return DataSet;
|
||
}(wolfy87_eventemitter_1.default));
|
||
exports.DataSet = DataSet;
|
||
// @ts-ignore
|
||
util_1.assign(DataSet, constants_1.default);
|
||
// @ts-ignore
|
||
util_1.assign(DataSet.prototype, {
|
||
view: DataSet.prototype.createView,
|
||
});
|
||
view_1.View.DataSet = DataSet;
|