editable.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. (function (global, factory) {
  2. if (typeof define === "function" && define.amd) {
  3. define("/tables/editable", ["jquery", "Site"], factory);
  4. } else if (typeof exports !== "undefined") {
  5. factory(require("jquery"), require("Site"));
  6. } else {
  7. var mod = {
  8. exports: {}
  9. };
  10. factory(global.jQuery, global.Site);
  11. global.tablesEditable = mod.exports;
  12. }
  13. })(this, function (_jquery, _Site) {
  14. "use strict";
  15. _jquery = babelHelpers.interopRequireDefault(_jquery);
  16. (0, _jquery.default)(document).ready(function ($$$1) {
  17. (0, _Site.run)();
  18. }); // Example editable Table
  19. // ----------------------
  20. /* this is an example for validation and change events */
  21. _jquery.default.fn.numericInputExample = function () {
  22. var element = (0, _jquery.default)(this),
  23. footer = element.find('tfoot tr'),
  24. dataRows = element.find('tbody tr'),
  25. initialTotal = function initialTotal() {
  26. var column, total;
  27. for (column = 1; column < footer.children().length; column++) {
  28. total = 0;
  29. dataRows.each(function () {
  30. var row = (0, _jquery.default)(this);
  31. total += parseFloat(row.children().eq(column).text());
  32. });
  33. footer.children().eq(column).text(total);
  34. }
  35. };
  36. element.find('td').on('change', function (evt) {
  37. var cell = (0, _jquery.default)(this),
  38. column = cell.index(),
  39. total = 0;
  40. if (column === 0) {
  41. return;
  42. }
  43. element.find('tbody tr').each(function () {
  44. var row = (0, _jquery.default)(this);
  45. total += parseFloat(row.children().eq(column).text());
  46. });
  47. if (column === 1 && total > 5000) {
  48. (0, _jquery.default)('.alert').show();
  49. return false; // changes can be rejected
  50. } else {
  51. (0, _jquery.default)('.alert').hide();
  52. footer.children().eq(column).text(total);
  53. }
  54. }).on('validate', function (evt, value) {
  55. var cell = (0, _jquery.default)(this),
  56. column = cell.index();
  57. if (column === 0) {
  58. return !!value && value.trim().length > 0;
  59. } else {
  60. return !isNaN(parseFloat(value)) && isFinite(value);
  61. }
  62. });
  63. initialTotal();
  64. return this;
  65. };
  66. (0, _jquery.default)('#editableTable').editableTableWidget().numericInputExample().find('td:first').focus();
  67. });