ソースを参照

Fix some bugs

djhvscf 4 年 前
コミット
d2ddc85735

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

@@ -222,7 +222,7 @@ $.BootstrapTable = class extends $.BootstrapTable {
             tmpItemIsExpected = true
           } else {
             // Fix #142: search use formatted data
-            if (thisColumn && thisColumn.searchFormatter) {
+            if ((thisColumn && thisColumn.searchFormatter) || thisColumn._forceFormatter) {
               value = $.fn.bootstrapTable.utils.calculateObjectValue(
                 that.header,
                 that.header.formatters[$.inArray(key, that.header.fields)],

+ 11 - 6
src/extensions/filter-control/utils.js

@@ -61,8 +61,8 @@ export function existOptionInSelectControl (selectControl, value) {
 export function addOptionToSelectControl (selectControl, _value, text, selected) {
   let value = (_value === undefined || _value === null) ? '' : _value.toString().trim()
 
-  value = value.replace(/(<([^>]+)>)/ig, '').replace(/&[#A-Za-z0-9]+;/gi, '').trim()
-  text = text.replace(/(<([^>]+)>)/ig, '').replace(/&[#A-Za-z0-9]+;/gi, '').trim()
+  value = Utils.removeHTML(value)
+  text = Utils.removeHTML(text)
 
   if (existOptionInSelectControl(selectControl, value)) {
     return
@@ -300,6 +300,11 @@ export function initFilterSelectControls (that) {
         const formatter = that.options.editable && column.editable ? column._formatter : that.header.formatters[j]
         let formattedValue = Utils.calculateObjectValue(that.header, formatter, [fieldValue, data[i], i], fieldValue)
 
+        if (!fieldValue) {
+          fieldValue = formattedValue
+          column._forceFormatter = true
+        }
+
         if (column.filterDataCollector) {
           formattedValue = Utils.calculateObjectValue(that.header, column.filterDataCollector, [fieldValue, data[i], formattedValue], formattedValue)
         }
@@ -315,11 +320,11 @@ export function initFilterSelectControls (that) {
           })
           continue
         }
+      }
 
-        // eslint-disable-next-line guard-for-in
-        for (const key in uniqueValues) {
-          addOptionToSelectControl(selectControl, uniqueValues[key], key, column.filterDefault)
-        }
+      // eslint-disable-next-line guard-for-in
+      for (const key in uniqueValues) {
+        addOptionToSelectControl(selectControl, uniqueValues[key], key, column.filterDefault)
       }
 
       // sortSelectControl(selectControl, column.filterOrderBy)

+ 10 - 0
src/utils/index.js

@@ -229,6 +229,16 @@ export default {
       .replace(/&#39;/g, '\'')
   },
 
+  removeHTML (text) {
+    if (!text) {
+      return text
+    }
+    return text.toString()
+      .replace(/(<([^>]+)>)/ig, '')
+      .replace(/&[#A-Za-z0-9]+;/gi, '')
+      .trim()
+  },
+
   getRealDataAttr (dataAttr) {
     for (const [attr, value] of Object.entries(dataAttr)) {
       const auxAttr = attr.split(/(?=[A-Z])/).join('-').toLowerCase()