abp.jtable.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. /* Adapter for jTable (http://jtable.org) to ASP.NET Boilerplate (http://aspnetboilerplate.com)
  2. * by Halil ibrahim Kalkan (http://halilibrahimkalkan.com).
  3. */
  4. (function ($) {
  5. if (!$ || !$.hik || !$.hik.jtable) {
  6. return;
  7. }
  8. //Reference to base object members
  9. var base = {
  10. _create: $.hik.jtable.prototype._create
  11. };
  12. //Extending jTable to adapt ASP.NET Boilerplate
  13. $.extend(true, $.hik.jtable.prototype, {
  14. //Override _create function to change actions according to Abp system
  15. _create: function () {
  16. var self = this;
  17. base._create.apply(self, arguments);
  18. if (self.options.actions.listAction) {
  19. self._adaptListActionforAbp();
  20. }
  21. if (self.options.actions.createAction) {
  22. self._adaptCreateActionforAbp();
  23. }
  24. if (self.options.actions.updateAction) {
  25. self._adaptUpdateActionforAbp();
  26. }
  27. if (self.options.actions.deleteAction) {
  28. self._adaptDeleteActionforAbp();
  29. }
  30. },
  31. //LIST ACTION ADAPTER
  32. _adaptListActionforAbp: function () {
  33. var self = this;
  34. var originalListAction = self.options.actions.listAction;
  35. self.options.actions.listAction = function (postData, jtParams) {
  36. return $.Deferred(function ($dfd) {
  37. var input = $.extend({}, postData, {
  38. skipCount: jtParams.jtStartIndex,
  39. maxResultCount: jtParams.jtPageSize,
  40. sorting: jtParams.jtSorting
  41. });
  42. originalListAction.method(input)
  43. .done(function (result) {
  44. $dfd.resolve({
  45. "Result": "OK",
  46. "Records": result.items || result[originalListAction.recordsField] || result,
  47. "TotalRecordCount": result.totalCount || result.length,
  48. originalResult: result
  49. });
  50. })
  51. .fail(function (error) {
  52. self._handlerForFailOnAbpRequest($dfd, error);
  53. });
  54. });
  55. };
  56. },
  57. //CREATE ACTION ADAPTER
  58. _adaptCreateActionforAbp: function () {
  59. var self = this;
  60. var originalCreateAction = self.options.actions.createAction;
  61. self.options.actions.createAction = function (postData) {
  62. return $.Deferred(function ($dfd) {
  63. var input = $.extend({}, postData);
  64. originalCreateAction.method(input)
  65. .done(function (result) {
  66. $dfd.resolve({
  67. "Result": "OK",
  68. "Record": originalCreateAction.recordField ? result[originalCreateAction.recordField] : result,
  69. originalResult: result
  70. });
  71. })
  72. .fail(function (error) {
  73. self._handlerForFailOnAbpRequest($dfd, error);
  74. });
  75. });
  76. };
  77. },
  78. //UPDATE ACTION ADAPTER
  79. _adaptUpdateActionforAbp: function () {
  80. var self = this;
  81. var originalUpdateAction = self.options.actions.updateAction;
  82. self.options.actions.updateAction = function (postData) {
  83. return $.Deferred(function ($dfd) {
  84. var input = $.extend({}, postData);
  85. originalUpdateAction.method(input)
  86. .done(function (result) {
  87. var jtableResult = {
  88. "Result": "OK",
  89. originalResult: result
  90. };
  91. if (originalUpdateAction.returnsRecord) {
  92. if (originalUpdateAction.recordField) {
  93. jtableResult.Record = result[originalUpdateAction.recordField];
  94. } else {
  95. jtableResult.Record = result;
  96. }
  97. }
  98. $dfd.resolve(jtableResult);
  99. })
  100. .fail(function (error) {
  101. self._handlerForFailOnAbpRequest($dfd, error);
  102. });
  103. });
  104. };
  105. },
  106. //DELETE ACTION ADAPTER
  107. _adaptDeleteActionforAbp: function () {
  108. var self = this;
  109. var originalDeleteAction = self.options.actions.deleteAction;
  110. self.options.actions.deleteAction = function (postData) {
  111. return $.Deferred(function ($dfd) {
  112. var input = $.extend({}, postData);
  113. originalDeleteAction.method(input)
  114. .done(function (result) {
  115. $dfd.resolve({
  116. "Result": "OK",
  117. originalResult: result
  118. });
  119. })
  120. .fail(function (error) {
  121. self._handlerForFailOnAbpRequest($dfd, error);
  122. });
  123. });
  124. };
  125. },
  126. _handlerForFailOnAbpRequest: function ($dfd, error) {
  127. if (error && error.message) {
  128. $dfd.resolve({
  129. Result: "ERROR",
  130. Message: error.message
  131. });
  132. } else {
  133. $dfd.reject(error);
  134. }
  135. },
  136. //Disable showing error messages
  137. _showError: function (message) {
  138. //do nothing since Abp handles error messages!
  139. }
  140. });
  141. //Overriding some defaults
  142. $.extend(true, $.hik.jtable.prototype.options, {
  143. pageList: "minimal"
  144. });
  145. })(jQuery);