index.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658
  1. <?php
  2. session_start();
  3. //Can't come in without logged in
  4. if (!isset($_SESSION['loggedin'])) {
  5. header('Location: pages-signin.html');
  6. exit;
  7. }
  8. ?>
  9. <!doctype html>
  10. <html class="fixed">
  11. <head>
  12. <!-- Basic -->
  13. <meta charset="UTF-8">
  14. <title>資料庫管理</title>
  15. <meta name="keywords" content="HTML5 Admin Template" />
  16. <meta name="description" content="JSOFT Admin - Responsive HTML5 Template">
  17. <meta name="author" content="JSOFT.net">
  18. <script src="assets/vendor/jquery/jquery.js"></script>
  19. <!-- Mobile Metas -->
  20. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
  21. <!-- Web Fonts -->
  22. <link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700,800|Shadows+Into+Light" rel="stylesheet" type="text/css">
  23. <!-- jstree CSS -->
  24. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/themes/default/style.min.css">
  25. <!-- Vendor CSS -->
  26. <link rel="stylesheet" href="assets/vendor/bootstrap/css/bootstrap.css" />
  27. <link rel="stylesheet" href="assets/vendor/font-awesome/css/font-awesome.css" />
  28. <link rel="stylesheet" href="assets/vendor/magnific-popup/magnific-popup.css" />
  29. <link rel="stylesheet" href="assets/vendor/bootstrap-datepicker/css/datepicker3.css" />
  30. <link rel="stylesheet" href="assets/vendor/pnotify/pnotify.custom.css" />
  31. <!-- Specific Page Vendor CSS -->
  32. <link rel="stylesheet" href="assets/vendor/jquery-ui/css/ui-lightness/jquery-ui-1.10.4.custom.css" />
  33. <link rel="stylesheet" href="assets/vendor/bootstrap-multiselect/bootstrap-multiselect.css" />
  34. <link rel="stylesheet" href="assets/vendor/morris/morris.css" />
  35. <link rel="stylesheet" href="assets/vendor/bootstrap-fileupload/bootstrap-fileupload.min.css" />
  36. <!-- Theme CSS -->
  37. <link rel="stylesheet" href="assets/stylesheets/theme.css" />
  38. <!-- Skin CSS -->
  39. <link rel="stylesheet" href="assets/stylesheets/skins/default.css" />
  40. <!-- Theme Custom CSS -->
  41. <link rel="stylesheet" href="assets/stylesheets/theme-custom.css">
  42. <!-- Head Libs -->
  43. <script src="assets/vendor/modernizr/modernizr.js"></script>
  44. <!-- chart.js -->
  45. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  46. <!-- DataTable -->
  47. <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.25/css/jquery.dataTables.css">
  48. <script type="text/javascript" charset="utf8" src="https://cdn.datatables.net/1.10.25/js/jquery.dataTables.js"></script>
  49. <!-- Icon -->
  50. <link rel="shortcut icon" href="assets/images/favicon.ico" />
  51. <link href="https://js.arcgis.com/4.21/esri/themes/light/main.css" rel="stylesheet">
  52. <link href="./CustomCSS/main.css" rel="stylesheet">
  53. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js"></script>
  54. <script src="./script/js/jstreeAJAX.js"></script>
  55. <script src="https://js.arcgis.com/4.21/"></script>
  56. <style>
  57. .row {
  58. margin-top: -15px;
  59. }
  60. .page-header>ul {
  61. list-style: none;
  62. padding: 0;
  63. margin: 0;
  64. }
  65. .page-header>ul>li {
  66. display: inline-block;
  67. font-size: 25px;
  68. color: #FFFFFF;
  69. }
  70. .page-header>ul>li.right {
  71. float: right;
  72. padding-right: 10px;
  73. }
  74. .input-search {
  75. margin-top: 8px;
  76. }
  77. .page-header li>label {
  78. margin-top: 13px;
  79. border-bottom: 4px solid #0088cc;
  80. height: 41px;
  81. }
  82. .sidebar-left {
  83. box-shadow: 0 0 0;
  84. }
  85. .jstree-default .jstree-icon {
  86. color: #ffe693;
  87. }
  88. .jqsfield {
  89. color: white;
  90. font: 10px arial, san serif;
  91. text-align: left;
  92. }
  93. .jstree-anchor {
  94. width: 250px;
  95. text-overflow: ellipsis;
  96. overflow: hidden;
  97. white-space: nowrap;
  98. }
  99. .jstree-anchor,
  100. .jstree-anchor:link,
  101. .jstree-anchor:visited,
  102. .jstree-anchor:hover,
  103. .jstree-anchor:active {
  104. color: #abb4be;
  105. }
  106. td,
  107. th {
  108. text-align: center;
  109. }
  110. th {
  111. width: 30%;
  112. }
  113. .nav-main {
  114. padding: 15px;
  115. }
  116. .node-hidden {
  117. display: none;
  118. }
  119. html.fixed .page-header {
  120. left: 349px;
  121. }
  122. html.fixed .content-body {
  123. margin-left: 350px;
  124. }
  125. .sidebar-left {
  126. width: 350px;
  127. }
  128. #datatable-ajax tr:hover {
  129. background-color: #e8e8e8;
  130. }
  131. #viewDiv {
  132. height: 100%;
  133. width: 100%;
  134. }
  135. #zoom {
  136. margin-bottom: 5px;
  137. }
  138. #actions {
  139. padding: 5px;
  140. }
  141. .container {
  142. height: 50%;
  143. width: 100%;
  144. }
  145. #createSlideDiv {
  146. background-color: white;
  147. opacity: 0.9;
  148. color: black;
  149. padding: 6px;
  150. }
  151. #slidesDiv {
  152. background-color: white;
  153. opacity: 0.9;
  154. color: black;
  155. padding: 10px;
  156. visibility: hidden;
  157. bottom: 20px;
  158. overflow-y: auto;
  159. text-align: center;
  160. height: 260px;
  161. }
  162. #slidesDiv .slide {
  163. /* Show cursor as pointer when on a slide */
  164. cursor: pointer;
  165. margin-bottom: 6px;
  166. }
  167. #slidesDiv .slide .title {
  168. /* Center the title text */
  169. text-align: center;
  170. }
  171. /* Draw active slide with a nice border around the thumbnail */
  172. #slidesDiv .slide.active img {
  173. box-shadow: 0px 0px 12px black;
  174. border-style: solid;
  175. border-width: thin;
  176. border-color: black;
  177. }
  178. </style>
  179. <script>
  180. $(document).ready(function() {
  181. getToken();
  182. });
  183. var token;
  184. function getToken() {
  185. var t;
  186. $.ajax({
  187. url: "./scripts/PHP/access_token.php",
  188. type: "GET",
  189. async: false,
  190. }).done(function(data) {
  191. token = data;
  192. //data = JSON.parse(data);
  193. }).error(function() {
  194. });
  195. }
  196. require([
  197. "esri/config",
  198. "esri/Map",
  199. "esri/WebScene",
  200. "esri/views/SceneView",
  201. "esri/core/urlUtils",
  202. "esri/identity/OAuthInfo",
  203. "esri/identity/IdentityManager",
  204. "esri/widgets/Legend",
  205. "esri/widgets/Home",
  206. "esri/widgets/Fullscreen",
  207. "esri/widgets/Slider",
  208. "esri/widgets/BasemapGallery",
  209. "esri/widgets/LayerList",
  210. "esri/layers/GroupLayer",
  211. "esri/layers/FeatureLayer",
  212. "esri/widgets/FeatureTable",
  213. "esri/tasks/support/Query",
  214. "esri/layers/SceneLayer",
  215. "esri/widgets/Zoom",
  216. "esri/widgets/Compass",
  217. "esri/widgets/NavigationToggle",
  218. "esri/widgets/Slice",
  219. "esri/widgets/Search",
  220. "esri/geometry/Point",
  221. "esri/geometry/Polyline",
  222. "esri/webscene/Slide",
  223. "esri/symbols/WebStyleSymbol",
  224. "esri/widgets/DirectLineMeasurement3D",
  225. "esri/widgets/AreaMeasurement3D",
  226. "esri/Graphic",
  227. "esri/widgets/Search/LocatorSearchSource",
  228. "esri/renderers/UniqueValueRenderer",
  229. "esri/geometry/geometryEngine",
  230. "esri/widgets/Expand",
  231. "esri/layers/GeoJSONLayer",
  232. "esri/PopupTemplate",
  233. "esri/renderers/Renderer",
  234. "esri/geometry/projection"
  235. ], (esriConfig, Map, WebScene, SceneView, urlUtils, OAuthInfo, esriId,
  236. Legend,
  237. Home,
  238. Fullscreen,
  239. Slider,
  240. BasemapGallery,
  241. LayerList,
  242. GroupLayer,
  243. FeatureLayer,
  244. FeatureTable,
  245. Query,
  246. SceneLayer,
  247. Zoom,
  248. Compass,
  249. NavigationToggle,
  250. Slice,
  251. Search,
  252. Point,
  253. Polyline,
  254. Slide,
  255. WebStyleSymbol,
  256. DirectLineMeasurement3D,
  257. AreaMeasurement3D,
  258. Graphic,
  259. LocatorSearchSource,
  260. UniqueValueRenderer,
  261. geometryEngine,
  262. Expand, GeoJsonLayer, PopupTemplate, Renderer, projection) => {
  263. esriConfig.apiKey = token;
  264. const webscene = new WebScene({
  265. portalItem: {
  266. id: "dea6580d8d4547df9915a822fe7f2b9d"
  267. },
  268. opacity: .75,
  269. showAttribution: false,
  270. });
  271. var featureLayer = new FeatureLayer({
  272. url: "https://services3.arcgis.com/W6g8dmWX0ILAHcNd/arcgis/rest/services/%E5%B7%A5%E7%A8%8B%E8%A8%AD%E8%A8%88%E8%B3%87%E6%96%99%E5%BA%AB/FeatureServer",
  273. outFields: ["*"],
  274. //renderer: poleRenderer,
  275. title: "工程設計資料庫",
  276. elevationInfo: "on-the-ground",
  277. visible: true
  278. });
  279. webscene.add(featureLayer);
  280. const view = new SceneView({
  281. container: "viewDiv",
  282. map: webscene,
  283. popup: {
  284. defaultPopupTemplateEnabled: true,
  285. dockEnabled: true,
  286. dockOptions: {
  287. breakpoint: false,
  288. buttonEnabled: false,
  289. position: "bottom-right",
  290. }
  291. }
  292. });
  293. window.view = view;
  294. view.ui.empty("top-left");
  295. //view.ui.empty("manual");
  296. view.ui.add(
  297. new Expand({
  298. view: view,
  299. content: new BasemapGallery({
  300. view: view
  301. }),
  302. autoCollapse: true,
  303. group: "top-left"
  304. }),
  305. "top-left"
  306. );
  307. view.ui.add(
  308. new Expand({
  309. view: view,
  310. content: new Legend({
  311. view: view
  312. }),
  313. autoCollapse: true,
  314. group: "top-left"
  315. }),
  316. "top-left"
  317. );
  318. view.ui.add(
  319. new Home({
  320. view: view,
  321. group: "top-left"
  322. }),
  323. "top-left"
  324. );
  325. //新增量測工具
  326. var activeMeasureWidget = new DirectLineMeasurement3D({
  327. view: view
  328. });
  329. var pMeasureExpand = new Expand({
  330. view: view,
  331. container: document.getElementById("measureExpendDiv"),
  332. content: activeMeasureWidget,
  333. group: "top-left"
  334. });
  335. var activeMeasureWidget2 = new AreaMeasurement3D({
  336. view: view
  337. });
  338. var pMeasureExpand2 = new Expand({
  339. view: view,
  340. container: document.getElementById("measureExpendDiv2"),
  341. content: activeMeasureWidget2,
  342. group: "top-left"
  343. });
  344. view.ui.add([pMeasureExpand, pMeasureExpand2], "top-left");
  345. /*
  346. var activeMeasureWidget = new DirectLineMeasurement3D({
  347. container: document.getElementById("measureExpendDiv"),
  348. view: view
  349. });
  350. var pMeasureExpand = new Expand({
  351. view: view,
  352. content: activeMeasureWidget,
  353. group: "top-left"
  354. });
  355. view.ui.add(
  356. pMeasureExpand,
  357. "top-left"
  358. );*/
  359. view.ui.add(
  360. new Fullscreen({
  361. view: view,
  362. group: "top-left"
  363. }),
  364. "top-right"
  365. );
  366. view.ui.add(
  367. new Zoom({
  368. view: view
  369. }),
  370. "top-right"
  371. );
  372. view.ui.add(
  373. new NavigationToggle({
  374. view: view
  375. }),
  376. "top-right"
  377. );
  378. view.ui.add(
  379. new Compass({
  380. view: view
  381. }),
  382. "top-right"
  383. );
  384. $("#measureExpendDiv .esri-widget--button").click(function() {
  385. if (pMeasureExpand.expanded) {
  386. activeMeasureWidget.viewModel.newMeasurement();
  387. } else {
  388. activeMeasureWidget.viewModel.clearMeasurement();
  389. }
  390. });
  391. function zoomToLayer(layer) {
  392. return layer.queryExtent().then((response) => {
  393. view.goTo({
  394. target: response.extent,
  395. tilt: 0,
  396. heading: 0,
  397. }).catch((error) => {
  398. console.error(error);
  399. });
  400. });
  401. }
  402. $('#treeAjaxHTML').on("select_node.jstree", function(e, data) {
  403. if (data.node.text.includes("-")) {
  404. project_id = data.node.text.split("-")[0];
  405. featureLayer.definitionExpression = "計畫編號 = " + project_id;
  406. zoomToLayer(featureLayer);
  407. }
  408. /*else{
  409. type = data.node.text;
  410. console.log(type);
  411. featureLayer.definitionExpression = "工程類別 = '"+ type + "'";
  412. zoomToLayer(featureLayer);
  413. }*/
  414. });
  415. view.when(function() {
  416. });
  417. });
  418. </script>
  419. </head>
  420. <body>
  421. <script type="application/javascript">
  422. var test;
  423. var i = 0;
  424. var download;
  425. var fileName;
  426. var folder;
  427. var software;
  428. var userName = 'maabim';
  429. jQuery(window).load(function() {
  430. var searchURL = window.location.search;
  431. searchURL = searchURL.substring(1, searchURL.length);
  432. if (searchURL.includes("=")) {
  433. projectId = decodeURIComponent(searchURL.split("&")[1].split("=")[1]);
  434. var projectNode = $(".jstree-anchor").filter(function() {
  435. return $(this).text().includes(projectId);
  436. });
  437. var projectId = projectNode[0].attributes.id.value;
  438. $('#treeAjaxHTML').jstree("select_node", projectId);
  439. $("#treeAjaxHTML").jstree("close_all");
  440. }
  441. });
  442. //var typeId = node[0].attributes.id.value;
  443. </script>
  444. <section class="body">
  445. <!-- start: header -->
  446. <header class="header">
  447. <div class="logo-container">
  448. <div class="banner-txt">資料庫管理</div>
  449. <div class="visible-xs toggle-sidebar-left" data-toggle-class="sidebar-left-opened" data-target="html" data-fire-event="sidebar-left-opened">
  450. <i class="fa fa-bars" aria-label="Toggle sidebar"></i>
  451. </div>
  452. </div>
  453. <!-- start: search & user box -->
  454. <div class="header-right">
  455. <span class="separator"></span>
  456. <div id="userbox" class="userbox">
  457. <a href="#" data-toggle="dropdown">
  458. <figure class="profile-picture"> <img src="assets/images/!logged-user.jpg" alt="Joseph Doe" class="img-circle" data-lock-picture="assets/images/!logged-user.jpg" /> </figure>
  459. <div class="profile-info" data-lock-name="John Doe" data-lock-email="johndoe@JSOFT.com"> <span class="name"><?php echo $_SESSION['name'] ?></span> <span class="role">administrator</span> </div> <i class="fa custom-caret"></i>
  460. </a>
  461. <div class="dropdown-menu">
  462. <ul class="list-unstyled">
  463. <li class="divider"></li>
  464. <li> <a role="menuitem" tabindex="-1" href="./script/php/Logout.php"><i class="fa fa-power-off"></i> Logout</a> </li>
  465. </ul>
  466. </div>
  467. </div>
  468. </div>
  469. <!-- end: search & user box -->
  470. </header>
  471. <!-- end: header -->
  472. <div class="inner-wrapper">
  473. <!-- start: sidebar -->
  474. <aside id="sidebar-left" class="sidebar-left">
  475. <div class="nano">
  476. <div class="nano-content">
  477. <nav id="menu" class="nav-main" role="navigation">
  478. <div class="widget-header clearfix">
  479. <h6 class="title pull-left mt-xs">資料庫文件</h6>
  480. </div>
  481. <div class="widget-content">
  482. <div class="jstree jstree-1 jstree-default" id="treeAjaxHTML"></div>
  483. </div>
  484. </nav>
  485. </div>
  486. </div>
  487. </aside>
  488. <!-- end: sidebar -->
  489. <section role="main" class="content-body">
  490. <header class="page-header">
  491. <ul>
  492. <li>
  493. <label id="header"></label>
  494. </li>
  495. <li class="right">
  496. <div class="input-group input-search" style="table-layout: auto;"><input type="text" class="form-control" name="search" id="search" placeholder="Search..."><span class="input-group-btn"><button class="btn btn-default" id="btn-search"><i class="fa fa-search"></i></button></span></div>
  497. </li>
  498. </ul>
  499. </header>
  500. <div class="row">
  501. <div class="col-md-12">
  502. <section class="panel">
  503. <div class="panel-body">
  504. <div id="folderPath" style="float: left;"></div>
  505. <button id="reset" type="button" class="mb-xs mr-xs btn btn-default" style="float: right;"><i class="fa fa-reply"></i> 上一層</button>
  506. <table style="width:99%;" class="table table-bordered table-striped" id="datatable-ajax">
  507. <thead>
  508. <tr>
  509. <th id="SN">項次</th>
  510. <th id="name">類別</th>
  511. <th>關鍵字</th>
  512. <th>版次</th>
  513. </tr>
  514. </thead>
  515. <tbody>
  516. </tbody>
  517. </table>
  518. </div>
  519. </section>
  520. </div>
  521. </div>
  522. <div class="row">
  523. <div class="col-md-6">
  524. <section class="panel">
  525. <div id="panel" class="panel-body" style="height:370px">
  526. <div class="table-responsive" style="display:none;">
  527. <table class="table table-bordered mb-none" id="tableDetail">
  528. <tbody>
  529. <tr>
  530. <th>計畫編號</th>
  531. <td id="plan_code"></td>
  532. </tr>
  533. <tr>
  534. <th>計畫名稱</th>
  535. <td id="plan_name"></td>
  536. </tr>
  537. <tr>
  538. <th>圖名</th>
  539. <td id="fileName"></td>
  540. </tr>
  541. <tr>
  542. <th>版次</th>
  543. <td id="version"></td>
  544. </tr>
  545. <tr>
  546. <th>文件</th>
  547. <td id="download"></td>
  548. </tr>
  549. </tbody>
  550. </table>
  551. </div>
  552. </div>
  553. </section>
  554. </div>
  555. <div class="col-md-6">
  556. <section class="panel">
  557. <div id="arcgis" class="panel-body" style="height:370px">
  558. <div class="mapok" style="height:100%">
  559. <div id="viewDiv"></div>
  560. <div id="measureExpendDiv"></div>
  561. <div id="measureExpendDiv2"></div>
  562. <div id="slidesDiv" class="esri-widget"></div>
  563. <span style="display:none;" id="project-id"></span>
  564. </div>
  565. </div>
  566. </section>
  567. </div>
  568. </div>
  569. </div>
  570. </section>
  571. </div>
  572. </section>
  573. </body>
  574. </html>