Browse Source

Fix problem when filterdata column option is used. Fix docs

djhvscf 4 years ago
parent
commit
dfd7542386

+ 9 - 33
site/docs/extensions/filter-control.md

@@ -80,39 +80,39 @@ toc: true
 
 
 - **Default:** `undefined`
 - **Default:** `undefined`
 
 
-### hideUnusedSelectOptions
+### searchOnEnterKey
 
 
-- **Attribute:** `data-hide-unused-select-options`
+- **Attribute:** `data-search-on-enter-key`
 
 
 - **type:** `Boolean`
 - **type:** `Boolean`
 
 
 - **Detail:**
 - **Detail:**
 
 
-   Set to true in order to hide the options that are not in the table. This option does not work on server-side pagination.
+   Set to true to fire the search action when the user press the enter key.
 
 
 - **Default:** `false`
 - **Default:** `false`
 
 
-### searchOnEnterKey
+### showFilterControlSwitch
 
 
-- **Attribute:** `data-search-on-enter-key`
+- **Attribute:** `data-show-filter-control-switch`
 
 
 - **type:** `Boolean`
 - **type:** `Boolean`
 
 
 - **Detail:**
 - **Detail:**
 
 
-   Set to true to fire the search action when the user press the enter key.
+   Set to `true` to show the filter control switch button.
 
 
 - **Default:** `false`
 - **Default:** `false`
 
 
-### showFilterControlSwitch
+### sortSelectOptions
 
 
-- **Attribute:** `data-show-filter-control-switch`
+- **Attribute:** `data-sort-select-options`
 
 
 - **type:** `Boolean`
 - **type:** `Boolean`
 
 
 - **Detail:**
 - **Detail:**
 
 
-   Set to `true` to show the filter control switch button.
+   Set to `true` to sort the option elements of the select control.
 
 
 - **Default:** `false`
 - **Default:** `false`
 
 
@@ -192,30 +192,6 @@ toc: true
 
 
 - **Default:** `undefined`
 - **Default:** `undefined`
 
 
-### filterControlMultipleSelect
-
-- **Attribute:** `data-filter-control-multiple-select`
-
-- **type:** `boolean`
-
-- **Detail:**
-
-   Use this option to configure the select as multipleSelect.
-
-- **Default:** `false`
-
-### filterControlMultipleSelectOptions
-
-- **Attribute:** `data-filter-control-multiple-select-options`
-
-- **type:** `Object`
-
-- **Detail:**
-
-   If the filterControlMultipleSelect option is set to true, use this option to configure the select with the native options. Use this way: `data-filter-control-multiple-select-options='{"property1":value1, "property2": value2, "property3": value3}'`. See this [documentation](https://multiple-select.wenzhixin.net.cn/docs/en/options)
-
-- **Default:** `undefined`
-
 ### filterDefault
 ### filterDefault
 
 
 - **Attribute:** `data-filter-default`
 - **Attribute:** `data-filter-default`

+ 3 - 1
src/extensions/filter-control/bootstrap-table-filter-control.js

@@ -53,6 +53,7 @@ $.extend($.fn.bootstrapTable.defaults, {
   },
   },
   searchOnEnterKey: false,
   searchOnEnterKey: false,
   showFilterControlSwitch: false,
   showFilterControlSwitch: false,
+  sortSelectOptions: false,
   // internal variables
   // internal variables
   _valuesFilterControl: [],
   _valuesFilterControl: [],
   _initialized: false,
   _initialized: false,
@@ -71,7 +72,8 @@ $.extend($.fn.bootstrapTable.columnDefaults, {
   filterStartsWithSearch: false,
   filterStartsWithSearch: false,
   filterControlPlaceholder: '',
   filterControlPlaceholder: '',
   filterDefault: '',
   filterDefault: '',
-  filterOrderBy: 'asc' // asc || desc
+  filterOrderBy: 'asc', // asc || desc
+  filterCustomSearch: undefined
 })
 })
 
 
 $.extend($.fn.bootstrapTable.Constructor.EVENTS, {
 $.extend($.fn.bootstrapTable.Constructor.EVENTS, {

+ 36 - 16
src/extensions/filter-control/utils.js

@@ -329,11 +329,6 @@ export function initFilterSelectControls (that) {
       for (const key in uniqueValues) {
       for (const key in uniqueValues) {
         addOptionToSelectControl(selectControl, uniqueValues[key], key, column.filterDefault)
         addOptionToSelectControl(selectControl, uniqueValues[key], key, column.filterDefault)
       }
       }
-
-      // sortSelectControl(selectControl, column.filterOrderBy)
-      if (that.options.hideUnusedSelectOptions) {
-        hideUnusedSelectOptions(selectControl, uniqueValues)
-      }
     }
     }
   })
   })
 }
 }
