| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 | 
/** 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 { isFunction, isString } from 'zrender/lib/core/util.js';var samplers = {  average: function (frame) {    var sum = 0;    var count = 0;    for (var i = 0; i < frame.length; i++) {      if (!isNaN(frame[i])) {        sum += frame[i];        count++;      }    }    // Return NaN if count is 0    return count === 0 ? NaN : sum / count;  },  sum: function (frame) {    var sum = 0;    for (var i = 0; i < frame.length; i++) {      // Ignore NaN      sum += frame[i] || 0;    }    return sum;  },  max: function (frame) {    var max = -Infinity;    for (var i = 0; i < frame.length; i++) {      frame[i] > max && (max = frame[i]);    }    // NaN will cause illegal axis extent.    return isFinite(max) ? max : NaN;  },  min: function (frame) {    var min = Infinity;    for (var i = 0; i < frame.length; i++) {      frame[i] < min && (min = frame[i]);    }    // NaN will cause illegal axis extent.    return isFinite(min) ? min : NaN;  },  // TODO  // Median  nearest: function (frame) {    return frame[0];  }};var indexSampler = function (frame) {  return Math.round(frame.length / 2);};export default function dataSample(seriesType) {  return {    seriesType: seriesType,    // FIXME:TS never used, so comment it    // modifyOutputEnd: true,    reset: function (seriesModel, ecModel, api) {      var data = seriesModel.getData();      var sampling = seriesModel.get('sampling');      var coordSys = seriesModel.coordinateSystem;      var count = data.count();      // Only cartesian2d support down sampling. Disable it when there is few data.      if (count > 10 && coordSys.type === 'cartesian2d' && sampling) {        var baseAxis = coordSys.getBaseAxis();        var valueAxis = coordSys.getOtherAxis(baseAxis);        var extent = baseAxis.getExtent();        var dpr = api.getDevicePixelRatio();        // Coordinste system has been resized        var size = Math.abs(extent[1] - extent[0]) * (dpr || 1);        var rate = Math.round(count / size);        if (isFinite(rate) && rate > 1) {          if (sampling === 'lttb') {            seriesModel.setData(data.lttbDownSample(data.mapDimension(valueAxis.dim), 1 / rate));          } else if (sampling === 'minmax') {            seriesModel.setData(data.minmaxDownSample(data.mapDimension(valueAxis.dim), 1 / rate));          }          var sampler = void 0;          if (isString(sampling)) {            sampler = samplers[sampling];          } else if (isFunction(sampling)) {            sampler = sampling;          }          if (sampler) {            // Only support sample the first dim mapped from value axis.            seriesModel.setData(data.downSample(data.mapDimension(valueAxis.dim), 1 / rate, sampler, indexSampler));          }        }      }    }  };}
 |