فهرست منبع

Merge branch 'Dev' into Master

oransheep 3 سال پیش
والد
کامیت
398044e621
3فایلهای تغییر یافته به همراه157 افزوده شده و 25 حذف شده
  1. 12 13
      index.php
  2. 95 12
      script/js/jstreeAJAX.js
  3. 50 0
      script/php/sql_search_count.php

+ 12 - 13
index.php

@@ -18,6 +18,7 @@ if (!isset($_SESSION['loggedin'])) {
 	<meta name="author" content="JSOFT.net">
 
 	<script src="assets/vendor/jquery/jquery.js"></script>
+	<script src="./assets/vendor/jquery-hoverIntent/jquery.hoverIntent.js"></script>
 	<!-- Mobile Metas -->
 	<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
 
@@ -58,11 +59,7 @@ if (!isset($_SESSION['loggedin'])) {
 	<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jstree/3.3.4/jstree.min.js"></script>
 	<script src="./script/js/jstreeAJAX.js"></script>
 	<script src="https://js.arcgis.com/4.21/"></script>
-
-	<!-- vue3 -->
-	<script src="https://unpkg.com/vue@next"></script>
-	<script src="./script/js/vue-search-block.js"></script>
-
+	
 	<style>
 		.page-header>ul {
 			list-style: none;
@@ -601,7 +598,7 @@ if (!isset($_SESSION['loggedin'])) {
 
 
 		});
-
+		var db_table = {};
 		$.ajax({
 			url: "./script/php/get_db_table.php",
 			type: "GET",
@@ -771,7 +768,7 @@ if (!isset($_SESSION['loggedin'])) {
 												</select>
 												<div class="overSelect"></div>
 											</div>
-											<div class="checkboxes form-inline" style="display: none;">
+											<div class="checkboxes form-inline" style="display: none; overflow-y:scroll; height:300px">
 												<label for="category-any"><input type="checkbox" id="category-any" value="any" checked/> 全選</label>
 												<!-- append option -->
 											</div>
@@ -787,7 +784,7 @@ if (!isset($_SESSION['loggedin'])) {
 												</select>
 												<div class="overSelect"></div>
 											</div>
-											<div class="checkboxes form-inline" style="display: none;">
+											<div class="checkboxes form-inline" style="display: none; overflow-y:scroll; height:300px">
 												<label for="project-any"><input type="checkbox" id="project-any" value="any" checked/> 全選</label>
 												<!-- append option -->
 											</div>
@@ -803,7 +800,7 @@ if (!isset($_SESSION['loggedin'])) {
 												</select>
 												<div class="overSelect"></div>
 											</div>
-											<div class="checkboxes form-inline" style="display: none;">
+											<div class="checkboxes form-inline" style="display: none; overflow-y:scroll; height:300px">
 												<label for="type-any"><input type="checkbox" id="type-any" value="any" checked/> 全選</label>
 												<!-- append option -->
 											</div>
@@ -819,7 +816,7 @@ if (!isset($_SESSION['loggedin'])) {
 												</select>
 												<div class="overSelect"></div>
 											</div>
-											<div class="checkboxes form-inline" style="display: none;">
+											<div class="checkboxes form-inline" style="display: none; overflow-y:scroll; height:300px">
 												<label for="notes-any"><input type="checkbox" id="notes-any" value="any" checked/> 全選</label>
 												<!-- append option -->
 											</div>
@@ -857,7 +854,9 @@ if (!isset($_SESSION['loggedin'])) {
 											</ul>
 										</div>
 										<div id="advanced-search-button-group" style="display: block;">
-											<button class="btn btn-primary" id="advanced-search-button">搜尋</button>
+											<p id="warning-text" style="display: none; color: red;">警告! 篩選結果多於 1000 筆 </p>
+											<button class="btn btn-warning" id="keep-search-button" style="display: none;">仍要搜尋</button>
+											<button class="btn btn-primary" id="advanced-search-button" style="display: inline-block;">搜尋</button>
 											<button class="btn btn-default modal-dismiss">取消</button>
 										</div>
 									</div>
@@ -867,8 +866,8 @@ if (!isset($_SESSION['loggedin'])) {
 					</div>
 
 					<div class="col-md-6">
-						<section class="panel">
-							<div class="panel-body" id="search-filter-panel-body">
+						<section class="panel" id="search-filter-panel" style="display: none;">
+							<div class="panel-body">
 								<form class="form-horizontal form-bordered" id="search-filter" method="get" hidden>
 									<div class="form-group">
 										<label class="col-md-3 control-label">工程類別:</label>

+ 95 - 12
script/js/jstreeAJAX.js

@@ -534,10 +534,10 @@ $(document).ready(function () {
 
     var search_output = {};
     var search_word = ""
-    $("#advanced-search-button").on("click", function (e) {
+    $("#keep-search-button").on("click", function (e) {
         show_progress_bar(true);
         update_progress_bar();
-        
+
         $.ajax({
             url: "./script/php/get_search_list.php",
             data: {
@@ -568,12 +568,90 @@ $(document).ready(function () {
                 $("#search-filter").slideUp(200);
                 $("#filter-slide").toggleClass("fa-sort-desc fa-sort-up");
             }
-            $("#search-filter-panel-body .btn-default").toggleClass("btn-primary btn-default");
+            $("#search-filter-panel .btn-default").toggleClass("btn-primary btn-default");
             show_filter(filter_base_data);
             show_progress_bar(false);
+            $("#keep-search-button").css("display", "none");
+            $("#warning-text").css("display", "none");
+            $("#advanced-search-button").css("display", "inline-block");
+            $("#search-filter-panel").css("display", "block");
         }, 0);
     });
 
+    $("#advanced-search-button").on("click", function (e) {
+        count = {};
+        $.ajax({
+            url: "./script/php/sql_search_count.php",
+            data: {
+                project_id: [''].concat(search_data["project"]),
+                type_id: [''].concat(search_data["type"]),
+                notes_name: [''].concat(search_data["notes"].filter(element => {return element !== undefined;})),
+                search: $("#search-word").val(),
+            },
+            type: "GET",
+            dataType: "json",
+            contentType: "application/json",
+            async: false
+        }).success(function (response) {
+            displayDetail(true);
+            count = response;
+        }).error(function(error) {
+            console.log(error);
+        });
+
+        search_total_count = count[0]["total"] + count[1]["total"];
+        if(search_total_count > 1000) {
+            $("#keep-search-button").css("display", "inline-block");
+            $("#warning-text").css("display", "inline-block");
+            $("#advanced-search-button").css("display", "none");
+        } else {
+            show_progress_bar(true);
+            update_progress_bar();
+
+            $.ajax({
+                url: "./script/php/get_search_list.php",
+                data: {
+                    project_id: [''].concat(search_data["project"]),
+                    type_id: [''].concat(search_data["type"]),
+                    notes_name: [''].concat(search_data["notes"].filter(element => {return element !== undefined;})),
+                    search: $("#search-word").val(),
+                },
+                type: "GET",
+                dataType: "json",
+                contentType: "application/json",
+                async: false
+            }).success(function (response) {
+                displayDetail(true);
+                search_output = response;
+                search_word = $("#search-word").val();
+                filter_base_data = search_data;
+            }).error(function(error) {
+                console.log(error);
+            });
+            
+            setTimeout(() => {
+                draw_datatable(search_output);
+                e.preventDefault();
+                $.magnificPopup.close();
+
+                if($("#search-filter").css("display") != "none") {
+                    $("#search-filter").slideUp(200);
+                    $("#filter-slide").toggleClass("fa-sort-desc fa-sort-up");
+                }
+                $("#search-filter-panel .btn-default").toggleClass("btn-primary btn-default");
+                show_filter(filter_base_data);
+                show_progress_bar(false);
+                $("#search-filter-panel").css("display", "block");
+            }, 0);
+        }
+    });
+
+    $("#advancedSearch .panel-body input").on("change", function() {
+        $("#keep-search-button").css("display", "none");
+        $("#warning-text").css("display", "none");
+        $("#advanced-search-button").css("display", "inline-block");
+    });
+
     function draw_datatable(search_output) {
         table.clear().draw();
 
@@ -721,17 +799,22 @@ $(document).ready(function () {
             // $("#progress-bars").parent().css("display", "none");
         }
     }
-
-    $("#filter-slide").on("click", function (e) {
-        if($("#search-filter").css("display") == "block"){
-            $("#search-filter").slideUp(200);
-        } else {
-            $("#search-filter").slideDown(200);
-        }
-        $("#filter-slide").toggleClass("fa-sort-desc fa-sort-up")
+    
+    $("#search-filter-panel").hoverIntent({
+        sensitivity: 50,  
+        interval: 200,  
+        over: function( e ) {
+                $("#search-filter").slideDown(200);
+                $("#filter-slide").toggleClass("fa-sort-desc fa-sort-up")
+            },
+        timeout: 200,
+        out: function( e ) {
+                $("#search-filter").slideUp(200);
+                $("#filter-slide").toggleClass("fa-sort-desc fa-sort-up")
+            }
     });
 
-    $("#search-filter-panel-body button").on("click", function (e) {
+    $("#search-filter-panel button").on("click", function (e) {
         $(this).toggleClass("btn-primary btn-default");
 
         click_option = get_filter_click("btn-primary");

+ 50 - 0
script/php/sql_search_count.php

@@ -0,0 +1,50 @@
+<?php
+
+if (isset($_GET['project_id'])) {
+    include("sql.php");
+    $project_id = implode("', '", $_GET['project_id']);
+    $type_id = implode("', '", $_GET['type_id']);
+    $notes_name = implode("', '", $_GET['notes_name']);
+    $search = $_GET['search'];
+    $array = [];
+
+    $connectionInfo = array("Database" => "$dbname", "UID" => "$username", "PWD" => "$password", "CharacterSet" => "UTF-8");
+    $conn = sqlsrv_connect($hostname, $connectionInfo);
+    if ($conn === false) {
+        die(print_r(sqlsrv_errors(), true));
+    }
+
+    $sql = "SELECT DISTINCT COUNT(*) AS 'total' FROM [21000X].[dbo].[Blueprint]
+        INNER JOIN [Project_Table] ON [Blueprint].[project_id] = [Project_Table].[project_id] 
+        INNER JOIN [Construction_Category] ON [Project_Table].[category_id] = [Construction_Category].[category_id]
+        WHERE [Blueprint].[project_id] IN ('$project_id') AND [type_id] IN ('$type_id') AND [notes] IN ('$notes_name') 
+        AND CONCAT(
+            [Blueprint].[project_id] ,' '
+            ,[SN] ,' '
+            ,[blueprint_id] ,' '
+            ,[original_name] ,' '
+            ,[keyword] ,' '
+            ,[notes] ,' '
+            ,[filename]) like '%".$search."%'
+        UNION
+        SELECT DISTINCT COUNT(*) AS 'total' FROM [21000X].[dbo].[File_Table]
+        INNER JOIN [Project_Table] ON [File_Table].[project_id] = [Project_Table].[project_id]
+        INNER JOIN [Construction_Category] ON [Project_Table].[category_id] = [Construction_Category].[category_id]
+        WHERE [File_Table].[project_id] IN ('$project_id') AND [type_id] IN ('$type_id')
+        AND CONCAT(
+            [File_Table].[project_id],' '
+            ,[SN],' '
+            ,[type_id],' '
+            ,[original_name],' '
+            ,[filename],' ') like '%".$search."%';";
+    
+    $fetchResult = sqlsrv_query($conn, $sql);
+    while ($row = sqlsrv_fetch_array($fetchResult, SQLSRV_FETCH_ASSOC)) {
+        array_push($array ,$row);
+    }
+    echo json_encode($array,JSON_UNESCAPED_UNICODE);
+} else {
+    die("post error!");
+}
+
+?>