Skip to content

Commit 7e06bba

Browse files
author
杜美瑶
committed
上传数据发布example示例 --reviewed by xujm
1 parent 52b7d93 commit 7e06bba

File tree

4 files changed

+748
-0
lines changed

4 files changed

+748
-0
lines changed

examples/leaflet/config.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,6 +526,17 @@ var exampleConfig = {
526526
thumbnail: "l_iPortalRegisterData.png",
527527
fileName: "iPortalRegisterData"
528528
}]
529+
},
530+
"ip_publishdata": {
531+
name: "发布数据",
532+
name_en: "Publish Data",
533+
content: [{
534+
name: "发布数据",
535+
name_en: "Publish Data",
536+
version: "10.0.1",
537+
thumbnail: "l_iPortalPublishData.png",
538+
fileName: "iPortalPublishData"
539+
}]
529540
}
530541
}
531542
},
Lines changed: 363 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,363 @@
1+
<!--********************************************************************
2+
* Copyright© 2000 - 2020 SuperMap Software Co.Ltd. All rights reserved.
3+
*********************************************************************-->
4+
<!DOCTYPE html>
5+
<html lang="en">
6+
<head>
7+
<meta charset="UTF-8">
8+
<title data-i18n="resources.text_publish_data"></title>
9+
<style>
10+
.gallery-item {
11+
margin-bottom: 30px;
12+
}
13+
.gallery-item-border {
14+
border: 1px solid #dadada;
15+
-webkit-box-shadow: 0px 2px 3px #dcdcdc;
16+
box-shadow: 0px 2px 3px #dcdcdc;
17+
background: white;
18+
}
19+
.thumbnail > img, .thumbnail a > img {
20+
margin-right: auto;
21+
margin-left: auto;
22+
}
23+
.gallery-item-img {
24+
height: 170px !important;
25+
width: 262px !important;
26+
}
27+
.resourcesDetails {
28+
margin: 0px 0 12px 10px;
29+
height: 21px;
30+
overflow: hidden;
31+
text-overflow: ellipsis;
32+
white-space: nowrap;
33+
font-size: 14px !important;
34+
color: #7c7c7c;
35+
}
36+
.textEllipsis {
37+
display: inline-block;
38+
padding-left: 10px;
39+
padding-top: 12px;
40+
padding-bottom: 12px;
41+
vertical-align: top;
42+
overflow: hidden;
43+
text-overflow: ellipsis;
44+
white-space: nowrap;
45+
}
46+
.resourcesBottomList {
47+
padding-left: 10px;
48+
padding-top: 13px;
49+
padding-bottom: 12px;
50+
vertical-align: top;
51+
float: right;
52+
padding-right: 30px;
53+
border-left: 1px solid #ececec;
54+
}
55+
.publish-data-hdfs,.publish-data-hbase,.publish-data-excel,.publish-data-csv,.publish-data-geojson,.publish-data-json{
56+
display: none;
57+
}
58+
.margin10 {
59+
margin-right: 10px!important;
60+
}
61+
.checkbox-title.disabled {
62+
color: #bcbcbc;
63+
}
64+
.custom-checkbox.disabled {
65+
cursor: default !important;
66+
}
67+
.view-service {
68+
border-bottom:1px solid #ccc;
69+
}
70+
.view-service:last-child {
71+
border: none;
72+
}
73+
.view-service p:nth-child(1) {
74+
margin-top:10px;
75+
}
76+
.view-service a {
77+
display:block;
78+
margin-bottom:10px;
79+
}
80+
</style>
81+
</head>
82+
<body style=" margin: 0;overflow: auto;background: #F2F2F2;width: 100%;height:100%;position: absolute;top: 0;">
83+
<div class="container" style="margin-bottom: 100px">
84+
<div class="page-header">
85+
<h4 data-i18n="resources.text_publish_data"></h4>
86+
</div>
87+
<br />
88+
<!-- 发布数据服务模态框 -->
89+
<div class="modal fade" tabindex="-1" id="publishModal" role="dialog" data-backdrop="static" data-keyboard="false" >
90+
<div class="modal-dialog">
91+
<div class="modal-content">
92+
<div class="modal-header">
93+
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
94+
&times;
95+
</button>
96+
<h4 class="modal-title" id="myModalLabel" data-i18n="resources.text_publish_data"></h4>
97+
</div>
98+
<table class="table table-bordered col-md-6">
99+
<tbody>
100+
<tr>
101+
<td>
102+
<div class="col-md-10 col-md-offset-1">
103+
<p data-i18n="resources.text_publish_message"></p>
104+
<div id="serviceType">
105+
106+
</div>
107+
</div>
108+
</td>
109+
</tr>
110+
</tbody>
111+
</table>
112+
<div class="modal-footer">
113+
<button type="button" class="btn btn-default" data-dismiss="modal" data-i18n="resources.text_close">
114+
</button>
115+
<button type="button" class="btn btn-primary" onclick="publishDataEvent()" data-i18n="resources.text_confirm">
116+
</button>
117+
</div>
118+
</div><!-- /.modal-content -->
119+
</div><!-- /.modal -->
120+
</div>
121+
122+
<div class="col-md-10">
123+
<div class="row">
124+
<div class="col-md-12">
125+
<!--所有资源的承载DIV-->
126+
<div class="row" id="resourcesList">
127+
<!--单个资源数据的可视化承载DIV 添加在此位置中-->
128+
</div>
129+
</div>
130+
</div>
131+
</div>
132+
</div>
133+
<script type="text/javascript" include="jquery,bootstrap-css,bootstrap,widgets" src="../js/include-web.js"></script>
134+
<script type="text/javascript" src="../../dist/leaflet/include-leaflet.js"></script>
135+
<script>
136+
//iportal的URL地址 或根据情况添加自己的本地iportal地址:http://localhost:8190/iportal
137+
var iPortalUrl = "https://iportal.supermap.io/iportal";
138+
var token = "MFEKl8kVmkvEDrDFcgnjoUF4o2VKXT1eZhKh7hU3tnJL1jPculOBmvCtA6Xfrw4KuAyxWj2OcUV1Aj3M41nSNQ..";
139+
var queryParams = new SuperMap.iPortalQueryParam({
140+
resourceType: "DATA",
141+
pageSize: 12,
142+
currentPage: 1,
143+
orderBy: "UPDATETIME",
144+
orderType: "DESC",
145+
searchType:'MY_RES'
146+
});
147+
//资源查询初始化工作
148+
var iPortal = new SuperMap.iPortal(iPortalUrl);
149+
$(document).ready(function () {
150+
generatePortalToken();
151+
});
152+
var publishDataId,serviceType;
153+
// 申请,注册token并查询
154+
function generatePortalToken() {
155+
var serverInfo = new SuperMap.ServerInfo(SuperMap.ServerType.IPORTAL, {
156+
server: iPortalUrl
157+
});
158+
159+
SuperMap.SecurityManager.registerServers([serverInfo]);
160+
SuperMap.SecurityManager.destroyToken(iPortalUrl);
161+
SuperMap.SecurityManager.registerToken(iPortalUrl, token);
162+
//加载完DOM后,开始资源数据查询并添加
163+
iPortal = new SuperMap.iPortal(iPortalUrl);
164+
queryResouces(queryParams);
165+
}
166+
167+
// 查询iPortal中的资源
168+
function queryResouces(queryParams) {
169+
iPortal.queryResources(queryParams).then(function (resourcesReslut) {
170+
//返回的结果集,需要查看可打开下行代码
171+
// console.log(resourcesReslut);
172+
$("#resourcesList").children().remove();
173+
//将结果集进行遍历,并添加到HTML中
174+
$.each(resourcesReslut.content, function (i) {
175+
var resourceItem = resourcesReslut.content[i];
176+
//解析时间戳,可根据需求自行处理
177+
var updateTime = new Date(parseInt(resourceItem.updateTime)).toLocaleString();
178+
var thumbnail = resourceItem.thumbnail;
179+
// 此判断获取部分相对路径的default图片
180+
if(thumbnail.indexOf("./") === 0){
181+
thumbnail = iPortalUrl + thumbnail.replace("./","/");
182+
}
183+
var resourcesDOM = $("<div class='col-md-4 gallery-item'>" +
184+
"<div class='gallery-item-border'>" +
185+
"<a class='thumbnail' style='margin-bottom: 10px'>" +
186+
"<img class='gallery-item-img' src='" + thumbnail + "' alt=''>" +
187+
"</a>" +
188+
"<div>" +
189+
"<div style='height:68px'>"+
190+
"<div style='display:flex'>"+
191+
"<p class='resourcesDetails' style='flex: 1 1 auto'>" + resourceItem.name + "</p>" +
192+
"<p style='flex: 1 1 auto;text-align:right;margin-right:13px'>"+resourceItem.resourceSubType+"</p>"+
193+
"</div>"+
194+
"<a style='margin-left:10px;' class='publish-data-"+resourceItem.resourceSubType.toLowerCase() +"' onclick='publishDataService("+resourceItem.resourceId+")'>"+resources.text_publish_data+"</a>" +
195+
"<a tabindex='"+i+"'data-animation='true' data-html='true' id='content"+i+"' data-trigger='focus' data-container='body' data-content='无' data-toggle='popover' data-placement='bottom' style='margin-right:12px;float:right;' class='publish-data-"+resourceItem.resourceSubType.toLowerCase() +"' onclick='showPublishedDataService("+resourceItem.resourceId+","+i+")'>"+resources.text_view_service+"</a>" +
196+
"</div>"+
197+
"</div>")
198+
$("#resourcesList").append(resourcesDOM);
199+
});
200+
})
201+
};
202+
function publishDataService(dataId){
203+
publishDataId = dataId;
204+
$('#publishModal').modal('show');
205+
$("#serviceType").empty();
206+
var items = new SuperMap.iPortalResource(iPortalUrl,{resourceId:dataId,resourceType:"DATA"});
207+
items.load().then(()=>{
208+
var item = items.sourceJSON;
209+
switch (item.type) {
210+
case "WORKSPACE":
211+
var publishDataDom = $(
212+
"<div id='mapTypeLine'>"+
213+
"<input id='map' class='margin10' type='checkbox' value='RESTMAP'>"+
214+
"<label class='checkbox-title' for='map'>RESTMAP</label>"+
215+
"</div>"+
216+
"<div id='dataTypeLine'>"+
217+
"<input id='data' class='margin10' type='checkbox' value='RESTDATA'>"+
218+
"<label class='checkbox-title' for='data'>RESTDATA</label>"+
219+
"</div>"+
220+
"<div id='realspaceTypeLine'>"+
221+
"<input id='realspace' class='margin10' type='checkbox' value='RESTREALSPACE'>"+
222+
"<label class='checkbox-title' for='realspace'>RESTREALSPACE</label>"+
223+
"</div>"+
224+
"<div id='spatialAnalystTypeLine'>"+
225+
"<input id='spatialAnalyst' class='margin10' type='checkbox' value='RESTSPATIALANALYST'>"+
226+
"<label class='checkbox-title' for='spatialAnalyst'>RESTSPATIALANALYST</label>"+
227+
"</div>"
228+
)
229+
$("#serviceType").append(publishDataDom);
230+
break;
231+
case 'UDB':
232+
var publishDataDom = $(
233+
"<div id='dataTypeLine'>"+
234+
"<input id='data' class='margin10' type='checkbox' value='RESTDATA'>"+
235+
"<label class='checkbox-title' for='data'>RESTDATA</label>"+
236+
"</div>")
237+
$("#serviceType").append(publishDataDom);
238+
break;
239+
case 'SHP':
240+
case 'EXCEL':
241+
case 'CSV':
242+
case 'GEOJSON':
243+
var publishDataDom = $(
244+
"<div id='mapTypeLine'>"+
245+
"<input id='map' class='margin10' type='checkbox' value='RESTMAP'>"+
246+
"<label class='checkbox-title' for='map'>RESTMAP</label>"+
247+
"</div>"+
248+
"<div id='dataTypeLine'>"+
249+
"<input id='data' class='margin10' type='checkbox' value='RESTDATA'>"+
250+
"<label class='checkbox-title' for='data'>RESTDATA</label>"+
251+
"</div>")
252+
$("#serviceType").append(publishDataDom);
253+
break;
254+
case 'SMTILES':
255+
case 'SVTILES':
256+
case 'MBTILES':
257+
case 'TPK':
258+
case 'UGCV5':
259+
case 'UGCV5_MVT':
260+
var publishDataDom = $(
261+
"<div id='mapTypeLine'>"+
262+
"<input id='map' class='margin10' type='checkbox' value='RESTMAP'>"+
263+
"<label class='checkbox-title' for='map'>RESTMAP</label>"+
264+
"</div>")
265+
$("#serviceType").append(publishDataDom);
266+
break;
267+
}
268+
var precheckInfos = item.dataItemServices;
269+
if(!precheckInfos) {
270+
return;
271+
}
272+
$.each(precheckInfos, function (key, value) {
273+
if (value.serviceType === "RESTMAP") {
274+
refreshPublishContent("mapTypeLine");
275+
} else if (value.serviceType === "RESTDATA") {
276+
refreshPublishContent("dataTypeLine");
277+
} else if (value.serviceType === "RESTREALSPACE") {
278+
refreshPublishContent("realspaceTypeLine");
279+
} else if (value.serviceType === "RESTSPATIALANALYST") {
280+
refreshPublishContent("spatialAnalystTypeLine");
281+
}
282+
});
283+
});
284+
}
285+
function refreshPublishContent(publishTypeId){
286+
$("#" + publishTypeId + " :checkbox").attr("disabled", true);
287+
$("#" + publishTypeId + " :checkbox").addClass("disabled");
288+
$("#" + publishTypeId + " .checkbox-title").addClass("disabled");
289+
$("#" + publishTypeId + " .checkbox-title").attr("title",resources.msg_published);
290+
}
291+
function publishDataEvent(){
292+
if (checkPublishParam()) {
293+
publishOrUnpublishEvent(publishDataId, null, true);
294+
}
295+
$("#publishModal").modal("hide");
296+
}
297+
function publishOrUnpublishEvent(dataId, dataServiceId, forPublish){
298+
var options = {
299+
dataId:dataId,
300+
serviceType:serviceType,
301+
dataServiceId:dataServiceId
302+
}
303+
new SuperMap.iPortalUser(iPortalUrl).publishDataService(options,forPublish).then(res=>{
304+
var serviceIdList = res.split(",");
305+
for (var i = 0; i < serviceIdList.length; i++) {
306+
new SuperMap.iPortalUser(iPortalUrl).getDataPublishedStatus(dataId,serviceIdList[i]).then(res=>{
307+
if(res.succeed){
308+
widgets.alert.showAlert(resources.msg_publish_success, true);
309+
}else {
310+
widgets.alert.showAlert(resources.msg_publish_failed, false);
311+
}
312+
})
313+
}
314+
})
315+
}
316+
function checkPublishParam() {
317+
var checkBoxList = $("#publishModal :checkbox");
318+
var serviceTypes = "";
319+
checkBoxList.each(function () {
320+
if (this.checked) {
321+
serviceTypes += $(this).val() + ",";
322+
}
323+
});
324+
if (serviceTypes.length > 0) {
325+
serviceType = serviceTypes.substr(0, serviceTypes.length - 1);
326+
return true;
327+
}
328+
return false;
329+
}
330+
function showPublishedDataService(id,index) {
331+
var items = new SuperMap.iPortalResource(iPortalUrl,{resourceId:id,resourceType:"DATA"});
332+
items.load().then(()=>{
333+
var template = "";
334+
if(items.sourceJSON.dataItemServices.length) {
335+
$.each(items.sourceJSON.dataItemServices,function(i){
336+
var option = {
337+
dataId:id,
338+
serviceType:items.sourceJSON.dataItemServices[i].serviceType,
339+
dataServiceId:items.sourceJSON.dataItemServices[i].serviceName
340+
}
341+
var msg = items.sourceJSON.dataItemServices[i].serviceStatus==='PUBLISHED'?resources.msg_publish_success:resources.msg_publish_failed
342+
template+="<div class='view-service'><p>"+resources.text_service_name+":"+items.sourceJSON.dataItemServices[i].serviceName+"</p><p>"+resources.text_service_type+":"+items.sourceJSON.dataItemServices[i].serviceType+"</p><p>"+resources.text_service_status+":"+msg+"</p><a onclick='unPublishData("+JSON.stringify(option)+")'>"+resources.text_unpublish_service+"</a></div>"
343+
})
344+
$("#content"+index).attr('data-content', template);
345+
$("#content"+index).popover("show");
346+
}else {
347+
$("#content"+index).popover("show");
348+
}
349+
})
350+
}
351+
//取消发布
352+
function unPublishData(option){
353+
new SuperMap.iPortalUser(iPortalUrl).unPublishDataService(option).then(res=>{
354+
if(res.succeed) {
355+
widgets.alert.showAlert(resources.msg_unpublish_success, true);
356+
}else {
357+
widgets.alert.showAlert(resources.msg_unpublish_failed, false);
358+
}
359+
})
360+
}
361+
</script>
362+
</body>
363+
</html>

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy