index.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786
  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 src="./script/js/bootstrap.js"></script>
  54. <script src="./script/js/pdfobject.min.js"></script>
  55. <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js"></script>
  56. <script src="./script/js/jstreeAJAX.js"></script>
  57. <script src="https://js.arcgis.com/4.21/"></script>
  58. <!-- vue3 -->
  59. <script src="https://unpkg.com/vue@next"></script>
  60. <script src="./script/js/vue-search-block.js"></script>
  61. <script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.min.js"></script>
  62. <style>
  63. .row {
  64. margin-top: -15px;
  65. }
  66. .page-header>ul {
  67. list-style: none;
  68. padding: 0;
  69. margin: 0;
  70. }
  71. .page-header>ul>li {
  72. display: inline-block;
  73. font-size: 25px;
  74. color: #FFFFFF;
  75. }
  76. .page-header>ul>li.right {
  77. float: right;
  78. padding-right: 10px;
  79. }
  80. .input-search {
  81. margin-top: 8px;
  82. }
  83. .page-header li>label {
  84. margin-top: 13px;
  85. border-bottom: 4px solid #0088cc;
  86. height: 41px;
  87. }
  88. .sidebar-left {
  89. box-shadow: 0 0 0;
  90. }
  91. .jstree-default .jstree-icon {
  92. color: #ffe693;
  93. }
  94. .jqsfield {
  95. color: white;
  96. font: 10px arial, san serif;
  97. text-align: left;
  98. }
  99. .jstree-anchor {
  100. width: 250px;
  101. text-overflow: ellipsis;
  102. overflow: hidden;
  103. white-space: nowrap;
  104. }
  105. .jstree-anchor,
  106. .jstree-anchor:link,
  107. .jstree-anchor:visited,
  108. .jstree-anchor:hover,
  109. .jstree-anchor:active {
  110. color: #abb4be;
  111. }
  112. td,
  113. th {
  114. text-align: center;
  115. }
  116. th {
  117. width: 30%;
  118. }
  119. .nav-main {
  120. padding: 15px;
  121. }
  122. .node-hidden {
  123. display: none;
  124. }
  125. html.fixed .page-header {
  126. left: 349px;
  127. }
  128. html.fixed .content-body {
  129. margin-left: 350px;
  130. }
  131. .sidebar-left {
  132. width: 350px;
  133. }
  134. #datatable-ajax tr:hover {
  135. background-color: #e8e8e8;
  136. }
  137. #viewDiv {
  138. height: 100%;
  139. width: 100%;
  140. }
  141. #zoom {
  142. margin-bottom: 5px;
  143. }
  144. #actions {
  145. padding: 5px;
  146. }
  147. .container {
  148. height: 50%;
  149. width: 100%;
  150. }
  151. #createSlideDiv {
  152. background-color: white;
  153. opacity: 0.9;
  154. color: black;
  155. padding: 6px;
  156. }
  157. #slidesDiv {
  158. background-color: white;
  159. opacity: 0.9;
  160. color: black;
  161. padding: 10px;
  162. visibility: hidden;
  163. bottom: 20px;
  164. overflow-y: auto;
  165. text-align: center;
  166. height: 260px;
  167. }
  168. #slidesDiv .slide {
  169. /* Show cursor as pointer when on a slide */
  170. cursor: pointer;
  171. margin-bottom: 6px;
  172. }
  173. #slidesDiv .slide .title {
  174. /* Center the title text */
  175. text-align: center;
  176. }
  177. /* Draw active slide with a nice border around the thumbnail */
  178. #slidesDiv .slide.active img {
  179. box-shadow: 0px 0px 12px black;
  180. border-style: solid;
  181. border-width: thin;
  182. border-color: black;
  183. }
  184. .pdfobject-container {
  185. height: 730px;
  186. }
  187. #topbar {
  188. background: #fff;
  189. padding: 10px;
  190. }
  191. #datatable-ajax_length {
  192. width: 100%;
  193. }
  194. </style>
  195. <script>
  196. $(document).ready(function() {
  197. getToken();
  198. });
  199. var token;
  200. function getToken() {
  201. var t;
  202. $.ajax({
  203. url: "./scripts/PHP/access_token.php",
  204. type: "GET",
  205. async: false,
  206. }).done(function(data) {
  207. token = data;
  208. //data = JSON.parse(data);
  209. }).error(function() {
  210. });
  211. }
  212. require([
  213. "esri/config",
  214. "esri/Map",
  215. "esri/WebScene",
  216. "esri/views/SceneView",
  217. "esri/core/urlUtils",
  218. "esri/identity/OAuthInfo",
  219. "esri/identity/IdentityManager",
  220. "esri/widgets/Legend",
  221. "esri/widgets/Home",
  222. "esri/widgets/Fullscreen",
  223. "esri/widgets/Slider",
  224. "esri/widgets/BasemapGallery",
  225. "esri/widgets/LayerList",
  226. "esri/layers/GroupLayer",
  227. "esri/layers/FeatureLayer",
  228. "esri/widgets/FeatureTable",
  229. "esri/tasks/support/Query",
  230. "esri/layers/SceneLayer",
  231. "esri/widgets/Zoom",
  232. "esri/widgets/Compass",
  233. "esri/widgets/NavigationToggle",
  234. "esri/widgets/Slice",
  235. "esri/widgets/Search",
  236. "esri/geometry/Point",
  237. "esri/geometry/Polyline",
  238. "esri/webscene/Slide",
  239. "esri/symbols/WebStyleSymbol",
  240. "esri/widgets/DirectLineMeasurement3D",
  241. "esri/widgets/AreaMeasurement3D",
  242. "esri/Graphic",
  243. "esri/widgets/Search/LocatorSearchSource",
  244. "esri/renderers/UniqueValueRenderer",
  245. "esri/geometry/geometryEngine",
  246. "esri/widgets/Expand",
  247. "esri/layers/GeoJSONLayer",
  248. "esri/PopupTemplate",
  249. "esri/renderers/Renderer",
  250. "esri/geometry/projection"
  251. ], (esriConfig, Map, WebScene, SceneView, urlUtils, OAuthInfo, esriId,
  252. Legend,
  253. Home,
  254. Fullscreen,
  255. Slider,
  256. BasemapGallery,
  257. LayerList,
  258. GroupLayer,
  259. FeatureLayer,
  260. FeatureTable,
  261. Query,
  262. SceneLayer,
  263. Zoom,
  264. Compass,
  265. NavigationToggle,
  266. Slice,
  267. Search,
  268. Point,
  269. Polyline,
  270. Slide,
  271. WebStyleSymbol,
  272. DirectLineMeasurement3D,
  273. AreaMeasurement3D,
  274. Graphic,
  275. LocatorSearchSource,
  276. UniqueValueRenderer,
  277. geometryEngine,
  278. Expand, GeoJsonLayer, PopupTemplate, Renderer, projection) => {
  279. esriConfig.apiKey = token;
  280. let activeWidget = null;
  281. const webscene = new WebScene({
  282. portalItem: {
  283. id: "dea6580d8d4547df9915a822fe7f2b9d"
  284. },
  285. opacity: .75,
  286. showAttribution: false,
  287. });
  288. var featureLayer = new FeatureLayer({
  289. 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",
  290. outFields: ["*"],
  291. //renderer: poleRenderer,
  292. title: "工程設計資料庫",
  293. elevationInfo: "on-the-ground",
  294. visible: true
  295. });
  296. webscene.add(featureLayer);
  297. const view = new SceneView({
  298. container: "viewDiv",
  299. map: webscene,
  300. popup: {
  301. defaultPopupTemplateEnabled: true,
  302. dockEnabled: true,
  303. dockOptions: {
  304. breakpoint: false,
  305. buttonEnabled: false,
  306. position: "bottom-right",
  307. }
  308. }
  309. });
  310. window.view = view;
  311. view.ui.empty("top-left");
  312. //view.ui.empty("manual");
  313. view.ui.add(
  314. new Expand({
  315. view: view,
  316. content: new BasemapGallery({
  317. view: view
  318. }),
  319. autoCollapse: true,
  320. group: "top-left"
  321. }),
  322. "top-left"
  323. );
  324. view.ui.add(
  325. new Expand({
  326. view: view,
  327. content: new Legend({
  328. view: view
  329. }),
  330. autoCollapse: true,
  331. group: "top-left"
  332. }),
  333. "top-left"
  334. );
  335. view.ui.add(
  336. new Home({
  337. view: view,
  338. group: "top-left"
  339. }),
  340. "top-left"
  341. );
  342. //新增量測工具
  343. view.ui.add("topbar", "bottom-right");
  344. document
  345. .getElementById("distanceButton")
  346. .addEventListener("click", (event) => {
  347. setActiveWidget(null);
  348. if (!event.target.classList.contains("active")) {
  349. setActiveWidget("distance");
  350. } else {
  351. setActiveButton(null);
  352. }
  353. });
  354. document
  355. .getElementById("areaButton")
  356. .addEventListener("click", (event) => {
  357. setActiveWidget(null);
  358. if (!event.target.classList.contains("active")) {
  359. setActiveWidget("area");
  360. } else {
  361. setActiveButton(null);
  362. }
  363. });
  364. document
  365. .getElementById("clear")
  366. .addEventListener("click", (event) => {
  367. setActiveWidget(null);
  368. setActiveButton(null);
  369. });
  370. function setActiveWidget(type) {
  371. switch (type) {
  372. case "distance":
  373. activeWidget = new DirectLineMeasurement3D({
  374. view: view
  375. });
  376. // skip the initial 'new measurement' button
  377. activeWidget.viewModel.start().catch((error) => {
  378. if (promiseUtils.isAbortError(error)) {
  379. return; // don't display abort errors
  380. }
  381. throw error; // throw other errors since they are of interest
  382. });
  383. view.ui.add(activeWidget, "bottom-left");
  384. setActiveButton(document.getElementById("distanceButton"));
  385. break;
  386. case "area":
  387. activeWidget = new AreaMeasurement3D({
  388. view: view
  389. });
  390. // skip the initial 'new measurement' button
  391. activeWidget.viewModel.start().catch((error) => {
  392. if (promiseUtils.isAbortError(error)) {
  393. return; // don't display abort errors
  394. }
  395. throw error; // throw other errors since they are of interest
  396. });
  397. view.ui.add(activeWidget, "bottom-left");
  398. setActiveButton(document.getElementById("areaButton"));
  399. break;
  400. case null:
  401. if (activeWidget) {
  402. view.ui.remove(activeWidget);
  403. activeWidget.destroy();
  404. activeWidget = null;
  405. }
  406. break;
  407. }
  408. }
  409. function setActiveButton(selectedButton) {
  410. // focus the view to activate keyboard shortcuts for sketching
  411. view.focus();
  412. const elements = document.getElementById("topbar").getElementsByClassName("active");
  413. for (let i = 0; i < elements.length; i++) {
  414. elements[i].classList.remove("active");
  415. }
  416. if (selectedButton) {
  417. selectedButton.classList.add("active");
  418. }
  419. }
  420. view.ui.add(
  421. new Fullscreen({
  422. view: view,
  423. group: "top-left"
  424. }),
  425. "top-right"
  426. );
  427. view.ui.add(
  428. new Zoom({
  429. view: view
  430. }),
  431. "top-right"
  432. );
  433. view.ui.add(
  434. new NavigationToggle({
  435. view: view
  436. }),
  437. "top-right"
  438. );
  439. view.ui.add(
  440. new Compass({
  441. view: view
  442. }),
  443. "top-right"
  444. );
  445. $("#measureExpendDiv .esri-widget--button").click(function() {
  446. if (pMeasureExpand.expanded) {
  447. activeMeasureWidget.viewModel.newMeasurement();
  448. } else {
  449. activeMeasureWidget.viewModel.clearMeasurement();
  450. }
  451. });
  452. function zoomToLayer(layer) {
  453. return layer.queryExtent().then((response) => {
  454. view.goTo({
  455. target: response.extent,
  456. tilt: 0,
  457. heading: 0,
  458. }).catch((error) => {
  459. console.error(error);
  460. });
  461. });
  462. }
  463. $('#treeAjaxHTML').on("select_node.jstree", function(e, data) {
  464. if (data.node.text.includes("-")) {
  465. project_id = data.node.text.split("-")[0];
  466. featureLayer.definitionExpression = "計畫編號 = " + project_id;
  467. zoomToLayer(featureLayer);
  468. }
  469. /*else{
  470. type = data.node.text;
  471. console.log(type);
  472. featureLayer.definitionExpression = "工程類別 = '"+ type + "'";
  473. zoomToLayer(featureLayer);
  474. }*/
  475. });
  476. view.when(function() {
  477. });
  478. });
  479. </script>
  480. </head>
  481. <body>
  482. <script type="application/javascript">
  483. var test;
  484. var i = 0;
  485. var download;
  486. var fileName;
  487. var folder;
  488. var software;
  489. var userName = 'maabim';
  490. jQuery(window).load(function() {
  491. var searchURL = window.location.search;
  492. searchURL = searchURL.substring(1, searchURL.length);
  493. if (searchURL.includes("=")) {
  494. projectId = decodeURIComponent(searchURL.split("&")[0].split("=")[1]);
  495. var projectNode = $(".jstree-anchor").filter(function() {
  496. return $(this).text().includes(projectId);
  497. });
  498. var projectId = projectNode[0].attributes.id.value;
  499. $('#treeAjaxHTML').jstree("select_node", projectId);
  500. $("#treeAjaxHTML").jstree("close_all");
  501. }
  502. });
  503. //var typeId = node[0].attributes.id.value;
  504. </script>
  505. <section class="body">
  506. <!-- start: header -->
  507. <header class="header">
  508. <div class="logo-container">
  509. <div class="banner-txt">資料庫管理</div>
  510. <div class="visible-xs toggle-sidebar-left" data-toggle-class="sidebar-left-opened" data-target="html" data-fire-event="sidebar-left-opened">
  511. <i class="fa fa-bars" aria-label="Toggle sidebar"></i>
  512. </div>
  513. </div>
  514. <!-- start: search & user box -->
  515. <div class="header-right">
  516. <span class="separator"></span>
  517. <ul class="notifications">
  518. <li>
  519. <a href="/Front-Page/home.php" class="notification-icon" data-toggle="tooltip" title="綜合登入入口" data-placement="bottom">
  520. <i class="fa fa-home"></i>
  521. </a>
  522. </li>
  523. </ul>
  524. <span class="separator"></span>
  525. <div id="userbox" class="userbox">
  526. <a href="#" data-toggle="dropdown">
  527. <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>
  528. <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>
  529. </a>
  530. <div class="dropdown-menu">
  531. <ul class="list-unstyled">
  532. <li class="divider"></li>
  533. <li> <a role="menuitem" tabindex="-1" href="./script/php/Logout.php"><i class="fa fa-power-off"></i> Logout</a> </li>
  534. </ul>
  535. </div>
  536. </div>
  537. </div>
  538. <!-- end: search & user box -->
  539. </header>
  540. <!-- end: header -->
  541. <div class="inner-wrapper">
  542. <!-- start: sidebar -->
  543. <aside id="sidebar-left" class="sidebar-left">
  544. <div class="nano">
  545. <div class="nano-content">
  546. <nav id="menu" class="nav-main" role="navigation">
  547. <div class="widget-header clearfix">
  548. <h6 class="title pull-left mt-xs">資料庫文件</h6>
  549. </div>
  550. <div class="widget-content">
  551. <div class="jstree jstree-1 jstree-default" id="treeAjaxHTML"></div>
  552. </div>
  553. </nav>
  554. </div>
  555. </div>
  556. </aside>
  557. <!-- end: sidebar -->
  558. <section role="main" class="content-body">
  559. <header class="page-header">
  560. <ul>
  561. <li>
  562. <label id="header"></label>
  563. </li>
  564. <li class="right">
  565. <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>
  566. </li>
  567. </ul>
  568. </header>
  569. <div class="row">
  570. <search-block></search-block>
  571. <div class="col-md-6">
  572. <section class="panel">
  573. <div class="panel-body">
  574. <button id="reset" type="button" class="mb-xs mr-xs btn btn-default" style="float: right;"><i class="fa fa-reply"></i> 上一層</button>
  575. <table style="width:99%;" class="table table-bordered table-striped" id="datatable-ajax">
  576. <thead>
  577. <tr>
  578. <th id="SN">項次</th>
  579. <th id="name">類別</th>
  580. <th>關鍵字</th>
  581. <th>版次</th>
  582. <th>檔案數</th>
  583. </tr>
  584. </thead>
  585. <tbody>
  586. </tbody>
  587. </table>
  588. </div>
  589. </section>
  590. <section class="panel">
  591. <div id="panel" class="panel-body" style="height: 300px;">
  592. <div class="table-responsive" style="display:none;">
  593. <table class="table table-bordered mb-none" id="tableDetail">
  594. <tbody>
  595. <tr>
  596. <th>計畫編號</th>
  597. <td id="plan_code"></td>
  598. </tr>
  599. <tr>
  600. <th>計畫名稱</th>
  601. <td id="plan_name"></td>
  602. </tr>
  603. <tr>
  604. <th>圖名</th>
  605. <td id="fileName"></td>
  606. </tr>
  607. <tr>
  608. <th>版次</th>
  609. <td id="version"></td>
  610. </tr>
  611. <tr>
  612. <th>文件</th>
  613. <td id="download"></td>
  614. </tr>
  615. </tbody>
  616. </table>
  617. </div>
  618. </div>
  619. </section>
  620. </div>
  621. <div class="col-md-6">
  622. <div class="tabs">
  623. <ul class="nav nav-tabs nav-justified">
  624. <li class="active">
  625. <a href="#arcgisTab" data-toggle="tab" class="text-center"><i class="fa fa-map-marker"></i> ArcGIS</a>
  626. </li>
  627. <li>
  628. <a href="#pdfTab" data-toggle="tab" class="text-center"><i class="fa fa-file"></i> Pdf 預覽</a>
  629. </li>
  630. </ul>
  631. <div class="tab-content">
  632. <div id="arcgisTab" class="tab-pane active">
  633. <div id="arcgis" class="panel-body" style="height: 730px;">
  634. <div class="mapok" style="height:100%">
  635. <div id="topbar" class="esri-component esri-widget">
  636. <button id="distanceButton" class="action-button esri-icon-measure-line" type="button" title="Measure distance between two points"></button>
  637. <button id="areaButton" class="action-button esri-icon-measure-area" type="button" title="Measure area"></button>
  638. <button id="clear" class="action-button esri-icon-trash" title="Clear Measurements"></button>
  639. </div>
  640. <div id="viewDiv"></div>
  641. <div id="measureExpendDiv"></div>
  642. <div id="measureExpendDiv2"></div>
  643. <div id="slidesDiv" class="esri-widget"></div>
  644. <span style="display:none;" id="project-id"></span>
  645. </div>
  646. </div>
  647. </div>
  648. <div id="pdfTab" class="tab-pane">
  649. <div id="pdfFile"></div>
  650. </div>
  651. </div>
  652. </div>
  653. </div>
  654. </div>
  655. </section>
  656. </div>
  657. </section>
  658. </div>
  659. <script>vm.mount('.body');</script>
  660. <script>
  661. var $isotope_project = $('.project_button').isotope({
  662. itemSelector: '.project'
  663. });
  664. var filters = {};
  665. $('.filter_for_project').on( 'click', '.button', function() {
  666. var $this = $(this);
  667. // get group key
  668. var $buttonGroup = $this.parents('.button-group');
  669. var filterGroup = $buttonGroup.attr('data-filter-group');
  670. // set filter for group
  671. filters[ filterGroup ] = $this.attr('data-filter');
  672. // combine filters
  673. var filterValue = concatValues( filters );
  674. // set filter for Isotope
  675. $isotope_project.isotope({ filter: filterValue });
  676. });
  677. function concatValues( obj ) {
  678. var value = '';
  679. for ( var prop in obj ) {
  680. value += obj[ prop ];
  681. }
  682. return value;
  683. }
  684. </script>
  685. </body>
  686. </html>