echarts
Version:
Apache ECharts is a powerful, interactive charting and data visualization library for browser
208 lines (204 loc) • 7.8 kB
JavaScript
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* AUTO-GENERATED FILE. DO NOT MODIFY.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import { __extends } from "tslib";
import Scale from './Scale.js';
import IntervalScale from './Interval.js';
import { logScalePowTick, logScaleLogTick } from './helper.js';
import { getBreaksUnsafe, getScaleBreakHelper } from './break.js';
import { getMinorTicks } from './minorTicks.js';
import { decorateScaleMapper, enableScaleMapperFreeze, SCALE_EXTENT_KIND_EFFECTIVE, SCALE_MAPPER_DEPTH_OUT_OF_BREAK } from './scaleMapper.js';
import { map } from 'zrender/lib/core/util.js';
import { isValidBoundsForExtent } from '../util/model.js';
import { isNullableNumberFinite } from '../util/number.js';
var LOOKUP_IDX_EXTENT_START = 0;
var LOOKUP_IDX_EXTENT_END = 1;
var LOOKUP_IDX_BREAK_START = 2;
/**
* @final NEVER inherit me!
*/
var LogScale = /** @class */function (_super) {
__extends(LogScale, _super);
function LogScale(setting) {
var _this = _super.call(this) || this;
_this.type = 'log';
_this.parse = IntervalScale.parse;
_this.base = setting.logBase || 10;
var lookupFrom = [];
var lookupTo = [];
var lookup = _this._lookup = {
from: lookupFrom,
to: lookupTo
};
lookupFrom[LOOKUP_IDX_EXTENT_START] = lookupFrom[LOOKUP_IDX_EXTENT_END] = lookupTo[LOOKUP_IDX_EXTENT_START] = lookupTo[LOOKUP_IDX_EXTENT_END] = NaN;
decorateScaleMapper(_this, LogScale.mapperMethods);
var scaleBreakHelper = getScaleBreakHelper();
var breakOption = setting.breakOption;
var out = {
lookup: lookup
};
if (scaleBreakHelper) {
scaleBreakHelper.parseAxisBreakOptionInwardTransform(breakOption, _this, {
noNegative: true
}, LOOKUP_IDX_BREAK_START, out);
}
_this.powStub = new IntervalScale({
breakParsed: out.original
});
_this.intervalStub = new IntervalScale({
breakParsed: out.transformed
});
enableScaleMapperFreeze(_this, _this.intervalStub);
return _this;
}
LogScale.prototype.getTicks = function (opt) {
var base = this.base;
var powStub = this.powStub;
var scaleBreakHelper = getScaleBreakHelper();
var intervalStub = this.intervalStub;
var intervalExtent = intervalStub.getExtent();
var powExtent = powStub.getExtent();
var powOpt = {
lookup: {
from: intervalExtent,
to: powExtent
}
};
return map(intervalStub.getTicks(opt || {}), function (tick) {
var val = tick.value;
var powVal = logScalePowTick(val, base, powOpt);
var vBreak;
if (scaleBreakHelper) {
var brkPowResult = scaleBreakHelper.getTicksBreakOutwardTransform(this, tick, getBreaksUnsafe(powStub), this._lookup);
if (brkPowResult) {
vBreak = brkPowResult.vBreak;
powVal = brkPowResult.tickVal;
}
}
return {
value: powVal,
"break": vBreak
};
}, this);
};
LogScale.prototype.getMinorTicks = function (splitNumber) {
return getMinorTicks(this, splitNumber, getBreaksUnsafe(this.powStub),
// NOTE: minor ticks are in the log scale value to visually hint users "logarithm".
this.intervalStub.getConfig().interval);
};
LogScale.prototype.getLabel = function (data, opt) {
return this.intervalStub.getLabel(data, opt);
};
LogScale.type = 'log';
LogScale.mapperMethods = {
needTransform: function () {
return true;
},
normalize: function (val) {
return this.intervalStub.normalize(logScaleLogTick(val, this.base));
},
scale: function (val) {
// PENDING: Input `intervalStub.getExtent()` and `powStub.getExtent()` may
// break monotonicity. Do not do it until real problems found.
return logScalePowTick(this.intervalStub.scale(val), this.base, null);
},
transformIn: function (val, opt) {
val = logScaleLogTick(val, this.base);
return opt && opt.depth === SCALE_MAPPER_DEPTH_OUT_OF_BREAK ? val : this.intervalStub.transformIn(val, opt);
},
transformOut: function (val, opt) {
var depth = opt ? opt.depth : null;
tmpTransformOutOpt1.depth = depth;
tmpTransformOutOpt2.lookup = this._lookup;
return logScalePowTick(depth === SCALE_MAPPER_DEPTH_OUT_OF_BREAK ? val : this.intervalStub.transformOut(val, tmpTransformOutOpt1), this.base, tmpTransformOutOpt2);
},
contain: function (val) {
return this.powStub.contain(val);
},
/**
* NOTICE: The caller should ensure `start` and `end` are both non-negative.
*/
setExtent: function (start, end) {
this.setExtent2(SCALE_EXTENT_KIND_EFFECTIVE, start, end);
},
setExtent2: function (kind, start, end) {
if (!isValidBoundsForExtent(start, end) || start <= 0 || end <= 0) {
return;
}
var lookupTo = tmpNotUsedArr;
var lookupFrom = tmpNotUsedArr;
if (kind === SCALE_EXTENT_KIND_EFFECTIVE) {
var lookup = this._lookup;
lookupTo = lookup.to;
lookupFrom = lookup.from;
}
this.powStub.setExtent2(kind, lookupTo[LOOKUP_IDX_EXTENT_START] = start, lookupTo[LOOKUP_IDX_EXTENT_END] = end);
var base = this.base;
this.intervalStub.setExtent2(kind, lookupFrom[LOOKUP_IDX_EXTENT_START] = logScaleLogTick(start, base), lookupFrom[LOOKUP_IDX_EXTENT_END] = logScaleLogTick(end, base));
},
getFilter: function () {
return {
g: 0
};
},
sanitize: function (value, dataExtent) {
// Conservative - if dataExtent is invalid, do not sanitize.
if (isValidBoundsForExtent(dataExtent[0], dataExtent[1]) && isNullableNumberFinite(value) && value <= 0) {
// `DataStore` has ensured that `dataExtent` is valid for LogScale.
value = dataExtent[0];
}
return value;
},
getDefaultStartValue: function () {
return 1;
},
getExtent: function () {
return this.powStub.getExtent();
},
getExtentUnsafe: function (kind, depth) {
return depth === null ? this.powStub.getExtentUnsafe(kind, null) : this.intervalStub.getExtentUnsafe(kind, depth);
}
};
return LogScale;
}(Scale);
Scale.registerClass(LogScale);
var tmpTransformOutOpt1 = {};
var tmpTransformOutOpt2 = {};
var tmpNotUsedArr = [];
export default LogScale;