var xmlStr; var xmlhttp; var xmlChecked = ""; var requestUrl = ""; var idFuncion = ""; var idFuncion_bis = ""; function SetFieldValue(name, value, query) { var target = ""; var content = target + "" + value + ""; return query.replace(target, content); } function DeleteContent(layer, cod_field, cod) { var editorWS = root + "calleditor2.aspx?func=Delete&projectID=" + prjID + "&layerName=" + layer + "&whereClause=" + cod_field + "='" + cod + "'"; downloadScript (editorWS, "downloadHandler()", "myresult"); } function OpenMapEditor(layer, cod_field, cod,typeField,tipoContenido, subtype, subtipoContenido,zoom) { // var editorURL = root + "emapstd.aspx?CFG=GUIA&isEditor=false&scope="+scope+"&LANG="+lang+"&PRJID="+prjID+"&LAYER=" + layer +"&LOCATE=" + layer + "::" + cod_field + "=" + cod + "::ToScale::" + zoom; var editorURL = root + "emapstd.aspx?CFG=GUIA&isEditor=false&scope="+scope+"&LAND="+lang+"&PRJID="+prjID+"&LOCATE=" + layer + "::" + cod_field + "=" + cod + "::ToScale::" + zoom; var ancho = 900; var alto = 570; var posicionx=0; var posiciony=0; if (window.screen){ //posicionx = ((screen.width - ancho)/2)-50;cerdanyola //posiciony = ((screen.height - alto)/2)+30;cerdanyola posicionx = ((screen.width - ancho)/2)+10; posiciony = ((screen.height - alto)/2)-35; } //alert("URL="+editorURL); eMapWindow = open(editorURL,null,"toolbar=no,location=no,directories=no,status=no,menubar=no,resizable=no,scrollbars=no,width="+ancho+",height="+alto+",top="+posicionx+",left="+posiciony+""); } function downloadScript( url, loadEvt, varName ) { try { eval ( varName ); varName = null; } catch (e) { } var newScript = document.createElement("SCRIPT") ; newScript.id = "downloadedScript" + Math.round (Math.random () * 1000000) ; var result = document.body.appendChild( newScript ) ; result.type="text/javascript" ; result.language="JavaScript" ; result.src = url ; window.setTimeout ("downloadScriptHandler ('"+loadEvt+"','"+varName+"')", 250); } function downloadScriptHandler ( loadEvt , varName) { try { xmlStr = eval (varName); eval ( loadEvt ); } catch (e){ window.setTimeout ("downloadScriptHandler ('"+loadEvt+"','"+varName+"')", 250); } } function downloadHandler(xmlStr) { // Process error. if(xmlStr.indexOf("ERROR") != -1) { var ERROR_START = ""; var ERROR_END = ""; var start = xmlStr.indexOf(ERROR_START); if(start != -1) { start += ERROR_START.length + 1; var end = xmlStr.indexOf(ERROR_END); var error = xmlStr.substring(start, end); alert(error); } else alert("Unknown error "); } } function checkForResponseError(xmlStr) { // Process error. if(xmlStr.indexOf("ERROR") != -1) { var ERROR_START = ""; var ERROR_END = ""; var start = xmlStr.indexOf(ERROR_START); if(start != -1) { start += ERROR_START.length + 1; var end = xmlStr.indexOf(ERROR_END); var error = xmlStr.substring(start, end); alert(error); } else alert("Unknown error "); return true; } return false; } function checkLocation() { //this simple script sets the document.domain property whenever necessary var loc; loc = location.hostname; if (loc.indexOf('.') != -1) { document.domain = loc.substring (loc.indexOf('.')+1, loc.length); } } function saveLocation(cod_field, cod,type_field, type, subtype_field, subtype,v_gestor,desc_field,desc){ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); //internet explorer //Recupera el xml del objeto XMLHTTP Request que se crea en eMap al abrir MiVentana requestUrl = root+"callViewer.asmx/InternalCall2?ControlID=eMapSTDuiControl&ProjectName="+prjID+"&Name=KOSA_edXmlStr"; xmlhttp.open("GET", requestUrl, true); //xmlhttp.setRequestHeader("Content-Type","text/xml"); xmlhttp.send(null); xmlhttp.onreadystatechange=function fnStartInit() { if (xmlhttp.readyState==4) { xmlChecked = xmlhttp.responseText; window.clearTimeout(idFuncion); if (xmlChecked!=""){ xmlChecked = cleanXML(xmlChecked); }else{ return; } if (xmlChecked=="-1"){return;} if(typeof(xmlChecked) == 'undefined' || xmlChecked==""){ alert("It was impossible to record the data in the map editor. "); return; } xmlChecked = SetFieldValue(cod_field, cod, xmlChecked); xmlChecked = SetFieldValue(type_field, type, xmlChecked); xmlChecked = SetFieldValue(subtype_field, subtype, xmlChecked); //Este sólo sería necesario cuando tengamos workflow xmlChecked = SetFieldValue(v_gestor, "1", xmlChecked); xmlChecked = SetFieldValue(desc_field, desc, xmlChecked); //alert(xmlChecked); // Call web service. var editorWS = root + "calleditor.asmx/SaveFromCheckedXML?xmlChecked=" + xmlChecked; //con esto, se ha creado la url de la que hay que descargar la info //alert(editorWS); //Descargamos el XML resultado de la llamada al WS var xmlResponse = ""; xmlhttp.open("GET", editorWS, true); xmlhttp.send(null); xmlhttp.onreadystatechange=function fnStartInit_bis() { if (xmlhttp.readyState==4) { xmlResponse = xmlhttp.responseText; window.clearTimeout(idFuncion_bis); //Ya tenemos el resultado de la llamada al editor, por lo que hay que analizar el XML por si hay algún error en la grabación de los datos. Para ello, //analizaremos la respuesta como se hace en la función downloadHandler(). if (checkForResponseError ( xmlResponse )==false){ // alert("La llamada no tiene errores. La respuesta es: "); // alert(xmlResponse); }else{ alert("Error in the webservice call "); } //alert("Proceso completado"); }idFuncion_bis=window.setTimeout("fnStartInit_bis()",0); } } idFuncion=window.setTimeout("fnStartInit()",0); }; } //El xml tiene dos tags RESPONSE; hay que quitar el externo. Tb elimina retornos de carro function cleanXML(strxml){ if(strxml.indexOf("RESPONSE") != -1){ var RESPONSE_START = ""; var RESPONSE_END = ""; var start = strxml.indexOf(RESPONSE_START); //Guarda lo que venga antes del response para luego concatenarlo var prestr = strxml.substring(0,start); //limpia los saltos de linea prestr = filtrarSaltos(prestr); if(start != -1){ start += RESPONSE_START.length + 1; //Hay dos me interesa quedarme el primero var first_end = strxml.indexOf(RESPONSE_END); var end = first_end + RESPONSE_END.length + 1; strxml = strxml.substring(start, end); }else{ alert("Error when processing the geographical coordenates. "); return -1; } }else{ alert("Error when processing the geographical coordenates. "); return -1; } //limpia los saltos de linea strxml = filtrarSaltos(strxml); if (strxml==RESPONSE_END){ //Esto ocurre cuando se cierra el editor de mapas sin salvar nada return -1; } //concatena la cabecera strxml = prestr + strxml; return strxml; } function filtrarSaltos(value){ if(value != ""){ var aux=""; var aux2=""; var mivariable = new String(value); var posicionfinal=0 while (mivariable.indexOf("\n",0) != -1){ posicionfinal=mivariable.indexOf("\n",0); aux = mivariable.substring(0,posicionfinal); aux2 = mivariable.substring(posicionfinal+1,mivariable.length); mivariable = aux + aux2; } return mivariable; }else{ return ""; } } //Esta función es la que podría usarse para borrar el alfanumérico con javascript //Pero se ha decidido hecerlo con java (en la clase) donde se tiene myor control de lo que se hace function deleteLocation(layer,where){ var xmlhttp2=new ActiveXObject("Microsoft.XMLHTTP"); //internet explorer //Recupera el xml del objeto XMLHTTP Request que se crea en eMap al abrir MiVentana requestUrl = root+"callEditor.asmx/Delete?projectID="+prjID+"&layerName="+layer+"&whereClause="+where; //alert(requestUrl); var xmlResponse = ""; xmlhttp2.open("GET", requestUrl, true); xmlhttp2.onreadystatechange=function() { if (xmlhttp2.readyState==4) { xmlResponse = xmlhttp2.responseText; } } xmlhttp2.send(null); //Ya tenemos el resultado de la llamada al editor, por lo que hay que analizar el XML por si hay algún error en la grabación de los datos. Para ello, //analizaremos la respuesta como se hace en la función downloadHandler(). if (checkForResponseError ( xmlResponse )==false){ // alert("La llamada no tiene errores. La respuesta es: "); // alert(xmlResponse); }else{ alert("Error in the webservice call "); } }