Browse Source

Merge pull request #615 from anpegar/master

fixes #611 - Add spanish (España) translation.
文翼 10 years ago
parent
commit
914f40500a
3 changed files with 244 additions and 2 deletions
  1. 200 0
      bootstrap-table-toolbar.js
  2. 4 2
      src/bootstrap-table.js
  3. 40 0
      src/locale/bootstrap-table-es-SP.js

+ 200 - 0
bootstrap-table-toolbar.js

@@ -0,0 +1,200 @@
+/**
+ * @author aperez <aperez@datadec.es>
+ * Añade los iconos de buscador y buscador avanzado detrás del campo search.
+ */
+
+! function($) {
+
+    'use strict';
+
+    var firstLoad = false;
+    var firstBody = false;
+
+    var sprintf = function(str) {
+        var args = arguments,
+            flag = true,
+            i = 1;
+
+        str = str.replace(/%s/g, function() {
+            var arg = args[i++];
+
+            if (typeof arg === 'undefined') {
+                flag = false;
+                return '';
+            }
+            return arg;
+        });
+        return flag ? str : '';
+    };
+
+
+    var showAvdSearch = function(pColumns, pObjSearch) {
+
+        if (!$("#avdSearchModal").hasClass("modal")) {
+            var vModal = "<div id=\"avdSearchModal\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"mySmallModalLabel\" aria-hidden=\"true\">";
+            vModal += "<div class=\"modal-dialog modal-xs\">";
+            vModal += " <div class=\"modal-content\">";
+            vModal += "  <div class=\"modal-header\">";
+            vModal += "   <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-hidden=\"true\" >&times;</button>";
+            vModal += "   <h4 class=\"modal-title\">Buscador Avanzado</h4>";
+            vModal += "  </div>";
+            vModal += "  <div class=\"modal-body modal-body-custom\">";
+            vModal += "   <div class=\"container-fluid\" id=\"avdSearchModalContent\" style=\"padding-right: 0px;padding-left: 0px;\" >";
+            vModal += "   </div>";
+            vModal += "  </div>";
+            vModal += "  </div>";
+            vModal += " </div>";
+            vModal += "</div>";
+
+            $("body").append($(vModal));
+            var vFormAvd = createFormAvd(pColumns, pObjSearch);
+            $('#avdSearchModalContent').append(vFormAvd.join(''));
+            //
+
+
+
+            $("#btnSearchAvd").click(function() {
+                var vFormData = $("#" + pObjSearch.idForm).serializeJSON();
+                var vText = $('#' + pObjSearch.idTable).parents('.bootstrap-table').find('.search input').val();
+
+                $.extend(vFormData, {
+                    searchText: vText
+                });
+                var sFunctionData = JSON.stringify(vFormData);
+                BootstrapTable.DEFAULTS.searchText = sFunctionData;
+
+                //BootstrapTable.prototype.onSearch(this,$.Event('keyup'));
+                /*********************
+
+                  * Here, I want to call the method onSearch.
+
+                ***********************/
+
+
+            });
+
+            $("#avdSearchModal").modal();
+        } else {
+            $("#avdSearchModal").modal();
+        }
+
+    };
+
+
+    var createFormAvd = function(pColumns, pObjSearch) {
+        var htmlForm = [];
+        htmlForm.push('<form class="form-horizontal" id="' + pObjSearch.idForm + '" action="' + pObjSearch.actionForm + '" >');
+
+        for (var i in pColumns) {
+            var vObjCol = pColumns[i];
+            if (!vObjCol.checkbox && vObjCol.visible && vObjCol.searchable) {
+                htmlForm.push('<div class="form-group">',
+                    '<label class="col-sm-4 control-label">' + vObjCol.title + '</label>',
+                    '<div class="col-sm-6">',
+                    '<input type = "text" class="form-control input-md" name="' + vObjCol.field + '" placeholder="Email">',
+                    '</div>',
+                    '</div>');
+            }
+        }
+
+        htmlForm.push('<div class="form-group">',
+            '<div class="col-sm-offset-9 col-sm-3">',
+            '<button type="button" id="btnSearchAvd" class="btn btn-default" >Buscar</button>',
+            '</div>',
+            '</div>',
+            '</form>');
+
+        return htmlForm;
+    }
+
+
+
+    $.extend($.fn.bootstrapTable.defaults, {
+        advancedSearch: undefined,
+        idTable: undefined
+    });
+
+    $.extend($.fn.bootstrapTable.defaults.icons, {
+        avdSearch: 'glyphicon-chevron-down'
+    });
+
+    $.extend($.fn.bootstrapTable.locales, {
+        formatAvancedSearch: function() {
+            return 'Buscador Avanzado';
+        }
+    });
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales);
+
+
+    var BootstrapTable = $.fn.bootstrapTable.Constructor,
+        _initToolbar = BootstrapTable.prototype.initToolbar,        
+        _load = BootstrapTable.prototype.load;
+
+    BootstrapTable.prototype.initToolbar = function() {
+        var that = this,
+            htmlBtns = [],
+            $search,
+            advSearch = {
+                active: false,
+                idTable: '',
+                idForm: '',
+                actionForm: ''
+            };
+
+        _initToolbar.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (typeof this.options.advancedSearch !== 'undefined') {
+            advSearch = this.options.advancedSearch;
+        }
+
+        if (advSearch.active) {
+            htmlBtns.push(sprintf('<div class="btn-group" role="group"><button class="btn btn-default' + (that.options.iconSize === undefined ? '' : ' btn-' + that.options.iconSize) + '" type="button" name="avdSearch" title="%s">',
+                    that.options.formatAvancedSearch()),
+                sprintf('<i class="%s %s"></i>', that.options.iconsPrefix, that.options.icons.avdSearch),
+                '</button></div>');
+
+            // Añadimos el botón al toolbar.
+            that.$toolbar.find('.columns').prepend(htmlBtns.join(''));
+
+            // Creamos el onclick para el booton            
+            that.$toolbar.find('button[name="avdSearch"]')
+                .off('click').on('click', function() {
+                    showAvdSearch(that.options.columns, advSearch);
+                });
+        }
+
+        // Anulamos la búsqueda automática
+        if (that.options.searchTimeOut === -1) {
+            $search = that.$toolbar.find('.search input');
+            $search.off('keyup').on('keyup', function(event) {
+                var text = $.trim($(event.currentTarget).val());
+                // Al pulsar Enter realizamos la búsqueda.
+                if (event.which === 13) {
+                    that.onSearch(event);
+                }
+
+            });
+        }
+
+    };
+
+    BootstrapTable.prototype.load = function(data) {
+
+        _load.apply(this, Array.prototype.slice.apply(arguments));
+
+        if (typeof this.options.idTable === 'undefined') {
+            alert('Error: La propiedad "idTable" de bootstrapTable debe tener el id definido en la tabla.');
+        } else {
+            if (!firstLoad) {
+                var vTam = parseInt($(".bootstrap-table").height());
+                vTam += 10;
+                $("#" + this.options.idTable).bootstrapTable("resetView", {height: vTam});
+                firstLoad = true;
+            }
+        }
+
+    };
+
+
+}(jQuery);

