tableling-rails 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. data/lib/tableling-rails/model.rb +1 -1
  2. data/lib/tableling-rails/version.rb +1 -1
  3. data/spec/dummy/db/development.sqlite3 +0 -0
  4. data/spec/dummy/db/test.sqlite3 +0 -0
  5. data/spec/dummy/log/development.log +25 -7250
  6. data/spec/dummy/log/test.log +3 -60
  7. data/spec/models/book_spec.rb +1 -0
  8. data/vendor/assets/javascripts/tableling.backbone.js +1980 -1489
  9. data/vendor/assets/javascripts/tableling.js +83 -53
  10. data/vendor/assets/javascripts/tableling.world.js +9734 -9102
  11. metadata +2 -202
  12. data/spec/dummy/tmp/cache/assets/BF1/770/sprockets%2F8228a53c539c582499241527570aa216 +0 -0
  13. data/spec/dummy/tmp/cache/assets/C18/6A0/sprockets%2F1e7024441489753901b45a24af2942e3 +0 -0
  14. data/spec/dummy/tmp/cache/assets/C20/C20/sprockets%2F932e86665765e61017be1015b249d270 +0 -0
  15. data/spec/dummy/tmp/cache/assets/C3F/0C0/sprockets%2F4643701467ac62c314510c8dd021916f +0 -0
  16. data/spec/dummy/tmp/cache/assets/C53/AD0/sprockets%2F712078516a81502575c831cb0a8e898e +0 -0
  17. data/spec/dummy/tmp/cache/assets/C59/0F0/sprockets%2F099f4e84a443568245ff0674030f6e05 +0 -0
  18. data/spec/dummy/tmp/cache/assets/C60/CF0/sprockets%2F32a45292ee67867d8715952f3072ad84 +0 -0
  19. data/spec/dummy/tmp/cache/assets/C6F/0E0/sprockets%2F82372776487d948ef7666d304d6fb345 +0 -0
  20. data/spec/dummy/tmp/cache/assets/C80/840/sprockets%2F562c2d168da585f80579347d10790a0a +0 -0
  21. data/spec/dummy/tmp/cache/assets/C82/F20/sprockets%2F117015d65237e3682f5b21c87d58ab95 +0 -0
  22. data/spec/dummy/tmp/cache/assets/C86/280/sprockets%2F1345c9947753f018f45371ec5083fa2d +0 -0
  23. data/spec/dummy/tmp/cache/assets/C91/350/sprockets%2F6864c49a10954375948d9f306db308fb +0 -0
  24. data/spec/dummy/tmp/cache/assets/C98/B70/sprockets%2F64db420a3a172209bf0b734312a4888a +0 -0
  25. data/spec/dummy/tmp/cache/assets/C9A/900/sprockets%2Fc1b5b7611d7c10e124512724f29f241d +0 -0
  26. data/spec/dummy/tmp/cache/assets/CAE/5B0/sprockets%2F046918545d85d144c4aa32d3e19625cf +0 -0
  27. data/spec/dummy/tmp/cache/assets/CAF/540/sprockets%2F8f42e689b84f0b25c0180046467adf31 +0 -0
  28. data/spec/dummy/tmp/cache/assets/CB1/9A0/sprockets%2F57805dfa396248a9665cb4a0c85116d0 +0 -0
  29. data/spec/dummy/tmp/cache/assets/CC1/4E0/sprockets%2F6ef77414c793c84a437244d7d965ba90 +0 -0
  30. data/spec/dummy/tmp/cache/assets/CC1/B50/sprockets%2F13559b77aaaf524896e427719ef5d354 +0 -0
  31. data/spec/dummy/tmp/cache/assets/CC3/B10/sprockets%2F0a2c59284c7a5d99581883a9763b5ad8 +0 -0
  32. data/spec/dummy/tmp/cache/assets/CC9/940/sprockets%2F8128c279185cf97dba7914278ce838b4 +0 -0
  33. data/spec/dummy/tmp/cache/assets/CCA/0C0/sprockets%2F6c3e053393afe303432ca73f1b41490b +0 -0
  34. data/spec/dummy/tmp/cache/assets/CD4/420/sprockets%2F19b3d492932dc6a59093dfb1aa852101 +0 -0
  35. data/spec/dummy/tmp/cache/assets/CD5/2C0/sprockets%2F166c056119ebdfb8b7104c97b424b423 +0 -0
  36. data/spec/dummy/tmp/cache/assets/CD8/370/sprockets%2F357970feca3ac29060c1e3861e2c0953 +0 -0
  37. data/spec/dummy/tmp/cache/assets/CD8/520/sprockets%2F89128ce416ae74c4148c5c1f281e111c +0 -0
  38. data/spec/dummy/tmp/cache/assets/CDA/600/sprockets%2F98ab7e75433ba5d503533fb00b488c80 +0 -0
  39. data/spec/dummy/tmp/cache/assets/CDB/610/sprockets%2F7adf20860b018477a95cdb8321b49d16 +0 -0
  40. data/spec/dummy/tmp/cache/assets/CDD/F50/sprockets%2F7353f31f80f1139aade47728a62af336 +0 -0
  41. data/spec/dummy/tmp/cache/assets/CE1/0F0/sprockets%2F92d30845fe3923e231cfe7e056a654b4 +0 -0
  42. data/spec/dummy/tmp/cache/assets/CE2/E70/sprockets%2Fd569808c7b411447dec0137e4d1ee707 +0 -0
  43. data/spec/dummy/tmp/cache/assets/CE9/760/sprockets%2F5ae7fab601683996918936cad21fc244 +0 -0
  44. data/spec/dummy/tmp/cache/assets/CE9/B90/sprockets%2Fea2eb066933b1d8b5949972c3c79353a +0 -0
  45. data/spec/dummy/tmp/cache/assets/CF1/AF0/sprockets%2F14dc9633b61024231ebec0c1a4a0259f +0 -0
  46. data/spec/dummy/tmp/cache/assets/D02/340/sprockets%2Fae58ed66f72137a594b0912bab600e03 +0 -0
  47. data/spec/dummy/tmp/cache/assets/D0A/780/sprockets%2F3d727e58c55c30009bbaf1462e466d4d +0 -0
  48. data/spec/dummy/tmp/cache/assets/D0A/AC0/sprockets%2Fc154991d0a7564e15c0fb4a555c5c73d +0 -0
  49. data/spec/dummy/tmp/cache/assets/D0B/190/sprockets%2F68cb0d1054ca546fc473274c4ac8737c +0 -0
  50. data/spec/dummy/tmp/cache/assets/D11/530/sprockets%2F13bc8c66140adef2e97648630866aae3 +0 -0
  51. data/spec/dummy/tmp/cache/assets/D16/AA0/sprockets%2Ff181e659a47e2cf9c257f32d80452bd3 +0 -0
  52. data/spec/dummy/tmp/cache/assets/D18/840/sprockets%2F50c1885539f61359c48af74fcae1df31 +0 -0
  53. data/spec/dummy/tmp/cache/assets/D1B/940/sprockets%2F7c4819d1dd9b64a22941d8c7bd1e6954 +0 -0
  54. data/spec/dummy/tmp/cache/assets/D21/890/sprockets%2F73f9cd97cac4382d565e7b835709a2e3 +0 -0
  55. data/spec/dummy/tmp/cache/assets/D2B/1F0/sprockets%2F6a4c116e8316d082bb0ffae02e94b107 +0 -0
  56. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  57. data/spec/dummy/tmp/cache/assets/D3A/720/sprockets%2F0e2516c1cac22716289bfc87d5ea9a26 +0 -0
  58. data/spec/dummy/tmp/cache/assets/D3C/E20/sprockets%2Ffc6c44ec250bc532c55649e5292b5c1f +0 -0
  59. data/spec/dummy/tmp/cache/assets/D4B/BF0/sprockets%2Fdf124de0072e308f8e157eae77b85d88 +0 -0
  60. data/spec/dummy/tmp/cache/assets/D4B/C30/sprockets%2Fe8aa746e637d69ff0ac1e71e528c5292 +0 -0
  61. data/spec/dummy/tmp/cache/assets/D4E/1B0/sprockets%2Ff7cbd26ba1d28d48de824f0e94586655 +0 -0
  62. data/spec/dummy/tmp/cache/assets/D54/910/sprockets%2F787b6a4c2386b5edf98f90508b85cc3d +0 -0
  63. data/spec/dummy/tmp/cache/assets/D5A/E20/sprockets%2Febf23d670481ba70b341aa2eb6e37b08 +0 -0
  64. data/spec/dummy/tmp/cache/assets/D5A/EA0/sprockets%2Fd771ace226fc8215a3572e0aa35bb0d6 +0 -0
  65. data/spec/dummy/tmp/cache/assets/D5C/1F0/sprockets%2F2d3f2cfd98bf787168fb59f84ab24784 +0 -0
  66. data/spec/dummy/tmp/cache/assets/D5D/C60/sprockets%2Ffa0336b42d01aa9173d9d4c12fc4e82d +0 -0
  67. data/spec/dummy/tmp/cache/assets/D63/170/sprockets%2Fb5b73c3b0862ee59b701a6819b2aa4cd +0 -0
  68. data/spec/dummy/tmp/cache/assets/D65/DD0/sprockets%2Fed4503679ef66f0e597bfc738bc9e698 +0 -0
  69. data/spec/dummy/tmp/cache/assets/D66/580/sprockets%2Ffe6bb9bb5ef9c54f501650b1365c1b05 +0 -0
  70. data/spec/dummy/tmp/cache/assets/D68/930/sprockets%2F5a15e52e84502f9fceb7ea04020f65fc +0 -0
  71. data/spec/dummy/tmp/cache/assets/D6A/F40/sprockets%2F53fdbea64f1803eebb72f426f74110d8 +0 -0
  72. data/spec/dummy/tmp/cache/assets/D6B/D30/sprockets%2Faeb25572f539ffdbb122e9de1218572a +0 -0
  73. data/spec/dummy/tmp/cache/assets/D6F/110/sprockets%2F2c8c9177efb7e5be1a7055bb0d44792a +0 -0
  74. data/spec/dummy/tmp/cache/assets/D76/3F0/sprockets%2Fbb569c97f9cc01af670906b40c6be9e2 +0 -0
  75. data/spec/dummy/tmp/cache/assets/D81/510/sprockets%2F3e6bd5a2d6d0d88f61f5b616f7d879b5 +0 -0
  76. data/spec/dummy/tmp/cache/assets/D82/940/sprockets%2F29cd0ae31066baa6f2cb92b5c6305aa2 +0 -0
  77. data/spec/dummy/tmp/cache/assets/D85/D20/sprockets%2F7f7f398c298ca8a1e812b6c9832bcf6e +0 -0
  78. data/spec/dummy/tmp/cache/assets/D8C/140/sprockets%2F2afdbb3902a1be5d2f045cfc837903a3 +0 -0
  79. data/spec/dummy/tmp/cache/assets/D8E/660/sprockets%2F3a3eed926bdf64000ccacb36022f78d4 +0 -0
  80. data/spec/dummy/tmp/cache/assets/D95/690/sprockets%2Fe4d19a04705ee5d72c7fa64dc2070ddb +0 -0
  81. data/spec/dummy/tmp/cache/assets/D97/230/sprockets%2F0f46cb65e018de57d2c8b480a0ec5dd3 +0 -0
  82. data/spec/dummy/tmp/cache/assets/DA1/F00/sprockets%2F7b23e35dd61e9d734a59179e2d2aebea +0 -0
  83. data/spec/dummy/tmp/cache/assets/DA3/950/sprockets%2F38737f6fa54dbda0dfe3ce4c51710e79 +0 -0
  84. data/spec/dummy/tmp/cache/assets/DA4/EC0/sprockets%2F8da2289e16c1d0cac94aa825ee18d99d +0 -0
  85. data/spec/dummy/tmp/cache/assets/DA6/120/sprockets%2Fc5880aca76ccbb51f9388362e8afc1e6 +0 -0
  86. data/spec/dummy/tmp/cache/assets/DA7/390/sprockets%2F25e744cd1b6f8f7ce1d52c1e86a8f19a +0 -0
  87. data/spec/dummy/tmp/cache/assets/DAB/3E0/sprockets%2F63d2fa621beec4fe878f9eb2884426ab +0 -0
  88. data/spec/dummy/tmp/cache/assets/DAB/660/sprockets%2F9a8c36769afcc7027b4b6ee0c3e77ce5 +0 -0
  89. data/spec/dummy/tmp/cache/assets/DB4/7A0/sprockets%2F900105aaabba7938ce23f1e0aade71e5 +0 -0
  90. data/spec/dummy/tmp/cache/assets/DB4/F90/sprockets%2Fcf5e68e329cedb58b84f445f2b8e37b5 +0 -0
  91. data/spec/dummy/tmp/cache/assets/DBF/EB0/sprockets%2F2afcec323c8ba12a2b7c852f23aa589e +0 -0
  92. data/spec/dummy/tmp/cache/assets/DCE/9F0/sprockets%2F8fa8c08ea8da97c06cd6c32fe3e613b0 +0 -0
  93. data/spec/dummy/tmp/cache/assets/DCF/E50/sprockets%2Fc39ff2ed4e1fb4269c39d415acf0d90b +0 -0
  94. data/spec/dummy/tmp/cache/assets/DD8/0A0/sprockets%2Fb2c3097effcd6084ec75e1f745d1d7dd +0 -0
  95. data/spec/dummy/tmp/cache/assets/DDC/400/sprockets%2Fcffd775d018f68ce5dba1ee0d951a994 +0 -0
  96. data/spec/dummy/tmp/cache/assets/DE2/6D0/sprockets%2Fdcaa7d2b2814413aa75d3ba6ada3c6b5 +0 -0
  97. data/spec/dummy/tmp/cache/assets/DF0/040/sprockets%2F04bbbe1ee5ca914173cd90cf6e8a4e0b +0 -0
  98. data/spec/dummy/tmp/cache/assets/DF0/D60/sprockets%2F5a54a1ecc1db271edfc0727bfcb8d912 +0 -0
  99. data/spec/dummy/tmp/cache/assets/DF7/C80/sprockets%2Ff503b3666caf04beb7cfe54cbdb0575e +0 -0
  100. data/spec/dummy/tmp/cache/assets/DFA/B70/sprockets%2F262fb95d3f7cfc16febb0f0128ac38ce +0 -0
  101. data/spec/dummy/tmp/cache/assets/DFE/E10/sprockets%2F9a19dfdd7eb0bf5262919a0207ecfdbf +0 -0
  102. data/spec/dummy/tmp/cache/assets/E03/260/sprockets%2Fd1fcfea59ff53c32557ffcd93016cb2e +0 -0
  103. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  104. data/spec/dummy/tmp/cache/assets/E0A/510/sprockets%2F8efee416ba436e75bea85d4d367faea7 +0 -0
  105. data/spec/dummy/tmp/cache/assets/E33/8F0/sprockets%2F4933e07f8ef2da7eb5bee9a6fcac3d41 +0 -0
  106. data/spec/dummy/tmp/cache/assets/E3C/2D0/sprockets%2Fef329f0cde3de3e956c8a8feb7b814cc +0 -0
  107. data/spec/dummy/tmp/cache/assets/E43/810/sprockets%2F79b0ef75ceb26a9c8fca797db3efba96 +0 -0
  108. data/spec/dummy/tmp/cache/assets/E67/730/sprockets%2Fadd4efdfa7661cc60e8ea63cef1f0f98 +0 -0
  109. data/spec/dummy/tmp/cache/assets/E96/1B0/sprockets%2F6d5fe51f9c1a3d2f898becd0bcddef3e +0 -0
  110. data/spec/dummy/tmp/cache/assets/ED4/410/sprockets%2F082adbb8e2abd8a21c8b34aebbbfbfad +0 -0
  111. data/spec/dummy/tmp/pids/server.pid +0 -1
