Browse Source

Merge pull request #99 from wenzhixin/develop

Update branch
Dennis Hernández 10 years ago
parent
commit
f3361b8d96

+ 5 - 0
docs/_i18n/en/documentation/methods.md

@@ -196,6 +196,11 @@ The calling method syntax: `$('#table').bootstrapTable('method', parameter);`.
         <td>Uncheck all current page rows.</td>
     </tr>
     <tr>
+        <td>checkInvert</td>
+        <td>none</td>
+        <td>Invert check of current page rows. Triggers onCheckSome and onUncheckSome events.</td>
+    </tr>
+    <tr>
         <td>check</td>
         <td>index</td>
         <td>Check a row, the row index start with 0.</td>

+ 3 - 5
package.json

@@ -6,7 +6,8 @@
   "directories": {
     "doc": "docs"
   },
-  "dependencies": {
+  "devDependencies": {
+    "cz-conventional-changelog": "^1.1.5",
     "grunt-contrib-copy": "^0.8.0",
     "grunt-contrib-concat": "^0.5.1",
     "grunt-contrib-clean": "^0.6.0",
@@ -34,12 +35,9 @@
     "url": "https://github.com/wenzhixin/bootstrap-table/issues"
   },
   "homepage": "https://github.com/wenzhixin/bootstrap-table",
-  "devDependencies": {
-    "cz-conventional-changelog": "^1.1.5"
-  },
   "config": {
     "commitizen": {
       "path": "./node_modules/cz-conventional-changelog"
     }
   }
-}
+}

+ 15 - 1
src/bootstrap-table.js

@@ -2439,6 +2439,20 @@
         this.checkAll_(false);
     };
 
+    BootstrapTable.prototype.checkInvert = function () {
+        var that = this;
+        var rows = that.$selectItem.filter(':enabled');
+        var checked = rows.filter(':checked');
+        rows.each(function() {
+            $(this).prop('checked', !$(this).prop('checked'));
+        });
+        that.updateRows();
+        that.updateSelected();
+        that.trigger('uncheck-some', checked);
+        checked = that.getSelections();
+        that.trigger('check-some', checked);
+    };
+
     BootstrapTable.prototype.checkAll_ = function (checked) {
         var rows;
         if (!checked) {
@@ -2718,7 +2732,7 @@
         'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
         'getRowByUniqueId', 'showRow', 'hideRow', 'getRowsHidden',
         'mergeCells',
-        'checkAll', 'uncheckAll',
+        'checkAll', 'uncheckAll', 'checkInvert',
         'check', 'uncheck',
         'checkBy', 'uncheckBy',
         'refresh',

+ 41 - 31
src/extensions/filter-control/bootstrap-table-filter-control.js

@@ -124,6 +124,46 @@
         }
     };
 
