batch-delete.html 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  5. <title>jsGrid - Batch Delete</title>
  6. <link rel="stylesheet" type="text/css" href="demos.css" />
  7. <link href='http://fonts.googleapis.com/css?family=Open+Sans:300,600,400' rel='stylesheet' type='text/css'>
  8. <link rel="stylesheet" type="text/css" href="../css/jsgrid.css" />
  9. <link rel="stylesheet" type="text/css" href="../css/theme.css" />
  10. <script src="../external/jquery/jquery-1.8.3.js"></script>
  11. <script src="db.js"></script>
  12. <script src="../src/jsgrid.core.js"></script>
  13. <script src="../src/jsgrid.load-indicator.js"></script>
  14. <script src="../src/jsgrid.load-strategies.js"></script>
  15. <script src="../src/jsgrid.sort-strategies.js"></script>
  16. <script src="../src/jsgrid.field.js"></script>
  17. <script src="../src/fields/jsgrid.field.text.js"></script>
  18. <script src="../src/fields/jsgrid.field.number.js"></script>
  19. <script src="../src/fields/jsgrid.field.control.js"></script>
  20. </head>
  21. <body>
  22. <h1>Batch Delete</h1>
  23. <div id="jsGrid"></div>
  24. <script>
  25. $(function() {
  26. $("#jsGrid").jsGrid({
  27. height: "50%",
  28. width: "100%",
  29. autoload: true,
  30. confirmDeleting: false,
  31. paging: true,
  32. controller: {
  33. loadData: function() {
  34. return db.clients;
  35. }
  36. },
  37. fields: [
  38. {
  39. headerTemplate: function() {
  40. return $("<button>").attr("type", "button").text("Delete")
  41. .on("click", function () {
  42. deleteSelectedItems();
  43. });
  44. },
  45. itemTemplate: function(_, item) {
  46. return $("<input>").attr("type", "checkbox")
  47. .prop("checked", $.inArray(item, selectedItems) > -1)
  48. .on("change", function () {
  49. $(this).is(":checked") ? selectItem(item) : unselectItem(item);
  50. });
  51. },
  52. align: "center",
  53. width: 50
  54. },
  55. { name: "Name", type: "text", width: 150 },
  56. { name: "Age", type: "number", width: 50 },
  57. { name: "Address", type: "text", width: 200 }
  58. ]
  59. });
  60. var selectedItems = [];
  61. var selectItem = function(item) {
  62. selectedItems.push(item);
  63. };
  64. var unselectItem = function(item) {
  65. selectedItems = $.grep(selectedItems, function(i) {
  66. return i !== item;
  67. });
  68. };
  69. var deleteSelectedItems = function() {
  70. if(!selectedItems.length || !confirm("Are you sure?"))
  71. return;
  72. deleteClientsFromDb(selectedItems);
  73. var $grid = $("#jsGrid");
  74. $grid.jsGrid("option", "pageIndex", 1);
  75. $grid.jsGrid("loadData");
  76. selectedItems = [];
  77. };
  78. var deleteClientsFromDb = function(deletingClients) {
  79. db.clients = $.map(db.clients, function(client) {
  80. return ($.inArray(client, deletingClients) > -1) ? null : client;
  81. });
  82. };
  83. });
  84. </script>
  85. </body>
  86. </html>