@@ -1,13 +1,13 @@
1
1
  /*!
2
- * Tableling v0.0.10
3
- * Copyright (c) 2012 Simon Oulevay (Alpha Hydrae) <hydrae.alpha@gmail.com>
2
+ * Tableling v0.0.12
3
+ * Copyright (c) 2012-2013 Simon Oulevay (Alpha Hydrae) <hydrae.alpha@gmail.com>
4
4
  * Distributed under MIT license
5
5
  * https://github.com/AlphaHydrae/tableling
6
6
  */
7
7
  Backbone.Tableling = Tableling = (function(Backbone, _, $){
8
8
 
9
9
  var Tableling = {
10
- version : "0.0.10"
10
+ version : "0.0.12"
11
11
  };
12
12
 
13
13
  // Tableling
@@ -20,7 +20,7 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
20
20
  className: 'tableling',
21
21
 
22
22
  // Default table options can be overriden by subclasses.
23
- tableling : {
23
+ config : {
24
24
  page : 1
25
25
  },
26
26
 
@@ -28,13 +28,13 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
28
28
  options = options || {};
29
29
 
30
30
  // Table options can also be overriden for each instance at construction.
31
- this.tableling = _.extend(_.clone(this.tableling), this.filterConfig(options));
31
+ this.config = _.extend(_.clone(this.config || {}), _.result(options, 'config') || {});
32
32
 
33
33
  // We use an event aggregator to manage the layout and its components.
34
34
  // You can use your own by passing a `vent` option.
35
- this.vent = options.vent || new Backbone.Marionette.EventAggregator();
35
+ this.vent = options.vent || new Backbone.Wreqr.EventAggregator();
36
36
 
37
- this.fetchOptions = _.extend(_.clone(this.fetchOptions || {}), options.fetchOptions || {});
37
+ this.fetchOptions = _.extend(_.clone(this.fetchOptions || {}), _.result(options, 'fetchOptions') || {});
38
38
 
39
39
  // Components should trigger the `table:update` event to update
40
40
  // the table (e.g. change page size, sort) and fetch the new data.
@@ -45,7 +45,7 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
45
45
 
46
46
  // Called once rendering is complete. By default, it updates the table.
47
47
  setup : function() {
48
- this.ventTrigger('table:setup', this.filterConfig(this.tableling, true));
48
+ this.ventTrigger('table:setup', this.config);
49
49
  this.ventTrigger('table:update');
50
50
  },
51
51
 
@@ -57,7 +57,7 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
57
57
  // ### Refreshing the table
58
58
  update : function(config, options) {
59
59
 
60
- _.each(this.filterConfig(config || {}), _.bind(this.updateValue, this));
60
+ _.each(config || {}, _.bind(this.updateValue, this));
61
61
 
62
62
  // Set the `refresh` option to false to update the table configuration
63
63
  // without refreshing.
@@ -68,10 +68,10 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
68
68
 
69
69
  updateValue : function(value, key) {
70
70
  if (value && value.toString().length) {
71
- this.tableling[key] = value;
71
+ this.config[key] = value;
72
72
  } else {
73
73
  // Blank values are deleted to avoid sending them in ajax requests.
74
- delete this.tableling[key];
74
+ delete this.config[key];
75
75
  }
76
76
  },
77
77
 
@@ -105,35 +105,24 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
105
105
 
106
106
  // ### Request
107
107
  requestData : function() {
108
- return this.filterConfig(this.tableling);
108
+ return this.config;
109
109
  },
110
110
 
111
111
  // ### Response
112
112
  processResponse : function(collection, response) {
113
113
 
114
- this.tableling.length = collection.length;
114
+ this.config.length = collection.length;
115
115
 
116
116
  // Tableling expects the response from a fetch to have a `total` property
117
117
  // which is the total number of items (not just in the current page).
118
- this.tableling.total = response.total;
118
+ this.config.total = response.total;
119
119
 
120
120
  // `tableling:refreshed` is triggered after every refresh. The first argument
121
121
  // is the current table configuration with the following additional meta data:
122
122
  //
123
123
  // * `total` - the total number of items
124
124
  // * `length` - the number of items in the current page
125
- this.ventTrigger('table:refreshed', this.filterConfig(this.tableling, true));
126
- },
127
-
128
- // ### Utilities
129
- // Whitelists the given configuration to contain only table configuration properties.
130
- // Pass `true` as the second argument to include meta data (i.e. total & length).
131
- filterConfig : function(config, all) {
132
- if (all) {
133
- return _.pick(config, 'page', 'pageSize', 'quickSearch', 'sort', 'length', 'total');
134
- } else {
135
- return _.pick(config, 'page', 'pageSize', 'quickSearch', 'sort');
136
- }
125
+ this.ventTrigger('table:refreshed', this.config);
137
126
  },
138
127
 
139
128
  // Triggers an event in the event aggregator. If `Tableling.debug` is set, it also
@@ -367,6 +356,7 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
367
356
  // TODO: add auto-sort
368
357
  this.vent = options.vent;
369
358
  this.sort = [];
359
+ this.vent.on('table:setup', this.setSort, this);
370
360
  },
371
361
 
372
362
  updateSort : function(ev) {
@@ -380,33 +370,61 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
380
370
 
381
371
  if (ev.shiftKey || this.sort.length == 1) {
382
372
 
383
- var existing = _.find(this.sort, function(item) {
384
- return item.field == field;
373
+ var index = -1;
374
+ _.find(this.sort, function(item, i) {
375
+ if (item.split(' ')[0] == field) {
376
+ index = i;
377
+ }
385
378
  });
386
379
 
387
- if (existing) {
388
- existing.direction = existing.direction == 'asc' ? 'desc' : 'asc';
389
- el.removeClass('sorting sorting-asc sorting-desc');
390
- el.addClass('sorting-' + existing.direction);
380
+ if (index >= 0) {
381
+
382
+ var parts = this.sort[index].split(' ');
383
+ this.sort[index] = parts[0] + ' ' + (parts[1] == 'asc' ? 'desc' : 'asc');
384
+ this.showSort();
391
385
  return this.vent.trigger('table:update', this.config());
392
386
  }
393
387
  }
394
388
 
395
389
  if (!ev.shiftKey) {
396
390
  this.sort.length = 0;
397
- this.$el.find('thead th').removeClass('sorting sorting-asc sorting-desc').addClass('sorting');
398
391
  }
399
392
 
400
- this.sort.push({
401
- field: field,
402
- direction: 'asc'
403
- });
393
+ this.sort.push(field + ' asc');
404
394
 
405
- el.removeClass('sorting sorting-asc sorting-desc').addClass('sorting-asc');
395
+ this.showSort();
406
396
 
407
397
  this.vent.trigger('table:update', this.config());
408
398
  },
409
399
 
400
+ setSort : function(config) {
401
+ if (config && config.sort) {
402
+ this.sort = config.sort.slice(0);
403
+ this.showSort();
404
+ }
405
+ },
406
+
407
+ showSort : function() {
408
+
409
+ this.$el.find('thead th').removeClass('sorting sorting-asc sorting-desc').addClass('sorting');
410
+
411
+ for (var i = 0; i < this.sort.length; i++) {
412
+
413
+ var parts = this.sort[i].split(' ');
414
+ var name = parts[0];
415
+ var direction = parts[1];
416
+
417
+ field = this.$el.find('thead [data-field="' + name + '"]');
418
+ if (!field.length) {
419
+ field = this.$el.find('thead th:contains("' + name + '")');
420
+ }
421
+
422
+ if (field.length) {
423
+ field.removeClass('sorting').addClass(direction == 'desc' ? 'sorting-desc' : 'sorting-asc');
424
+ }
425
+ }
426
+ },
427
+
410
428
  config : function() {
411
429
  return {
412
430
  page : 1,
@@ -415,16 +433,11 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
415
433
  },
416
434
 
417
435
  sortConfig : function() {
418
- if (!this.sort.length) {
419
- return null;
420
- }
421
- return _.map(this.sort, function(item) {
422
- return item.field + ' ' + item.direction;
423
- });
436
+ return this.sort.length ? this.sort : null;
424
437
  },
425
438
 
426
439
  fieldName : function(el) {
427
- return el.data('field') || el.text().toLowerCase();
440
+ return el.data('field') || el.text();
428
441
  }
429
442
  });
430
443
 
@@ -450,12 +463,25 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
450
463
 
451
464
  addSize : function(size) {
452
465
  $('<option />').text(size).appendTo(this.ui.field);
466
+ },
467
+
468
+ config : function() {
469
+ var config = Tableling.FieldModule.prototype.config.call(this);
470
+ config.page = 1;
471
+ return config;
453
472
  }
454
473
  });
455
474
 
456
475
  Tableling.Plain.QuickSearchView = Tableling.Plain.Table.prototype.quickSearchView = Tableling.FieldModule.extend({
476
+
457
477
  name : 'quickSearch',
458
- template : _.template('<input type="text" name="quickSearch" placeholder="Quick search..." />')
478
+ template : _.template('<input type="text" name="quickSearch" placeholder="Quick search..." />'),
479
+
480
+ config : function() {
481
+ var config = Tableling.FieldModule.prototype.config.call(this);
482
+ config.page = 1;
483
+ return config;
484
+ }
459
485
  });
460
486
 
461
487
  Tableling.Plain.InfoView = Tableling.Plain.Table.prototype.infoView = Tableling.Module.extend({
@@ -477,7 +503,7 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
477
503
  },
478
504
 
479
505
  firstRecord : function(data) {
480
- return data.length ? (data.page - 1) * data.pageSize + 1 : 0;
506
+ return data.length ? ((data.page || 1) - 1) * data.pageSize + 1 : 0;
481
507
  },
482
508
 
483
509
  lastRecord : function(data) {
@@ -511,10 +537,10 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
511
537
  this.ui.last.addClass('disabled');
512
538
  } else {
513
539
  this.data = data;
514
- this.enable(this.ui.first, data.page > 1);
515
- this.enable(this.ui.previous, data.page > 1);
516
- this.enable(this.ui.next, data.page < this.numberOfPages(data));
517
- this.enable(this.ui.last, data.page < this.numberOfPages(data));
540
+ this.enable(this.ui.first, this.getPage(data) > 1);
541
+ this.enable(this.ui.previous, this.getPage(data) > 1);
542
+ this.enable(this.ui.next, this.getPage(data) < this.numberOfPages(data));
543
+ this.enable(this.ui.last, this.getPage(data) < this.numberOfPages(data));
518
544
  }
519
545
  },
520
546
 
@@ -534,11 +560,11 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
534
560
  },
535
561
 
536
562
  goToPreviousPage : function() {
537
- this.goToPage(this.data.page - 1);
563
+ this.goToPage(this.getPage(this.data) - 1);
538
564
  },
539
565
 
540
566
  goToNextPage : function() {
541
- this.goToPage(this.data.page + 1);
567
+ this.goToPage(this.getPage(this.data) + 1);
542
568
  },
543
569
 
544
570
  goToLastPage : function() {
@@ -547,6 +573,10 @@ Backbone.Tableling = Tableling = (function(Backbone, _, $){
547
573
 
548
574
  goToPage : function(n) {
549
575
  this.vent.trigger('table:update', { page : n });
576
+ },
577
+
578
+ getPage : function(data) {
579
+ return data.page || 1;
550
580
  }
551
581
  });
552
582