main.jsp 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
  4. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
  5. <!doctype html>
  6. <html lang="ko">
  7. <head>
  8. <%@ include file="/WEB-INF/jsp/common.jsp" %>
  9. <sec:authorize access="hasAuthority('B')">
  10. <script>
  11. alert("기반정보 관리자 계정입니다. 다른 계정으로 로그인하십시요")
  12. location.href=('/logout.do')
  13. </script>
  14. </sec:authorize>
  15. <sec:authorize access="!isAuthenticated()">
  16. <script>
  17. alert("로그인 정보가 없습니다. 로그인해주세요")
  18. location.href=('/logout.do')
  19. </script>
  20. </sec:authorize>
  21. <meta name="_csrf" content="${_csrf.token}"/>
  22. <meta name="_csrf_header" content="${_csrf.headerName}"/>
  23. <meta http-equiv="X-UA-Compatible" content="IE=10; IE=9; IE=8; IE=7; IE=EDGE"/>
  24. <meta name="Description" content="신호관제"/>
  25. <meta name="Keywords" content="신호관제"/>
  26. <link rel="icon" href="data:;base64,iVBORw0KGgo=">
  27. <link rel="stylesheet" type="text/css" href="${contextRoot }/css/common.css?v=1"/>
  28. <link rel="stylesheet" type="text/css" href="${contextRoot }/css/main.css?v=1"/>
  29. <link rel="stylesheet" type=iframe"text/css" href="${contextRoot }/css/themes/default/style.css"/>
  30. <link rel="icon" type="text/css" href="data:;base64,iVBORw0KGgo="/>
  31. <script src="https://cdn.jsdelivr.net/npm/sockjs-client@1/dist/sockjs.min.js"></script>
  32. <script type="text/javascript" src="${contextRoot }/js/common/moment.js"></script>
  33. <script src="${contextRoot }/js/common/hashmap.js" type="text/javascript"></script>
  34. <script src="${contextRoot }/js/common/common-all.js" type="text/javascript"></script>
  35. <script src="${contextRoot }/js/common/common.js" type="text/javascript"></script>
  36. <script src="${contextRoot }/js/common/jstree.min.js" type="text/javascript"></script>
  37. <script src="${contextRoot }/js/map.js" type="text/javascript"></script>
  38. <script src="${contextRoot }/js/signal.js" type="text/javascript"></script>
  39. <script src="${contextRoot }/js/cvib.js" type="text/javascript"></script>
  40. <title>CVIM_MAP</title>
  41. </head>
  42. <body class="sang">
  43. <input type="hidden" name="min_x" id="min_x" value=""/>
  44. <input type="hidden" name="min_y" id="min_y" value=""/>
  45. <input type="hidden" name="max_x" id="max_x" value=""/>
  46. <input type="hidden" name="max_y" id="max_y" value=""/>
  47. <input type="hidden" name="regionCd" id="regionCd" value=""/>
  48. <input type="hidden" name="regionId" id="regionId" value=""/>
  49. <input type="hidden" name="intNo" id="intNo" value=""/>
  50. <input type="hidden" name="intNm" id="intNm" value=""/>
  51. <input type="hidden" name="intLcType" id="intLcType" value=""/>
  52. <input type="hidden" name="intLampType" id="intLampType" value=""/>
  53. <input type="hidden" name="groupNo" id="groupNo" value=""/>
  54. <input type="hidden" name="mainIntNo" id="mainIntNo" value=""/>
  55. <input type="hidden" name="treeXCoord" id="treeXCoord" value=""/>
  56. <input type="hidden" name="treeYCoord" id="treeYCoord" value=""/>
  57. <input type="hidden" name="XCoord" id="XCoord" value="126.978087"/>
  58. <input type="hidden" name="YCoord" id="YCoord" value="37.560684"/>
  59. <input type="hidden" name="sigunguCd" id="sigunguCd" value=""/>
  60. <input type="hidden" name="intMainphase" id="intMainphase" value=""/>
  61. <input type="hidden" name="networkType" id="networkType" value=""/>
  62. <input type="hidden" name="modemIp" id="modemIp" value=""/>
  63. <div class="headMenu">
  64. <h1><a href="main.do" title="로고"><img src="images/logo3.png" alt="로고" style="width: 310px;margin: 3px;"></a></h1>
  65. <h2 style="width: calc(100% - 340px); display: flex; justify-content: flex-end; height: 100%; align-items: center;">
  66. <a href="logout.do" title="로그아웃"><img src="images/logout.png" alt="로그아웃"></a>
  67. </h2>
  68. <ul>
  69. </ul>
  70. </div>
  71. <div id="container" class="container">
  72. <iframe src="/getTreeListFrame.do" id="iframeTreeList" class="iframeTreeList"></iframe>
  73. <div id="mapWrapper">
  74. <div id="map" class="map">
  75. <div class="wideMap"><img alt="지도확대축소" src="images/drop_down.png" width="45" height="25"/></div>
  76. <div class="upDownMap"><img alt="지도확대축소" src="images/drop_down.png" width="45" height="25"/></div>
  77. <!-- 검색값-->
  78. <div class="bg_white" id="menu_wrap">
  79. <div class="option">
  80. <p></p>
  81. 키워드 :
  82. <input id="keyword" type="text" size="15" maxlength="50" value="">
  83. <button type="submit" class="searchBtn" onclick="searchPlaces();" autocomplete="false">검색하기</button>
  84. <p></p>
  85. </div>
  86. <hr>
  87. <ul id="placesList"></ul>
  88. </div>
  89. <!-- 검색값끝-->
  90. <!-- 로드뷰 -->
  91. <div class="mapToggle">
  92. <ul style="width:100%; display:block;">
  93. <li class="toggleBtn" style="float:left;"><a href="javascript:void(0)" class="place"><img id="place"
  94. class="road_off"
  95. src="${contextRoot}/images/find_location_off.png"
  96. alt="위치찾기"/></a>
  97. </li>
  98. <li class="toggleBtn" style="margin-left: 5px;float:left;"><a href="javascript:findLocation()" class="coord" id="coordControl"><img id="coord"
  99. class="coord_off"
  100. src="${contextRoot}/images/find_coord_off.png"
  101. alt="좌표검색"/></a>
  102. </li>
  103. <li class="toggleBtn" style="margin-left:5px;float:left;"><a href="javascript:getRoadView();"
  104. class="road" id="roadviewControl"><img
  105. id="road" class="road_off" src="${contextRoot}/images/road_view.gif" alt="로드뷰오프"/></a></li>
  106. <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:getDrawRoad();"
  107. class="draw"><img id="draw"
  108. class="road_off"
  109. src="${contextRoot}/images/distance.png"
  110. alt="거리재기"/></a>
  111. </li>
  112. <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:getDrawArea();"
  113. class="area"><img id="area"
  114. class="road_off"
  115. src="${contextRoot}/images/area.png"
  116. alt="면적재기"/></a>
  117. </li>
  118. <%-- <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:toggleSiginfo();"
  119. class="toggle_siginfo"><img
  120. id="toggle_siginfo" class="road_off" src="${contextRoot}/images/toggle_siginfo_off.png"
  121. alt="신호정보토글"/></a></li>--%>
  122. <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:getMyLocation();"
  123. class="mylocation"><img
  124. class="mylocation"
  125. src="${contextRoot}/images/position.png"
  126. alt="현재위치"/></a>
  127. </li>
  128. <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:refreshNodeList();"
  129. class="refresh"><img
  130. class="refresh"
  131. src="${contextRoot}/images/refresh.png"
  132. alt="새로고침"/></a>
  133. </li>
  134. <%-- <li class="toggleBtn" style="margin-left:5px; float:left;"><a href="javascript:emergencyHistory();"--%>
  135. <%-- class="refresh"><img--%>
  136. <%-- class="refresh"--%>
  137. <%-- src="${contextRoot}/images/refresh.png"--%>
  138. <%-- alt="테스트"/></a>--%>
  139. <%-- </li>--%>
  140. </ul>
  141. </div>
  142. <!-- <img src="images/bg_traffic04.png" alt="범례" class="bumImage" /> -->
  143. <div class="coordBox">
  144. <div class="coord-unit">
  145. <div>X 좌표 : </div>
  146. <input type="text" id="lctn_x_coord" name="x_coord" autocomplete="false">
  147. </div>
  148. <div class="coord-unit">
  149. <div>Y 좌표 : </div>
  150. <input type="text" id="lctn_y_coord" name="y_coord" autocomplete="false">
  151. </div>
  152. <div class="coord-btn" onclick="moveToPosition()">이동</div>
  153. </div>
  154. </div>
  155. <div class="evp_legend"><img alt="긴급차량우선신호 범례" src="/images/evp_legend2.png" width="178" height="50"></div>
  156. </div>
  157. <!-- 로드뷰 -->
  158. <div id="rvWrapper">
  159. <div id="roadview" class="roadview">
  160. <div id="roadviewClose" title="로드뷰닫기" onclick="closeRoadview()"><span class="img"></span></div>
  161. </div>
  162. </div>
  163. <!-- //로드뷰-->
  164. <iframe src="/getBottomListFrame.do" id="iframeBottomList" class="iframeBottomList" onload="getSignalInfo()"></iframe>
  165. <!-- 모바일인경우 현재위치버튼 변경 -->
  166. <div class="mylocationMob" style="display:none;position:absolute;bottom:calc(25% + 35px);left:335px;z-index:10;">
  167. <a href="javascript:getMyLocation();" class="mylocationMobA">
  168. <img id="position" class="road_off" src="${contextRoot}/images/position_m.png" alt="현재위치" style="width:75px;height:75px"/>
  169. </a>
  170. </div>
  171. </div>
  172. <%--<script src="${contextRoot }/js/common/webSocket.js" type="text/javascript"></script>--%>
  173. <script src="${contextRoot }/js/common/cvibStatus.js" type="text/javascript"></script>
  174. <script type="text/javascript">
  175. var centerPopId = null;
  176. var eventPopId = null;
  177. var signalPopId = null;
  178. /**
  179. * 좌표 검색
  180. */
  181. function findLocation() {
  182. $('#lctn_x_coord').val('');
  183. $('#lctn_y_coord').val('');
  184. const $coordBox = $('.coordBox');
  185. $coordBox.toggleClass('on');
  186. var coordImage = "find_coord_";
  187. var onOff = 'off';
  188. if ($coordBox.hasClass('on')) {
  189. onOff = 'on';
  190. }
  191. coordImage += onOff;
  192. coordImage += ".png";
  193. $('#coord').attr('src', BTN_IMAGE_PATH + coordImage);
  194. }
  195. /********************************************************************************
  196. * 위치검색
  197. *********************************************************************************/
  198. $(".toggleBtn > a").click(function () {
  199. var obj = $(this).attr("class");
  200. var iconBtn = $("#" + obj).attr("class");
  201. $("#" + obj).toggleClass('road_on road_off');
  202. if (obj == "center") {
  203. if (iconBtn == "road_on") {
  204. $("#center").attr("src", BTN_IMAGE_PATH + "btn_02.png");
  205. if (centerPopId != null) centerPopId.close();
  206. } else {
  207. $("#center").attr("src", BTN_IMAGE_PATH + "btn_02_on.png");
  208. var url = 'updateCenter.do';
  209. var options = 'scrollbars=no,toolbar=no,location=no,resizable=no,status=no,menubar=no,width=908px,height=435px,left=400,top=0';
  210. centerPopId = window.open(url, 'updateCenter', options);
  211. }
  212. }
  213. if (obj == "event") {
  214. if (iconBtn == "road_on") {
  215. $("#event").attr("src", BTN_IMAGE_PATH + "btn_03.png");
  216. if (eventPopId != null) eventPopId.close();
  217. } else {
  218. $("#event").attr("src", BTN_IMAGE_PATH + "btn_03_on.png");
  219. var url = 'openEventHistory.do';
  220. var options = 'scrollbars=no,toolbar=no,location=no,resizable=no,status=no,menubar=no,width=908px,height=845px,left=200,top=0';
  221. eventPopId = window.open(url, 'openEventHistory', options);
  222. }
  223. }
  224. if (obj == "ims") {
  225. if (iconBtn == "road_on") {
  226. $("#ims").attr("src", BTN_IMAGE_PATH + "btn_04.png");
  227. markerRemove("ims");
  228. } else {
  229. $("#ims").attr("src", BTN_IMAGE_PATH + "btn_04_on.png");
  230. getIMS();
  231. }
  232. }
  233. if (obj == "addSignal") {
  234. if (iconBtn == "road_on") {
  235. $("#addSignal").attr("src", BTN_IMAGE_PATH + "btn_05.png");
  236. if (signalPopId != null) signalPopId.close();
  237. } else {
  238. $("#addSignal").attr("src", BTN_IMAGE_PATH + "btn_05_on.png");
  239. var regionCd = $('#regionCd').val();
  240. var intNo = $('#intNo').val();
  241. var url = 'updateSignal.do?regionCd=' + regionCd + '&intNo=' + intNo;
  242. var options = 'scrollbars=no,toolbar=no,location=no,resizable=no,status=no,menubar=no,width=908px,height=880px,left=200,top=0';
  243. signalPopId = window.open(url, 'addSignal', options);
  244. }
  245. }
  246. //서울 신호좌표데이터 각도데이터로 변경
  247. if (obj == "addPhase") {
  248. transAngle();
  249. }
  250. //위치검색
  251. if (obj == "place") {
  252. if (iconBtn == "road_on") {
  253. markerRemove('search');
  254. markerRemove('infowindow');
  255. $("#place").attr("src", BTN_IMAGE_PATH + "find_location_off.png");
  256. $("#keyword").val("");
  257. $("#menu_wrap").css("display", "none");
  258. } else {
  259. $("#menu_wrap").css("display", "block");
  260. $("#keyword").focus();
  261. $("#place").attr("src", BTN_IMAGE_PATH + "find_location_on.png");
  262. $("#road").attr("src", BTN_IMAGE_PATH + "road_view.gif");
  263. $("#draw").attr("src", BTN_IMAGE_PATH + "distance.png");
  264. $("#area").attr("src", BTN_IMAGE_PATH + "area.png");
  265. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_off.png");
  266. $("#area").removeClass("road_on").addClass("road_off");
  267. $("#draw").removeClass("road_on").addClass("road_off");
  268. $("#toggle_siginfo").removeClass("road_on").addClass("road_off");
  269. }
  270. }
  271. //로드뷰
  272. if (obj == "road") {
  273. if (iconBtn == "road_on") {
  274. $("#road").attr("src", BTN_IMAGE_PATH + "road_view.gif");
  275. } else {
  276. $("#road").attr("src", BTN_IMAGE_PATH + "road_viewon.gif");
  277. $("#draw").attr("src", BTN_IMAGE_PATH + "distance.png");
  278. $("#area").attr("src", BTN_IMAGE_PATH + "area.png");
  279. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_off.png");
  280. $("#area").removeClass("road_on").addClass("road_off");
  281. $("#draw").removeClass("road_on").addClass("road_off");
  282. $("#toggle_siginfo").removeClass("road_on").addClass("road_off");
  283. }
  284. }
  285. //거리재기
  286. if (obj == "draw") {
  287. if (iconBtn == "road_on") {
  288. $("#draw").attr("src", BTN_IMAGE_PATH + "distance.png");
  289. } else {
  290. $("#road").attr("src", BTN_IMAGE_PATH + "road_view.gif");
  291. $("#draw").attr("src", BTN_IMAGE_PATH + "distanceon.png");
  292. $("#area").attr("src", BTN_IMAGE_PATH + "area.png");
  293. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_off.png");
  294. $("#area").removeClass("road_on").addClass("road_off");
  295. $("#road").removeClass("road_on").addClass("road_off");
  296. $("#toggle_siginfo").removeClass("road_on").addClass("road_off");
  297. }
  298. }
  299. //면적재기
  300. if (obj == "area") {
  301. if (iconBtn == "road_on") {
  302. $("#area").attr("src", BTN_IMAGE_PATH + "area.png");
  303. } else {
  304. $("#road").attr("src", BTN_IMAGE_PATH + "road_view.gif");
  305. $("#draw").attr("src", BTN_IMAGE_PATH + "distance.png");
  306. $("#area").attr("src", BTN_IMAGE_PATH + "areaon.png");
  307. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_off.png");
  308. $("#draw").removeClass("road_on").addClass("road_off");
  309. $("#road").removeClass("road_on").addClass("road_off");
  310. $("#toggle_siginfo").removeClass("road_on").addClass("road_off");
  311. }
  312. }
  313. //신호정보 토글
  314. if (obj == "toggle_siginfo") {
  315. if (iconBtn == "road_on") {
  316. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_off.png");
  317. } else {
  318. $("#area").attr("src", BTN_IMAGE_PATH + "area.png");
  319. $("#draw").attr("src", BTN_IMAGE_PATH + "distance.png");
  320. $("#road").attr("src", BTN_IMAGE_PATH + "road_view.gif");
  321. $("#toggle_siginfo").attr("src", BTN_IMAGE_PATH + "toggle_siginfo_on.png");
  322. $("#road").removeClass("road_on").addClass("road_off");
  323. $("#draw").removeClass("road_on").addClass("road_off");
  324. $("#area").removeClass("road_on").addClass("road_off");
  325. }
  326. }
  327. });
  328. $("#keyword").keydown(function (key) {
  329. if (key.keyCode == 13) {
  330. searchPlaces();
  331. }
  332. });
  333. //메뉴창 숨기기
  334. var UserAgent = window.navigator.userAgent;
  335. var wideFlag = false;
  336. var upDownFlag = false;
  337. $('.wideMap').click(function () {
  338. const isRoadView = $('.road_on')[0];
  339. if (wideFlag === false) {
  340. // $('.wideMap img').attr('src', '/images/arrow_right.png');
  341. $('.wideMap img').attr('src', '/images/drop_up.png');
  342. $('.iframeTreeList').hide();
  343. const widthVal = isRoadView ? 'calc(60% - 10px)' : 'calc(100% - 10px)';
  344. $('#mapWrapper').css({
  345. width: widthVal,
  346. margin: '5px 0 0 5px'
  347. });
  348. $('.iframeBottomList').css({
  349. width: 'calc(100% - 10px)',
  350. margin: '0 0 0 5px'
  351. });
  352. if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null)
  353. $('.mylocationMob').css('left', '25px');
  354. wideFlag = true;
  355. } else if (wideFlag === true) {
  356. // $('.wideMap img').attr('src', '/images/arrow_left.png');
  357. $('.wideMap img').attr('src', '/images/drop_down.png');
  358. $('.iframeTreeList').show();
  359. const widthVal = isRoadView ? 'calc(60% - 338px)' : 'calc(100% - 338px)';
  360. $('#mapWrapper').css({
  361. width: widthVal,
  362. margin: '5px 0 0 332px'
  363. });
  364. $('.iframeBottomList').css({
  365. width: 'calc(100% - 338px)',
  366. margin: '0 0 0 2px'
  367. });
  368. if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null)
  369. $('.mylocationMob').css('left', '335px');
  370. wideFlag = false;
  371. }
  372. map.relayout();
  373. });
  374. $('.upDownMap').click(function () {
  375. if (upDownFlag == false) {
  376. //확대
  377. // $('.upDownMap img').attr('src', 'images/arrow_up.png');
  378. $('.upDownMap img').attr('src', 'images/drop_up.png');
  379. $('.iframeBottomList').hide();
  380. $('#mapWrapper').css('height', 'calc(100% - 12px)');
  381. if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null)
  382. $('.mylocationMob').css('bottom', '35px');
  383. upDownFlag = true;
  384. } else if (upDownFlag == true) {
  385. //축소
  386. // $('.upDownMap img').attr('src', 'images/arrow_down.png').slide;
  387. $('.upDownMap img').attr('src', 'images/drop_down.png').slide;
  388. $('.iframeBottomList').show();
  389. $('#mapWrapper').css('height', 'calc(75% - 10px)');
  390. if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null)
  391. $('.mylocationMob').css('bottom', 'calc(25% + 35px)');
  392. upDownFlag = false;
  393. }
  394. map.relayout();
  395. });
  396. /********************************************************************************
  397. * header display
  398. *********************************************************************************/
  399. var headFlag = false;
  400. $("#hline").click(function () {
  401. if (headFlag == false) {
  402. $('.headMenu').slideUp();
  403. $('.container').css('height', '100%');
  404. headFlag = true;
  405. } else {
  406. $('.headMenu').slideDown();
  407. $('.container').css('height', 'calc(100% - 66px)');
  408. headFlag = false;
  409. }
  410. });
  411. function closeTopMenu(obj) {
  412. mapZoomBound();
  413. $('#' + obj).attr("class", "road_off");
  414. if (obj == "center") {
  415. $("#center").attr("src", BTN_IMAGE_PATH + "btn_02.png");
  416. setTimeout(function () {
  417. location.reload(true);
  418. }, 100 * 1);
  419. }
  420. if (obj == "event") $("#event").attr("src", BTN_IMAGE_PATH + "btn_03.png");
  421. if (obj == "addSignal") {
  422. $("#addSignal").attr("src", BTN_IMAGE_PATH + "btn_05.png");
  423. setTimeout(function () {
  424. location.reload(true);
  425. }, 100 * 1);
  426. }
  427. }
  428. //모바일 인경우 현재위치버튼 변경
  429. if (UserAgent.match(/iPhone|iPod|Android|Windows CE|BlackBerry|Symbian|Windows Phone|webOS|Opera Mini|Opera Mobi|POLARIS|IEMobile|lgtelecom|nokia|SonyEricsson/i) != null || UserAgent.match(/LG|SAMSUNG|Samsung/) != null) {
  430. $('.mylocation').hide();
  431. $('.mylocationMob').show();
  432. }
  433. $(window).bind("beforeunload", function (e) {
  434. if (siginfoPhaseDetailWin != null) siginfoPhaseDetailWin.close();
  435. if (signalPopId != null) signalPopId.close();
  436. });
  437. function refreshNodeList() {
  438. requestService('refreshNodeList.do', null, (res)=>{
  439. console.log(res);
  440. if (res) {
  441. if (res.success) {
  442. alert('리스트 목록이 새로고침 되었습니다.');
  443. location.reload(true);
  444. }
  445. else if(res.errorMsg) {
  446. alert('리스트 목록 새로고침 중 오류가 발생하였습니다.<br>' + res.errorMsg);
  447. }
  448. }
  449. }, true)
  450. }
  451. </script>
  452. </body>
  453. </html>