tabulatr2 0.9.15 → 0.9.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +5 -1
- data/app/assets/javascripts/tabulatr/_tabulatr.js +79 -83
- data/app/assets/stylesheets/{tabulatr/application.css.scss → tabulatr.scss} +8 -4
- data/app/views/tabulatr/_tabulatr_batch_actions_menu.html.slim +1 -1
- data/app/views/tabulatr/_tabulatr_buttons.html.slim +0 -1
- data/app/views/tabulatr/_tabulatr_filter_dialog.html.slim +5 -0
- data/lib/tabulatr/generators/tabulatr/templates/tabulatr.yml +4 -0
- data/lib/tabulatr/renderer/column.rb +5 -1
- data/lib/tabulatr/version.rb +1 -1
- data/spec/dummy/app/assets/stylesheets/application.scss +2 -0
- data/spec/dummy/app/models/product.rb +3 -0
- data/spec/dummy/app/tabulatr_data/product_tabulatr_data.rb +2 -1
- data/spec/dummy/app/views/products/simple_index.html.erb +1 -1
- data/spec/dummy/config/locales/tabulatr.yml +4 -1
- data/spec/dummy/db/migrate/20141223164833_add_status_to_products.rb +5 -0
- data/spec/dummy/db/schema.rb +3 -1
- data/spec/features/tabulatrs_spec.rb +33 -10
- data/spec/lib/tabulatr/data/dsl_spec.rb +8 -8
- data/spec/lib/tabulatr/data/filtering_spec.rb +2 -2
- data/spec/lib/tabulatr/data/formatting_spec.rb +2 -2
- data/spec/lib/tabulatr/data/pagination_spec.rb +2 -2
- data/spec/lib/tabulatr/data/sorting_spec.rb +3 -2
- data/spec/lib/tabulatr/renderer/checkbox_spec.rb +3 -1
- data/spec/rails_helper.rb +2 -1
- data/spec/support/wait_for_ajax.rb +16 -0
- metadata +10 -7
- data/app/assets/stylesheets/tabulatr.css.scss +0 -2
- data/spec/dummy/app/assets/stylesheets/application.css.scss +0 -15
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: b70faeab636c745520f3c94de294232af0540e1d
         | 
| 4 | 
            +
              data.tar.gz: b3feca6e1aeabdf69b5b5ada582b2a6a91834957
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 44a287bc0b2493272e229cf0646b3829a2c9f79424e8ca5a5e1717531cb56bd9349774c4b69139b6423c672dfd3f04e180687e3a9399706d6e3ce8e47cf68ab0
         | 
| 7 | 
            +
              data.tar.gz: 30052dc24ecf51e7975bd54fd5adcf75d1cbea36295bb1b100fc070fbffdda79cacd01a07defe1f91d98ae84dafa91caaeccc813cea0d538f50f98a365cf7d21
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | @@ -18,11 +18,15 @@ gem 'tabulatr2' | |
| 18 18 | 
             
            After that run `bundle install`.
         | 
| 19 19 |  | 
| 20 20 | 
             
            Also add `//= require tabulatr` to your application js file and `*= require tabulatr` to your CSS asset
         | 
| 21 | 
            -
            pipeline.
         | 
| 21 | 
            +
            pipeline. Make sure to add it after including the `bootstrap` assets.
         | 
| 22 22 |  | 
| 23 23 | 
             
            In order to get the provided `i18n` language files run
         | 
| 24 24 | 
             
            `rails g tabulatr:install`
         | 
| 25 25 |  | 
| 26 | 
            +
            ## Example
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            
         | 
| 29 | 
            +
             | 
| 26 30 | 
             
            ## The DSL
         | 
| 27 31 |  | 
| 28 32 | 
             
            `Tabulatr` provides an easy to use DSL to define the data to be used in your table. It is defined in `TabulatrData`
         | 
| @@ -9,6 +9,19 @@ function Tabulatr(id){ | |
| 9 9 | 
             
              this.hasInfiniteScrolling = false;
         | 
| 10 10 | 
             
            }
         | 
| 11 11 |  | 
| 12 | 
            +
            var cbfn = function(event, isInView, visiblePartX, visiblePartY) {
         | 
| 13 | 
            +
              if (isInView && visiblePartY !== 'top' && visiblePartY !== 'bottom') {
         | 
| 14 | 
            +
                var tableId = $(event.currentTarget).data('table');
         | 
| 15 | 
            +
                var table_obj;
         | 
| 16 | 
            +
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 17 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 18 | 
            +
                    table_obj = tabulatr_tables[i];
         | 
| 19 | 
            +
                  }
         | 
| 20 | 
            +
                }
         | 
| 21 | 
            +
                table_obj.updateTable({append: true});
         | 
| 22 | 
            +
              }
         | 
| 23 | 
            +
            };
         | 
| 24 | 
            +
             | 
| 12 25 | 
             
            var tabulatr_tables;
         | 
