|
@@ -41,6 +41,15 @@ EditTools.prototype.init = function() {
|
|
|
var that = this;
|
|
|
this.initSaveAll();
|
|
|
this.active();
|
|
|
+
|
|
|
+ if(player.mode != 'panorama'){
|
|
|
+ $(".toolLeft li[data-name=panoVisible]").addClass('unable')
|
|
|
+ player.once("pano.chosen",()=>{
|
|
|
+ $(".toolLeft li[data-name=panoVisible]").removeClass('unable')
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
//请求数据someData.js
|
|
|
$.ajax(g_Prefix + "data/" + window.number + "/someData.json" + "?" + Date.now(), {
|
|
|
dataType: "json"
|
|
@@ -100,8 +109,8 @@ EditTools.prototype.active = function() {
|
|
|
}
|
|
|
switch (name) {
|
|
|
case "panoVisible":
|
|
|
- VisiSet.enterSet(VisiSet.beginSetPanoVisible.bind(VisiSet))
|
|
|
$(".toolLeft").addClass("unable")
|
|
|
+ VisiSet.enterSet(VisiSet.beginSetPanoVisible.bind(VisiSet))
|
|
|
|
|
|
break;
|
|
|
case "screen":
|
|
@@ -142,10 +151,10 @@ EditTools.prototype.initSaveAll = function() {
|
|
|
$(".edit-loading").removeClass("hide");
|
|
|
|
|
|
|
|
|
- var $images = $(".information .edit-fun-images a.result");
|
|
|
+ var $shareImages = $(".information .edit-fun-images a.result");
|
|
|
|
|
|
- new Promise(function(resolve, reject) {
|
|
|
- upload($images, 'images', resolve)
|
|
|
+ new Promise(function(resolve, reject) {//分享图
|
|
|
+ upload($shareImages, 'images', resolve)
|
|
|
}).then(function(imgUrls) {
|
|
|
|
|
|
//导览的数据
|
|
@@ -173,7 +182,7 @@ EditTools.prototype.initSaveAll = function() {
|
|
|
order: hotLength++//因为热点保存后在hots里的顺序会被修改,所以使用order来记录顺序
|
|
|
}
|
|
|
if (hot.visiblePanos)
|
|
|
- hots[sid].visiblePanos = hot.visiblePanos
|
|
|
+ hots[i].visiblePanos = hot.visiblePanos
|
|
|
|
|
|
if (hot.infoAttribute) {
|
|
|
delete hot.infoAttribute.position;
|
|
@@ -189,6 +198,7 @@ EditTools.prototype.initSaveAll = function() {
|
|
|
weixinDesc: $('#weixin-summary').val(),
|
|
|
shareImgUrl: imgUrls[0] || '',
|
|
|
backgroundMusic: $('#query-bgm').attr('href'),
|
|
|
+ bgName: $(".music .audio.mediaUpload .title").text(),
|
|
|
hoticon: JSON.parse($(".hotStyle-item li.active").attr("data-val")),
|
|
|
camera_start: $('#camera-start')[0].data,
|
|
|
loadlogo: $("#loadlogo").is(':checked'),
|
|
@@ -588,7 +598,16 @@ Hotpoint.prototype.init = function(n) {
|
|
|
});
|
|
|
//点击热点列表弹出按钮
|
|
|
this.spotList.on("click", function(e) {
|
|
|
- var target = $(e.target);
|
|
|
+ var target = $(e.target);
|
|
|
+ let li = searchParent(e.target, { className: 'listItem' }, 7);
|
|
|
+ if(!li)return;
|
|
|
+ var hotId = $(li).attr("data-spid");
|
|
|
+ var hot = player.model.hots[hotId]
|
|
|
+
|
|
|
+ if(VisiSet.setTagVisible){
|
|
|
+ return VisiSet.SetOneTagVisible(hot)
|
|
|
+ }
|
|
|
+
|
|
|
if (target.hasClass("del")) {
|
|
|
e.stopPropagation();
|
|
|
target.siblings(".DelConfirm").addClass("active");
|
|
@@ -596,12 +615,11 @@ Hotpoint.prototype.init = function(n) {
|
|
|
} else {
|
|
|
if (target.hasClass("DelConfirm")) {
|
|
|
e.stopPropagation();
|
|
|
- that.removeHot(target, n);
|
|
|
+ that.removeHot(hot, $(li));
|
|
|
} else {
|
|
|
- //点击热点列表弹出编辑热点窗口
|
|
|
- if (target.hasClass("title") || target.hasClass("icon")) {
|
|
|
- that.editHot(target)
|
|
|
- }
|
|
|
+ //点击热点列表弹出编辑热点窗口
|
|
|
+ that.editHot(hot, $(li))
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -645,20 +663,19 @@ Hotpoint.prototype.init = function(n) {
|
|
|
/**
|
|
|
* 显示编辑热点的窗口和初始化热点窗口的数据
|
|
|
*/
|
|
|
-Hotpoint.prototype.editHot = function(target) {
|
|
|
+Hotpoint.prototype.editHot = function(hot, $li) {
|
|
|
this.hotpointDetail.removeClass("atRight");
|
|
|
|
|
|
$("#hotpointDetail .audio.mediaUpload").find("input").val('');
|
|
|
// 点击编辑导览清空上一次文件
|
|
|
var playIcon = 'images/play.png';
|
|
|
var $layout = $("#hotpointDetail")[0];
|
|
|
- $layout.targetDOM = target.closest("li")[0];
|
|
|
+ //$layout.targetDOM = target.closest("li")[0];
|
|
|
//closest匹配选择器的第一个祖先元素
|
|
|
//编辑时将热点列表唯一标识带入,以便后期保存使用识别
|
|
|
- var li_id = $($layout.targetDOM).attr("data-spid");
|
|
|
- this.editSpot = player.model.hots[li_id];
|
|
|
-
|
|
|
- this.hotpointDetail.attr("data-id", li_id);
|
|
|
+ //var li_id = $li.attr("data-spid");
|
|
|
+ this.editSpot = hot
|
|
|
+ this.hotpointDetail.attr("data-id", hot.sid);
|
|
|
var info = this.editSpot.infoAttribute || {}
|
|
|
//$layout.targetDOM.infoAttribute || {}
|
|
|
transformControls.transCtlChangeMode("translate")
|
|
@@ -674,17 +691,17 @@ Hotpoint.prototype.editHot = function(target) {
|
|
|
info.noAction = this.editSpot.noAction
|
|
|
|
|
|
try {
|
|
|
- transformControls.attach(player.model.hots[li_id].mesh)
|
|
|
- player.model.hots[li_id].examine(player, {
|
|
|
+ transformControls.attach(hot.mesh)
|
|
|
+ hot.examine(player, {
|
|
|
dontOpen: true
|
|
|
})
|
|
|
//add
|
|
|
|
|
|
- info.position = player.model.hots[li_id].position.clone()
|
|
|
- info.quaternion = player.model.hots[li_id].quaternion.clone()
|
|
|
+ info.position = hot.position.clone()
|
|
|
+ info.quaternion = hot.quaternion.clone()
|
|
|
} catch (e) {}
|
|
|
|
|
|
- initStyle(player.model.hots[li_id])
|
|
|
+ initStyle(hot)
|
|
|
|
|
|
$("#isSprite")[0].checked = this.editSpot.isSprite
|
|
|
$("#noAction")[0].checked = this.editSpot.noAction
|
|
@@ -702,13 +719,17 @@ Hotpoint.prototype.editHot = function(target) {
|
|
|
.bind(this))
|
|
|
|
|
|
var imagesHTML = info.images.map(function(image) {
|
|
|
- return '<div><a class=" result success"><span></span><img src="' + image + '"></a></div>'
|
|
|
+ return '<div><a class=" result success" data-type="photo"><span></span><img src="' + image + '" class="bg"></a></div>'
|
|
|
})
|
|
|
|
|
|
var videosHTML = info.video.map(function(ly) {
|
|
|
- var imgDom = (!ly.img || ly.img === "undefined") ? '' : 'success';
|
|
|
- var imgUrl = (!ly.img || ly.img === "undefined") ? playIcon : ly.img;
|
|
|
- return '<div><a class=" result success"><span></span><img class="play-video" videoURL="' + ly.url + '" src="' + imgUrl + '"></a ><span class="upload-thum ' + imgDom + ' result" attr-thum="' + ly.img + '">上传封面<i><input type="file"></i></span></div>'
|
|
|
+ //var imgDom = (!ly.img || ly.img === "undefined") ? '' : 'success';
|
|
|
+ //var imgUrl = (!ly.img || ly.img === "undefined") ? playIcon : ly.img;
|
|
|
+ //return '<div><a class=" result success" data-type="video"><span></span><img class="play-video" videoURL="' + ly.url + '" src="' + imgUrl + '"></a ><span class="upload-thum ' + imgDom + ' result" attr-thum="' + ly.img + '">上传封面<i><input type="file"></i></span></div>'
|
|
|
+ var thumb = (!ly.img || ly.img === "undefined") ? '' : '<img src='+ ly.img +' class="bg"></img>'
|
|
|
+ var thumbResult = (!ly.img || ly.img === "undefined") ? '' : 'success';
|
|
|
+ var dom = '<div><a class=" result success" data-type="video"><span></span>' + thumb + ' <img class="play-video" videoURL="' + ly.url + '" src="' + playIcon + '"></a> <span class="upload-thum ' + thumbResult + ' result" attr-thum="' + ly.img + '">上传封面<i><input type="file" accept="image/*"></i></span></div>'
|
|
|
+ return dom
|
|
|
})
|
|
|
|
|
|
this.hotpointDetail.find(".name > input").val(info.title);
|
|
@@ -757,6 +778,7 @@ Hotpoint.prototype.addmedia = function() {
|
|
|
|
|
|
var img = new Image()
|
|
|
img.src = URL.createObjectURL(file);
|
|
|
+ img.className = 'bg'
|
|
|
return img
|
|
|
}
|
|
|
|
|
@@ -767,13 +789,13 @@ Hotpoint.prototype.addmedia = function() {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- $elayout.append('<span class="upload-thum">上传封面<i><input type="file"></i></span>')
|
|
|
+ $elayout.append('<span class="upload-thum">上传封面<i><input type="file" accept="image/*"></i></span>')
|
|
|
|
|
|
return '<img src="./images/play.png" class="play-video" videoURL="' + URL.createObjectURL(file) + '">'
|
|
|
}
|
|
|
|
|
|
// 视频封面回调
|
|
|
- function thumSuccess(file, $elayout, $seft) {
|
|
|
+ function thumbSuccess(file, $elayout, $seft) {
|
|
|
if (!/image\/\w+/.test(file.type)) {
|
|
|
alert("文件必须为图片!");
|
|
|
return false;
|
|
@@ -781,33 +803,58 @@ Hotpoint.prototype.addmedia = function() {
|
|
|
if (!restrictedSize(file, 2)) {
|
|
|
return false;
|
|
|
}
|
|
|
-
|
|
|
- $seft.closest('div').find('img').attr('src', URL.createObjectURL(file));
|
|
|
+
|
|
|
+ var img = $seft.closest('div').find('img.bg');
|
|
|
+ if(!img[0]){
|
|
|
+ img = $("<img class='bg'></img>");
|
|
|
+ $seft.closest('div').find('a').append(img)
|
|
|
+ }
|
|
|
+ img.attr('src', URL.createObjectURL(file));
|
|
|
+ $seft.closest('span').removeClass("success")
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
// 图片与视频加载
|
|
|
function fileHandle() {
|
|
|
- var $seft = $(this)
|
|
|
- var $layout = $seft.closest("li");
|
|
|
- var type = $seft.parent().attr('data-type');
|
|
|
+ var $seft = $(this) //input
|
|
|
+
|
|
|
var file = this.files[0];
|
|
|
+ var type = this.activeElem ? this.activeElem.attr('data-type') : $seft.parent().attr('data-type');
|
|
|
var $din = $(document.createElement('div'));
|
|
|
- var fnc = type === 'photo' ? imageSuccess : type === 'video' ? videoSuccess : thumSuccess
|
|
|
- var $dom = fnc(file, $din, $seft)
|
|
|
+ var fnc = type === 'photo' ? imageSuccess : type === 'video' ? videoSuccess : thumbSuccess
|
|
|
+ var $dom = fnc(file, $din, $seft)// 封面图thumbSuccess的话在此处理
|
|
|
|
|
|
if (type === 'photo' || type === 'video') {
|
|
|
if (!$dom)
|
|
|
return $seft.val('');
|
|
|
- var $addLayout = $(document.createElement('a'));
|
|
|
- var $addInput = $('<input type="file">')
|
|
|
- var $close = $(document.createElement('span'));
|
|
|
- $addInput[0].files = this.files;
|
|
|
- $addLayout.append($addInput)
|
|
|
- $addLayout.append($close);
|
|
|
- $addLayout.append($dom);
|
|
|
- $addLayout.addClass("result");
|
|
|
- $din.prepend($addLayout);
|
|
|
- $layout.find('.edit-fun-images').append($din);
|
|
|
+
|
|
|
+ if(!this.activeElem){//创建新的item
|
|
|
+ var $layout = $seft.closest("li");
|
|
|
+ var $addLayout = $(document.createElement('a'));
|
|
|
+ $addLayout.attr("data-type", type)
|
|
|
+ var $close = $(document.createElement('span'));
|
|
|
+ $addLayout[0].file = file;
|
|
|
+
|
|
|
+ $addLayout.append($close);
|
|
|
+ $addLayout.append($dom);
|
|
|
+ $addLayout.addClass("result");
|
|
|
+ $din.prepend($addLayout);
|
|
|
+ $layout.find('.edit-fun-images').append($din);
|
|
|
+ }else{//重传
|
|
|
+ if (type === 'photo'){
|
|
|
+ this.activeElem.find("img.bg").remove();
|
|
|
+ }else{
|
|
|
+ this.activeElem.find(".play-video").remove();
|
|
|
+ }
|
|
|
+ this.activeElem.removeClass("success")
|
|
|
+ this.activeElem.append($dom)
|
|
|
+ this.activeElem[0].file = file;
|
|
|
+ this.value = ''
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (searchParent($seft[0], {
|
|
@@ -820,37 +867,77 @@ Hotpoint.prototype.addmedia = function() {
|
|
|
})){
|
|
|
$("#SpotStyle").addClass("hide")
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
- ;// 图片与视频加载
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //用于重传的input
|
|
|
+ var imgInput = $("<input accept='image/*' type='file'></input>")
|
|
|
+ var videoInput = $("<input accept='video/*' type='file'></input>")
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ // 图片与视频加载
|
|
|
$('.upload, .edit-fun-images').on('change', function(ev) {
|
|
|
if (ev.target.tagName.toUpperCase() === 'INPUT') {
|
|
|
ev.target.files.length && fileHandle.call(ev.target)
|
|
|
- }
|
|
|
-
|
|
|
+ }
|
|
|
})
|
|
|
- $('.edit-fun-images').on('click', function(ev) {
|
|
|
- var $tag = $(ev.target)
|
|
|
+ imgInput.on('change', (ev)=>{fileHandle.call(ev.target)})
|
|
|
+ videoInput.on('change', (ev)=>{fileHandle.call(ev.target)})
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ $('.edit-fun-images').on('click', function(ev) {//点击item时
|
|
|
+ var $tag = $(ev.target)
|
|
|
var tagName = ev.target.tagName.toUpperCase()
|
|
|
- if (tagName === 'SPAN') {
|
|
|
- var $resf = $(ev.target)
|
|
|
- if (searchParent($resf[0], {
|
|
|
+
|
|
|
+ if (tagName === 'SPAN') {
|
|
|
+ if (searchParent($tag[0], {
|
|
|
className: 'forShareImg'
|
|
|
})) {
|
|
|
//信息页面的分享图片
|
|
|
$("#shareImgUpload").removeClass('hide')
|
|
|
- }else if(searchParent($resf[0], {
|
|
|
+ }else if(searchParent($tag[0], {
|
|
|
className: 'SpotStyle'
|
|
|
})){
|
|
|
$("#SpotStyle").removeClass('hide')
|
|
|
}
|
|
|
- $resf.parent().parent().remove()
|
|
|
- } else if (tagName === 'IMG' && $tag.hasClass('play-video')) {
|
|
|
+ $tag.parent().parent().remove()
|
|
|
+ }else if (tagName === 'IMG' && $tag.hasClass('play-video')) {
|
|
|
$videoLayout.css('display', 'flex').find('video').attr('src', $tag.attr('videoURL'))[0].play()
|
|
|
+ }else{// 替换
|
|
|
+ var a = searchParent($tag[0], {
|
|
|
+ tagName: 'a'
|
|
|
+ })
|
|
|
+ if(a) {
|
|
|
+ var input
|
|
|
+ if(searchParent($tag[0], {
|
|
|
+ className: 'video'
|
|
|
+ })){
|
|
|
+ input = videoInput
|
|
|
+ }else{
|
|
|
+ input = imgInput
|
|
|
+
|
|
|
+ }
|
|
|
+ input[0].activeElem = $(a)
|
|
|
+ input.click()
|
|
|
+ }
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//========================xzw=======================更改热点样式图
|
|
|
|
|
|
var currStyle;
|
|
@@ -971,15 +1058,11 @@ Hotpoint.prototype.updateNumDisplay = function() {
|
|
|
}
|
|
|
|
|
|
//删除热点
|
|
|
-Hotpoint.prototype.removeHot = function(that, thisScene) {
|
|
|
- var hotId = that.closest("li").attr("data-spid");
|
|
|
-
|
|
|
- player.model.hots[hotId].dispose();
|
|
|
- delete player.model.hots[hotId]
|
|
|
-
|
|
|
- that.closest("li").remove();
|
|
|
- this.updateNumDisplay()
|
|
|
- console.log("删除成功:" + hotId);
|
|
|
+Hotpoint.prototype.removeHot = function(hot, $li ) {
|
|
|
+ hot.dispose();
|
|
|
+ delete player.model.hots[hot.sid]
|
|
|
+ $li.remove();
|
|
|
+ this.updateNumDisplay()
|
|
|
}
|
|
|
//添加热点模型
|
|
|
Hotpoint.prototype.addHot = function(that, Hot, fn) {
|
|
@@ -1076,12 +1159,14 @@ Hotpoint.prototype.addwebPack = function() {
|
|
|
$(this).closest(".webPage").find(".list > div:last").remove();
|
|
|
});
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
// 保存热点信息
|
|
|
Hotpoint.prototype.initSaveHot = function() {
|
|
|
var $layout = $(".edit-loading");
|
|
|
var hotpointDetail = this.hotpointDetail;
|
|
|
var spotList = this.spotList;
|
|
|
-
|
|
|
+ var that = this
|
|
|
hotpointDetail.find(".tail .submit").on('click', function() {
|
|
|
|
|
|
//获取唯一标识
|
|
@@ -1111,46 +1196,49 @@ Hotpoint.prototype.initSaveHot = function() {
|
|
|
let $bgName = hotpointDetail.find('.title');
|
|
|
|
|
|
new Promise(function(resolve, reject) {
|
|
|
- //获取热点图片所有的路径
|
|
|
+ //获取图片路径
|
|
|
upload($images, 'images', resolve)
|
|
|
}
|
|
|
).then(function(imgUrls) {
|
|
|
args.images = imgUrls
|
|
|
- //获取热点视频所有的路径
|
|
|
+ //获取视频路径
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
upload($videos, 'videos', resolve)
|
|
|
- }
|
|
|
- )
|
|
|
+ })
|
|
|
}).then(function(videoUrls) {
|
|
|
args.video = videoUrls
|
|
|
- //获取热点视频图片所有的路径
|
|
|
+ //获取视频封面路径
|
|
|
return new Promise(function(resolve, reject) {
|
|
|
upload($thums, 'images', resolve)
|
|
|
- }
|
|
|
- )
|
|
|
+ })
|
|
|
}).then(function(thums) {
|
|
|
- args.video = args.video.map(function(video, index) {
|
|
|
+ args.video = args.video.map(function(video, index) {//整合视频+封面
|
|
|
return {
|
|
|
url: video,
|
|
|
img: thums[index]
|
|
|
}
|
|
|
})
|
|
|
}).then(function() {
|
|
|
- //获取热点音乐所有的路径
|
|
|
+ //获取音乐路径
|
|
|
//console.log($miusc)
|
|
|
if ($miusc[0].files.length > 0) {
|
|
|
return new Promise(function(resolve) {
|
|
|
upload($miusc, 'miusc', function(res) {
|
|
|
resolve(res[0])
|
|
|
})
|
|
|
- }
|
|
|
- )
|
|
|
+ })
|
|
|
} else {
|
|
|
return $miusc.attr('data-hotBgm')
|
|
|
}
|
|
|
- }).then(function(src) {
|
|
|
- args.backgroundMusic = src
|
|
|
- args.bgName = $bgName[0].innerHTML;
|
|
|
+ }).then(function(src) {
|
|
|
+ if(that.musicBox.hasMusic && !src){
|
|
|
+ args.backgroundMusic = hot.infoAttribute.backgroundMusic
|
|
|
+ args.bgName = hot.infoAttribute.bgName
|
|
|
+ }else{
|
|
|
+ args.backgroundMusic = src
|
|
|
+ args.bgName = $bgName[0].innerHTML;
|
|
|
+ }
|
|
|
+
|
|
|
}).then(function() {
|
|
|
//上传style图片
|
|
|
var a = $.Deferred();
|
|
@@ -1158,19 +1246,6 @@ Hotpoint.prototype.initSaveHot = function() {
|
|
|
if (currStyle == "user" && currentHotStyleImg.length) {
|
|
|
currentHotStyleImg.forEach((img)=>{
|
|
|
if (img.needSave)
|
|
|
- /* uploadImg(img.base64Src, function(rs){
|
|
|
- if(rs.code == 0){
|
|
|
- img.needSave = false;
|
|
|
- img.saveURL = rs.data;
|
|
|
- if(++doneNum >= currentHotStyleImg.length){
|
|
|
- a.resolve();
|
|
|
- }
|
|
|
- }else{
|
|
|
- alert("样式图上传失败");
|
|
|
- a.reject();
|
|
|
- }
|
|
|
- }) */
|
|
|
-
|
|
|
uploadFile(img.file, 'hot/image', function(rs) {
|
|
|
if (rs.code === 0) {
|
|
|
img.needSave = false;
|
|
@@ -1200,14 +1275,12 @@ Hotpoint.prototype.initSaveHot = function() {
|
|
|
if (currStyle == "user") {
|
|
|
currentHotStyleImg.forEach((img)=>{
|
|
|
args.styleImg.push(img.saveURL || img.src)
|
|
|
- }
|
|
|
- )
|
|
|
+ })
|
|
|
hot.styleTex = currentHotStyleImg.slice(0)
|
|
|
} else {
|
|
|
hot.styleTex = [];
|
|
|
}
|
|
|
- hot.changeTex();
|
|
|
- //更新材质
|
|
|
+ hot.changeTex();//更新材质
|
|
|
}
|
|
|
).then(function() {
|
|
|
//获取热点标题、内容、内嵌网页、模型网页。
|
|
@@ -1313,7 +1386,7 @@ var EditMiuse = function() {
|
|
|
EditMiuse.prototype.init = function(data) {
|
|
|
if (!data.backgroundMusic)
|
|
|
return;
|
|
|
- this.musicBox.show(this.mediaUpload, "backgound", data.backgroundMusic);
|
|
|
+ this.musicBox.show(this.mediaUpload, data.bgName || "backgound", data.backgroundMusic);
|
|
|
|
|
|
}
|
|
|
|
|
@@ -1566,12 +1639,14 @@ EditGuide.prototype.init = function(data, data2) {
|
|
|
|
|
|
function musicPlayBoxBind($dom, addCallback, delCallback){
|
|
|
var musicBox = {
|
|
|
+ hasMusic:false,
|
|
|
show: function(mediaDom, name, url){
|
|
|
mediaDom = mediaDom || $dom
|
|
|
mediaDom.find(".innerBtn").text("替换");
|
|
|
mediaDom.find(".playBox").removeClass("hide");
|
|
|
mediaDom.find(".title").text(name);
|
|
|
mediaDom.find('#query-bgm').attr('href', url);
|
|
|
+ musicBox.hasMusic = true
|
|
|
},
|
|
|
addMusic : function(e) {
|
|
|
if(!e.target.files.length) return;
|
|
@@ -1597,7 +1672,7 @@ function musicPlayBoxBind($dom, addCallback, delCallback){
|
|
|
mediaDom.find(".playBox").addClass("hide");
|
|
|
mediaDom.find(".innerBtn").text("上传");
|
|
|
mediaDom.find("input").val("")//.removeAttr("data-hotbgm");
|
|
|
-
|
|
|
+ musicBox.hasMusic = false
|
|
|
delCallback && delCallback()
|
|
|
|
|
|
|
|
@@ -1745,6 +1820,18 @@ EditGuide.prototype.editItem = function(li) {
|
|
|
$('#tourItemEdit').removeClass('atRight');
|
|
|
$('#tourItemEdit .tourName input').val( $(li).find('.guide-name').text() );
|
|
|
|
|
|
+ var metadata = JSON.parse(li.tourData.metadata);
|
|
|
+ if(metadata.scan_id != 'outside'){
|
|
|
+ var pano = player.model.panos.index[metadata.scan_id]
|
|
|
+ if(pano){
|
|
|
+ var q = new THREE.Quaternion().copy(metadata.camera_quaternion);
|
|
|
+ var lookAtPoint = new THREE.Vector3(0,0,-1).applyQuaternion(q).add(pano.position);
|
|
|
+ player.flyToPano({
|
|
|
+ pano: pano,
|
|
|
+ lookAtPoint: lookAtPoint
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if(!this.editingFolderLi){//在外的item, 可以上传音乐
|
|
|
$('#tourItemEdit .mediaUpload').removeClass('hide')
|
|
@@ -2142,22 +2229,21 @@ function _css(el, prop, val) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function upload($files, type, cb) {
|
|
|
+function upload($files, type, cb) {//保存系列文件
|
|
|
var length = $files.length
|
|
|
var rcount = 0
|
|
|
var result = []
|
|
|
|
|
|
Array.from($files).forEach(function(dFile, index) {
|
|
|
- //a 标签的success 是用来判断是否是已经上传过的文件
|
|
|
- //attr-thum 属性是视频的图片
|
|
|
- //videoURL 是判断是否有视频
|
|
|
+
|
|
|
+
|
|
|
var $file = $(dFile)
|
|
|
- var $image = $file.find('img')
|
|
|
+ var $image = type == 'videos' ? $file.find('img.play-video') : $file.find('img')
|
|
|
|
|
|
- if ($file.hasClass('success')) {
|
|
|
- if ($file.attr('attr-thum')) {
|
|
|
+ if ($file.hasClass('success')) {//已经上传过,有链接
|
|
|
+ if ($file.attr('attr-thum')) {//视频的封面
|
|
|
result[index] = $file.attr('attr-thum')
|
|
|
- } else if ($image.attr('videoURL')) {
|
|
|
+ } else if ($image.attr('videoURL')) {//视频
|
|
|
result[index] = $image.attr('videoURL')
|
|
|
} else {
|
|
|
result[index] = $image.attr('src')
|
|
@@ -2168,11 +2254,12 @@ function upload($files, type, cb) {
|
|
|
case "input":
|
|
|
dFile = $file[0]
|
|
|
break;
|
|
|
- case "span":
|
|
|
+ case "span"://封面
|
|
|
dFile = $file.find('input')[0];
|
|
|
break;
|
|
|
- case "a":
|
|
|
- dFile = $file.find('input')[0];
|
|
|
+ case "a"://重传的图or视频
|
|
|
+ dFile = {files:[$file[0].file]}
|
|
|
+ //dFile = $file.find('input')[0];
|
|
|
break;
|
|
|
default:
|
|
|
dFile = $file.closest("li").find('.upload input')[0];
|
|
@@ -2583,7 +2670,12 @@ var SlideBar = function(o) {
|
|
|
return;
|
|
|
scope.setValueFromOutside(v);
|
|
|
});
|
|
|
-
|
|
|
+ window.addEventListener("resize",()=>{
|
|
|
+ if(this.line[0].clientWidth){
|
|
|
+ this.getOffset()
|
|
|
+ this.moveKnot();
|
|
|
+ }
|
|
|
+ })
|
|
|
}
|
|
|
|
|
|
SlideBar.prototype.dealInterval = function() {
|
|
@@ -2956,13 +3048,22 @@ var EditOverlay = {
|
|
|
}
|
|
|
)
|
|
|
|
|
|
-
|
|
|
+
|
|
|
+
|
|
|
player.overlayGroup.children.forEach((overlay)=>{
|
|
|
- if(overlay.plane.material.map.image)this.getOverlayInfo(overlay)
|
|
|
- else overlay._loadDone = ()=>{this.getOverlayInfo(overlay)}
|
|
|
+ if(!overlay.plane.material.map || !overlay.plane.material.map.image){
|
|
|
+ overlay._loadDones = [()=>{this.getOverlayInfo(overlay)}]
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ this.getOverlayInfo(overlay)
|
|
|
+ }
|
|
|
+
|
|
|
this.addToList(overlay)
|
|
|
}
|
|
|
)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
enter: function() {
|
|
|
this.editing = true;
|
|
@@ -2999,10 +3100,12 @@ var EditOverlay = {
|
|
|
},
|
|
|
|
|
|
addPlane: function(o) {
|
|
|
+ if(!o.intersect)return;
|
|
|
var pos = o.intersect.point;
|
|
|
var overlay = new Overlay({
|
|
|
sid: new Date().getTime() + ""
|
|
|
})
|
|
|
+ overlay.hasRequestLoad = true
|
|
|
overlay.position.copy(pos);
|
|
|
if (player.getMouseDirection().angleTo(o.intersect.face.normal) < Math.PI / 2) {
|
|
|
overlay.lookAt(o.intersect.face.normal.clone().negate().add(pos));
|
|
@@ -3046,8 +3149,19 @@ var EditOverlay = {
|
|
|
},
|
|
|
updateOverlayPanel: function(overlay) {
|
|
|
this.editPlane = overlay;
|
|
|
+ overlay.requestDownload()
|
|
|
+
|
|
|
+ if(overlay._loadDones){
|
|
|
+ $('.waiting').addClass('showloading');
|
|
|
+ overlay._loadDones.push(()=>{
|
|
|
+ $('.waiting').removeClass('showloading');
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var plane = overlay.plane
|
|
|
- var src = plane.material.map && plane.material.map.image.src;
|
|
|
+ var src = plane.material.map && (plane.material.map.image ? plane.material.map.image.src : overlay.fileSrc );
|
|
|
$('#overlayUpload .preview video').remove();
|
|
|
|
|
|
overlay.overlayType && this.switchEditType(overlay.overlayType)
|
|
@@ -3091,7 +3205,7 @@ var EditOverlay = {
|
|
|
, 201)
|
|
|
|
|
|
|
|
|
- this.updatePano(player.currentPano)
|
|
|
+ player.currentPano && this.updatePano(player.currentPano)
|
|
|
},
|
|
|
|
|
|
//----------------------------
|
|
@@ -3206,7 +3320,7 @@ var EditOverlay = {
|
|
|
|
|
|
this.updateScale()
|
|
|
|
|
|
- //this.updateOverlayPanel(this.editPlane)
|
|
|
+ this.updateOverlayPanel(this.editPlane)
|
|
|
},
|
|
|
|
|
|
getOverlayInfo: function(overlay) {
|
|
@@ -3321,7 +3435,7 @@ var EditOverlay = {
|
|
|
var overlay = this.editPlane;
|
|
|
|
|
|
if (!overlay.isNew) {
|
|
|
- if (confirm("确定删除该视频?")) {
|
|
|
+ if (confirm(overlay.overlayType== "photo" ? "确定删除该图片?" : "确定删除该视频?")) {
|
|
|
overlay.needDelete = true;
|
|
|
$("#overlayProp a.close").click()
|
|
|
//this.closeOverlayPanel()
|
|
@@ -3400,9 +3514,9 @@ var VisiSet = {
|
|
|
|
|
|
},
|
|
|
beginSetPanoVisible: function() {
|
|
|
- if (this.setPanoVisible)
|
|
|
- return;
|
|
|
$(".toolLeft").removeClass("unable")
|
|
|
+ if (this.setPanoVisible)
|
|
|
+ return;
|
|
|
this.setPanoVisible = true;
|
|
|
this.panoVTemp = {};
|
|
|
|
|
@@ -3413,8 +3527,18 @@ var VisiSet = {
|
|
|
|
|
|
//objects.tagManager.hideAllTags();
|
|
|
|
|
|
+ this.setDisplay(true)
|
|
|
+
|
|
|
+
|
|
|
this.updateFootIconSize()
|
|
|
//更新一下大小,尤其是上次换了中心点然后退出又进入但是镜头没有变化的话
|
|
|
+
|
|
|
+
|
|
|
+ for(let i in player.model.hots){
|
|
|
+ player.model.hots[i].visi_ = player.model.hots[i].mesh.visible;
|
|
|
+ player.model.hots[i].mesh.visible = false
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
|
|
|
SetOnePanoVisible: function(pano) {
|
|
@@ -3545,10 +3669,17 @@ var VisiSet = {
|
|
|
player.flyoutType = null
|
|
|
this.$confirmSnap.addClass("hide")
|
|
|
permitTranMode(true)
|
|
|
+ this.setDisplay(false)
|
|
|
+
|
|
|
+ for(let i in player.model.hots){
|
|
|
+ player.model.hots[i].mesh.visible = player.model.hots[i].visi_
|
|
|
+ }
|
|
|
+
|
|
|
},
|
|
|
|
|
|
recoverAllState2: function() {
|
|
|
//为了热点可视恢复成pano全部可见
|
|
|
+ if(!this.footIcons)return;
|
|
|
for (var i = 0; i < this.footIcons.length; i++) {
|
|
|
this.footIcons[i].material.uniforms.opacity.value = 1;
|
|
|
this.footIcons[i].material.uniforms.map.value = footTex1;
|
|
@@ -3722,34 +3853,13 @@ var VisiSet = {
|
|
|
setDisplay: function(state) {
|
|
|
var panos = player.model.panos;
|
|
|
if (state) {
|
|
|
- player.model.panos.forEach((pano)=>{
|
|
|
- if (pano.hasVideo) {
|
|
|
- pano.marker.visible = false;
|
|
|
- pano.flagSpot.disc.visible = false;
|
|
|
- pano.flagSpot.markGroup.hide();
|
|
|
- }
|
|
|
- }
|
|
|
- )
|
|
|
- player.model.cadFloorPlane.changeCadVisible(false)
|
|
|
+
|
|
|
} else {
|
|
|
- player.model.panos.forEach((pano)=>{
|
|
|
- if (pano.hasVideo) {
|
|
|
- pano.marker.visible = true;
|
|
|
- pano.flagSpot.disc.visible = true;
|
|
|
- pano.flagSpot.markGroup.show();
|
|
|
- }
|
|
|
- }
|
|
|
- )
|
|
|
- player.model.cadFloorPlane.changeCadVisible(null, {
|
|
|
- autoJudge: true
|
|
|
- })
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
- player.defaultRoomLabels.forEach(function(label) {
|
|
|
- label.update()
|
|
|
- })
|
|
|
+
|
|
|
player.path.currentPanoMarker.mesh.visible = !state;
|
|
|
- objects.overlayManager.group.visible = !state;
|
|
|
+ player.overlayGroup.visible = !state;
|
|
|
player.reticule.visible = !state;
|
|
|
|
|
|
},
|
|
@@ -4013,7 +4123,7 @@ var VisiSet = {
|
|
|
player.model.hots[i].isSprite = true;
|
|
|
player.model.hots[i].mesh.material.depthTest = false;
|
|
|
}
|
|
|
-
|
|
|
+ this.setDisplay(true)
|
|
|
this.updateFootIconSize()
|
|
|
//更新一下大小,尤其是上次换了中心点然后退出又进入但是镜头没有变化的话
|
|
|
},
|
|
@@ -4082,7 +4192,7 @@ var VisiSet = {
|
|
|
this.pauseSetTagVisible();
|
|
|
this.setTagVisible = false;
|
|
|
|
|
|
- //this.setDisplay(false)
|
|
|
+ this.setDisplay(false)
|
|
|
this.$confirmSnap.addClass("hide")
|
|
|
permitTranMode(true)
|
|
|
/* for (var r in objects.tagManager.tags) {
|
|
@@ -4244,7 +4354,7 @@ function searchParent(searchArea, o, maxTimes) {
|
|
|
return dom
|
|
|
else if (o.className && dom.classList && dom.classList.contains(o.className))
|
|
|
return dom
|
|
|
- else if (o.tagName && o.tagName == dom.tagName)
|
|
|
+ else if (o.tagName && dom.tagName && o.tagName.toUpperCase() == dom.tagName.toUpperCase())
|
|
|
return dom
|
|
|
}
|
|
|
var find;
|