⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filteringtable.js

📁 初学者
💻 JS
📖 第 1 页 / 共 2 页
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.FilteringTable");dojo.require("dojo.date.format");dojo.require("dojo.math");dojo.require("dojo.collections.Store");dojo.require("dojo.html.*");dojo.require("dojo.html.util");dojo.require("dojo.html.style");dojo.require("dojo.html.selection");dojo.require("dojo.event.*");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget("dojo.widget.FilteringTable", dojo.widget.HtmlWidget, function () {	this.store = new dojo.collections.Store();	this.valueField = "Id";	this.multiple = false;	this.maxSelect = 0;	this.maxSortable = 1;	this.minRows = 0;	this.defaultDateFormat = "%D";	this.isInitialized = false;	this.alternateRows = false;	this.columns = [];	this.sortInformation = [{index:0, direction:0}];	this.headClass = "";	this.tbodyClass = "";	this.headerClass = "";	this.headerUpClass = "selectedUp";	this.headerDownClass = "selectedDown";	this.rowClass = "";	this.rowAlternateClass = "alt";	this.rowSelectedClass = "selected";	this.columnSelected = "sorted-column";}, {isContainer:false, templatePath:null, templateCssPath:null, getTypeFromString:function (s) {	var parts = s.split("."), i = 0, obj = dj_global;	do {		obj = obj[parts[i++]];	} while (i < parts.length && obj);	return (obj != dj_global) ? obj : null;}, getByRow:function (row) {	return this.store.getByKey(dojo.html.getAttribute(row, "value"));}, getDataByRow:function (row) {	return this.store.getDataByKey(dojo.html.getAttribute(row, "value"));}, getRow:function (obj) {	var rows = this.domNode.tBodies[0].rows;	for (var i = 0; i < rows.length; i++) {		if (this.store.getDataByKey(dojo.html.getAttribute(rows[i], "value")) == obj) {			return rows[i];		}	}	return null;}, getColumnIndex:function (fieldPath) {	for (var i = 0; i < this.columns.length; i++) {		if (this.columns[i].getField() == fieldPath) {			return i;		}	}	return -1;}, getSelectedData:function () {	var data = this.store.get();	var a = [];	for (var i = 0; i < data.length; i++) {		if (data[i].isSelected) {			a.push(data[i].src);		}	}	if (this.multiple) {		return a;	} else {		return a[0];	}}, isSelected:function (obj) {	var data = this.store.get();	for (var i = 0; i < data.length; i++) {		if (data[i].src == obj) {			return true;		}	}	return false;}, isValueSelected:function (val) {	var v = this.store.getByKey(val);	if (v) {		return v.isSelected;	}	return false;}, isIndexSelected:function (idx) {	var v = this.store.getByIndex(idx);	if (v) {		return v.isSelected;	}	return false;}, isRowSelected:function (row) {	var v = this.getByRow(row);	if (v) {		return v.isSelected;	}	return false;}, reset:function () {	this.store.clearData();	this.columns = [];	this.sortInformation = [{index:0, direction:0}];	this.resetSelections();	this.isInitialized = false;	this.onReset();}, resetSelections:function () {	this.store.forEach(function (element) {		element.isSelected = false;	});}, onReset:function () {}, select:function (obj) {	var data = this.store.get();	for (var i = 0; i < data.length; i++) {		if (data[i].src == obj) {			data[i].isSelected = true;			break;		}	}	this.onDataSelect(obj);}, selectByValue:function (val) {	this.select(this.store.getDataByKey(val));}, selectByIndex:function (idx) {	this.select(this.store.getDataByIndex(idx));}, selectByRow:function (row) {	this.select(this.getDataByRow(row));}, selectAll:function () {	this.store.forEach(function (element) {		element.isSelected = true;	});}, onDataSelect:function (obj) {}, toggleSelection:function (obj) {	var data = this.store.get();	for (var i = 0; i < data.length; i++) {		if (data[i].src == obj) {			data[i].isSelected = !data[i].isSelected;			break;		}	}	this.onDataToggle(obj);}, toggleSelectionByValue:function (val) {	this.toggleSelection(this.store.getDataByKey(val));}, toggleSelectionByIndex:function (idx) {	this.toggleSelection(this.store.getDataByIndex(idx));}, toggleSelectionByRow:function (row) {	this.toggleSelection(this.getDataByRow(row));}, toggleAll:function () {	this.store.forEach(function (element) {		element.isSelected = !element.isSelected;	});}, onDataToggle:function (obj) {}, _meta:{field:null, format:null, filterer:null, noSort:false, sortType:"String", dataType:String, sortFunction:null, filterFunction:null, label:null, align:"left", valign:"middle", getField:function () {	return this.field || this.label;}, getType:function () {	return this.dataType;}}, createMetaData:function (obj) {	for (var p in this._meta) {		if (!obj[p]) {			obj[p] = this._meta[p];		}	}	if (!obj.label) {		obj.label = obj.field;	}	if (!obj.filterFunction) {		obj.filterFunction = this._defaultFilter;	}	return obj;}, parseMetadata:function (head) {	this.columns = [];	this.sortInformation = [];	var row = head.getElementsByTagName("tr")[0];	var cells = row.getElementsByTagName("td");	if (cells.length == 0) {		cells = row.getElementsByTagName("th");	}	for (var i = 0; i < cells.length; i++) {		var o = this.createMetaData({});		if (dojo.html.hasAttribute(cells[i], "align")) {			o.align = dojo.html.getAttribute(cells[i], "align");		}		if (dojo.html.hasAttribute(cells[i], "valign")) {			o.valign = dojo.html.getAttribute(cells[i], "valign");		}		if (dojo.html.hasAttribute(cells[i], "nosort")) {			o.noSort = (dojo.html.getAttribute(cells[i], "nosort") == "true");		}		if (dojo.html.hasAttribute(cells[i], "sortusing")) {			var trans = dojo.html.getAttribute(cells[i], "sortusing");			var f = this.getTypeFromString(trans);			if (f != null && f != window && typeof (f) == "function") {				o.sortFunction = f;			}		}		o.label = dojo.html.renderedTextContent(cells[i]);		if (dojo.html.hasAttribute(cells[i], "field")) {			o.field = dojo.html.getAttribute(cells[i], "field");		} else {			if (o.label.length > 0) {				o.field = o.label;			} else {				o.field = "field" + i;			}		}		if (dojo.html.hasAttribute(cells[i], "format")) {			o.format = dojo.html.getAttribute(cells[i], "format");		}		if (dojo.html.hasAttribute(cells[i], "dataType")) {			var sortType = dojo.html.getAttribute(cells[i], "dataType");			if (sortType.toLowerCase() == "html" || sortType.toLowerCase() == "markup") {				o.sortType = "__markup__";			} else {				var type = this.getTypeFromString(sortType);				if (type) {					o.sortType = sortType;					o.dataType = type;				}			}		}		if (dojo.html.hasAttribute(cells[i], "filterusing")) {			var trans = dojo.html.getAttribute(cells[i], "filterusing");			var f = this.getTypeFromString(trans);			if (f != null && f != window && typeof (f) == "function") {				o.filterFunction = f;			}		}		this.columns.push(o);		if (dojo.html.hasAttribute(cells[i], "sort")) {			var info = {index:i, direction:0};			var dir = dojo.html.getAttribute(cells[i], "sort");			if (!isNaN(parseInt(dir))) {				dir = parseInt(dir);				info.direction = (dir != 0) ? 1 : 0;			} else {				info.direction = (dir.toLowerCase() == "desc") ? 1 : 0;			}			this.sortInformation.push(info);		}	}	if (this.sortInformation.length == 0) {		this.sortInformation.push({index:0, direction:0});	} else {		if (this.sortInformation.length > this.maxSortable) {			this.sortInformation.length = this.maxSortable;		}	}}, parseData:function (body) {	if (body.rows.length == 0 && this.columns.length == 0) {		return;	}	var self = this;	this["__selected__"] = [];	var arr = this.store.getFromHtml(this.columns, body, function (obj, row) {		if (typeof (obj[self.valueField]) == "undefined" || obj[self.valueField] == null) {			obj[self.valueField] = dojo.html.getAttribute(row, "value");		}		if (dojo.html.getAttribute(row, "selected") == "true") {			self["__selected__"].push(obj);		}	});	this.store.setData(arr, true);	this.render();	for (var i = 0; i < this["__selected__"].length; i++) {		this.select(this["__selected__"][i]);	}	this.renderSelections();	delete this["__selected__"];	this.isInitialized = true;}, onSelect:function (e) {	var row = dojo.html.getParentByType(e.target, "tr");	if (dojo.html.hasAttribute(row, "emptyRow")) {		return;	}	var body = dojo.html.getParentByType(row, "tbody");	if (this.multiple) {		if (e.shiftKey) {			var startRow;			var rows = body.rows;			for (var i = 0; i < rows.length; i++) {				if (rows[i] == row) {					break;				}				if (this.isRowSelected(rows[i])) {					startRow = rows[i];				}			}			if (!startRow) {				startRow = row;				for (; i < rows.length; i++) {					if (this.isRowSelected(rows[i])) {						row = rows[i];						break;					}				}			}			this.resetSelections();			if (startRow == row) {				this.toggleSelectionByRow(row);			} else {				var doSelect = false;				for (var i = 0; i < rows.length; i++) {					if (rows[i] == startRow) {						doSelect = true;					}					if (doSelect) {						this.selectByRow(rows[i]);					}					if (rows[i] == row) {						doSelect = false;					}				}			}		} else {			this.toggleSelectionByRow(row);		}	} else {		this.resetSelections();		this.toggleSelectionByRow(row);	}	this.renderSelections();}, onSort:function (e) {	var oldIndex = this.sortIndex;	var oldDirection = this.sortDirection;	var source = e.target;	var row = dojo.html.getParentByType(source, "tr");	var cellTag = "td";	if (row.getElementsByTagName(cellTag).length == 0) {		cellTag = "th";	}	var headers = row.getElementsByTagName(cellTag);	var header = dojo.html.getParentByType(source, cellTag);	for (var i = 0; i < headers.length; i++) {		dojo.html.setClass(headers[i], this.headerClass);		if (headers[i] == header) {			if (this.sortInformation[0].index != i) {				this.sortInformation.unshift({index:i, direction:0});			} else {				this.sortInformation[0] = {index:i, direction:(~this.sortInformation[0].direction) & 1};			}		}	}	this.sortInformation.length = Math.min(this.sortInformation.length, this.maxSortable);	for (var i = 0; i < this.sortInformation.length; i++) {		var idx = this.sortInformation[i].index;		var dir = (~this.sortInformation[i].direction) & 1;		dojo.html.setClass(headers[idx], dir == 0 ? this.headerDownClass : this.headerUpClass);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -