///////////////////////////////////////////////////////////////////////////
// Copyright © 2019 zhongsong. All Rights Reserved.
// 模块描述:显示坐标
///////////////////////////////////////////////////////////////////////////
define([
'dojo/_base/declare',
'dojo/_base/lang',
'dojo/_base/array',
'dojo/_base/html',
'dojo/topic',
'jimu/BaseWidget',
'jimu/utils',
'jimu/css!libs/zTree_v3/css/zTreeStyle/zTreeStyle.css',
'libs/zTree_v3/js/jquery.ztree.all'
],
function (declare,
lang,
array,
html,
topic,
BaseWidget,
aspect,
string,
utils
) {
return declare([BaseWidget], {
baseClass: 'jimu-widget-LeftNavigationBar',
name: 'LeftNavigationBar',
layers: {},
dataAllArray: [],
startup: function () {
// 暴露在外的接口
// this.begin(this.data);
var that = this;
this.getData();
$('.left-navigation-bar-but').click(() => {
this.changeImg = !this.changeImg;
if (this.changeImg) {
$('.l-n-b-b-img').attr("src", "../../images/addL/xzuo.png"); //打开
$('.jimu-widget-LeftNavigationBar').css({
'left': '0px'
});
$('.jimu-widget-instructions').css({
'left': '260px'
});
} else {
$('.l-n-b-b-img').attr("src", "../../images/addL/xyou.png"); //关闭
$('.jimu-widget-LeftNavigationBar').css({
'left': '-250px'
});
$('.jimu-widget-instructions').css({
'left': '10px'
});
}
})
$('.jimu-widget-instructions').css({
'left': '260px'
});
$('#left-navigation-bar-main-search').click(() => { //搜索事件
leftSearchItemLayer()
})
$(".jimu-widget-LeftNavigationBar input[type='search']").bind('input propertychange', function () {
//做一些事情
var val = $(this).val();
if (val == '') {
that.changeData(that.dataAllArray, val); //重写数据
layui.use('tree', function () {
layui.tree.reload('demoId1', {
data: that.data
});
var jqDom = $("#left-tree-list > .layui-tree > div");
for (var i = 0; i < jqDom.length; i++) {
if ($(jqDom[i]).text().indexOf("三维倾斜数据") != -1) {
$(jqDom[i]).find('.layui-btn-group').remove()
}
var textList = $(jqDom[i]).find('.layui-tree-txt');
for (var j = 0; j < textList.length; j++) {
$(textList[j]).attr('title', $(textList[j]).text())
}
}
})
}
})
$(".jimu-widget-LeftNavigationBar input[type='search']").keyup(function (e) {
if (e.keyCode == 13) {
leftSearchItemLayer()
}
})
$(".jimu-widget-LeftNavigationBar .tree-layer-opcity .close").click(function () {
$(".jimu-widget-LeftNavigationBar .tree-layer-opcity").stop().hide();
})
function leftSearchItemLayer() {
var val = $('#left-navigation-bar-main-input').val();
if (val != '') {
var clearOur = () => {
let dom = $(`[data-id]`);
dom.removeClass('layui-tree-spread');
let domDiv = dom.find('.layui-tree-pack');
domDiv.css({
'display': 'none'
})
},
a, useit = (d) => {
for (var k in d) {
if (d[k].who == 'father') {
that.father = d[k].id;
}
if (d[k].title.indexOf(val) != -1) { //选中id
a = '' + d[k].id;
// var b = a.split('');
// for (var i in b) {
let id = that.father; //选中项的所有父级id
let dom = $(`[data-id='${id}']`);
dom.addClass('layui-tree-spread');
let domDiv = dom.find('.layui-tree-pack').eq(0);
domDiv.css({
'display': 'block'
})
// }
}
if (d[k].children) {
useit(d[k].children);
}
}
};
that.changeData(that.dataAllArray, val); //重写数据
layui.use('tree', function () {
layui.tree.reload('demoId1', {
data: that.data
});
var jqDom = $("#left-tree-list > .layui-tree > div");
for (var i = 0; i < jqDom.length; i++) {
if ($(jqDom[i]).text().indexOf("三维倾斜数据") != -1) {
$(jqDom[i]).find('.layui-btn-group').remove()
}
var textList = $(jqDom[i]).find('.layui-tree-txt');
for (var j = 0; j < textList.length; j++) {
$(textList[j]).attr('title', $(textList[j]).text())
}
}
clearOur();
useit(that.data);
})
}
}
},
closeToolBox: function (item) {},
onOpen: function () {
//面板打开的时候触发 (when open this panel trigger)
},
onClose: function () {
//面板关闭的时候触发 (when this panel is closed trigger)
},
onMinimize: function () {
this.resize();
},
onMaximize: function () {
this.resize();
},
resize: function () {
},
getData: function () {
var that = this;
var url = 'http://171.34.76.171:8880/pyh-wetResource/GeoData/queryGeoDataTree',
that = this;
axios.get(url, {
headers: {
"token": 'Bearer eyJhbGciOiJIUzUxMiJ9.eyJpc3MiOiJlY2hpc2FuIiwic3ViIjoiYWRtaW4iLCJpYXQiOjE2MjI4Nzc0MTIsImV4cCI6MTYyNTQ2OTQxMn0.f2GhYYINfYgSbyKTqqGluyU3rdy_TT8mf15iLILS1l2EUSye_h9O6CSUVWpLYMrdrjzqDWwrbROxfhy-8ly0uA'
}
}).then((res) => {
if (res.data.code == '200') {
that.dataAllArray = res.data.data;
that.changeData(res.data.data, ''); //重写数据
that.begin(this.data);
}
})
},
changeData: function (val, type) { //重写数据
var that = this;
var data = [],
i = 1,
inits = (d, childData) => {
var b = childData || [];
for (var k in d) {
let a = {
title: d[k].name,
// id: d[k].id,
// field: String(d[k].id),
id: i,
field: String(i),
src: d[k].serviceUrl,
id: d[k].id,
serviceName: d[k].serviceName,
alpha: 1,
checked: d[k].menuStatus
}
if (d[k].serviceUrl.indexOf('.openrealspace') != -1) {
a.model = true
}
if (d[k].name == '三维倾斜数据') {
a.model = true
}
if (a.model) {
if (that[a.id]) {
Cesium.when(that[a.id], function (layer) {
that.map.scene.layers.remove(layer[0].name)
})
}
} else {
if (that[a.id]) {
that.map.imageryLayers.remove(that[a.id]);
}
}
b.push(a);
i++;
if (d[k].children.length != 0) {
b[k].children = [];
b[k].who = 'father';
inits(d[k].children, b[k].children)
}
}
};
inits(val, data);
// var i = 0,
// ccinit = (a) => {
// i++;
// for (let k in a) {
// if (a[k].children) {
// a[k].who = i;
// ccinit(a[k].children)
// }
// }
// };
// ccinit(this.data);
if (type != '') {
for (var i = 0; i < data.length; i++) {
if (data[i].children && data[i].children.length > 0) {
deWeight()
function deWeight() {
for (var j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].title.indexOf(type) == -1) {
data[i].children.splice(j, 1);
deWeight();
break;
}
}
}
}
}
deParentWeight()
function deParentWeight() {
for (var i = 0; i < data.length; i++) {
if (data[i].children && data[i].children.length == 0) {
data.splice(i, 1)
deParentWeight();
break;
}
if (data[i].children == undefined && data[i].title.indexOf(type) == -1) {
data.splice(i, 1)
deParentWeight();
break;
}
}
}
}
var keyId = this.getUrlKeyId("serviceName");
if (keyId && keyId != "") {
for (var i = 0; i < data.length; i++) {
if (data[i].title == keyId) {
data[i].checked = true
}
for (var j = 0; j < data[i].children.length; j++) {
if (data[i].children[j].title == keyId) {
data[i].children[j].checked = true
}
}
}
}
this.data = data;
},
begin: function (data) {
var that = this;
var a = null;
layui.use(function () {
var tree = layui.tree,
layer = layui.layer,
util = layui.util,
$ = layui.$;
var slider = layui.slider;
tree.render({
elem: '#left-tree-list' //默认是点击节点可进行收缩
,
data: data,
id: 'demoId1',
showCheckbox: true, //是否显示复选框
customOperate: true,
click: function (obj) {
var data = obj.data; //获取当前点击的节点数据
// layer.msg('状态:' + obj.state + '
节点数据:' + JSON.stringify(data));
// 树点击三角形样式修改
// var ot = $('.layui-tree-iconArrow');
// ot.removeClass("left-navigation-bar-main-down");
// var jt = $(`[data-id='${data.id}']`).find('.layui-tree-iconArrow').eq(0);
// jt.addClass('left-navigation-bar-main-down');
// 树点击样式修改
// var ot = $('.layui-tree-entry');
// ot.removeClass("left-navigation-bar-main-current");
// var jh = $(`[data-id='${data.id}']`).find('.layui-tree-entry').eq(0);
// jh.addClass('left-navigation-bar-main-current');
},
showLine: false, //是否开启连接线
oncheck: function (obj) {
// console.log(obj.data.id, '--', obj.checked, obj); //得到当前点击的节点数据
// console.log(obj.checked); //得到当前节点的展开状态:open、close、normal
// console.log(obj.elem); //得到当前节点元素
if (obj.data.children && obj.data.children.length > 0) {
// 点击的父
if (obj.checked == true) {
if (obj.data.model) {
obj.data.children.forEach(item => {
var host = that.returnStr(item.src).host;
var scene = that.map.scene;
var partOfUrl = that.returnStr(item.src).partOfUrl;
//添加S3M图层服务
that[item.id] = scene.open(host + partOfUrl);
//定位到场景
Cesium.loadJson(host + partOfUrl + '/scenes.json').then(function (scenes) {
// var sname = scenes[0].name;
// Cesium.loadJson(host + partOfUrl + '/scenes/' + sname + '.json').then(function (jsonData) {
// var cameraPosition = jsonData.camera;
// var tilt = Cesium.Math.toRadians(cameraPosition.tilt - 90);
// Cesium.when(promise, function (layer) {
// //设置相机位置、视角,便于观察场景
// scene.camera.setView({
// destination: new Cesium.Cartesian3.fromDegrees(cameraPosition.longitude, cameraPosition.latitude, cameraPosition.altitude),
// orientation: {
// heading: cameraPosition.heading,
// pitch: tilt,
// roll: 0
// }
// });
// if (!scene.pickPositionSupported) {
// alert('不支持深度纹理,无法拾取位置!');
// }
// }, function (e) {
// if (widget._showRenderLoopErrors) {
// var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
// widget.showErrorPanel(title, undefined, e);
// }
// });
// });
});
});
} else {
obj.data.children.forEach(item => {
$.ajax({
url: item.src + '/maps.json',
type: 'get',
dataType: 'JSON',
success: function (res) {
that[item.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
url: res[0].path,
}));
that[item.id].alpha = item.alpha
}
})
});
}
} else {
if (obj.data.model) {
obj.data.children.forEach(item => {
Cesium.when(that[item.id], function (layer) {
that.map.scene.layers.remove(layer[0].name)
})
});
} else {
obj.data.children.forEach(item => {
if (that[item.id]) that.map.imageryLayers.remove(that[item.id]);
});
}
}
} else {
// 点击的子
if (obj.checked == true) {
if (obj.data.model) {
that.map.scene.globe.depthTestAgainstTerrain = false;
var host = that.returnStr(obj.data.src).host;
var scene = that.map.scene;
var partOfUrl = that.returnStr(obj.data.src).partOfUrl;
//添加S3M图层服务
that[obj.data.id] = scene.open(host + partOfUrl);
//定位到场景
Cesium.loadJson(host + partOfUrl + '/scenes.json').then(function (scenes) {
// var sname = scenes[0].name;
// Cesium.loadJson(host + partOfUrl + '/scenes/' + sname + '.json').then(function (jsonData) {
// var cameraPosition = jsonData.camera;
// var tilt = Cesium.Math.toRadians(cameraPosition.tilt - 90);
// Cesium.when(promise, function (layer) {
// //设置相机位置、视角,便于观察场景
// scene.camera.setView({
// destination: new Cesium.Cartesian3.fromDegrees(cameraPosition.longitude, cameraPosition.latitude, cameraPosition.altitude),
// orientation: {
// heading: cameraPosition.heading,
// pitch: tilt,
// roll: 0
// }
// });
// if (!scene.pickPositionSupported) {
// alert('不支持深度纹理,无法拾取位置!');
// }
// }, function (e) {
// if (widget._showRenderLoopErrors) {
// var title = '加载SCP失败,请检查网络连接状态或者url地址是否正确?';
// widget.showErrorPanel(title, undefined, e);
// }
// });
// });
});
} else {
$.ajax({
url: obj.data.src + '/maps.json',
type: 'get',
dataType: 'JSON',
success: function (res) {
that[obj.data.id] = that.map.imageryLayers.addImageryProvider(new Cesium.SuperMapImageryProvider({
url: res[0].path,
}));
that[obj.data.id].alpha = obj.data.alpha
}
})
}
} else {
if (obj.data.model) {
Cesium.when(that[obj.data.id], function (layer) {
that.map.scene.layers.remove(layer[0].name)
})
} else {
that.map.imageryLayers.remove(that[obj.data.id]);
}
}
}
},
edit: ['add'],
operate: function (obj) {
var type = obj.type; //得到操作类型: add、edit、 del
var data = obj.data; //得到当前节点的数据
var elem = obj.elem; //得到当前节点元素var deptId = data.id;//得到节点索引var parentId = data.parentId;l/父节点
var depId = data.id;
var parentId = data.parentId;
if (type == 'add') {
$(".jimu-widget-LeftNavigationBar .tree-layer-opcity ul").empty();
// console.log(type, data, elem, depId, parentId)
if (data.children) {
data.children.forEach(item => {
var liC = `