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.html611
1 files changed, 310 insertions, 301 deletions
diff --git a/examples/example9-row-reordering.html b/examples/example9-row-reordering.html
index fa3920e..fbfd18a 100644
--- a/examples/example9-row-reordering.html
+++ b/examples/example9-row-reordering.html
@@ -1,305 +1,314 @@
<!DOCTYPE HTML>
<html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- <title>SlickGrid example 9: Row reordering</title>
- <link rel="stylesheet" href="../slick.grid.css" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css" media="screen" charset="utf-8" />
- <link rel="stylesheet" href="examples.css" type="text/css" media="screen" charset="utf-8" />
- <style>
- .cell-title {
- zfont-weight: bold;
- }
- .cell-effort-driven {
- text-align: center;
- }
- .cell-reorder {
- cursor: move;
- background: url("../images/drag-handle.png") no-repeat center center;
- }
-
- .cell-selection {
- border-right-color: silver;
- border-right-style: solid;
- background: #f5f5f5;
- color: gray;
- text-align: right;
- font-size: 10px;
- }
-
- .slick-row.selected .cell-selection {
- background-color: transparent; /* show default selected row background */
- }
-
- .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;
- }
-
- .red {
- background: red;
- }
-
- .bold {
- font-weight: bold;
- }
- </style>
- </head>
- <body>
- <div style="position:relative">
- <div style="width:600px;">
- <div class="grid-header" style="width:100%">
- <label>Santa's TODO list:</label>
- </div>
- <div id="myGrid" style="width:100%;height:500px;"></div>
- </div>
- <div class="options-panel">
- <b>Tips:</b>
- <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 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>
- </div>
-
- <script src="../lib/firebugx.js"></script>
-
- <script src="../lib/jquery-1.7.min.js"></script>
- <script src="../lib/jquery-ui-1.8.16.custom.min.js"></script>
- <script src="../lib/jquery.event.drag-2.0.min.js"></script>
- <script src="../lib/jquery.event.drop-2.0.min.js"></script>
-
- <script src="../slick.core.js"></script>
- <script src="../plugins/slick.cellrangeselector.js"></script>
- <script src="../plugins/slick.cellselectionmodel.js"></script>
- <script src="../plugins/slick.rowselectionmodel.js"></script>
- <script src="../plugins/slick.rowmovemanager.js"></script>
- <script src="../slick.editors.js"></script>
- <script src="../slick.grid.js"></script>
-
- <script>
- var grid;
- var data = [];
-
- var columns = [
- {
- id: "#",
- name: "",
- width: 40,
- behavior: "selectAndMove",
- selectable: false,
- 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
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+ <title>SlickGrid example 9: Row reordering</title>
+ <link rel="stylesheet" href="../slick.grid.css" type="text/css" />
+ <link rel="stylesheet" href="../css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css" />
+ <link rel="stylesheet" href="examples.css" type="text/css" />
+ <style>
+ .cell-title {
+ zfont-weight: bold;
+ }
+
+ .cell-effort-driven {
+ text-align: center;
+ }
+
+ .cell-reorder {
+ cursor: move;
+ background: url("../images/drag-handle.png") no-repeat center center;
+ }
+
+ .cell-selection {
+ border-right-color: silver;
+ border-right-style: solid;
+ background: #f5f5f5;
+ color: gray;
+ text-align: right;
+ font-size: 10px;
+ }
+
+ .slick-row.selected .cell-selection {
+ background-color: transparent; /* show default selected row background */
+ }
+
+ .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;
+ }
+
+ .red {
+ background: red;
+ }
+
+ .bold {
+ font-weight: bold;
+ }
+ </style>
+</head>
+<body>
+<div style="position:relative">
+ <div style="width:600px;">
+ <div class="grid-header" style="width:100%">
+ <label>Santa's TODO list:</label>
+ </div>
+ <div id="myGrid" style="width:100%;height:500px;"></div>
+ </div>
+ <div class="options-panel">
+ <b>Tips:</b>
+ <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 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>
+</div>
+
+<script src="../lib/firebugx.js"></script>
+
+<script src="../lib/jquery-1.7.min.js"></script>
+<script src="../lib/jquery-ui-1.8.16.custom.min.js"></script>
+<script src="../lib/jquery.event.drag-2.0.min.js"></script>
+<script src="../lib/jquery.event.drop-2.0.min.js"></script>
+
+<script src="../slick.core.js"></script>
+<script src="../plugins/slick.cellrangeselector.js"></script>
+<script src="../plugins/slick.cellselectionmodel.js"></script>
+<script src="../plugins/slick.rowselectionmodel.js"></script>
+<script src="../plugins/slick.rowmovemanager.js"></script>
+<script src="../slick.editors.js"></script>
+<script src="../slick.grid.js"></script>
+
+<script>
+var grid;
+var data = [];
+
+var columns = [
+ {
+ id:"#",
+ name:"",
+ width:40,
+ behavior:"selectAndMove",
+ selectable:false,
+ 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,
+ enableAddRow:true,
+ enableRowReordering:true,
+ enableCellNavigation:true,
+ forceFitColumns:true,
+ autoEdit:false
+};
+
+function requiredFieldValidator(value) {
+ if (value == null || value == undefined || !value.length) {
+ return {valid:false, msg:"This is a required field"};
+ }
+ else {
+ return {valid:true, msg:null};
+ }
+}
+
+$(function () {
+ data = [
+ { name:"Make a list", complete:true},
+ { name:"Check it twice", complete:false},
+ { name:"Find out who's naughty", complete:false},
+ { name:"Find out who's nice", complete:false}
+ ];
+
+ grid = new Slick.Grid("#myGrid", data, columns, options);
+
+ grid.setSelectionModel(new Slick.RowSelectionModel());
+
+ var moveRowsPlugin = new Slick.RowMoveManager();
+
+ moveRowsPlugin.onBeforeMoveRows.subscribe(function (e, data) {
+ for (var i = 0; i < data.rows.length; i++) {
+ // no point in moving before or after itself
+ if (data.rows[i] == data.insertBefore || data.rows[i] == data.insertBefore - 1) {
+ e.stopPropagation();
+ return false;
+ }
+ }
+
+ return true;
+ });
+
+ moveRowsPlugin.onMoveRows.subscribe(function (e, args) {
+ var extractedRows = [], left, right;
+ var rows = args.rows;
+ var insertBefore = args.insertBefore;
+ left = data.slice(0, insertBefore);
+ right = data.slice(insertBefore, data.length);
+
+ for (var i = 0; i < rows.length; i++) {
+ extractedRows.push(data[rows[i]]);
+ }
+
+ rows.sort().reverse();
+
+ for (var i = 0; i < rows.length; i++) {
+ var row = rows[i];
+ if (row < insertBefore) {
+ left.splice(row, 1);
+ }
+ else {
+ right.splice(row - insertBefore, 1);
+ }
+ }
+
+ data = left.concat(extractedRows.concat(right));
+
+ var selectedRows = [];
+ for (var i = 0; i < rows.length; i++)
+ selectedRows.push(left.length + i);
+
+ grid.resetActiveCell();
+ grid.setData(data);
+ grid.setSelectedRows(selectedRows);
+ grid.render();
+ });
+
+ grid.registerPlugin(moveRowsPlugin);
+
+ grid.onDragInit.subscribe(function (e, dd) {
+ // prevent the grid from cancelling drag'n'drop by default
+ e.stopImmediatePropagation();
+ });
+
+ grid.onDragStart.subscribe(function (e, dd) {
+ var cell = grid.getCellFromEvent(e);
+ if (!cell) {
+ return;
+ }
+
+ dd.row = cell.row;
+ if (!data[dd.row]) {
+ return;
+ }
+
+ if (Slick.GlobalEditorLock.isActive()) {
+ return;
+ }
+
+ e.stopImmediatePropagation();
+ dd.mode = "recycle";
+
+ 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;
+ });
+
+ grid.onDrag.subscribe(function (e, dd) {
+ if (dd.mode != "recycle") {
+ return;
+ }
+ e.stopImmediatePropagation();
+ dd.helper.css({top:e.pageY + 5, left:e.pageX + 5});
+ });
+
+ grid.onDragEnd.subscribe(function (e, dd) {
+ if (dd.mode != "recycle") {
+ return;
+ }
+ e.stopImmediatePropagation();
+ 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);
}
- ];
-
- var options = {
- editable: true,
- enableAddRow: true,
- enableRowReordering: true,
- enableCellNavigation: true,
- forceFitColumns: true,
- autoEdit: false
- };
-
- function requiredFieldValidator(value) {
- if (value == null || value == undefined || !value.length)
- return {valid:false, msg:"This is a required field"};
- else
- return {valid:true, msg:null};
- }
-
- $(function()
- {
- data = [
- { name: "Make a list", complete: true},
- { name: "Check it twice", complete: false},
- { name: "Find out who's naughty", complete: false},
- { name: "Find out who's nice", complete: false}
- ];
-
- grid = new Slick.Grid("#myGrid", data, columns, options);
-
- grid.setSelectionModel(new Slick.RowSelectionModel());
-
- var moveRowsPlugin = new Slick.RowMoveManager();
-
- moveRowsPlugin.onBeforeMoveRows.subscribe(function(e,data) {
- for (var i = 0; i < data.rows.length; i++) {
- // no point in moving before or after itself
- if (data.rows[i] == data.insertBefore || data.rows[i] == data.insertBefore - 1) {
- e.stopPropagation();
- return false;
- }
- }
-
- return true;
- });
-
- moveRowsPlugin.onMoveRows.subscribe(function(e,args) {
- var extractedRows = [], left, right;
- var rows = args.rows;
- var insertBefore = args.insertBefore;
- left = data.slice(0,insertBefore);
- right = data.slice(insertBefore,data.length);
-
- for (var i=0; i<rows.length; i++) {
- extractedRows.push(data[rows[i]]);
- }
-
- rows.sort().reverse();
-
- for (var i=0; i<rows.length; i++) {
- var row = rows[i];
- if (row < insertBefore)
- left.splice(row,1);
- else
- right.splice(row-insertBefore,1);
- }
-
- data = left.concat(extractedRows.concat(right));
-
- var selectedRows = [];
- for (var i=0; i<rows.length; i++)
- selectedRows.push(left.length+i);
-
- grid.resetActiveCell();
- grid.setData(data);
- grid.setSelectedRows(selectedRows);
- grid.render();
- });
-
- grid.registerPlugin(moveRowsPlugin);
-
- grid.onDragInit.subscribe(function(e,dd) {
- // prevent the grid from cancelling drag'n'drop by default
- e.stopImmediatePropagation();
- });
-
- grid.onDragStart.subscribe(function(e,dd) {
- var cell = grid.getCellFromEvent(e);
- if (!cell)
- return;
-
- dd.row = cell.row;
- if (!data[dd.row])
- return;
-
- if (Slick.GlobalEditorLock.isActive())
- return;
-
- e.stopImmediatePropagation();
- dd.mode = "recycle";
-
- 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;
- });
-
- grid.onDrag.subscribe(function(e,dd) {
- if (dd.mode != "recycle") {
- return;
- }
- e.stopImmediatePropagation();
- dd.helper.css({top: e.pageY + 5, left: e.pageX + 5});
- });
-
- grid.onDragEnd.subscribe(function(e,dd) {
- if (dd.mode != "recycle") {
- return;
- }
- e.stopImmediatePropagation();
- 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.subscribe(function(e, args) {
- var item = {name:"New task", complete: false};
- $.extend(item, args.item);
- data.push(item);
- grid.invalidateRows([data.length - 1]);
- grid.updateRowCount();
- grid.render();
- });
- })
- </script>
- </body>
+ grid.invalidate();
+ grid.setSelectedRows([]);
+ });
+
+
+ grid.onAddNewRow.subscribe(function (e, args) {
+ var item = {name:"New task", complete:false};
+ $.extend(item, args.item);
+ data.push(item);
+ grid.invalidateRows([data.length - 1]);
+ grid.updateRowCount();
+ grid.render();
+ });
+})
+</script>
+</body>
</html>