合并
This commit is contained in:
		| @ -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) { | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 = ` | ||||
|       <div class="tr"> | ||||
|           <div class="td">` + this.options.attribute.link.content[i].name + `</div> | ||||
|           <div class="td">` + this.options.attribute.link.content[i].url + `</div> | ||||
|           <div class="td"> | ||||
|               <button @click="linkEdit">编辑</button> | ||||
|               <button @click="linkDelete">删除</button> | ||||
|           </div> | ||||
|       </div>` | ||||
|       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 = ` | ||||
|               <div class="td"> | ||||
|                 <input class="input" type="text"> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|               <textarea class="input link-edit" type="text"></textarea> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                   <button @click="confirmEdit">确认</button> | ||||
|                   <button @click="cancelEdit">取消</button> | ||||
|               </div>` | ||||
|             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 = ` | ||||
|       <div class="tr"> | ||||
|           <div class="td">` + this.options.attribute.vr.content[i].name + `</div> | ||||
|           <div class="td">` + this.options.attribute.vr.content[i].url + `</div> | ||||
|           <div class="td"> | ||||
|               <button @click="vrEdit">编辑</button> | ||||
|               <button @click="vrDelete">删除</button> | ||||
|           </div> | ||||
|       </div>` | ||||
|       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 = ` | ||||
|               <div class="td"> | ||||
|                 <input class="input" type="text"> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                 <textarea class="input link-edit" type="text"></textarea> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                   <button @click="confirmEdit">确认</button> | ||||
|                   <button @click="cancelEdit">取消</button> | ||||
|               </div>` | ||||
|             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 = '<button class="circle-minus"><svg class="icon-minus"><use xlink:href="#yj-icon-minus"></use></svg></button>' | ||||
|         if (i === 0 && i === this.options.circle.length - 1) { | ||||
|           deleteString = '' | ||||
|         } | ||||
|         if (i === this.options.circle.length - 1) { | ||||
|           addString = `<button class="circle-add" style="margin-left: 5px;"><svg class="icon-add2"><use xlink:href="#yj-icon-add2"></use></svg></button>` | ||||
|         } | ||||
|         circleElm.innerHTML = ` | ||||
|             <div class="col"> | ||||
|                 <span class="label">半径</span> | ||||
|                 <div class="input-number input-number-unit-1"> | ||||
|                     <input class="input" type="number" title="" min="0" max="999999" style="width: 130px;"> | ||||
|                     <span class="unit">${unit === '米' ? 'm' : 'km'}</span> | ||||
|                     <span class="arrow"></span> | ||||
|                 </div> | ||||
|             </div> | ||||
|             <div class="col" style="flex-direction: row-reverse;"> | ||||
|                 <div class="color"></div> | ||||
|                 <span class="label">扩散颜色</span> | ||||
|             </div> | ||||
|             <div class="col" style="flex-direction: row-reverse;"> | ||||
|                 ${addString} | ||||
|                 ${deleteString} | ||||
|             </div> | ||||
|         ` | ||||
|         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 | ||||
|  | ||||
| @ -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 = [ | ||||
|  | ||||
| @ -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) { | ||||
|  | ||||
| @ -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) { | ||||
|  | ||||
| @ -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'), | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
| @ -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 = ` | ||||
|       <div class="tr"> | ||||
|           <div class="td">` + this.options.attribute.link.content[i].name + `</div> | ||||
|           <div class="td">` + this.options.attribute.link.content[i].url + `</div> | ||||
|           <div class="td"> | ||||
|               <button @click="linkEdit">编辑</button> | ||||
|               <button @click="linkDelete">删除</button> | ||||
|           </div> | ||||
|       </div>` | ||||
|       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 = ` | ||||
|               <div class="td"> | ||||
|                 <input class="input" type="text"> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                 <textarea class="input link-edit" type="text"></textarea> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                   <button @click="confirmEdit">确认</button> | ||||
|                   <button @click="cancelEdit">取消</button> | ||||
|               </div>` | ||||
|             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 = ` | ||||
|       <div class="tr"> | ||||
|           <div class="td">` + this.options.attribute.vr.content[i].name + `</div> | ||||
|           <div class="td">` + this.options.attribute.vr.content[i].url + `</div> | ||||
|           <div class="td"> | ||||
|               <button @click="vrEdit">编辑</button> | ||||
|               <button @click="vrDelete">删除</button> | ||||
|           </div> | ||||
|       </div>` | ||||
|       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 = ` | ||||
|               <div class="td"> | ||||
|                 <input class="input" type="text"> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                 <textarea class="input link-edit" type="text"></textarea> | ||||
|               </div> | ||||
|               <div class="td"> | ||||
|                   <button @click="confirmEdit">确认</button> | ||||
|                   <button @click="cancelEdit">取消</button> | ||||
|               </div>` | ||||
|             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 { | ||||
|  | ||||
| @ -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 | ||||
|  | ||||
		Reference in New Issue
	
	Block a user