summaryrefslogtreecommitdiffstats
path: root/examples/example9-row-reordering.html
diff options
context:
space:
mode:
Diffstat (limited to 'examples/example9-row-reordering.html')
-rw-r--r--examples/example9-row-reordering.html150
1 files changed, 122 insertions, 28 deletions
diff --git a/examples/example9-row-reordering.html b/examples/example9-row-reordering.html
index b2e3ac4..827015d 100644
--- a/examples/example9-row-reordering.html
+++ b/examples/example9-row-reordering.html
@@ -17,6 +17,18 @@
cursor: move;
background: url("../images/drag-handle.png") no-repeat center center;
}
+
+ .recycle-bin {
+ width: 120px;
+ border: 1px solid gray;
+ background: beige;
+ padding: 4px;
+ font-size: 12pt;
+ font-weight: bold;
+ color: black;
+ text-align: center;
+ -moz-border-radius: 10px;
+ }
</style>
</head>
<body>
@@ -31,7 +43,14 @@
<hr/>
<div style="padding:6px;">
Click to select, Ctrl-click to toggle selection, Shift-click to select a range.<br/>
- Drag one or more rows to reorder.
+ Drag one or more rows by the handle to reorder.<br/>
+ Drag one or more rows to the recycle bin to delete.
+
+ <br/>
+ <br/>
+ <div id="dropzone" class="recycle-bin">
+ Recycle Bin
+ </div>
</div>
</div>
@@ -40,6 +59,7 @@
<script language="JavaScript" src="../lib/jquery-1.4.2.min.js"></script>
<script language="JavaScript" src="../lib/jquery-ui-1.8.2.custom.min.js"></script>
<script language="JavaScript" src="../lib/jquery.event.drag-2.0.min.js"></script>
+ <script language="JavaScript" src="../lib/jquery.event.drop-2.0.min.js"></script>
<script language="JavaScript" src="../slick.editors.js"></script>
<script language="JavaScript" src="../slick.grid.js"></script>
@@ -48,32 +68,36 @@
var grid;
var data = [];
- var columns = [{
- id: "#",
- name: "",
- width: 40,
- behavior: "selectAndMove",
- unselectable: true,
- resizable: false,
- cssClass: "cell-reorder"
- }, {
- id: "name",
- name: "Name",
- field: "name",
- width: 500,
- cssClass: "cell-title",
- editor: TextCellEditor,
- validator: requiredFieldValidator
- }, {
- id: "complete",
- name: "Complete",
- width: 60,
- cssClass: "cell-effort-driven",
- field: "complete",
- cannotTriggerInsert: true,
- formatter: BoolCellFormatter,
- editor: YesNoCheckboxCellEditor
- }];
+ var columns = [
+ {
+ id: "#",
+ name: "",
+ width: 40,
+ behavior: "selectAndMove",
+ unselectable: true,
+ resizable: false,
+ cssClass: "cell-reorder dnd"
+ },
+ {
+ id: "name",
+ name: "Name",
+ field: "name",
+ width: 500,
+ cssClass: "cell-title",
+ editor: TextCellEditor,
+ validator: requiredFieldValidator
+ },
+ {
+ id: "complete",
+ name: "Complete",
+ width: 60,
+ cssClass: "cell-effort-driven",
+ field: "complete",
+ cannotTriggerInsert: true,
+ formatter: BoolCellFormatter,
+ editor: YesNoCheckboxCellEditor
+ }
+ ];
var options = {
editable: true,
@@ -107,7 +131,77 @@
grid = new Slick.Grid($("#myGrid"), data, columns, options);
- grid.onAddNewRow = function addItem(newItem,columnDef) {
+ $("#myGrid")
+ .bind("draginit", function(e,dd) {
+ var cell = grid.getCellFromEvent(e);
+ if (!cell)
+ return false;
+
+ dd.row = cell.row;
+ if (!data[dd.row])
+ return false;
+
+ if (Slick.GlobalEditorLock.isActive() && !Slick.GlobalEditorLock.cancelCurrentEdit())
+ return false;
+ })
+ .bind("dragstart", function(e,dd) {
+ var selectedRows = grid.getSelectedRows();
+
+ if (!selectedRows.length || $.inArray(dd.row,selectedRows) == -1) {
+ selectedRows = [dd.row];
+ grid.setSelectedRows(selectedRows);
+ }
+
+ dd.rows = selectedRows;
+ dd.count = selectedRows.length;
+
+ var proxy = $("<span></span>")
+ .css({
+ position: "absolute",
+ display: "inline-block",
+ padding: "4px 10px",
+ background: "#e0e0e0",
+ border: "1px solid gray",
+ "z-index": 99999,
+ "-moz-border-radius": "8px",
+ "-moz-box-shadow": "2px 2px 6px silver"
+ })
+ .text("Drag to Recycle Bin to delete " + dd.count + " selected row(s)")
+ .appendTo("body");
+
+ dd.helper = proxy;
+
+ $(dd.available).css("background","pink");
+
+ return proxy;
+ })
+ .bind("drag", function(e,dd) {
+ dd.helper.css({top: e.pageY + 5, left: e.pageX + 5});
+ })
+ .bind("dragend", function(e,dd) {
+ dd.helper.remove();
+ $(dd.available).css("background","beige");
+ });
+
+
+ $("#dropzone")
+ .bind("dropstart", function(e,dd) {
+ $(this).css("background","yellow");
+ })
+ .bind("dropend", function(e,dd) {
+ $(dd.available).css("background","pink");
+ })
+ .bind("drop", function(e,dd) {
+ var rowsToDelete = dd.rows.sort().reverse();
+ for (var i=0; i<rowsToDelete.length; i++) {
+ data.splice(rowsToDelete[i],1);
+ }
+ grid.invalidate();
+ grid.setSelectedRows([]);
+ });
+
+
+ grid.onAddNewRow = function(newItem,columnDef) {
var item = {name:"New task", complete: false};
$.extend(item,newItem);
data.push(item);