Solstice
view release on metacpan or search on metacpan
javascript/yui/build/datatable/datatable-beta.js view on Meta::CPAN
/////////////////////////////////////////////////////////////////////////////
//
// Public Custom Event Handlers
//
/////////////////////////////////////////////////////////////////////////////
/**
* Overridable custom event handler to sort Column.
*
* @method onEventSortColumn
* @param oArgs.event {HTMLEvent} Event object.
* @param oArgs.target {HTMLElement} Target element.
*/
YAHOO.widget.DataTable.prototype.onEventSortColumn = function(oArgs) {
//TODO: support nested header column sorting
var evt = oArgs.event;
var target = oArgs.target;
YAHOO.util.Event.stopEvent(evt);
var el = this.getThEl(target) || this.getTdEl(target);
if(el && YAHOO.lang.isNumber(el.yuiColumnId)) {
this.sortColumn(this._oColumnSet.getColumn(el.yuiColumnId));
}
else {
}
};
/**
* Overridable custom event handler to manage selection according to desktop paradigm.
*
* @method onEventSelectRow
* @param oArgs.event {HTMLEvent} Event object.
* @param oArgs.target {HTMLElement} Target element.
*/
YAHOO.widget.DataTable.prototype.onEventSelectRow = function(oArgs) {
var sMode = this.get("selectionMode");
if ((sMode == "singlecell") || (sMode == "cellblock") || (sMode == "cellrange")) {
return;
}
var evt = oArgs.event;
var elTarget = oArgs.target;
var bSHIFT = evt.shiftKey;
var bCTRL = evt.ctrlKey;
var i, nAnchorTrIndex;
// Validate target row
var elTargetRow = this.getTrEl(elTarget);
if(elTargetRow) {
var allRows = this._elTbody.rows;
var nTargetTrIndex = elTargetRow.sectionRowIndex;
var elAnchorRow = YAHOO.util.Dom.get(this._sSelectionAnchorId);
// Both SHIFT and CTRL
if((sMode != "single") && bSHIFT && bCTRL) {
// Validate anchor row
if(elAnchorRow && YAHOO.lang.isNumber(elAnchorRow.sectionRowIndex)) {
nAnchorTrIndex = elAnchorRow.sectionRowIndex;
if(this.isSelected(elAnchorRow)) {
// Select all rows between anchor row and target row, including target row
if(nAnchorTrIndex < nTargetTrIndex) {
for(i=nAnchorTrIndex+1; i<=nTargetTrIndex; i++) {
if(!this.isSelected(allRows[i])) {
this.selectRow(allRows[i]);
}
}
}
// Select all rows between target row and anchor row, including target row
else {
for(i=nAnchorTrIndex-1; i>=nTargetTrIndex; i--) {
if(!this.isSelected(allRows[i])) {
this.selectRow(allRows[i]);
}
}
}
}
else {
// Unselect all rows between anchor row and target row
if(nAnchorTrIndex < nTargetTrIndex) {
for(i=nAnchorTrIndex+1; i<=nTargetTrIndex-1; i++) {
if(this.isSelected(allRows[i])) {
this.unselectRow(allRows[i]);
}
}
}
// Unselect all rows between target row and anchor row
else {
for(i=nTargetTrIndex+1; i<=nAnchorTrIndex-1; i++) {
( run in 0.576 second using v1.01-cache-2.11-cpan-39bf76dae61 )