@@ -428,7 +423,7 @@ export function createControls (that, header) {
         selectControl = header.find(`.bootstrap-table-filter-control-${escapeID(column.field)}`)
         selectControl = header.find(`.bootstrap-table-filter-control-${escapeID(column.field)}`)
 
 
         addOptionToSelectControl(selectControl, '', column.filterControlPlaceholder, column.filterDefault, true)
         addOptionToSelectControl(selectControl, '', column.filterControlPlaceholder, column.filterDefault, true)
-        filterDataType(filterDataSource, selectControl, that.options.filterOrderBy, column.filterDefault)
+        filterDataType(that, filterDataSource, selectControl, that.options.filterOrderBy, column.filterDefault)
       } else {
       } else {
         throw new SyntaxError(
         throw new SyntaxError(
           'Error. You should use any of these allowed filter data methods: var, obj, json, url, func.' +
           'Error. You should use any of these allowed filter data methods: var, obj, json, url, func.' +
@@ -607,16 +602,21 @@ export function syncHeaders (that) {
 }
 }
 
 
 const filterDataMethods = {
 const filterDataMethods = {
-  func (filterDataSource, selectControl, filterOrderBy, selected) {
+  func (that, filterDataSource, selectControl, filterOrderBy, selected) {
     const variableValues = window[filterDataSource].apply()
     const variableValues = window[filterDataSource].apply()
 
 
     // eslint-disable-next-line guard-for-in
     // eslint-disable-next-line guard-for-in
     for (const key in variableValues) {
     for (const key in variableValues) {
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
     }
     }
-    sortSelectControl(selectControl, filterOrderBy)
+
+    if (that.options.sortSelectOptions) {
+      sortSelectControl(selectControl, filterOrderBy)
+    }
+
+    setValues(that)
   },
   },
-  obj (filterDataSource, selectControl, filterOrderBy, selected) {
+  obj (that, filterDataSource, selectControl, filterOrderBy, selected) {
     const objectKeys = filterDataSource.split('.')
     const objectKeys = filterDataSource.split('.')
     const variableName = objectKeys.shift()
     const variableName = objectKeys.shift()
     let variableValues = window[variableName]
     let variableValues = window[variableName]
@@ -631,9 +631,14 @@ const filterDataMethods = {
     for (const key in variableValues) {
     for (const key in variableValues) {
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
     }
     }
-    sortSelectControl(selectControl, filterOrderBy)
+
+    if (that.options.sortSelectOptions) {
+      sortSelectControl(selectControl, filterOrderBy)
+    }
+
+    setValues(that)
   },
   },
-  var (filterDataSource, selectControl, filterOrderBy, selected) {
+  var (that, filterDataSource, selectControl, filterOrderBy, selected) {
     const variableValues = window[filterDataSource]
     const variableValues = window[filterDataSource]
     const isArray = Array.isArray(variableValues)
     const isArray = Array.isArray(variableValues)
 
 
@@ -644,9 +649,14 @@ const filterDataMethods = {
         addOptionToSelectControl(selectControl, key, variableValues[key], selected, true)
         addOptionToSelectControl(selectControl, key, variableValues[key], selected, true)
       }
       }
     }
     }
-    sortSelectControl(selectControl, filterOrderBy)
+
+    if (that.options.sortSelectOptions) {
+      sortSelectControl(selectControl, filterOrderBy)
+    }
+
+    setValues(that)
   },
   },
-  url (filterDataSource, selectControl, filterOrderBy, selected) {
+  url (that, filterDataSource, selectControl, filterOrderBy, selected) {
     $.ajax({
     $.ajax({
       url: filterDataSource,
       url: filterDataSource,
       dataType: 'json',
       dataType: 'json',
@@ -655,17 +665,27 @@ const filterDataMethods = {
         for (const key in data) {
         for (const key in data) {
           addOptionToSelectControl(selectControl, key, data[key], selected)
           addOptionToSelectControl(selectControl, key, data[key], selected)
         }
         }
-        sortSelectControl(selectControl, filterOrderBy)
+
+        if (that.options.sortSelectOptions) {
+          sortSelectControl(selectControl, filterOrderBy)
+        }
+
+        setValues(that)
       }
       }
     })
     })
   },
   },
-  json (filterDataSource, selectControl, filterOrderBy, selected) {
+  json (that, filterDataSource, selectControl, filterOrderBy, selected) {
     const variableValues = JSON.parse(filterDataSource)
     const variableValues = JSON.parse(filterDataSource)
 
 
     // eslint-disable-next-line guard-for-in
     // eslint-disable-next-line guard-for-in
     for (const key in variableValues) {
     for (const key in variableValues) {
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
       addOptionToSelectControl(selectControl, key, variableValues[key], selected)
     }
     }
-    sortSelectControl(selectControl, filterOrderBy)
+
+    if (that.options.sortSelectOptions) {
+      sortSelectControl(selectControl, filterOrderBy)
+    }
+
+    setValues(that)
   }
   }
 }
 }