| 
/* 
 | 
* 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 zrUtil from 'zrender/lib/core/util.js'; 
 | 
import AxisBuilder from './AxisBuilder.js'; 
 | 
import BrushController from '../helper/BrushController.js'; 
 | 
import * as brushHelper from '../helper/brushHelper.js'; 
 | 
import * as graphic from '../../util/graphic.js'; 
 | 
import ComponentView from '../../view/Component.js'; 
 | 
var elementList = ['axisLine', 'axisTickLabel', 'axisName']; 
 | 
var ParallelAxisView = /** @class */function (_super) { 
 | 
  __extends(ParallelAxisView, _super); 
 | 
  function ParallelAxisView() { 
 | 
    var _this = _super !== null && _super.apply(this, arguments) || this; 
 | 
    _this.type = ParallelAxisView.type; 
 | 
    return _this; 
 | 
  } 
 | 
  ParallelAxisView.prototype.init = function (ecModel, api) { 
 | 
    _super.prototype.init.apply(this, arguments); 
 | 
    (this._brushController = new BrushController(api.getZr())).on('brush', zrUtil.bind(this._onBrush, this)); 
 | 
  }; 
 | 
  ParallelAxisView.prototype.render = function (axisModel, ecModel, api, payload) { 
 | 
    if (fromAxisAreaSelect(axisModel, ecModel, payload)) { 
 | 
      return; 
 | 
    } 
 | 
    this.axisModel = axisModel; 
 | 
    this.api = api; 
 | 
    this.group.removeAll(); 
 | 
    var oldAxisGroup = this._axisGroup; 
 | 
    this._axisGroup = new graphic.Group(); 
 | 
    this.group.add(this._axisGroup); 
 | 
    if (!axisModel.get('show')) { 
 | 
      return; 
 | 
    } 
 | 
    var coordSysModel = getCoordSysModel(axisModel, ecModel); 
 | 
    var coordSys = coordSysModel.coordinateSystem; 
 | 
    var areaSelectStyle = axisModel.getAreaSelectStyle(); 
 | 
    var areaWidth = areaSelectStyle.width; 
 | 
    var dim = axisModel.axis.dim; 
 | 
    var axisLayout = coordSys.getAxisLayout(dim); 
 | 
    var builderOpt = zrUtil.extend({ 
 | 
      strokeContainThreshold: areaWidth 
 | 
    }, axisLayout); 
 | 
    var axisBuilder = new AxisBuilder(axisModel, builderOpt); 
 | 
    zrUtil.each(elementList, axisBuilder.add, axisBuilder); 
 | 
    this._axisGroup.add(axisBuilder.getGroup()); 
 | 
    this._refreshBrushController(builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api); 
 | 
    graphic.groupTransition(oldAxisGroup, this._axisGroup, axisModel); 
 | 
  }; 
 | 
  // /** 
 | 
  //  * @override 
 | 
  //  */ 
 | 
  // updateVisual(axisModel, ecModel, api, payload) { 
 | 
  //     this._brushController && this._brushController 
 | 
  //         .updateCovers(getCoverInfoList(axisModel)); 
 | 
  // } 
 | 
  ParallelAxisView.prototype._refreshBrushController = function (builderOpt, areaSelectStyle, axisModel, coordSysModel, areaWidth, api) { 
 | 
    // After filtering, axis may change, select area needs to be update. 
 | 
    var extent = axisModel.axis.getExtent(); 
 | 
    var extentLen = extent[1] - extent[0]; 
 | 
    var extra = Math.min(30, Math.abs(extentLen) * 0.1); // Arbitrary value. 
 | 
    // width/height might be negative, which will be 
 | 
    // normalized in BoundingRect. 
 | 
    var rect = graphic.BoundingRect.create({ 
 | 
      x: extent[0], 
 | 
      y: -areaWidth / 2, 
 | 
      width: extentLen, 
 | 
      height: areaWidth 
 | 
    }); 
 | 
    rect.x -= extra; 
 | 
    rect.width += 2 * extra; 
 | 
    this._brushController.mount({ 
 | 
      enableGlobalPan: true, 
 | 
      rotation: builderOpt.rotation, 
 | 
      x: builderOpt.position[0], 
 | 
      y: builderOpt.position[1] 
 | 
    }).setPanels([{ 
 | 
      panelId: 'pl', 
 | 
      clipPath: brushHelper.makeRectPanelClipPath(rect), 
 | 
      isTargetByCursor: brushHelper.makeRectIsTargetByCursor(rect, api, coordSysModel), 
 | 
      getLinearBrushOtherExtent: brushHelper.makeLinearBrushOtherExtent(rect, 0) 
 | 
    }]).enableBrush({ 
 | 
      brushType: 'lineX', 
 | 
      brushStyle: areaSelectStyle, 
 | 
      removeOnClick: true 
 | 
    }).updateCovers(getCoverInfoList(axisModel)); 
 | 
  }; 
 | 
  ParallelAxisView.prototype._onBrush = function (eventParam) { 
 | 
    var coverInfoList = eventParam.areas; 
 | 
    // Do not cache these object, because the mey be changed. 
 | 
    var axisModel = this.axisModel; 
 | 
    var axis = axisModel.axis; 
 | 
    var intervals = zrUtil.map(coverInfoList, function (coverInfo) { 
 | 
      return [axis.coordToData(coverInfo.range[0], true), axis.coordToData(coverInfo.range[1], true)]; 
 | 
    }); 
 | 
    // If realtime is true, action is not dispatched on drag end, because 
 | 
    // the drag end emits the same params with the last drag move event, 
 | 
    // and may have some delay when using touch pad. 
 | 
    if (!axisModel.option.realtime === eventParam.isEnd || eventParam.removeOnClick) { 
 | 
      // jshint ignore:line 
 | 
      this.api.dispatchAction({ 
 | 
        type: 'axisAreaSelect', 
 | 
        parallelAxisId: axisModel.id, 
 | 
        intervals: intervals 
 | 
      }); 
 | 
    } 
 | 
  }; 
 | 
  ParallelAxisView.prototype.dispose = function () { 
 | 
    this._brushController.dispose(); 
 | 
  }; 
 | 
  ParallelAxisView.type = 'parallelAxis'; 
 | 
  return ParallelAxisView; 
 | 
}(ComponentView); 
 | 
function fromAxisAreaSelect(axisModel, ecModel, payload) { 
 | 
  return payload && payload.type === 'axisAreaSelect' && ecModel.findComponents({ 
 | 
    mainType: 'parallelAxis', 
 | 
    query: payload 
 | 
  })[0] === axisModel; 
 | 
} 
 | 
function getCoverInfoList(axisModel) { 
 | 
  var axis = axisModel.axis; 
 | 
  return zrUtil.map(axisModel.activeIntervals, function (interval) { 
 | 
    return { 
 | 
      brushType: 'lineX', 
 | 
      panelId: 'pl', 
 | 
      range: [axis.dataToCoord(interval[0], true), axis.dataToCoord(interval[1], true)] 
 | 
    }; 
 | 
  }); 
 | 
} 
 | 
function getCoordSysModel(axisModel, ecModel) { 
 | 
  return ecModel.getComponent('parallel', axisModel.get('parallelIndex')); 
 | 
} 
 | 
export default ParallelAxisView; 
 |