cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
129 lines (128 loc) • 4.23 kB
JavaScript
import { __extends } from "../../../../tslib/tslib.es6.mjs";
import { map } from "../../../../zrender/lib/core/util.mjs";
import ChartView from "../../view/Chart.mjs";
import * as graphic from "../../util/graphic.mjs";
import { setStatesStylesFromModel, toggleHoverEmphasis } from "../../util/states.mjs";
import Path from "../../../../zrender/lib/graphic/Path.mjs";
import { saveOldStyle } from "../../animation/basicTransition.mjs";
var BoxplotView = function(_super) {
__extends(BoxplotView2, _super);
function BoxplotView2() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.type = BoxplotView2.type;
return _this;
}
BoxplotView2.prototype.render = function(seriesModel, ecModel, api) {
var data = seriesModel.getData();
var group = this.group;
var oldData = this._data;
if (!this._data) {
group.removeAll();
}
var constDim = seriesModel.get("layout") === "horizontal" ? 1 : 0;
data.diff(oldData).add(function(newIdx) {
if (data.hasValue(newIdx)) {
var itemLayout = data.getItemLayout(newIdx);
var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);
data.setItemGraphicEl(newIdx, symbolEl);
group.add(symbolEl);
}
}).update(function(newIdx, oldIdx) {
var symbolEl = oldData.getItemGraphicEl(oldIdx);
if (!data.hasValue(newIdx)) {
group.remove(symbolEl);
return;
}
var itemLayout = data.getItemLayout(newIdx);
if (!symbolEl) {
symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);
} else {
saveOldStyle(symbolEl);
updateNormalBoxData(itemLayout, symbolEl, data, newIdx);
}
group.add(symbolEl);
data.setItemGraphicEl(newIdx, symbolEl);
}).remove(function(oldIdx) {
var el = oldData.getItemGraphicEl(oldIdx);
el && group.remove(el);
}).execute();
this._data = data;
};
BoxplotView2.prototype.remove = function(ecModel) {
var group = this.group;
var data = this._data;
this._data = null;
data && data.eachItemGraphicEl(function(el) {
el && group.remove(el);
});
};
BoxplotView2.type = "boxplot";
return BoxplotView2;
}(ChartView);
var BoxPathShape = function() {
function BoxPathShape2() {
}
return BoxPathShape2;
}();
var BoxPath = function(_super) {
__extends(BoxPath2, _super);
function BoxPath2(opts) {
var _this = _super.call(this, opts) || this;
_this.type = "boxplotBoxPath";
return _this;
}
BoxPath2.prototype.getDefaultShape = function() {
return new BoxPathShape();
};
BoxPath2.prototype.buildPath = function(ctx, shape) {
var ends = shape.points;
var i = 0;
ctx.moveTo(ends[i][0], ends[i][1]);
i++;
for (; i < 4; i++) {
ctx.lineTo(ends[i][0], ends[i][1]);
}
ctx.closePath();
for (; i < ends.length; i++) {
ctx.moveTo(ends[i][0], ends[i][1]);
i++;
ctx.lineTo(ends[i][0], ends[i][1]);
}
};
return BoxPath2;
}(Path);
function createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {
var ends = itemLayout.ends;
var el = new BoxPath({
shape: {
points: isInit ? transInit(ends, constDim, itemLayout) : ends
}
});
updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);
return el;
}
function updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {
var seriesModel = data.hostModel;
var updateMethod = graphic[isInit ? "initProps" : "updateProps"];
updateMethod(el, {
shape: {
points: itemLayout.ends
}
}, seriesModel, dataIndex);
el.useStyle(data.getItemVisual(dataIndex, "style"));
el.style.strokeNoScale = true;
el.z2 = 100;
var itemModel = data.getItemModel(dataIndex);
var emphasisModel = itemModel.getModel("emphasis");
setStatesStylesFromModel(el, itemModel);
toggleHoverEmphasis(el, emphasisModel.get("focus"), emphasisModel.get("blurScope"), emphasisModel.get("disabled"));
}
function transInit(points, dim, itemLayout) {
return map(points, function(point) {
point = point.slice();
point[dim] = itemLayout.initBaseline;
return point;
});
}
var BoxplotView$1 = BoxplotView;
export { BoxplotView$1 as default };