Lin_Ye_Fang_Huo/public/widgets/bookmark/view.js

199 lines
5.0 KiB
JavaScript
Raw Normal View History

2023-07-18 09:04:15 +08:00
"use script"; //开发环境建议开启严格模式
2023-07-08 15:37:34 +08:00
//对应widget.js中MyWidget实例化后的对象
2023-07-18 09:04:15 +08:00
var thisWidget;
var $table;
2023-07-08 15:37:34 +08:00
function getHeight() {
2023-07-18 09:04:15 +08:00
return $(window).height() - 50;
2023-07-08 15:37:34 +08:00
}
//当前页面业务
function initWidgetView(_thisWidget) {
2023-07-18 09:04:15 +08:00
thisWidget = _thisWidget;
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
$("#btn_bookmark_Add").bind("click", function () {
saveBookmark();
});
2023-07-08 15:37:34 +08:00
2023-07-18 09:04:15 +08:00
$table = $("#table");
2023-07-08 15:37:34 +08:00
$table.bootstrapTable({
height: getHeight(),
singleSelect: true, //单选
pagination: false,
pageSize: 6,
2023-07-18 09:04:15 +08:00
iconsPrefix: "fa",
2023-07-08 15:37:34 +08:00
showHeader: false,
columns: [
{
2023-07-18 09:04:15 +08:00
title: "",
2023-07-08 15:37:34 +08:00
sortable: true,
editable: false,
2023-07-18 09:04:15 +08:00
align: "center",
2023-07-08 15:37:34 +08:00
events: {
2023-07-18 09:04:15 +08:00
"click .remove": function (e, value, row, index) {
delBookMark(row.id);
2023-07-08 15:37:34 +08:00
},
},
formatter: function (value, row, index) {
return `<div class="bookmarkitem" title="${row.name}">
<img src="${row.icon}" style="width:100%;" />
<div class="title">
${row.name}
<a class="remove" href="javascript:void(0)" title="删除"><i class="fa fa-trash"></i></a>
</div>
2023-07-18 09:04:15 +08:00
</div>`;
2023-07-08 15:37:34 +08:00
},
},
],
onClickRow: function (rowData, $element, field) {
2023-07-18 09:04:15 +08:00
var location = rowData.data;
thisWidget.showExtent(location);
2023-07-08 15:37:34 +08:00
},
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
$(window).resize(function () {
2023-07-18 09:04:15 +08:00
$table.bootstrapTable("refreshOptions", {
2023-07-08 15:37:34 +08:00
height: getHeight(),
2023-07-18 09:04:15 +08:00
});
});
2023-07-08 15:37:34 +08:00
//读取localStorage
2023-07-18 09:04:15 +08:00
initBookMarkList();
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var storageName = "mars3d_bookmark";
var arrBookmark = [];
2023-07-08 15:37:34 +08:00
function initBookMarkList() {
if (window.parent.hasServer) {
//后台接口
parent.sendAjax({
2023-07-18 09:04:15 +08:00
url: "v1/map/bookmark/list",
type: "get",
dataType: "json",
contentType: "application/x-www-form-urlencoded",
2023-07-08 15:37:34 +08:00
success: function (result) {
2023-07-18 09:04:15 +08:00
var arr = [];
2023-07-08 15:37:34 +08:00
for (var i = 0; i < result.length; i++) {
2023-07-18 09:04:15 +08:00
var itme = result[i];
2023-07-08 15:37:34 +08:00
if (!itme) {
2023-07-18 09:04:15 +08:00
continue;
2023-07-08 15:37:34 +08:00
}
arr.push({
name: itme.name,
data: JSON.parse(itme.center),
id: itme.id,
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
arrBookmark = arr;
showListData(arrBookmark);
2023-07-08 15:37:34 +08:00
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
2023-07-18 09:04:15 +08:00
alert("服务出错:" + XMLHttpRequest.statusText + ",代码 " + XMLHttpRequest.status);
2023-07-08 15:37:34 +08:00
},
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
} else {
2023-07-18 09:04:15 +08:00
var lastcookie = haoutil.storage.get(storageName); //读取localStorage值
2023-07-08 15:37:34 +08:00
if (lastcookie != null) {
2023-07-18 09:04:15 +08:00
arrBookmark = eval(lastcookie);
2023-07-08 15:37:34 +08:00
}
if (arrBookmark == null || arrBookmark.length == 0) {
2023-07-18 09:04:15 +08:00
arrBookmark = [];
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
showListData(arrBookmark);
2023-07-08 15:37:34 +08:00
}
}
//添加
function saveBookmark() {
if (arrBookmark == null) {
2023-07-18 09:04:15 +08:00
arrBookmark = [];
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
var name = $.trim($("#txt_bookmark_name").val()).replace("'", "").replace('"', "");
2023-07-08 15:37:34 +08:00
if (name.length == 0) {
2023-07-18 09:04:15 +08:00
toastr.warning("请输入名称");
return;
2023-07-08 15:37:34 +08:00
}
for (var index = arrBookmark.length - 1; index >= 0; index--) {
if (arrBookmark[index].name == name) {
2023-07-18 09:04:15 +08:00
toastr.info("该名称已存在,请更换!");
return;
2023-07-08 15:37:34 +08:00
}
}
thisWidget.getThisExtent(function (bounds, base64) {
2023-07-18 09:04:15 +08:00
haoutil.array.insert(
arrBookmark,
2023-07-08 15:37:34 +08:00
{
name: name,
data: bounds,
icon: base64,
id: new Date().getTime(),
},
0
2023-07-18 09:04:15 +08:00
);
2023-07-08 15:37:34 +08:00
if (window.parent.hasServer) {
//后台保存接口
parent.sendAjax({
2023-07-18 09:04:15 +08:00
url: "v1/map/bookmark/add",
2023-07-08 15:37:34 +08:00
data: JSON.stringify({
name: name, //名称
center: JSON.stringify(bounds), //中心
}),
2023-07-18 09:04:15 +08:00
type: "post",
dataType: "json",
contentType: "application/json",
2023-07-08 15:37:34 +08:00
success: function (result) {
2023-07-18 09:04:15 +08:00
$("#txt_bookmark_name").val("");
initBookMarkList();
2023-07-08 15:37:34 +08:00
},
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
} else {
//本地存储
2023-07-18 09:04:15 +08:00
var lastcookie = JSON.stringify(arrBookmark);
haoutil.storage.add(storageName, lastcookie);
$("#txt_bookmark_name").val("");
initBookMarkList();
2023-07-08 15:37:34 +08:00
}
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
}
function delBookMark(id) {
if (window.parent.hasServer) {
//后台 删除
parent.sendAjax({
2023-07-18 09:04:15 +08:00
url: "v1/map/bookmark/" + id,
type: "delete",
dataType: "json",
contentType: "application/json",
2023-07-08 15:37:34 +08:00
success: function (result) {
for (var index = arrBookmark.length - 1; index >= 0; index--) {
if (arrBookmark[index].id == id) {
2023-07-18 09:04:15 +08:00
arrBookmark.splice(index, 1);
showListData(arrBookmark);
break;
2023-07-08 15:37:34 +08:00
}
}
},
2023-07-18 09:04:15 +08:00
});
2023-07-08 15:37:34 +08:00
} else {
for (var index = arrBookmark.length - 1; index >= 0; index--) {
if (arrBookmark[index].id == id) {
2023-07-18 09:04:15 +08:00
arrBookmark.splice(index, 1);
var lastcookie = JSON.stringify(arrBookmark);
haoutil.storage.add(storageName, lastcookie);
showListData(arrBookmark);
break;
2023-07-08 15:37:34 +08:00
}
}
}
}
function showListData(arr) {
2023-07-18 09:04:15 +08:00
var positon = $table.bootstrapTable("getScrollPosition");
$table.bootstrapTable("load", arr);
$table.bootstrapTable("scrollTo", positon);
2023-07-08 15:37:34 +08:00
}