Files
sdk4.0/src/Obj/Element/Dialog/index.js

176 lines
6.0 KiB
JavaScript

import BaseDialog from '../../../BaseDialog';
class Dialog extends BaseDialog {
constructor(sdk, info, options, only) {
super(sdk.viewer._container, options, only);
this.sdk = sdk
this.viewer = sdk.viewer
this.info = info
this._init()
}
async _init() {
await this.init()
await this._attribute()
if (this.options.confirmCallBack) {
let confirmBtn = document.createElement('button');
confirmBtn.className = 'confirm';
confirmBtn.innerHTML = '确认'
this.footAppChild(confirmBtn)
confirmBtn.addEventListener('click', () => {
// console.log('确认')
if (this.options.confirmCallBack) {
this.options.confirmCallBack(this.info)
}
});
}
if (this.options.removeCallBack) {
let deleteBtn = document.createElement('button');
deleteBtn.className = 'delete';
deleteBtn.innerHTML = '删除'
this.footAppChild(deleteBtn)
deleteBtn.addEventListener('click', () => {
// console.log('删除')
this.close()
if (this.options.removeCallBack) {
this.options.removeCallBack()
}
});
}
// if (this.options.resetCallBack) {
// let resetBtn = document.createElement('button');
// resetBtn.className = 'reset';
// resetBtn.innerHTML = '重置'
// this.footAppChild(resetBtn)
// resetBtn.addEventListener('click', () => {
// // console.log('重置')
// if (this.options.resetCallBack) {
// this.options.resetCallBack()
// }
// });
// }
if (this.options.rotateCallBack) {
let rotateBtn = document.createElement('button');
rotateBtn.className = 'rotate';
rotateBtn.innerHTML = '旋转'
this.footAppChild(rotateBtn)
rotateBtn.addEventListener('click', () => {
// console.log('旋转')
if (this.options.rotateCallBack) {
this.options.rotateCallBack()
}
});
}
if (this.options.translationalCallBack || this.options.updateHeightCallBack || this.options.secondaryEditCallBack) {
let div = document.createElement('div');
div.style.position ='absolute'
div.style.left ='24px'
div.style.flet = '0'
div.style.display = 'flex'
this.footAppChild(div)
if (this.options.updateHeightCallBack) {
let heightBtn = document.createElement('button');
heightBtn.className = 'update-height'
heightBtn.innerHTML = '<svg class="icon-updateheigh"><use xlink:href="#yj-icon-updateheight"></use></svg>更新高程'
heightBtn.style.width = 'auto'
heightBtn.addEventListener('click', () => {
this.options.updateHeightCallBack()
})
div.appendChild(heightBtn)
}
if (this.options.secondaryEditCallBack) {
let secondaryEditBtn = document.createElement('button');
secondaryEditBtn.className = 'secondaryEdit';
secondaryEditBtn.innerHTML = '<svg class="icon-edit"><use xlink:href="#yj-icon-edit"></use></svg>二次编辑'
if (this.options.updateHeightCallBack) {
secondaryEditBtn.style.marginLeft = '10px'
}
div.appendChild(secondaryEditBtn)
secondaryEditBtn.addEventListener('click', () => {
// console.log('二次编辑')
if (this.options.secondaryEditCallBack) {
this.options.secondaryEditCallBack()
}
});
}
if (this.options.translationalCallBack) {
let translationalBtn = document.createElement('button');
translationalBtn.className = 'translational';
translationalBtn.innerHTML = `<svg class="icon-py"><use xlink:href="#yj-icon-py"></use></svg>平移`
if (this.options.updateHeightCallBack || this.options.secondaryEditCallBack) {
translationalBtn.style.marginLeft = '10px'
}
div.appendChild(translationalBtn)
translationalBtn.addEventListener('click', () => {
// console.log('平移')
if (this.options.translationalCallBack) {
this.options.translationalCallBack()
}
});
}
}
if (this.options.addFootElm) {
for (let i = 0; i < this.options.addFootElm.length; i++) {
let elm = document.createElement(this.options.addFootElm[i].tagName);
elm.className = this.options.addFootElm[i].className
elm.innerHTML = this.options.addFootElm[i].innerHTML
if(this.options.addFootElm[i].event && this.options.addFootElm[i].event.length==2) {
elm.addEventListener(this.options.addFootElm[i].event[0], this.options.addFootElm[i].event[1])
}
this.footAppChild(elm)
}
}
// if (this.options.showCallBack) {
// let showBox = document.createElement('div');
// showBox.className = 'show';
// showBox.style = 'display: flex;align-items: center;'
// showBox.innerHTML = `<span class="label">隐藏</span><input class="btn-switch" type="checkbox" checked name="show"><span class="label">显示</span>`
// this.footAppChild(showBox)
// let showBtn = showBox.querySelector("input[name='show']")
// this.showBtn = showBtn
// showBtn.checked = this.info.show
// showBtn.addEventListener('input', (e) => {
// this.info.show = e.target.checked
// if (this.options.showCallBack) {
// this.options.showCallBack(this.info.show)
// }
// });
// }
}
_attribute() {
let attribute = this._element.content.getElementsByClassName('attribute')[0]
if (!attribute || attribute.length === 0) {
return
}
let attributeSelectOption = attribute.getElementsByClassName('attribute-select')[0].getElementsByTagName('option')
for (let i = attributeSelectOption.length - 1; i >= 0; i--) {
for (let key in this.info.attribute) {
if (attributeSelectOption[i].value === key) {
if (this.info.attribute[key].disabled) {
attributeSelectOption[i].disabled = true
}
break
}
}
}
}
}
export default Dialog