|
@@ -136,10 +136,11 @@ EditTools.prototype.init = function() {
|
|
setDraggable({ul:$('#hotpointDetail [name="photo"] .list')[0], dragItemClassName:['mediaItem'] })
|
|
setDraggable({ul:$('#hotpointDetail [name="photo"] .list')[0], dragItemClassName:['mediaItem'] })
|
|
|
|
|
|
|
|
|
|
- //热点列表拖拽
|
|
|
|
-
|
|
|
|
|
|
+ //热点列表拖拽
|
|
setDraggable({ul:$('.toolRight .spotList')[0], dragItemClassName:['listItem']})
|
|
setDraggable({ul:$('.toolRight .spotList')[0], dragItemClassName:['listItem']})
|
|
|
|
|
|
|
|
+ //roomLabel列表拖拽
|
|
|
|
+ setDraggable({ul:$('.toolRight .roomLabels [name="list"]>ul')[0], dragItemClassName:['listItem']})
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -271,6 +272,18 @@ EditTools.prototype.active = function() {
|
|
ev.stopPropagation();
|
|
ev.stopPropagation();
|
|
})
|
|
})
|
|
|
|
|
|
|
|
+
|
|
|
|
+ //加空格和回车字符
|
|
|
|
+ $(".buttons[name='addSign'] button").on('click',function(e){
|
|
|
|
+ let forAttr = $(this).parent().attr('for')
|
|
|
|
+ let textarea = forAttr ? $('#'+forAttr) : $(this).parent().parent().find('textarea')
|
|
|
|
+ let sign = $(this).attr('name') == 'space' ? ' ' : '<br>'
|
|
|
|
+ var v = textarea.val();
|
|
|
|
+ textarea.val(v + sign)
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
//保存按钮
|
|
//保存按钮
|
|
EditTools.prototype.initSaveAll = function() {
|
|
EditTools.prototype.initSaveAll = function() {
|
|
@@ -400,7 +413,8 @@ class EditLabel{
|
|
}
|
|
}
|
|
|
|
|
|
init(){
|
|
init(){
|
|
- player.model.roomLabels.forEach(e=>this.addLebelEvent(e))
|
|
|
|
|
|
+ let reverse = player.model.roomLabels.slice(0).reverse()
|
|
|
|
+ reverse.forEach(e=>this.addLebelCallback(e))
|
|
|
|
|
|
|
|
|
|
$('.toolRight .roomLabels .addBtn button').on('click',()=>{//准备添加
|
|
$('.toolRight .roomLabels .addBtn button').on('click',()=>{//准备添加
|
|
@@ -410,13 +424,13 @@ class EditLabel{
|
|
this.setAddState(true)
|
|
this.setAddState(true)
|
|
})
|
|
})
|
|
$('.toolRight .roomLabels [name="title"] input').on('input',(e)=>{//标题
|
|
$('.toolRight .roomLabels [name="title"] input').on('input',(e)=>{//标题
|
|
- this.editingLabel.setTitle(e.target.value)
|
|
|
|
|
|
+ this.editingLabel.setTitle(e.target.value)
|
|
|
|
+ this.editingLabel.$li.find('.title').text(e.target.value)
|
|
})
|
|
})
|
|
- $('.toolRight .roomLabels [name="delete"] button').on('click',(e)=>{//删除
|
|
|
|
-
|
|
|
|
|
|
+ /* $('.toolRight .roomLabels [name="delete"] button').on('click',(e)=>{//删除
|
|
this.deleteLabel(this.editingLabel)
|
|
this.deleteLabel(this.editingLabel)
|
|
- this.setEditLabel(false,this.editingLabel)
|
|
|
|
- })
|
|
|
|
|
|
+ this.setEditLabel(false,this.editingLabel)
|
|
|
|
+ }) */
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -426,18 +440,11 @@ class EditLabel{
|
|
position.y += 0.5
|
|
position.y += 0.5
|
|
//var floorIndex = player.model.allFloorsVisible ? null : player.model.currentFloor.floorIndex
|
|
//var floorIndex = player.model.allFloorsVisible ? null : player.model.currentFloor.floorIndex
|
|
var floorIndex = intersect.object.parent.parent.floorIndex
|
|
var floorIndex = intersect.object.parent.parent.floorIndex
|
|
- var label = new RoomLabel({position, title:'' , floorIndex/* , modes:[] */
|
|
|
|
- /* ,clickFun:()=>{
|
|
|
|
- if(this.editing){
|
|
|
|
- this.setEditLabel(true,label)
|
|
|
|
- }
|
|
|
|
- } */
|
|
|
|
- })
|
|
|
|
|
|
+ var label = new RoomLabel({position, title:'' , floorIndex })
|
|
player.model.roomLabels.push(label)
|
|
player.model.roomLabels.push(label)
|
|
- this.setAddState(false)
|
|
|
|
|
|
+ this.setAddState(false)
|
|
|
|
+ this.addLebelCallback(label)
|
|
this.setEditLabel(true, label) //开始编辑
|
|
this.setEditLabel(true, label) //开始编辑
|
|
- this.addLebelEvent(label)
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
this.adding = false
|
|
this.adding = false
|
|
@@ -445,6 +452,32 @@ class EditLabel{
|
|
consume(true)
|
|
consume(true)
|
|
}
|
|
}
|
|
})
|
|
})
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //点击列表弹出按钮
|
|
|
|
+ $('.toolRight .roomLabels [name="list"]>ul').on("click", (e)=>{
|
|
|
|
+ var target = $(e.target);
|
|
|
|
+ let li = searchParent(e.target, { className: 'listItem' }, 7);
|
|
|
|
+ if(!li)return;
|
|
|
|
+
|
|
|
|
+ let label = li.label
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (target.hasClass("del")) {
|
|
|
|
+ e.stopPropagation();
|
|
|
|
+ target.siblings(".DelConfirm").addClass("active");
|
|
|
|
+ } else {
|
|
|
|
+ if (target.hasClass("DelConfirm")) {
|
|
|
|
+ e.stopPropagation();
|
|
|
|
+ this.deleteLabel(label);
|
|
|
|
+ }else{
|
|
|
|
+ this.setEditLabel(true, label) //开始编辑
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ });
|
|
}
|
|
}
|
|
|
|
|
|
deleteLabel(label){
|
|
deleteLabel(label){
|
|
@@ -452,18 +485,35 @@ class EditLabel{
|
|
index > -1 && player.model.roomLabels.splice(index,1)
|
|
index > -1 && player.model.roomLabels.splice(index,1)
|
|
|
|
|
|
label.dispose()
|
|
label.dispose()
|
|
|
|
+
|
|
|
|
+ label.$li.remove()
|
|
|
|
+
|
|
|
|
+ if(this.editingLabel == label){
|
|
|
|
+ this.setEditLabel(false,this.editingLabel)
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ addLebelCallback(label){
|
|
|
|
+ this.addLebelEvent(label)
|
|
|
|
+ this.addToList(label)
|
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
|
|
|
+ addToList(label){
|
|
|
|
+ var $li = $("<li class='listItem' draggable='true'><div class='icon'></div><div class=title >" + label.title + "</div><div class=DelConfirm title='删除'>确定删除</div><div class=del></div></li>");
|
|
|
|
+ $li[0].label = label
|
|
|
|
+ label.$li = $li;
|
|
|
|
+
|
|
|
|
+ $('.toolRight .roomLabels [name="list"]>ul').prepend($li)
|
|
|
|
+
|
|
|
|
+ }
|
|
setAddState(state){
|
|
setAddState(state){
|
|
state ? CursorDeal.add('addLabel') : CursorDeal.remove('addLabel')
|
|
state ? CursorDeal.add('addLabel') : CursorDeal.remove('addLabel')
|
|
this.adding = state
|
|
this.adding = state
|
|
}
|
|
}
|
|
|
|
|
|
setEditLabel(state, label){
|
|
setEditLabel(state, label){
|
|
- let pannel = $('.toolRight li[name="prop"]')
|
|
|
|
-
|
|
|
|
|
|
+ let pannel = $('.toolRight .roomLabels li[name="prop"]')
|
|
|
|
+
|
|
if(state){
|
|
if(state){
|
|
if(this.editingLabel){
|
|
if(this.editingLabel){
|
|
this.setEditLabel(false, this.editingLabel)
|
|
this.setEditLabel(false, this.editingLabel)
|
|
@@ -472,6 +522,7 @@ class EditLabel{
|
|
pannel.removeClass('hide')
|
|
pannel.removeClass('hide')
|
|
pannel.find('[name="title"] input').val(label.title)
|
|
pannel.find('[name="title"] input').val(label.title)
|
|
label.setEditSelect(true)
|
|
label.setEditSelect(true)
|
|
|
|
+ pannel.insertAfter(label.$li)
|
|
this.editingLabel = label
|
|
this.editingLabel = label
|
|
}else{
|
|
}else{
|
|
label.elem.removeClass('selected')
|
|
label.elem.removeClass('selected')
|
|
@@ -485,17 +536,18 @@ class EditLabel{
|
|
//拖拽
|
|
//拖拽
|
|
let dragElemShift = {}
|
|
let dragElemShift = {}
|
|
let dragging = false
|
|
let dragging = false
|
|
- const startDrag = (evt) => {
|
|
|
|
|
|
+ const startDrag = (evt) => {
|
|
|
|
+ if(!this.editing )return
|
|
dragging = true
|
|
dragging = true
|
|
$('#player').on("mousemove", drag);
|
|
$('#player').on("mousemove", drag);
|
|
-
|
|
|
|
- if(player.mode != 'floorplan'){ //换算到elem的底部
|
|
|
|
|
|
+ label.elem.find('a').css('pointer-events','none')
|
|
|
|
+ /* if(player.mode != 'floorplan'){ //换算到elem的底部
|
|
let lebelWidth = label.elem.children(0).width()
|
|
let lebelWidth = label.elem.children(0).width()
|
|
let lebelHeight = label.elem.children(0).height() * (68+24) / 24 ;//
|
|
let lebelHeight = label.elem.children(0).height() * (68+24) / 24 ;//
|
|
- dragElemShift = {x: -evt.offsetX + lebelWidth/2, y: 100 /* -evt.offsetY + lebelHeight */} //y向不准确,因为原本添加时提高了0.5,而0.5对应的像素需要根据视角,那就算了吧
|
|
|
|
|
|
+ dragElemShift = {x: -evt.offsetX + lebelWidth/2, y: 100 } //y向不准确,因为原本添加时提高了0.5,而0.5对应的像素需要根据视角,那就算了吧
|
|
}else{
|
|
}else{
|
|
dragElemShift = {x:0,y:0}
|
|
dragElemShift = {x:0,y:0}
|
|
- }
|
|
|
|
|
|
+ } */
|
|
|
|
|
|
CursorDeal.add('moveLabel')
|
|
CursorDeal.add('moveLabel')
|
|
};
|
|
};
|
|
@@ -504,7 +556,7 @@ class EditLabel{
|
|
dragging = false
|
|
dragging = false
|
|
|
|
|
|
$('#player').off("mousemove", drag);
|
|
$('#player').off("mousemove", drag);
|
|
-
|
|
|
|
|
|
+ label.elem.find('a').css('pointer-events','')
|
|
CursorDeal.remove('moveLabel')
|
|
CursorDeal.remove('moveLabel')
|
|
};
|
|
};
|
|
|
|
|
|
@@ -514,7 +566,7 @@ class EditLabel{
|
|
evt.preventDefault();
|
|
evt.preventDefault();
|
|
let mouse = new THREE.Vector3()
|
|
let mouse = new THREE.Vector3()
|
|
let meshes = player.model.allFloorsVisible ? player.model.colliders : player.model.currentFloor.collider.children
|
|
let meshes = player.model.allFloorsVisible ? player.model.colliders : player.model.currentFloor.collider.children
|
|
- math.convertScreenPositionToNDC(evt.offsetX+dragElemShift.x, evt.offsetY+dragElemShift.y, mouse);
|
|
|
|
|
|
+ math.convertScreenPositionToNDC(evt.offsetX/* +dragElemShift.x */, evt.offsetY/* +dragElemShift.y */, mouse);
|
|
var intersect = convertTool.getMouseIntersect(player.camera, meshes, mouse)
|
|
var intersect = convertTool.getMouseIntersect(player.camera, meshes, mouse)
|
|
if(intersect){
|
|
if(intersect){
|
|
let position = intersect.point.clone()
|
|
let position = intersect.point.clone()
|
|
@@ -551,16 +603,19 @@ class EditLabel{
|
|
this.editing = false
|
|
this.editing = false
|
|
this.editingLabel && this.setEditLabel(false, this.editingLabel)
|
|
this.editingLabel && this.setEditLabel(false, this.editingLabel)
|
|
player.roomLebelClickUnabled = false
|
|
player.roomLebelClickUnabled = false
|
|
|
|
+ this.setAddState(false)
|
|
}
|
|
}
|
|
|
|
|
|
- getSavingInfo(){
|
|
|
|
- var info = player.model.roomLabels.map(e=>{
|
|
|
|
|
|
+ getSavingInfo(){
|
|
|
|
+ var info = Array.from($('.toolRight .roomLabels [name="list"] .listItem')).map((li,index)=>{
|
|
|
|
+ let label = li.label
|
|
return {
|
|
return {
|
|
- title : e.title,
|
|
|
|
- position : toPrecision(e.position.toArray(), 4),
|
|
|
|
- floorIndex: e.floorIndex
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
|
|
+ //order: index,
|
|
|
|
+ title : label.title,
|
|
|
|
+ position : toPrecision(label.position.toArray(), 4),
|
|
|
|
+ floorIndex: label.floorIndex
|
|
|
|
+ }
|
|
|
|
+ })
|
|
console.log(info)
|
|
console.log(info)
|
|
return info
|
|
return info
|
|
|
|
|