ソースを参照

Merge pull request #4218 from Falseee/Falseee/feature/issue-3042

Impoved Search - Added check for comperations (<,>,<=,=<,>=,=>)
文翼 6 年 前
コミット
d442e80506
2 ファイル変更43 行追加2 行削除
  1. 10 1
      site/docs/api/table-options.md
  2. 33 1
      src/bootstrap-table.js

+ 10 - 1
site/docs/api/table-options.md

@@ -705,6 +705,14 @@ The table options are defined in `jQuery.fn.bootstrapTable.defaults`.
 - **Detail:**
 
   Enable the search input.
+  
+  There are 3 ways to search:
+  - The value contains the search query (Default).   
+    Example: Github contains git.
+  - The value must be identical to the search query.  
+    Example: Github (value) and Github (search query).
+  - Comparsions (<, >, <=, =<, >=, =>)   
+    Example: 4 is larger than 3.
 
 - **Default:** `false`
 
@@ -732,7 +740,8 @@ The table options are defined in `jQuery.fn.bootstrapTable.defaults`.
 
 - **Detail:**
 
-  Enable the strict search.
+  Enable the strict search.   
+  Disables the comparison checks.
 
 - **Default:** `false`
 

+ 33 - 1
src/bootstrap-table.js

@@ -1401,7 +1401,39 @@
                   return true
                 }
               } else {
-                if ((`${value}`).toLowerCase().includes(s)) {
+                const largerSmallerEqualsRegex = /(?:(<=|=>|=<|>=|>|<)(?:\s+)?(\d+)?|(\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm
+                let matches = largerSmallerEqualsRegex.exec(s);
+                let comperationCheck = false;
+
+                if (matches !== null) {
+                  let operator = matches[1] || matches[5] + 'l'
+                  let comperationValue = matches[2] || matches[3]
+
+                  switch(operator) {
+                    case '>':
+                    case '<l':
+                      comperationCheck = Number.parseInt(value) > Number.parseInt(comperationValue);
+                      break;
+                    case '<':
+                    case '>l':
+                      comperationCheck = Number.parseInt(value) < Number.parseInt(comperationValue);
+                      break;
+                    case '<=':
+                    case '=<':
+                    case '>=l':
+                    case '=>l':
+                      comperationCheck = Number.parseInt(value) <= Number.parseInt(comperationValue);
+                      break;
+                    case '>=':
+                    case '=>':
+                    case '<=l':
+                    case '=<l':
+                      comperationCheck = Number.parseInt(value) >= Number.parseInt(comperationValue);
+                      break;
+                  }
+                }
+
+                if (comperationCheck || (`${value}`).toLowerCase().includes(s)) {
                   return true
                 }
               }