import { getHost, getToken } from "../../../on"; import BaseLoadObjModel from '../../../Obj/Base/LoadObjModel' import LoadObjModel from '../LoadObjModel' export default class BatchLoadObjModel { constructor(sdk, options = {}) { this.sdk = sdk this.options = { ...options } this.options.show = (options.show || options.show === false) ? options.show : true this.options.host = this.options.host || getHost() this.objModelObject = [] this._loaded = false this._loadEvent = void 0 this.on() } get show() { return this.options.show } set show(v) { if (typeof v === "boolean") { this.options.show = v for (let i = 0; i < this.objModelObject.length; i++) { this.objModelObject[i].load(() => { this.objModelObject[i].show = v }) } } else { console.error("参数必须为boolean") } } async on() { let url = "" if (this.options.host.endsWith("yjearth4.0")) url = this.options.host + '/api/v1/source/obj' else url = this.options.host + '/yjearth4.0/api/v1/source/obj' if (this.options.code) { url = url + '?code=' + this.options.code } const res = await fetch(url, { method: 'get', headers: { 'Content-Type': 'application/json', "token": getToken(), "Authorization": "Bearer " + getToken(), } }); if (res.ok) { this.objModelObject = [] this.list = (await res.json()).data; if (this.options.count) { this.list = this.list.splice(0, this.options.count) } for (let i = 0; i < this.list.length; i++) { let options = JSON.parse(this.list[i].detail) options.host = this.options.host if (this.options.show || this.options.show === false) { options.show = this.options.show } let object = new LoadObjModel(this.sdk, options); this.objModelObject.push(object) } this._loaded = true if (this._loadEvent) { this._loadEvent() } } } remove() { for (let i = 0; i < this.objModelObject.length; i++) { this.objModelObject[i].load(() => { this.objModelObject[i].remove() }) } } load(callback) { if (this._loaded) { callback(); } else { this._loadEvent = callback } } }