提交
This commit is contained in:
		| @ -103,6 +103,7 @@ class AssembleObject extends Base { | ||||
|     this.options.attribute = options.attribute || {} | ||||
|     this.options.attribute.link = this.options.attribute.link || {} | ||||
|     this.options.attribute.link.content = this.options.attribute.link.content || [] | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|     delete this.options.attribute.camera | ||||
|     delete this.options.attribute.vr | ||||
|  | ||||
| @ -116,6 +116,8 @@ class AttackArrowObject extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|  | ||||
|     if (!this.options.positions || this.options.positions.length < 3) { | ||||
|       this._error = '箭头面最少需要三个坐标!' | ||||
|  | ||||
| @ -40,8 +40,8 @@ class BaseLayer extends BaseSource { | ||||
|   } | ||||
|  | ||||
|   set brightness(v) { | ||||
|     this.options.brightness = v | ||||
|     this.entity.brightness = v | ||||
|     this.options.brightness = Number(v) | ||||
|     this.entity.brightness = Number(v) | ||||
|   } | ||||
|  | ||||
|   get alpha() { | ||||
| @ -50,8 +50,9 @@ class BaseLayer extends BaseSource { | ||||
|  | ||||
|  | ||||
|   set alpha(v) { | ||||
|     if (Number(v) > 1) v = 1 | ||||
|     if (Number(v) < 0) v = 0 | ||||
|     v = Number(v) | ||||
|     if (v > 1) v = 1 | ||||
|     if (v < 0) v = 0 | ||||
|     this.entity.alpha = v | ||||
|     this.options.alpha = v | ||||
|     this._elms.alpha && this._elms.alpha.forEach((item) => { | ||||
|  | ||||
| @ -238,6 +238,7 @@ class BaseTerrain extends BaseSource { | ||||
|    * @param state=false {boolean} 状态: true打开, false关闭 | ||||
|    */ | ||||
|   async edit(state = false) { | ||||
|     return | ||||
|     this.originalOptions = this.deepCopyObj(this.options) | ||||
|     if (this._DialogObject && this._DialogObject.close) { | ||||
|       this._DialogObject.close() | ||||
| @ -287,6 +288,11 @@ class BaseTerrain extends BaseSource { | ||||
|     this._elms.name = [nameElm] | ||||
|   } | ||||
|  | ||||
|   reset() { | ||||
|     this.options = this.deepCopyObj(this.originalOptions) | ||||
|     this.name = this.options.name | ||||
|   } | ||||
|  | ||||
|   flicker() { } | ||||
| } | ||||
|  | ||||
|  | ||||
| @ -164,6 +164,7 @@ class Tileset extends BaseTileset { | ||||
|    * @param state=false {boolean} 状态: true打开, false关闭 | ||||
|    */ | ||||
|   async edit(state = false) { | ||||
|     return | ||||
|     let _this = this | ||||
|     this._element_style = null | ||||
|  | ||||
|  | ||||
| @ -552,6 +552,7 @@ class BaseTileset extends BaseSource { | ||||
|     } | ||||
|     else { | ||||
|       this.editObj.destroy() | ||||
|       this._positionEditingCallback = null | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -562,12 +563,13 @@ class BaseTileset extends BaseSource { | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   //平移时,坐标信息变化的回调 | ||||
|   set positionEditingCallBack(callback) { | ||||
|     return | ||||
|   openPositionEditing(cd) { | ||||
|     this.positionEditing = true | ||||
|     this._positionEditingCallback = cd | ||||
|   } | ||||
|  | ||||
|   get positionEditingCallBack() { | ||||
|   closePositionEditing() { | ||||
|     this.positionEditing = false | ||||
|     this._positionEditingCallback = null | ||||
|   } | ||||
|  | ||||
|   //旋转时,坐标信息变化的回调 | ||||
| @ -583,6 +585,9 @@ class BaseTileset extends BaseSource { | ||||
|       this.roll = params.rotate.x | ||||
|       this.heading = params.rotate.y | ||||
|       this.pitch = params.rotate.z | ||||
|       if(this._positionEditingCallback) { | ||||
|         this._positionEditingCallback() | ||||
|       } | ||||
|       // this._rotationEditingCallBack && this._rotationEditingCallBack(this.editObj._params) | ||||
|     } | ||||
|   } | ||||
|  | ||||
| @ -175,6 +175,8 @@ class BillboardObject extends Base { | ||||
|     this.options.attribute.goods = this.options.attribute.goods || {} | ||||
|     this.options.attribute.goods.content = | ||||
|       this.options.attribute.goods.content || [] | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     // this.options.coordinate = options.coordinate || '' | ||||
|     this.operate = {} | ||||
|     this._elms = {} | ||||
| @ -2390,7 +2392,7 @@ class BillboardObject extends Base { | ||||
|         this.entity.position = new Cesium.CallbackProperty(function () { | ||||
|           return cartesian | ||||
|         }, false) | ||||
|         if(this.#_positionEditingCallback) { | ||||
|         if (this.#_positionEditingCallback) { | ||||
|           this.#_positionEditingCallback() | ||||
|           this.#_positionEditingCallback = null | ||||
|         } | ||||
|  | ||||
| @ -15,6 +15,7 @@ import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/S | ||||
| import { setActiveViewer, closeRotateAround, closeViewFollow } from '../../../Global/global' | ||||
|  | ||||
| class CircleDiffuse extends Base { | ||||
|   #_positionEditingCallback = null | ||||
|   /** | ||||
|    * @constructor | ||||
|    * @description 扩散圆 | ||||
| @ -24,7 +25,7 @@ class CircleDiffuse extends Base { | ||||
|    * @param options.show=true {boolean} 显示/隐藏 | ||||
|    * @param options.lng {number} 经度 | ||||
|    * @param options.lat {number} 维度 | ||||
|    * @param options.color=#1FA8E3 {string} 基础颜色 | ||||
|    * @param options.color=#ff0000 {string} 基础颜色 | ||||
|    * @param options.speed=5 {number} 速度 | ||||
|    * @param options.count=3 {number} 波纹数量 | ||||
|    * @param options.circle=[]] {array} 圆属性 | ||||
| @ -84,7 +85,7 @@ class CircleDiffuse extends Base { | ||||
|       this.options.count = 3 | ||||
|     } | ||||
|  | ||||
|     this.options.circle = options.circle || [{ radius: 10 }] | ||||
|     this.options.circle = options.circle || [{ radius: 10, color: this.options.color }] | ||||
|     for (let i = 0; i < this.options.circle.length; i++) { | ||||
|       if (this.options.circle[i].radius > 999999) { | ||||
|         this.options.circle[i].radius = 999999 | ||||
| @ -93,7 +94,6 @@ class CircleDiffuse extends Base { | ||||
|  | ||||
|     this.options.show = (options.show || options.show === false) ? options.show : true | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|     this.options.positionEditin = false | ||||
|     options.label = options.label || {} | ||||
|     this._elms = {}; | ||||
|     this.options.label = { | ||||
| @ -110,8 +110,6 @@ class CircleDiffuse extends Base { | ||||
|       near: (options.label.near || options.label.near === 0) ? options.label.near : 2000, | ||||
|       far: (options.label.far || options.label.far === 0) ? options.label.far : 100000, | ||||
|     } | ||||
|     this.options.instruct = options.instruct || '' | ||||
|     this.options.operatingPoint = options.operatingPoint || '' | ||||
|     this.options.attribute = options.attribute || {} | ||||
|     this.options.attribute.link = this.options.attribute.link || {} | ||||
|     this.options.attribute.link.content = this.options.attribute.link.content || [] | ||||
| @ -120,6 +118,8 @@ class CircleDiffuse extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|     let radius = 0 | ||||
|     for (let i = 0; i < this.options.circle.length; i++) { | ||||
|       if (Number(this.options.circle[i].radius) > radius) { | ||||
| @ -128,6 +128,8 @@ class CircleDiffuse extends Base { | ||||
|     } | ||||
|     this._radius = radius | ||||
|  | ||||
|     this.operate = {} | ||||
|  | ||||
|     this.Dialog = _Dialog | ||||
|     this._EventBinding = new EventBinding() | ||||
|     this.sdk.addIncetance(this.options.id, this) | ||||
| @ -213,10 +215,8 @@ class CircleDiffuse extends Base { | ||||
|   } | ||||
|  | ||||
|   static async createLabel(that) { | ||||
|     if (!that.options.label.position) { | ||||
|       let height = await that.getClampToHeight({ lng: that.options.lng, lat: that.options.lat }) | ||||
|       that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     } | ||||
|     let height = await that.getClampToHeight({ lng: that.options.lng, lat: that.options.lat }) | ||||
|     that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     // 标签 | ||||
|     that.label = new LabelObject(that.sdk, { | ||||
|       id: that.options.id, | ||||
| @ -287,7 +287,7 @@ class CircleDiffuse extends Base { | ||||
|     if (!this.sdk || !this.sdk.viewer || !this.entity) { | ||||
|       return | ||||
|     } | ||||
|     this.options.positionEditing = status | ||||
|     this.operate.positionEditing = status | ||||
|     if (status === true) { | ||||
|       this.tip && this.tip.destroy() | ||||
|       this.tip = new MouseTip('点击鼠标左键确认,右键取消', this.sdk) | ||||
| @ -316,6 +316,10 @@ class CircleDiffuse extends Base { | ||||
|         this.event.mouse_right(() => { }) | ||||
|         this.event.gesture_pinck_start(() => { }) | ||||
|         this.event.gesture_pinck_end(() => { }) | ||||
|         if (this.#_positionEditingCallback) { | ||||
|           this.#_positionEditingCallback() | ||||
|           this.#_positionEditingCallback = null | ||||
|         } | ||||
|         this.lastOptions = undefined | ||||
|         this.positionEditing = false | ||||
|       }) | ||||
| @ -368,7 +372,12 @@ class CircleDiffuse extends Base { | ||||
|   } | ||||
|  | ||||
|   get positionEditing() { | ||||
|     return this.options.positionEditing | ||||
|     return this.operate.positionEditing | ||||
|   } | ||||
|  | ||||
|   openPositionEditing(cd) { | ||||
|     this.positionEditing = true | ||||
|     this.#_positionEditingCallback = cd | ||||
|   } | ||||
|  | ||||
|   get lng() { | ||||
| @ -400,7 +409,7 @@ class CircleDiffuse extends Base { | ||||
|     return this.options.circle | ||||
|   } | ||||
|   set circle(v) { | ||||
|     this.options.circle = v || [{ radius: 10 }] | ||||
|     this.options.circle = v || [{ radius: 10, color: this.options.color }] | ||||
|     let radius = 0 | ||||
|     for (let i = 0; i < this.options.circle.length; i++) { | ||||
|       if (Number(this.options.circle[i].radius) > 999999) { | ||||
| @ -433,7 +442,7 @@ class CircleDiffuse extends Base { | ||||
|       this.options.transparency = 1 | ||||
|     } | ||||
|     else { | ||||
|       this.options.transparency = v | ||||
|       this.options.transparency = Number(v) | ||||
|     } | ||||
|     CircleDiffuse.create(this) | ||||
|     this._elms.transparency && this._elms.transparency.forEach((item) => { | ||||
| @ -980,7 +989,6 @@ class CircleDiffuse extends Base { | ||||
|     this.name = this.originalOptions.name | ||||
|     this.lng = this.originalOptions.lng | ||||
|     this.lat = this.originalOptions.lat | ||||
|     this.color = this.originalOptions.color | ||||
|     this.duration = this.originalOptions.duration | ||||
|     this.labelShow = this.originalOptions.label.show | ||||
|     this.labelColor = this.originalOptions.label.color | ||||
| @ -994,8 +1002,6 @@ class CircleDiffuse extends Base { | ||||
|     this.labelLineColor = this.originalOptions.label.lineColor | ||||
|     this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] | ||||
|     this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] | ||||
|     this.instruct = this.originalOptions.instruct | ||||
|     this.operatingPoint = this.originalOptions.operatingPoint | ||||
|  | ||||
|     let radius = 0 | ||||
|     for (let i = 0; i < this.options.circle.length; i++) { | ||||
|  | ||||
| @ -111,6 +111,8 @@ class CircleObject extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|  | ||||
|  | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|  | ||||
| @ -147,6 +147,8 @@ class CurvelineObject extends Base { | ||||
|       delete this.options.attribute.vr | ||||
|       delete this.options.attribute.goods | ||||
|  | ||||
|       this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|  | ||||
|     this.operate = {} | ||||
|     this.nodePoints = [] | ||||
|  | ||||
| @ -110,6 +110,8 @@ class EllipseObject extends Base { | ||||
|     this.options.attribute.goods = this.options.attribute.goods || {} | ||||
|     this.options.attribute.goods.content = this.options.attribute.goods.content || [] | ||||
|     this.options.attributeType = options.attributeType || 'richText' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|     this.nodePoints = [] | ||||
|     this.operate = {} | ||||
|  | ||||
| @ -116,6 +116,8 @@ class PincerArrowObject extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|     if (!this.options.positions || this.options.positions.length < 5) { | ||||
|       this._error = '双箭头最少需要五个坐标!' | ||||
|       console.warn(this._error) | ||||
|  | ||||
| @ -142,6 +142,8 @@ class PolygonObject extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|  | ||||
|     if (!this.options.positions || this.options.positions.length < 3) { | ||||
|       this._error = '多边形最少需要三个坐标!' | ||||
|  | ||||
| @ -78,7 +78,6 @@ class PolyhedronObject extends Base { | ||||
|     this.entity | ||||
|     this.nodePoints = [] | ||||
|     this.operate = {} | ||||
|     this.options['area-unit'] = options['area-unit'] || '平方米' | ||||
|     options.label = options.label || {} | ||||
|     this.options.label = { | ||||
|       text: this.options.name, | ||||
| @ -98,13 +97,8 @@ class PolyhedronObject extends Base { | ||||
|     this.options.attribute = options.attribute || {} | ||||
|     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.vr = this.options.attribute.vr || {} | ||||
|     this.options.attribute.vr.content = this.options.attribute.vr.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' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this._elms = {}; | ||||
|     this.Dialog = _Dialog | ||||
|     if (!this.options.positions || this.options.positions.length < 3) { | ||||
| @ -191,23 +185,7 @@ class PolyhedronObject extends Base { | ||||
|       }, | ||||
|     }) | ||||
|     PolyhedronObject.createLabel(that) | ||||
|     that.options.areaByMeter = that.computeArea(positions); | ||||
|     switch (that.options['area-unit']) { | ||||
|       case '平方米': | ||||
|         that.options.area = that.options.areaByMeter | ||||
|         break; | ||||
|       case '平方千米': | ||||
|         that.options.area = Number((that.options.areaByMeter / 1000000).toFixed(8)) | ||||
|         break; | ||||
|       case '亩': | ||||
|         that.options.area = Number((that.options.areaByMeter / 666.6666667).toFixed(4)) | ||||
|         break; | ||||
|       case '公顷': | ||||
|         that.options.area = Number((that.options.areaByMeter / 10000).toFixed(6)) | ||||
|         break; | ||||
|       default: | ||||
|         that.options.area = that.options.areaByMeter | ||||
|     } | ||||
|     that.areaByMeter = that.computeArea(positions); | ||||
|     syncData(that.sdk, that.options.id) | ||||
|     if(that.options.show) { | ||||
|         | ||||
| @ -315,6 +293,11 @@ class PolyhedronObject extends Base { | ||||
|         } | ||||
|         this.positions = newpositions | ||||
|         this.previous.positions = newpositions | ||||
|  | ||||
|         if(this._positionEditingCallback) { | ||||
|           this._positionEditingCallback() | ||||
|           this._positionEditingCallback = null | ||||
|         } | ||||
|         this.positionEditing = false | ||||
|       }) | ||||
|       this.event.mouse_right((movement, cartesian) => { | ||||
| @ -412,6 +395,19 @@ class PolyhedronObject extends Base { | ||||
|     return this.operate.positionEditing | ||||
|   } | ||||
|  | ||||
|   openPositionEditing(cd) { | ||||
|     this.positionEditing = true | ||||
|     this._positionEditingCallback = cd | ||||
|   } | ||||
|  | ||||
|   get areaChangeCallBack() { | ||||
|     return this._areaChangeCallBack | ||||
|   } | ||||
|  | ||||
|   set areaChangeCallBack (cd) { | ||||
|     this._areaChangeCallBack = cd | ||||
|   } | ||||
|  | ||||
|   get color() { | ||||
|     return this.options.color | ||||
|   } | ||||
| @ -519,34 +515,6 @@ class PolyhedronObject extends Base { | ||||
|     }) | ||||
|   } | ||||
|  | ||||
|   get areaUnit() { | ||||
|     return this.options['area-unit'] | ||||
|   } | ||||
|   set areaUnit(v) { | ||||
|     this.options['area-unit'] = v | ||||
|     this._elms.areaUnit && this._elms.areaUnit.forEach((item) => { | ||||
|       item.value = v | ||||
|     }) | ||||
|     if (this.options.areaByMeter) { | ||||
|       switch (v) { | ||||
|         case '平方米': | ||||
|           this.area = this.options.areaByMeter | ||||
|           break; | ||||
|         case '平方千米': | ||||
|           this.area = Number((this.options.areaByMeter / 1000000).toFixed(8)) | ||||
|           break; | ||||
|         case '亩': | ||||
|           this.area = Number((this.options.areaByMeter / 666.6666667).toFixed(4)) | ||||
|           break; | ||||
|         case '公顷': | ||||
|           this.area = Number((this.options.areaByMeter / 10000).toFixed(6)) | ||||
|           break; | ||||
|         default: | ||||
|           this.area = this.options.areaByMeter | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   get labelShow() { | ||||
|     return this.options.label.show | ||||
|   } | ||||
| @ -758,322 +726,9 @@ class PolyhedronObject 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 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 edit(state) { | ||||
|     return | ||||
|     if (this._error) { | ||||
|       return | ||||
|     } | ||||
| @ -1134,8 +789,6 @@ class PolyhedronObject extends Base { | ||||
|       let contentElm = document.createElement('div'); | ||||
|       contentElm.innerHTML = html(this) | ||||
|       this._DialogObject.contentAppChild(contentElm) | ||||
|       this.attributeType = this.options.attributeType | ||||
|       this.attributeCamera = this.options.attribute.camera.content | ||||
|  | ||||
|       // 创建标签页 | ||||
|       let tabsElm = new cy_tabs('polygon-object-edit-tabs', undefined, this.sdk) | ||||
| @ -1337,7 +990,6 @@ class PolyhedronObject extends Base { | ||||
|     this.height = this.originalOptions.height | ||||
|     this.extrudedHeight = this.originalOptions.extrudedHeight | ||||
|     this.area = this.originalOptions.area | ||||
|     this.areaUnit = this.originalOptions['area-unit'] | ||||
|     this.labelShow = this.originalOptions.label.show | ||||
|     this.labelColor = this.originalOptions.label.color | ||||
|     this.labelFontSize = this.originalOptions.label.fontSize | ||||
| @ -1350,12 +1002,6 @@ class PolyhedronObject extends Base { | ||||
|     this.labelLineColor = this.originalOptions.label.lineColor | ||||
|     this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] | ||||
|     this.labelBackgroundColorEnd = this.originalOptions.label.backgroundColor[1] | ||||
|     this.attributeLink = this.options.attribute.link.content | ||||
|     this.attributeCamera = this.options.attribute.camera.content | ||||
|     this.attributeVr = this.options.attribute.vr.content | ||||
|     this.attributeGoods = this.options.attribute.goods.content | ||||
|     this.cameraSelect && this.cameraSelect() | ||||
|     this.goodsSelect && this.goodsSelect() | ||||
|  | ||||
|     let positions = this.options.positions | ||||
|     let fromDegreesArray = [] | ||||
| @ -1399,63 +1045,10 @@ class PolyhedronObject extends Base { | ||||
|     await syncData(this.sdk, this.options.id) | ||||
|   } | ||||
|  | ||||
|   _addLink() { | ||||
|     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 | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   static nodeEdit(that, cb = () => { }) { | ||||
|   nodeEdit(cb = () => { }) { | ||||
|     // that.positionEditing = false | ||||
|     // that.event && that.event.destroy() | ||||
|     let that = this | ||||
|     that.positionEditing = false | ||||
|     if (YJ.Measure.GetMeasureStatus()) { | ||||
|       cb('上一次测量未结束') | ||||
| @ -1486,7 +1079,8 @@ class PolyhedronObject extends Base { | ||||
|           }) | ||||
|           that.nodePoints.splice(selectPoint.index, 0, entity) | ||||
|           that.options.positions.splice(selectPoint.index, 0, that.options.positions[selectPoint.index]) | ||||
|           that.options.areaByMeter = that.computeArea(that.options.positions); | ||||
|           that.areaByMeter = that.computeArea(that.options.positions); | ||||
|           that.areaChangeCallBack && that.areaChangeCallBack() | ||||
|           let labelPositions = [[]] | ||||
|           for (let i = 0; i < that.options.positions.length; i++) { | ||||
|             labelPositions[0].push([that.options.positions[i].lng, that.options.positions[i].lat]) | ||||
| @ -1497,22 +1091,6 @@ class PolyhedronObject extends Base { | ||||
|             let centroid = turf.centroid(polygon); | ||||
|             that.label.position = [centroid.geometry.coordinates[0], centroid.geometry.coordinates[1], that.options.height + that.options.extrudedHeight] | ||||
|           } | ||||
|           switch (that.options['area-unit']) { | ||||
|             case '平方米': | ||||
|               that.area = that.options.areaByMeter | ||||
|               break; | ||||
|             case '平方千米': | ||||
|               that.area = Number((that.options.areaByMeter / 1000000).toFixed(8)) | ||||
|               break; | ||||
|             case '亩': | ||||
|               that.area = Number((that.options.areaByMeter / 666.6666667).toFixed(4)) | ||||
|               break; | ||||
|             case '公顷': | ||||
|               that.area = Number((that.options.areaByMeter / 10000).toFixed(6)) | ||||
|               break; | ||||
|             default: | ||||
|               that.area = that.options.areaByMeter | ||||
|           } | ||||
|         } | ||||
|         else { | ||||
|           var pick = that.sdk.viewer.scene.pick(movement.position); | ||||
| @ -1531,23 +1109,8 @@ class PolyhedronObject extends Base { | ||||
|           if(added) { | ||||
|             that.options.positions.splice(selectPoint.index, 1) | ||||
|           } | ||||
|           that.options.areaByMeter = that.computeArea(that.options.positions); | ||||
|           switch (that.options['area-unit']) { | ||||
|             case '平方米': | ||||
|               that.area = that.options.areaByMeter | ||||
|               break; | ||||
|             case '平方千米': | ||||
|               that.area = Number((that.options.areaByMeter / 1000000).toFixed(8)) | ||||
|               break; | ||||
|             case '亩': | ||||
|               that.area = Number((that.options.areaByMeter / 666.6666667).toFixed(4)) | ||||
|               break; | ||||
|             case '公顷': | ||||
|               that.area = Number((that.options.areaByMeter / 10000).toFixed(6)) | ||||
|               break; | ||||
|             default: | ||||
|               that.area = that.options.areaByMeter | ||||
|           } | ||||
|           that.areaByMeter = that.computeArea(that.options.positions); | ||||
|           that.areaChangeCallBack && that.areaChangeCallBack() | ||||
|           let positions = that.options.positions | ||||
|           let fromDegreesArray = [] | ||||
|           for (let i = 0; i < positions.length; i++) { | ||||
|  | ||||
| @ -145,6 +145,8 @@ class PolylineObject extends Base { | ||||
|       delete this.options.attribute.vr | ||||
|       delete this.options.attribute.goods | ||||
|  | ||||
|       this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|  | ||||
|     this.operate = {} | ||||
|     this.nodePoints = [] | ||||
|  | ||||
| @ -14,6 +14,7 @@ import { setSplitDirection, syncSplitData, setActiveId } from '../../../Global/S | ||||
| import { setActiveViewer, closeRotateAround, closeViewFollow} from '../../../Global/global' | ||||
|  | ||||
| class RadarScan extends Base { | ||||
|   #_positionEditingCallback = null | ||||
|   /** | ||||
|    * @constructor | ||||
|    * @description 雷达扫描 | ||||
| @ -23,7 +24,7 @@ class RadarScan extends Base { | ||||
|    * @param options.show=true {boolean} 显示/隐藏 | ||||
|    * @param options.lng {number} 经度 | ||||
|    * @param options.lat {number} 维度 | ||||
|    * @param options.color=#FFEB3B {string} 颜色 | ||||
|    * @param options.color=#ff0000 {string} 颜色 | ||||
|    * @param options.radius=10 {number} 半径 | ||||
|    * @param options.speed=20 {number} 速度 | ||||
|    * @param options.label {object} 标签对象 | ||||
| @ -63,7 +64,7 @@ class RadarScan extends Base { | ||||
|     super(sdk, options); | ||||
|     this.options.lng = options.lng | ||||
|     this.options.lat = options.lat | ||||
|     this.options.color = options.color || '#FFEB3B' | ||||
|     this.options.color = options.color || '#ff0000' | ||||
|     this.options.radius = options.radius || 10 | ||||
|     if(this.options.radius > 999999) { | ||||
|       this.options.radius = 999999 | ||||
| @ -71,13 +72,11 @@ class RadarScan extends Base { | ||||
|     this.options.speed = (options.speed || options.speed === 0) ? options.speed : 20 | ||||
|     this.options.show = (options.show || options.show === false) ? options.show : true | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|     this.options.positionEditin = false | ||||
|     this.operate = {} | ||||
|     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, | ||||
|       fontFamily: options.label.fontFamily ? options.label.fontFamily : 0, | ||||
|       color: options.label.color || '#ffffff', | ||||
| @ -89,20 +88,11 @@ class RadarScan extends Base { | ||||
|       near: (options.label.near || options.label.near === 0) ? options.label.near : 2000, | ||||
|       far: (options.label.far || options.label.far === 0) ? options.label.far : 100000, | ||||
|     } | ||||
|     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' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this.Dialog = _Dialog | ||||
|     this._EventBinding = new EventBinding() | ||||
|     // if(this.sdk.viewer.scene.mode === 2) { | ||||
| @ -180,9 +170,10 @@ class RadarScan extends Base { | ||||
|  | ||||
|   static async createLabel(that) { | ||||
|     let height = await that.getClampToHeight({ lng: that.options.lng, lat: that.options.lat }) | ||||
|     if (!that.options.label.position) { | ||||
|       that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     } | ||||
|     // if (!that.options.label.position) { | ||||
|     //   that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     // } | ||||
|     that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     // 标签 | ||||
|     that.label = new LabelObject(that.sdk, { | ||||
|       id: that.options.id, | ||||
| @ -212,7 +203,7 @@ class RadarScan extends Base { | ||||
|     // 每一帧刷新时调用 | ||||
|     that.viewer.clock.onTick.addEventListener(() => { | ||||
|       let tempTime = new Date().getTime() | ||||
|       let everyTime = that.options.duration ? 360 / that.options.duration : 0 | ||||
|       let everyTime = 0 | ||||
|       let speed = (tempTime - _time) * everyTime | ||||
|       _time = tempTime | ||||
|       heading += speed; | ||||
| @ -314,7 +305,7 @@ class RadarScan extends Base { | ||||
|     if (YJ.Measure.GetMeasureStatus() || !this.sdk || !this.sdk.viewer || !this.entity) { | ||||
|       return | ||||
|     } | ||||
|     this.options.positionEditing = status | ||||
|     this.operate.positionEditing = status | ||||
|     if (status === true) { | ||||
|       this.tip && this.tip.destroy() | ||||
|       this.tip = new MouseTip('点击鼠标左键确认,右键取消', this.sdk) | ||||
| @ -343,6 +334,10 @@ class RadarScan extends Base { | ||||
|         this.event.mouse_right(() => { }) | ||||
|         this.event.gesture_pinck_start(() => { }) | ||||
|         this.event.gesture_pinck_end(() => { }) | ||||
|         if (this.#_positionEditingCallback) { | ||||
|           this.#_positionEditingCallback() | ||||
|           this.#_positionEditingCallback = null | ||||
|         } | ||||
|         this.lastOptions = undefined | ||||
|         this.positionEditing = false | ||||
|       }) | ||||
| @ -398,7 +393,12 @@ class RadarScan extends Base { | ||||
|   } | ||||
|  | ||||
|   get positionEditing() { | ||||
|     return this.options.positionEditing | ||||
|     return this.operate.positionEditing | ||||
|   } | ||||
|  | ||||
|   openPositionEditing(cd) { | ||||
|     this.positionEditing = true | ||||
|     this.#_positionEditingCallback = cd | ||||
|   } | ||||
|  | ||||
|   get lng() { | ||||
| @ -699,348 +699,6 @@ class RadarScan 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) | ||||
| @ -1111,6 +769,7 @@ class RadarScan extends Base { | ||||
|  | ||||
|   // 编辑框 | ||||
|   async edit(state) { | ||||
|     return | ||||
|     let _this = this | ||||
|     this.originalOptions = this.deepCopyObj(this.options) | ||||
|  | ||||
| @ -1161,9 +820,6 @@ class RadarScan extends Base { | ||||
|       let contentElm = document.createElement('div'); | ||||
|       contentElm.innerHTML = html(this) | ||||
|       this._DialogObject.contentAppChild(contentElm) | ||||
|       this.attributeType = this.options.attributeType | ||||
|       this.attributeCamera = this.options.attribute.camera.content | ||||
|       this.attributeISC = this.options.attribute.ISC.content | ||||
|  | ||||
|       // 创建标签页 | ||||
|       let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk) | ||||
| @ -1393,7 +1049,6 @@ class RadarScan extends Base { | ||||
|     this.lat = this.originalOptions.lat | ||||
|     this.color = this.originalOptions.color | ||||
|     this.radius = this.originalOptions.radius | ||||
|     this.duration = this.originalOptions.duration | ||||
|     this.labelShow = this.originalOptions.label.show | ||||
|     this.labelColor = this.originalOptions.label.color | ||||
|     this.labelFontSize = this.originalOptions.label.fontSize | ||||
| @ -1406,15 +1061,6 @@ class RadarScan extends Base { | ||||
|     this.labelLineColor = this.originalOptions.label.lineColor | ||||
|     this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] | ||||
|     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() | ||||
|   } | ||||
|  | ||||
|   async remove() { | ||||
| @ -1433,16 +1079,6 @@ class RadarScan 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 | ||||
|   } | ||||
|  | ||||
|   changeMaterial() { | ||||
|     // 提取颜色透明度 | ||||
|     function extractRGBA(rgbaString) { | ||||
| @ -1475,61 +1111,6 @@ class RadarScan extends Base { | ||||
|     })) | ||||
|   } | ||||
|  | ||||
|   _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 | ||||
|  | ||||
| @ -77,12 +77,9 @@ class RadarScanStereoscopic extends Base { | ||||
|     } | ||||
|     this.options.duration = options.duration || 2000 | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|     this.options.positionEditin = false | ||||
|     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,20 +91,11 @@ class RadarScanStereoscopic extends Base { | ||||
|       near: (options.label.near || options.label.near === 0) ? options.label.near : 2000, | ||||
|       far: (options.label.far || options.label.far === 0) ? options.label.far : 100000, | ||||
|     } | ||||
|     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' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this._elms = {}; | ||||
|     this.Dialog = _Dialog | ||||
|     this._EventBinding = new EventBinding() | ||||
| @ -235,9 +223,7 @@ class RadarScanStereoscopic extends Base { | ||||
|       let objectsToExclude = [...that.sdk.viewer.entities.values] | ||||
|       height = await that.getClampToHeight({ lng: that.options.lng, lat: that.options.lat }, objectsToExclude) | ||||
|     } | ||||
|     if (!that.options.label.position) { | ||||
|       that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     } | ||||
|     that.options.label.position = { lng: that.options.lng, lat: that.options.lat, alt: height } | ||||
|     // 标签 | ||||
|     that.label = new LabelObject(that.sdk, { | ||||
|       id: that.options.id, | ||||
| @ -276,6 +262,9 @@ class RadarScanStereoscopic extends Base { | ||||
|         this.lng = params.position.lng | ||||
|         this.lat = params.position.lat | ||||
|         this.alt = params.position.alt | ||||
|         if(this._positionEditingCallback) { | ||||
|           this._positionEditingCallback() | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     else { | ||||
| @ -283,6 +272,7 @@ class RadarScanStereoscopic extends Base { | ||||
|         this.picking = true | ||||
|       }, 500); | ||||
|       this.ControllerObject.destroy() | ||||
|       this._positionEditingCallback = null | ||||
|     } | ||||
|     // this.options.positionEditing = status | ||||
|     // if (status === true) { | ||||
| @ -322,6 +312,16 @@ class RadarScanStereoscopic extends Base { | ||||
|     return false | ||||
|   } | ||||
|  | ||||
|   openPositionEditing(cd) { | ||||
|     this.positionEditing = true | ||||
|     this._positionEditingCallback = cd | ||||
|   } | ||||
|  | ||||
|   closePositionEditing() { | ||||
|     this.positionEditing = false | ||||
|     this._positionEditingCallback = null | ||||
|   } | ||||
|  | ||||
|   get lng() { | ||||
|     return this.options.lng | ||||
|   } | ||||
| @ -660,346 +660,9 @@ class RadarScanStereoscopic 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 edit(state) { | ||||
|     return | ||||
|     let _this = this | ||||
|     this.originalOptions = this.deepCopyObj(this.options) | ||||
|  | ||||
| @ -1053,9 +716,6 @@ class RadarScanStereoscopic extends Base { | ||||
|       let contentElm = document.createElement('div'); | ||||
|       contentElm.innerHTML = html(this) | ||||
|       this._DialogObject.contentAppChild(contentElm) | ||||
|       this.attributeType = this.options.attributeType | ||||
|       this.attributeCamera = this.options.attribute.camera.content | ||||
|       this.attributeISC = this.options.attribute.ISC.content | ||||
|  | ||||
|       // 创建标签页 | ||||
|       let tabsElm = new cy_tabs('radar-scan-edit-tabs', undefined, this.sdk) | ||||
| @ -1188,11 +848,6 @@ class RadarScanStereoscopic extends Base { | ||||
|       }) | ||||
|  | ||||
|       setTimeout(() => { | ||||
|         this.attributeLink = this.options.attribute.link.content | ||||
|         this.attributeVr = this.options.attribute.vr.content | ||||
|         this.ISCSelect && this.ISCSelect() | ||||
|         this.goodsSelect && this.goodsSelect() | ||||
|         this.cameraSelect && this.cameraSelect() | ||||
|         let tagData = this.attributeSelect | ||||
|         let attributeElm = this._DialogObject._element.content.getElementsByClassName('attribute-select-box')[0] | ||||
|         if (attributeElm) { | ||||
| @ -1386,16 +1041,7 @@ class RadarScanStereoscopic extends Base { | ||||
|     this.labelLineColor = this.originalOptions.label.lineColor | ||||
|     this.labelBackgroundColorStart = this.originalOptions.label.backgroundColor[0] | ||||
|     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.positionEditing = false | ||||
|     this.cameraSelect && this.cameraSelect() | ||||
|     this.goodsSelect && this.goodsSelect() | ||||
|   } | ||||
|  | ||||
|   async remove() { | ||||
| @ -1410,70 +1056,6 @@ class RadarScanStereoscopic 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() { | ||||
|     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 | ||||
|  | ||||
| @ -110,6 +110,8 @@ class SectorObject extends Base { | ||||
|     this.options.attribute.goods = this.options.attribute.goods || {} | ||||
|     this.options.attribute.goods.content = this.options.attribute.goods.content || [] | ||||
|     this.options.attributeType = options.attributeType || 'richText' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this.event = new MouseEvent(this.sdk) | ||||
|     this.nodePoints = [] | ||||
|     this.operate = {} | ||||
|  | ||||
| @ -118,6 +118,8 @@ class StraightArrowObject extends Base { | ||||
|     this.options.attribute.goods = this.options.attribute.goods || {} | ||||
|     this.options.attribute.goods.content = this.options.attribute.goods.content || [] | ||||
|     this.options.attributeType = options.attributeType || 'richText' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this.nodePoints = [] | ||||
|     if (!this.options.positions || this.options.positions.length < 2) { | ||||
|       this._error = '直线箭头需要两个坐标!' | ||||
|  | ||||
| @ -114,6 +114,8 @@ class WallRealStereoscopic extends Base { | ||||
|     this.options.attribute.goods = this.options.attribute.goods || {} | ||||
|     this.options.attribute.goods.content = this.options.attribute.goods.content || [] | ||||
|     this.options.attributeType = options.attributeType || 'richText' | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|     this.Dialog = _Dialog | ||||
|  | ||||
|     if (!this.options.positions || this.options.positions.length < 2) { | ||||
|  | ||||
| @ -99,6 +99,8 @@ class WallStereoscopic extends Base { | ||||
|     delete this.options.attribute.vr | ||||
|     delete this.options.attribute.goods | ||||
|  | ||||
|     this.options.richTextContent = options.richTextContent || '' | ||||
|  | ||||
|     this.Dialog = _Dialog | ||||
|     this._elms = {}; | ||||
|     if (!this.options.positions || this.options.positions.length < 2) { | ||||
|  | ||||
		Reference in New Issue
	
	Block a user