+ 4 - 2
src/bootstrap-table.js

@@ -959,7 +959,8 @@
                 .off('click').on('click', function () {
                     that.options.cardView = !that.options.cardView;
                     that.initHeader();
-                    that.initToolbar();
+                    // Fixed remove toolbar when click cardView button.
+                    //that.initToolbar();
                     that.initBody();
                 });
         }
@@ -1204,8 +1205,9 @@
         html.push(this.options.formatRecordsPerPage(pageNumber.join('')));
         html.push('</span>');
 
+        // Fixed #611 vertical-align between pagination block and pagination-detail block. Remove class pagination.
         html.push('</div>',
-            '<div class="pull-' + this.options.paginationHAlign + ' pagination">',
+            '<div class="pull-' + this.options.paginationHAlign + '">',
             '<ul class="pagination' + (this.options.iconSize === undefined ? '' : ' pagination-' + this.options.iconSize) + '">',
             '<li class="page-first"><a href="javascript:void(0)">&lt;&lt;</a></li>',
             '<li class="page-pre"><a href="javascript:void(0)">&lt;</a></li>');

+ 40 - 0
src/locale/bootstrap-table-es-SP.js

@@ -0,0 +1,40 @@
+/**
+ * Bootstrap Table Spanish (España) translation
+ * Author: Antonio Pérez <anpegar@gmail.com>
+ */
+ (function ($) {
+    'use strict';
+    
+    $.fn.bootstrapTable.locales['es-SP'] = {
+        formatLoadingMessage: function () {
+            return 'Cargando, por favor espera...';
+        },
+        formatRecordsPerPage: function (pageNumber) {
+            return pageNumber + ' registros por p&#225;gina.';
+        },
+        formatShowingRows: function (pageFrom, pageTo, totalRows) {
+            return pageFrom + ' - ' + pageTo + ' de ' + totalRows + ' registros.';
+        },
+        formatSearch: function () {
+            return 'Buscar';
+        },
+        formatNoMatches: function () {
+            return 'No se han encontrado registros.';
+        },
+        formatRefresh: function () {
+            return 'Actualizar';
+        },
+        formatToggle: function () {
+            return 'Alternar';
+        },
+        formatColumns: function () {
+            return 'Columnas';
+        },
+        formatAllRows: function () {
+            return 'Todo';
+        }
+    };
+
+    $.extend($.fn.bootstrapTable.defaults, $.fn.bootstrapTable.locales['es-SP']);
+
+})(jQuery);