jsgrid.load-strategies.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. (function(jsGrid, $, undefined) {
  2. function DirectLoadingStrategy(grid) {
  3. this._grid = grid;
  4. }
  5. DirectLoadingStrategy.prototype = {
  6. firstDisplayIndex: function() {
  7. var grid = this._grid;
  8. return grid.option("paging") ? (grid.option("pageIndex") - 1) * grid.option("pageSize") : 0;
  9. },
  10. lastDisplayIndex: function() {
  11. var grid = this._grid;
  12. var itemsCount = grid.option("data").length;
  13. return grid.option("paging")
  14. ? Math.min(grid.option("pageIndex") * grid.option("pageSize"), itemsCount)
  15. : itemsCount;
  16. },
  17. itemsCount: function() {
  18. return this._grid.option("data").length;
  19. },
  20. openPage: function(index) {
  21. this._grid.refresh();
  22. },
  23. loadParams: function() {
  24. return {};
  25. },
  26. sort: function() {
  27. this._grid._sortData();
  28. this._grid.refresh();
  29. return $.Deferred().resolve().promise();
  30. },
  31. finishLoad: function(loadedData) {
  32. this._grid.option("data", loadedData);
  33. },
  34. finishInsert: function(insertedItem) {
  35. var grid = this._grid;
  36. grid.option("data").push(insertedItem);
  37. grid.refresh();
  38. },
  39. finishDelete: function(deletedItem, deletedItemIndex) {
  40. var grid = this._grid;
  41. grid.option("data").splice(deletedItemIndex, 1);
  42. grid.reset();
  43. }
  44. };
  45. function PageLoadingStrategy(grid) {
  46. this._grid = grid;
  47. this._itemsCount = 0;
  48. }
  49. PageLoadingStrategy.prototype = {
  50. firstDisplayIndex: function() {
  51. return 0;
  52. },
  53. lastDisplayIndex: function() {
  54. return this._grid.option("data").length;
  55. },
  56. itemsCount: function() {
  57. return this._itemsCount;
  58. },
  59. openPage: function(index) {
  60. this._grid.loadData();
  61. },
  62. loadParams: function() {
  63. var grid = this._grid;
  64. return {
  65. pageIndex: grid.option("pageIndex"),
  66. pageSize: grid.option("pageSize")
  67. };
  68. },
  69. sort: function() {
  70. return this._grid.loadData();
  71. },
  72. finishLoad: function(loadedData) {
  73. this._itemsCount = loadedData.itemsCount;
  74. this._grid.option("data", loadedData.data);
  75. },
  76. finishInsert: function(insertedItem) {
  77. this._grid.search();
  78. },
  79. finishDelete: function(deletedItem, deletedItemIndex) {
  80. this._grid.search();
  81. }
  82. };
  83. jsGrid.loadStrategies = {
  84. DirectLoadingStrategy: DirectLoadingStrategy,
  85. PageLoadingStrategy: PageLoadingStrategy
  86. };
  87. }(jsGrid, jQuery));