UNPKG

bytev-charts

Version:

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

116 lines (100 loc) 3.92 kB
/** * Development repository: https://github.com/kaisalmen/WWOBJLoader */ var ObjectManipulator = function ObjectManipulator() {}; ObjectManipulator.prototype = { constructor: ObjectManipulator, /** * Applies values from parameter object via set functions or via direct assignment. * * @param {Object} objToAlter The objToAlter instance * @param {Object} params The parameter object * @param {boolean} forceCreation Force the creation of a property */ applyProperties: function applyProperties(objToAlter, params, forceCreation) { // fast-fail if (objToAlter === undefined || objToAlter === null || params === undefined || params === null) return; var property, funcName, values; for (property in params) { funcName = 'set' + property.substring(0, 1).toLocaleUpperCase() + property.substring(1); values = params[property]; if (typeof objToAlter[funcName] === 'function') { objToAlter[funcName](values); } else if (objToAlter.hasOwnProperty(property) || forceCreation) { objToAlter[property] = values; } } } }; var DefaultWorkerPayloadHandler = function DefaultWorkerPayloadHandler(parser) { this.parser = parser; this.logging = { enabled: false, debug: false }; }; DefaultWorkerPayloadHandler.prototype = { constructor: DefaultWorkerPayloadHandler, handlePayload: function handlePayload(payload) { if (payload.logging) { this.logging.enabled = payload.logging.enabled === true; this.logging.debug = payload.logging.debug === true; } if (payload.cmd === 'parse') { var scope = this; var callbacks = { callbackOnAssetAvailable: function callbackOnAssetAvailable(payload) { self.postMessage(payload); }, callbackOnProgress: function callbackOnProgress(text) { if (scope.logging.enabled && scope.logging.debug) console.debug('WorkerRunner: progress: ' + text); } }; var parser = this.parser; if (typeof parser['setLogging'] === 'function') { parser.setLogging(this.logging.enabled, this.logging.debug); } var objectManipulator = new ObjectManipulator(); objectManipulator.applyProperties(parser, payload.params, false); objectManipulator.applyProperties(parser, callbacks, false); var arraybuffer = payload.data.input; var executeFunctionName = 'execute'; if (typeof parser.getParseFunctionName === 'function') executeFunctionName = parser.getParseFunctionName(); if (payload.usesMeshDisassembler) {// TODO: Allow to plug and use generic MeshDisassembler } else { parser[executeFunctionName](arraybuffer, payload.data.options); } if (this.logging.enabled) console.log('WorkerRunner: Run complete!'); self.postMessage({ cmd: 'completeOverall', msg: 'WorkerRunner completed run.' }); } else { console.error('WorkerRunner: Received unknown command: ' + payload.cmd); } } }; /** * Default implementation of the WorkerRunner responsible for creation and configuration of the parser within the worker. * @constructor */ var WorkerRunner = function WorkerRunner(payloadHandler) { this.payloadHandler = payloadHandler; var scope = this; var scopedRunner = function scopedRunner(event) { scope.processMessage(event.data); }; self.addEventListener('message', scopedRunner, false); }; WorkerRunner.prototype = { constructor: WorkerRunner, /** * Configures the Parser implementation according the supplied configuration object. * * @param {Object} payload Raw mesh description (buffers, params, materials) used to build one to many meshes. */ processMessage: function processMessage(payload) { this.payloadHandler.handlePayload(payload); } }; export { WorkerRunner, DefaultWorkerPayloadHandler, ObjectManipulator };