summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/example-header-row.html39
-rw-r--r--examples/example4-model.html6
-rw-r--r--plugins/slick.headerbuttons.js12
-rw-r--r--plugins/slick.headermenu.js12
-rw-r--r--slick.grid.js82
5 files changed, 78 insertions, 73 deletions
diff --git a/examples/example-header-row.html b/examples/example-header-row.html
index d5d64ca..6f309bc 100644
--- a/examples/example-header-row.html
+++ b/examples/example-header-row.html
@@ -55,7 +55,8 @@
var options = {
enableCellNavigation: true,
showHeaderRow: true,
- headerRowHeight: 30
+ headerRowHeight: 30,
+ explicitInitialization: true
};
var columns = [];
var columnFilters = {};
@@ -70,19 +71,6 @@
}
- function updateHeaderRow() {
- for (var i = 0; i < columns.length; i++) {
- if (columns[i].id !== "selector") {
- var header = grid.getHeaderRowColumn(columns[i].id);
- $(header).empty();
- $("<input type='text'>")
- .data("columnId", columns[i].id)
- .val(columnFilters[columns[i].id])
- .appendTo(header);
- }
- }
- }
-
function filter(item) {
for (var columnId in columnFilters) {
if (columnId !== undefined && columnFilters[columnId] !== "") {
@@ -118,26 +106,29 @@
grid.render();
});
+
$(grid.getHeaderRow()).delegate(":input", "change keyup", function (e) {
- columnFilters[$(this).data("columnId")] = $.trim($(this).val());
- dataView.refresh();
+ var columnId = $(this).data("columnId");
+ if (columnId != null) {
+ columnFilters[columnId] = $.trim($(this).val());
+ dataView.refresh();
+ }
});
-
- grid.onColumnsReordered.subscribe(function (e, args) {
- updateHeaderRow();
+ grid.onHeaderRowCellRendered.subscribe(function(e, args) {
+ $(args.node).empty();
+ $("<input type='text'>")
+ .data("columnId", args.column.id)
+ .val(columnFilters[args.column.id])
+ .appendTo(args.node);
});
- grid.onColumnsResized.subscribe(function (e, args) {
- updateHeaderRow();
- });
+ grid.init();
dataView.beginUpdate();
dataView.setItems(data);
dataView.setFilter(filter);
dataView.endUpdate();
-
- updateHeaderRow();
})
</script>
</body>
diff --git a/examples/example4-model.html b/examples/example4-model.html
index ce62c0b..8feaf7e 100644
--- a/examples/example4-model.html
+++ b/examples/example4-model.html
@@ -161,11 +161,7 @@ function comparer(a, b) {
}
function toggleFilterRow() {
- if ($(grid.getTopPanel()).is(":visible")) {
- grid.hideTopPanel();
- } else {
- grid.showTopPanel();
- }
+ grid.setTopPanelVisibility(!grid.getOptions().showTopPanel);
}
diff --git a/plugins/slick.headerbuttons.js b/plugins/slick.headerbuttons.js
index 16024e5..8e61273 100644
--- a/plugins/slick.headerbuttons.js
+++ b/plugins/slick.headerbuttons.js
@@ -75,8 +75,8 @@
options = $.extend(true, {}, _defaults, options);
_grid = grid;
_handler
- .subscribe(_grid.onHeaderRendered, handleHeaderRendered)
- .subscribe(_grid.onBeforeHeaderDestroy, handleBeforeHeaderDestroy);
+ .subscribe(_grid.onHeaderCellRendered, handleHeaderCellRendered)
+ .subscribe(_grid.onBeforeHeaderCellDestroy, handleBeforeHeaderCellDestroy);
// Force the grid to re-render the header now that the events are hooked up.
_grid.setColumns(_grid.getColumns());
@@ -88,7 +88,7 @@
}
- function handleHeaderRendered(e, args) {
+ function handleHeaderCellRendered(e, args) {
var column = args.column;
if (column.header && column.header.buttons) {
@@ -127,20 +127,20 @@
btn
.bind("click", handleButtonClick)
- .appendTo(args.headerNode);
+ .appendTo(args.node);
}
}
}
- function handleBeforeHeaderDestroy(e, args) {
+ function handleBeforeHeaderCellDestroy(e, args) {
var column = args.column;
if (column.header && column.header.buttons) {
// Removing buttons via jQuery will also clean up any event handlers and data.
// NOTE: If you attach event handlers directly or using a different framework,
// you must also clean them up here to avoid memory leaks.
- $(args.headerNode).find("." + options.buttonCssClass).remove();
+ $(args.node).find("." + options.buttonCssClass).remove();
}
}
diff --git a/plugins/slick.headermenu.js b/plugins/slick.headermenu.js
index 9a94bf5..77df1ce 100644
--- a/plugins/slick.headermenu.js
+++ b/plugins/slick.headermenu.js
@@ -93,8 +93,8 @@
options = $.extend(true, {}, _defaults, options);
_grid = grid;
_handler
- .subscribe(_grid.onHeaderRendered, handleHeaderRendered)
- .subscribe(_grid.onBeforeHeaderDestroy, handleBeforeHeaderDestroy);
+ .subscribe(_grid.onHeaderCellRendered, handleHeaderCellRendered)
+ .subscribe(_grid.onBeforeHeaderCellDestroy, handleBeforeHeaderCellDestroy);
// Force the grid to re-render the header now that the events are hooked up.
_grid.setColumns(_grid.getColumns());
@@ -126,7 +126,7 @@
}
}
- function handleHeaderRendered(e, args) {
+ function handleHeaderCellRendered(e, args) {
var column = args.column;
var menu = column.header && column.header.menu;
@@ -150,16 +150,16 @@
$el
.bind("click", showMenu)
- .appendTo(args.headerNode);
+ .appendTo(args.node);
}
}
- function handleBeforeHeaderDestroy(e, args) {
+ function handleBeforeHeaderCellDestroy(e, args) {
var column = args.column;
if (column.header && column.header.menu) {
- $(args.headerNode).find(".slick-header-menubutton").remove();
+ $(args.node).find(".slick-header-menubutton").remove();
}
}
diff --git a/slick.grid.js b/slick.grid.js
index 72ed3dd..c24db21 100644
--- a/slick.grid.js
+++ b/slick.grid.js
@@ -471,8 +471,8 @@ if (typeof Slick === "undefined") {
columns[idx].toolTip = toolTip;
}
- trigger(self.onBeforeHeaderDestroy, {
- "headerNode": $header[0],
+ trigger(self.onBeforeHeaderCellDestroy, {
+ "node": $header[0],
"column": columnDef
});
@@ -480,8 +480,8 @@ if (typeof Slick === "undefined") {
.attr("title", toolTip || "")
.children().eq(0).html(title);
- trigger(self.onHeaderRendered, {
- "headerNode": $header[0],
+ trigger(self.onHeaderCellRendered, {
+ "node": $header[0],
"column": columnDef
});
}
@@ -510,15 +510,25 @@ if (typeof Slick === "undefined") {
.each(function() {
var columnDef = $(this).data("column");
if (columnDef) {
- trigger(self.onBeforeHeaderDestroy, {
- "headerNode": this,
+ trigger(self.onBeforeHeaderCellDestroy, {
+ "node": this,
"column": columnDef
});
}
});
-
$headers.empty();
$headers.width(getHeadersWidth());
+
+ $headerRow.find(".slick-headerrow-column")
+ .each(function() {
+ var columnDef = $(this).data("column");
+ if (columnDef) {
+ trigger(self.onBeforeHeaderRowCellDestroy, {
+ "node": this,
+ "column": columnDef
+ });
+ }
+ });
$headerRow.empty();
for (var i = 0; i < columns.length; i++) {
@@ -540,14 +550,20 @@ if (typeof Slick === "undefined") {
header.append("<span class='slick-sort-indicator' />");
}
- trigger(self.onHeaderRendered, {
- "headerNode": header[0],
+ trigger(self.onHeaderCellRendered, {
+ "node": header[0],
"column": m
});
if (options.showHeaderRow) {
- $("<div class='ui-state-default slick-headerrow-column l" + i + " r" + i + "'></div>")
+ var headerRowCell = $("<div class='ui-state-default slick-headerrow-column l" + i + " r" + i + "'></div>")
+ .data("column", m)
.appendTo($headerRow);
+
+ trigger(self.onHeaderRowCellRendered, {
+ "node": headerRowCell[0],
+ "column": m
+ });
}
}
@@ -1241,24 +1257,26 @@ if (typeof Slick === "undefined") {
return $topPanel[0];
}
- function showTopPanel() {
- options.showTopPanel = true;
- $topPanelScroller.slideDown("fast", resizeCanvas);
- }
-
- function hideTopPanel() {
- options.showTopPanel = false;
- $topPanelScroller.slideUp("fast", resizeCanvas);
- }
-
- function showHeaderRowColumns() {
- options.showHeaderRow = true;
- $headerRowScroller.slideDown("fast", resizeCanvas);
+ function setTopPanelVisibility(visible) {
+ if (options.showTopPanel != visible) {
+ options.showTopPanel = visible;
+ if (visible) {
+ $topPanelScroller.slideDown("fast", resizeCanvas);
+ } else {
+ $topPanelScroller.slideUp("fast", resizeCanvas);
+ }
+ }
}
- function hideHeaderRowColumns() {
- options.showHeaderRow = false;
- $headerRowScroller.slideUp("fast", resizeCanvas);
+ function setHeaderRowVisibility(visible) {
+ if (options.showHeaderRow != visible) {
+ options.showHeaderRow = visible;
+ if (visible) {
+ $headerRowScroller.slideDown("fast", resizeCanvas);
+ } else {
+ $headerRowScroller.slideUp("fast", resizeCanvas);
+ }
+ }
}
//////////////////////////////////////////////////////////////////////////////////////////////
@@ -3087,8 +3105,10 @@ if (typeof Slick === "undefined") {
"onHeaderMouseLeave": new Slick.Event(),
"onHeaderContextMenu": new Slick.Event(),
"onHeaderClick": new Slick.Event(),
- "onHeaderRendered": new Slick.Event(),
- "onBeforeHeaderDestroy": new Slick.Event(),
+ "onHeaderCellRendered": new Slick.Event(),
+ "onBeforeHeaderCellDestroy": new Slick.Event(),
+ "onHeaderRowCellRendered": new Slick.Event(),
+ "onBeforeHeaderRowCellDestroy": new Slick.Event(),
"onMouseEnter": new Slick.Event(),
"onMouseLeave": new Slick.Event(),
"onClick": new Slick.Event(),
@@ -3173,10 +3193,8 @@ if (typeof Slick === "undefined") {
"navigateRight": navigateRight,
"gotoCell": gotoCell,
"getTopPanel": getTopPanel,
- "showTopPanel": showTopPanel,
- "hideTopPanel": hideTopPanel,
- "showHeaderRowColumns": showHeaderRowColumns,
- "hideHeaderRowColumns": hideHeaderRowColumns,
+ "setTopPanelVisibility": setTopPanelVisibility,
+ "setHeaderRowVisibility": setHeaderRowVisibility,
"getHeaderRow": getHeaderRow,
"getHeaderRowColumn": getHeaderRowColumn,
"getGridPosition": getGridPosition,