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

📄 filteringtable.js

📁 初学者
💻 JS
📖 第 1 页 / 共 2 页
字号:
	this.render();}, onFilter:function () {}, _defaultFilter:function (obj) {	return true;}, setFilter:function (field, fn) {	for (var i = 0; i < this.columns.length; i++) {		if (this.columns[i].getField() == field) {			this.columns[i].filterFunction = fn;			break;		}	}	this.applyFilters();}, setFilterByIndex:function (idx, fn) {	this.columns[idx].filterFunction = fn;	this.applyFilters();}, clearFilter:function (field) {	for (var i = 0; i < this.columns.length; i++) {		if (this.columns[i].getField() == field) {			this.columns[i].filterFunction = this._defaultFilter;			break;		}	}	this.applyFilters();}, clearFilterByIndex:function (idx) {	this.columns[idx].filterFunction = this._defaultFilter;	this.applyFilters();}, clearFilters:function () {	for (var i = 0; i < this.columns.length; i++) {		this.columns[i].filterFunction = this._defaultFilter;	}	var rows = this.domNode.tBodies[0].rows;	for (var i = 0; i < rows.length; i++) {		rows[i].style.display = "";		if (this.alternateRows) {			dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);		}	}	this.onFilter();}, applyFilters:function () {	var alt = 0;	var rows = this.domNode.tBodies[0].rows;	for (var i = 0; i < rows.length; i++) {		var b = true;		var row = rows[i];		for (var j = 0; j < this.columns.length; j++) {			var value = this.store.getField(this.getDataByRow(row), this.columns[j].getField());			if (this.columns[j].getType() == Date && value != null && !value.getYear) {				value = new Date(value);			}			if (!this.columns[j].filterFunction(value)) {				b = false;				break;			}		}		row.style.display = (b ? "" : "none");		if (b && this.alternateRows) {			dojo.html[((alt++ % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);		}	}	this.onFilter();}, createSorter:function (info) {	var self = this;	var sortFunctions = [];	function createSortFunction(fieldIndex, dir) {		var meta = self.columns[fieldIndex];		var field = meta.getField();		return function (rowA, rowB) {			if (dojo.html.hasAttribute(rowA, "emptyRow")) {				return 1;			}			if (dojo.html.hasAttribute(rowB, "emptyRow")) {				return -1;			}			var a = self.store.getField(self.getDataByRow(rowA), field);			var b = self.store.getField(self.getDataByRow(rowB), field);			var ret = 0;			if (a > b) {				ret = 1;			}			if (a < b) {				ret = -1;			}			return dir * ret;		};	}	var current = 0;	var max = Math.min(info.length, this.maxSortable, this.columns.length);	while (current < max) {		var direction = (info[current].direction == 0) ? 1 : -1;		sortFunctions.push(createSortFunction(info[current].index, direction));		current++;	}	return function (rowA, rowB) {		var idx = 0;		while (idx < sortFunctions.length) {			var ret = sortFunctions[idx++](rowA, rowB);			if (ret != 0) {				return ret;			}		}		return 0;	};}, createRow:function (obj) {	var row = document.createElement("tr");	dojo.html.disableSelection(row);	if (obj.key != null) {		row.setAttribute("value", obj.key);	}	for (var j = 0; j < this.columns.length; j++) {		var cell = document.createElement("td");		cell.setAttribute("align", this.columns[j].align);		cell.setAttribute("valign", this.columns[j].valign);		dojo.html.disableSelection(cell);		var val = this.store.getField(obj.src, this.columns[j].getField());		if (typeof (val) == "undefined") {			val = "";		}		this.fillCell(cell, this.columns[j], val);		row.appendChild(cell);	}	return row;}, fillCell:function (cell, meta, val) {	if (meta.sortType == "__markup__") {		cell.innerHTML = val;	} else {		if (meta.getType() == Date) {			val = new Date(val);			if (!isNaN(val)) {				var format = this.defaultDateFormat;				if (meta.format) {					format = meta.format;				}				cell.innerHTML = dojo.date.strftime(val, format);			} else {				cell.innerHTML = val;			}		} else {			if ("Number number int Integer float Float".indexOf(meta.getType()) > -1) {				if (val.length == 0) {					val = "0";				}				var n = parseFloat(val, 10) + "";				if (n.indexOf(".") > -1) {					n = dojo.math.round(parseFloat(val, 10), 2);				}				cell.innerHTML = n;			} else {				cell.innerHTML = val;			}		}	}}, prefill:function () {	this.isInitialized = false;	var body = this.domNode.tBodies[0];	while (body.childNodes.length > 0) {		body.removeChild(body.childNodes[0]);	}	if (this.minRows > 0) {		for (var i = 0; i < this.minRows; i++) {			var row = document.createElement("tr");			if (this.alternateRows) {				dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](row, this.rowAlternateClass);			}			row.setAttribute("emptyRow", "true");			for (var j = 0; j < this.columns.length; j++) {				var cell = document.createElement("td");				cell.innerHTML = "&nbsp;";				row.appendChild(cell);			}			body.appendChild(row);		}	}}, init:function () {	this.isInitialized = false;	var head = this.domNode.getElementsByTagName("thead")[0];	if (head.getElementsByTagName("tr").length == 0) {		var row = document.createElement("tr");		for (var i = 0; i < this.columns.length; i++) {			var cell = document.createElement("td");			cell.setAttribute("align", this.columns[i].align);			cell.setAttribute("valign", this.columns[i].valign);			dojo.html.disableSelection(cell);			cell.innerHTML = this.columns[i].label;			row.appendChild(cell);			if (!this.columns[i].noSort) {				dojo.event.connect(cell, "onclick", this, "onSort");			}		}		dojo.html.prependChild(row, head);	}	if (this.store.get().length == 0) {		return false;	}	var idx = this.domNode.tBodies[0].rows.length;	if (!idx || idx == 0 || this.domNode.tBodies[0].rows[0].getAttribute("emptyRow") == "true") {		idx = 0;		var body = this.domNode.tBodies[0];		while (body.childNodes.length > 0) {			body.removeChild(body.childNodes[0]);		}		var data = this.store.get();		for (var i = 0; i < data.length; i++) {			var row = this.createRow(data[i]);			body.appendChild(row);			idx++;		}	}	if (this.minRows > 0 && idx < this.minRows) {		idx = this.minRows - idx;		for (var i = 0; i < idx; i++) {			row = document.createElement("tr");			row.setAttribute("emptyRow", "true");			for (var j = 0; j < this.columns.length; j++) {				cell = document.createElement("td");				cell.innerHTML = "&nbsp;";				row.appendChild(cell);			}			body.appendChild(row);		}	}	var row = this.domNode.getElementsByTagName("thead")[0].rows[0];	var cellTag = "td";	if (row.getElementsByTagName(cellTag).length == 0) {		cellTag = "th";	}	var headers = row.getElementsByTagName(cellTag);	for (var i = 0; i < headers.length; i++) {		dojo.html.setClass(headers[i], this.headerClass);	}	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);	}	this.isInitialized = true;	return this.isInitialized;}, render:function () {	if (!this.isInitialized) {		var b = this.init();		if (!b) {			this.prefill();			return;		}	}	var rows = [];	var body = this.domNode.tBodies[0];	var emptyRowIdx = -1;	for (var i = 0; i < body.rows.length; i++) {		rows.push(body.rows[i]);	}	var sortFunction = this.createSorter(this.sortInformation);	if (sortFunction) {		rows.sort(sortFunction);	}	for (var i = 0; i < rows.length; i++) {		if (this.alternateRows) {			dojo.html[((i % 2 == 1) ? "addClass" : "removeClass")](rows[i], this.rowAlternateClass);		}		dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);		body.appendChild(rows[i]);	}}, renderSelections:function () {	var body = this.domNode.tBodies[0];	for (var i = 0; i < body.rows.length; i++) {		dojo.html[(this.isRowSelected(body.rows[i]) ? "addClass" : "removeClass")](body.rows[i], this.rowSelectedClass);	}}, initialize:function () {	var self = this;	dojo.event.connect(this.store, "onSetData", function () {		self.store.forEach(function (element) {			element.isSelected = false;		});		self.isInitialized = false;		var body = self.domNode.tBodies[0];		if (body) {			while (body.childNodes.length > 0) {				body.removeChild(body.childNodes[0]);			}		}		self.render();	});	dojo.event.connect(this.store, "onClearData", function () {		self.isInitialized = false;		self.render();	});	dojo.event.connect(this.store, "onAddData", function (addedObject) {		var row = self.createRow(addedObject);		self.domNode.tBodies[0].appendChild(row);		self.render();	});	dojo.event.connect(this.store, "onAddDataRange", function (arr) {		for (var i = 0; i < arr.length; i++) {			arr[i].isSelected = false;			var row = self.createRow(arr[i]);			self.domNode.tBodies[0].appendChild(row);		}		self.render();	});	dojo.event.connect(this.store, "onRemoveData", function (removedObject) {		var rows = self.domNode.tBodies[0].rows;		for (var i = 0; i < rows.length; i++) {			if (self.getDataByRow(rows[i]) == removedObject.src) {				rows[i].parentNode.removeChild(rows[i]);				break;			}		}		self.render();	});	dojo.event.connect(this.store, "onUpdateField", function (obj, fieldPath, val) {		var row = self.getRow(obj);		var idx = self.getColumnIndex(fieldPath);		if (row && row.cells[idx] && self.columns[idx]) {			self.fillCell(row.cells[idx], self.columns[idx], val);		}	});}, postCreate:function () {	this.store.keyField = this.valueField;	if (this.domNode) {		if (this.domNode.nodeName.toLowerCase() != "table") {		}		if (this.domNode.getElementsByTagName("thead")[0]) {			var head = this.domNode.getElementsByTagName("thead")[0];			if (this.headClass.length > 0) {				head.className = this.headClass;			}			dojo.html.disableSelection(this.domNode);			this.parseMetadata(head);			var header = "td";			if (head.getElementsByTagName(header).length == 0) {				header = "th";			}			var headers = head.getElementsByTagName(header);			for (var i = 0; i < headers.length; i++) {				if (!this.columns[i].noSort) {					dojo.event.connect(headers[i], "onclick", this, "onSort");				}			}		} else {			this.domNode.appendChild(document.createElement("thead"));		}		if (this.domNode.tBodies.length < 1) {			var body = document.createElement("tbody");			this.domNode.appendChild(body);		} else {			var body = this.domNode.tBodies[0];		}		if (this.tbodyClass.length > 0) {			body.className = this.tbodyClass;		}		dojo.event.connect(body, "onclick", this, "onSelect");		this.parseData(body);	}}});

⌨️ 快捷键说明

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