api-detail.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273
  1. <?php
  2. session_start();
  3. if (!isset($_SESSION['loggedin'])) {
  4. header('Location: pages-signin.html');
  5. exit;
  6. }
  7. ?>
  8. <!doctype html>
  9. <html class="fixed sidebar-left-collapsed">
  10. <head>
  11. <!-- jstree CSS -->
  12. <link rel="stylesheet" href="assets/vendor/jstree/themes/default/style.css" />
  13. <?php include("bim-support-header.html"); ?>
  14. <script src="./script/js/global.js"></script>
  15. <script type="application/javascript">
  16. var i = 0;
  17. var api = [];
  18. var fileName;
  19. var folder;
  20. var software;
  21. var userName = '<?php echo $_SESSION['name']; ?>';
  22. var webLink;
  23. var source;
  24. var searchURL = window.location.search;
  25. searchURL = searchURL.substring(1, searchURL.length);
  26. object = decodeURIComponent(searchURL.split("&")[0].split("=")[1]);
  27. if (object == 'undefined') {
  28. window.location.href = "./api-list.php";
  29. }
  30. $.ajax({
  31. url: "./script/php/api_group_detail.php",
  32. type: "GET",
  33. async: false,
  34. data: {
  35. object: object,
  36. },
  37. contentType: "application/json",
  38. dataType: "json"
  39. }).done(function(data) {
  40. if (data.APIID == null)
  41. data.APIID = '';
  42. folder = data.software + '/' + data.APIID + data.APIName;
  43. data[1] = data[1] == "Dynamo" ? data.software + " " + data.dynamoVersion : data.software + " " + data.revitVersion;
  44. for (i = 0; i < 6; i++) {
  45. if (data[i] != null)
  46. table.push(data[i]);
  47. else
  48. table.push("空");
  49. }
  50. webLink = data.webLink;
  51. source = data.source;
  52. }).error(function(error) {
  53. console.log(error);
  54. });
  55. $.ajax({
  56. url: "./script/php/update_popularity.php",
  57. type: "GET",
  58. async: false,
  59. data: {
  60. api_id: object,
  61. update_type: "viewTimes",
  62. },
  63. contentType: "application/json",
  64. dataType: "json"
  65. });
  66. pageHeader = "BIM程式庫";
  67. </script>
  68. </head>
  69. <body>
  70. <canvas id="c"></canvas>
  71. <section class="body">
  72. <!-- start: header -->
  73. <header-menu></header-menu>
  74. <!-- end: header -->
  75. <div class="inner-wrapper">
  76. <!-- start: sidebar -->
  77. <side-bar></side-bar>
  78. <!-- end: sidebar -->
  79. <section role="main" class="content-body">
  80. <header class="page-header">
  81. <h2>{{pageHeader}}</h2>
  82. </header>
  83. <!-- start: page -->
  84. <section class="content-with-menu content-with-menu-has-toolbar media-gallery">
  85. <div class="content-with-menu-container">
  86. <inner-menu>
  87. <template v-slot:inner-equipment>
  88. <api-list></api-list>
  89. </template>
  90. </inner-menu>
  91. <div class="inner-body mg-main">
  92. <div class="inner-toolbar">
  93. <ul>
  94. <li class="right">
  95. <a href="#" onclick="window.history.go(-1); return false;"><i class="fa fa-undo"></i> 返回</a>
  96. </li>
  97. </ul>
  98. </div>
  99. <div class="row">
  100. <div class="col-md-12">
  101. <section class="panel">
  102. <div class="panel-body">
  103. <div class="table-responsive">
  104. <table class="table table-bordered mb-none">
  105. <thead>
  106. <tr>
  107. <th width="10%">名稱</th>
  108. <th>開發版本</th>
  109. <th>詳細說明</th>
  110. <th>操作方式</th>
  111. <th width="5%">開發者</th>
  112. <th>備註</th>
  113. </tr>
  114. </thead>
  115. <tbody>
  116. <tr>
  117. <td>{{table[0]}}</td>
  118. <td>{{table[1]}}</td>
  119. <td>{{table[2]}}</td>
  120. <td>{{table[3]}}</td>
  121. <td id="webLink"></td>
  122. <td>{{table[5]}}</td>
  123. </tr>
  124. </tbody>
  125. </table>
  126. </div>
  127. </div>
  128. </section>
  129. </div>
  130. </div>
  131. <div class="row">
  132. <div class="col-md-6">
  133. <section class="panel">
  134. <div class="panel-body">
  135. <h5 class="text-semibold text-dark text-uppercase">參考檔案下載</h5>
  136. <div id="treeAjaxHTML"></div>
  137. </div>
  138. </section>
  139. </div>
  140. <div class="col-md-6">
  141. <section class="panel">
  142. <div class="panel-body">
  143. <img v-if="table[1].includes('ynamo')" src="./assets/images/dynamo-icon.png" style="height:80px; display: inline-block; vertical-align: top;"></img>
  144. <img v-else-if="table[1].includes('Revit')" src="./assets/images/revit-icon.png" style="height:80px; display: inline-block; vertical-align: top;"></img>
  145. <div class="summary" style="display: inline-block;">
  146. <div class="title"><strong>程式下載</strong></div>
  147. <div class="info" id="apiList">
  148. </div>
  149. </div>
  150. </div>
  151. </section>
  152. </div>
  153. </div>
  154. </div>
  155. </div>
  156. </section>
  157. <!-- end: page -->
  158. </section>
  159. </div>
  160. </section>
  161. <script>
  162. /*Vue */
  163. vm.mount('.body');
  164. const downloads = ["dll", "dyn", "exe", "msi"];
  165. const videos = ["mp4", "m3u8", "ts","avi"];
  166. if (webLink != null) {
  167. $("#webLink").append("<a href='" + webLink + "' target='_blank'>" + source + "</a>");
  168. } else if (webLink == null) {
  169. $("#webLink").append("<span>" + source + "</span>");
  170. }
  171. $(document).ready(function() {
  172. $("#apiList a").on("click", function() {
  173. $.ajax({
  174. url: "./script/php/update_popularity.php",
  175. type: "GET",
  176. async: false,
  177. data: {
  178. api_id: object,
  179. update_type: "downloadTimes",
  180. },
  181. contentType: "application/json",
  182. dataType: "json"
  183. });
  184. });
  185. $('#treeAjaxHTML').jstree({
  186. 'core': {
  187. 'themes': {
  188. 'responsive': false
  189. },
  190. 'check_callback': true,
  191. 'data': {
  192. 'url': './script/php/getTree.php?folder=' + folder,
  193. }
  194. },
  195. 'types': {
  196. 'default': {
  197. 'icon': 'fa fa-folder'
  198. },
  199. 'file': {
  200. 'icon': 'fa fa-file'
  201. }
  202. },
  203. 'plugins': ['types']
  204. }).on("ready.jstree", function(e, data) {
  205. var jsonNodes = $('#treeAjaxHTML').jstree(true).get_json('#', {
  206. flat: true
  207. });
  208. $.each(jsonNodes, function(i, val) {
  209. var treeNode = document.getElementById($(val).attr('id'));
  210. var nodeText = $(val).attr('text');
  211. let href = $(val).attr('a_attr').href;
  212. let exts = href.split('.');
  213. let ext = exts[exts.length - 1]
  214. if (downloads.includes(ext)) {
  215. $("#apiList").append("<a download href='" + href + "' id='api" + 1 + "'>" + nodeText + "</a><br>");
  216. }
  217. if (videos.includes(ext) || downloads.includes(ext)) {
  218. $(treeNode).hide();
  219. }
  220. })
  221. }).on('select_node.jstree', function(event, data) {
  222. data.instance.toggle_node(data.node);
  223. if (data.node.text.includes(".")) {
  224. console.log(data.node);
  225. var link = document.createElement("a");
  226. link.download = data.node.text;
  227. link.href = data.node.a_attr.href;
  228. document.body.appendChild(link);
  229. link.click();
  230. document.body.removeChild(link);
  231. }
  232. });
  233. });
  234. </script>
  235. <script src="assets/vendor/jstree/jstree.js"></script>
  236. <!-- <script src="assets/javascripts/ui-elements/examples.treeview.js"></script> -->
  237. <?php include("bim-support-body.html"); ?>
  238. <script>
  239. </script>
  240. </body>
  241. </html>