cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
120 lines (119 loc) • 4.37 kB
JavaScript
import { each } from "../../../zrender/lib/core/util.mjs";
import Group from "../../../zrender/lib/graphic/Group.mjs";
import { getUID } from "../util/component.mjs";
import { enableClassExtend, enableClassManagement } from "../util/clazz.mjs";
import { queryDataIndex, normalizeToArray, makeInner } from "../util/model.mjs";
import { getHighlightDigit, isHighDownDispatcher, enterEmphasis, leaveEmphasis } from "../util/states.mjs";
import { createTask } from "../core/task.mjs";
import createRenderPlanner from "../chart/helper/createRenderPlanner.mjs";
import { traverseElements } from "../util/graphic.mjs";
var inner = makeInner();
var renderPlanner = createRenderPlanner();
var ChartView = function() {
function ChartView2() {
this.group = new Group();
this.uid = getUID("viewChart");
this.renderTask = createTask({
plan: renderTaskPlan,
reset: renderTaskReset
});
this.renderTask.context = {
view: this
};
}
ChartView2.prototype.init = function(ecModel, api) {
};
ChartView2.prototype.render = function(seriesModel, ecModel, api, payload) {
};
ChartView2.prototype.highlight = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData(payload && payload.dataType);
if (!data) {
return;
}
toggleHighlight(data, payload, "emphasis");
};
ChartView2.prototype.downplay = function(seriesModel, ecModel, api, payload) {
var data = seriesModel.getData(payload && payload.dataType);
if (!data) {
return;
}
toggleHighlight(data, payload, "normal");
};
ChartView2.prototype.remove = function(ecModel, api) {
this.group.removeAll();
};
ChartView2.prototype.dispose = function(ecModel, api) {
};
ChartView2.prototype.updateView = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.updateLayout = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.updateVisual = function(seriesModel, ecModel, api, payload) {
this.render(seriesModel, ecModel, api, payload);
};
ChartView2.prototype.eachRendered = function(cb) {
traverseElements(this.group, cb);
};
ChartView2.markUpdateMethod = function(payload, methodName) {
inner(payload).updateMethod = methodName;
};
ChartView2.protoInitialize = function() {
var proto = ChartView2.prototype;
proto.type = "chart";
}();
return ChartView2;
}();
function elSetState(el, state, highlightDigit) {
if (el && isHighDownDispatcher(el)) {
(state === "emphasis" ? enterEmphasis : leaveEmphasis)(el, highlightDigit);
}
}
function toggleHighlight(data, payload, state) {
var dataIndex = queryDataIndex(data, payload);
var highlightDigit = payload && payload.highlightKey != null ? getHighlightDigit(payload.highlightKey) : null;
if (dataIndex != null) {
each(normalizeToArray(dataIndex), function(dataIdx) {
elSetState(data.getItemGraphicEl(dataIdx), state, highlightDigit);
});
} else {
data.eachItemGraphicEl(function(el) {
elSetState(el, state, highlightDigit);
});
}
}
enableClassExtend(ChartView);
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;
var progressiveRender = seriesModel.pipelineContext.progressiveRender;
var view = context.view;
var updateMethod = payload && inner(payload).updateMethod;
var methodName = progressiveRender ? "incrementalPrepareRender" : updateMethod && view[updateMethod] ? updateMethod : "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: {
forceFirstProgress: true,
progress: function(params, context) {
context.view.render(context.model, context.ecModel, context.api, context.payload);
}
}
};
var ChartView$1 = ChartView;
export { ChartView$1 as default };