[Mapbender-commits] r1326 - trunk/mapbender/http/javascripts

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Mon May 21 05:53:23 EDT 2007


Author: christoph
Date: 2007-05-21 05:53:23 -0400 (Mon, 21 May 2007)
New Revision: 1326

Modified:
   trunk/mapbender/http/javascripts/map.php
Log:
* moved class List from geometry.js
* refactored Mb_log
* added draft for register functions
* module order

Modified: trunk/mapbender/http/javascripts/map.php
===================================================================
--- trunk/mapbender/http/javascripts/map.php	2007-05-16 21:24:50 UTC (rev 1325)
+++ trunk/mapbender/http/javascripts/map.php	2007-05-21 09:53:23 UTC (rev 1326)
@@ -27,9 +27,9 @@
 echo "var mb_styleID = '".md5($_SESSION["mb_user_name"])."';";
 echo "var mb_myBBOX = '".$_SESSION["mb_myBBOX"]."';";
 echo "var owsproxy = '".OWSPROXY."';";
-echo "var mb_log_js = '".LOG_JS."';";
-echo "var mb_log_level = '".LOG_LEVEL."';";
-echo "var log_levels = '".LOG_LEVEL_LIST."';";
+echo "var global_mb_log_js = '".LOG_JS."';";
+echo "var global_mb_log_level = '".LOG_LEVEL."';";
+echo "var global_log_levels = '".LOG_LEVEL_LIST."';";
 ?>
 var ie = document.all?1:0;
 var n6 = document.getElementById&&!document.all?1:0;
@@ -53,17 +53,17 @@
 var mb_offset_left = 0;
 var mb_log = null;
 
-var mb_MapRequestSubFunctions = new Array();
-var mb_WfsReadSubFunctions = new Array();
-var mb_WfsWriteSubFunctions = new Array();
-var mb_MapRequestPreFunctions = new Array();
-var mb_FeatureInfoPreFunctions = new Array();
 var mb_PanSubElements = new Array();
-var mb_InitFunctions = new Array();
-var mb_MapObjectSubFunctions = new Array();
-var mb_GetScalePreFunctions = new Array();
+function mb_registerPanSubElement(elName){
+	var ind = mb_PanSubElements.length;
+	mb_PanSubElements[ind] = elName;
+}
+
 var mb_vendorSpecific = new Array();
-var mb_loadWmsSubFunctions = new Array();
+function mb_registerVendorSpecific(stringFunction){
+	mb_vendorSpecific[mb_vendorSpecific.length] = stringFunction;
+}
+
 var mb_security_proxy = "http://wms1.ccgis.de/mapbender/tools/security_proxy.php?mb_ows_security_proxy=";
 
 var mb_trans = new Image; 
@@ -165,7 +165,7 @@
    this.mapURL = new Array();
    for(var i=0; i<mb_MapObjectSubFunctions.length; i++){
       eval(mb_MapObjectSubFunctions[i]);
-   }   
+   }  
 }
 
 
@@ -436,9 +436,7 @@
 						newMapRequest +="</div>";
 					}
 				}
-				
 			}
-			
 			//prompt("",newMapRequest);
 			writeTag(mb_mapObj[i].frameName,mb_mapObj[i].elementName,newMapRequest);
 		}
@@ -453,7 +451,7 @@
 	
 	for(var i=0; i<mb_MapRequestPreFunctions.length; i++){
 		eval(mb_MapRequestPreFunctions[i]);
-	}
+	}	
 	for(var i=0; i<mb_mapObj.length; i++){
 		var newMapRequest = "";
 		if(mb_mapObj[i].frameName == frameName){
@@ -487,7 +485,7 @@
 					}
 					newMapURL += "EXCEPTIONS="+mb_mapObj[i].wms[ii].gui_wms_exceptionformat;
 					// add vendor-specific
-					for(var v=0; v<mb_vendorSpecific.length; v++){
+					for (var v = 0; v < mb_vendorSpecific.length; v++) {
 						var vendorSpecificString = eval(mb_vendorSpecific[v]); 
 						// if eval doesn't evaluate a function, the result is undefined.
 						// Sometimes it is necessary not to evaluate a function, for
@@ -528,7 +526,7 @@
 	}   
 	for(var i=0; i<mb_MapRequestSubFunctions.length; i++){
 		eval(mb_MapRequestSubFunctions[i]);
-	}   
+	}  
 }
 function mb_restateLayers(frameName,wms_id){
 	//alert(frameName + " / " + wms_id);
@@ -1133,7 +1131,7 @@
 		node = document;
 		if (frameName !== "") {
 			if (checkFrame()) {node = window.frames[frameName].document;}
-			else {alert("frame "+frameName+" doesn't exist.");}
+			else {var e = new Mb_exception("frame "+frameName+" doesn't exist.");}
 		}
 		return node;	
 	};
