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

📄 double.js

📁 zapatec suite 最新版 20070204,非常棒的ajax widgets 工具包
💻 JS
字号:
/** * @fileoverview Common functions used in Zapatec Two Grids Sharing Controls * Example. * * <pre> * Copyright (c) 2004-2006 by Zapatec, Inc. * http://www.zapatec.com * 1700 MLK Way, Berkeley, California, * 94709, U.S.A. * All rights reserved. * </pre> *//* $Id: double.js 7323 2007-06-01 21:05:51Z alex $ *//** * Converts number of milliseconds since January 1, 1970, 00:00:00.000 into * a date string. * @private */function fromTimestamp(iTimestamp) {	var oDate = new Date(Math.round(iTimestamp));	var sMonth = oDate.getMonth() + 1;	if (sMonth < 10) {		sMonth = '0' + sMonth;	}	var sDay = oDate.getDate();	if (sDay < 10) {		sDay = '0' + sDay;	}	var sYear = oDate.getYear();	if (sYear < 1900) {		sYear += 1900;	}	sYear += '';	sYear = sYear.substr(2);	return sMonth + '/' + sDay + '/' + sYear;}/** * Range of items slider "onChange" event listener. Called when slider position * is changed programmatically. * @private */function onRangeOfDatesChange(iMin, iMax) {	// Display scale	document.getElementById('rangeOfDates').innerHTML =	 fromTimestamp(iMin) + ' - ' + fromTimestamp(iMax);}/** * Range of items slider "newPosition" event listener. Called when slider is * drag-n-dropped. * @private */function onRangeOfDatesDrag(iMin, iMax) {	onRangeOfDatesChange(iMin, iMax);	// Limit range of items	oGrid1.limitRange({		column: 1,		min: iMin,		max: iMax	});	oGrid2.limitRange({		column: 1,		min: iMin,		max: iMax	});}/** * Range of minutes slider "onChange" event listener. Called when slider * position is changed programmatically. * @private */function onRangeOfMinutesChange(iMin, iMax) {	iMin = Math.round(iMin);	iMax = Math.round(iMax);	// Display scale	document.getElementById('rangeOfMinutes').innerHTML =	 iMin + ' - ' + iMax;}/** * Range of minutes slider "newPosition" event listener. Called when slider is * drag-n-dropped. * @private */function onRangeOfMinutesDrag(iMin, iMax) {	onRangeOfMinutesChange(iMin, iMax);	// Limit range of items	oGrid1.limitRange({		column: 5,		minValue: iMin,		maxValue: iMax	});	oGrid2.limitRange({		column: 5,		minValue: iMin,		maxValue: iMax	});}/** * Holds items slider object. * @private */var oDateSlider;/** * Holds minutes slider object. * @private */var oMinuteSlider;/** * Passed to grid through eventListeners config option as 'gridInitialized' * event listener and called when grid is initialized. Grid object can be * accessed through "this" because function is called in scope of grid object. * @private */function onGridInit() {	// Skip initialization event of the first grid because we need both grids to	// be initialized	if (!oGrid1) {		return;	}	var oRange1, oRange2, iMin, iMax;	// Range of Dates	// oGrid1 is already assigned at this point	// oGrid2 is not assigned yet at this point, but we are able to access the	// second grid because this function is called in scope of it	oRange1 = oGrid1.getColumnRange({column: 1});	oRange2 = this.getColumnRange({column: 1});	if (oRange1 && oRange2) {		// Combine ranges of both grids		iMin = Math.min(oRange1.min, oRange2.min);		iMax = Math.max(oRange1.max, oRange2.max);		// Show combined range		document.getElementById('rangeOfDates').innerHTML = 			fromTimestamp(iMin) + ' - ' + fromTimestamp(iMax);		if (oDateSlider) {			// Update slider			oDateSlider.reset(iMin, iMax);		} else {			// Draw items slider			oDateSlider = new Zapatec.Slider({				div: 'rangeOfDatesScale', 				length: 99,				dual: true, 				orientation: 'H',				step: 1,				range : [iMin, iMax],				eventListeners: {					'onChange': onRangeOfDatesChange,					'newPosition': onRangeOfDatesDrag				}			});		}	}	// Range of Minutes	oRange1 = oGrid1.getColumnRange({column: 5});	oRange2 = this.getColumnRange({column: 5});	if (oRange1 && oRange2) {		// Combine ranges of both grids		iMin = Math.min(oRange1.min, oRange2.min);		iMax = Math.max(oRange1.max, oRange2.max);		// Show combined range		document.getElementById('rangeOfMinutes').innerHTML = iMin + ' - ' + iMax;		if (oMinuteSlider) {			// Update slider			oMinuteSlider.reset(iMin, iMax);		} else {			// Draw minutes slider			oMinuteSlider = new Zapatec.Slider({				div: 'rangeOfMinutesScale', 				length: 99,				dual: true, 				orientation: 'H',				step: 1,				range : [iMin, iMax],				eventListeners: {					'onChange': onRangeOfMinutesChange,					'newPosition': onRangeOfMinutesDrag				}			});		}	}	// Display filter out checkboxes	onGridFiltered.call(this);}/** * Passed to grid through eventListeners config option as 'gridFiltered' * event listener and called when grid is filtered. Grid object can be * accessed through "this" because function is called in scope of grid object. * @private */function onGridFiltered() {	var sId1 = oGrid1.getId().toString();	var sId2 = this.getId().toString();	// Template used to display "Select all" and "Clear" links	var aTplL = [	 '<div><a href="javascript:void(0)" onclick="Zapatec.Grid.checkboxSelectAllOnClick(\'',	 sId1,	 "',[",	 '', // Column id	 ']);Zapatec.Grid.checkboxSelectAllOnClick(\'',	 sId2,	 "',[",	 '', // Column id	 '])">Select all</a> | <a href="javascript:void(0)" onclick="Zapatec.Grid.checkboxClearAllOnClick(\'',	 sId1,	 "',[",	 '', // Column id	 ']);Zapatec.Grid.checkboxClearAllOnClick(\'',	 sId2,	 "',[",	 '', // Column id	 '])">Clear</a></div>'	];	// Template used to display checkbox	var aTplC = [	 '<div><input type="checkbox" ',	 '', // Checked or not	 'onclick="filter(this.form);Zapatec.Grid.checkboxOnClick(\'',	 sId1,	 "',[",	 '', // Column id	 "],unescape('",	 '', // Escaped value	 '\'),this.checked);Zapatec.Grid.checkboxOnClick(\'',	 sId2,	 "',[",	 '', // Column id	 "],unescape('",	 '', // Escaped value	 '\'),this.checked)"/><a href="javascript:void(0)" onclick="Zapatec.Grid.checkboxLinkOnClick(\'',	 sId1,	 "',[",	 '', // Column id	 "],unescape('",	 '', // Escaped value	 '\'));Zapatec.Grid.checkboxLinkOnClick(\'',	 sId2,	 "',[",	 '', // Column id	 "],unescape('",	 '', // Escaped value	 '\'))">',	 '', // Value	 '</a></div>'	];	// Filter Rate Period	var aVals, aVals2, iVals, iVals2, iVal, iVal2, oVal, sVal;	var aHiddenVals, aHiddenV;	oRange1 = oGrid1.getColumnRange({column: 3});	oRange2 = this.getColumnRange({column: 3});	if (oRange1 && oRange2) {		// Combine unique values of both grids		aVals = oRange1.values;		aVals2 = oRange2.values;		iVals2 = aVals2.length;		for (iVal2 = 0; iVals2--; iVal2++) {			oVal = aVals2[iVal2];			sVal = oVal.c;			iVals = aVals.length;			for (iVal = 0; iVals--; iVal++) {				if (aVals[iVal].c == sVal) {					break;				}			}			if (iVals < 0) {				aVals.push(oVal);			}		}		// Sort values		aVals.sort(function(sL, sR) {			if (sL.c < sR.c) {				return -1;			}			if (sL.c > sR.c) {				return 1;			}			return 0;		});		// Get hidden values		aHiddenVals = oGrid1.getFieldById(3).hiddenValues;		if (aHiddenVals instanceof Array) {			aHiddenV = this.getFieldById(3).hiddenValues;			if (aHiddenV instanceof Array) {				aHiddenVals = aHiddenVals.concat(aHiddenV);			}		} else {			aHiddenVals = this.getFieldById(3).hiddenValues;		}		// Display checkboxes		aTplL[3] = aTplL[7] = aTplL[11] = aTplL[15] = '3';		aTplC[5] = aTplC[11] = aTplC[17] = aTplC[23] = '3';		displayCheckboxes('filterOutRate', aTplL, aTplC, aVals, aHiddenVals);	}	// Filter Minutes	oRange1 = oGrid1.getColumnRange({column: 5});	oRange2 = this.getColumnRange({column: 5});	if (oRange1 && oRange2) {		// Combine unique values of both grids		aVals = oRange1.values;		aVals2 = oRange2.values;		iVals2 = aVals2.length;		for (iVal2 = 0; iVals2--; iVal2++) {			oVal = aVals2[iVal2];			sVal = oVal.c;			iVals = aVals.length;			for (iVal = 0; iVals--; iVal++) {				if (aVals[iVal].c == sVal) {					break;				}			}			if (iVals < 0) {				aVals.push(oVal);			}		}		// Sort values descending		aVals.sort(function(sL, sR) {			if (sL.c < sR.c) {				return 1;			}			if (sL.c > sR.c) {				return -1;			}			return 0;		});		// Get hidden values		aHiddenVals = oGrid1.getFieldById(5).hiddenValues;		if (aHiddenVals instanceof Array) {			aHiddenV = this.getFieldById(5).hiddenValues;			if (aHiddenV instanceof Array) {				aHiddenVals = aHiddenVals.concat(aHiddenV);			}		} else {			aHiddenVals = this.getFieldById(5).hiddenValues;		}		// Display checkboxes		aTplL[3] = aTplL[7] = aTplL[11] = aTplL[15] = '5';		aTplC[5] = aTplC[11] = aTplC[17] = aTplC[23] = '5';		displayCheckboxes('filterOutMinutes', aTplL, aTplC, aVals, aHiddenVals);	}}/** * Displays filter out checkboxes. * @private */function displayCheckboxes(sContainerId, aTplL, aTplC, aVals, aHiddenVals) {	// Get container	var oContr = Zapatec.Widget.getElementById(sContainerId);	if (!oContr) {		return;	}	// Form output	var aHtml = [];	// "Select all" and "Clear" links	aHtml.push(aTplL.join(''));	// Checkboxes	var fIndexOf = Zapatec.Utils.arrIndexOf;	var sVal;	for (var iVal = 0; iVal < aVals.length; iVal++) {		sVal = aVals[iVal].v + ''; // Transform into string		// Check if this value is hidden		if (!(aHiddenVals instanceof Array) || fIndexOf(aHiddenVals, sVal) < 0) {			aTplC[1] = 'checked ';		} else {			aTplC[1] = '';		}		aTplC[27] = sVal;		aTplC[7] = aTplC[13] = aTplC[19] = aTplC[25] = escape(sVal);		aHtml.push(aTplC.join(''));	}	oContr.innerHTML = aHtml.join('');}/** * Sets filter to the grid. * @private */function filter(oForm) {	if (oGrid1) {		if (oForm.isRegExp.checked) {			oGrid1.setFilter({				regexp: oForm.textFilter.value			});		} else {			oGrid1.setFilter({				text: oForm.textFilter.value			});		}	}	if (oGrid2) {		if (oForm.isRegExp.checked) {			oGrid2.setFilter({				regexp: oForm.textFilter.value			});		} else {			oGrid2.setFilter({				text: oForm.textFilter.value			});		}	}	return false;}/** * Removes all filters from the grid. * @private */function resetControls(oForm) {	// Reset form	oForm.textFilter.value = '';	// Reset sliders	for (var iWidget = 0; iWidget < Zapatec.Widget.all.length; iWidget++) {		var oWidget = Zapatec.Widget.all[iWidget];		if (oWidget.constructor == Zapatec.Slider) {			oWidget.setPos(oWidget.config.range[0], oWidget.config.range[1]);		}	}	// Reset filters	if (oGrid1) {		oGrid1.resetFilters();	}	if (oGrid2) {		oGrid2.resetFilters();	}}

⌨️ 快捷键说明

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