+    var initFilterSelectControls = function (bootstrapTable) {
+        var data = bootstrapTable.options.data,
+            itemsPerPage = bootstrapTable.pageTo < bootstrapTable.options.data.length ? bootstrapTable.options.data.length : bootstrapTable.pageTo,
+
+            isColumnSearchableViaSelect = function (column) {
+                return column.filterControl && column.filterControl.toLowerCase() === 'select' && column.searchable;
+            },
+
+            isFilterDataNotGiven = function (column) {
+                return column.filterData === undefined || column.filterData.toLowerCase() === 'column';
+            },
+
+            hasSelectControlElement = function (selectControl) {
+                return selectControl && selectControl.length > 0;
+            };
+
+        for (var i = bootstrapTable.pageFrom - 1; i < bootstrapTable.pageTo; i++) {
+
+            $.each(bootstrapTable.header.fields, function (j, field) {
+                var column = bootstrapTable.columns[$.fn.bootstrapTable.utils.getFieldIndex(bootstrapTable.columns, field)],
+                    selectControl = $('.' + column.field);
+
+
+                if (isColumnSearchableViaSelect(column) && isFilterDataNotGiven(column) && hasSelectControlElement(selectControl)) {
+                    if (selectControl.get(selectControl.length - 1).options.length === 0) {
+                        //Added the default option
+                        addOptionToSelectControl(selectControl, '', '');
+                    }
+
+                    //Added a new value
+                    var fieldValue = data[i][field],
+                        formattedValue = $.fn.bootstrapTable.utils.calculateObjectValue(bootstrapTable.header, bootstrapTable.header.formatters[j], [fieldValue, data[i], i], fieldValue);
+
+                    addOptionToSelectControl(selectControl, fieldValue, formattedValue);
+                }
+            });
+        }
+
+    }
+
     var createControls = function (that, header) {
         var addedFilterControl = false,
             isVisible,
@@ -372,37 +412,7 @@
     BootstrapTable.prototype.initBody = function () {
         _initBody.apply(this, Array.prototype.slice.apply(arguments));
 
-        var that = this,
-            data = this.options.data,
-            pageTo = this.pageTo < this.options.data.length ? this.options.data.length : this.pageTo;
-
-        for (var i = this.pageFrom - 1; i < pageTo; i++) {
-            var item = data[i];
-
-            $.each(this.header.fields, function (j, field) {
-                var value = item[field],
-                    column = that.columns[$.fn.bootstrapTable.utils.getFieldIndex(that.columns, field)];
-
-                value = $.fn.bootstrapTable.utils.calculateObjectValue(that.header, that.header.formatters[j], [value, item, i], value);
-
-                if ((!column.checkbox) || (!column.radio)) {
-                    if (column.filterControl !== undefined && column.filterControl.toLowerCase() === 'select' && column.searchable) {
-                        if (column.filterData === undefined || column.filterData.toLowerCase() === 'column') {
-                            var selectControl = $('.' + column.field);
-                            if (selectControl !== undefined && selectControl.length > 0) {
-                                if (selectControl.get(selectControl.length - 1).options.length === 0) {
-                                    //Added the default option
-                                    addOptionToSelectControl(selectControl, '', '');
-                                }
-
-                                //Added a new value
-                                addOptionToSelectControl(selectControl, value, value);
-                            }
-                        }
-                    }
-                }
-            });
-        }
+        initFilterSelectControls(this);
     };
 
     BootstrapTable.prototype.initSearch = function () {

+ 1 - 1
src/extensions/key-events/bootstrap-table-key-events.js

@@ -32,7 +32,7 @@
                     $toggle = that.$toolbar.find('button[name="toggle"]'),
                     $paginationSwitch = that.$toolbar.find('button[name="paginationSwitch"]');
 
-                if (document.activeElement === $search.get(0)) {
+                if (document.activeElement === $search.get(0) || !$.contains(document.activeElement ,that.$toolbar.get(0))) {
                     return true;
                 }
 

+ 43 - 0
src/locale/bootstrap-table-he-IL.js

@@ -0,0 +1,43 @@
+/**
+ * Bootstrap Table Hebrew translation
+ * Author: legshooter
+ */
+(function ($) {
+    'use strict';
+
+    $.fn.bootstrapTable.locales['he-IL'] = {
+        formatLoadingMessage: function () {
+            return 'טוען, נא להמתין...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' שורות בעמוד';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return 'מציג ' + pageFrom + ' עד ' + pageTo + ' מ-' + totalRows + ' שורות';
+        },
+        formatSearch: function () {
+            return 'חיפוש';
+        },
+        formatNoMatches: function () {
+            return 'לא נמצאו רשומות תואמות';
+        },
+        formatPaginationSwitch: function () {
+            return 'הסתר/הצג מספור דפים';
+        },
+        formatRefresh: function () {
+            return 'רענן';
+        },
+        formatToggle: function () {
+            return 'החלף תצוגה';
+        },
+        formatColumns: function () {
+            return 'עמודות';
+        },
+        formatAllRows: function () {
+            return 'הכל';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['he-IL']);
+
+})(jQuery);