@@ -1206,77 +1204,7 @@
 	this.write("");
 };
 
-/*
- ***************************************************************************************
- *   register functions
- ***************************************************************************************
- */
 
-function mb_registerInitFunctions(stringFunction){
-	mb_InitFunctions[mb_InitFunctions.length] = stringFunction;
-}
-function mb_registerPanSubElement(elName){
-	var ind = mb_PanSubElements.length;
-	mb_PanSubElements[ind] = elName;
-}
-function mb_registerPreFunctions(stringFunction){
-	mb_MapRequestPreFunctions[mb_MapRequestPreFunctions.length] = stringFunction;
-}
-function mb_registerFeatureInfoPreFunctions(stringFunction){
-	mb_FeatureInfoPreFunctions[mb_FeatureInfoPreFunctions.length] = stringFunction;
-}
-function mb_registerSubFunctions(stringFunction){
-	mb_MapRequestSubFunctions[mb_MapRequestSubFunctions.length] = stringFunction;
-}
-function mb_registerWfsReadSubFunctions(stringFunction){
-	mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length] = stringFunction;
-}
-function mb_registerWfsWriteSubFunctions(stringFunction){
-	mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length] = stringFunction;
-}
-function  mb_registerMapObjectSubFunctions(stringFunction){
-	mb_MapObjectSubFunctions[mb_MapObjectSubFunctions.length] = stringFunction;
-}
-function  mb_registerGetScalePreFunctions(stringFunction){
-   mb_GetScalePreFunctions[mb_GetScalePreFunctions.length] = stringFunction;
-}
-function mb_registerVendorSpecific(stringFunction){
-   mb_vendorSpecific[mb_vendorSpecific.length] = stringFunction;
-}
-function mb_registerloadWmsSubFunctions(stringFunction){
-	mb_loadWmsSubFunctions[mb_loadWmsSubFunctions.length] = stringFunction;
-}
-function mb_removeFunctionFromArray(arrayname,stringFunction){
-	var length = eval(arrayname+".length");
-	for(var i=0; i<length; i++){
-		if(eval(arrayname+"["+i+"]") == stringFunction){
-			var newArray1 = eval(arrayname+".slice(0, "+(i-1)+")");
-			var newArray2 = eval(arrayname+".slice("+(i+1)+", "+length+")");
-			eval(arrayname + " = newArray1.concat(newArray2)");
-			i--;
-			length--;
-		}
-	}
-}
- 
-function mb_execloadWmsSubFunctions(){
-	for(var i=0; i<mb_loadWmsSubFunctions.length; i++){
-		eval(mb_loadWmsSubFunctions[i]);
-	}	
-}
-
-function mb_execWfsReadSubFunctions(geom) { 	 
-	for(var i=0; i<mb_WfsReadSubFunctions.length; i++){ 	 
-		mb_WfsReadSubFunctions[i](geom); 	 
-	} 	 
-}
-
-function mb_execWfsWriteSubFunctions() { 	 
-	for(var i=0; i<mb_WfsWriteSubFunctions.length; i++){
-		mb_WfsWriteSubFunctions[i](); 	 
-	} 	 
-}
-
 /*
  ***************************************************************************************
  *   Javascript exception handling
@@ -1284,30 +1212,34 @@
  */
 
 /**
- * abstract class, logs JavaScript events like errors, warnings etc.
+ * @class An abstract class, logs JavaScript events like errors, warnings etc.
+ *
+ * @constructor
  */
 var Mb_log = function() {
-	this.levelArray = log_levels.split(",");
-	this.log_level = mb_log_level;
-	this.log_js = mb_log_js;
+	var that = this;
 	
-	this.indexOfLevel = function(aLevel) {
-		for (var i = 0; i < this.levelArray.length; i++) {
-			if (aLevel == this.levelArray[i])  {
+	var levelArray = global_log_levels.split(",");
+	var log_level = global_mb_log_level;
+	var log_js = global_mb_log_js;
+	
+	var indexOfLevel = function(aLevel) {
+		for (var i = 0; i < levelArray.length; i++) {
+			if (aLevel == levelArray[i])  {
 				return i;
 			}
 		}
 		return false;
 	};
-	this.isValidLevel = function(aLevel) {
-		var isNotOff = typeof(mb_log_js) != 'undefined' && this.log_js != "off";
-		var levelIndex = this.indexOfLevel(aLevel);
-		var isAppropriate = (typeof(levelIndex)=='number' && levelIndex < this.indexOfLevel(this.log_level));
+	var isValidLevel = function(aLevel) {
+		var isNotOff = typeof(log_js) != 'undefined' && log_js != "off";
+		var levelIndex = indexOfLevel(aLevel);
+		var isAppropriate = (typeof(levelIndex)=='number' && levelIndex < indexOfLevel(log_level));
 		return (isNotOff && isAppropriate);
 	};
-	this.throwException = function (message, level) {
-		if (this.isValidLevel(level)) {
-			if (this.log_js == "on") {
+	var throwException = function (message, level) {
+		if (isValidLevel(level)) {
+			if (log_js == "on") {
 				try {
 					mb_ajaxWrap_post('../php/mb_js_exception.php', {level:level,text:message});
 				}
@@ -1315,10 +1247,10 @@
 					alert(e + ": " + message);
 				}
 			}
-			else if (mb_log_js == "alert") {
+			else if (log_js == "alert") {
 				alert(message);
 			}
-			else if (mb_log_js == "console") {
+			else if (log_js == "console") {
 				console.log("%s", message);
 			}
 		}
@@ -1543,8 +1475,247 @@
 }
 
 
+/**
+ * @class A List object is an array of arbitrary objects with additional methods. 
+ *
+ * @constructor
+ */
+var List = function() {
+	
+	/**
+	 * gets the number of elements in this {@link List}
+	 *
+	 * @member List
+	 * @returns number of elements in this {@link List}
+	 * @type Integer
+	 */
+	this.count = function() {
+		return this.list.length;
+	};
+
+	/**
+	 * deletes the object at index i; -1 refers to the last object in this {@link List}
+	 *
+	 * @member List
+	 * @param {Integer} i index
+	 */
+	this.del = function(i){
+		i = this.getIndex(i);
+		for(var z = i; z < this.count() - 1; z++){
+			this.list[z] = this.list[z+1];
+		}
+		this.list.length -= 1;
+	};
+
+	/**
+	 * empties this {@link List}
+	 *
+	 * @member List
+	 */
+	this.empty = function() {
+		while (this.list != null && this.count() > 0) {
+			this.list.pop();
+		}
+	}
+	
+	/**
+	 * @member List
+	 * @param {Integer} i index
+	 * @returns the object at index i; -1 refers to the last object in this {@link List}
+	 * @type Integer or false
+	 */
+	this.get = function(i) {
+		i = this.getIndex(i);
+		if (i !== false) {return this.list[i];}
+		return false;		
+	};
+	/**
+	 * adds a reference to item to this {@link List}.
+	 *
+	 * @member List
+	 * @param {Object} item an object
+	 */
+	this.add = function(item) {
+		this.list.push(item);
+	};
+	/**
+	 * adds a copy of item to this {@link List}.
+	 *
+	 * @member List
+	 * @param {Object} item an object
+	 */
+	this.addCopy = function(item) {
+		this.list.push(cloneObject(item));
+	};
+	/**
+	 * attaches the {@link List} aList to this {@link List}
+	 *
+	 * @member List
+	 * @param {List} aList another list
+	 */
+	this.union = function(aList) {
+		for (var i=0; i < aList.count(); i++) {this.addCopy(aList.get(i));}
+	};
+	/**
+	 * checks if the index is valid and returns it if it is; if i == -1, the correct index is retrieved.
+	 *
+	 * @member List
+	 * @private
+	 * @return Integer or false
+	 * @type Integer
+	 */
+	this.getIndex = function(i){ 
+		if ((i >= 0 && i < this.list.length) || (i*(-1)>0 && i*(-1) <= this.list.length)){
+			if (i >= 0) {return i;} else {return this.list.length+i;}
+		}
+		else {
+			var e = new Mb_exception("class List: function getIndex: member index " + i + " is not valid");
+			return false;
+		}
+	};
+	/**
+	 * @member List
+	 * @returns a {String} representation of this List
+	 * @type String
+	 */
+	this.toString = function(){
+		var str = "";
+		for (var i =0 ; i < this.count() ; i++){
+			str += this.get(i).toString();
+		}
+		return str;	
+	};	
+	
+	this.list = null;
+};
+
+
+
 /*
  ***************************************************************************************
+ *   register functions
+ ***************************************************************************************
+ */
+
+var mb_MapRequestSubFunctions = new Array();
+var mb_WfsReadSubFunctions = new Array();
+var mb_WfsWriteSubFunctions = new Array();
+var mb_MapRequestPreFunctions = new Array();
+var mb_FeatureInfoPreFunctions = new Array();
+var mb_InitFunctions = new Array();
+var mb_MapObjectSubFunctions = new Array();
+var mb_GetScalePreFunctions = new Array();
+var mb_loadWmsSubFunctions = new Array();
+
+function mb_registerInitFunctions(stringFunction){
+	mb_InitFunctions[mb_InitFunctions.length] = stringFunction;
+}
+function mb_registerPreFunctions(stringFunction){
+	mb_MapRequestPreFunctions[mb_MapRequestPreFunctions.length] = stringFunction;
+}
+function mb_registerFeatureInfoPreFunctions(stringFunction){
+	mb_FeatureInfoPreFunctions[mb_FeatureInfoPreFunctions.length] = stringFunction;
+}
+function mb_registerSubFunctions(stringFunction){
+	mb_MapRequestSubFunctions[mb_MapRequestSubFunctions.length] = stringFunction;
+}
+function mb_registerMapObjectSubFunctions(stringFunction){
+	mb_MapObjectSubFunctions[mb_MapObjectSubFunctions.length] = stringFunction;
+}
+function mb_registerGetScalePreFunctions(stringFunction){
+	mb_GetScalePreFunctions[mb_GetScalePreFunctions.length] = stringFunction;
+}
+function mb_registerloadWmsSubFunctions(stringFunction){
+	mb_loadWmsSubFunctions[mb_loadWmsSubFunctions.length] = stringFunction;
+}
+function mb_registerWfsReadSubFunctions(stringFunction){
+	mb_WfsReadSubFunctions[mb_WfsReadSubFunctions.length] = stringFunction;
+}
+function mb_registerWfsWriteSubFunctions(stringFunction){
+	mb_WfsWriteSubFunctions[mb_WfsWriteSubFunctions.length] = stringFunction;
+}
+function mb_removeFunctionFromArray(arrayname,stringFunction){
+	var length = eval(arrayname+".length");
+	for(var i=0; i<length; i++){
+		if(eval(arrayname+"["+i+"]") == stringFunction){
+			var newArray1 = eval(arrayname+".slice(0, "+(i-1)+")");
+			var newArray2 = eval(arrayname+".slice("+(i+1)+", "+length+")");
+			eval(arrayname + " = newArray1.concat(newArray2)");
+			i--;
+			length--;
+		}
+	}
+}
+ 
+function mb_execloadWmsSubFunctions(){
+	for(var i=0; i<mb_WfsWriteSubFunctions.length; i++){
+		eval(mb_loadWmsSubFunctions[i]); 	 
+	} 	 
+}
+
+function mb_execWfsReadSubFunctions(geom) { 	 
+	for(var i=0; i<mb_WfsReadSubFunctions.length; i++){ 	 
+		mb_WfsReadSubFunctions[i](geom); 	 
+	} 	 
+}
+
+function mb_execWfsWriteSubFunctions() { 	 
+	for(var i=0; i<mb_WfsWriteSubFunctions.length; i++){
+		mb_WfsWriteSubFunctions[i](); 	 
+	} 	 
+}
+
+/*
+ * first draft of a redesign
+ *
+var FunctionArray = function() {
+	this.list = [];
+
+	this.register = function (aFunction) {
+		this.add(aFunction);
+	}
+	this.execute = function () {
+		for (var i = 0; i < this.count(); i++) {
+			var aFunction = this.get(i);
+			console.log("execute: %s", this);
+			if (typeof(aFunction) == 'function') {
+				aFunction();
+			}
+			else if (typeof(aFunction) == 'string') {
+				eval(aFunction);
+			}
+			else {
+				var e = new mb_exception("FunctionArray.execute: Invalid parameter: " + aFunction);
+			}
+		}
+	}
+	this.remove = function (functionString) {
+		var listLength = this.count();
+		for (var i = listLength - 1; i >= 0; i--) {
+			if (this.get(i) == functionString){
+				this.del(i);
+			}
+		}
+	}
+}
+
+FunctionArray.prototype = new List();
+
+var mbInitFunctions = new FunctionArray();
+var mbMapRequestSubFunctions = new FunctionArray();
+var mbWfsReadSubFunctions = new FunctionArray();
+var mbWfsWriteSubFunctions = new FunctionArray();
+var mbMapRequestPreFunctions = new FunctionArray();
+var mbFeatureInfoPreFunctions = new FunctionArray();
+var mbInitFunctions = new FunctionArray();
+var mbMapObjectSubFunctions = new FunctionArray();
+var mbGetScalePreFunctions = new FunctionArray();
+var mbloadWmsSubFunctions = new FunctionArray();
+
+*/
+
+/*
+ ***************************************************************************************
  *   deprecated functions
  ***************************************************************************************
  */
@@ -1585,9 +1756,6 @@
 	}
 	return newElement;
 }
-
-
-
 <?php
 $con = db_connect($DBSERVER,$OWNER,$PW);
 db_select_db(DB,$con);



More information about the Mapbender_commits mailing list