| 13 26 | 
             
            Tabulatr.prototype = {
         | 
| 14 27 | 
             
              constructor: Tabulatr,
         | 
| @@ -108,7 +121,6 @@ Tabulatr.prototype = { | |
| 108 121 | 
             
                }
         | 
| 109 122 | 
             
                if(this.locked){ return; }
         | 
| 110 123 | 
             
                this.locked = true;
         | 
| 111 | 
            -
                var curTable = this;
         | 
| 112 124 | 
             
                this.showLoadingSpinner();
         | 
| 113 125 | 
             
                if(this.initialRequest && this.isAPersistedTable && localStorage[this.id]){
         | 
| 114 126 | 
             
                  data = JSON.parse(localStorage[this.id]);
         | 
| @@ -150,7 +162,7 @@ Tabulatr.prototype = { | |
| 150 162 | 
             
                }
         | 
| 151 163 | 
             
              },
         | 
| 152 164 |  | 
| 153 | 
            -
              handleError: function( | 
| 165 | 
            +
              handleError: function(){
         | 
| 154 166 | 
             
                if(this.isAPersistedTable && this.initialRequest){
         | 
| 155 167 | 
             
                  this.initialRequest = false;
         | 
| 156 168 | 
             
                  this.locked = false;
         | 
| @@ -161,54 +173,36 @@ Tabulatr.prototype = { | |
| 161 173 | 
             
              insertTabulatrData: function(response){
         | 
| 162 174 | 
             
                var tableId = response.meta.table_id;
         | 
| 163 175 | 
             
                var tbody = $('#'+ tableId +' tbody');
         | 
| 164 | 
            -
             | 
| 165 | 
            -
             | 
| 166 | 
            -
             | 
| 167 | 
            -
             | 
| 168 | 
            -
             | 
| 169 | 
            -
             | 
| 170 | 
            -
             | 
| 171 | 
            -
             | 
| 172 | 
            -
                   | 
| 173 | 
            -
                   | 
| 174 | 
            -
             | 
| 175 | 
            -
             | 
| 176 | 
            -
                     | 
| 177 | 
            -
             | 
| 178 | 
            -
                   | 
| 179 | 
            -
             | 
| 180 | 
            -
                   | 
| 181 | 
            -
                   | 
| 182 | 
            -
                    var  | 
| 183 | 
            -
                    var  | 
| 184 | 
            -
                    var  | 
| 185 | 
            -
                     | 
| 186 | 
            -
                    if( | 
| 187 | 
            -
                       | 
| 188 | 
            -
                      delete data._row_config.data;
         | 
| 176 | 
            +
             | 
| 177 | 
            +
                this.prepareTableForInsert(tableId, response.meta.append, response.data.length, response.meta.count);
         | 
| 178 | 
            +
             | 
| 179 | 
            +
             | 
| 180 | 
            +
                // insert the actual data
         | 
| 181 | 
            +
                for(var i = 0; i < response.data.length; i++){
         | 
| 182 | 
            +
                  var data = response.data[i];
         | 
| 183 | 
            +
                  var id = data.id;
         | 
| 184 | 
            +
                  var tr = $('#'+ tableId +' tr.empty_row').clone();
         | 
| 185 | 
            +
                  tr.removeClass('empty_row');
         | 
| 186 | 
            +
                  if(data._row_config.data){
         | 
| 187 | 
            +
                    tr.data(data._row_config.data);
         | 
| 188 | 
            +
                    delete data._row_config.data;
         | 
| 189 | 
            +
                  }
         | 
| 190 | 
            +
                  tr.attr(data._row_config);
         | 
| 191 | 
            +
                  tr.attr('data-page', response.meta.page);
         | 
| 192 | 
            +
                  tr.attr('data-id', id);
         | 
| 193 | 
            +
                  tr.find('td').each(function(index,element) {
         | 
| 194 | 
            +
                    var td = $(element);
         | 
| 195 | 
            +
                    var coltype = td.data('tabulatr-type');
         | 
| 196 | 
            +
                    var name = td.data('tabulatr-column-name');
         | 
| 197 | 
            +
                    var cont = data[name];
         | 
| 198 | 
            +
                    if(coltype === 'checkbox') {
         | 
| 199 | 
            +
                      cont = $("<input>").attr('type', 'checkbox').val(id).addClass('tabulatr-checkbox');
         | 
| 189 200 | 
             
                    }
         | 
| 190 | 
            -
                     | 
| 191 | 
            -
             | 
| 192 | 
            -
             | 
| 193 | 
            -
                    tr.find('td').each(function(index,element) {
         | 
| 194 | 
            -
                      var td = $(element);
         | 
| 195 | 
            -
                      var coltype = td.data('tabulatr-type');
         | 
| 196 | 
            -
                      var name = td.data('tabulatr-column-name');
         | 
| 197 | 
            -
                      var cont = data[name];
         | 
| 198 | 
            -
                      if(coltype === 'checkbox') {
         | 
| 199 | 
            -
                        cont = $("<input>").attr('type', 'checkbox').val(id).addClass('tabulatr-checkbox');
         | 
| 200 | 
            -
                      }
         | 
| 201 | 
            -
                      td.html(cont);
         | 
| 202 | 
            -
                    });
         | 
| 203 | 
            -
                    tbody.append(tr);
         | 
| 204 | 
            -
                  }
         | 
| 201 | 
            +
                    td.html(cont);
         | 
| 202 | 
            +
                  });
         | 
| 203 | 
            +
                  tbody.append(tr);
         | 
| 205 204 | 
             
                }
         | 
| 206 | 
            -
                 | 
| 207 | 
            -
                count_string = count_string.replace(/%\{current\}/, response.meta.count);
         | 
| 208 | 
            -
                count_string = count_string.replace(/%\{total\}/, response.meta.total);
         | 
| 209 | 
            -
                count_string = count_string.replace(/%\{per_page\}/,
         | 
| 210 | 
            -
                  response.meta.pagesize);
         | 
| 211 | 
            -
                $('.tabulatr_count[data-table='+ tableId +']').html(count_string);
         | 
| 205 | 
            +
                this.updateInfoString(tableId, response);
         | 
| 212 206 |  | 
| 213 207 | 
             
                if(this.isAPersistedTable){
         | 
| 214 208 | 
             
                  this.retrieveTableFromLocalStorage(response);
         | 
| @@ -216,7 +210,7 @@ Tabulatr.prototype = { | |
| 216 210 | 
             
              },
         | 
| 217 211 |  | 
| 218 212 |  | 
| 219 | 
            -
              replacer: function(match, attribute | 
| 213 | 
            +
              replacer: function(match, attribute){
         | 
| 220 214 | 
             
                return this.currentData[attribute];
         | 
| 221 215 | 
             
              },
         | 
| 222 216 |  | 
| @@ -267,7 +261,7 @@ Tabulatr.prototype = { | |
| 267 261 | 
             
                return hash;
         | 
| 268 262 | 
             
              },
         | 
| 269 263 |  | 
| 270 | 
            -
              localDate: function(value | 
| 264 | 
            +
              localDate: function(value){
         | 
| 271 265 | 
             
                return new Date(value).toLocaleString();
         | 
| 272 266 | 
             
              },
         | 
| 273 267 |  | 
| @@ -279,6 +273,29 @@ Tabulatr.prototype = { | |
| 279 273 | 
             
                this.initialRequest = false;
         | 
| 280 274 | 
             
                this.locked = false;
         | 
| 281 275 | 
             
                $('.tabulatr-spinner-box[data-table="'+ this.id +'"]').hide();
         | 
| 276 | 
            +
              },
         | 
| 277 | 
            +
             | 
| 278 | 
            +
              updateInfoString: function(tableId, response){
         | 
| 279 | 
            +
                var count_string = $('.tabulatr_count[data-table='+ tableId +']').data('format-string');
         | 
| 280 | 
            +
                count_string = count_string.replace(/%\{current\}/, response.meta.count);
         | 
| 281 | 
            +
                count_string = count_string.replace(/%\{total\}/, response.meta.total);
         | 
| 282 | 
            +
                count_string = count_string.replace(/%\{per_page\}/,
         | 
| 283 | 
            +
                  response.meta.pagesize);
         | 
| 284 | 
            +
                $('.tabulatr_count[data-table='+ tableId +']').html(count_string);
         | 
| 285 | 
            +
              },
         | 
| 286 | 
            +
             | 
| 287 | 
            +
              prepareTableForInsert: function(tableId, append, dataCount, actualCount){
         | 
| 288 | 
            +
                if(!append){
         | 
| 289 | 
            +
                  if(this.storePage){
         | 
| 290 | 
            +
                    $('#'+ tableId +' tbody tr').hide();
         | 
| 291 | 
            +
                  }else{
         | 
| 292 | 
            +
                    $('#'+ tableId +' tbody').html('');
         | 
| 293 | 
            +
                  }
         | 
| 294 | 
            +
                }
         | 
| 295 | 
            +
                if(dataCount === 0 || this.currentCount() + dataCount >= actualCount){
         | 
| 296 | 
            +
                  this.moreResults = false;
         | 
| 297 | 
            +
                  $('.pagination_trigger[data-table='+ tableId +']').unbind('inview');
         | 
| 298 | 
            +
                }
         | 
| 282 299 | 
             
              }
         | 
| 283 300 |  | 
| 284 301 | 
             
            };
         | 
| @@ -294,7 +311,7 @@ $(document).on('ready page:load', function(){ | |
| 294 311 | 
             
                var tableId = table.attr('id');
         | 
| 295 312 | 
             
                var table_obj;
         | 
| 296 313 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 297 | 
            -
                  if(tabulatr_tables[i].id  | 
| 314 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 298 315 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 299 316 | 
             
                  }
         | 
| 300 317 | 
             
                }
         | 
| @@ -334,7 +351,7 @@ $(document).on('ready page:load', function(){ | |
| 334 351 | 
             
                $('#'+ tableId +' .tabulatr-wrench').addClass('disabled');
         | 
| 335 352 | 
             
                var table_obj;
         | 
| 336 353 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 337 | 
            -
                  if(tabulatr_tables[i].id  | 
| 354 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 338 355 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 339 356 | 
             
                  }
         | 
| 340 357 | 
             
                }
         | 
| @@ -345,7 +362,7 @@ $(document).on('ready page:load', function(){ | |
| 345 362 | 
             
                var tableId = $(this).data('table');
         | 
| 346 363 | 
             
                var table_obj;
         | 
| 347 364 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 348 | 
            -
                  if(tabulatr_tables[i].id  | 
| 365 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 349 366 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 350 367 | 
             
                  }
         | 
| 351 368 | 
             
                }
         | 
| @@ -365,7 +382,7 @@ $(document).on('ready page:load', function(){ | |
| 365 382 | 
             
                var tableId = $(this).data('table');
         | 
| 366 383 | 
             
                var table_obj;
         | 
| 367 384 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 368 | 
            -
                  if(tabulatr_tables[i].id  | 
| 385 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 369 386 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 370 387 | 
             
                  }
         | 
| 371 388 | 
             
                }
         | 
| @@ -377,7 +394,7 @@ $(document).on('ready page:load', function(){ | |
| 377 394 | 
             
                var tableId = $(this).parents('table').prop('id');
         | 
| 378 395 | 
             
                var table_obj;
         | 
| 379 396 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 380 | 
            -
                  if(tabulatr_tables[i].id  | 
| 397 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 381 398 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 382 399 | 
             
                  }
         | 
| 383 400 | 
             
                }
         | 
| @@ -400,7 +417,7 @@ $(document).on('ready page:load', function(){ | |
| 400 417 | 
             
                var $markAllCheckbox = $table.find('.tabulatr_mark_all');
         | 
| 401 418 | 
             
                var table_obj;
         | 
| 402 419 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 403 | 
            -
                  if(tabulatr_tables[i].id  | 
| 420 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 404 421 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 405 422 | 
             
                  }
         | 
| 406 423 | 
             
                }
         | 
| @@ -435,7 +452,7 @@ $(document).on('ready page:load', function(){ | |
| 435 452 | 
             
                var tableId = $(this).closest('div').data('table');
         | 
| 436 453 | 
             
                var table_obj;
         | 
| 437 454 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 438 | 
            -
                  if(tabulatr_tables[i].id  | 
| 455 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 439 456 | 
             
                    table_obj = tabulatr_tables[i];
         | 
| 440 457 | 
             
                  }
         | 
| 441 458 | 
             
                }
         | 
| @@ -451,11 +468,11 @@ $(document).on('ready page:load', function(){ | |
| 451 468 |  | 
| 452 469 | 
             
              $(document).on('click', 'a[data-tabulatr-reset]',function(){
         | 
| 453 470 | 
             
                var a = $(this);
         | 
| 454 | 
            -
                var tableObj | 
| 471 | 
            +
                var tableObj;
         | 
| 455 472 | 
             
                var tableId = a.data('tabulatrReset');
         | 
| 456 | 
            -
                a.parents('.tabulatr-outer-wrapper').removeClass('filtered')
         | 
| 473 | 
            +
                a.parents('.tabulatr-outer-wrapper').removeClass('filtered');
         | 
| 457 474 | 
             
                for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 458 | 
            -
                  if(tabulatr_tables[i].id  | 
| 475 | 
            +
                  if(tabulatr_tables[i].id === tableId){
         | 
| 459 476 | 
             
                    tableObj = tabulatr_tables[i];
         | 
| 460 477 | 
             
                    tableObj.resetTable();
         | 
| 461 478 | 
             
                    return false;
         | 
| @@ -484,7 +501,7 @@ $(document).on('ready page:load', function(){ | |
| 484 501 | 
             
                  }
         | 
| 485 502 | 
             
                  tabulatr_tables.push(tabulatrTable);
         | 
| 486 503 | 
             
                  for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 487 | 
            -
                    if(tabulatr_tables[i].id  | 
| 504 | 
            +
                    if(tabulatr_tables[i].id === tableId){
         | 
| 488 505 | 
             
                      tableObj = tabulatr_tables[i];
         | 
| 489 506 | 
             
                    }
         | 
| 490 507 | 
             
                  }
         | 
| @@ -510,7 +527,7 @@ $(document).on('click', '.pagination a[data-page]', function(){ | |
| 510 527 | 
             
              $('.tabulatr_mark_all[data-table='+ tableId +']').prop('indeterminate', false);
         | 
| 511 528 | 
             
              var table_obj;
         | 
| 512 529 | 
             
              for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 513 | 
            -
                if(tabulatr_tables[i].id  | 
| 530 | 
            +
                if(tabulatr_tables[i].id === tableId){
         | 
| 514 531 | 
             
                  table_obj = tabulatr_tables[i];
         | 
| 515 532 | 
             
                }
         | 
| 516 533 | 
             
              }
         | 
| @@ -529,24 +546,3 @@ $(document).on('change', 'select[data-tabulatr-date-filter]', function() { | |
| 529 546 | 
             
                select.parents('.tabulatr-filter-row').find(".from_to").hide().val('');
         | 
| 530 547 | 
             
              }
         | 
| 531 548 | 
             
            });
         | 
| 532 | 
            -
             | 
| 533 | 
            -
             | 
| 534 | 
            -
            var cbfn = function(event, isInView, visiblePartX, visiblePartY) {
         | 
| 535 | 
            -
              if (isInView) {
         | 
| 536 | 
            -
                // element is now visible in the viewport
         | 
| 537 | 
            -
                if (visiblePartY == 'top') {
         | 
| 538 | 
            -
                  // top part of element is visible
         | 
| 539 | 
            -
                } else if (visiblePartY == 'bottom') {
         | 
| 540 | 
            -
                  // bottom part of element is visible
         | 
| 541 | 
            -
                } else {
         | 
| 542 | 
            -
                  var tableId = $(event.currentTarget).data('table');
         | 
| 543 | 
            -
                  var table_obj;
         | 
| 544 | 
            -
                  for(var i = 0; i < tabulatr_tables.length; i++){
         | 
| 545 | 
            -
                    if(tabulatr_tables[i].id == tableId){
         | 
| 546 | 
            -
                      table_obj = tabulatr_tables[i];
         | 
| 547 | 
            -
                    }
         | 
| 548 | 
            -
                  }
         | 
| 549 | 
            -
                  table_obj.updateTable({append: true});
         | 
| 550 | 
            -
                }
         | 
| 551 | 
            -
              }
         | 
| 552 | 
            -
            };
         | 
| @@ -57,10 +57,6 @@ | |
| 57 57 | 
             
                opacity: 1;
         | 
| 58 58 | 
             
              }
         | 
| 59 59 |  | 
| 60 | 
            -
              .popover .tabulatr_filter_form {
         | 
| 61 | 
            -
                width: 400px;
         | 
| 62 | 
            -
              }
         | 
| 63 | 
            -
             | 
| 64 60 | 
             
              .tabulatr_filtered_column{
         | 
| 65 61 | 
             
                text-decoration: underline;
         | 
| 66 62 | 
             
              }
         | 
| @@ -192,4 +188,12 @@ | |
| 192 188 | 
             
                position: relative;
         | 
| 193 189 | 
             
                text-align: center;
         | 
| 194 190 | 
             
              }
         | 
| 191 | 
            +
             | 
| 192 | 
            +
              .tabulatr-filter-row{
         | 
| 193 | 
            +
                label{
         | 
| 194 | 
            +
                  display: block;
         | 
| 195 | 
            +
                }
         | 
| 196 | 
            +
              }
         | 
| 195 197 | 
             
            }
         | 
| 198 | 
            +
             | 
| 199 | 
            +
            @import 'font-awesome';
         | 
| @@ -23,7 +23,7 @@ | |
| 23 23 | 
             
              - iname = "#{formatted_name}_batch"
         | 
| 24 24 | 
             
              .dropdown
         | 
| 25 25 | 
             
                a.btn.btn-default data-toggle="dropdown" href="#"
         | 
| 26 | 
            -
                  i.icon-cog.glyphicon.glyphicon-cog.fa.fa-cog | 
| 26 | 
            +
                  i.icon-cog.glyphicon.glyphicon-cog.fa.fa-cog>
         | 
| 27 27 | 
             
                  i.icon-caret-down.glyphicon.glyphicon-chevron-down.fa.fa-caret-down
         | 
| 28 28 | 
             
                ul.dropdown-menu role="menu" aria-labelledby="dLabel"
         | 
| 29 29 | 
             
                  - table_options[:batch_actions].each do |key, label|
         | 
| @@ -1,4 +1,3 @@ | |
| 1 | 
            -
            //{:buttons=>[{:icon=>:"eye-open", :path=>"/products/1", :options=>{:class=>"btn-success"}}, {:icon=>:pencil, :path=>"/products/1/edit", :options=>{:class=>"btn-warning"}}], :submenu=>[{:icon=>:star, :path=>"/products/1", :label=>"Dolle Sache"}, :divider, {:icon=>:"trash-o", :path=>"/products/1", :label=>"Löschen", :options=>{:confirm=>"echt?", :class=>"btn-danger", :method=>:delete}}]}
         | 
| 2 1 | 
             
            .btn-group
         | 
| 3 2 | 
             
              - buttons[:buttons].each do |button|
         | 
| 4 3 | 
             
                - o = (button[:options] || {}).merge(class: "btn btn-sm btn-default #{button[:options].try(:[], :class)}")
         | 
| @@ -89,5 +89,10 @@ | |
| 89 89 | 
             
                                      label.control-label for="#{formatted_name}_#{name}_filter_from"
         | 
| 90 90 | 
             
                                        = "Bis"
         | 
| 91 91 | 
             
                                      input.tabulatr_filter.form-control.date-picker.from_to.hidden type="text" id="#{formatted_name}_#{name}_filter_to" name="#{iname}[date][to]"
         | 
| 92 | 
            +
                              - elsif column.filter == :enum
         | 
| 93 | 
            +
                                select.form-control name=iname data-tabulatr-attribute=name
         | 
| 94 | 
            +
                                  option= I18n.t('tabulatr.enum_filter.none')
         | 
| 95 | 
            +
                                  - column.klass.try(column.name.to_s.pluralize.to_sym).each do |key, value|
         | 
| 96 | 
            +
                                    option value=value = key
         | 
| 92 97 | 
             
                              - else
         | 
| 93 98 | 
             
                                input.tabulatr_filter.form-control type="text" data-tabulatr-attribute="#{name}" name="#{iname}[like]"
         | 
| @@ -182,7 +182,11 @@ class Tabulatr::Renderer::Column | |
| 182 182 | 
             
              def determine_appropriate_filter!
         | 
| 183 183 | 
             
                case self.klass.columns_hash[self.name.to_s].try(:type)
         | 
| 184 184 | 
             
                when :integer, :float, :decimal
         | 
| 185 | 
            -
                  self. | 
| 185 | 
            +
                  if self.klass.respond_to?(:defined_enums) && self.klass.defined_enums.keys.include?(self.name.to_s)
         | 
| 186 | 
            +
                    self.filter = :enum
         | 
| 187 | 
            +
                  else
         | 
| 188 | 
            +
                    self.filter = :exact
         | 
| 189 | 
            +
                  end
         | 
| 186 190 | 
             
                when :string, :text
         | 
| 187 191 | 
             
                  self.filter = :like
         | 
| 188 192 | 
             
                when :date, :time, :datetime, :timestamp
         | 
    
        data/lib/tabulatr/version.rb
    CHANGED
    
    
| @@ -8,6 +8,7 @@ class ProductTabulatrData < Tabulatr::Data | |
| 8 8 |  | 
| 9 9 | 
             
              column :title
         | 
| 10 10 | 
             
              column :id
         | 
| 11 | 
            +
              column :status
         | 
| 11 12 | 
             
              column :price, table_column_options: {filter: :range} do "#{record.price} EUR" end # <- Block evaluiert im Kontext EINES Records
         | 
| 12 13 | 
             
              column :edit_link do link_to "edit #{record.title}", product_path(record) end
         | 
| 13 14 | 
             
              # column :name,
         | 
| @@ -36,7 +37,7 @@ class ProductTabulatrData < Tabulatr::Data | |
| 36 37 | 
             
                b.submenu do |s|
         | 
| 37 38 | 
             
                  s.button :star, product_path(r), label: 'Dolle Sache'
         | 
| 38 39 | 
             
                  s.divider
         | 
| 39 | 
            -
                  s.button :'trash-o', product_path(r), label: 'Löschen',  | 
| 40 | 
            +
                  s.button :'trash-o', product_path(r), label: 'Löschen', class: 'btn-danger', method: :delete, data: {confirm: 'echt?'}
         | 
| 40 41 | 
             
                end
         | 
| 41 42 | 
             
                "haha!"
         | 
| 42 43 | 
             
              end
         | 
| @@ -1,4 +1,4 @@ | |
| 1 1 | 
             
            <%= table_for Product, paginate: true, persistent: false,
         | 
| 2 2 | 
             
              batch_actions: {a: "Hallo", b: "Du da!"},
         | 
| 3 | 
            -
              columns: [:'_buttons', :title, :price, :active, :vendor_product_name, :updated_at,
         | 
| 3 | 
            +
              columns: [:'_buttons', :title, :price, :active, :vendor_product_name, :updated_at, :status,
         | 
| 4 4 | 
             
                        {vendor: :name}, 'tags:title'] %>
         | 
    
        data/spec/dummy/db/schema.rb
    CHANGED
    
    | @@ -11,7 +11,7 @@ | |
| 11 11 | 
             
            #
         | 
| 12 12 | 
             
            # It's strongly recommended that you check this file into your version control system.
         | 
| 13 13 |  | 
| 14 | 
            -
            ActiveRecord::Schema.define(version:  | 
| 14 | 
            +
            ActiveRecord::Schema.define(version: 20141223164833) do
         | 
| 15 15 |  | 
| 16 16 | 
             
              create_table "products", force: true do |t|
         | 
| 17 17 | 
             
                t.integer  "vendor_id"
         | 
| @@ -21,6 +21,8 @@ ActiveRecord::Schema.define(version: 20140128140114) do | |
| 21 21 | 
             
                t.datetime "created_at"
         | 
| 22 22 | 
             
                t.datetime "updated_at"
         | 
| 23 23 | 
             
                t.datetime "publish_at"
         | 
| 24 | 
            +
                t.string   "type"
         | 
| 25 | 
            +
                t.integer  "status",     default: 0
         | 
| 24 26 | 
             
              end
         | 
| 25 27 |  | 
| 26 28 | 
             
              add_index "products", ["vendor_id"], name: "index_products_on_vendor_id"
         | 
| @@ -131,14 +131,12 @@ feature "Tabulatr" do | |
| 131 131 | 
             
                  visit simple_index_products_path
         | 
| 132 132 | 
             
                  click_link 'Filter'
         | 
| 133 133 | 
             
                  fill_in("product_filter[products:title][like]", with: "ore")
         | 
| 134 | 
            -
                  find('.tabulatr-submit-table').click
         | 
| 135 134 | 
             
                  expect(page).to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'lorem')
         | 
| 136 135 | 
             
                  expect(page).to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'labore')
         | 
| 137 136 | 
             
                  expect(page).to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'dolore')
         | 
| 138 137 |  | 
| 139 138 | 
             
                  within(".tabulatr_filter_form") do
         | 
| 140 139 | 
             
                    fill_in("product_filter[products:title][like]", :with => "loreem")
         | 
| 141 | 
            -
                    find('.tabulatr-submit-table').click
         | 
| 142 140 | 
             
                  end
         | 
| 143 141 | 
             
                  expect(page).not_to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'lorem')
         | 
| 144 142 | 
             
                  expect(page).not_to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'labore')
         | 
| @@ -151,7 +149,6 @@ feature "Tabulatr" do | |
| 151 149 | 
             
                  visit simple_index_products_path
         | 
| 152 150 | 
             
                  click_link 'Filter'
         | 
| 153 151 | 
             
                  find('form.tabulatr_filter_form').fill_in("product_filter[vendor:name]", with: "producer")
         | 
| 154 | 
            -
                  find('.tabulatr-submit-table').click
         | 
| 155 152 | 
             
                  expect(page).not_to have_selector('td[data-tabulatr-column-name="vendor:name"]', text: @vendor1.name)
         | 
| 156 153 | 
             
                  expect(page).to have_selector('td[data-tabulatr-column-name="vendor:name"]', text: @vendor2.name)
         | 
| 157 154 | 
             
                end
         | 
| @@ -164,18 +161,45 @@ feature "Tabulatr" do | |
| 164 161 | 
             
                  click_link 'Filter'
         | 
| 165 162 | 
             
                  within('.tabulatr_filter_form') do
         | 
| 166 163 | 
             
                    fill_in("product_filter[products:price][from]", :with => 4)
         | 
| 164 | 
            +
                    wait_for_ajax
         | 
| 167 165 | 
             
                    fill_in("product_filter[products:price][to]", :with => 10)
         | 
| 168 | 
            -
                     | 
| 166 | 
            +
                    wait_for_ajax
         | 
| 169 167 | 
             
                  end
         | 
| 170 | 
            -
                  expect(page).to  | 
| 171 | 
            -
                  expect(page).to  | 
| 168 | 
            +
                  expect(page).to have_no_css('.tabulatr-spinner-box')
         | 
| 169 | 
            +
                  expect(page).to have_css(".tabulatr_table tbody tr", text: 'foo')
         | 
| 170 | 
            +
                  expect(page).to have_no_css(".tabulatr_table tbody tr", text: 'bar')
         | 
| 172 171 | 
             
                  within('.tabulatr_filter_form') do
         | 
| 173 172 | 
             
                    fill_in("product_filter[products:price][from]", :with => 12)
         | 
| 173 | 
            +
                    wait_for_ajax
         | 
| 174 174 | 
             
                    fill_in("product_filter[products:price][to]", :with => 19)
         | 
| 175 | 
            -
                     | 
| 175 | 
            +
                    wait_for_ajax
         | 
| 176 176 | 
             
                  end
         | 
| 177 | 
            -
                  expect(page).to  | 
| 178 | 
            -
                  expect(page).to  | 
| 177 | 
            +
                  expect(page).to have_no_css('.tabulatr-spinner-box')
         | 
| 178 | 
            +
                  expect(page).to have_css(".tabulatr_table tbody tr", text: 'bar')
         | 
| 179 | 
            +
                  expect(page).to have_no_css(".tabulatr_table tbody tr", text: 'foo')
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                scenario "filters enums", js: true do
         | 
| 183 | 
            +
                  skip unless Product.respond_to?(:enum)
         | 
| 184 | 
            +
                  Product.create!([{title: 'foo', price: 5, status: 'in_stock'},
         | 
| 185 | 
            +
                                   {title: 'bar', price: 10, status: 'out_of_stock'}])
         | 
| 186 | 
            +
                  visit simple_index_products_path
         | 
| 187 | 
            +
                  expect(page).to have_css('.tabulatr_table tbody', text: 'foo')
         | 
| 188 | 
            +
                  expect(page).to have_css('.tabulatr_table tbody', text: 'bar')
         | 
| 189 | 
            +
                  click_link 'Filter'
         | 
| 190 | 
            +
                  within('.tabulatr_filter_form') do
         | 
| 191 | 
            +
                    select 'in_stock', from: 'product_filter[products:status]'
         | 
| 192 | 
            +
                  end
         | 
| 193 | 
            +
                  expect(page).to have_no_css('.tabulatr-spinner-box')
         | 
| 194 | 
            +
                  expect(page).to have_css('.tabulatr_table tbody', text: 'foo')
         | 
| 195 | 
            +
                  expect(page).to have_no_css('.tabulatr_table tbody', text: 'bar')
         | 
| 196 | 
            +
                  within('.tabulatr_filter_form') do
         | 
| 197 | 
            +
                    select 'out_of_stock', from: 'product_filter[products:status]'
         | 
| 198 | 
            +
                  end
         | 
| 199 | 
            +
                  expect(page).to have_no_css('.tabulatr-spinner-box')
         | 
| 200 | 
            +
                  expect(page).to have_css('.tabulatr_table tbody', text: 'bar')
         | 
| 201 | 
            +
                  expect(page).to have_no_css('.tabulatr_table tbody', text: 'foo')
         | 
| 202 | 
            +
             | 
| 179 203 | 
             
                end
         | 
| 180 204 |  | 
| 181 205 | 
             
                scenario 'removes the filters', js: true do
         | 
| @@ -184,7 +208,6 @@ feature "Tabulatr" do | |
| 184 208 | 
             
                  click_link 'Filter'
         | 
| 185 209 | 
             
                  within(".tabulatr_filter_form") do
         | 
| 186 210 | 
             
                    fill_in("product_filter[products:title][like]", with: "foo")
         | 
| 187 | 
            -
                    find('.tabulatr-submit-table').click
         | 
| 188 211 | 
             
                  end
         | 
| 189 212 | 
             
                  expect(page).not_to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'bar')
         | 
| 190 213 | 
             
                  expect(page).to have_selector('td[data-tabulatr-column-name="products:title"]', text: 'foo')
         | 
| @@ -1,19 +1,19 @@ | |
| 1 1 | 
             
            require 'rails_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Tabulatr::Data::DSL do
         | 
| 4 | 
            -
              class  | 
| 4 | 
            +
              class DummyDSLClass
         | 
| 5 5 | 
             
                extend Tabulatr::Data::DSL
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 8 | 
             
              before(:each) do
         | 
| 9 | 
            -
                 | 
| 9 | 
            +
                DummyDSLClass.instance_variable_set('@table_columns', [])
         | 
| 10 10 | 
             
              end
         | 
| 11 11 |  | 
| 12 12 | 
             
              describe '#column' do
         | 
| 13 13 | 
             
                it 'escapes table and column names' do
         | 
| 14 | 
            -
                  allow( | 
| 15 | 
            -
                   | 
| 16 | 
            -
                  table_column =  | 
| 14 | 
            +
                  allow(DummyDSLClass).to receive(:main_class).and_return(Product)
         | 
| 15 | 
            +
                  DummyDSLClass.column(:active)
         | 
| 16 | 
            +
                  table_column = DummyDSLClass.instance_variable_get('@table_columns').first
         | 
| 17 17 | 
             
                  expect(table_column.filter_sql).to match(/\"products\".\"active\"/)
         | 
| 18 18 | 
             
                  expect(table_column.sort_sql).to match(/\"products\".\"active\"/)
         | 
| 19 19 | 
             
                end
         | 
| @@ -21,9 +21,9 @@ describe Tabulatr::Data::DSL do | |
| 21 21 |  | 
| 22 22 | 
             
              describe '#association' do
         | 
| 23 23 | 
             
                it 'escapes table and column names' do
         | 
| 24 | 
            -
                  allow( | 
| 25 | 
            -
                   | 
| 26 | 
            -
                  table_column =  | 
| 24 | 
            +
                  allow(DummyDSLClass).to receive(:main_class).and_return(Product)
         | 
| 25 | 
            +
                  DummyDSLClass.association(:vendor, :name)
         | 
| 26 | 
            +
                  table_column = DummyDSLClass.instance_variable_get('@table_columns').first
         | 
| 27 27 | 
             
                  expect(table_column.filter_sql).to match(/\"vendors\".\"name\"/)
         | 
| 28 28 | 
             
                  expect(table_column.sort_sql).to match(/\"vendors\".\"name\"/)
         | 
| 29 29 | 
             
                end
         | 
| @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            require 'rails_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Tabulatr::Data::Filtering do
         | 
| 4 | 
            -
              class  | 
| 4 | 
            +
              class DummyFilteringClass
         | 
| 5 5 | 
             
                include Tabulatr::Data::Filtering
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 8 | 
             
              before(:each) do
         | 
| 9 | 
            -
                @dummy =  | 
| 9 | 
            +
                @dummy = DummyFilteringClass.new
         | 
| 10 10 | 
             
                @dummy.instance_variable_set('@relation', Product.all)
         | 
| 11 11 | 
             
                @yesterday = Product.create!(publish_at: DateTime.new(2013, 12, 31, 0, 0))
         | 
| 12 12 | 
             
                @today = Product.create!(publish_at: DateTime.new(2014, 1, 1, 15, 0))
         | 
| @@ -1,13 +1,13 @@ | |
| 1 1 | 
             
            require 'rails_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Tabulatr::Data::Formatting do
         | 
| 4 | 
            -
              class  | 
| 4 | 
            +
              class DummyFormattingClass
         | 
| 5 5 | 
             
                include Tabulatr::Data::Formatting
         | 
| 6 6 | 
             
                def table_columns; end
         | 
| 7 7 | 
             
              end
         | 
| 8 8 |  | 
| 9 9 | 
             
              before(:each) do
         | 
| 10 | 
            -
                @dummy =  | 
| 10 | 
            +
                @dummy = DummyFormattingClass.new
         | 
| 11 11 | 
             
                @dummy.instance_variable_set('@relation', Product.all)
         | 
| 12 12 | 
             
                column = Tabulatr::Renderer::Column.from(
         | 
| 13 13 | 
             
                    name: :title,
         | 
| @@ -1,12 +1,12 @@ | |
| 1 1 | 
             
            require 'rails_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Tabulatr::Data::Pagination do
         | 
| 4 | 
            -
              class  | 
| 4 | 
            +
              class DummyPaginationClass
         | 
| 5 5 | 
             
                include Tabulatr::Data::Pagination
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 8 | 
             
              before(:all) do
         | 
| 9 | 
            -
                @dummy =  | 
| 9 | 
            +
                @dummy = DummyPaginationClass.new
         | 
| 10 10 | 
             
              end
         | 
| 11 11 | 
             
              describe '.compute_pagination' do
         | 
| 12 12 | 
             
                it "computes an offset" do
         | 
| @@ -1,12 +1,13 @@ | |
| 1 1 | 
             
            require 'rails_helper'
         | 
| 2 2 |  | 
| 3 3 | 
             
            describe Tabulatr::Data::Sorting do
         | 
| 4 | 
            -
              class  | 
| 4 | 
            +
              class DummySortingClass
         | 
| 5 5 | 
             
                include Tabulatr::Data::Sorting
         | 
| 6 | 
            +
                def table_columns; end
         | 
| 6 7 | 
             
              end
         | 
| 7 8 |  | 
| 8 9 | 
             
              before(:each) do
         | 
| 9 | 
            -
                @dummy =  | 
| 10 | 
            +
                @dummy = DummySortingClass.new
         | 
| 10 11 | 
             
                @dummy.instance_variable_set('@relation', Product.all)
         | 
| 11 12 | 
             
                @dummy.instance_variable_set('@table_name', 'products')
         | 
| 12 13 | 
             
                @dummy.instance_variable_set('@base', Product)
         | 
| @@ -6,7 +6,9 @@ describe Tabulatr::Renderer::Checkbox do | |
| 6 6 |  | 
| 7 7 | 
             
                it "generates a checkbox" do
         | 
| 8 8 | 
             
                  checkbox = Tabulatr::Renderer::Checkbox.new
         | 
| 9 | 
            -
                  expect(checkbox.human_name).to  | 
| 9 | 
            +
                  expect(checkbox.human_name).to match(/\A<input.+\/>\z/)
         | 
| 10 | 
            +
                  expect(checkbox.human_name).to match(/class="tabulatr_mark_all"/)
         | 
| 11 | 
            +
                  expect(checkbox.human_name).to match(/type="checkbox"/)
         | 
| 10 12 | 
             
                end
         | 
| 11 13 |  | 
| 12 14 | 
             
              end
         | 
    
        data/spec/rails_helper.rb
    CHANGED
    
    | @@ -14,9 +14,10 @@ Capybara.register_driver :poltergeist do |app| | |
| 14 14 | 
             
              Capybara::Poltergeist::Driver.new(app, {js_errors: true})
         | 
| 15 15 | 
             
            end
         | 
| 16 16 |  | 
| 17 | 
            +
             | 
| 17 18 | 
             
            # Requires supporting ruby files with custom matchers and macros, etc,
         | 
| 18 19 | 
             
            # in spec/support/ and its subdirectories.
         | 
| 19 | 
            -
            Dir[Rails.root.join(" | 
| 20 | 
            +
            Dir[Rails.root.join("../support/**/*.rb")].each { |f| require f }
         | 
| 20 21 |  | 
| 21 22 | 
             
            RSpec.configure do |config|
         | 
| 22 23 | 
             
              config.use_transactional_fixtures = false
         | 
| @@ -0,0 +1,16 @@ | |
| 1 | 
            +
            # from http://robots.thoughtbot.com/automatically-wait-for-ajax-with-capybara
         | 
| 2 | 
            +
            module WaitForAjax
         | 
| 3 | 
            +
              def wait_for_ajax
         | 
| 4 | 
            +
                Timeout.timeout(Capybara.default_wait_time) do
         | 
| 5 | 
            +
                  loop until finished_all_ajax_requests?
         | 
| 6 | 
            +
                end
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              def finished_all_ajax_requests?
         | 
| 10 | 
            +
                page.evaluate_script('jQuery.active').zero?
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            RSpec.configure do |config|
         | 
| 15 | 
            +
              config.include WaitForAjax, type: :feature
         | 
| 16 | 
            +
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: tabulatr2
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.9. | 
| 4 | 
            +
              version: 0.9.16
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Peter Horn
         | 
| @@ -10,7 +10,7 @@ authors: | |
| 10 10 | 
             
            autorequire: 
         | 
| 11 11 | 
             
            bindir: bin
         | 
| 12 12 | 
             
            cert_chain: []
         | 
| 13 | 
            -
            date:  | 
| 13 | 
            +
            date: 2015-03-03 00:00:00.000000000 Z
         | 
| 14 14 | 
             
            dependencies:
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 16 16 | 
             
              name: rails
         | 
| @@ -125,8 +125,7 @@ files: | |
| 125 125 | 
             
            - app/assets/javascripts/tabulatr/_tabulatr.js
         | 
| 126 126 | 
             
            - app/assets/javascripts/tabulatr/application.js
         | 
| 127 127 | 
             
            - app/assets/javascripts/tabulatr/jquery.inview.min.js
         | 
| 128 | 
            -
            - app/assets/stylesheets/tabulatr. | 
| 129 | 
            -
            - app/assets/stylesheets/tabulatr/application.css.scss
         | 
| 128 | 
            +
            - app/assets/stylesheets/tabulatr.scss
         | 
| 130 129 | 
             
            - app/views/tabulatr/_tabulatr_actual_table.html.slim
         | 
| 131 130 | 
             
            - app/views/tabulatr/_tabulatr_batch_actions_menu.html.slim
         | 
| 132 131 | 
             
            - app/views/tabulatr/_tabulatr_buttons.html.slim
         | 
| @@ -177,7 +176,7 @@ files: | |
| 177 176 | 
             
            - spec/dummy/Rakefile
         | 
| 178 177 | 
             
            - spec/dummy/app/assets/images/.keep
         | 
| 179 178 | 
             
            - spec/dummy/app/assets/javascripts/application.js
         | 
| 180 | 
            -
            - spec/dummy/app/assets/stylesheets/application. | 
| 179 | 
            +
            - spec/dummy/app/assets/stylesheets/application.scss
         | 
| 181 180 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 182 181 | 
             
            - spec/dummy/app/controllers/concerns/.keep
         | 
| 183 182 | 
             
            - spec/dummy/app/controllers/products_controller.rb
         | 
| @@ -225,6 +224,7 @@ files: | |
| 225 224 | 
             
            - spec/dummy/db/migrate/20130730132321_create_products.rb
         | 
| 226 225 | 
             
            - spec/dummy/db/migrate/20130730132348_create_tags.rb
         | 
| 227 226 | 
             
            - spec/dummy/db/migrate/20140128140114_add_publish_at_to_products.rb
         | 
| 227 | 
            +
            - spec/dummy/db/migrate/20141223164833_add_status_to_products.rb
         | 
| 228 228 | 
             
            - spec/dummy/db/schema.rb
         | 
| 229 229 | 
             
            - spec/dummy/lib/assets/.keep
         | 
| 230 230 | 
             
            - spec/dummy/log/.keep
         | 
| @@ -244,6 +244,7 @@ files: | |
| 244 244 | 
             
            - spec/lib/tabulatr/renderer/renderer_spec.rb
         | 
| 245 245 | 
             
            - spec/rails_helper.rb
         | 
| 246 246 | 
             
            - spec/spec_helper.rb
         | 
| 247 | 
            +
            - spec/support/wait_for_ajax.rb
         | 
| 247 248 | 
             
            - tabulatr.gemspec
         | 
| 248 249 | 
             
            homepage: http://github.com/metaminded/tabulatr2
         | 
| 249 250 | 
             
            licenses:
         | 
| @@ -266,7 +267,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 266 267 | 
             
                  version: '0'
         | 
| 267 268 | 
             
            requirements: []
         | 
| 268 269 | 
             
            rubyforge_project: 
         | 
| 269 | 
            -
            rubygems_version: 2. | 
| 270 | 
            +
            rubygems_version: 2.4.5
         | 
| 270 271 | 
             
            signing_key: 
         | 
| 271 272 | 
             
            specification_version: 4
         | 
| 272 273 | 
             
            summary: A tight DSL to build tables of ActiveRecord models with sorting, pagination,
         | 
| @@ -277,7 +278,7 @@ test_files: | |
| 277 278 | 
             
            - spec/dummy/Rakefile
         | 
| 278 279 | 
             
            - spec/dummy/app/assets/images/.keep
         | 
| 279 280 | 
             
            - spec/dummy/app/assets/javascripts/application.js
         | 
| 280 | 
            -
            - spec/dummy/app/assets/stylesheets/application. | 
| 281 | 
            +
            - spec/dummy/app/assets/stylesheets/application.scss
         | 
| 281 282 | 
             
            - spec/dummy/app/controllers/application_controller.rb
         | 
| 282 283 | 
             
            - spec/dummy/app/controllers/concerns/.keep
         | 
| 283 284 | 
             
            - spec/dummy/app/controllers/products_controller.rb
         | 
| @@ -325,6 +326,7 @@ test_files: | |
| 325 326 | 
             
            - spec/dummy/db/migrate/20130730132321_create_products.rb
         | 
| 326 327 | 
             
            - spec/dummy/db/migrate/20130730132348_create_tags.rb
         | 
| 327 328 | 
             
            - spec/dummy/db/migrate/20140128140114_add_publish_at_to_products.rb
         | 
| 329 | 
            +
            - spec/dummy/db/migrate/20141223164833_add_status_to_products.rb
         | 
| 328 330 | 
             
            - spec/dummy/db/schema.rb
         | 
| 329 331 | 
             
            - spec/dummy/lib/assets/.keep
         | 
| 330 332 | 
             
            - spec/dummy/log/.keep
         | 
| @@ -344,3 +346,4 @@ test_files: | |
| 344 346 | 
             
            - spec/lib/tabulatr/renderer/renderer_spec.rb
         | 
| 345 347 | 
             
            - spec/rails_helper.rb
         | 
| 346 348 | 
             
            - spec/spec_helper.rb
         | 
| 349 | 
            +
            - spec/support/wait_for_ajax.rb
         | 
| @@ -1,15 +0,0 @@ | |
| 1 | 
            -
            /*
         | 
| 2 | 
            -
             * This is a manifest file that'll be compiled into application.css, which will include all the files
         | 
| 3 | 
            -
             * listed below.
         | 
| 4 | 
            -
             *
         | 
| 5 | 
            -
             * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
         | 
| 6 | 
            -
             * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
         | 
| 7 | 
            -
             *
         | 
| 8 | 
            -
             * You're free to add application-wide styles to this file and they'll appear at the top of the
         | 
| 9 | 
            -
             * compiled file, but it's generally better to create a new file per style scope.
         | 
| 10 | 
            -
             *
         | 
| 11 | 
            -
             *= require_self
         | 
| 12 | 
            -
             *= require tabulatr
         | 
| 13 | 
            -
             */
         | 
| 14 | 
            -
             | 
| 15 | 
            -
            @import "bootstrap";
         |