diff --git a/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js b/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js index c98c9a3..d31ec33 100644 --- a/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js +++ b/src/Obj/Base/BaseSource/BaseTileset/Tileset/index.js @@ -13,7 +13,6 @@ import { syncSplitData } from '../../../../../Global/SplitScreen' import Dialog from '../../../../Element/Dialog'; class Tileset extends BaseTileset { - #updateModelTimeout; /** * @constructor * @description 加载Tileset模型 @@ -199,7 +198,26 @@ class Tileset extends BaseTileset { this.oldData.type = this.type this.oldData.accuracy = this.newData.accuracy this._DialogObject.close() - this.Dialog.confirmCallBack && this.Dialog.confirmCallBack({ ...this.oldData, type: this.type }) + let newOptions = { + id: this.newData.id, + name: this.newData.name, + height: this.newData.height, + accuracy: this.newData.accuracy, + transparency: this.newData.transparency, + scale: this.newData.scale, + url: this.newData.url, + orientation: { + roll: this.newData.roll, + heading: this.newData.heading, + pitch: this.newData.pitch + }, + position: { + lng: this.newData.lng, + lat: this.newData.lat, + alt: this.newData.height + } + } + this.Dialog.confirmCallBack && this.Dialog.confirmCallBack({ ...newOptions }) syncSplitData(this.sdk, this.oldData.id) }, resetCallBack: () => { @@ -308,9 +326,9 @@ class Tileset extends BaseTileset { } this.editObj && this.editObj.update() - clearTimeout(this.#updateModelTimeout) - this.#updateModelTimeout = setTimeout(() => { - clearTimeout(this.#updateModelTimeout) + clearTimeout(this._updateModelTimeout) + this._updateModelTimeout = setTimeout(() => { + clearTimeout(this._updateModelTimeout) let center = this.cartesian3Towgs84(this.entity.boundingSphere.center, this.sdk.viewer) let circle = turf.circle([center.lng, center.lat], this.entity.boundingSphere.radius / 1000, { steps: 360, units: 'kilometers' }); for (let [key, entity] of this.sdk.entityMap) { diff --git a/src/Obj/Base/BaseSource/BaseTileset/index.js b/src/Obj/Base/BaseSource/BaseTileset/index.js index 07bf164..8ff5f3f 100644 --- a/src/Obj/Base/BaseSource/BaseTileset/index.js +++ b/src/Obj/Base/BaseSource/BaseTileset/index.js @@ -32,6 +32,8 @@ class BaseTileset extends BaseSource { * */ constructor(sdk, options) { super(sdk, options); + this._loadEvent = void 0 + this._loaded = false this.setDefaultValue() this.watchs = [] this.positionCallBack = null @@ -40,6 +42,7 @@ class BaseTileset extends BaseSource { this._DialogObject = null this._element_style = null this.options.accuracy = options.accuracy ? Number(options.accuracy.toFixed(1)) : 1 + this.options.orientation = this.options.orientation || {} this.options.position = this.options.position || {} this.oldData = { id: this.options.id, @@ -51,9 +54,9 @@ class BaseTileset extends BaseSource { lng: this.options.position.lng, lat: this.options.position.lat, scale: (this.options.scale || this.options.scale === 0) ? this.options.scale : 1, - roll: this.options.roll || 0, - heading: this.options.heading || 0, - pitch: this.options.pitch || 0 + roll: this.options.orientation.roll || 0, + heading: this.options.orientation.heading || 0, + pitch: this.options.orientation.pitch || 0 } this.newData = { id: this.options.id, @@ -65,9 +68,9 @@ class BaseTileset extends BaseSource { lng: this.options.position.lng, lat: this.options.position.lat, scale: (this.options.scale || this.options.scale === 0) ? this.options.scale : 1, - roll: this.options.roll || 0, - heading: this.options.heading || 0, - pitch: this.options.pitch || 0 + roll: this.options.orientation.roll || 0, + heading: this.options.orientation.heading || 0, + pitch: this.options.orientation.pitch || 0 } this.tileset = undefined this.editObj = new Controller(this.sdk) @@ -367,6 +370,12 @@ class BaseTileset extends BaseSource { this.pitch = this.oldData.pitch this.transparency = this.oldData.transparency + this.loaded = true + this._loaded = true + if (this._loadEvent) { + this._loadEvent(this.entity) + } + syncSplitData(this.sdk, this.options.id) regMoveCallback(this.entity.id, this.mouseMoveCB, this) @@ -620,6 +629,15 @@ class BaseTileset extends BaseSource { console.error("参数必须为boolean") } } + + load(callback) { + if (this._loaded) { + callback(); + } + else { + this._loadEvent = callback + } + } } export default BaseTileset diff --git a/src/Obj/Base/CircleDiffuse/index.js b/src/Obj/Base/CircleDiffuse/index.js index dc31749..a0cf91e 100644 --- a/src/Obj/Base/CircleDiffuse/index.js +++ b/src/Obj/Base/CircleDiffuse/index.js @@ -12,7 +12,7 @@ import { getFontList, getFontFamilyName } from '../../Element/fontSelect' import MouseTip from '../../../MouseTip' import CircleDiffuseMaterialProperty from '../../Materail/CircleRippleMaterialProperty' import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/SplitScreen' -import { setActiveViewer, closeRotateAround, closeViewFollow} from '../../../Global/global' +import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../../Global/global' class CircleDiffuse extends Base { /** @@ -67,7 +67,7 @@ class CircleDiffuse extends Base { super(sdk, options); this.options.lng = options.lng this.options.lat = options.lat - this.options.color = options.color || '#1FA8E3' + this.options.color = options.color || '#ff0000' this.options.transparency = (options.transparency || options.transparency === 0) ? options.transparency : 1 if (this.options.transparency > 1) { this.options.transparency = 1 @@ -86,7 +86,7 @@ class CircleDiffuse extends Base { this.options.circle = options.circle || [{ radius: 10 }] for (let i = 0; i < this.options.circle.length; i++) { - if(this.options.circle[i].radius>999999) { + if (this.options.circle[i].radius > 999999) { this.options.circle[i].radius = 999999 } } @@ -97,7 +97,6 @@ class CircleDiffuse extends Base { options.label = options.label || {} this._elms = {}; this.options.label = { - text: this.options.name, show: options.label.show || false, position: options.label.position, fontSize: (options.label.fontSize || options.label.fontSize === 0) ? options.label.fontSize : 20, @@ -114,17 +113,12 @@ class CircleDiffuse extends Base { this.options.instruct = options.instruct || '' this.options.operatingPoint = options.operatingPoint || '' this.options.attribute = options.attribute || {} - this.options.attribute.vr = this.options.attribute.vr || {} - this.options.attribute.vr.content = this.options.attribute.vr.content || [] this.options.attribute.link = this.options.attribute.link || {} this.options.attribute.link.content = this.options.attribute.link.content || [] - this.options.attribute.camera = this.options.attribute.camera || {} - this.options.attribute.camera.content = this.options.attribute.camera.content || [] - this.options.attribute.ISC = this.options.attribute.ISC || {} - this.options.attribute.ISC.content = this.options.attribute.ISC.content || [] - this.options.attribute.goods = this.options.attribute.goods || {} - this.options.attribute.goods.content = this.options.attribute.goods.content || [] - this.options.attributeType = options.attributeType || 'richText' + + delete this.options.attribute.camera + delete this.options.attribute.vr + delete this.options.attribute.goods let radius = 0 for (let i = 0; i < this.options.circle.length; i++) { @@ -258,9 +252,9 @@ class CircleDiffuse extends Base { this.options.show = v } if (!this.showView || this.showView == 3 || !sdkD) { - this.entity.show = this.options.show + this.entity.show = this.options.show if (this.options.label.show) { - this.label.show = this.options.show + this.label.show = this.options.show } } else { @@ -271,13 +265,13 @@ class CircleDiffuse extends Base { } this.isShowView = false - + syncData(this.sdk, this.options.id) syncSplitData(this.sdk, this.options.id) if (this._DialogObject && this._DialogObject.showBtn) { this._DialogObject.showBtn.checked = v } - + } else { console.error("参数必须为boolean") } @@ -356,8 +350,7 @@ class CircleDiffuse extends Base { setTimeout(() => { this.picking = true }, 500); - if(this.label && this.label.entity && this.label.entity.billboard) - { + if (this.label && this.label.entity && this.label.entity.billboard) { this.label.entity.billboard.color = Cesium.Color.fromCssColorString(`rgba(255,255,255,1)`) } if (this.event) { @@ -407,14 +400,18 @@ class CircleDiffuse extends Base { return this.options.circle } set circle(v) { - console.log(v) this.options.circle = v || [{ radius: 10 }] + let radius = 0 for (let i = 0; i < this.options.circle.length; i++) { - if(this.options.circle[i].radius>999999) { + if (Number(this.options.circle[i].radius) > 999999) { this.options.circle[i].radius = 999999 } + if (Number(this.options.circle[i].radius) > radius) { + radius = Number(this.options.circle[i].radius) + } } - this._createCircleElm() + this._radius = radius + CircleDiffuse.create(this) } get speed() { @@ -672,352 +669,10 @@ class CircleDiffuse extends Base { } } - get instruct() { - return this.options.instruct - } - set instruct(v) { - this.options.instruct = v - this._elms.instruct && this._elms.instruct.forEach((item) => { - item.value = v - }) - } - - get operatingPoint() { - return this.options.operatingPoint - } - set operatingPoint(v) { - this.options.operatingPoint = v - this._elms.operatingPoint && this._elms.operatingPoint.forEach((item) => { - item.value = v - }) - } - - get attributeType() { - return this.options.attributeType - } - - set attributeType(v) { - this.options.attributeType = v - this._elms.attributeType && this._elms.attributeType.forEach((item) => { - item.value = v - }) - let attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content') - for (let i = 0; i < attributeContent.length; i++) { - if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) { - attributeContent[i].style.display = 'block'; - } - else { - attributeContent[i].style.display = 'none'; - } - } - } - - get attributeLink() { - return this.options.attribute.link.content - } - - set attributeLink(v) { - this.options.attribute.link.content = v - if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) { - return - } - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - tableContent.innerHTML = '' - if (this.options.attribute.link.content.length > 0) { - table.getElementsByClassName('table-empty')[0].style.display = 'none' - } - else { - table.getElementsByClassName('table-empty')[0].style.display = 'flex' - } - for (let i = 0; i < this.options.attribute.link.content.length; i++) { - let tr = ` -
-
` + this.options.attribute.link.content[i].name + `
-
` + this.options.attribute.link.content[i].url + `
-
- - -
-
` - let trElm = document.createRange().createContextualFragment(tr) - tableContent.appendChild(trElm) - } - let item = tableContent.getElementsByClassName('tr') - let fun = { - linkEdit: async (index) => { - this.attributeLink = await this.options.attribute.link.content - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - let item = tableContent.getElementsByClassName('tr') - for (let i = 0; i < item.length; i++) { - if (index === i) { - let height = item[i].offsetHeight - let html = ` -
- -
-
- -
-
- - -
` - item[i].innerHTML = html - let textareaElm = item[i].getElementsByClassName('link-edit')[0] - textareaElm.style.height = (height - 10) + 'px' - let td = item[i].getElementsByClassName('td') - td[0].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].name - td[1].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].url - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] || !btn[n].attributes) { - continue - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - break - } - } - }, - linkDelete: (i) => { - this.options.attribute.link.content.splice(i, 1) - this.attributeLink = this.options.attribute.link.content - }, - - confirmEdit: (value, i) => { - let name = value.name && value.name.replace(/\s/g, "") - let url = value.url && value.url.replace(/\s/g, "") - if (name && url) { - this.options.attribute.link.content[i] = value - } - else { - window.ELEMENT && window.ELEMENT.Message({ - message: '名称或链接不能为空!', - type: 'warning', - duration: 1500 - }); - } - this.attributeLink = this.options.attribute.link.content - }, - cancelEdit: () => { - this.attributeLink = this.options.attribute.link.content - }, - fileSelect: (value, i) => { - let fileElm = item[i].getElementsByClassName('file-select')[0] - fileElm.click() - fileElm.removeEventListener('change', fileSelect) - fileElm.addEventListener('change', fileSelect) - } - } - let fileSelect = (event) => { - if (event.target.value) { - let td = item[event.target.getAttribute('index')].getElementsByClassName('td') - td[1].getElementsByClassName('input')[0].value = event.target.value - event.target.value = null - } - } - for (let i = 0; i < item.length; i++) { - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] ||!btn[n].attributes) { - continue - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value](i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - } - - - - - } - - get attributeCamera() { - return this.options.attribute.camera.content - } - - set attributeCamera(v) { - this.options.attribute.camera.content = v - } - - get attributeISC() { - return this.options.attribute.ISC.content - } - - set attributeISC(v) { - this.options.attribute.ISC.content = v - } - - get attributeVr() { - return this.options.attribute.vr.content - } - - set attributeVr(v) { - this.options.attribute.vr.content = v - if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) { - return - } - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - tableContent.innerHTML = '' - if (this.options.attribute.vr.content.length > 0) { - table.getElementsByClassName('table-empty')[0].style.display = 'none' - } - else { - table.getElementsByClassName('table-empty')[0].style.display = 'flex' - } - for (let i = 0; i < this.options.attribute.vr.content.length; i++) { - let tr = ` -
-
` + this.options.attribute.vr.content[i].name + `
-
` + this.options.attribute.vr.content[i].url + `
-
- - -
-
` - let trElm = document.createRange().createContextualFragment(tr) - tableContent.appendChild(trElm) - } - let item = tableContent.getElementsByClassName('tr') - let fun = { - vrEdit: async (index) => { - this.attributeVr = await this.options.attribute.vr.content - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - let item = tableContent.getElementsByClassName('tr') - for (let i = 0; i < item.length; i++) { - if (index === i) { - let height = item[i].offsetHeight - let html = ` -
- -
-
- -
-
- - -
` - item[i].innerHTML = html - let textareaElm = item[i].getElementsByClassName('link-edit')[0] - textareaElm.style.height = (height - 10) + 'px' - let td = item[i].getElementsByClassName('td') - td[0].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].name - td[1].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].url - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] ||!btn[n].attributes) { - continue - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - break - } - } - }, - vrDelete: (i) => { - this.options.attribute.vr.content.splice(i, 1) - this.attributeVr = this.options.attribute.vr.content - }, - - confirmEdit: (value, i) => { - let name = value.name && value.name.replace(/\s/g, "") - let url = value.url && value.url.replace(/\s/g, "") - if (name && url) { - this.options.attribute.vr.content[i] = value - } - else { - window.ELEMENT && window.ELEMENT.Message({ - message: '名称或链接不能为空!', - type: 'warning', - duration: 1500 - }); - } - this.attributeVr = this.options.attribute.vr.content - }, - cancelEdit: () => { - this.attributeVr = this.options.attribute.vr.content - }, - fileSelect: (value, i) => { - let fileElm = item[i].getElementsByClassName('file-select')[0] - fileElm.click() - fileElm.removeEventListener('change', fileSelect) - fileElm.addEventListener('change', fileSelect) - } - } - let fileSelect = (event) => { - if (event.target.value) { - let td = item[event.target.getAttribute('index')].getElementsByClassName('td') - td[1].getElementsByClassName('input')[0].value = event.target.value - event.target.value = null - } - } - for (let i = 0; i < item.length; i++) { - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] ||!btn[n].attributes) { - continue - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value](i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - } - } - - get attributeGoods() { - return this.options.attribute.goods.content - } - - set attributeGoods(v) { - this.options.attribute.goods.content = v - } - async flyTo(options = {}) { setActiveViewer(0) closeRotateAround(this.sdk) - closeViewFollow(this.sdk) + closeViewFollow(this.sdk) if (this.options.customView && this.options.customView.relativePosition && this.options.customView.orientation) { let orientation = { @@ -1084,6 +739,7 @@ class CircleDiffuse extends Base { // 编辑框 async edit(state) { + return let _this = this this.originalOptions = this.deepCopyObj(this.options) @@ -1340,13 +996,6 @@ class CircleDiffuse extends Base { this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] this.instruct = this.originalOptions.instruct this.operatingPoint = this.originalOptions.operatingPoint - this.attributeLink = this.options.attribute.link.content - this.attributeVr = this.options.attribute.vr.content - this.attributeCamera = this.options.attribute.camera.content - this.attributeGoods = this.options.attribute.goods.content - this.attributeISC = this.options.attribute.ISC.content - this.cameraSelect && this.cameraSelect() - this.goodsSelect && this.goodsSelect() let radius = 0 for (let i = 0; i < this.options.circle.length; i++) { @@ -1374,224 +1023,6 @@ class CircleDiffuse extends Base { await syncData(this.sdk, this.options.id) } - instructSubmit() { - this.Dialog.instructSubmit && this.Dialog.instructSubmit(this.options.id, this.options.label.text, this.instruct) - this.originalOptions.instruct = this.instruct - } - - operatingPointSubmit() { - this.Dialog.operatingPointSubmit && this.Dialog.operatingPointSubmit(this.options.id, this.options.label.text, this.operatingPoint) - this.originalOptions.operatingPoint = this.operatingPoint - } - - _createCircleElm() { - if (this._DialogObject && this._DialogObject._element && this._DialogObject._element.content) { - let unitDataLegpElm = this._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0] - let unit = unitDataLegpElm ? unitDataLegpElm.value : '米' - let circleContentElm = this._DialogObject._element.content.getElementsByClassName('circle-content-box')[0] - circleContentElm.innerHTML = '' - for (let i = 0; i < this.options.circle.length; i++) { - let circleElm = document.createElement('div'); - circleElm.className = 'row' - let addString = '' - let deleteString = '' - if (i === 0 && i === this.options.circle.length - 1) { - deleteString = '' - } - if (i === this.options.circle.length - 1) { - addString = `` - } - circleElm.innerHTML = ` -
- 半径 -
- - ${unit === '米' ? 'm' : 'km'} - -
-
-
-
- 扩散颜色 -
-
- ${addString} - ${deleteString} -
- ` - let inputElm = circleElm.getElementsByClassName('input')[0] - inputElm.value = this.options.circle[i].radius / (unit === '米' ? 1 : 1000) - inputElm.addEventListener('input', (e) => { - let unitDataLegpElm = this._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0] - let unit = unitDataLegpElm.value - if (e.target.value || e.target.value === 0) { - let value = e.target.value - value = Number(value) - if (e.data != '.' && (e.data != '-' || e.target.value)) { - if (((!e.target.max) && (!e.target.min)) || ((value <= (Number(e.target.max) / (unit === '米' ? 1 : 1000))) && value >= Number(e.target.min))) { - if (unit === '米') { - value = Math.floor(value * 100) / 100 - } - else { - value = Math.floor(value * 100000) / 100000 - } - this.options.circle[i].radius = value * (unit === '米' ? 1 : 1000) - let radius = 0 - for (let i = 0; i < this.options.circle.length; i++) { - if (Number(this.options.circle[i].radius) > radius) { - radius = Number(this.options.circle[i].radius) - } - } - this._radius = radius - // inputElm.value = value - CircleDiffuse.create(this) - } - } - } - }) - inputElm.addEventListener('blur', (e) => { - let unitDataLegpElm = this._DialogObject._element.content.getElementsByClassName('input-radius-unit')[0].getElementsByTagName('input')[0] - let unit = unitDataLegpElm.value - if (e.target.value || e.target.value === 0) { - let value = e.target.value - value = Number(value) - if ((e.target.max) && value > (Number(e.target.max) / (unit === '米' ? 1 : 1000))) { - value = (Number(e.target.max) / (unit === '米' ? 1 : 1000)) - } - if ((e.target.min) && value < Number(e.target.min)) { - value = Number(e.target.min) - } - if (unit === '米') { - value = Math.floor(value * 100) / 100 - } - else { - value = Math.floor(value * 100000) / 100000 - } - this.options.circle[i].radius = value * (unit === '米' ? 1 : 1000) - let radius = 0 - for (let i = 0; i < this.options.circle.length; i++) { - if (Number(this.options.circle[i].radius) > radius) { - radius = Number(this.options.circle[i].radius) - } - } - this._radius = radius - inputElm.value = value - CircleDiffuse.create(this) - } - }) - - - - - // 颜色组件 - let colorPicker = new YJColorPicker({ - el: circleElm.getElementsByClassName("color")[0], - size: 'mini',//颜色box类型 - alpha: false,//是否开启透明度 - defaultColor: this.options.circle[i].color || this.options.color, - disabled: false,//是否禁止打开颜色选择器 - openPickerAni: 'opacity',//打开颜色选择器动画 - sure: (color) => { - this.options.circle[i].color = color - CircleDiffuse.create(this) - },//点击确认按钮事件回调 - clear: () => { - this.options.circle[i].color = 'rgba(255,255,255,1)' - CircleDiffuse.create(this) - },//点击清空按钮事件回调 - }) - // 减 - let minusElm = circleElm.getElementsByClassName('circle-minus')[0] - minusElm && minusElm.addEventListener('click', () => { - this.options.circle.splice(i, 1) - let radius = 0 - for (let i = 0; i < this.options.circle.length; i++) { - if (Number(this.options.circle[i].radius) > radius) { - radius = Number(this.options.circle[i].radius) - } - } - this._radius = radius - CircleDiffuse.create(this) - this._createCircleElm() - }) - // 加 - let addElm = circleElm.getElementsByClassName('circle-add')[0] - addElm && addElm.addEventListener('click', () => { - this.options.circle.push({ - radius: 0, - color: 'rgba(255,255,255,1)' - }) - let radius = 0 - for (let i = 0; i < this.options.circle.length; i++) { - if (Number(this.options.circle[i].radius) > radius) { - radius = Number(this.options.circle[i].radius) - } - } - this._radius = radius - CircleDiffuse.create(this) - this._createCircleElm() - }) - - circleContentElm.appendChild(circleElm) - } - } - } - - _addLink() { - // document.getElementsByClassName - if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) { - this.options.attribute.link.content.push({ - name: '链接', - url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value - }) - this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '' - this.attributeLink = this.options.attribute.link.content - } - else { - this.Dialog.clickAddLink && this.Dialog.clickAddLink() - } - } - - addAttributeLink(link) { - this.options.attribute.link.content.push({ - name: '链接', - url: link - }) - this.attributeLink = this.options.attribute.link.content - } - - _addRr() { - if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) { - this.options.attribute.vr.content.push({ - name: '全景图' , - url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value - }) - this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = '' - this.attributeVr = this.options.attribute.vr.content - } - else { - this.Dialog.clickAddVr && this.Dialog.clickAddVr() - } - } - - addAttributeRr(vr) { - this.options.attribute.vr.content.push({ - name: '全景图' , - url: vr - }) - this.attributeVr = this.options.attribute.vr.content - } - - /** - * 打开富文本框 - */ - openRichTextEditor(e) { - richText.open(this.options.id, this.options.name, this.options.richTextContent) - richText.primaryCallBack = (content) => { - this.options.richTextContent = content - } - } - setDIV(options = { domid: "", x: 10, y: 10 }) { options.x = (options.x || options.x === 0) ? options.x : 10 options.y = (options.y || options.y === 0) ? options.y : 10 diff --git a/src/Obj/Base/CircleObject/index.js b/src/Obj/Base/CircleObject/index.js index 4a2598c..411ca23 100644 --- a/src/Obj/Base/CircleObject/index.js +++ b/src/Obj/Base/CircleObject/index.js @@ -225,7 +225,7 @@ class CircleObject extends Base { return this.options.radius } set radius(v) { - this.options.radius = v + this.options.radius = Number(v) this.renewPositions() this.entity.polygon.hierarchy = new Cesium.PolygonHierarchy(this.positions) this.entity.polyline.positions = [ diff --git a/src/Obj/Base/CurvelineObject/index.js b/src/Obj/Base/CurvelineObject/index.js index ecb5a46..effbc09 100644 --- a/src/Obj/Base/CurvelineObject/index.js +++ b/src/Obj/Base/CurvelineObject/index.js @@ -256,7 +256,7 @@ class CurvelineObject extends Base { return this.options.wordsName } set wordsName(v) { - this.options.wordsName = v + this.options.wordsName = Number(v) let _this = this if (!this.noseToTail) { diff --git a/src/Obj/Base/PolylineObject/index.js b/src/Obj/Base/PolylineObject/index.js index 3826b47..9048a60 100644 --- a/src/Obj/Base/PolylineObject/index.js +++ b/src/Obj/Base/PolylineObject/index.js @@ -263,7 +263,7 @@ class PolylineObject extends Base { return this.options.wordsName } set wordsName(v) { - this.options.wordsName = v + this.options.wordsName = Number(v) let _this = this if (!this.noseToTail) { diff --git a/src/Obj/Base/TextObject/GroundText/index.js b/src/Obj/Base/TextObject/GroundText/index.js index 1f0bbc8..76f14cf 100644 --- a/src/Obj/Base/TextObject/GroundText/index.js +++ b/src/Obj/Base/TextObject/GroundText/index.js @@ -206,7 +206,7 @@ class GroundText extends Base { } set angle(v) { - this.options.angle = v + this.options.angle = Number(v) this._elms.angle && this._elms.angle.forEach(item => { item.value = v @@ -218,7 +218,7 @@ class GroundText extends Base { } set scale(v) { - this.options.scale = v + this.options.scale = Number(v) this._elms.scale && this._elms.scale.forEach(item => { item.value = v @@ -250,7 +250,7 @@ class GroundText extends Base { } set speed(v) { - this.options.speed = v + this.options.speed = Number(v) let canvas = this.getcanvas() this.entity.rectangle.material = new Cesium.CustomMaterialSource({ image: canvas.toDataURL('image/png'), diff --git a/src/Obj/Base/TextObject/StandText/index.js b/src/Obj/Base/TextObject/StandText/index.js index 07bf83e..9656f1d 100644 --- a/src/Obj/Base/TextObject/StandText/index.js +++ b/src/Obj/Base/TextObject/StandText/index.js @@ -163,7 +163,7 @@ class StandText extends Base { } set speed(v) { - this.options.speed = v + this.options.speed = Number(v) this.entity.wall.material = this.getMaterial() this._elms.speed && this._elms.speed.forEach((item) => { item.value = v diff --git a/src/Obj/Base/TrajectoryMotion/index.js b/src/Obj/Base/TrajectoryMotion/index.js index 4d0d62b..a5afcba 100644 --- a/src/Obj/Base/TrajectoryMotion/index.js +++ b/src/Obj/Base/TrajectoryMotion/index.js @@ -15,11 +15,6 @@ import { setSplitDirection, syncSplitData, setActiveId, getSdk } from '../../../ class TrajectoryMotion extends Base { #timeoutEventObject = null - #lineEdit = false - #_requestAnimationFrameEventId - #_requestAnimationFrameEventId2 - #mouseRightevent - #firstPersonViewEvent /** * @constructor * @description 轨迹运动 @@ -99,12 +94,13 @@ class TrajectoryMotion extends Base { this.options.line.smooth = options.line.smooth ? options.line.smooth : false this.options.line.noseToTail = options.line.noseToTail ? options.line.noseToTail : false this.positions_smooth = [] - this.options.unitFuelConsumption = options.unitFuelConsumption || 0 this.options.ground = options.ground || false this.options.state = (options.state || options.state === false) ? options.state : true this.options.routeDirection = (options.routeDirection || options.routeDirection === false) ? options.routeDirection : true this.keyPoints = [] this.realTimePositions = [] + this._lineEdit = false + this._keyPoint = false this._elms = {}; this.Dialog = _Dialog this.realTimeRouteArray = [] @@ -114,7 +110,6 @@ class TrajectoryMotion extends Base { options.label = options.label || {} this.options.label = { - text: this.options.name, show: options.label.show || false, fontSize: (options.label.fontSize || options.label.fontSize === 0) ? options.label.fontSize : 20, fontFamily: options.label.fontFamily ? options.label.fontFamily : 0, @@ -203,7 +198,6 @@ class TrajectoryMotion extends Base { this.realTimeLine && (this.realTimeLine.show = (!this.showView || this.showView == 3 || !sdkD) ? true : false) } this.label && (this.label.show = (!this.showView || this.showView == 3) ? this.options.label.show : false) - this.fuelLabel && (this.fuelLabel.show = (!this.showView || this.showView == 3) ? this.options.fuelShow : false) } else { this.model.show = (!this.showView || this.showView == 3 || !sdkD) ? this.options.show : false @@ -226,7 +220,6 @@ class TrajectoryMotion extends Base { this.keyPoints[i].show = (!this.showView || this.showView == 3) ? show : false } this.label && (this.label.show = false) - this.fuelLabel && (this.fuelLabel.show = false) this.viewFollow = false } @@ -281,17 +274,14 @@ class TrajectoryMotion extends Base { // Cesium.Matrix4.multiplyByTranslation(this.model.modelMatrix, new Cesium.Cartesian3(0, 0, -difference), this.model.modelMatrix) // Cesium.Matrix4.getTranslation(this.model.modelMatrix, this.model.position) this.label && (this.label.show = this.label.show) - this.fuelLabel && (this.fuelLabel.show = this.fuelLabel.show) if (this.options.label.position) { setTimeout(() => { if (this.options.label.position.alt) { this.label && (this.label.position = [this.options.label.position.lng, this.options.label.position.lat, this.options.label.position.alt]) - this.fuelLabel && (this.fuelLabel.position = [this.options.label.position.lng, this.options.label.position.lat, this.options.label.position.alt]) } else { this.getClampToHeight({ lng: this.options.label.position.lng, lat: this.options.label.position.lat }).then((height) => { this.label && (this.label.position = [this.options.label.position.lng, this.options.label.position.lat, height]) - this.fuelLabel && (this.fuelLabel.position = [this.options.label.position.lng, this.options.label.position.lat, height]) }) } }, 0) @@ -640,7 +630,7 @@ class TrajectoryMotion extends Base { } set state(v) { this.options.state = v - cancelAnimationFrame(this.#_requestAnimationFrameEventId) + cancelAnimationFrame(this._requestAnimationFrameEventId) if (this.editObj) { this.editObj.destroy() this.editObj = null @@ -667,7 +657,7 @@ class TrajectoryMotion extends Base { let positionCamera = { ...this.sdk.viewer.camera._position } let _this = this - this.#_requestAnimationFrameEventId = requestAnimationFrame(function fn() { + this._requestAnimationFrameEventId = requestAnimationFrame(function fn() { if (_this.firstPersonView) { _this.sdk.viewer.camera.setView({ destination: { ...positionCamera }, @@ -678,7 +668,7 @@ class TrajectoryMotion extends Base { } }) } - _this.#_requestAnimationFrameEventId = requestAnimationFrame(fn) + _this._requestAnimationFrameEventId = requestAnimationFrame(fn) }) this.TweenAnimate.pause() setTimeout(() => { @@ -817,10 +807,10 @@ class TrajectoryMotion extends Base { } get keyPointShow() { - return this.options.line.keyPoint + return this._keyPoint } set keyPointShow(v) { - this.options.line.keyPoint = v + this._keyPoint = v for (let i = 0; i < this.keyPoints.length; i++) { if (this.show) { this.keyPoints[i].show = v @@ -831,7 +821,7 @@ class TrajectoryMotion extends Base { }) if (!v && this.lineEdit) { // 关闭线编辑 - this.#lineEdit = v + this._lineEdit = v YJ.Measure.SetMeasureStatus(false) this.event && this.event.destroy() this.ControllerObject && this.ControllerObject.destroy() @@ -844,7 +834,7 @@ class TrajectoryMotion extends Base { } get lineEdit() { - return this.#lineEdit + return this._lineEdit } set lineEdit(v) { @@ -963,7 +953,7 @@ class TrajectoryMotion extends Base { this.keyPointShow = v this.ControllerObject.destroy() } - this.#lineEdit = v + this._lineEdit = v this._elms.lineEdit && this._elms.lineEdit.forEach((item) => { item.checked = v }) @@ -1008,8 +998,8 @@ class TrajectoryMotion extends Base { if (get2DView() || splitSdk.sdkD || !this.show) { v = false } - cancelAnimationFrame(this.#_requestAnimationFrameEventId) - this.#firstPersonViewEvent && this.#firstPersonViewEvent.destroy() + cancelAnimationFrame(this._requestAnimationFrameEventId) + this._firstPersonViewEvent && this._firstPersonViewEvent.destroy() this.sdk.viewer._firstPersonView = v this.options.firstPersonView = v if (this.options.firstPersonView) { @@ -1040,18 +1030,18 @@ class TrajectoryMotion extends Base { } let targetEntity = targetSdk ? targetSdk.entityMap.get(this.options.id) : undefined if (this.sdk) - this.#firstPersonViewEvent = new MouseEvent(this.sdk) - this.#firstPersonViewEvent.mouse_right_down((movement, cartesian) => { + this._firstPersonViewEvent = new MouseEvent(this.sdk) + this._firstPersonViewEvent.mouse_right_down((movement, cartesian) => { let startPosition = { ...movement.position } - this.#firstPersonViewEvent.mouse_move((movement2, cartesian2) => { + this._firstPersonViewEvent.mouse_move((movement2, cartesian2) => { this.firstPersonHeadingPitch.heading = this.firstPersonHeadingPitch.heading + ((movement2.endPosition.x - startPosition.x) / 20) this.firstPersonHeadingPitch.pitch = this.firstPersonHeadingPitch.pitch + ((startPosition.y - movement2.endPosition.y) / 10) targetEntity && (targetEntity.firstPersonHeadingPitch = { ...this.firstPersonHeadingPitch }) startPosition = { ...movement2.endPosition } }, true) }, true) - this.#firstPersonViewEvent.mouse_right_up((movement, cartesian) => { - this.#firstPersonViewEvent.mouse_move(() => { }) + this._firstPersonViewEvent.mouse_right_up((movement, cartesian) => { + this._firstPersonViewEvent.mouse_move(() => { }) }, true) } else { @@ -1197,7 +1187,7 @@ class TrajectoryMotion extends Base { if (this.show) { if (this.label) { this.label.show = show - this.label.pixelOffset = this.options.label.pixelOffset + (this.fuelShow ? this.labelFontSize + 20 : 0) + this.label.pixelOffset = this.options.label.pixelOffset if (this.options.label.position) { setTimeout(() => { if (this.options.label.position.alt) { @@ -1227,7 +1217,6 @@ class TrajectoryMotion extends Base { set labelFontFamily(v) { this.options.label.fontFamily = v || 0 this.label && (this.label.fontFamily = this.options.label.fontFamily) - this.fuelLabel && (this.fuelLabel.fontFamily = this.options.label.fontFamily) let name = getFontFamilyName(this.labelFontFamily) || '' this._elms.labelFontFamily && @@ -1242,7 +1231,6 @@ class TrajectoryMotion extends Base { set labelColor(v) { this.options.label.color = v this.label && (this.label.color = v) - this.fuelLabel && (this.fuelLabel.color = v) if (this._elms.labelColor) { this._elms.labelColor.forEach((item, i) => { let labelColorPicker = new YJColorPicker({ @@ -1270,13 +1258,7 @@ class TrajectoryMotion extends Base { set labelFontSize(v) { this.options.label.fontSize = v this.label && (this.label.fontSize = v) - if (this.fuelLabel) { - this.fuelLabel.fontSize = v - this.label.pixelOffset = this.options.label.pixelOffset + v + 20 - } - else { - this.label.pixelOffset = this.options.label.pixelOffset - } + this.label.pixelOffset = this.options.label.pixelOffset this._elms.labelFontSize && this._elms.labelFontSize.forEach((item) => { item.value = v }) @@ -1288,7 +1270,6 @@ class TrajectoryMotion extends Base { set labelScaleByDistance(v) { this.options.label.scaleByDistance = v this.label && (this.label.scaleByDistance = v) - this.fuelLabel && (this.fuelLabel.scaleByDistance = v) this._elms.labelScaleByDistance && this._elms.labelScaleByDistance.forEach((item) => { item.checked = v }) @@ -1304,7 +1285,6 @@ class TrajectoryMotion extends Base { } this.options.label.near = near this.label && (this.label.near = near) - this.fuelLabel && (this.fuelLabel.near = near) this._elms.labelNear && this._elms.labelNear.forEach((item) => { item.value = near }) @@ -1320,66 +1300,11 @@ class TrajectoryMotion extends Base { } this.options.label.far = far this.label && (this.label.far = far) - this.fuelLabel && (this.fuelLabel.far = far) this._elms.labelFar && this._elms.labelFar.forEach((item) => { item.value = far }) } - get unitFuelConsumption() { - return this.options.unitFuelConsumption - } - - set unitFuelConsumption(v) { - this.options.unitFuelConsumption = v - this._elms.unitFuelConsumption && this._elms.unitFuelConsumption.forEach((item) => { - item.value = v - }) - } - - get fuelShow() { - return this.options.fuelShow - } - - set fuelShow(v) { - this.options.fuelShow = v - let show = v - if (this.show && (!this.showView || this.showView == 3)) { - show = v - } - else { - show = false - } - if (this.show) { - if (this.fuelLabel) { - this.fuelLabel.show = show - this.label.pixelOffset = this.options.label.pixelOffset + (show ? this.labelFontSize + 20 : 0) - } - else { - this.label.pixelOffset = this.options.label.pixelOffset - } - if (this.options.label.position) { - setTimeout(() => { - if (this.options.label.position.alt) { - this.fuelLabel && (this.fuelLabel.position = [this.options.label.position.lng, this.options.label.position.lat, this.options.label.position.alt]) - } - else { - this.getClampToHeight({ lng: this.options.label.position.lng, lat: this.options.label.position.lat }).then((height) => { - this.fuelLabel && (this.fuelLabel.position = [this.options.label.position.lng, this.options.label.position.lat, height]) - }) - } - }, 0); - } - } - else { - this.fuelLabel && (this.fuelLabel.show = false) - this.label.pixelOffset = this.options.label.pixelOffset - } - this._elms.fuelShow && this._elms.fuelShow.forEach((item) => { - item.checked = v - }) - } - // 创建路径 static addLine(that) { let positions_smooth = that.renewLinePositions(that.options.line.positions) @@ -1422,11 +1347,11 @@ class TrajectoryMotion extends Base { }, }) that.sdk._entityZIndex++ - if (that.#mouseRightevent) { - that.#mouseRightevent.destroy() + if (that._mouseRightevent) { + that._mouseRightevent.destroy() } - that.#mouseRightevent = new MouseEvent(that.sdk) - that.#mouseRightevent.mouse_right((movement, cartesian) => { + that._mouseRightevent = new MouseEvent(that.sdk) + that._mouseRightevent.mouse_right((movement, cartesian) => { let splitSdk = getSdk() let targetSdk if (that.sdk === splitSdk.sdkP) { @@ -1498,7 +1423,6 @@ class TrajectoryMotion extends Base { } let pos = that.smooth ? that.positions_smooth : Cesium.Cartesian3.fromDegreesArrayHeights(fromDegreesArrayHeights) TrajectoryMotion.createLabel(that) - TrajectoryMotion.createFuelLabel(that) that.modelMove(pos) @@ -1514,7 +1438,7 @@ class TrajectoryMotion extends Base { fontSize: that.options.label.fontSize, fontFamily: that.options.label.fontFamily, color: that.options.label.color, - pixelOffset: that.options.label.pixelOffset + (that.options.fuelShow ? that.options.label.fontSize + 20 : 0), + pixelOffset: that.options.label.pixelOffset, backgroundColor: that.options.label.backgroundColor, lineColor: that.options.label.lineColor, lineWidth: that.options.label.lineWidth, @@ -1524,26 +1448,6 @@ class TrajectoryMotion extends Base { }, that.model) } - static async createFuelLabel(that) { - let labelPosition = that.cartesian3Towgs84(that.model.position, that.sdk.viewer) - that.fuelLabel = new LabelObject(that.sdk, { - show: that.options.show ? (that.options.fuelShow ? true : false) : false, - // show: true, - position: [labelPosition.lng, labelPosition.lat, labelPosition.alt], - text: '总油耗:', - fontSize: that.options.label.fontSize, - fontFamily: that.options.label.fontFamily, - color: that.options.label.color, - pixelOffset: 0, - backgroundColor: ['#6e6e6e', '#6e6e6e'], - lineColor: '#00ffff00', - lineWidth: 0, - scaleByDistance: that.options.label.scaleByDistance, - near: that.options.label.near, - far: that.options.label.far - }, that.model) - } - // 创建关键点 static async addKeyPoint(that) { for (let i = 0; i < that.options.line.positions.length; i++) { @@ -1552,7 +1456,7 @@ class TrajectoryMotion extends Base { let entity = that.sdk.viewer.entities.add({ name: 'node-secondary-edit-point', index: i, - show: that.options.line.keyPoint || false, + show: that._keyPoint || false, position: that.ground ? result : Cesium.Cartesian3.fromDegrees(that.options.line.positions[i].lng, that.options.line.positions[i].lat, that.options.line.positions[i].alt), billboard: { image: that.getSourceRootPath() + '/img/point.png', @@ -1568,7 +1472,7 @@ class TrajectoryMotion extends Base { // 模型移动 async modelMove(positions, option = { time: 0 }) { - cancelAnimationFrame(this.#_requestAnimationFrameEventId) + cancelAnimationFrame(this._requestAnimationFrameEventId) let _this = this let time = option.time || 0 let startDistance = option.distance @@ -1654,7 +1558,7 @@ class TrajectoryMotion extends Base { animateUpdate() function animateUpdate() { - _this.#_requestAnimationFrameEventId2 = requestAnimationFrame( + _this._requestAnimationFrameEventId2 = requestAnimationFrame( animateUpdate ) if (_this.options.firstPersonView) { @@ -1672,8 +1576,6 @@ class TrajectoryMotion extends Base { } async function setPosition(distance) { - _this.totalFuelConsumption = Number((distance / 100 * _this.unitFuelConsumption).toFixed(2)) - _this.fuelLabel.text = '总油耗:' + _this.totalFuelConsumption + ' L' _this.model.isMove = true let sdk2D = get2DView() let splitSdk = getSdk() @@ -1886,7 +1788,6 @@ class TrajectoryMotion extends Base { } let labelPosition = _this.cartesian3Towgs84(position, _this.sdk.viewer) _this.label.position = [labelPosition.lng, labelPosition.lat, labelPosition.alt] - _this.fuelLabel.position = [labelPosition.lng, labelPosition.lat, labelPosition.alt] lastDistance = distance // console.log(position) _this.realTimeRouteArray.push(position) @@ -2010,6 +1911,7 @@ class TrajectoryMotion extends Base { // 编辑框 async edit(state) { + return if (this._error) { return } @@ -2259,7 +2161,7 @@ class TrajectoryMotion extends Base { setActiveViewer(0) closeRotateAround(this.sdk) - if (this.options.customView) { + if (this.options.customView && this.options.customView.position && this.options.customView.orientation) { this.sdk.viewer.camera.flyTo({ destination: this.options.customView.position, orientation: this.options.customView.orientation @@ -2283,7 +2185,6 @@ class TrajectoryMotion extends Base { this.sdk.viewer.entities.remove(this.line) this.sdk.viewer.entities.remove(this.realTimeLine) this.label && this.label.remove() - this.fuelLabel && this.fuelLabel.remove() for (let i = 0; i < this.keyPointShow.length; i++) { this.sdk.viewer.entities.remove(this.keyPointShow[i]) } @@ -2291,20 +2192,19 @@ class TrajectoryMotion extends Base { this.realTimeLine = null this.model = null this.label = null - this.fuelLabel = null if (this._DialogObject && !this._DialogObject.isDestroy) { this._DialogObject.close() this._DialogObject = null } - if (this.#mouseRightevent) { - this.#mouseRightevent.destroy() + if (this._mouseRightevent) { + this._mouseRightevent.destroy() } this.removeModelAnimate() let sdk2D = get2DView() if (!sdk2D || sdk2D !== this.sdk) { this.viewFollow = false } - cancelAnimationFrame(this.#_requestAnimationFrameEventId) + cancelAnimationFrame(this._requestAnimationFrameEventId) await this.sdk.removeIncetance(this.options.id) await syncData(this.sdk, this.options.id) @@ -2326,7 +2226,7 @@ class TrajectoryMotion extends Base { (this.noseToTail !== this.originalOptions.line.noseToTail) && (this.noseToTail = this.originalOptions.line.noseToTail); (this.height !== this.originalOptions.height) && (this.height = this.originalOptions.height); (this.lineShow !== this.originalOptions.line.show) && (this.lineShow = this.originalOptions.line.show); - this.keyPointShow = this.originalOptions.line.keyPoint; + this.keyPointShow = false; this.routeDirection = this.originalOptions.routeDirection; this.scale = this.originalOptions.model.scale; (this.loop !== this.originalOptions.loop) && (this.loop = this.originalOptions.loop); @@ -2345,7 +2245,6 @@ class TrajectoryMotion extends Base { this.model && (this.model.show = false) } this.labelShow = this.originalOptions.label.show - this.fuelLabelShow = this.originalOptions.fuelShow this.labelColor = this.originalOptions.label.color this.labelFontSize = this.originalOptions.label.fontSize this.labelFontFamily = this.originalOptions.label.fontFamily diff --git a/src/Obj/Base/WallStereoscopic/index.js b/src/Obj/Base/WallStereoscopic/index.js index 863fd87..5da68b7 100644 --- a/src/Obj/Base/WallStereoscopic/index.js +++ b/src/Obj/Base/WallStereoscopic/index.js @@ -72,14 +72,12 @@ class WallStereoscopic extends Base { this.options.material = (Number(options.material) || Number(options.material) === 0) ? Number(options.material) : 3 this.options.duration = (options.duration || options.duration === 0) ? options.duration : 1000 this.options.show = (options.show || options.show === false) ? options.show : true - this.options['nose-to-tail'] = options['nose-to-tail'] || false + this.options.noseToTail = options.noseToTail || false this.entity this.nodePoints = [] options.label = options.label || {} this.options.label = { - text: this.options.name, show: options.label.show || false, - position: options.label.position, fontSize: (options.label.fontSize || options.label.fontSize === 0) ? options.label.fontSize : 20, fontFamily: options.label.fontFamily ? options.label.fontFamily : 0, color: options.label.color || '#ffffff', @@ -94,17 +92,13 @@ class WallStereoscopic extends Base { this.options.instruct = options.instruct || "" this.options.operatingPoint = options.operatingPoint || "" this.options.attribute = options.attribute || {} - this.options.attribute.vr = this.options.attribute.vr || {} - this.options.attribute.vr.content = this.options.attribute.vr.content || [] this.options.attribute.link = this.options.attribute.link || {} this.options.attribute.link.content = this.options.attribute.link.content || [] - this.options.attribute.camera = this.options.attribute.camera || {} - this.options.attribute.camera = this.options.attribute.camera.content || [] - this.options.attribute.ISC = this.options.attribute.ISC || {} - this.options.attribute.ISC.content = this.options.attribute.ISC.content || [] - this.options.attribute.goods = this.options.attribute.goods || {} - this.options.attribute.goods.content = this.options.attribute.goods.content || [] - this.options.attributeType = options.attributeType || 'richText' + + delete this.options.attribute.camera + delete this.options.attribute.vr + delete this.options.attribute.goods + this.Dialog = _Dialog this._elms = {}; if (!this.options.positions || this.options.positions.length < 2) { @@ -186,11 +180,11 @@ class WallStereoscopic extends Base { } get noseToTail() { - return this.options['nose-to-tail'] + return this.options.noseToTail } set noseToTail(v) { - this.options['nose-to-tail'] = v + this.options.noseToTail = v let positions = this.options.positions let fromDegreesArray = [] for (let i = 0; i < positions.length; i++) { @@ -455,324 +449,6 @@ class WallStereoscopic extends Base { }) } - get attributeType() { - return this.options.attributeType - } - - set attributeType(v) { - this.options.attributeType = v - this._elms.attributeType && this._elms.attributeType.forEach((item) => { - item.value = v - }) - let attributeContent = this._DialogObject._element.content.getElementsByClassName('attribute-content') - for (let i = 0; i < attributeContent.length; i++) { - if (attributeContent[i].className.indexOf('attribute-content-' + v) > -1) { - attributeContent[i].style.display = 'block'; - } - else { - attributeContent[i].style.display = 'none'; - } - } - } - - get attributeLink() { - return this.options.attribute.link.content - } - - set attributeLink(v) { - this.options.attribute.link.content = v - if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-link').length == 0) { - return - } - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - tableContent.innerHTML = '' - if (this.options.attribute.link.content.length > 0) { - table.getElementsByClassName('table-empty')[0].style.display = 'none' - } - else { - table.getElementsByClassName('table-empty')[0].style.display = 'flex' - } - for (let i = 0; i < this.options.attribute.link.content.length; i++) { - let tr = ` -
-
` + this.options.attribute.link.content[i].name + `
-
` + this.options.attribute.link.content[i].url + `
-
- - -
-
` - let trElm = document.createRange().createContextualFragment(tr) - tableContent.appendChild(trElm) - } - let item = tableContent.getElementsByClassName('tr') - let fun = { - linkEdit: async (index) => { - this.attributeLink = await this.options.attribute.link.content - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-link')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - let item = tableContent.getElementsByClassName('tr') - for (let i = 0; i < item.length; i++) { - if (index === i) { - let height = item[i].offsetHeight - let html = ` -
- -
-
- -
-
- - -
` - item[i].innerHTML = html - let textareaElm = item[i].getElementsByClassName('link-edit')[0] - textareaElm.style.height = (height - 10) + 'px' - let td = item[i].getElementsByClassName('td') - td[0].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].name - td[1].getElementsByClassName('input')[0].value = this.options.attribute.link.content[index].url - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] || !btn[n].attributes) { - continue; - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - break - } - } - }, - linkDelete: (i) => { - this.options.attribute.link.content.splice(i, 1) - this.attributeLink = this.options.attribute.link.content - }, - - confirmEdit: (value, i) => { - let name = value.name && value.name.replace(/\s/g, "") - let url = value.url && value.url.replace(/\s/g, "") - if (name && url) { - this.options.attribute.link.content[i] = value - } - else { - window.ELEMENT && window.ELEMENT.Message({ - message: '名称或链接不能为空!', - type: 'warning', - duration: 1500 - }); - } - this.attributeLink = this.options.attribute.link.content - }, - cancelEdit: () => { - this.attributeLink = this.options.attribute.link.content - }, - fileSelect: (value, i) => { - let fileElm = item[i].getElementsByClassName('file-select')[0] - fileElm.click() - fileElm.removeEventListener('change', fileSelect) - fileElm.addEventListener('change', fileSelect) - } - } - let fileSelect = (event) => { - if (event.target.value) { - let td = item[event.target.getAttribute('index')].getElementsByClassName('td') - td[1].getElementsByClassName('input')[0].value = event.target.value - event.target.value = null - } - } - for (let i = 0; i < item.length; i++) { - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] || !btn[n].attributes) { - continue; - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value](i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - } - } - - get attributeCamera() { - return this.options.attribute.camera.content - } - - set attributeCamera(v) { - this.options.attribute.camera.content = v - } - - get attributeISC() { - return this.options.attribute.ISC.content - } - - set attributeISC(v) { - this.options.attribute.ISC.content = v - } - - get attributeVr() { - return this.options.attribute.vr.content - } - - set attributeVr(v) { - this.options.attribute.vr.content = v - if (!this._DialogObject || !this._DialogObject._element || !this._DialogObject._element.content || this._DialogObject._element.content.getElementsByClassName('attribute-content-vr').length == 0) { - return - } - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - tableContent.innerHTML = '' - if (this.options.attribute.vr.content.length > 0) { - table.getElementsByClassName('table-empty')[0].style.display = 'none' - } - else { - table.getElementsByClassName('table-empty')[0].style.display = 'flex' - } - for (let i = 0; i < this.options.attribute.vr.content.length; i++) { - let tr = ` -
-
` + this.options.attribute.vr.content[i].name + `
-
` + this.options.attribute.vr.content[i].url + `
-
- - -
-
` - let trElm = document.createRange().createContextualFragment(tr) - tableContent.appendChild(trElm) - } - let item = tableContent.getElementsByClassName('tr') - let fun = { - vrEdit: async (index) => { - this.attributeVr = await this.options.attribute.vr.content - let table = this._DialogObject._element.content.getElementsByClassName('attribute-content-vr')[1].getElementsByClassName('table')[0] - let tableContent = table.getElementsByClassName('table-body')[0] - let item = tableContent.getElementsByClassName('tr') - for (let i = 0; i < item.length; i++) { - if (index === i) { - let height = item[i].offsetHeight - let html = ` -
- -
-
- -
-
- - -
` - item[i].innerHTML = html - let textareaElm = item[i].getElementsByClassName('link-edit')[0] - textareaElm.style.height = (height - 10) + 'px' - let td = item[i].getElementsByClassName('td') - td[0].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].name - td[1].getElementsByClassName('input')[0].value = this.options.attribute.vr.content[index].url - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - if (!btn[n] || !btn[n].attributes) { - continue; - } - for (let m of btn[n].attributes) { - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value]({ name: td[0].getElementsByClassName('input')[0].value, url: td[1].getElementsByClassName('input')[0].value }, i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - break - } - } - }, - vrDelete: (i) => { - this.options.attribute.vr.content.splice(i, 1) - this.attributeVr = this.options.attribute.vr.content - }, - - confirmEdit: (value, i) => { - let name = value.name && value.name.replace(/\s/g, "") - let url = value.url && value.url.replace(/\s/g, "") - if (name && url) { - this.options.attribute.vr.content[i] = value - } - else { - window.ELEMENT && window.ELEMENT.Message({ - message: '名称或链接不能为空!', - type: 'warning', - duration: 1500 - }); - } - this.attributeVr = this.options.attribute.vr.content - }, - cancelEdit: () => { - this.attributeVr = this.options.attribute.vr.content - }, - fileSelect: (value, i) => { - let fileElm = item[i].getElementsByClassName('file-select')[0] - fileElm.click() - fileElm.removeEventListener('change', fileSelect) - fileElm.addEventListener('change', fileSelect) - } - } - let fileSelect = (event) => { - if (event.target.value) { - let td = item[event.target.getAttribute('index')].getElementsByClassName('td') - td[1].getElementsByClassName('input')[0].value = event.target.value - event.target.value = null - } - } - for (let i = 0; i < item.length; i++) { - let btn = item[i].getElementsByTagName('button') - for (let n = 0; n < btn.length; n++) { - for (let m of btn[n].attributes) { - if (!btn[n] || !btn[n].attributes) { - continue; - } - if (m.name === '@click') { - btn[n].addEventListener('click', (e) => { - if (typeof (fun[m.value]) === 'function') { - fun[m.value](i) - } - }); - btn[n].attributes.removeNamedItem(m.name) - break - } - } - } - } - } - - get attributeGoods() { - return this.options.attribute.goods.content - } - - set attributeGoods(v) { - this.options.attribute.goods.content = v - } - //创建 static async create(that) { @@ -825,6 +501,7 @@ class WallStereoscopic extends Base { // 编辑框 async edit(state) { + return let _this = this this.originalOptions = this.deepCopyObj(this.options) @@ -1108,13 +785,6 @@ class WallStereoscopic extends Base { this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] this.instruct = this.originalOptions.instruct this.operatingPoint = this.originalOptions.operatingPoint - this.attributeLink = this.options.attribute.link.content - this.attributeVr = this.options.attribute.vr.content - this.attributeCamera = this.options.attribute.camera.content - this.attributeGoods = this.options.attribute.goods.content - this.attributeISC = this.options.attribute.ISC.content - this.cameraSelect && this.cameraSelect() - this.goodsSelect && this.goodsSelect() let positions = this.options.positions let fromDegreesArray = [] @@ -1147,61 +817,6 @@ class WallStereoscopic extends Base { await syncData(this.sdk, this.options.id) } - instructSubmit() { - this.Dialog.instructSubmit && this.Dialog.instructSubmit(this.options.id, this.options.label.text, this.instruct) - this.originalOptions.instruct = this.instruct - } - - operatingPointSubmit() { - this.Dialog.operatingPointSubmit && this.Dialog.operatingPointSubmit(this.options.id, this.options.label.text, this.operatingPoint) - this.originalOptions.operatingPoint = this.operatingPoint - } - - _addLink() { - // document.getElementsByClassName - if (this._DialogObject._element.content.getElementsByClassName('link_add')[0].value) { - this.options.attribute.link.content.push({ - name: '链接', - url: this._DialogObject._element.content.getElementsByClassName('link_add')[0].value - }) - this._DialogObject._element.content.getElementsByClassName('link_add')[0].value = '' - this.attributeLink = this.options.attribute.link.content - } - else { - this.Dialog.clickAddLink && this.Dialog.clickAddLink() - } - } - - addAttributeLink(link) { - this.options.attribute.link.content.push({ - name: '链接', - url: link - }) - this.attributeLink = this.options.attribute.link.content - } - - _addRr() { - if (this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value) { - this.options.attribute.vr.content.push({ - name: '全景图' , - url: this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value - }) - this._DialogObject._element.content.getElementsByClassName('vr_add')[0].value = '' - this.attributeVr = this.options.attribute.vr.content - } - else { - this.Dialog.clickAddVr && this.Dialog.clickAddVr() - } - } - - addAttributeRr(vr) { - this.options.attribute.vr.content.push({ - name: '全景图' , - url: vr - }) - this.attributeVr = this.options.attribute.vr.content - } - getMaterial() { let material switch (this.options.material) { @@ -1305,7 +920,8 @@ class WallStereoscopic extends Base { } } - static nodeEdit(that, cb = () => { }) { + nodeEdit(cb = () => { }) { + let that = this if (YJ.Measure.GetMeasureStatus()) { cb('上一次测量未结束') } else { diff --git a/src/Obj/Base/index.js b/src/Obj/Base/index.js index e612483..83302cc 100644 --- a/src/Obj/Base/index.js +++ b/src/Obj/Base/index.js @@ -30,10 +30,11 @@ class Base extends Tools { this.rightClickCallBack = null this.picking = true this.options.host = this.options.host || getHost() - this.options.customView = options.customView ||{ - relativePosition: undefined, - orientation: undefined - } + // this.options.customView = options.customView ||{ + // relativePosition: undefined, + // orientation: undefined + // } + this.options.customView = options.customView // this._showView = this.options.showView || 0 this.setDefaultValue() this._showView