| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 | 
/** 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 ComponentModel = require("../../model/Component");var List = require("../../data/List");var modelUtil = require("../../util/model");/** 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 TimelineModel = ComponentModel.extend({  type: 'timeline',  layoutMode: 'box',  /**   * @protected   */  defaultOption: {    zlevel: 0,    // 一级层叠    z: 4,    // 二级层叠    show: true,    axisType: 'time',    // 模式是时间类型,支持 value, category    realtime: true,    left: '20%',    top: null,    right: '20%',    bottom: 0,    width: null,    height: 40,    padding: 5,    controlPosition: 'left',    // 'left' 'right' 'top' 'bottom' 'none'    autoPlay: false,    rewind: false,    // 反向播放    loop: true,    playInterval: 2000,    // 播放时间间隔,单位ms    currentIndex: 0,    itemStyle: {},    label: {      color: '#000'    },    data: []  },  /**   * @override   */  init: function (option, parentModel, ecModel) {    /**     * @private     * @type {module:echarts/data/List}     */    this._data;    /**     * @private     * @type {Array.<string>}     */    this._names;    this.mergeDefaultAndTheme(option, ecModel);    this._initData();  },  /**   * @override   */  mergeOption: function (option) {    TimelineModel.superApply(this, 'mergeOption', arguments);    this._initData();  },  /**   * @param {number} [currentIndex]   */  setCurrentIndex: function (currentIndex) {    if (currentIndex == null) {      currentIndex = this.option.currentIndex;    }    var count = this._data.count();    if (this.option.loop) {      currentIndex = (currentIndex % count + count) % count;    } else {      currentIndex >= count && (currentIndex = count - 1);      currentIndex < 0 && (currentIndex = 0);    }    this.option.currentIndex = currentIndex;  },  /**   * @return {number} currentIndex   */  getCurrentIndex: function () {    return this.option.currentIndex;  },  /**   * @return {boolean}   */  isIndexMax: function () {    return this.getCurrentIndex() >= this._data.count() - 1;  },  /**   * @param {boolean} state true: play, false: stop   */  setPlayState: function (state) {    this.option.autoPlay = !!state;  },  /**   * @return {boolean} true: play, false: stop   */  getPlayState: function () {    return !!this.option.autoPlay;  },  /**   * @private   */  _initData: function () {    var thisOption = this.option;    var dataArr = thisOption.data || [];    var axisType = thisOption.axisType;    var names = this._names = [];    if (axisType === 'category') {      var idxArr = [];      zrUtil.each(dataArr, function (item, index) {        var value = modelUtil.getDataItemValue(item);        var newItem;        if (zrUtil.isObject(item)) {          newItem = zrUtil.clone(item);          newItem.value = index;        } else {          newItem = index;        }        idxArr.push(newItem);        if (!zrUtil.isString(value) && (value == null || isNaN(value))) {          value = '';        }        names.push(value + '');      });      dataArr = idxArr;    }    var dimType = {      category: 'ordinal',      time: 'time'    }[axisType] || 'number';    var data = this._data = new List([{      name: 'value',      type: dimType    }], this);    data.initData(dataArr, names);  },  getData: function () {    return this._data;  },  /**   * @public   * @return {Array.<string>} categoreis   */  getCategories: function () {    if (this.get('axisType') === 'category') {      return this._names.slice();    }  }});var _default = TimelineModel;module.exports = _default;
 |