UNPKG

bytev-charts

Version:

基于echarts和JavaScript及ES6封装的一个可以直接调用的图表组件库,内置主题设计,简单快捷,且支持用户自定义配置; npm 安装方式: npm install bytev-charts 若启动提示还需额外install插件,则运行 npm install @babel/runtime-corejs2 即可;

157 lines (141 loc) 4.66 kB
import _classCallCheck from "@babel/runtime-corejs2/helpers/classCallCheck"; import _createClass from "@babel/runtime-corejs2/helpers/createClass"; import _WeakMap from "@babel/runtime-corejs2/core-js/weak-map"; import "core-js/modules/es.array.sort.js"; function painterSortStable(a, b) { if (a.groupOrder !== b.groupOrder) { return a.groupOrder - b.groupOrder; } else if (a.renderOrder !== b.renderOrder) { return a.renderOrder - b.renderOrder; } else if (a.material.id !== b.material.id) { return a.material.id - b.material.id; } else if (a.z !== b.z) { return a.z - b.z; } else { return a.id - b.id; } } function reversePainterSortStable(a, b) { if (a.groupOrder !== b.groupOrder) { return a.groupOrder - b.groupOrder; } else if (a.renderOrder !== b.renderOrder) { return a.renderOrder - b.renderOrder; } else if (a.z !== b.z) { return b.z - a.z; } else { return a.id - b.id; } } var WebGPURenderList = /*#__PURE__*/function () { function WebGPURenderList() { _classCallCheck(this, WebGPURenderList); this.renderItems = []; this.renderItemsIndex = 0; this.opaque = []; this.transparent = []; } _createClass(WebGPURenderList, [{ key: "init", value: function init() { this.renderItemsIndex = 0; this.opaque.length = 0; this.transparent.length = 0; } }, { key: "getNextRenderItem", value: function getNextRenderItem(object, geometry, material, groupOrder, z, group) { var renderItem = this.renderItems[this.renderItemsIndex]; if (renderItem === undefined) { renderItem = { id: object.id, object: object, geometry: geometry, material: material, groupOrder: groupOrder, renderOrder: object.renderOrder, z: z, group: group }; this.renderItems[this.renderItemsIndex] = renderItem; } else { renderItem.id = object.id; renderItem.object = object; renderItem.geometry = geometry; renderItem.material = material; renderItem.groupOrder = groupOrder; renderItem.renderOrder = object.renderOrder; renderItem.z = z; renderItem.group = group; } this.renderItemsIndex++; return renderItem; } }, { key: "push", value: function push(object, geometry, material, groupOrder, z, group) { var renderItem = this.getNextRenderItem(object, geometry, material, groupOrder, z, group); (material.transparent === true ? this.transparent : this.opaque).push(renderItem); } }, { key: "unshift", value: function unshift(object, geometry, material, groupOrder, z, group) { var renderItem = this.getNextRenderItem(object, geometry, material, groupOrder, z, group); (material.transparent === true ? this.transparent : this.opaque).unshift(renderItem); } }, { key: "sort", value: function sort(customOpaqueSort, customTransparentSort) { if (this.opaque.length > 1) this.opaque.sort(customOpaqueSort || painterSortStable); if (this.transparent.length > 1) this.transparent.sort(customTransparentSort || reversePainterSortStable); } }, { key: "finish", value: function finish() { // Clear references from inactive renderItems in the list for (var i = this.renderItemsIndex, il = this.renderItems.length; i < il; i++) { var renderItem = this.renderItems[i]; if (renderItem.id === null) break; renderItem.id = null; renderItem.object = null; renderItem.geometry = null; renderItem.material = null; renderItem.program = null; renderItem.group = null; } } }]); return WebGPURenderList; }(); var WebGPURenderLists = /*#__PURE__*/function () { function WebGPURenderLists() { _classCallCheck(this, WebGPURenderLists); this.lists = new _WeakMap(); } _createClass(WebGPURenderLists, [{ key: "get", value: function get(scene, camera) { var lists = this.lists; var cameras = lists.get(scene); var list; if (cameras === undefined) { list = new WebGPURenderList(); lists.set(scene, new _WeakMap()); lists.get(scene).set(camera, list); } else { list = cameras.get(camera); if (list === undefined) { list = new WebGPURenderList(); cameras.set(camera, list); } } return list; } }, { key: "dispose", value: function dispose() { this.lists = new _WeakMap(); } }]); return WebGPURenderLists; }(); export default WebGPURenderLists;