cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
121 lines (120 loc) • 4.48 kB
JavaScript
import { __extends } from "../../../tslib/tslib.es6.mjs";
import Scale from "./Scale.mjs";
import OrdinalMeta from "../data/OrdinalMeta.mjs";
import { contain, normalize, scale } from "./helper.mjs";
import { isArray, map, isObject, isString } from "../../../zrender/lib/core/util.mjs";
var OrdinalScale = function(_super) {
__extends(OrdinalScale2, _super);
function OrdinalScale2(setting) {
var _this = _super.call(this, setting) || this;
_this.type = "ordinal";
var ordinalMeta = _this.getSetting("ordinalMeta");
if (!ordinalMeta) {
ordinalMeta = new OrdinalMeta({});
}
if (isArray(ordinalMeta)) {
ordinalMeta = new OrdinalMeta({
categories: map(ordinalMeta, function(item) {
return isObject(item) ? item.value : item;
})
});
}
_this._ordinalMeta = ordinalMeta;
_this._extent = _this.getSetting("extent") || [0, ordinalMeta.categories.length - 1];
return _this;
}
OrdinalScale2.prototype.parse = function(val) {
if (val == null) {
return NaN;
}
return isString(val) ? this._ordinalMeta.getOrdinal(val) : Math.round(val);
};
OrdinalScale2.prototype.contain = function(rank) {
rank = this.parse(rank);
return contain(rank, this._extent) && this._ordinalMeta.categories[rank] != null;
};
OrdinalScale2.prototype.normalize = function(val) {
val = this._getTickNumber(this.parse(val));
return normalize(val, this._extent);
};
OrdinalScale2.prototype.scale = function(val) {
val = Math.round(scale(val, this._extent));
return this.getRawOrdinalNumber(val);
};
OrdinalScale2.prototype.getTicks = function() {
var ticks = [];
var extent = this._extent;
var rank = extent[0];
while (rank <= extent[1]) {
ticks.push({
value: rank
});
rank++;
}
return ticks;
};
OrdinalScale2.prototype.getMinorTicks = function(splitNumber) {
return;
};
OrdinalScale2.prototype.setSortInfo = function(info) {
if (info == null) {
this._ordinalNumbersByTick = this._ticksByOrdinalNumber = null;
return;
}
var infoOrdinalNumbers = info.ordinalNumbers;
var ordinalsByTick = this._ordinalNumbersByTick = [];
var ticksByOrdinal = this._ticksByOrdinalNumber = [];
var tickNum = 0;
var allCategoryLen = this._ordinalMeta.categories.length;
for (var len = Math.min(allCategoryLen, infoOrdinalNumbers.length); tickNum < len; ++tickNum) {
var ordinalNumber = infoOrdinalNumbers[tickNum];
ordinalsByTick[tickNum] = ordinalNumber;
ticksByOrdinal[ordinalNumber] = tickNum;
}
var unusedOrdinal = 0;
for (; tickNum < allCategoryLen; ++tickNum) {
while (ticksByOrdinal[unusedOrdinal] != null) {
unusedOrdinal++;
}
ordinalsByTick.push(unusedOrdinal);
ticksByOrdinal[unusedOrdinal] = tickNum;
}
};
OrdinalScale2.prototype._getTickNumber = function(ordinal) {
var ticksByOrdinalNumber = this._ticksByOrdinalNumber;
return ticksByOrdinalNumber && ordinal >= 0 && ordinal < ticksByOrdinalNumber.length ? ticksByOrdinalNumber[ordinal] : ordinal;
};
OrdinalScale2.prototype.getRawOrdinalNumber = function(tickNumber) {
var ordinalNumbersByTick = this._ordinalNumbersByTick;
return ordinalNumbersByTick && tickNumber >= 0 && tickNumber < ordinalNumbersByTick.length ? ordinalNumbersByTick[tickNumber] : tickNumber;
};
OrdinalScale2.prototype.getLabel = function(tick) {
if (!this.isBlank()) {
var ordinalNumber = this.getRawOrdinalNumber(tick.value);
var cateogry = this._ordinalMeta.categories[ordinalNumber];
return cateogry == null ? "" : cateogry + "";
}
};
OrdinalScale2.prototype.count = function() {
return this._extent[1] - this._extent[0] + 1;
};
OrdinalScale2.prototype.unionExtentFromData = function(data, dim) {
this.unionExtent(data.getApproximateExtent(dim));
};
OrdinalScale2.prototype.isInExtentRange = function(value) {
value = this._getTickNumber(value);
return this._extent[0] <= value && this._extent[1] >= value;
};
OrdinalScale2.prototype.getOrdinalMeta = function() {
return this._ordinalMeta;
};
OrdinalScale2.prototype.calcNiceTicks = function() {
};
OrdinalScale2.prototype.calcNiceExtent = function() {
};
OrdinalScale2.type = "ordinal";
return OrdinalScale2;
}(Scale);
Scale.registerClass(OrdinalScale);
var OrdinalScale$1 = OrdinalScale;
export { OrdinalScale$1 as default };