89 lines
2.3 KiB
JavaScript
89 lines
2.3 KiB
JavaScript
|
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
|
||
|
}
|
||
|
}
|
||
|
}
|