123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- /*
- * 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.
- */
- var zrUtil = require("zrender/lib/core/util");
- var Scale = require("./Scale");
- var OrdinalMeta = require("../data/OrdinalMeta");
- /*
- * 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.
- */
- /**
- * Linear continuous scale
- * @module echarts/coord/scale/Ordinal
- *
- * http://en.wikipedia.org/wiki/Level_of_measurement
- */
- // FIXME only one data
- var scaleProto = Scale.prototype;
- var OrdinalScale = Scale.extend({
- type: 'ordinal',
- /**
- * @param {module:echarts/data/OrdianlMeta|Array.<string>} ordinalMeta
- */
- init: function (ordinalMeta, extent) {
- // Caution: Should not use instanceof, consider ec-extensions using
- // import approach to get OrdinalMeta class.
- if (!ordinalMeta || zrUtil.isArray(ordinalMeta)) {
- ordinalMeta = new OrdinalMeta({
- categories: ordinalMeta
- });
- }
- this._ordinalMeta = ordinalMeta;
- this._extent = extent || [0, ordinalMeta.categories.length - 1];
- },
- parse: function (val) {
- return typeof val === 'string' ? this._ordinalMeta.getOrdinal(val) // val might be float.
- : Math.round(val);
- },
- contain: function (rank) {
- rank = this.parse(rank);
- return scaleProto.contain.call(this, rank) && this._ordinalMeta.categories[rank] != null;
- },
- /**
- * Normalize given rank or name to linear [0, 1]
- * @param {number|string} [val]
- * @return {number}
- */
- normalize: function (val) {
- return scaleProto.normalize.call(this, this.parse(val));
- },
- scale: function (val) {
- return Math.round(scaleProto.scale.call(this, val));
- },
- /**
- * @return {Array}
- */
- getTicks: function () {
- var ticks = [];
- var extent = this._extent;
- var rank = extent[0];
- while (rank <= extent[1]) {
- ticks.push(rank);
- rank++;
- }
- return ticks;
- },
- /**
- * Get item on rank n
- * @param {number} n
- * @return {string}
- */
- getLabel: function (n) {
- if (!this.isBlank()) {
- // Note that if no data, ordinalMeta.categories is an empty array.
- return this._ordinalMeta.categories[n];
- }
- },
- /**
- * @return {number}
- */
- count: function () {
- return this._extent[1] - this._extent[0] + 1;
- },
- /**
- * @override
- */
- unionExtentFromData: function (data, dim) {
- this.unionExtent(data.getApproximateExtent(dim));
- },
- getOrdinalMeta: function () {
- return this._ordinalMeta;
- },
- niceTicks: zrUtil.noop,
- niceExtent: zrUtil.noop
- });
- /**
- * @return {module:echarts/scale/Time}
- */
- OrdinalScale.create = function () {
- return new OrdinalScale();
- };
- var _default = OrdinalScale;
- module.exports = _default;
|