123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- /*
- * 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 * as textContain from 'zrender/lib/contain/text.js';
- import Axis from '../Axis.js';
- import { makeInner } from '../../util/model.js';
- var inner = makeInner();
- var AngleAxis = /** @class */function (_super) {
- __extends(AngleAxis, _super);
- function AngleAxis(scale, angleExtent) {
- return _super.call(this, 'angle', scale, angleExtent || [0, 360]) || this;
- }
- AngleAxis.prototype.pointToData = function (point, clamp) {
- return this.polar.pointToData(point, clamp)[this.dim === 'radius' ? 0 : 1];
- };
- /**
- * Only be called in category axis.
- * Angle axis uses text height to decide interval
- *
- * @override
- * @return {number} Auto interval for cateogry axis tick and label
- */
- AngleAxis.prototype.calculateCategoryInterval = function () {
- var axis = this;
- var labelModel = axis.getLabelModel();
- var ordinalScale = axis.scale;
- var ordinalExtent = ordinalScale.getExtent();
- // Providing this method is for optimization:
- // avoid generating a long array by `getTicks`
- // in large category data case.
- var tickCount = ordinalScale.count();
- if (ordinalExtent[1] - ordinalExtent[0] < 1) {
- return 0;
- }
- var tickValue = ordinalExtent[0];
- var unitSpan = axis.dataToCoord(tickValue + 1) - axis.dataToCoord(tickValue);
- var unitH = Math.abs(unitSpan);
- // Not precise, just use height as text width
- // and each distance from axis line yet.
- var rect = textContain.getBoundingRect(tickValue == null ? '' : tickValue + '', labelModel.getFont(), 'center', 'top');
- var maxH = Math.max(rect.height, 7);
- var dh = maxH / unitH;
- // 0/0 is NaN, 1/0 is Infinity.
- isNaN(dh) && (dh = Infinity);
- var interval = Math.max(0, Math.floor(dh));
- var cache = inner(axis.model);
- var lastAutoInterval = cache.lastAutoInterval;
- var lastTickCount = cache.lastTickCount;
- // Use cache to keep interval stable while moving zoom window,
- // otherwise the calculated interval might jitter when the zoom
- // window size is close to the interval-changing size.
- if (lastAutoInterval != null && lastTickCount != null && Math.abs(lastAutoInterval - interval) <= 1 && Math.abs(lastTickCount - tickCount) <= 1
- // Always choose the bigger one, otherwise the critical
- // point is not the same when zooming in or zooming out.
- && lastAutoInterval > interval) {
- interval = lastAutoInterval;
- }
- // Only update cache if cache not used, otherwise the
- // changing of interval is too insensitive.
- else {
- cache.lastTickCount = tickCount;
- cache.lastAutoInterval = interval;
- }
- return interval;
- };
- return AngleAxis;
- }(Axis);
- AngleAxis.prototype.dataToAngle = Axis.prototype.dataToCoord;
- AngleAxis.prototype.angleToData = Axis.prototype.coordToData;
- export default AngleAxis;
|