| 
/* 
 | 
* 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 { each } from 'zrender/lib/core/util.js'; 
 | 
import Group from 'zrender/lib/graphic/Group.js'; 
 | 
import * as componentUtil from '../util/component.js'; 
 | 
import * as clazzUtil from '../util/clazz.js'; 
 | 
import * as modelUtil from '../util/model.js'; 
 | 
import { enterEmphasis, leaveEmphasis, getHighlightDigit, isHighDownDispatcher } from '../util/states.js'; 
 | 
import { createTask } from '../core/task.js'; 
 | 
import createRenderPlanner from '../chart/helper/createRenderPlanner.js'; 
 | 
import { traverseElements } from '../util/graphic.js'; 
 | 
import { error } from '../util/log.js'; 
 | 
var inner = modelUtil.makeInner(); 
 | 
var renderPlanner = createRenderPlanner(); 
 | 
var ChartView = /** @class */function () { 
 | 
  function ChartView() { 
 | 
    this.group = new Group(); 
 | 
    this.uid = componentUtil.getUID('viewChart'); 
 | 
    this.renderTask = createTask({ 
 | 
      plan: renderTaskPlan, 
 | 
      reset: renderTaskReset 
 | 
    }); 
 | 
    this.renderTask.context = { 
 | 
      view: this 
 | 
    }; 
 | 
  } 
 | 
  ChartView.prototype.init = function (ecModel, api) {}; 
 | 
  ChartView.prototype.render = function (seriesModel, ecModel, api, payload) { 
 | 
    if (process.env.NODE_ENV !== 'production') { 
 | 
      throw new Error('render method must been implemented'); 
 | 
    } 
 | 
  }; 
 | 
  /** 
 | 
   * Highlight series or specified data item. 
 | 
   */ 
 | 
  ChartView.prototype.highlight = function (seriesModel, ecModel, api, payload) { 
 | 
    var data = seriesModel.getData(payload && payload.dataType); 
 | 
    if (!data) { 
 | 
      if (process.env.NODE_ENV !== 'production') { 
 | 
        error("Unknown dataType " + payload.dataType); 
 | 
      } 
 | 
      return; 
 | 
    } 
 | 
    toggleHighlight(data, payload, 'emphasis'); 
 | 
  }; 
 | 
  /** 
 | 
   * Downplay series or specified data item. 
 | 
   */ 
 | 
  ChartView.prototype.downplay = function (seriesModel, ecModel, api, payload) { 
 | 
    var data = seriesModel.getData(payload && payload.dataType); 
 | 
    if (!data) { 
 | 
      if (process.env.NODE_ENV !== 'production') { 
 | 
        error("Unknown dataType " + payload.dataType); 
 | 
      } 
 | 
      return; 
 | 
    } 
 | 
    toggleHighlight(data, payload, 'normal'); 
 | 
  }; 
 | 
  /** 
 | 
   * Remove self. 
 | 
   */ 
 | 
  ChartView.prototype.remove = function (ecModel, api) { 
 | 
    this.group.removeAll(); 
 | 
  }; 
 | 
  /** 
 | 
   * Dispose self. 
 | 
   */ 
 | 
  ChartView.prototype.dispose = function (ecModel, api) {}; 
 | 
  ChartView.prototype.updateView = function (seriesModel, ecModel, api, payload) { 
 | 
    this.render(seriesModel, ecModel, api, payload); 
 | 
  }; 
 | 
  // FIXME never used? 
 | 
  ChartView.prototype.updateLayout = function (seriesModel, ecModel, api, payload) { 
 | 
    this.render(seriesModel, ecModel, api, payload); 
 | 
  }; 
 | 
  // FIXME never used? 
 | 
  ChartView.prototype.updateVisual = function (seriesModel, ecModel, api, payload) { 
 | 
    this.render(seriesModel, ecModel, api, payload); 
 | 
  }; 
 | 
  /** 
 | 
   * Traverse the new rendered elements. 
 | 
   * 
 | 
   * It will traverse the new added element in progressive rendering. 
 | 
   * And traverse all in normal rendering. 
 | 
   */ 
 | 
  ChartView.prototype.eachRendered = function (cb) { 
 | 
    traverseElements(this.group, cb); 
 | 
  }; 
 | 
  ChartView.markUpdateMethod = function (payload, methodName) { 
 | 
    inner(payload).updateMethod = methodName; 
 | 
  }; 
 | 
  ChartView.protoInitialize = function () { 
 | 
    var proto = ChartView.prototype; 
 | 
    proto.type = 'chart'; 
 | 
  }(); 
 | 
  return ChartView; 
 | 
}(); 
 | 
; 
 | 
/** 
 | 
 * Set state of single element 
 | 
 */ 
 | 
function elSetState(el, state, highlightDigit) { 
 | 
  if (el && isHighDownDispatcher(el)) { 
 | 
    (state === 'emphasis' ? enterEmphasis : leaveEmphasis)(el, highlightDigit); 
 | 
  } 
 | 
} 
 | 
function toggleHighlight(data, payload, state) { 
 | 
  var dataIndex = modelUtil.queryDataIndex(data, payload); 
 | 
  var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null; 
 | 
  if (dataIndex != null) { 
 | 
    each(modelUtil.normalizeToArray(dataIndex), function (dataIdx) { 
 | 
      elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit); 
 | 
    }); 
 | 
  } else { 
 | 
    data.eachItemGraphicEl(function (el) { 
 | 
      elSetState(el, state, highlightDigit); 
 | 
    }); 
 | 
  } 
 | 
} 
 | 
clazzUtil.enableClassExtend(ChartView, ['dispose']); 
 | 
clazzUtil.enableClassManagement(ChartView); 
 | 
function renderTaskPlan(context) { 
 | 
  return renderPlanner(context.model); 
 | 
} 
 | 
function renderTaskReset(context) { 
 | 
  var seriesModel = context.model; 
 | 
  var ecModel = context.ecModel; 
 | 
  var api = context.api; 
 | 
  var payload = context.payload; 
 | 
  // FIXME: remove updateView updateVisual 
 | 
  var progressiveRender = seriesModel.pipelineContext.progressiveRender; 
 | 
  var view = context.view; 
 | 
  var updateMethod = payload && inner(payload).updateMethod; 
 | 
  var methodName = progressiveRender ? 'incrementalPrepareRender' : updateMethod && view[updateMethod] ? updateMethod 
 | 
  // `appendData` is also supported when data amount 
 | 
  // is less than progressive threshold. 
 | 
  : 'render'; 
 | 
  if (methodName !== 'render') { 
 | 
    view[methodName](seriesModel, ecModel, api, payload); 
 | 
  } 
 | 
  return progressMethodMap[methodName]; 
 | 
} 
 | 
var progressMethodMap = { 
 | 
  incrementalPrepareRender: { 
 | 
    progress: function (params, context) { 
 | 
      context.view.incrementalRender(params, context.model, context.ecModel, context.api, context.payload); 
 | 
    } 
 | 
  }, 
 | 
  render: { 
 | 
    // Put view.render in `progress` to support appendData. But in this case 
 | 
    // view.render should not be called in reset, otherwise it will be called 
 | 
    // twise. Use `forceFirstProgress` to make sure that view.render is called 
 | 
    // in any cases. 
 | 
    forceFirstProgress: true, 
 | 
    progress: function (params, context) { 
 | 
      context.view.render(context.model, context.ecModel, context.api, context.payload); 
 | 
    } 
 | 
  } 
 | 
}; 
 | 
export default ChartView; 
 |