summaryAttributesJobService.html 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. <!--********************************************************************
  2. * Copyright© 2000 - 2021 SuperMap Software Co.Ltd. All rights reserved.
  3. *********************************************************************-->
  4. <!DOCTYPE html>
  5. <html>
  6. <head>
  7. <meta charset="UTF-8">
  8. <title data-i18n="resources.title_summaryAttributesJobService"></title>
  9. <script type="text/javascript" include="jquery,bootstrap,widgets" src="../js/include-web.js"></script>
  10. </head>
  11. <body style=" margin: 0;overflow: hidden;background: #fff;width: 100%;height:100%;position: absolute;top: 0;">
  12. <div id="map" style="width: 100%;height:100%"></div>
  13. <script type="text/javascript" include="echarts" src="../../dist/leaflet/include-leaflet.js"></script>
  14. <script type="text/javascript">
  15. var host = window.isLocal ? window.server : "https://iserver.supermap.io";
  16. var chartControl, processingUrl = host + "/iserver/services/distributedanalyst/rest/v1/jobs",
  17. mapURL = host + "/iserver/services/map-world/rest/maps/World",
  18. map = L.map('map', {
  19. crs: L.CRS.EPSG4326,
  20. center: [40.75, -73.95],
  21. maxZoom: 18,
  22. zoom: 12
  23. }),
  24. info = L.control({
  25. position: 'topright'
  26. });
  27. L.supermap.tiledMapLayer(mapURL).addTo(map);
  28. info.onAdd = function () {
  29. var popup = L.DomUtil.create('div');
  30. popup.style.width = '300px';
  31. popup.innerHTML = "<div class='panel panel-default'>" +
  32. "<div class='panel-heading'>" +
  33. "<h3 class='panel-title'>" + resources.title_summaryAttributesJobService + "</h3>" +
  34. "</div>" +
  35. "<div class='panel-body'>" +
  36. "<div class='input-group'>" +
  37. "<span class='input-group-addon'>" + resources.text_inputData + "<span title='" + resources.text_requiredField +
  38. "' style='color: red;'> * </span> </span>" +
  39. "<input id='datasetName' type='text' class='form-control' value='samples_processing_newyorkZone_R'/>" +
  40. "</div><p></p>" +
  41. "<div class='input-group'>" +
  42. "<span class='input-group-addon'>" + resources.text_groupField + "</span>" +
  43. "<input id='groupField' type='text' class='form-control' value='borough'/>" +
  44. "</div><p></p>" +
  45. "<div class='input-group'>" +
  46. "<span class='input-group-addon'>" + resources.text_attributeField + "</span>" +
  47. "<input id='attributeField' type='text' class='form-control' value='LocationID'/>" +
  48. "</div><p></p>" +
  49. "<div class='input-group'>" +
  50. "<span class='input-group-addon'>" + resources.text_statisticModes + "</span>" +
  51. "<input id='statisticModes' type='text' class='form-control' value='sum'/>" +
  52. "</div><p></p>" +
  53. "<div align='right'>" +
  54. "<input type='button' id='btn' class='btn btn-primary' value='" + resources.btn_summary + "'/>" +
  55. "</div></div></div>";
  56. handleMapEvent(popup, this._map);
  57. return popup;
  58. };
  59. info.addTo(map);
  60. var processingService = new L.supermap.processingService(processingUrl, {
  61. withCredentials: window.isLocal
  62. });
  63. SuperMap.SecurityManager.registerToken(processingUrl, window.exampleToken);
  64. $('#btn').on('click', function () {
  65. if ($('#msg_container')[0]) {
  66. $('#msg_container').remove();
  67. }
  68. widgets.loader.showLoader();
  69. if (map && chartControl) {
  70. map.removeControl(chartControl);
  71. }
  72. var summaryAttributesJobsParameter = new SuperMap.SummaryAttributesJobsParameter({
  73. datasetName: $('#datasetName').val(),
  74. groupField: $('#groupField').val(),
  75. attributeField: $('#attributeField').val(),
  76. statisticModes: $('#statisticModes').val()
  77. });
  78. processingService.addSummaryAttributesJob(summaryAttributesJobsParameter, function (serviceResult) {
  79. if (serviceResult.error) {
  80. widgets.loader.removeLoader();
  81. var errorMsg = serviceResult.error.errorMsg || "code: " + serviceResult.error;
  82. widgets.alert.showAlert(resources.msg_createFailed + "<br>" + errorMsg, false);
  83. return;
  84. }
  85. serviceResult.result.setting.serviceInfo.targetServiceInfos.map(function (info) {
  86. if (info.serviceType === 'RESTDATA') {
  87. var dataUrl = info.serviceAddress + '/data';
  88. var sqlParam = new SuperMap.GetFeaturesBySQLParameters({
  89. queryParameter: {
  90. name: "analystResult@UntitledDatasource",
  91. attributeFilter: "SMID > 0"
  92. },
  93. datasetNames: ["UntitledDatasource:analystResult"]
  94. });
  95. L.supermap
  96. .featureService(dataUrl)
  97. .getFeaturesBySQL(sqlParam, function (serviceResult) {
  98. result = serviceResult.result.features.features;
  99. var names = [];
  100. var data1 = [];
  101. var data2 = [];
  102. for (var i = 0; i < result.length; i++) {
  103. names.push(result[i].properties.BOROUGH);
  104. data1.push(parseFloat(result[i].properties.RECORDCOUNT));
  105. data2.push(parseFloat(result[i].properties.SUM_LOCATIONID));
  106. }
  107. option = {
  108. backgroundColor: '#0E2A43',
  109. legend: {
  110. bottom: 20,
  111. textStyle: {
  112. color: '#fff',
  113. },
  114. data: ['RECORDCOUNT', 'SUM_LOCATIONID']
  115. },
  116. grid: {
  117. left: '3%',
  118. right: '4%',
  119. bottom: '20%',
  120. containLabel: true
  121. },
  122. tooltip: {
  123. show: "true",
  124. trigger: 'axis',
  125. axisPointer: { // 坐标轴指示器,坐标轴触发有效
  126. type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
  127. }
  128. },
  129. xAxis: {
  130. type: 'value',
  131. axisTick: {
  132. show: false
  133. },
  134. axisLine: {
  135. show: false,
  136. lineStyle: {
  137. color: '#fff',
  138. }
  139. },
  140. splitLine: {
  141. show: false
  142. },
  143. },
  144. yAxis: [{
  145. type: 'category',
  146. data: names,
  147. axisTick: {
  148. show: false
  149. },
  150. axisLine: {
  151. show: true,
  152. lineStyle: {
  153. color: '#fff',
  154. }
  155. }
  156. },
  157. {
  158. type: 'category',
  159. data: names,
  160. axisLine: {
  161. show: false
  162. },
  163. axisTick: {
  164. show: false
  165. },
  166. axisLabel: {
  167. show: false
  168. },
  169. splitArea: {
  170. show: false
  171. },
  172. splitLine: {
  173. show: false
  174. }
  175. }
  176. ],
  177. series: [{
  178. name: 'RECORDCOUNT',
  179. type: 'bar',
  180. itemStyle: {
  181. normal: {
  182. show: true,
  183. color: '#5de3e1',
  184. barBorderRadius: 50,
  185. borderWidth: 0,
  186. borderColor: '#333',
  187. }
  188. },
  189. data: data1,
  190. barGap: '0%',
  191. barCategoryGap: '50%'
  192. },
  193. {
  194. name: 'SUM_LOCATIONID',
  195. type: 'bar',
  196. yAxisIndex: 1,
  197. itemStyle: {
  198. normal: {
  199. show: true,
  200. color: '#277ace',
  201. barBorderRadius: 50,
  202. borderWidth: 0,
  203. borderColor: '#333',
  204. }
  205. },
  206. data: data2,
  207. barGap: '0%',
  208. barCategoryGap: '50%'
  209. }
  210. ]
  211. };
  212. var div = L.DomUtil.create('div');
  213. var chart = echarts.init(div, '', {
  214. width: 400,
  215. height: 300
  216. });
  217. chart.setOption(option);
  218. chartControl = L.control({
  219. position: 'topleft'
  220. });
  221. chartControl.onAdd = function (map) {
  222. return chart.getDom();
  223. };
  224. chartControl.addTo(map);
  225. });
  226. widgets.loader.removeLoader();
  227. }
  228. });
  229. });
  230. });
  231. function handleMapEvent(div, map) {
  232. if (!div || !map) {
  233. return;
  234. }
  235. div.addEventListener('mouseover', function () {
  236. map.dragging.disable();
  237. map.scrollWheelZoom.disable();
  238. map.doubleClickZoom.disable();
  239. });
  240. div.addEventListener('mouseout', function () {
  241. map.dragging.enable();
  242. map.scrollWheelZoom.enable();
  243. map.doubleClickZoom.enable();
  244. });
  245. $("#model").on('shown.bs.modal', function () {
  246. map.dragging.disable();
  247. map.scrollWheelZoom.disable();
  248. map.doubleClickZoom.disable();
  249. });
  250. $("#model").on('hidden.bs.modal', function () {
  251. map.dragging.enable();
  252. map.scrollWheelZoom.enable();
  253. map.doubleClickZoom.enable();
  254. })
  255. }
  256. </script>
  257. </body>
  258. </html>