cione-comp-lib
Version:
`$ yarn add cione-comp-lib` 或者 `$ npm i cione-comp-lib -S`
57 lines (56 loc) • 2.08 kB
JavaScript
import View from "../../coord/View.mjs";
import { getLayoutRect } from "../../util/layout.mjs";
import { fromPoints } from "../../../../zrender/lib/core/bbox.mjs";
import { extend } from "../../../../zrender/lib/core/util.mjs";
function getViewRect(seriesModel, api, aspect) {
var option = extend(seriesModel.getBoxLayoutParams(), {
aspect
});
return getLayoutRect(option, {
width: api.getWidth(),
height: api.getHeight()
});
}
function createViewCoordSys(ecModel, api) {
var viewList = [];
ecModel.eachSeriesByType("graph", function(seriesModel) {
var coordSysType = seriesModel.get("coordinateSystem");
if (!coordSysType || coordSysType === "view") {
var data_1 = seriesModel.getData();
var positions = data_1.mapArray(function(idx) {
var itemModel = data_1.getItemModel(idx);
return [+itemModel.get("x"), +itemModel.get("y")];
});
var min = [];
var max = [];
fromPoints(positions, min, max);
if (max[0] - min[0] === 0) {
max[0] += 1;
min[0] -= 1;
}
if (max[1] - min[1] === 0) {
max[1] += 1;
min[1] -= 1;
}
var aspect = (max[0] - min[0]) / (max[1] - min[1]);
var viewRect = getViewRect(seriesModel, api, aspect);
if (isNaN(aspect)) {
min = [viewRect.x, viewRect.y];
max = [viewRect.x + viewRect.width, viewRect.y + viewRect.height];
}
var bbWidth = max[0] - min[0];
var bbHeight = max[1] - min[1];
var viewWidth = viewRect.width;
var viewHeight = viewRect.height;
var viewCoordSys = seriesModel.coordinateSystem = new View();
viewCoordSys.zoomLimit = seriesModel.get("scaleLimit");
viewCoordSys.setBoundingRect(min[0], min[1], bbWidth, bbHeight);
viewCoordSys.setViewRect(viewRect.x, viewRect.y, viewWidth, viewHeight);
viewCoordSys.setCenter(seriesModel.get("center"), api);
viewCoordSys.setZoom(seriesModel.get("zoom"));
viewList.push(viewCoordSys);
}
});
return viewList;
}
export { createViewCoordSys as default };