OpenLayers.IMAGE_RELOAD_ATTEMPTS=0; OpenLayers.DOTS_PER_INCH=25.4/0.28; OpenLayers.Util.onImageLoadErrorColor="transparent"; OpenLayers.Feature.Vector.style["default"]=OpenLayers.Util.applyDefaults({fillColor:"red",fillOpacity:1,strokeColor:"red",pointRadius:8},OpenLayers.Feature.Vector.style["default"]); OpenLayers.Feature.Vector.style["select"]=OpenLayers.Util.applyDefaults({fillColor:"yellow",fillOpacity:1,strokeColor:"yellow"},OpenLayers.Feature.Vector.style["default"]); OpenLayers.Feature.Vector.style["temporary"]=OpenLayers.Util.applyDefaults({fillColor:"#DDDDDD",fillOpacity:1,strokeColor:"#DDDDDD"},OpenLayers.Feature.Vector.style["default"]); if(!_3dgis){ _3dgis={}; } if(!_3dgis.cwf){ _3dgis.cwf={}; } _3dgis.cwf.OpenLayers={}; _3dgis.cwf.OpenLayers.Layer={}; _3dgis.cwf.OpenLayers.Layer.Vector=OpenLayers.Class(OpenLayers.Layer.Vector,{initialize:function(_1,_2){ this.EVENT_TYPES=[]; this.EVENT_TYPES=this.EVENT_TYPES.concat(OpenLayers.Layer.prototype.EVENT_TYPES); OpenLayers.Layer.Vector.prototype.initialize.apply(this,arguments); },highlightFeature:function(_3){ for(var i=0;ithis.maxRatio){ _f=this.minRatio*_e; }else{ if(_10<=this.minRatio){ _f=this.maxRatio*_e; } } var _11; if(this.ovmap.getProjection()!=this.map.getProjection()){ _11=this.map.center.clone(); _11.transform(this.map.getProjectionObject(),this.ovmap.getProjectionObject()); }else{ _11=this.map.center; } this.ovmap.setCenter(_11,this.ovmap.getZoomForResolution(_f*this.resolutionFactor)); } this.updateRectToMap(); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.OverviewMap"}); _3dgis.cwf.OpenLayers.Control.WheelZoom=OpenLayers.Class(OpenLayers.Control,{mouseWheelOptions:null,initialize:function(_12){ this.handlers={}; this.mouseWheelOptions={interval:100}; OpenLayers.Control.prototype.initialize.apply(this,arguments); },destroy:function(){ this.deactivate(); OpenLayers.Control.prototype.destroy.apply(this,arguments); },activate:function(){ this.handlers.wheel.activate(); return OpenLayers.Control.prototype.activate.apply(this,arguments); },deactivate:function(){ this.handlers.wheel.deactivate(); return OpenLayers.Control.prototype.deactivate.apply(this,arguments); },draw:function(){ this.handlers.wheel=new OpenLayers.Handler.MouseWheel(this,{"up":this.wheelUp,"down":this.wheelDown},this.mouseWheelOptions); this.activate(); },wheelChange:function(evt,_13){ var _14=this.map.getZoom(); var _15=this.map.getCenter(); var _16=_15; var _17=this.map.getZoom()+Math.round(_13); _17=Math.max(_17,0); _17=Math.min(_17,this.map.getNumZoomLevels()); if(_17===_14){ return; } var _18=this.map.getSize(); var _19=_18.w/2-evt.xy.x; var _1a=evt.xy.y-_18.h/2; var _1b=this.map.baseLayer.getResolutionForZoom(_17); var _1c=this.map.getLonLatFromPixel(evt.xy); if(_1c!=null){ _16=new OpenLayers.LonLat(_1c.lon+_19*_1b,_1c.lat+_1a*_1b); } this.map.setCenter(_16,_17); },wheelUp:function(evt,_1d){ this.wheelChange(evt,_1d||1); },wheelDown:function(evt,_1e){ this.wheelChange(evt,_1e||-1); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.WheelZoom"}); _3dgis.cwf.OpenLayers.Control.MousePosition=OpenLayers.Class(OpenLayers.Control,{decimalNumber:5,tolerance:10,xNode:null,yNode:null,initialize:function(_1f){ OpenLayers.Control.prototype.initialize.apply(this,arguments); },destroy:function(){ if(this.map){ this.map.events.unregister("mousemove",this,this.redraw); } OpenLayers.Control.prototype.destroy.apply(this,arguments); },setMap:function(){ OpenLayers.Control.prototype.setMap.apply(this,arguments); this.map.events.register("mousemove",this,this.redraw); },redraw:function(evt){ var _20; if(evt==null){ _20=new OpenLayers.LonLat(0,0); }else{ if(this.lastXy==null||Math.abs(evt.xy.x-this.lastXy.x)>this.tolerance||Math.abs(evt.xy.y-this.lastXy.y)>this.tolerance){ this.lastXy=evt.xy; return; } _20=this.map.getLonLatFromPixel(evt.xy); if(!_20){ return; } if(this.displayProjection){ _20.transform(this.map.getProjectionObject(),this.displayProjection); } this.lastXy=evt.xy; } this.xNode.innerHTML=_20.lon.toFixed(this.decimalNumber); this.yNode.innerHTML=_20.lat.toFixed(this.decimalNumber); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.MousePosition"}); _3dgis.cwf.OpenLayers.Control.AutoPan=OpenLayers.Class(OpenLayers.Control,{tolerance:100,panDelta:20,index:0,onmouseleaveHandle:null,initialize:function(){ OpenLayers.Control.prototype.initialize.apply(this,arguments); },activate:function(){ this.map.events.register("mousemove",this,this.pan); this.map.events.register("mouseout",this,this.stopPan); return OpenLayers.Control.prototype.activate.apply(this,arguments); },deactivate:function(){ this.stopPan(); this.map.events.unregister("mousemove",this,this.pan); this.map.events.unregister("mouseout",this,this.stopPan); return OpenLayers.Control.prototype.deactivate.apply(this,arguments); },destroy:function(){ if(this.map){ this.map.events.unregister("mousemove",this,this.redraw); this.map.events.unregister("mouseout",this,this.redraw); } OpenLayers.Control.prototype.destroy.apply(this,arguments); },setMap:function(){ OpenLayers.Control.prototype.setMap.apply(this,arguments); },pan:function(evt){ clearTimeout(this.handle); var _21=0; var _22=0; var _23=dojo.position(this.map.div); this.tolerance=(_23.w*0.05<_23.h*0.05)?_23.w*0.05:_23.h*0.05; this.panDelta=this.tolerance; var _24=_23.x; var _25=_23.y; var _26=_24+_23.w; var _27=_25+_23.h; var x=evt.clientX; var y=evt.clientY; if((x-_24)this.tolerance||_29.getHeight()>this.tolerance)){ _2a=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_29.left,_29.bottom)); _2b=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_29.right,_29.top)); }else{ _2a=this.map.getLonLatFromPixel(_29); _2b=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_29.x+this.tolerance,_29.y-this.tolerance)); } this.call(new OpenLayers.Bounds(_2a.lon,_2a.lat,_2b.lon,_2b.lat)); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.BBoxSelection"}); _3dgis.cwf.OpenLayers.Control.ClickSelection=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,call:null,tolerance:1,initialize:function(_2c){ OpenLayers.Control.prototype.initialize.apply(this,[_2c]); this.call=_2c.call; },draw:function(){ this.handler=new OpenLayers.Handler.Click(this,{click:this.exec},{keyMask:this.keyMask}); },exec:function(evt){ var _2d=evt.xy; var _2e=this.map.getLonLatFromPixel(_2d); var _2f=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_2d.x+this.tolerance,_2d.y-this.tolerance)); this.call(new OpenLayers.Bounds(_2e.lon,_2e.lat,_2f.lon,_2f.lat)); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.BBoxSelection"}); _3dgis.cwf.OpenLayers.Control.ZoomBox=OpenLayers.Class(OpenLayers.Control,{type:OpenLayers.Control.TYPE_TOOL,out:false,alwaysZoom:false,keyEventHandle:null,draw:function(){ this.handler=new OpenLayers.Handler.Box(this,{done:this.zoomBox},{keyMask:this.keyMask}); this.keyEventHandle=dojo.connect(dojo.doc,"onkeypress",this,function(e){ if(e.charOrCode==dojo.keys.ESCAPE){ dojo.disconnect(this.keyEventHandle); this.handler.removeBox(); } }); },zoomBox:function(_30){ if(_30 instanceof OpenLayers.Bounds){ var _31=null; if(!this.out){ var _32=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_30.left,_30.bottom)); var _33=this.map.getLonLatFromPixel(new OpenLayers.Pixel(_30.right,_30.top)); _31=new OpenLayers.Bounds(_32.lon,_32.lat,_33.lon,_33.lat); }else{ var _34=Math.abs(_30.right-_30.left); var _35=Math.abs(_30.top-_30.bottom); var _36=Math.min((this.map.size.h/_35),(this.map.size.w/_34)); var _37=this.map.getExtent(); var _38=this.map.getLonLatFromPixel(_30.getCenterPixel()); var _39=_38.lon-(_37.getWidth()/2)*_36; var _3a=_38.lon+(_37.getWidth()/2)*_36; var _3b=_38.lat-(_37.getHeight()/2)*_36; var _3c=_38.lat+(_37.getHeight()/2)*_36; _31=new OpenLayers.Bounds(_39,_3b,_3a,_3c); } var _3d=this.map.getZoom(); this.map.zoomToExtent(_31); if(_3d===this.map.getZoom()&&this.alwaysZoom===true){ this.map.zoomTo(_3d+(this.out?-1:1)); } }else{ if(!this.out){ this.map.setCenter(this.map.getLonLatFromPixel(_30),this.map.getZoom()+1); }else{ this.map.setCenter(this.map.getLonLatFromPixel(_30),this.map.getZoom()-1); } } },CLASS_NAME:"_3dgis.cwf.OpenLayers.Control.ZoomBox"}); _3dgis.cwf.OpenLayers.Layer.ServerRequest=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,initialize:function(_3e,url,_3f,_40){ var _41=[]; _41.push(_3e,url,_3f,_40); OpenLayers.Layer.Grid.prototype.initialize.apply(this,_41); OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS); if(!this.noMagic&&this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){ if((_40==null)||(!_40.isBaseLayer)){ this.isBaseLayer=false; } } },clone:function(obj){ if(obj==null){ obj=new _3dgis.cwf.OpenLayers.Layer.ServerRequest(this.name,this.url,this.params,this.getOptions()); } obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]); return obj; },getURL:function(_42){ _42=this.adjustBounds(_42); var _43=this.getImageSize(); var _44={}; var _45=false; _44.bbox=this.encodeBBOX?_42.toBBOX(null,_45):_42.toArray(_45); _44.width=_43.w; _44.height=_43.h; var _46=this.getFullRequestString(_44); return _46; },CLASS_NAME:"_3dgis.cwf.OpenLayers.Layer.ServerRequest"}); _3dgis.cwf.OpenLayers.Layer.GeoProxyRequest=OpenLayers.Class(OpenLayers.Layer.Grid,{isBaseLayer:true,singleTile:true,initialize:function(_47,url,_48,_49){ var _4a=[]; _4a.push(_47,url,_48,_49); OpenLayers.Layer.Grid.prototype.initialize.apply(this,_4a); OpenLayers.Util.applyDefaults(this.params,this.DEFAULT_PARAMS); if(!this.noMagic&&this.params.TRANSPARENT&&this.params.TRANSPARENT.toString().toLowerCase()=="true"){ if((_49==null)||(!_49.isBaseLayer)){ this.isBaseLayer=false; } } },clone:function(obj){ if(obj==null){ obj=new _3dgis.cwf.OpenLayers.Layer.GeoProxyRequest(this.name,this.url,this.params,this.getOptions()); } obj=OpenLayers.Layer.Grid.prototype.clone.apply(this,[obj]); return obj; },getURL:function(_4b){ _4b=this.adjustBounds(_4b); var _4c=this.getImageSize(); var _4d={}; _4d.bbox=_4b.toBBOX(null,false); _4d.width=_4c.w; _4d.height=_4c.h; _4d.ns=this.geoProxyNs; _4d.id=this.geoProxyId; var _4e=this.getFullRequestString(_4d); return _4e; },CLASS_NAME:"_3dgis.cwf.OpenLayers.Layer.GeoProxyRequest"}); _3dgis.cwf.OpenLayers.Layer.GeoProxyCachedRequest=OpenLayers.Class(OpenLayers.Layer.WMTS,{isBaseLayer:true,getURL:function(_4f){ var url,_50; _4f=this.adjustBounds(_4f); if(!this.tileFullExtent||this.tileFullExtent.intersectsBounds(_4f)){ var _51=_4f.getCenterLonLat(); var _52=this.getTileInfo(_51); _50={cached:true,ns:this.geoProxyNs,id:this.geoProxyId,y:_52.row,x:_52.col,z:this.matrix.identifier}; } var _53=OpenLayers.Util.getParameterString(_50); return OpenLayers.Util.urlAppend(this.url,_53); },CLASS_NAME:"_3dgis.cwf.OpenLayers.Layer.GeoProxyCachedRequest"}); OpenLayers.Format.SimpleJSON=OpenLayers.Class(OpenLayers.Format.JSON,{read:function(_54,_55,_56){ var _57=new OpenLayers.Format.WKT(); var _58=dojo.fromJson(_54); var _59=[]; for(var i=0;i<_58.data.length;i++){ var _5a=_58.data[i]; var _5b=_57.read(_5a.geometry); _5b.fid=_5b.id; _59.push(_5b); } return _59; }}); OpenLayers.Control.LoadingPanel=OpenLayers.Class(OpenLayers.Control,{counter:0,maximized:false,visible:true,initialize:function(_5c){ OpenLayers.Control.prototype.initialize.apply(this,[_5c]); },setVisible:function(_5d){ this.visible=_5d; if(_5d){ OpenLayers.Element.show(this.div); }else{ OpenLayers.Element.hide(this.div); } },getVisible:function(){ return this.visible; },hide:function(){ this.setVisible(false); },show:function(){ this.setVisible(true); },toggle:function(){ this.setVisible(!this.getVisible()); },addLayer:function(evt){ if(evt.layer){ evt.layer.events.register("loadstart",this,this.increaseCounter); evt.layer.events.register("loadend",this,this.decreaseCounter); } },setMap:function(map){ OpenLayers.Control.prototype.setMap.apply(this,arguments); this.map.events.register("preaddlayer",this,this.addLayer); for(var i=0;i0){ if(!this.maximized&&this.visible){ this.maximizeControl(); } } },decreaseCounter:function(){ if(this.counter>0){ this.counter--; } if(this.counter===0){ if(this.maximized&&this.visible){ this.minimizeControl(); } } },draw:function(){ OpenLayers.Control.prototype.draw.apply(this,arguments); return this.div; },minimizeControl:function(evt){ this.div.style.display="none"; this.maximized=false; if(evt!=null){ OpenLayers.Event.stop(evt); } },maximizeControl:function(evt){ this.div.style.display="block"; this.maximized=true; if(evt!=null){ OpenLayers.Event.stop(evt); } },destroy:function(){ if(this.map){ this.map.events.unregister("preaddlayer",this,this.addLayer); if(this.map.layers){ for(var i=0;i=0;--i){ _67=_66[i].geometry; if((_67 instanceof OpenLayers.Geometry.Polygon||_67 instanceof OpenLayers.Geometry.MultiPolygon)&&_67.intersects(_65)){ _68=_66[i]; this.control.layer.removeFeatures([_68],{silent:true}); this.control.layer.events.registerPriority("sketchcomplete",this,this.finalizeInteriorRing); this.control.layer.events.registerPriority("sketchmodified",this,this.enforceTopology); _68.geometry.addComponent(this.line.geometry); this.polygon=_68; this.drawingHole=true; break; } } } if(this.drawingHole!==true){ return; } OpenLayers.Handler.Path.prototype.addPoint.apply(this,arguments); }}); _3dgis.cwf.OpenLayers.Control.LogoOverlay=OpenLayers.Class(OpenLayers.Control,{logoUrl:null,logoSrc:null,logoTitle:null,logoTemplate:"\"{logoTitle}\"/",logoHtml:null,element:null,initialize:function(_69){ OpenLayers.Control.prototype.initialize.apply(this,arguments); },destroy:function(){ OpenLayers.Control.prototype.destroy.apply(this,arguments); },draw:function(){ OpenLayers.Control.prototype.draw.apply(this,arguments); if(!this.element){ this.div.left=""; this.div.top=""; this.element=this.div; } if(this.logoHtml!=null){ this.div.innerHTML=this.logoHtml; }else{ var _6a=dojo.replace(this.logoTemplate,{logoUrl:this.logoUrl,logoSrc:this.logoSrc,logoTitle:this.logoTitle}); this.div.innerHTML=_6a; } return this.div; },CLASS_NAME:"_3dgis.OpenLayers.Control.LogoOverlay"}); dojo.provide("_3dgis.cwf.dialog.StyleEditor"); dojo.require("_3dgis.wf.dialog.ImageGalleryDialog"); dojo.declare("_3dgis.cwf.dialog.StyleEditor",null,{imageGalleryDialog:null,dialog:null,style:null,templates:null,operatorStore:null,currentLayer:null,prefix:"styleEditor-",donwloadActionUrl:"file/download/imageGallery?galleryName=icons&url=",geometryTypes:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.operatorOptions=[{label:_3dgis.settings.i18n["condition.contains"],value:"LIKE"},{label:_3dgis.settings.i18n["condition.equalTo"],value:"EQ"},{label:_3dgis.settings.i18n["condition.notEqualTo"],value:"NEQ"},{label:_3dgis.settings.i18n["condition.lessThan"],value:"LT"},{label:_3dgis.settings.i18n["condition.lessThanOrEqual"],value:"LTE"},{label:_3dgis.settings.i18n["condition.greaterThan"],value:"GT"},{label:_3dgis.settings.i18n["condition.greaterThanOrEqual"],value:"GTE"}]; },postConstructor:function(){ this.templates={}; this.geometryTypes=["point","line","polygon"]; },init:function(_6b){ this.ruleCounter=1; this.operatorStore=new dojo.data.ItemFileReadStore({data:{identifier:"value",items:this.operatorOptions,label:"label"}}); dojo.publish("loadingMessage/start"); var def=_3dgis.wf.util.ajaxGetAction("styleEditor/json/get-layerStyle",{layerName:_6b},{},{showLoading:false}); def.then(dojo.hitch(this,function(_6c){ this.logger.debug("response",_6c); this.style=_6c.data.style; this.layerInfo=_6c.data.layerInfo; if(!this.dialog){ this.dialog=new dijit.Dialog(); dojo.connect(this.dialog,"onLoad",this,function(){ dojo.connect(dijit.byId(this.prefix+"button-close"),"onClick",this,function(){ this.dialog.hide(); }); dojo.connect(dijit.byId(this.prefix+"button-save"),"onClick",this,this.save); dojo.connect(dijit.byId(this.prefix+"button-addRule"),"onClick",this,this.addRule); dojo.connect(dijit.byId(this.prefix+"button-removeRule"),"onClick",this,this.removeRule); dojo.connect(dijit.byId(this.prefix+"button-loadDefault"),"onClick",this,this.loadDefault); dojo.connect(dijit.byId(this.prefix+"button-saveAsDefault"),"onClick",this,this.saveAsDefault); this.tabContainerEditor=dijit.byId(this.prefix+"stackContainer"); }); dojo.connect(this.dialog,"onShow",this,function(){ dojo.byId("styleEditor-header-text").innerHTML=this.layerInfo.layerLabel; this.getRule(0); }); this.dialog.set("title",_3dgis.settings.i18n["styleEditor"]); this.dialog.setContent(this.getHtml("init")); } if(this.tabContainerEditor.hasChildren()){ this.tabContainerEditor.destroyDescendants(); } try{ var _6d=dojo.clone(this.style.styleRules); for(var i=0;i<_6d.length;i++){ _6d[i].id=i; if(!_6d[i].title){ var _6e=i+1; _6d[i].title=_3dgis.settings.i18n["rule"]+" "+_6e; } } if(_6d.length===0){ dijit.byId(this.prefix+"button-removeRule").set("disabled",true); }else{ dijit.byId(this.prefix+"button-removeRule").set("disabled",false); } this.ruleStore=new dojo.store.Memory({data:_6d}); this.logger.debug("rule store",this.ruleStore); this.createRuleSelector(); this.show(); } catch(error){ this.logger.error(error); } dojo.publish("loadingMessage/stop"); })); },createRuleSelector:function(){ this.logger.debug("create rule selector"); var _6f=this.ruleStore.query(); if(_6f.length<=1){ dijit.byId(this.prefix+"button-removeRule").set("disabled",true); } if(this.ruleSelector){ this.ruleSelector.forInItems(dojo.hitch(this,function(_70,id,map){ this.logger.debug("destory node",id); dojo.destroy(id); })); } var _71=[]; for(var i=0;i<_6f.length;i++){ _71.push({id:i,name:_6f[i].title,label:_6f[i].title,type:"rule"}); } this.logger.debug("ruleData",_71); this.ruleSelectorStore=new dojo.store.Memory({data:_71}); this.logger.debug("ruleSelectorStore",this.ruleSelectorStore); this.ruleSelector=new dojo.dnd.Source(this.prefix+"ruleSelector",{accept:["rule"]}); dojo.connect(this.ruleSelector,"onDndDrop",this,this.refreshRulePositions); this.ruleSelectorData=[]; var _6f=this.ruleSelectorStore.query(); for(var i=0;i<_6f.length;i++){ var _72={data:_6f[i],type:["rule"]}; this.ruleSelectorData.push(_72); } this.ruleSelector.insertNodes(false,this.ruleSelectorData); this.ruleSelectorHandles=[]; this.ruleSelector.forInItems(dojo.hitch(this,function(_73,id,map){ dojo.byId(id).innerHTML=_73.data.label; if(_73.data.id===0){ this.ruleSelector._addItemClass(dojo.byId(id),"Selected"); this.ruleSelector.selection[id]=1; } var _74=dojo.connect(dojo.byId(id),"onclick",this,function(evt){ var id=evt.target.id; var _75=this.ruleSelector.getItem(id); var _76=_75.data; var _77=_76.id; if(_77!=this.currentRuleIndex){ this.currentRuleIndex=_77; this.getRule(this.currentRuleIndex); } }); this.ruleSelectorHandles.push(_74); })); this.currentRuleIndex=0; },getRule:function(_78){ this.logger.debug("getRule",_78); var _79=dijit.byId("contentPaneRule"+_78); if(!_79){ var _7a="rule"; var _7b={"RULE_NUMBER":_78}; _79=new dijit.layout.ContentPane({id:"contentPaneRule"+_78,selected:true}); this.logger.debug("contentPane",_79); _79.setContent(this.getHtml(_7a,_7b)); _79.startup(); this.tabContainerEditor.addChild(_79); var _7c=this.ruleStore.get(_78); dijit.byId("formStyle_properties_"+_78+"_styleRule_title").set("value",_7c.title); dijit.byId("formStyle_properties_"+_78+"_styleRule_notes").set("value",_7c.notes); dijit.byId("formStyle_properties_"+_78+"_styleRule_filter_chaining").onChange=dojo.hitch(this,function(_7d){ this.setConditions(_7d); },_78); dijit.byId("formStyle_properties_"+_78+"_styleRule_minScale").set("regExp",dojo.number.regexp()); dijit.byId("formStyle_properties_"+_78+"_styleRule_minScale").set("value",this.formatScale(_7c.minScale)); dijit.byId("formStyle_properties_"+_78+"_styleRule_maxScale").set("regExp",dojo.number.regexp()); dijit.byId("formStyle_properties_"+_78+"_styleRule_maxScale").set("value",this.formatScale(_7c.maxScale)); dijit.byId("formStyle_properties_"+_78+"_styleRule_filter_chaining").set("value",_7c.filter.chaining); var _7e=null; if(_7c.filter.conditions){ for(var i=0;i<_7c.filter.conditions.length;i++){ _7e=_7c.filter.conditions[i]; this.addCondition(_78,_7e); } this.initRule(_78); } this.initRuleButtons(_78); for(var i=0;i<_7c["textSymbols"].length;i++){ var _7f=this.addTextSymbol(_78); var _80=_7c["textSymbols"][i]; tmp={}; tmp["textSymbol"]=_80; dijit.byId("formTextStyle_"+_78+"_"+_7f).set("value",tmp); } for(var i=0;i_9e){ _9e=_a0.id; } } var _a1=_9e+1; this.logger.debug("new rule index",_a1); var _a2=_a1+1; var _a3=_3dgis.settings.i18n["rule"]+" "+_a2; var _a4={id:_a1,name:_a3,label:_a3,type:"rule"}; this.ruleSelectorStore.put(_a4); this.refreshRuleSelector(); var _a5={id:_a1,title:_a3,pointSymbols:[],lineSymbols:[],polygonSymbols:[],textSymbols:[],minScale:null,maxScale:null,notes:"",filter:{chaining:"none",conditions:[]},position:_9f.length+1}; this.ruleStore.put(_a5); this.logger.debug("rule store",this.ruleStore); var _a6="rule"; vars={"RULE_NUMBER":_a1}; var _a7=new dijit.layout.ContentPane({id:"contentPaneRule"+_a1,selected:true}); _a7.setContent(this.getHtml(_a6,vars)); dijit.byId("formStyle_properties_"+_a1+"_styleRule_title").set("value",_a3); this.tabContainerEditor.addChild(_a7,3); dijit.byId("formStyle_properties_"+_a1+"_styleRule_filter_chaining").onChange=dojo.hitch(this,function(_a8){ this.setConditions(_a8); },_a1); this.initRuleButtons(_a1); this.initRule(_a1); dijit.byId(this.prefix+"button-removeRule").set("disabled",false); },removeRule:function(){ this.ruleSelectorStore.remove(this.currentRuleIndex); this.refreshRuleSelector(); this.ruleStore.remove(this.currentRuleIndex); this.logger.debug("rule store",this.ruleStore); var _a9=this.ruleStore.query(); if(_a9.length===0){ this.currentRuleIndex=0; dijit.byId(this.prefix+"button-removeRule").set("disabled",true); }else{ for(var i=0;i<_a9.length;i++){ var _aa=_a9[i]; if(_aa.idobj.width){ _cc=obj.height; } this.currentDimensionWidget.set("value",_cc); },addTextSymbol:function(_cd){ var _ce=dijit.byId("tabContainerTextSymbol"+_cd).getChildren().length+1; var _cf=new dijit.layout.ContentPane({id:"contentPaneTextSymbol_label_"+_cd+"_"+_ce,title:_3dgis.settings.i18n["symbol"]+" "+_ce,closable:true,selected:true}); var _d0={"RULE_NUMBER":_cd,"SYMBOL_NUMBER":_ce}; _cf.setContent(this.getHtml("text",_d0)); dijit.byId("tabContainerTextSymbol"+_cd).addChild(_cf,3); this.initRule(_cd); dijit.byId("formTextStyle_"+_cd+"_"+_ce+"_textSymbol_labelPlacement").onChange=dojo.hitch(this,function(_d1,_d2){ this.selectLabelPlacement(_d1,_d2); },_cd,_ce); dijit.byId("formTextStyle_"+_cd+"_"+_ce+"_textSymbol_haloPresencetrue").onChange=dojo.hitch(this,function(_d3,_d4){ this.selectHaloPresence(_d3,_d4); },_cd,_ce); return _ce; },initRule:function(_d5){ this.logger.debug("initRule "+_d5); this.setConditions(_d5); },initSymbols:function(_d6,_d7){ this.logger.debug("initSymbols",_d6); var _d8=dijit.byId("tabContainerSymbol"+_d6).getChildren().length; this.logger.debug("numSymbols",_d8); switch(_d7){ case "point": this.setPointStyle(_d6,_d8); break; case "line": this.setLineStyle(_d6,_d8); break; case "polygon": this.setPolygonStyle(_d6,_d8); break; } this.setLabelStyle(_d6); },initRuleButtons:function(_d9){ this.logger.debug("init rule buttons",_d9); var _da=null; dijit.byId(this.prefix+"rule"+_d9+"_addCondition").onClick=dojo.hitch(this,this.addCondition,_d9,_da); var _db=dijit.byId(this.prefix+"rule"+_d9+"_addSymbol"); var _dc=_db.label; var _dd=_db.name; var _de=_db.iconClass; var _df=_db.domNode; var _e0=new dijit.Menu({style:"display: none;"}); var _e1=this.layerInfo.layerGeometryType; switch(_e1){ case "point": dijit.byId(this.prefix+"rule"+_d9+"_addSymbol").onClick=dojo.hitch(this,function(_e2){ this.addSymbol(_e2,"point"); },_d9); break; case "linestring": var _e3=new dijit.MenuItem({label:_3dgis.settings.i18n["styleEditor.pointSymbol"],iconClass:"dijitMenuItemIcon pointSymbol",onClick:dojo.hitch(this,function(_e4){ this.addSymbol(_e4,"point"); },_d9)}); var _e5=new dijit.MenuItem({label:_3dgis.settings.i18n["styleEditor.lineSymbol"],iconClass:"dijitMenuItemIcon pointSymbol",onClick:dojo.hitch(this,function(_e6){ this.addSymbol(_e6,"line"); },_d9)}); _e0.addChild(_e3); _e0.addChild(_e5); _db.destroyRecursive(true); var _e7=new dijit.form.DropDownButton({label:_dc,name:_dd,iconClass:_de,dropDown:_e0,id:_db.id},_df); _e7.startup(); break; case "polygon": var _e3=new dijit.MenuItem({label:_3dgis.settings.i18n["styleEditor.pointSymbol"],iconClass:"dijitMenuItemIcon pointSymbol",onClick:dojo.hitch(this,function(_e8){ this.addSymbol(_e8,"point"); },_d9)}); var _e5=new dijit.MenuItem({label:_3dgis.settings.i18n["styleEditor.lineSymbol"],iconClass:"dijitMenuItemIcon pointSymbol",onClick:dojo.hitch(this,function(_e9){ this.addSymbol(_e9,"line"); },_d9)}); var _ea=new dijit.MenuItem({label:_3dgis.settings.i18n["styleEditor.polygonSymbol"],iconClass:"dijitMenuItemIcon pointSymbol",onClick:dojo.hitch(this,function(_eb){ this.addSymbol(_eb,"polygon"); },_d9)}); _e0.addChild(_e3); _e0.addChild(_e5); _e0.addChild(_ea); _db.destroyRecursive(true); var _e7=new dijit.form.DropDownButton({label:_dc,name:_dd,iconClass:_de,dropDown:_e0,id:_db.id},_df); _e7.startup(); break; } dijit.byId(this.prefix+"rule"+_d9+"_addLabel").onClick=dojo.hitch(this,function(_ec){ this.addTextSymbol(_ec); },_d9); },setPointStyle:function(_ed,_ee){ var _ef="formStyle_"+_ed+"_"+_ee+"_pointSymbol_"; var val=dijit.byId(_ef+"style").get("value"); if(val=="mark"){ this.hideElement(_ef+"mark",false); this.hideIcon(_ef+"icon",true); this.hideElement(_ef+"fillColor",false); this.hideElement(_ef+"fillOpacity",false); this.hideElement(_ef+"borderColor",false); this.hideElement(_ef+"borderOpacity",false); this.hideElement(_ef+"borderWidth",false); }else{ if(val=="icon"){ this.hideElement(_ef+"mark",true); this.hideIcon(_ef+"icon",false); this.hideElement(_ef+"fillColor",true); this.hideElement(_ef+"fillOpacity",true); this.hideElement(_ef+"borderColor",true); this.hideElement(_ef+"borderOpacity",true); this.hideElement(_ef+"borderWidth",true); } } },setLineStyle:function(_f0,_f1){ var _f2="formStyle_"+_f0+"_"+_f1+"_lineSymbol_"; var val=dijit.byId(_f2+"style").get("value"); if(val=="solid"){ this.hideElement(_f2+"color",false); this.hideElement(_f2+"opacity",false); this.hideElement(_f2+"width",false); this.hideElement(_f2+"dashWidth",true); this.hideElement(_f2+"dashDistance",true); this.hideElement(_f2+"dashOffset",true); this.hideElement(_f2+"hatching",true); this.hideIcon(_f2+"icon",true); this.hideElement(_f2+"iconSize",true); this.hideElement(_f2+"hatchingSize",true); this.hideElement(_f2+"strokeLineCap",false); this.hideElement(_f2+"strokeLineJoin",false); }else{ if(val=="dashed"){ this.hideElement(_f2+"color",false); this.hideElement(_f2+"opacity",false); this.hideElement(_f2+"width",false); this.hideElement(_f2+"dashWidth",false); this.hideElement(_f2+"dashDistance",false); this.hideElement(_f2+"dashOffset",false); this.hideElement(_f2+"hatching",true); this.hideIcon(_f2+"icon",true); this.hideElement(_f2+"iconSize",true); this.hideElement(_f2+"hatchingSize",true); this.hideElement(_f2+"strokeLineCap",false); this.hideElement(_f2+"strokeLineJoin",false); }else{ if(val=="hatching"){ this.hideElement(_f2+"color",false); this.hideElement(_f2+"opacity",false); this.hideElement(_f2+"width",false); this.hideElement(_f2+"dashWidth",true); this.hideElement(_f2+"dashDistance",true); this.hideElement(_f2+"dashOffset",true); this.hideElement(_f2+"hatching",false); this.hideIcon(_f2+"icon",true); this.hideElement(_f2+"iconSize",true); this.hideElement(_f2+"hatchingSize",false); this.hideElement(_f2+"strokeLineCap",false); this.hideElement(_f2+"strokeLineJoin",false); }else{ if(val=="icon"){ this.hideElement(_f2+"color",true); this.hideElement(_f2+"opacity",true); this.hideElement(_f2+"width",true); this.hideElement(_f2+"dashWidth",true); this.hideElement(_f2+"dashDistance",true); this.hideElement(_f2+"dashOffset",true); this.hideElement(_f2+"hatching",true); this.hideIcon(_f2+"icon",false); this.hideElement(_f2+"iconSize",false); this.hideElement(_f2+"hatchingSize",true); this.hideElement(_f2+"strokeLineCap",true); this.hideElement(_f2+"strokeLineJoin",true); } } } } },setPolygonStyle:function(_f3,_f4){ var _f5="formStyle_"+_f3+"_"+_f4+"_polygonSymbol_"; var val=dijit.byId(_f5+"fillStyle").get("value"); var _f6=false; if(val=="none"){ _f6=true; } this.hideElement(_f5+"fillColor",_f6); this.hideElement(_f5+"fillOpacity",_f6); this.hideElement(_f5+"fillHatching",_f6); this.hideElement(_f5+"fillHatchingColor",_f6); this.hideElement(_f5+"fillHatchingWidth",_f6); this.hideElement(_f5+"fillHatchingSize",_f6); this.hideElement(_f5+"fillHatchingOpacity",_f6); this.hideIcon(_f5+"icon",_f6); this.hideElement(_f5+"iconSize",_f6); if(val=="solid"){ this.hideElement(_f5+"fillHatching",true); this.hideElement(_f5+"fillHatchingColor",true); this.hideElement(_f5+"fillHatchingWidth",true); this.hideElement(_f5+"fillHatchingSize",true); this.hideElement(_f5+"fillHatchingOpacity",true); this.hideIcon(_f5+"icon",true); this.hideElement(_f5+"iconSize",true); }else{ if(val=="hatching"){ this.hideElement(_f5+"fillColor",true); this.hideElement(_f5+"fillOpacity",true); this.hideIcon(_f5+"icon",true); this.hideElement(_f5+"iconSize",true); this.hideIcon(_f5+"icon",true); this.hideElement(_f5+"iconSize",true); }else{ if(val=="solid_hatching"){ this.hideIcon(_f5+"icon",true); this.hideElement(_f5+"iconSize",true); }else{ if(val=="icon"){ this.hideElement(_f5+"fillHatching",true); this.hideElement(_f5+"fillHatchingColor",true); this.hideElement(_f5+"fillHatchingWidth",true); this.hideElement(_f5+"fillHatchingSize",true); this.hideElement(_f5+"fillHatchingOpacity",true); this.hideElement(_f5+"fillColor",true); this.hideElement(_f5+"fillOpacity",true); } } } } var val=dijit.byId(_f5+"borderStyle").get("value"); _f6=false; if(val=="none"){ _f6=true; } this.hideElement(_f5+"borderColor",_f6); this.hideElement(_f5+"borderOpacity",_f6); this.hideElement(_f5+"borderWidth",_f6); this.hideElement(_f5+"borderDashLength",_f6); this.hideElement(_f5+"borderDashDistance",_f6); this.hideElement(_f5+"borderDashOffset",_f6); this.hideElement(_f5+"borderHatching",_f6); this.hideElement(_f5+"borderHatchingSize",_f6); this.hideIcon(_f5+"borderIcon",_f6); this.hideElement(_f5+"borderIconSize",_f6); switch(val){ case "dashed": this.hideElement(_f5+"borderHatching",true); this.hideElement(_f5+"borderHatchingSize",true); this.hideIcon(_f5+"borderIcon",true); this.hideElement(_f5+"borderIconSize",true); break; case "solid": this.hideElement(_f5+"borderDashLength",true); this.hideElement(_f5+"borderDashDistance",true); this.hideElement(_f5+"borderDashOffset",true); this.hideElement(_f5+"borderHatching",true); this.hideElement(_f5+"borderHatchingSize",true); this.hideIcon(_f5+"borderIcon",true); this.hideElement(_f5+"borderIconSize",true); break; case "hatching": this.hideElement(_f5+"borderDashLength",true); this.hideElement(_f5+"borderDashDistance",true); this.hideElement(_f5+"borderDashOffset",true); this.hideIcon(_f5+"borderIcon",true); this.hideElement(_f5+"borderIconSize",true); break; case "icon": this.hideElement(_f5+"borderDashLength",true); this.hideElement(_f5+"borderDashDistance",true); this.hideElement(_f5+"borderDashOffset",true); this.hideElement(_f5+"borderHatching",true); this.hideElement(_f5+"borderHatchingSize",true); this.hideElement(_f5+"borderColor",true); this.hideElement(_f5+"borderOpacity",true); this.hideElement(_f5+"borderWidth",true); this.hideIcon(_f5+"borderIcon",false); this.hideElement(_f5+"borderIconSize",false); break; } },setLabelStyle:function(_f7){ this.logger.debug("setLabelStyle"); var _f8=dijit.byId("tabContainerTextSymbol"+_f7).getChildren().length; for(var i=1;i<=_f8;i++){ this.selectLabelPlacement(_f7,i); this.selectHaloPresence(_f7,i); } },selectIcon:function(_f9,_fa,_fb,_fc){ if(_fc){ this.iconField=_fc; }else{ this.iconField="icon"; } this.selectedIconStyleType=_f9; this.selectedIconRuleNumber=_fa; this.selectedIconSymbolNumber=_fb; },selectLabelPlacement:function(_fd,_fe){ this.logger.debug("selectLabelPlacement"); var _ff="formTextStyle_"+_fd+"_"+_fe+"_textSymbol_"; var val=dijit.byId(_ff+"labelPlacement").get("value"); this.hideElement(_ff+"labelAnchorPointX",(val!="point")); this.hideElement(_ff+"labelAnchorPointY",(val!="point")); this.hideElement(_ff+"labelDisplacementX",(val!="point")); this.hideElement(_ff+"labelDisplacementY",(val!="point")); this.hideElement(_ff+"labelRotation",(val!="point")); this.hideElement(_ff+"labelPerpendicularOffset",(val=="point")); },selectHaloPresence:function(_100,_101){ this.logger.debug("selectHaloPresence"); var _102="formTextStyle_"+_100+"_"+_101+"_textSymbol_"; var val=dijit.byId(_102+"haloPresencetrue").get("value")==="true"; this.hideElement(_102+"haloRadius",!val); this.hideElement(_102+"haloColor",!val); this.hideElement(_102+"haloOpacity",!val); },setConditions:function(_103){ this.logger.debug("setConditions",_103); var _104="formStyle_properties_"+_103+"_styleRule_filter_"; var _105=dijit.byId(_104+"chaining").get("value"); this.logger.debug("value",_105); if(_105=="none"){ dojo.byId("formStyleFilter_"+_103).style.display="none"; dijit.byId(this.prefix+"rule"+_103+"_addCondition").set("disabled",true); }else{ if(dojo.byId("tableFilterRule_"+_103).rows.length==1){ this.addCondition(_103); } dojo.byId("formStyleFilter_"+_103).style.display=""; dijit.byId(this.prefix+"rule"+_103+"_addCondition").set("disabled",false); } },addCondition:function(_106,_107){ var _108=dojo.byId("tableFilterRule_"+_106); var _109=_108.rows.length; var _10a="formStyleFilter_"+_106+"_condition_"; var tr=dojo.doc.createElement("tr"); tr.id="tableFilterRule_"+_106+"_"+_109; var td1=dojo.doc.createElement("td"); var div=dojo.doc.createElement("div"); div.id=_10a+_109+"_property"; td1.appendChild(div); tr.appendChild(td1); var _10b=new dijit.form.TextBox({},div); _10b.startup(); var td2=dojo.doc.createElement("td"); div=dojo.doc.createElement("div"); div.setAttribute("class","operator"); div.id=_10a+_109+"_operator"; td2.appendChild(div); tr.appendChild(td2); var _10c=new dijit.form.Select({store:this.operatorStore},div); _10c.startup(); var td3=dojo.doc.createElement("td"); div=dojo.doc.createElement("div"); div.id=_10a+_109+"_value"; td3.appendChild(div); tr.appendChild(td3); var _10d=new dijit.form.TextBox({required:true},div); var td4=dojo.doc.createElement("td"); if(_109>1){ var _10e=dojo.doc.createElement("div"); _10e.id=_10a+_109+"_removeButton"; dojo.addClass(_10e,"removeCondition"); _10e.onclick=dojo.hitch(this,this.removeCondition,_106,_109); td4.appendChild(_10e); } tr.appendChild(td4); _108.appendChild(tr); if(_107){ _10b.set("value",_107.property); _10c.set("value",_107.operator); _10d.set("value",_107.value); } },removeCondition:function(_10f,_110){ if(_110>1){ this.logger.debug("removeCondition"); var _111="formStyleFilter_"+_10f+"_condition_"; dijit.byId(_111+_110+"_property").destroy(); dijit.byId(_111+_110+"_operator").destroy(); dijit.byId(_111+_110+"_value").destroy(); dojo.destroy(dojo.byId(_111+_110+"_removeButton")); dojo.destroy(dojo.byId("tableFilterRule_"+_10f+"_"+_110)); if(_110==1){ dijit.byId("formStyle_properties_"+_10f+"_styleRule_filter_"+"chaining").set("value","none"); } } },hideElement:function(_112,flag){ var elem=dijit.byId(_112); if(flag){ elem.domNode.parentNode.parentNode.style.display="none"; }else{ elem.domNode.parentNode.parentNode.style.display=""; } elem.set("disabled",flag); },hideIcon:function(_113,flag){ if(flag){ dojo.byId(_113+"_cont").parentNode.parentNode.style.display="none"; }else{ dojo.byId(_113+"_cont").parentNode.parentNode.style.display=""; } dijit.byId(_113).set("disabled",flag); },getHtml:function(_114,vars){ this.logger.debug("getHtml "+_114); var html=""; if(this.templates[_114]){ html=this.templates[_114]; }else{ _3dgis.wf.util.ajaxGet("styleEditor/html/"+_114+"?layerId="+this.layerInfo.layerId,{},dojo.hitch(this,function(data){ html=data; }),{handleAs:"text",sync:true},false); this.templates[_114]=html; } if(vars){ for(var key in vars){ var _115=new RegExp(key,"g"); html=html.replace(_115,vars[key]); } } return html; },loadDefault:function(){ _3dgis.objectManager.get("confirmDialog").show(_3dgis.settings.i18n["confirmLoadDefaultStyle"],dojo.hitch(this,function(){ if(this.tabContainerEditor.hasChildren()){ this.tabContainerEditor.destroyDescendants(); } this.dialog.set("title",_3dgis.settings.i18n["styleEditor"]+": "+this.layerInfo.layerLabel); this.dialog.setContent(this.getHtml("init")); var def=_3dgis.wf.util.ajaxPostAction("styleEditor/json/loadDefault-layerStyle",{layerName:this.layerInfo.layerName},{},{showLoading:false}); def.then(dojo.hitch(this,function(_116){ this.style=_116.data.style; this.layerInfo=_116.data.layerInfo; try{ var _117=dojo.clone(this.style.styleRules); for(var i=0;i<_117.length;i++){ _117[i].id=i; if(!_117[i].title){ var _118=ruleIndex+1; _117[i].title=_3dgis.settings.i18n["rule"]+" "+_118; } } this.ruleStore=new dojo.store.Memory({data:_117}); this.logger.debug("rule store",this.ruleStore); this.createRuleSelector(); this.getRule(0); } catch(error){ this.logger.error(error); } })); })); },saveAsDefault:function(){ _3dgis.objectManager.get("confirmDialog").show(_3dgis.settings.i18n["confirmSaveAsDefaultStyle"],dojo.hitch(this,function(){ var _119=this.getStyle(); var def=_3dgis.wf.util.ajaxPostAction("styleEditor/json/saveAsDefault-layerStyle",{layerId:this.layerInfo.layerName,styleString:dojo.toJson(_119)},{},{showLoading:false}); def.then(dojo.hitch(this,function(_11a){ })); })); },refreshRulePositions:function(){ this.logger.debug("refresh rule positions"); var _11b=this.ruleSelector.getAllNodes(); for(var i=0;i<_11b.length;i++){ var node=_11b[i]; this.logger.debug("node",node); var item=this.ruleSelector.getItem(node.id); this.logger.debug("item",item); var _11c=i+1; this.logger.debug("rule",item.data.label); this.logger.debug("position",_11c); var rule=this.ruleStore.get(item.data.id); rule.position=_11c; } this.logger.debug("rule store",this.ruleStore); },formatScale:function(_11d){ var _11e=null; var _11f=dojo.i18n.getLocalization("dojo.cldr","number",dojo.locale); if(_11d!=null){ _11e=dojo.number.format(_11d); if(_11e!=null){ _11e=_11e.replace(_11f.group,""); } } return _11e; }}); dojo.provide("_3dgis.cwf.controller.EditingToolbar"); dojo.declare("_3dgis.cwf.controller.EditingToolbar",null,{subscriptions:null,buttonDefs:null,currentOptions:null,floatingPane:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.subscriptions=[]; this.buttonDefs={}; },show:function(_120){ this.logger.debug("show"); this.currentOptions=_120; if(!this.floatingPane){ var node=document.createElement("div"); node.id="map-editingToolbarFloatingPane"; node.innerHTML="
"; dojo.byId("init-floaterContainer").appendChild(node); this.floatingPane=new dojox.layout.FloatingPane({title:_3dgis.settings.i18n["map.editingToolbar.title"],dockable:false,maxable:false,closable:false,resizable:false},node); this.floatingPane.startup(); this.toolbar=new dijit.Toolbar({},dojo.byId("map-editingToolbar")); this.toolbar.startup(); this.createWidgets(); dojo.connect(window,"onresize",this,this.changePosition); this.changePosition(); this.init(); }else{ this.floatingPane.domNode.style.display=""; this.init(); } },createWidgets:function(){ this.addButton("modifyGeometry",{geometryTypes:[],isToggle:true,isMutuallyExclusive:true}); this.addButton("addGeometry",{geometryTypes:["multipolygon","multiline","multipoint"],isToggle:true,isMutuallyExclusive:true}); this.addButton("removeGeometry",{geometryTypes:["multipolygon","multiline","multipoint"],isToggle:true,isMutuallyExclusive:true}); this.addButton("mergePolygon",{geometryTypes:["multipolygon"],isToggle:true,isMutuallyExclusive:true}); this.addButton("addHole",{geometryTypes:["polygon","multipolygon"],isToggle:true,isMutuallyExclusive:true}); this.addButton("removeHole",{geometryTypes:["polygon","multipolygon"],isToggle:true,isMutuallyExclusive:true}); },addButton:function(_121,_122){ this.logger.debug("addButton",_121); var _123={showLabel:false,iconClass:"DojoToolbar "+_121,checked:false,onClick:dojo.hitch(this,this.onClickButton,_121),title:_3dgis.settings.i18n["map.editingToolbar."+_121]}; if(_122.isToggle===true){ this.buttonDefs[_121]={button:new dijit.form.ToggleButton(_123),options:_122}; }else{ this.buttonDefs[_121]={button:new dijit.form.Button(_123),options:_122}; } this.buttonDefs[_121].button.startup(); this.toolbar.addChild(this.buttonDefs[_121].button); },onClickButton:function(_124){ if(this.currentButtonName!=_124){ this.currentButtonName=_124; this.logger.debug("onClickButton",_124); dojo.publish("editingToolbar/"+_124,[{buttonName:_124}]); var _125=this.buttonDefs[_124]; if(_125.options.isMutuallyExclusive){ for(var b in this.buttonDefs){ if(this.buttonDefs[b].options.isMutuallyExclusive){ this.buttonDefs[b].button.set("checked",false); } } } } this.buttonDefs[_124].button.set("checked",true); },changePosition:function(){ this.floatingPane.resize({w:180,h:50}); var top=dojo.position(dojo.byId("map-mapContentPane")).y+10; var _126=dojo.position(dojo.byId("map-mapContentPane")).w-186; this.floatingPane.bringToTop(); this.floatingPane.domNode.style.top=top+"px"; this.floatingPane.domNode.style.left=_126+"px"; },init:function(){ this.logger.debug("init"); this.currentButtonName=null; for(var _127 in this.buttonDefs){ var _128=this.buttonDefs[_127]; var _129=false; if(_128.options.geometryTypes.length===0){ _129=true; }else{ for(var i=0;i<_128.options.geometryTypes.length;i++){ if(_128.options.geometryTypes[i]==this.currentOptions.geometryType){ _129=true; break; } } } _128.button.set("disabled",!_129); } this.onClickButton("modifyGeometry"); },close:function(){ this.floatingPane.domNode.style.display="none"; }}); dojo.provide("_3dgis.cwf.manager.editing.BaseControl"); dojo.declare("_3dgis.cwf.manager.editing.BaseControl",null,{mapManager:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); },postConstructor:function(_12a){ dojo.mixin(this,_12a); },init:function(){ }}); dojo.provide("_3dgis.cwf.manager.editing.ModifyGeometryControl"); dojo.require("_3dgis.cwf.manager.editing.BaseControl"); dojo.declare("_3dgis.cwf.manager.editing.ModifyGeometryControl",_3dgis.cwf.manager.editing.BaseControl,{postConstructor:function(_12b){ dojo.mixin(this,_12b); this.editingLayer=this.mapManager.getLayer("editing"); this.modifyControl=new _3dgis.cwf.OpenLayers.Control.ModifyFeature(this.editingLayer); this.mapManager.addControl(this.modifyControl); },init:function(_12c){ if(_12c.constraints&&_12c.constraints.fixedVertices){ this.modifyControl.fixedVertices=_12c.constraints.fixedVertices; }else{ this.modifyControl.fixedVertices=[]; } },select:function(){ this.modifyControl.selectFeature(this.editingLayer.features[0]); this.modifyControl.activate(); },unselect:function(){ this.modifyControl.deactivate(); }}); dojo.provide("_3dgis.cwf.manager.editing.AddHoleControl"); dojo.require("_3dgis.cwf.manager.editing.BaseControl"); dojo.declare("_3dgis.cwf.manager.editing.AddHoleControl",_3dgis.cwf.manager.editing.BaseControl,{postConstructor:function(_12d){ dojo.mixin(this,_12d); this.editingLayer=this.mapManager.getLayer("editing"); this.holeControl=new _3dgis.cwf.OpenLayers.Control.DrawSingleFeature(this.editingLayer,_3dgis.cwf.OpenLayers.Handler.Polygon,{handlerOptions:{addHole:true},afterExec:dojo.hitch(this,this.stopEditingHole)}); this.mapManager.addControl(this.holeControl); },select:function(){ this.logger.debug("add hole"); this.editingInfoManager.onStartAddHole(); this.updateOldFeatures(); this.holeControl.activate(); },unselect:function(){ this.holeControl.deactivate(); },stopEditingHole:function(){ this.logger.debug("stop editing hole"); this.editingInfoManager.onStopAddHole(); var _12e=[]; var _12f=this.editingLayer.features[0]; for(var i=0;i2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_152.toFixed(2)+" "+this.layer.units; }else{ if(this.geometryType===6){ _155=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(_151.vertex.parent.components)); _152=_155.getLength(); area=_155.getArea(); this.logger.debug("current selected length",_152); this.logger.debug("current selected area",area); _153=_151.feature.geometry.parent.getArea(); _154=_151.feature.geometry.parent.getLength(); if(_151.feature.modified!=null){ _153=_151.feature.modified.geometry.parent.getArea()-_151.feature.modified.geometry.getArea()+area; _154=_151.feature.modified.geometry.parent.getLength()-_151.feature.modified.geometry.getLength()+_152; } this.logger.debug("total length",_154); this.logger.debug("total area",_153); _156=_3dgis.settings.i18n["area"]+": "+area.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_152.toFixed(2)+" "+this.layer.units+" "+_3dgis.settings.i18n["totalArea"]+": "+_153.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["totalPerimeter"]+": "+_154.toFixed(2)+" "+this.layer.units; } } } dojo.publish("map/currentMeasureChanged",[_156]); },sketchModifiedHandler:function(_157){ this.logger.debug("event",_157); var area,_158,_159,_15a,_15b,_15c,_15d,i,_15e; if(this.geometryType===2){ _15b=new OpenLayers.Geometry.LineString(_157.vertex.parent.components); _158=_15b.getLength(); this.logger.debug("length",_158); _15e=_3dgis.settings.i18n["length"]+": "+_158.toFixed(2)+" "+this.layer.units; }else{ if(this.geometryType===3){ _15b=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(_157.vertex.parent.components)); _158=_15b.getLength(); area=_15b.getArea(); this.logger.debug("length",_158); this.logger.debug("area",area); if(this.isHole){ _159=_157.feature.geometry.getArea()-area; _15a=_157.feature.geometry.getLength()-_158; this.logger.debug("total length",_15a); this.logger.debug("total area",_159); } _15e=_3dgis.settings.i18n["area"]+": "+area.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_158.toFixed(2)+" "+this.layer.units; }else{ if(this.geometryType===6){ _15b=new OpenLayers.Geometry.Polygon(new OpenLayers.Geometry.LinearRing(_157.vertex.parent.components)); _158=_15b.getLength(); area=_15b.getArea(); this.logger.debug("length",_158); this.logger.debug("area",area); _15d=this.mapManager.getLayer(this.editingLayer).getFeaturesByAttribute(); _159=0; _15a=0; for(i=0;i<_15d.length;i++){ _15c=_15d[i]; this.logger.debug("feature",_15c); _159=_159+_15c.geometry.getArea(); _15a=_15a+_15c.geometry.getLength(); } _159=_159+area; _15a=_15a+_158; this.logger.debug("total length",_15a); this.logger.debug("total area",_159); _15e=_3dgis.settings.i18n["area"]+": "+area.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_158.toFixed(2)+" "+this.layer.units+" "+_3dgis.settings.i18n["totalArea"]+": "+_159.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["totalPerimeter"]+": "+_15a.toFixed(2)+" "+this.layer.units; } } } dojo.publish("map/currentMeasureChanged",[_15e]); },recalculate:function(){ var _15f,_160,_161,_162,i,_163; _162=this.mapManager.getLayer(this.editingLayer).getFeaturesByAttribute(); _15f=0; _160=0; for(i=0;i<_162.length;i++){ _161=_162[i]; this.logger.debug("feature",_161); _15f=_15f+_161.geometry.getArea(); _160=_160+_161.geometry.getLength(); } this.logger.debug("total length",_160); this.logger.debug("total area",_15f); _163=_3dgis.settings.i18n["totalArea"]+": "+_15f.toFixed(2)+" "+this.layer.units+"2"+", "+_3dgis.settings.i18n["totalPerimeter"]+": "+_160.toFixed(2)+" "+this.layer.units; dojo.publish("map/currentMeasureChanged",[_163]); }}); dojo.provide("_3dgis.cwf.manager.editing.CreateGeometryManager"); dojo.declare("_3dgis.cwf.manager.editing.CreateGeometryManager",null,{mapManager:null,editingControls:null,editingOptions:null,constructor:function(_164){ dojo.mixin(this,_164); this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.editingLayer=this.mapManager.getLayer("editing"); this.editControls={}; this.editControls["point"]=new _3dgis.cwf.OpenLayers.Control.DrawSingleFeature(this.editingLayer,OpenLayers.Handler.Point,{afterExec:dojo.hitch(this,this.stopEditing)}); this.mapManager.addControl(this.editControls["point"]); this.editControls["line"]=new _3dgis.cwf.OpenLayers.Control.DrawSingleFeature(this.editingLayer,OpenLayers.Handler.Path,{afterExec:dojo.hitch(this,this.stopEditing)}); this.mapManager.addControl(this.editControls["line"]); this.editControls["polygon"]=new _3dgis.cwf.OpenLayers.Control.DrawSingleFeature(this.editingLayer,OpenLayers.Handler.Polygon,{afterExec:dojo.hitch(this,this.stopEditing)}); this.mapManager.addControl(this.editControls["polygon"]); this.editControls["multipolygon"]=new OpenLayers.Control.DrawFeature(this.editingLayer,OpenLayers.Handler.Polygon,{afterExec:dojo.hitch(this,this.stopEditing)}); this.mapManager.addControl(this.editControls["multipolygon"]); this.editControls["rect"]=new _3dgis.cwf.OpenLayers.Control.DrawSingleFeature(this.editingLayer,OpenLayers.Handler.RegularPolygon,{handlerOptions:{irregular:true},afterExec:dojo.hitch(this,this.stopEditing)}); this.mapManager.addControl(this.editControls["rect"]); this.logger.debug("end constructor"); },create:function(opt){ this.editingOptions=opt; this.editControls[this.editingOptions.geometryType].activate(); },stopEditing:function(){ this.finishEditing(); },finishEditing:function(){ this.logger.debug("finish editing"); this.editControls[this.editingOptions.geometryType].deactivate(); dojo.publish("map/editing/create/finish"); },restartEditing:function(){ this.logger.debug("restart editing"); this.editingLayer.destroyFeatures(); this.editControls[this.editingOptions.geometryType].activate(); },cancelEditing:function(){ this.logger.debug("cancel editing"); this.editingLayer.destroyFeatures(); this.editControls[this.editingOptions.geometryType].deactivate(); }}); dojo.provide("_3dgis.cwf.manager.EditingManager"); dojo.require("_3dgis.cwf.manager.editing.CreateGeometryManager"); dojo.require("_3dgis.cwf.manager.editing.ModifyGeometryManager"); dojo.require("_3dgis.cwf.manager.editing.EditingInfoManager"); dojo.declare("_3dgis.cwf.manager.EditingManager",null,{mapManager:null,layerManager:null,selectionManager:null,mapControlManager:null,editingInfoManager:null,autoPanControl:null,editingStarted:false,hidePanels:true,constructor:function(_165){ dojo.mixin(this,_165); this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.logger.debug("constructor",_165); this.wktParser=new OpenLayers.Format.WKT(); this.editingLayer=this.mapManager.getLayer("editing"); this.autoPanControl=new _3dgis.cwf.OpenLayers.Control.AutoPan(); this.mapManager.addControl(this.autoPanControl); this.editingInfoManager=new _3dgis.cwf.manager.editing.EditingInfoManager({mapManager:this.mapManager,editingLayer:"editing"}); this.createGeometryManager=new _3dgis.cwf.manager.editing.CreateGeometryManager({mapManager:this.mapManager}); this.modifyGeometryManager=new _3dgis.cwf.manager.editing.ModifyGeometryManager({mapManager:this.mapManager,editingInfoManager:this.editingInfoManager}); dojo.subscribe("map/editing/create/start",this,this.onCreateStart); dojo.subscribe("map/editing/modify/start",this,this.onModifyStart); dojo.subscribe("map/editing/create/finish",this,this.onCreateFinish); if(this.hidePanels){ if(dijit.byId("map-searchContentPane")){ this.searchStandbyWidget=new dojox.widget.Standby({target:"map-searchContentPane",centerIndicator:"text",text:""}); document.body.appendChild(this.searchStandbyWidget.domNode); this.searchStandbyWidget.startup(); } if(dijit.byId("map-rightContainer")){ this.rightTabStandbyWidget=new dojox.widget.Standby({target:"map-rightContainer",centerIndicator:"text",text:""}); document.body.appendChild(this.rightTabStandbyWidget.domNode); this.rightTabStandbyWidget.startup(); } } },onCreateStart:function(opt){ this.isCreating=true; this.currentManager=this.createGeometryManager; this.logger.debug("create geometry with options",opt); this.editingOptions=opt; this.logger.debug("draw geometry with options",opt); var msg=_3dgis.settings.i18n["drawMessage"]; if(opt.message){ msg=opt.message; } if(opt.layerName){ var _166=this.layerManager.getLayer(opt.layerName); if(_166==null){ this.logger.error("cannot find layer with name ",opt.layerName); return; } if(_166.snapping){ opt.snappingLayers=_166.snapping.split(","); } this.editingInfoManager.onStartEditing(_166.geometryType); } dojo.publish("messageManager/message",[{message:msg,hideAfterOperation:false,operations:[{name:"save",label:_3dgis.settings.i18n["confirm"]}]}]); this.createGeometryManager.create(opt); this.startEditing(); },onModifyStart:function(opt){ this.isCreating=false; this.currentManager=this.modifyGeometryManager; this.logger.debug("modify geometry with options",opt); this.editingOptions=opt; if(opt.layerName){ var _167=this.layerManager.getLayer(opt.layerName); if(_167==null){ this.logger.error("cannot find layer with name ",opt.layerName); return; } if(_167.snapping){ opt.snappingLayers=_167.snapping.split(","); } this.editingInfoManager.onStartEditing(_167.geometryType); } var msg=_3dgis.settings.i18n["editMessage"]; if(opt.message){ msg=opt.message; } var _168=_3dgis.settings.i18n["confirm"]; if(opt.modifyMessage){ _168=opt.modifyMsg; } var _169=_3dgis.settings.i18n["resetGeometry"]; if(opt.resetMessage){ _169=opt.resetMessage; } dojo.publish("messageManager/message",[{message:msg,hideAfterOperation:false,operations:[{name:"save",label:_168},{name:"reset",label:_169}]}]); var _16a=opt.startGeometry; if(dojo.isString(_16a)){ _16a=this.wktParser.read(opt.startGeometry).geometry; } var _16b=opt.geometry; if(dojo.isString(_16b)){ _16b=this.wktParser.read(opt.geometry).geometry; } this.modifyGeometryManager.modify(_16a,_16b,opt); this.startEditing(); },onCreateFinish:function(){ if(this.editingOptions.modifyAfterCreation===true){ var _16c=this.editingOptions; _16c.geometry=this.editingLayer.features[0].geometry.clone(); _16c.startGeometry=_16c.geometry; this.onModifyStart(_16c); }else{ this.confirmEditing(); } },initSnapping:function(_16d){ this.logger.debug("snappingLayers",_16d); var _16e=new OpenLayers.StyleMap({"default":new OpenLayers.Style({pointRadius:0,fillColor:"#ffffff",fillOpacity:0,strokeColor:"#ffffff",strokeWidth:0,strokeOpacity:0})}); this.snappingLayers=[]; for(var i=0;i<_16d.length;i++){ var l=this.layerManager.getLayer(_16d[i]); if(l==null){ this.logger.error("cannot find layer with name ",_16d[i]); return; } var _16f=new OpenLayers.Layer.Vector("snapping_layer_"+i,{strategies:[new OpenLayers.Strategy.BBOX()],protocol:new OpenLayers.Protocol.HTTP({url:"map/json/featureRequest",params:{layerId:l.id,srid:this.mapManager.srid},format:new OpenLayers.Format.SimpleJSON()}),styleMap:_16e}); this.logger.debug("add snap layer",_16d[i]); this.snappingLayers.push(_16f); } this.mapManager.map.addLayers(this.snappingLayers); for(var i=0;i"; _182+="
"; _182+="
"; _182+="

${dialogTitle}

"; _182+="
"; _182+="
"; _182+="
"; _182+=""; _182+=""; _182+=""; _182+=""; _182+=""; _182+="
"; _182+=""; _182+=""; _182+="
"; _182+="
"; _182+="
"; _182+="
"; _182+="
"; _182+=""; _182+="
"; _182+="
${buttonLabel}
"; _182+="
"; this.selectLayerDialogTemplate=_182; this.postConstructor(); },postConstructor:function(){ this.currentLocale=dojo.locale.split("-")[0]; },init:function(){ this.initToolbar(); this.initBody(); this.initEllipsisManager(); this.subscribeEvents(); },subscribeEvents:function(){ dojo.subscribe("styleEditor/save",this,function(_183){ this.reloadLegend(_183); }); dojo.connect(dijit.byId(this.containerId),"resize",this,function(){ this.toCheckEllipsis=true; }); dojo.connect(dijit.byId(this.prefix+"-contentPane"),"resize",this,this.onResize); dojo.subscribe(this.tabControllerId+"-selectChild",this,function(page){ if(page.id==this.contentPaneId){ this.onSelectedTab(); } }); },onSelectedTab:function(){ this.checkEllipsis(); },checkEllipsis:function(){ if(this.toCheckEllipsis){ this.ellipsisManagerLayer.resize(); this.ellipsisManagerGroup.resize(); this.toCheckEllipsis=false; } },initToolbar:function(){ this.logger.debug("init toolbar"); dojo.connect(dijit.byId(this.toolbarButtonPrefix+"expandAllLayerGroups"),"onClick",this,this.expandAllLayerGroups); dojo.connect(dijit.byId(this.toolbarButtonPrefix+"collapseAllLayerGroups"),"onClick",this,this.collapseAllLayerGroups); this.opacityButton=dijit.byId(this.toolbarButtonPrefix+"opacity"); this.opacitySlider=dijit.byId("layerControllerToolbar-opacity-slider"); dojo.connect(this.opacitySlider,"onChange",this,function(_184){ this.layerManager.setLayerOpacity(this.currentSelectedLayer,_184/100); }); },initBody:function(){ this.logger.debug("init body"); var _185=this.layerManager.getLayerList(); var _186=this.layerManager.getLayerGroupList(); var _187=[]; var _188=[]; for(var i=0;i<_186.length;i++){ var _189=_186[i].groupName; var _18a=this.layerManager.getLayerGroup(_189); var _18b=dojo.byId(this.prefix+"group-"+_189+"-labelContainer"); if(_18b){ _188.push(_18b.id); var _18c=dijit.byId(this.prefix+"group-"+_189+"-selection"); if(this.settings&&this.settings.layerGroups&&this.settings.layerGroups[_189]){ var _18d=this.settings.layerGroups[_189]; _18c.set("checked",_18d.selected,false); if(_18d.selected){ _187.push(_189); } this.openGroup(_189,_18d.open); } if(_18a.groupParentName==null){ _18c.set("disabled",false); } _18b.onclick=dojo.hitch(this,function(_18e){ this.toggleGroup(_18e); },_189); _18c.onChange=dojo.hitch(this,function(_18f,_190){ this.checkLayerGroup(_18f,_190,true); },_189); } } var _191=[]; var _192=[]; for(var i=0;i<_185.length;i++){ var _193=_185[i].layerName; var _18c=dijit.byId(this.prefix+"layer-"+_193+"-selection"); if(_18c){ var _194=dojo.byId(this.prefix+"layer-"+_193+"-labelContainer"); _192.push(_194.id); _194.onclick=dojo.hitch(this,function(_195){ this.selectLayer(_195,true); },_193); if(this.settings&&this.settings.layers&&this.settings.layers[_193]){ var _196=this.settings.layers[_193]; _18c.set("checked",_196.selected,false); _18c.set("disabled",true); this.layerManager.setLayerSelected(_193,_196.selected); this.layerManager.setLayerOpacity(_193,_196.opacity); if(_196.selected){ _191.push(_193); } } _18c.onChange=dojo.hitch(this,function(_197,_198){ this.checkLayer(_197,_198); },_193); var _199=dijit.byId(this.prefix+"layer-"+_193+"-queryable"); if(_199){ _199.onChange=dojo.hitch(this,function(_19a,_19b){ this.layerManager.setLayerToQuery(_19a,_19b); },_193); } } } this.layerManager.setSelected(_187,_191); var _19c=this.layerManager.getActiveGroups(); for(var i=0;i<_19c.length;i++){ this.enableLayerGroup(_19c[i].groupName,true); } this.initLayerGroupContextMenu(_188); this.initLayerContextMenu(_192); },initEllipsisManager:function(){ this.ellipsisManagerGroup=new _3dgis.wf.manager.EllipsisManager({query:".legendRootGroupBar .legendLabel",containerQuery:".legendRootGroupBar .labelContainer",event:"resize",containerId:this.containerId,offset:this.ellipsisOffset,timeout:this.resizeTimeout}); this.ellipsisManagerLayer=new _3dgis.wf.manager.EllipsisManager({query:".legendBar .legendLabel",containerQuery:".legendBar .labelContainer",event:"resize",containerId:this.containerId,offset:this.ellipsisOffset,timeout:this.resizeTimeout}); },initLayerGroupContextMenu:function(_19d){ this.layerGroupContextMenu=new dijit.Menu({targetNodeIds:_19d}); this.layerGroupContextMenuLabelItem=new dijit.MenuItem({label:"","class":"contextMenuTitle"}); this.layerGroupContextMenu.addChild(this.layerGroupContextMenuLabelItem); this.layerGroupContextMenu.addChild(new dijit.MenuSeparator()); this.openAllLayerGroupsMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["openAllLayerGroups"],iconClass:"openAllLayerGroupsIcon",onClick:dojo.hitch(this,this.openAllLayerGroups)}); this.layerGroupContextMenu.addChild(this.openAllLayerGroupsMenuItem); this.closeAllLayerGroupsMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["closeAllLayerGroups"],iconClass:"closeAllLayerGroupsIcon",onClick:dojo.hitch(this,this.closeAllLayerGroups)}); this.layerGroupContextMenu.addChild(this.closeAllLayerGroupsMenuItem); this.activeAllLayersMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["activeAllLayers"],iconClass:"activeAllLayersIcon",onClick:dojo.hitch(this,this.activeAllLayers)}); this.layerGroupContextMenu.addChild(new dijit.MenuSeparator()); this.layerGroupContextMenu.addChild(this.activeAllLayersMenuItem); this.deactiveAllLayersMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["deactiveAllLayers"],iconClass:"deactiveAllLayersIcon",onClick:dojo.hitch(this,this.deactiveAllLayers)}); this.layerGroupContextMenu.addChild(this.deactiveAllLayersMenuItem); this.showAllLegendsMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["showAllLegends"],iconClass:"showAllLegendsIcon",onClick:dojo.hitch(this,this.showAllLegends)}); this.layerGroupContextMenu.addChild(this.showAllLegendsMenuItem); this.hideAllLegendsMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["hideAllLegends"],iconClass:"hideAllLegendsIcon",onClick:dojo.hitch(this,this.hideAllLegends)}); this.layerGroupContextMenu.addChild(this.hideAllLegendsMenuItem); this.layerGroupContextMenu.startup(); dojo.connect(this.layerGroupContextMenu,"_openMyself",this,this.onOpenLayerGroupMenuItem); },onOpenLayerGroupMenuItem:function(e){ this.currentContextLayerGroupName=e.target.id.split("-")[2]; var _19e=this.layerManager.layerGroups[this.currentContextLayerGroupName]; this.layerGroupContextMenuLabelItem.set("label",_19e[this.currentLocale]); this.openAllLayerGroupsMenuItem.set("disabled",_19e.layerGroups.length===0); this.closeAllLayerGroupsMenuItem.set("disabled",_19e.layerGroups.length===0); this.activeAllLayersMenuItem.set("disabled",_19e.layers.length===0); this.deactiveAllLayersMenuItem.set("disabled",_19e.layers.length===0); this.showAllLegendsMenuItem.set("disabled",_19e.layers.length===0); this.hideAllLegendsMenuItem.set("disabled",_19e.layers.length===0); },initLayerContextMenu:function(_19f){ this.layerContextMenu=new _3dgis.wf.dijit.Menu({targetNodeIds:_19f}); this.layerContextMenuLabelItem=new dijit.MenuItem({label:"","class":"contextMenuTitle"}); this.layerContextMenu.addChild(this.layerContextMenuLabelItem); this.layerContextMenu.addChild(new dijit.MenuSeparator()); this.deactiveAllLayersButThisMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["deactiveAllLayersButThis"],iconClass:"deactiveAllLayersButThisIcon",onClick:dojo.hitch(this,this.deactiveAllLayersButThis)}); this.layerContextMenu.addChild(this.deactiveAllLayersButThisMenuItem); this.toggleLegendMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["toggleLegend"],iconClass:"showLegendIcon",onClick:dojo.hitch(this,this.toggleLegend)}); this.layerContextMenu.addChild(this.toggleLegendMenuItem); if(_3dgis.settings.permissionMap["STYLE_EDITOR"]){ this.styleEditorMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["changeLayerStyle"],iconClass:"styleEditorIcon",onClick:dojo.hitch(this,this.showStyleEditor)}); this.layerContextMenu.addChild(this.styleEditorMenuItem); } if(_3dgis.settings.permissionMap["EDITING"]){ this.drawElementMenuItem=new dijit.MenuItem({label:_3dgis.settings.i18n["drawElement"],iconClass:"drawElementIcon",onClick:dojo.hitch(this,this.drawElement)}); this.layerContextMenu.addChild(this.drawElementMenuItem); } this.layerContextMenu.startup(); this.layerContextMenu.checkOpen=dojo.hitch(this,function(_1a0){ this.currentContextLayerName=_1a0.id.split("-")[2]; return this.layerManager.isLayerActive(this.currentContextLayerName); }); dojo.connect(this.layerContextMenu,"_openMyself",this,this.onOpenLayerMenuItem); },onOpenLayerMenuItem:function(e){ if(this.editingManager==null&&_3dgis.objectManager.objects["editingManager"]!=null){ this.editingManager=_3dgis.objectManager.get("editingManager"); } this.layerContextMenuLabelItem.set("label",this.layerManager.layers[this.currentContextLayerName][this.currentLocale]); var _1a1=this.layerManager.getLayer(this.currentContextLayerName); var _1a2=this.layerManager.layerGroups[_1a1.layerGroup.groupName]; this.deactiveAllLayersButThisMenuItem.set("disabled",_1a2.layers.length<2); if(this.drawElementMenuItem){ var _1a3=!_1a1.editable; if(!_1a3&&this.editingManager!=null){ _1a3=this.editingManager.isEditingStarted(); } this.drawElementMenuItem.set("disabled",_1a3); } if(this.styleEditorMenuItem){ var _1a3=!_1a1.dynamicSld; if(!_1a3&&this.editingManager!=null){ _1a3=this.editingManager.isEditingStarted(); } this.styleEditorMenuItem.set("disabled",_1a3); } this.toggleLegendMenuItem.set("disabled",!_1a1.hasLegend); },openAllLayerGroups:function(){ this.openGroup(this.currentContextLayerGroupName,true); var _1a4=this.layerManager.getLayerGroup(this.currentContextLayerGroupName).layerGroups; for(var i=0;i<_1a4.length;i++){ this.openGroup(_1a4[i],true); } },closeAllLayerGroups:function(){ this.openGroup(this.currentContextLayerGroupName,false); var _1a5=this.layerManager.getLayerGroup(this.currentContextLayerGroupName).layerGroups; for(var i=0;i<_1a5.length;i++){ this.openGroup(_1a5[i],false); } },activeAllLayers:function(){ var _1a6=this.layerManager.getLayerGroup(this.currentContextLayerGroupName); this.activeLayerGroup(_1a6.groupName); var _1a7=_1a6.layers; for(var i=0;i<_1a7.length;i++){ this.checkLayerItem(_1a7[i],true); } },deactiveAllLayers:function(){ var _1a8=this.layerManager.getLayerGroup(this.currentContextLayerGroupName); var _1a9=_1a8.layers; for(var i=0;i<_1a9.length;i++){ this.checkLayerItem(_1a9[i],false); } },deactiveAllLayersButThis:function(){ var _1aa=this.layerManager.getLayer(this.currentContextLayerName).layerGroup.groupName; var _1ab=this.layerManager.getLayerGroup(_1aa).layers; for(var i=0;i<_1ab.length;i++){ if(_1ab[i]!=this.currentContextLayerName){ this.checkLayerItem(_1ab[i],false); } } },showAllLegends:function(){ var _1ac=this.layerManager.getLayerGroup(this.currentContextLayerGroupName); var _1ad=_1ac.layers; for(var i=0;i<_1ad.length;i++){ this.showLegend(_1ad[i],true); } },hideAllLegends:function(){ var _1ae=this.layerManager.getLayerGroup(this.currentContextLayerGroupName); var _1af=_1ae.layers; for(var i=0;i<_1af.length;i++){ this.showLegend(_1af[i],false); } },showStyleEditor:function(){ var _1b0=this.layerManager.getLayer(this.currentContextLayerName); if(_1b0.complex){ var _1b1="layerController-layer-"+_1b0.layerName; var _1b2=dijit.byId(_1b1+"-selectLayerDialog"); if(_1b2){ _1b2.destroyRecursive(); } var html=dojo.string.substitute(this.selectLayerDialogTemplate,{prefix:_1b1,dialogTitle:_3dgis.settings.i18n["selectLayerToStyle"],selectLabel:_3dgis.settings.i18n["layer"],buttonLabel:_3dgis.settings.i18n["confirm"]}); _1b2=new dijit.Dialog({id:_1b1+"-selectLayerDialog",content:html}); var _1b3=[]; for(var i=0;i<_1b0.subLayerNames.length;i++){ var _1b4=_1b0.subLayerNames[i]; var _1b5=_3dgis.wf.util.fromUnderscoreToLowerCamelCase(_1b4); _1b3.push({label:_3dgis.settings.i18n[_1b5],value:_1b4}); } dijit.byId(_1b1+"-dialog-selectLayer-layer").set("options",_1b3); dojo.connect(dijit.byId(_1b1+"-dialog-button-confirm"),"onClick",dojo.hitch(this,function(){ var _1b6=dijit.byId(_1b1+"-dialog-selectLayer-layer").get("value"); this.styleEditor.init(_1b6); })); _1b2.startup(); _1b2.show(); }else{ this.styleEditor.init(_1b0.layerName); } },drawElement:function(){ this.editingHandle=dojo.subscribe("map/editing/create/stop",this,function(_1b7){ this.stopEditing(_1b7); }); this.editingCancelHandle=dojo.subscribe("map/editing/cancel",this,function(){ this.cancelEditing(); }); this.startEditing(); },startEditing:function(){ var _1b8=this.layerManager.getLayer(this.currentContextLayerName); var _1b9=this.layerManager.getElementTypeForLayerName(this.currentContextLayerName); var _1ba={geometryType:this.layerManager.getLayerGeometryType(_1b8),checkUrl:"map/json/checkGeometry-"+_1b9,layerName:this.currentContextLayerName}; dojo.publish("map/editing/create/start",[_1ba]); },stopEditing:function(_1bb){ dojo.unsubscribe(this.editingHandle); dojo.unsubscribe(this.editingCancelHandle); var _1bc=this.layerManager.getLayer(this.currentContextLayerName); var _1bd=this.layerManager.getElementTypeForLayerName(this.currentContextLayerName); var _1be=this.objectManager.get("featureDialog",_1bd); _1be.newElement({geometry:_1bb,layerName:this.currentContextLayerName}); },cancelEditing:function(){ dojo.unsubscribe(this.editingHandle); dojo.unsubscribe(this.editingCancelHandle); },activeLayer:function(_1bf){ this.logger.debug("active layer "+_1bf); var _1c0=this.layerManager.getLayer(_1bf); this.activeLayerGroup(_1c0.layerGroup.groupName); var _1c1=this.layerManager.getLayerAncestors(_1bf); for(var i=0;i<_1c1.length;i++){ this.checkLayerGroupItem(_1c1[i].groupName,true); } this.checkLayerItem(_1bf,true); },activeLayerByFeatureType:function(_1c2){ this.activeLayer(this.layerManager.getLayerForFeatureRecordType(_1c2).layerName); },activeLayerGroup:function(_1c3){ this.logger.debug("active layer group "+_1c3); var _1c4=this.layerManager.getLayerGroupAncestors(_1c3); _1c4.push(this.layerManager.getLayerGroup(_1c3)); for(var i=0;i<_1c4.length;i++){ this.checkLayerGroupItem(_1c4[i].groupName,true); } },checkLayerItem:function(_1c5,_1c6){ this.logger.debug("checkLayerItem "+_1c5,_1c6); dijit.byId(this.prefix+"layer-"+_1c5+"-selection").set("value",_1c6); },checkLayerGroupItem:function(_1c7,_1c8){ this.logger.debug("checkLayerGroupItem "+_1c7,_1c8); dijit.byId(this.prefix+"group-"+_1c7+"-selection").set("value",_1c8); },selectLayer:function(_1c9,_1ca){ if(_1ca&&this.currentSelectedLayer!=_1c9&&this.layerManager.isLayerActive(_1c9)){ if(this.currentSelectedLayer){ dojo.removeClass(this.prefix+"layer-"+this.currentSelectedLayer+"-bar","selectedLayer"); } this.currentSelectedLayer=_1c9; dojo.removeClass(this.prefix+"layer-"+this.currentSelectedLayer+"-bar","selectedLayer"); dojo.addClass(this.prefix+"layer-"+_1c9+"-bar","selectedLayer"); this.enableLayerButtons(true); this.opacitySlider.set("value",this.layerManager.getLayerOpacity(_1c9)*100); dojo.publish("map/currentSelectedLayer",[this.layerManager.getLayer(_1c9)]); }else{ if(!_1ca&&this.currentSelectedLayer==_1c9){ this.currentSelectedLayer=null; dojo.removeClass(this.prefix+"layer-"+_1c9+"-bar","selectedLayer"); dojo.publish("map/currentSelectedLayer",[null]); this.enableLayerButtons(false); } } },toggleGroup:function(_1cb){ var obj=dojo.byId(this.prefix+"group-"+_1cb+"-bar"); if(obj){ if(obj.style.display=="block"){ obj.style.display="none"; }else{ obj.style.display="block"; this.toCheckEllipsis=true; this.checkEllipsis(); } } },openGroup:function(_1cc,open){ var obj=dojo.byId(this.prefix+"group-"+_1cc+"-bar"); if(obj){ if(open){ obj.style.display="block"; }else{ obj.style.display="none"; } } },toggleLayer:function(_1cd){ var obj=dojo.byId(this.prefix+"layer-"+_1cd+"-info"); if(obj){ if(obj.style.display=="none"){ obj.style.display="block"; }else{ obj.style.display="none"; } } },showLegend:function(_1ce,_1cf){ var img=dojo.byId(this.prefix+"layer-"+_1ce+"-legend-img"); if(img){ if(img.getAttribute("src")==null){ img.setAttribute("src",this.createLegendUrl(_1ce)); } var obj=dojo.byId(this.prefix+"layer-"+_1ce+"-legend"); if(_1cf){ obj.style.display="block"; }else{ obj.style.display="none"; } } },toggleLegend:function(){ var img=dojo.byId(this.prefix+"layer-"+this.currentContextLayerName+"-legend-img"); if(img.getAttribute("src")==null){ img.setAttribute("src",this.createLegendUrl(this.currentContextLayerName)); } var obj=dojo.byId(this.prefix+"layer-"+this.currentContextLayerName+"-legend"); if(obj.style.display=="none"){ obj.style.display="block"; }else{ obj.style.display="none"; } },isLegendOpen:function(_1d0){ var _1d1=false; var img=dojo.byId(this.prefix+"layer-"+_1d0+"-legend-img"); if(img.getAttribute("src")!=null){ var obj=dojo.byId(this.prefix+"layer-"+_1d0+"-legend"); _1d1=obj.style.display!="none"; } return _1d1; },reloadDynamicLegends:function(){ this.logger.debug("reload dynamic legends"); var _1d2=this.layerManager.getDynamicLegendLayers(); for(var _1d3 in _1d2){ if(this.isLegendOpen(_1d3)){ this.reloadLegend(_1d3); } } },enableLayerButtons:function(_1d4){ this.opacityButton.set("disabled",!_1d4); },checkLayer:function(_1d5,_1d6){ var _1d7=dijit.byId(this.prefix+"layer-"+_1d5+"-queryable"); if(_1d7){ _1d7.set("disabled",!_1d6); } var _1d8=dojo.byId(this.prefix+"layer-"+_1d5+"-info"); if(_1d6){ _1d8.style.display="block"; }else{ _1d8.style.display="none"; } if(_1d6){ dojo.addClass(this.prefix+"layer-"+_1d5+"-bar","active"); }else{ dojo.removeClass(this.prefix+"layer-"+_1d5+"-bar","active"); } this.layerManager.setLayerSelected(_1d5,_1d6); if(_1d5===this.currentSelectedLayer&&_1d6===false){ this.selectLayer(_1d5,false); } },enableLayer:function(_1d9,_1da){ var _1db=dijit.byId(this.prefix+"layer-"+_1d9+"-selection"); if(_1db){ _1db.set("disabled",!_1da); var _1dc=dijit.byId(this.prefix+"layer-"+_1d9+"-queryable"); this.selectLayer(_1d9,_1da); if(_1da&&_1db.get("value")){ if(_1dc){ _1dc.set("disabled",false); } }else{ if(_1dc){ _1dc.set("disabled",true); } } } },checkLayerGroup:function(_1dd,_1de){ this.layerManager.setLayerGroupSelected(_1dd,_1de); var _1df=dijit.byId(this.prefix+"group-"+_1dd+"-selection"); if(_1df){ var _1e0=this.layerManager.getLayerGroup(_1dd); for(var i=0;i<_1e0.layerGroups.length;i++){ this.enableLayerGroup(_1e0.layerGroups[i],_1de); } for(var i=0;i<_1e0.layers.length;i++){ this.enableLayer(_1e0.layers[i],_1de&&_1df.get("value")); } } },enableLayerGroup:function(_1e1,_1e2){ var _1e3=dijit.byId(this.prefix+"group-"+_1e1+"-selection"); if(_1e3){ _1e3.set("disabled",!_1e2); var _1e4=this.layerManager.getLayerGroup(_1e1); for(var i=0;i<_1e4.layerGroups.length;i++){ this.enableLayerGroup(_1e4.layerGroups[i],_1e2); } for(var i=0;i<_1e4.layers.length;i++){ var _1e5=dijit.byId(this.prefix+"layer-"+_1e4.layers[i]+"-selection"); if(_1e5){ this.enableLayer(_1e4.layers[i],_1e2&&_1e3.get("value")); } } } },expandAllLayerGroups:function(){ var _1e6=this.layerManager.getLayerGroups(); for(var _1e7 in _1e6){ this.openGroup(_1e7,true); } },collapseAllLayerGroups:function(){ var _1e8=this.layerManager.getLayerGroups(); for(var _1e9 in _1e8){ this.openGroup(_1e9,false); } },reloadLegend:function(_1ea){ var img=dojo.byId(this.prefix+"layer-"+_1ea+"-legend-img"); var _1eb=this.createLegendUrl(_1ea); img.setAttribute("src",_1eb+"&"+Math.random()); },getSettings:function(){ var _1ec={}; _1ec.layers={}; _1ec.layerGroups={}; var _1ed=this.layerManager.getLayers(); for(var _1ee in _1ed){ _1ec.layers[_1ee]={}; var _1ef=dijit.byId(this.prefix+"layer-"+_1ee+"-selection"); if(_1ef){ _1ec.layers[_1ee].selected=_1ef.get("value"); _1ec.layers[_1ee].opacity=this.layerManager.getLayerOpacity(_1ee); } } var _1f0=this.layerManager.getLayerGroups(); for(var _1f1 in _1f0){ _1ec.layerGroups[_1f1]={}; var _1ef=dijit.byId(this.prefix+"group-"+_1f1+"-selection"); if(_1ef){ _1ec.layerGroups[_1f1].selected=_1ef.get("value"); } var node=dojo.byId(this.prefix+"group-"+_1f1+"-bar"); if(node){ _1ec.layerGroups[_1f1].open=(node.style.display!="none"); } } return _1ec; },onResize:function(){ this.toCheckEllipsis=true; },createLegendUrl:function(_1f2){ var _1f3=this.layerManager.getLayer(_1f2); var url=null; if(_1f3.dynamicLegend){ url=dojo.string.substitute(this.dynamicLegendRequestUrlTemplate,{id:_1f3.id,symbolWidth:this.legendSymbolWidth,symbolHeight:this.legendSymbolHeight,currentScale:_3dgis.settings.map.scales[this.mapManager.getOpenLayersMap().getZoom()]}); }else{ url=dojo.string.substitute(this.legendRequestUrlTemplate,{id:_1f3.id,symbolWidth:this.legendSymbolWidth,symbolHeight:this.legendSymbolHeight}); } this.logger.debug("legend url",url); return url; },getLayerSelectionWidget:function(_1f4){ return dijit.byId(this.prefix+"layer-"+_1f4+"-selection"); },getLayerGroupSelectionWidget:function(_1f5){ return dijit.byId(this.prefix+"group-"+_1f5+"-selection"); },checkLayerAndAncestorsSelectionWidget:function(_1f6){ dojo.forEach(this.layerManager.getLayerAncestors(_1f6),function(item){ var _1f7=this.getLayerGroupSelectionWidget(item.groupName); if(_1f7.get("checked")===false){ _1f7.set("checked",true); } },this); var _1f8=this.getLayerSelectionWidget(_1f6); if(_1f8.get("checked")===false){ _1f8.set("checked",true); } }}); dojo.provide("_3dgis.cwf.manager.SpatialFilterManager"); dojo.require("_3dgis.wf.manager.FilterManager"); dojo.declare("_3dgis.cwf.manager.SpatialFilterManager",_3dgis.wf.manager.FilterManager,{spatialConditions:null,spatialLogicOperator:null,constructor:function(_1f9){ dojo.mixin(this,_1f9); this.spatialConditions=[]; },addSpatialCondition:function(_1fa,_1fb){ this.spatialConditions.push({operator:_1fa,geometry:_1fb}); },setSpatialLogicOperator:function(_1fc){ this.spatialLogicOperator=_1fc; },setSort:function(sort){ this.sort=sort; },toQueryObject:function(_1fd){ var obj=this.inherited(arguments); var _1fe="filter."; if(_1fd!=null){ _1fe="filters["+_1fd+"]."; } for(var i=0;i1){ obj[_1fe+"spatialLogicOperator"]=this.spatialLogicOperator; } return obj; },getConditionNumber:function(){ return this.inherited(arguments)+this.spatialConditions.length; }}); dojo.provide("_3dgis.cwf.manager.MapQueryFilterManager"); dojo.require("_3dgis.cwf.manager.SpatialFilterManager"); dojo.declare("_3dgis.cwf.manager.MapQueryFilterManager",_3dgis.cwf.manager.SpatialFilterManager,{layers:null,constructor:function(){ this.layers=[]; },addLayer:function(_1ff){ this.layers.push(_1ff); },toQueryObject:function(_200){ var obj=this.inherited(arguments); var _201=this.layers.join(","); var _202="filter."; if(_200!=null){ _202="filters["+_200+"]."; } if(this.layers.length>0){ obj[_202+"layers"]=_201; } return obj; }}); dojo.provide("_3dgis.cwf.manager.LayerManager"); dojo.declare("_3dgis.cwf.manager.LayerManager",null,{mapManager:null,layers:null,layerGroups:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); },postConstructor:function(_203){ this.layers={}; this.layerGroups={}; this.layerControllerSettings=_203.layerControllerSettings; this.layerGroupList=_203.layerGroups; this.layerList=_203.layers; for(var i=0;i<_203.layerGroups.length;i++){ var _204=_203.layerGroups[i]; _204.selected=false; _204.active=false; _204.layers=[]; _204.layerGroups=[]; this.layerGroups[_204.groupName]=_204; } for(var i=0;i<_203.layerGroups.length;i++){ var _204=_203.layerGroups[i]; if(_204.groupParentName){ this.layerGroups[_204.groupParentName].layerGroups.push(_204.groupName); } } for(var i=0;i<_203.layers.length;i++){ var _205=_203.layers[i]; _205.selected=false; _205.active=false; _205.toQuery=true; _205.opacity=1; this.layers[_205.layerName]=_205; if(_205.layerGroup){ _205.layerGroup.active=false; this.layerGroups[_205.layerGroup.groupName].layers.push(_205.layerName); } } },setSelected:function(_206,_207){ for(var i=0;i<_206.length;i++){ this.layerGroups[_206[i]].selected=true; } for(var i=0;i<_207.length;i++){ this.layers[_207[i]].selected=true; } var _208=this.getRootLayerGroups(); for(var i=0;i<_208.length;i++){ if(_208[i].selected){ this.setLayerGroupActive(_208[i].groupName,true); } } },getLayer:function(_209){ return this.layers[_209]; },getLayerOpacity:function(_20a){ return this.getOpenLayersLayer(_20a).opacity; },setLayerOpacity:function(_20b,_20c){ this.getOpenLayersLayer(_20b).setOpacity(_20c); },setLayerVisibility:function(_20d,_20e,_20f){ this.getOpenLayersLayer(_20d).setVisibility(_20e); if(_20f!==false){ dojo.publish("map/layer/show",[_20d,_20e]); } },setLayerSelected:function(_210,_211){ var _212=this.layers[_210]; _212.selected=_211; this.logger.debug("is group active",this.isLayerGroupActive(_212.layerGroup.groupName)); if(_211&&this.isLayerGroupActive(_212.layerGroup.groupName)){ this.logger.debug("show layer",_210); _212.active=true; this.setLayerVisibility(_210,true); }else{ _212.active=false; this.setLayerVisibility(_210,false); } },getLayers:function(){ return this.layers; },getLayerList:function(){ return this.layerList; },getLayersByGroup:function(_213){ var tmp=[]; var _214=this.layerGroups[_213]; for(var i=0;i<_214.layers.length;i++){ tmp.push(this.layers[_214.layers[i]]); } return tmp; },getLayersByAncesterLayerGroup:function(_215){ var tmp=[]; var _216=this.layerGroups[_215]; for(var i=0;i<_216.layerGroups.length;i++){ var _216=_216.layerGroups[i]; tmp=tmp.concat(this.getLayersByAncesterLayerGroup(this.layerGroups[_216].groupName)); } for(var i=0;i<_216.layers.length;i++){ tmp=tmp.concat(this.layers[_216.layers[i]]); } return tmp; },getLayerGroupsByParentGroup:function(_217){ var tmp=[]; for(var key in this.layerGroups){ var _218=this.layerGroups[key]; if(_218.groupParentName&&_218.groupParentName==_217){ tmp.push(_218); } } return tmp; },getLayerGroups:function(){ return this.layerGroups; },getLayerGroupList:function(){ return this.layerGroupList; },getRootLayerGroups:function(){ var tmp=[]; for(var _219 in this.layerGroups){ var _21a=this.layerGroups[_219]; if(!_21a.groupParentName){ tmp.push(_21a); } } return tmp; },getLayerAncestors:function(_21b){ this.logger.debug("get ancestors for layer",_21b); var _21c=this.layers[_21b].layerGroup; var _21d=this.getLayerGroupAncestors(_21c.groupName); _21d.push(_21c); return _21d; },getLayerGroupAncestors:function(_21e){ this.logger.debug("get ancestors for layerGroup",_21e); var _21f=[]; for(var key in this.layerGroups){ var _220=this.layerGroups[key]; for(var i=0;i<_220.layerGroups.length;i++){ if(_220.layerGroups[i]==_21e){ _21f.push(_220); _21f.concat(this.getLayerGroupAncestors(_220.groupName)); break; } } } return _21f; },getLayerGroup:function(_221){ return this.layerGroups[_221]; },getActiveLayers:function(){ var tmp=[]; if(this.layerList!=null){ for(var i=0;i0){ var _271=_270[0]; this.setLayerVisibility(_26e,true); _271.mergeNewParams({"UPDATESEQUENCE":Math.random()}); _271.redraw(); if(_26f){ dojo.publish("map/layer/reload",[_26e]); } } },reloadLayerByElementType:function(_272){ this.reloadLayer(_3dgis.wf.util.string.fromCamelCaseToUnderscore(_272)); },setLayerGroupVisibility:function(name,flag,_273){ for(var key in this._layerGroups){ if(this._layerGroups[key].name==name){ this._layerGroups[key].selected=true; for(var j=0;j0){ this.nextStack.push(this.currentPosition); this.currentPosition=this.previousStack.pop(); this.mapManager.map.setCenter(this.currentPosition.center,this.currentPosition.zoomLevel); } },getPreviousControl:function(){ return new OpenLayers.Control.Button({trigger:dojo.hitch(this,function(){ this.previous(); })}); },next:function(){ this.logger.debug("next navigation history selected"); if(this.nextStack.length>0){ this.previousStack.push(this.currentPosition); this.currentPosition=this.nextStack.pop(); this.mapManager.map.setCenter(this.currentPosition.center,this.currentPosition.zoomLevel); } },getNexControl:function(){ return new OpenLayers.Control.Button({trigger:dojo.hitch(this,function(){ this.next(); })}); }}); dojo.provide("_3dgis.cwf.manager.ControlManager"); dojo.require("_3dgis.cwf.manager.NavigationHistoryManager"); dojo.require("_3dgis.cwf.manager.EditingManager"); dojo.declare("_3dgis.cwf.manager.ControlManager",null,{mapManager:null,selectionManager:null,lockedAreaManager:null,editingControl:null,controls:null,simpleControls:null,currentControlName:null,fullScreen:false,hidePanels:true,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.wktParser=new OpenLayers.Format.WKT(); },postConstructor:function(){ this.controls={}; this.simpleControls={}; },init:function(){ this.logger.debug("init"); this.selectionManager.init(); var nav=new _3dgis.cwf.manager.NavigationHistoryManager({mapManager:this.mapManager}); nav.init(); this.addSimpleControl("zoomPrev",nav.getPreviousControl()); this.addSimpleControl("zoomNext",nav.getNexControl()); var _295=new _3dgis.cwf.OpenLayers.Control.ZoomBox(); this.addControl("zoomIn",_295); var _296=new OpenLayers.Control.Button({trigger:dojo.hitch(this,function(){ this.mapManager.zoomOut(); })}); this.addSimpleControl("zoomOut",_296); this.addControl("dragPan",new OpenLayers.Control.DragPan()); var _297=new OpenLayers.Control.ZoomToMaxExtent(); this.addSimpleControl("resetExtent",_297); this.addControl("query",this.selectionManager.getController()); if(dijit.byId("map-control-button-lock")){ this.addControl("lock",this.lockedAreaManager.getLockControl()); } if(dijit.byId("map-control-button-unlock")){ this.addControl("unlock",this.lockedAreaManager.getUnlockControl()); } var _298=new OpenLayers.Style(); _298.addRules([new OpenLayers.Rule({symbolizer:{"Point":{pointRadius:4,graphicName:"square",fillColor:"white",fillOpacity:1,strokeWidth:1,strokeOpacity:1,strokeColor:"#333333"},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#666666",strokeDashstyle:"dash"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#666666",fillColor:"white",fillOpacity:0.3}}})]); var _299=new OpenLayers.StyleMap({"default":_298}); var _29a={activate:dojo.hitch(this,function(_29b){ var self=this; var _29c=_29b.object; var _29d=_3dgis.settings.i18n["length"]+": "+0+" "+_29c.map.units; dojo.publish("messageManager/message",[{message:_29d}]); var _29e=dojo.subscribe("messageManager/cancel",function(_29f){ dojo.unsubscribe(_29e); _29c.deactivate(); self.selectControl("dragPan"); }); }),measure:dojo.hitch(this,function(_2a0){ var _2a1=""; if(_2a0.units==="m"){ _2a1=_3dgis.settings.i18n["length"]+": "+_2a0.measure.toFixed(2)+" "+_2a0.units; }else{ _2a1=_3dgis.settings.i18n["length"]+": "+(_2a0.measure/1000).toFixed(2)+" "+_2a0.units; } dojo.publish("messageManager/message",[{message:_2a1}]); }),measurepartial:dojo.hitch(this,function(_2a2){ var _2a3=""; if(_2a2.units==="m"){ _2a3=_3dgis.settings.i18n["length"]+": "+_2a2.measure.toFixed(2)+" "+_2a2.units; }else{ _2a3=_3dgis.settings.i18n["length"]+": "+(_2a2.measure/1000).toFixed(2)+" "+_2a2.units; } dojo.publish("messageManager/message",[{message:_2a3}]); })}; var _2a4=new OpenLayers.Control.Measure(OpenLayers.Handler.Path,{persist:true,handlerOptions:{layerOptions:{styleMap:_299}},eventListeners:_29a}); this.addControl("lineMeasure",_2a4); var _2a5={activate:dojo.hitch(this,function(_2a6){ var self=this; var _2a7=_2a6.object; var _2a8=_3dgis.settings.i18n["area"]+": "+0+" "+_2a7.map.units+""+2+""+", "+_3dgis.settings.i18n["perimeter"]+": "+0+" "+_2a7.map.units; dojo.publish("messageManager/message",[{message:_2a8}]); var _2a9=dojo.subscribe("messageManager/cancel",function(_2aa){ dojo.unsubscribe(_2a9); _2a7.deactivate(); self.selectControl("dragPan"); }); }),measure:dojo.hitch(this,function(_2ab){ var _2ac=_2ab.object; var _2ad=""; if(_2ab.units==="m"){ _2ad=_3dgis.settings.i18n["area"]+": "+_2ab.measure.toFixed(2)+" "+_2ab.units+""+_2ab.order+""+", "+_3dgis.settings.i18n["perimeter"]+": "+_2ab.geometry.getLength().toFixed(2)+" "+_2ab.units; }else{ _2ad=_3dgis.settings.i18n["area"]+": "+_2ab.measure.toFixed(2)+" "+_2ab.units+""+_2ab.order+""+", "+_3dgis.settings.i18n["perimeter"]+": "+(_2ab.geometry.getLength()/1000).toFixed(2)+" "+_2ab.units; } dojo.publish("messageManager/message",[{message:_2ad}]); var _2ae=dojo.subscribe("messageManager/cancel",function(_2af){ dojo.unsubscribe(_2ae); _2ac.deactivate(); }); }),measurepartial:dojo.hitch(this,function(_2b0){ var _2b1=""; if(_2b0.units==="m"){ _2b1=_3dgis.settings.i18n["area"]+": "+_2b0.measure.toFixed(2)+" "+_2b0.units+""+_2b0.order+""+", "+_3dgis.settings.i18n["perimeter"]+": "+_2b0.geometry.getLength().toFixed(2)+" "+_2b0.units; }else{ _2b1=_3dgis.settings.i18n["area"]+": "+_2b0.measure.toFixed(2)+" "+_2b0.units+""+_2b0.order+""+", "+_3dgis.settings.i18n["perimeter"]+": "+(_2b0.geometry.getLength()/1000).toFixed(2)+" "+_2b0.units; } dojo.publish("messageManager/message",[{message:_2b1}]); })}; var _2b2=new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon,{persist:true,handlerOptions:{layerOptions:{styleMap:_299}},eventListeners:_2a5}); this.addControl("polygonMeasure",_2b2); this.mapManager.addControl(new _3dgis.cwf.OpenLayers.Control.MousePosition({xNode:dojo.byId("map-control-mousePosition-x"),yNode:dojo.byId("map-control-mousePosition-y")})); this.wheelZoomControl=new _3dgis.cwf.OpenLayers.Control.WheelZoom(); this.mapManager.addControl(this.wheelZoomControl); this.wheelZoomControl.activate(); var _2b3=new OpenLayers.Control.Button({trigger:dojo.hitch(this,function(){ this.selectionManager.clearQuerySelection(); })}); this.addSimpleControl("clearQuerySelection",_2b3); var _2b4=new OpenLayers.Control.Button({trigger:dojo.hitch(this,function(flag){ if(this.fullScreen){ dijit.byId("headerPanel").domNode.style.height="68px"; dijit.byId("init-tot").resize(); this.fullScreen=false; }else{ dijit.byId("headerPanel").domNode.style.height="0px"; dijit.byId("init-tot").resize(); this.fullScreen=true; } })}); this.addSimpleControl("fullScreen",_2b4); this.selectControl("dragPan"); if(this.objectManager.getObjDef("editingManager")==null){ var _2b5=new _3dgis.cwf.manager.EditingManager({mapManager:this.mapManager,layerManager:this.layerManager,selectionManager:this.selectionManager,controlManager:this,hidePanels:this.hidePanels}); this.objectManager.set("editingManager",_2b5); } this.mapManager.addControl(new OpenLayers.Control.LoadingPanel()); this.mapManager.addControl(new OpenLayers.Control.ScaleLine({bottomInUnits:""})); },addControl:function(name,_2b6){ this.initButton(name); this.controls[name]=_2b6; this.mapManager.addControl(_2b6); },addSimpleControl:function(name,_2b7){ this.initButton(name); this.simpleControls[name]=_2b7; this.mapManager.addControl(_2b7); },initButton:function(name){ dojo.connect(dijit.byId("map-control-button-"+name),"onClick",this,function(e){ if(this.simpleControls[name]){ this.selectSimpleControl(name); }else{ this.selectControl(name); } }); },selectControl:function(name){ if(this.currentControlName){ var w=dijit.byId("map-control-button-"+this.currentControlName); if(w){ w.set("checked",false); } } var _2b8=this.controls[name]; for(var key in this.controls){ if(key!=name){ this.controls[key].deactivate(); } } _2b8.activate(); this.currentControlName=name; dijit.byId("map-control-button-"+this.currentControlName).set("checked",true); },selectSimpleControl:function(name){ this.simpleControls[name].trigger(); },getControl:function(name){ return this.controls[name]; },getCurrentControl:function(){ return this.controls[this.currentControlName]; },disableAllControls:function(flag){ for(var _2b9 in this.simpleControls){ var _2ba=dijit.byId("map-control-button-"+_2b9); if(_2ba){ _2ba.set("disabled",flag); } } for(var _2b9 in this.controls){ var _2ba=dijit.byId("map-control-button-"+_2b9); if(_2ba){ _2ba.set("disabled",flag); } } if(flag){ this.controls[this.currentControlName].deactivate(); }else{ this.selectControl(this.currentControlName); } var _2bb=dojo.query(".mapControl"); for(var i=0;i<_2bb.length;i++){ dijit.byNode(_2bb[i]).set("disabled",flag); } }}); dojo.provide("_3dgis.cwf.dialog.SimpleFeatureDialog"); dojo.require("_3dgis.wf.dialog.SimpleElementDialog"); dojo.declare("_3dgis.cwf.dialog.SimpleFeatureDialog",_3dgis.wf.dialog.SimpleElementDialog,{mapManager:null,selectionManager:null,geometry:null,editingHandler:null,cancelEditingHandler:null,constructor:function(){ this.dialogOptions={title:_3dgis.settings.i18n["featureProperty"]}; },postConstructor:function(){ this.inherited(arguments); this.dialogEditingLayer=this.mapManager.getLayer("dialogEditing"); },onHide:function(){ this.inherited(arguments); this.selectionManager.dehighlightSelectedFeature(); if(this.hidden===false){ this.selectionManager.showSelection(true); } if(this.geometry){ this.dialogEditingLayer.destroyFeatures(); } },postGet:function(){ this.geometry=null; this.editing=false; this.selectionManager.showSelection(false); this.selectionManager.highlightSelectedFeature(); this.inherited(arguments); },getDataToSave:function(){ var data=this.inherited(arguments); if(this.geometry){ data[_3dgis.wf.util.lcfirst(this.type)+".geometry"]=this.geometry.toString(); } return data; },postNewElement:function(){ this.inherited(arguments); if(this.newElementParams&&this.newElementParams.geometry){ this.logger.debug("set geometry",this.newElementParams.geometry); this.geometry=this.newElementParams.geometry; }else{ this.logger.error("no geometry param"); } },postParse:function(){ this.inherited(arguments); this.registerButton("editGeometry",["create","update"],this.editGeometry); },getLayerByElementType:function(){ return this.type; },postSave:function(){ this.inherited(arguments); if(this.geometry&&this.pojo){ this.selectionManager.modifySelectionFeature(this.type,this.pojo,this.geometry); } this.mapManager.reloadLayerByElementType(this.getLayerByElementType()); },postDelete:function(){ this.inherited(arguments); this.mapManager.reloadLayerByElementType(this.getLayerByElementType()); this.selectionManager.removeFeatureFromSelection(this.type,this.pojo.id); },editGeometry:function(){ this.editingHandler=dojo.subscribe("map/editing/modify/stop",this,function(_2bc){ dojo.unsubscribe(this.cancelEditingHandler); dojo.unsubscribe(this.editingHandler); this.geometry=_2bc; this.dialogEditingLayer.destroyFeatures(); this.dialogEditingLayer.addFeatures([new OpenLayers.Feature.Vector(_2bc)]); this.postSetGeometry(); this.show(); this.dialogEditingLayer.redraw(); }); this.cancelEditingHandler=dojo.subscribe("map/editing/cancel",this,function(){ dojo.unsubscribe(this.cancelEditingHandler); dojo.unsubscribe(this.editingHandler); if(this.dialogEditingLayer.features.length!==0){ this.selectionManager.highlightSelectedFeature(); } this.show(); }); var _2bd={geometry:this.geometry,checkUrl:"map/json/checkGeometry-"+this.type,layerName:_3dgis.wf.util.string.fromCamelCaseToUnderscore(this.type)}; if(this.pojo){ _2bd.startGeometry=this.pojo.geometry; }else{ _2bd.startGeometry=this.geometry; } var opt=this.prepareEditingOptions(_2bd); dojo.publish("map/editing/modify/start",[opt]); this.hide(); },prepareEditingOptions:function(opt){ return opt; },postSetGeometry:function(){ },show:function(){ this.hidden=false; this.inherited(arguments); },hide:function(){ this.hidden=true; this.inherited(arguments); }}); dojo.provide("_3dgis.cwf.dialog.BufferDialog"); dojo.require("_3dgis.wf.dialog.CommandDialog"); dojo.declare("_3dgis.cwf.dialog.BufferDialog",_3dgis.wf.dialog.CommandDialog,{constructor:function(){ this.prefix="buffer-dialog-"; this.dialogUrl="dialog/html/buffer"; },execCommand:function(){ if(dijit.byId(this.prefix+"form").isValid()){ var val=dijit.byId(this.prefix+"form_buffer_range").get("value"); var data={range:val}; this.close(); this.onCreate(data); }else{ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["error.input"],type:"error"}]); } },init:function(arg){ this.setTitle(_3dgis.settings.i18n[arg+"Buffer"]); dijit.byId(this.prefix+"form_buffer_range").reset(); },onCreate:function(data){ }}); dojo.provide("_3dgis.cwf.controller.SearchController"); dojo.require("_3dgis.cwf.manager.SpatialFilterManager"); dojo.require("_3dgis.cwf.dialog.BufferDialog"); dojo.require("_3dgis.wf.controller.OperationProgressController"); dojo.declare("_3dgis.cwf.controller.SearchController",null,{mapManager:null,selectionManager:null,currentElementType:null,alphaNumFilterPrefix:"map-search-element-filter-alphaNum-",spatialFilterPrefix:"map-search-element-filter-spatial-",searchDefinitions:null,alphaNumConditionIndex:0,totalAlphaNumConditionNumber:0,spatialConditionIndex:0,totalSpatialConditionNumber:0,spatialConditions:null,maxRecordBringToSelection:100,selectWidth:150,listPropertySelectPageSize:20,gridLayouts:null,isFeatureSelection:false,searchBaseUrl:"list/json/store-${elementType}",bringToSelectionBaseUrl:"list/json/store-${elementType}",constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.gridLayouts={}; },postConstructor:function(_2be){ this.wktParser=new OpenLayers.Format.WKT(); dojo.connect(dijit.byId(this.alphaNumFilterPrefix+"button-addCondition"),"onClick",this,this.addAlphaNumCondition); dojo.connect(dijit.byId(this.alphaNumFilterPrefix+"button-reset"),"onClick",this,this.removeAllAlphaNumConditions); dojo.connect(dijit.byId(this.alphaNumFilterPrefix+"button-search"),"onClick",this,this.search); dojo.connect(dijit.byId(this.spatialFilterPrefix+"button-reset"),"onClick",this,this.removeAllSpatialConditions); dojo.connect(dijit.byId(this.spatialFilterPrefix+"button-search"),"onClick",this,this.search); dojo.connect(dijit.byId(this.spatialFilterPrefix+"pointBuffer"),"onClick",this,this.addPointBufferCondition); dojo.connect(dijit.byId(this.spatialFilterPrefix+"lineBuffer"),"onClick",this,this.addLineBufferCondition); dojo.connect(dijit.byId(this.spatialFilterPrefix+"polygon"),"onClick",this,this.addPolygonCondition); dojo.connect(dijit.byId(this.spatialFilterPrefix+"currentBBox"),"onClick",this,this.addCurrentBBoxCondition); dojo.connect(dijit.byId(this.spatialFilterPrefix+"zone"),"onClick",this,this.addZoneCondition); this.alphaNumFilterTable=dojo.byId(this.alphaNumFilterPrefix+"table"); this.spatialFilterTable=dojo.byId(this.spatialFilterPrefix+"table"); this.alphaNumFilterSelect=dijit.byId(this.alphaNumFilterPrefix+"andor-select"); this.spatialFilterSelect=dijit.byId(this.spatialFilterPrefix+"andor-select"); this.mainStackContainer=dijit.byId("map-search-element-stackContainer"); dojo.connect(dijit.byId("map-search-element-grid-toolbar-back"),"onClick",this,function(){ this.mainStackContainer.selectChild("map-search-element-filter-cp"); }); dojo.connect(dijit.byId("map-search-element-grid-toolbar-bringToSelection"),"onClick",this,this.bringToSelection); dojo.connect(dijit.byId("map-search-element-stackContainer"),"onShow",this,function(){ this.setTitle(); }); this.numAndDateOptions=[{label:_3dgis.settings.i18n["condition.equalTo"],value:"EQ"},{label:_3dgis.settings.i18n["condition.notEqualTo"],value:"NEQ"},{label:_3dgis.settings.i18n["condition.lessThan"],value:"LT"},{label:_3dgis.settings.i18n["condition.lessThanOrEqual"],value:"LTE"},{label:_3dgis.settings.i18n["condition.greaterThan"],value:"GT"},{label:_3dgis.settings.i18n["condition.greaterThanOrEqual"],value:"GTE"},{label:_3dgis.settings.i18n["condition.isNull"],value:"IS_NULL"},{label:_3dgis.settings.i18n["condition.isNotNull"],value:"IS_NOT_NULL"}]; this.stringOptions=[{label:_3dgis.settings.i18n["condition.contains"],value:"LIKE"},{label:_3dgis.settings.i18n["condition.notContains"],value:"NOT_LIKE"},{label:_3dgis.settings.i18n["condition.equalTo"],value:"EQ"},{label:_3dgis.settings.i18n["condition.notEqualTo"],value:"NEQ"},{label:_3dgis.settings.i18n["condition.isEmpty"],value:"IS_EMPTY"},{label:_3dgis.settings.i18n["condition.isNotEmpty"],value:"IS_NOT_EMPTY"},{label:_3dgis.settings.i18n["condition.isNull"],value:"IS_NULL"},{label:_3dgis.settings.i18n["condition.isNotNull"],value:"IS_NOT_NULL"}]; this.listOptions=[{label:_3dgis.settings.i18n["condition.equalTo"],value:"EQ"},{label:_3dgis.settings.i18n["condition.notEqualTo"],value:"NEQ"},{label:_3dgis.settings.i18n["condition.isNull"],value:"IS_NULL"},{label:_3dgis.settings.i18n["condition.isNotNull"],value:"IS_NOT_NULL"}]; this.booleanOptions=[{label:_3dgis.settings.i18n["condition.isTrue"],value:"IS_TRUE"},{label:_3dgis.settings.i18n["condition.isFalse"],value:"IS_FALSE"},{label:_3dgis.settings.i18n["condition.isNull"],value:"IS_NULL"},{label:_3dgis.settings.i18n["condition.isNotNull"],value:"IS_NOT_NULL"}]; this.spatialOperatorOptions=[{label:_3dgis.settings.i18n["condition.intersects"],value:"INTERSECTS"},{label:_3dgis.settings.i18n["condition.disjoint"],value:"DISJOINT"},{label:_3dgis.settings.i18n["condition.within"],value:"WITHIN"}]; this.toggleAlphaNumAndOr(); this.toggleSpatialAndOr(); dojo.subscribe("map/currentSelectedLayer",this,this.onSelectedLayer); this.spatialConditions={}; dojo.subscribe("map/search/export",this,this.exportData); this.operationProgressController=new _3dgis.wf.controller.OperationProgressController({prefix:"search-dataExport",operationMessage:_3dgis.settings.i18n["exportingData"],indeterminate:true,onSuccess:function(){ }}); this.bufferDialog=new _3dgis.cwf.dialog.BufferDialog(); this.bufferDialog.postConstructor(); this.bufferDialog.execCancel=dojo.hitch(this,function(){ this.mapManager.getLayer("tempBuffer").destroyFeatures(); }); this.manageBringToSelectionButton(); this.elementSelector=dijit.byId("map-search-element-selector-select"); if(this.elementSelector){ dojo.connect(this.elementSelector,"onChange",this,this.onChangeElementSelector); } },manageBringToSelectionButton:function(){ dojo.subscribe("map/featureSelection",this,function(){ this.disableBringToSelectionButton(false); this.isFeatureSelection=true; }); dojo.subscribe("map/featureSelection/stop",this,function(){ this.disableBringToSelectionButton(false); this.isFeatureSelection=false; }); dojo.subscribe("map/featureSelection/abort",this,function(){ this.disableBringToSelectionButton(false); this.isFeatureSelection=false; }); },disableBringToSelectionButton:function(_2bf){ dijit.byId("map-search-element-grid-toolbar-bringToSelection").set("disabled",_2bf); },onSelectedLayer:function(_2c0){ this.currentSelectedLayer=_2c0; this.logger.debug("current selected layer",this.currentSelectedLayer); if(_2c0&&_2c0.queryable){ if(_2c0.complex){ this.logger.debug("selected layer is complex"); this.filterDefinition={}; this.filterDefinitions={}; var _2c1=[]; for(var i=0;i<_2c0.subLayers.length;i++){ var _2c2=_2c0.subLayers[i]; if(_2c2.queryable){ var _2c3=_2c2.layerName; this.logger.debug("sub layer name",_2c3); var _2c4=this.layerManager.getElementTypeForLayerName(_2c3); this.logger.debug("sub layer element",_2c4); var _2c5=this.searchDefinitions[_2c4]; this.logger.debug("filter definition",_2c5); if(_2c5){ this.filterDefinitions[_2c4]=_2c5; } var _2c6=_3dgis.wf.util.fromUnderscoreToLowerCamelCase(_2c3); _2c1.push({label:_3dgis.settings.i18n[_2c6],value:_2c4}); } } if(_2c1.length>0){ this.showElementSelector(true); this.elementSelector.set("options",_2c1); this.elementSelector.removeOption(this.elementSelector.getOptions()); this.elementSelector.addOption(_2c1); this.elementSelector.reset(); this.currentElementType=_2c1[0].value; this.filterDefinition=this.filterDefinitions[this.currentElementType]; this.elementSelector.set("value",_2c1[0].value,false); this.initSearch(); }else{ this.showElementSelector(false); this.hideSearch(); } }else{ this.showElementSelector(false); this.currentElementType=this.layerManager.getElementTypeForLayerName(_2c0.layerName); this.filterDefinition=this.searchDefinitions[this.currentElementType]; if(this.filterDefinition){ this.initSearch(); }else{ this.hideSearch(); } } }else{ this.hideSearch(); } },showElementSelector:function(flag){ var _2c7=flag?"":"none"; if(this.elementSelector){ this.elementSelector.domNode.style.display=_2c7; dojo.byId("map-search-element-selector-label").style.display=_2c7; } },onChangeElementSelector:function(){ this.currentElementType=this.elementSelector.get("value"); this.filterDefinition=this.filterDefinitions[this.currentElementType]; this.removeAllAlphaNumConditions(); this.initGridAndAlphaNumFilter(); },initSearch:function(){ var key=_3dgis.wf.util.fromUnderscoreToLowerCamelCase(this.currentSelectedLayer.layerName); this.currentTitle=_3dgis.settings.i18n["layerSearch"]+": "+_3dgis.settings.i18n[key]; this.setTitle(); this.removeAllAlphaNumConditions(); this.initGridAndAlphaNumFilter(); this.mainStackContainer.selectChild("map-search-element-filter-cp"); },setTitle:function(){ },resetTitle:function(){ },hideSearch:function(){ this.mainStackContainer.selectChild("map-search-element-noFilter-cp"); },initGridAndAlphaNumFilter:function(){ this.propertiesOptions=[]; this.currentGridLayout=[]; var _2c8="100%"; if(this.filterDefinition){ _2c8=Math.floor(100/this.filterDefinition.length)+"%"; } for(var key in this.filterDefinition){ this.propertiesOptions.push({label:this.filterDefinition[key].label,value:this.filterDefinition[key].value}); if(this.gridLayouts[this.currentElementType]==null){ if(this.filterDefinition[key].excludeFromGrid!==true){ this.currentGridLayout.push({field:this.filterDefinition[key].value,name:this.filterDefinition[key].label,width:_2c8}); } } } if(this.gridLayouts[this.currentElementType]!=null){ this.currentGridLayout=this.gridLayouts[this.currentElementType]; } this.logger.debug("current element type",this.currentElementType); this.logger.debug("property options",this.propertiesOptions); this.logger.debug("current grid layout",this.currentGridLayout); },resetFilters:function(){ this.mapManager.getLayer("search").destroyFeatures(); this.removeAllAlphaNumConditions(); this.removeAllSpatialConditions(); this.spatialConditions={}; },search:function(){ this.currentGridStore=null; if(this.currentGrid){ this.currentGrid.destroy(true); } var _2c9={pagination:_3dgis.wf.util.commonGridPaginationPluginConf}; this.currentGrid=new dojox.grid.EnhancedGrid({store:new dojo.data.ObjectStore({objectStore:new dojo.store.Memory({data:[]})}),structure:this.currentGridLayout,escapeHTMLInData:false,plugins:_2c9},dojo.byId("map-search-element-grid")); this.currentGrid.startup(); dojo.connect(this.currentGrid,"onRowDblClick",this,this.bringSingleRecordToSelection); if(this.validateAlphaNumConditions()){ this.currentFilter=this.createSearchFilter(); if(this.currentFilter!=null){ var _2ca=this.createSearchUrl(this.currentFilter); var _2cb=new _3dgis.wf.dojox.data.QueryReadStore({url:_2ca}); this.currentGrid.setStore(_2cb); dijit.byId("map-search-element-stackContainer").forward(); } }else{ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["error.input"],type:"error"}]); } },createSearchFilter:function(){ var _2cc="AND"; if(this.alphaNumFilterSelect.get("value")=="0"){ _2cc="OR"; } var _2cd="AND"; if(this.spatialFilterSelect.get("value")=="0"){ _2cd="OR"; } var _2ce=new _3dgis.cwf.manager.SpatialFilterManager({logicOperator:_2cc,spatialLogicOperator:_2cd}); if(this.totalAlphaNumConditionNumber!==0){ for(var i=1;i<=this.alphaNumConditionIndex;i++){ if(dojo.byId(this.alphaNumFilterPrefix+"conditionRow-"+i)){ this.addAlphaNumConditionToFilter(i,_2ce); } } } if(this.totalSpatialConditionNumber!==0){ for(var i=1;i<=this.spatialConditionIndex;i++){ if(dojo.byId(this.spatialFilterPrefix+"conditionRow-"+i)){ this.addSpatialConditionToFilter(i,_2ce); } } } return _2ce; },validateAlphaNumConditions:function(){ var _2cf=true; if(this.totalAlphaNumConditionNumber!==0){ for(var i=1;i<=this.alphaNumConditionIndex;i++){ if(dojo.byId(this.alphaNumFilterPrefix+"conditionRow-"+i)){ var _2d0=dijit.byId(this.alphaNumFilterPrefix+"value-"+i); if(!_2d0.get("disabled")&&dojo.isFunction(_2d0.isValid)&&!_2d0.isValid()){ _2cf=false; break; } } } } return _2cf; },addAlphaNumConditionToFilter:function(i,_2d1){ var _2d2=dijit.byId(this.alphaNumFilterPrefix+"value-"+i); var _2d3=dijit.byId(this.alphaNumFilterPrefix+"property-"+i).get("value"); var _2d4=dijit.byId(this.alphaNumFilterPrefix+"operator-"+i).get("value"); var _2d5=_2d2.get("value"); _2d1.addCondition(_2d3,_2d4,_2d5); },addSpatialConditionToFilter:function(i,_2d6){ var _2d7=dijit.byId(this.spatialFilterPrefix+"operator-"+i).get("value"); var _2d8=null; if(this.spatialConditions[i].type=="currentBBox"){ _2d8=this.mapManager.getOpenLayersMap().getExtent().toGeometry(); }else{ _2d8=this.spatialConditions[i].mainGeometry.toString(); } _2d6.addSpatialCondition(_2d7,_2d8); },createSearchUrl:function(_2d9){ var url=""; if(_2d9.getConditionNumber()>0){ url=dojo.string.substitute(this.searchBaseUrl,{elementType:this.currentElementType})+"?"+_2d9.toKvp(); }else{ url=dojo.string.substitute(this.searchBaseUrl,{elementType:this.currentElementType}); } return url; },createBringToSelectionUrl:function(_2da){ var url=""; if(_2da.getConditionNumber()>0){ url=dojo.string.substitute(this.bringToSelectionBaseUrl,{elementType:this.currentElementType})+"?"+_2da.toKvp(); }else{ url=dojo.string.substitute(this.bringToSelectionBaseUrl,{elementType:this.currentElementType}); } return url; },substituteElement:function(_2db){ var elem=dijit.byId(_2db); var node=null; if(elem){ node=elem.domNode; elem.destroy(true); node.id=_2db; }else{ node=dojo.byId(_2db); } return node; },addAlphaNumCondition:function(){ this.alphaNumConditionIndex++; this.totalAlphaNumConditionNumber++; var _2dc=dojo.doc.createElement("tr"); _2dc.id=this.alphaNumFilterPrefix+"conditionRow-"+this.alphaNumConditionIndex; var _2dd=dojo.doc.createElement("table"); _2dd.id=this.alphaNumFilterPrefix+"conditionTable-"+this.alphaNumConditionIndex; dojo.addClass(_2dd,"conditionTable"); var tr=dojo.doc.createElement("tr"); var td=dojo.doc.createElement("td"); dojo.addClass(td,"property"); var div=dojo.doc.createElement("div"); div.id=this.alphaNumFilterPrefix+"property-"+this.alphaNumConditionIndex; td.appendChild(div); var el=new dijit.form.Select({options:this.propertiesOptions,style:"width: "+this.selectWidth+"px;"},div); dojo.addClass(el,"fixedWidth"); var num=this.alphaNumConditionIndex; el.onChange=dojo.hitch(this,function(){ this.selectProperty(num); }); tr.appendChild(td); td=dojo.doc.createElement("td"); dojo.addClass(td,"operator"); div=dojo.doc.createElement("div"); div.id=this.alphaNumFilterPrefix+"operator-"+this.alphaNumConditionIndex; td.appendChild(div); el=new dijit.form.Select({style:"width: "+this.selectWidth+"px;"},div); el.onChange=dojo.hitch(this,this.onChangeProperty,this.alphaNumConditionIndex); tr.appendChild(td); td=dojo.doc.createElement("td"); td.id=this.alphaNumFilterPrefix+"td-value-"+this.alphaNumConditionIndex; div=dojo.doc.createElement("div"); div.id=this.alphaNumFilterPrefix+"value-"+this.alphaNumConditionIndex; td.appendChild(div); new dijit.form.TextBox({},div); tr.appendChild(td); td=dojo.doc.createElement("td"); dojo.addClass(td,"iconRemove"); var _2de=dojo.doc.createElement("div"); _2de.id=this.alphaNumFilterPrefix+"removeCondition-"+this.alphaNumConditionIndex; dojo.addClass(_2de,"removeCondition"); _2de.onclick=dojo.hitch(this,function(num){ this.removeAlphaNumCondition(num); },this.alphaNumConditionIndex); td.appendChild(_2de); tr.appendChild(td); _2dd.appendChild(tr); _2dc.appendChild(_2dd); this.alphaNumFilterTable.appendChild(_2dc); el.set("value",this.propertiesOptions[0].value); this.selectProperty(this.alphaNumConditionIndex); this.toggleAlphaNumAndOr(); },onChangeProperty:function(num,_2df){ var w=dijit.byId(this.alphaNumFilterPrefix+"value-"+num); if(_2df=="IS_EMPTY"||_2df=="IS_NOT_EMPTY"||_2df=="IS_NULL"||_2df=="IS_NOT_NULL"||_2df=="IS_TRUE"||_2df=="IS_FALSE"){ w.domNode.style.display="none"; w.set("disabled",true); }else{ w.domNode.style.display=""; w.set("disabled",false); } },removeAlphaNumCondition:function(num){ this.totalAlphaNumConditionNumber--; dijit.byId(this.alphaNumFilterPrefix+"property-"+num).destroy(); dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).destroy(); dijit.byId(this.alphaNumFilterPrefix+"value-"+num).destroy(); dojo.destroy(dojo.byId(this.alphaNumFilterPrefix+"removeCondition-"+num)); dojo.destroy(dojo.byId(this.alphaNumFilterPrefix+"conditionRow-"+num)); this.toggleAlphaNumAndOr(); },removeAllAlphaNumConditions:function(){ for(var i=1;i<=this.alphaNumConditionIndex;i++){ if(dojo.byId(this.alphaNumFilterPrefix+"conditionRow-"+i)){ this.removeAlphaNumCondition(i); } } this.alphaNumConditionIndex=0; },toggleAlphaNumAndOr:function(){ if(this.totalAlphaNumConditionNumber>1){ this.alphaNumFilterSelect.set("disabled",false); }else{ this.alphaNumFilterSelect.set("disabled",true); } },removeSpatialCondition:function(num){ var _2e0=this.spatialConditions[num].vectors; for(var i=0;i<_2e0.length;i++){ _2e0[i].destroy(); } delete this.spatialConditions[num]; dijit.byId(this.spatialFilterPrefix+"operator-"+num).destroy(); dojo.destroy(dojo.byId(this.spatialFilterPrefix+"removeCondition-"+num)); dojo.destroy(dojo.byId(this.spatialFilterPrefix+"zoom-"+num)); dojo.destroy(dojo.byId(this.spatialFilterPrefix+"conditionRow-"+num)); this.totalSpatialConditionNumber--; this.toggleSpatialAndOr(); },removeAllSpatialConditions:function(){ for(var i=1;i<=this.spatialConditionIndex;i++){ if(dojo.byId(this.spatialFilterPrefix+"conditionRow-"+i)){ this.removeSpatialCondition(i); } } this.spatialConditionIndex=0; },toggleSpatialAndOr:function(){ if(this.totalSpatialConditionNumber>1){ this.spatialFilterSelect.set("disabled",false); }else{ this.spatialFilterSelect.set("disabled",true); } },selectProperty:function(num){ var val=dijit.byId(this.alphaNumFilterPrefix+"property-"+num).get("value"); for(var i=0;i0)?_2e1[0].id:null,pageSize:this.listPropertySelectPageSize},this.substituteElement(this.alphaNumFilterPrefix+"value-"+num)); dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).options=this.listOptions; dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).set("value",this.listOptions[0].value); dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).startup(); break; case "boolean": dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).options=this.booleanOptions; dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).set("value",this.booleanOptions[0].value); dijit.byId(this.alphaNumFilterPrefix+"operator-"+num).startup(); break; } break; } } },addSpatialCondition:function(){ this.spatialConditionIndex++; this.totalSpatialConditionNumber++; this.toggleSpatialAndOr(); },addPointBufferCondition:function(){ this.createHandle=dojo.subscribe("map/editing/create/stop",this,function(_2e2){ dojo.unsubscribe(this.createHandle); dojo.unsubscribe(this.cancelHandle); this.editingGeometry=_2e2.clone(); var _2e3=new OpenLayers.Feature.Vector(_2e2.clone()); this.mapManager.getLayer("tempBuffer").addFeatures([_2e3]); this.bufferDialog.onCreate=dojo.hitch(this,this.addPointBufferRow); this.bufferDialog.show("point"); }); this.cancelHandle=dojo.subscribe("map/editing/cancel",this,function(){ dojo.unsubscribe(this.createHandle); dojo.unsubscribe(this.cancelHandle); }); dojo.publish("map/editing/create/start",[{geometryType:"point",message:_3dgis.settings.i18n["drawPointBuffer"]}]); },addPointBufferRow:function(data){ this.addSpatialCondition(); var _2e4=OpenLayers.Geometry.Polygon.createRegularPolygon(this.editingGeometry,data.range,20,0); var _2e5=new OpenLayers.Feature.Vector(this.editingGeometry); var _2e6=new OpenLayers.Feature.Vector(_2e4); var _2e7=[_2e5,_2e6]; this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=_2e7; this.spatialConditions[this.spatialConditionIndex].mainGeometry=_2e6.geometry; this.spatialConditions[this.spatialConditionIndex].type="pointBuffer"; this.mapManager.getLayer("search").addFeatures(_2e7); this.mapManager.getLayer("tempBuffer").destroyFeatures(); this.addSpatialConditionRow(_3dgis.settings.i18n["pointBuffer"]+" ("+data.range+"m)",true); },addLineBufferCondition:function(){ this.createHandle=dojo.subscribe("map/editing/create/stop",this,function(_2e8){ dojo.unsubscribe(this.createHandle); dojo.unsubscribe(this.cancelHandle); this.editingGeometry=_2e8.clone(); var _2e9=new OpenLayers.Feature.Vector(_2e8.clone()); this.mapManager.getLayer("tempBuffer").addFeatures([_2e9]); this.bufferDialog.onCreate=dojo.hitch(this,this.addLineBufferRow); this.bufferDialog.show("line"); }); this.cancelHandle=dojo.subscribe("map/editing/cancel",this,function(){ dojo.unsubscribe(this.createHandle); dojo.unsubscribe(this.cancelHandle); }); dojo.publish("map/editing/create/start",[{geometryType:"line",message:_3dgis.settings.i18n["drawLineBuffer"]}]); },addLineBufferRow:function(data){ this.addSpatialCondition(); dojo.publish("map/editing/cancelGeometry"); var _2ea={lineString:this.editingGeometry.toString(),distance:data.range}; _3dgis.wf.util.ajax("map/json/lineBuffer",_2ea,dojo.hitch(this,function(_2eb){ if(_2eb.result=="success"){ var _2ec=this.wktParser.read(_2eb.data); var _2ed=new OpenLayers.Feature.Vector(this.editingGeometry); var _2ee=[_2ed,_2ec]; this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=_2ee; this.spatialConditions[this.spatialConditionIndex].mainGeometry=_2ec.geometry; this.spatialConditions[this.spatialConditionIndex].type="lineBuffer"; this.mapManager.getLayer("search").addFeatures(_2ee); this.mapManager.getLayer("tempBuffer").destroyFeatures(); this.addSpatialConditionRow(_3dgis.settings.i18n["lineBuffer"]+" ("+data.range+"m)",true); } })); },addPolygonCondition:function(){ dojo.publish("map/editing/create/start",[{geometryType:"polygon"}]); this.createHandle=dojo.subscribe("map/editing/create/stop",this,function(_2ef){ dojo.unsubscribe(this.createHandle); this.addSpatialCondition(); dojo.publish("map/editing/cancelGeometry"); var _2f0=new OpenLayers.Feature.Vector(_2ef); var _2f1=[_2f0]; this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=_2f1; this.spatialConditions[this.spatialConditionIndex].mainGeometry=_2f0.geometry; this.spatialConditions[this.spatialConditionIndex].type="polygon"; this.mapManager.getLayer("search").addFeatures(_2f1); this.addSpatialConditionRow(_3dgis.settings.i18n["polygon"],true); }); },addRectCondition:function(){ dojo.publish("map/editing/create/start",[{geometryType:"rect"}]); this.createHandle=dojo.subscribe("map/editing/create/stop",this,function(_2f2){ dojo.unsubscribe(this.createHandle); this.addSpatialCondition(); dojo.publish("map/editing/cancelGeometry"); var _2f3=new OpenLayers.Feature.Vector(_2f2); var _2f4=[_2f3]; this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=_2f4; this.spatialConditions[this.spatialConditionIndex].mainGeometry=_2f3.geometry; this.spatialConditions[this.spatialConditionIndex].type="rect"; this.mapManager.getLayer("search").addFeatures(_2f4); this.addSpatialConditionRow(_3dgis.settings.i18n["rect"],true); }); },addCurrentBBoxCondition:function(){ var _2f5=false; for(var key in this.spatialConditions){ if(this.spatialConditions[key].type=="currentBBox"){ _2f5=true; break; } } if(!_2f5){ this.addSpatialCondition(); this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=[]; this.spatialConditions[this.spatialConditionIndex].type="currentBBox"; this.addSpatialConditionRow(_3dgis.settings.i18n["currentBBox"],false); }else{ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["duplicateCondition"],type:"error"}]); } },addZoneCondition:function(){ this.addSpatialCondition(); this.spatialConditions[this.spatialConditionIndex]={}; this.spatialConditions[this.spatialConditionIndex].vectors=[]; this.spatialConditions[this.spatialConditionIndex].type="zone"; this.addSpatialConditionRow(_3dgis.settings.i18n["zone"],true); },addSpatialConditionRow:function(text,_2f6){ var tr=dojo.doc.createElement("tr"); tr.id=this.spatialFilterPrefix+"conditionRow-"+this.spatialConditionIndex; var td=dojo.doc.createElement("td"); dojo.addClass(td,"operator"); var div=dojo.doc.createElement("div"); div.id=this.spatialFilterPrefix+"operator-"+this.spatialConditionIndex; td.appendChild(div); var el=new dijit.form.Select({options:this.spatialOperatorOptions,style:"width: "+this.selectWidth+"px;"},div); tr.appendChild(td); td=dojo.doc.createElement("td"); div=dojo.doc.createElement("div"); div.innerHTML=text; td.appendChild(div); tr.appendChild(td); td=dojo.doc.createElement("td"); dojo.addClass(td,"iconZoom"); var _2f7=null; if(_2f6){ _2f7=dojo.doc.createElement("div"); _2f7.id=this.spatialFilterPrefix+"zoom-"+this.spatialConditionIndex; dojo.addClass(_2f7,"zoom"); _2f7.onclick=dojo.hitch(this,function(num){ this.zoomToConditionGeometry(num); },this.spatialConditionIndex); td.appendChild(_2f7); } tr.appendChild(td); td=dojo.doc.createElement("td"); dojo.addClass(td,"iconRemove"); _2f7=dojo.doc.createElement("div"); _2f7.id=this.spatialFilterPrefix+"removeCondition-"+this.spatialConditionIndex; dojo.addClass(_2f7,"removeCondition"); _2f7.onclick=dojo.hitch(this,function(num){ this.removeSpatialCondition(num); },this.spatialConditionIndex); td.appendChild(_2f7); tr.appendChild(td); this.spatialFilterTable.appendChild(tr); },zoomToConditionGeometry:function(num){ this.mapManager.zoomToGeometry(this.spatialConditions[num].mainGeometry.toString(),true); },exportData:function(type){ var url="export/"+this.currentElementType+"?exportFileType="+type; if(this.currentFilter.getConditionNumber()>0){ url+="&"+this.currentFilter.toKvp(); } dojo.byId("init-iframe-download").setAttribute("src",url); this.operationProgressController.start(); },bringToSelection:function(){ if(this.currentGrid.store._numRows>0){ var url=this.createBringToSelectionUrl(this.currentFilter); if(url.indexOf("?")==-1){ url+="?"; }else{ url+="&"; } var _2f8=this.getCurrentRecordType(); var _2f9=true; if(this.isFeatureSelection){ if(dojo.indexOf(this.selectionManager.featureSelectionTypes,_2f8)===-1){ _2f9=false; } } if(_2f9){ url+="filter.start=0&filter.count="+this.maxRecordBringToSelection; _3dgis.wf.util.ajax(url,{},dojo.hitch(this,function(_2fa){ var _2fb=_3dgis.settings.i18n[this.currentElementType]; var _2fc=[]; this.logger.debug("current record type",_2f8); this.numRows=_2fa.items.length; if(this.numRows>0){ if(this.currentGrid.store._numRows>this.maxRecordBringToSelection){ var msg=dojo.string.substitute(_3dgis.settings.i18n["onlySomeRecordsBringToSelection"],[this.maxRecordBringToSelection]); dojo.publish("infoMessage",[{message:msg,type:"warning"}]); } }else{ var msg=dojo.string.substitute(_3dgis.settings.i18n["noRecordsBringToSelection"],[this.maxRecordBringToSelection]); dojo.publish("infoMessage",[{message:msg,type:"warning"}]); } for(var i=0;i<_2fa.items.length;i++){ var item=_2fa.items[i]; _2fc.push({id:item.id,recordType:_2f8,label:_2fb,geometry:item.geometry,area:item.area,length:item.length}); } if(this.isFeatureSelection){ this.selectionManager.displaySelectedFeatures(_2fc); this.selectionManager.zoomToSelection(); }else{ this.selectionManager.displayFeatures(_2fc,false); this.selectionManager.zoomToSelection(); } })); }else{ var msg=dojo.string.substitute(_3dgis.settings.i18n["recordTypeNotToBringToSelection"],[this.maxRecordBringToSelection]); dojo.publish("infoMessage",[{message:msg,type:"warning"}]); } } },getCurrentRecordType:function(){ var _2fd=null; if(this.currentSelectedLayer.complex){ var _2fe=this.currentSelectedLayer.subLayerNames; for(var i=0;i<_2fe.length;i++){ var _2ff=_2fe[i]; var _300=this.layerManager.getElementTypeForLayerName(_2ff); if(_300===this.currentElementType){ _2fd=this.layerManager.getRecordTypeForLayerName(_2ff); break; } } }else{ _2fd=this.layerManager.getRecordTypeForLayerName(this.currentSelectedLayer.layerName); } return _2fd; },bringSingleRecordToSelection:function(){ var _301=this.currentGrid.selection.getFirstSelected(); var _302=this.getCurrentRecordType(); var _303=true; if(this.isFeatureSelection){ if(dojo.indexOf(this.selectionManager.featureSelectionTypes,_302)===-1){ _303=false; } } if(_303){ var id=this.currentGrid.store.getValue(_301,"id"); var _304=new _3dgis.cwf.manager.SpatialFilterManager(); _304.addCondition("id","EQ",id); var url=this.createBringToSelectionUrl(_304); _3dgis.wf.util.ajax(url,{},dojo.hitch(this,function(_305){ this.logger.debug("response",_305); var _306=_3dgis.settings.i18n[this.currentElementType]; var _307=[]; for(var i=0;i<_305.items.length;i++){ var item=_305.items[i]; this.logger.debug("item",item); _307.push({id:item.id,recordType:_302,label:_306,geometry:item.geometry,area:item.area,length:item.length}); } this.logger.debug("features",_307); if(this.isFeatureSelection){ this.selectionManager.displaySelectedFeatures(_307); this.selectionManager.zoomToSelection(); }else{ this.selectionManager.displayFeatures(_307,false); this.selectionManager.zoomToSelection(); } })); } }}); dojo.provide("_3dgis.cwf.manager.SelectionManager"); dojo.declare("_3dgis.cwf.manager.SelectionManager",null,{mapManager:null,layerManager:null,genericFeatureInfoDialog:null,controller:null,wktParser:null,selectionGrid:null,selectionLayer:null,currentSelectionLayer:null,currentFeature:null,selectionQueryTimeout:10000,selectedRecordTypes:null,tabContainer:null,previousTab:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.gridLayout=[{field:"id",name:"ID",width:"20%"},{field:"label",name:_3dgis.settings.i18n["type"],width:"80%"}]; this.featureSelectionGridLayout=this.gridLayout; dojo.subscribe("map/featureSelection",this,this.selectFeatures); dojo.subscribe("map/featureSelection/abort",this,this.abortFeatureSelection); },init:function(){ this.logger.debug("init"); this.selectionLayer=this.mapManager.getLayer("selection"); this.currentSelectionLayer=this.mapManager.getLayer("currentSelection"); this.featureSelectionLayer=this.mapManager.getLayer("tempSelection"); this.checkedFeatureSelectionLayer=this.mapManager.getLayer("checkedFeatureSelection"); this.selectionTab=dijit.byId("map-tabSelection"); this.layerContollerTab=dijit.byId("map-tabLayerController"); this.tabContainer=dijit.byId("map-rightTabContainer"); this.previousTab=this.layerContollerTab; this.wktParser=new OpenLayers.Format.WKT(); this.controller=new _3dgis.cwf.OpenLayers.Control.BBoxSelection({call:dojo.hitch(this,this.query)}); this.contextGridMenu=new dijit.Menu(); this.contextGridMenu.addChild(new dijit.MenuItem({label:_3dgis.settings.i18n["zoomSelectedFeature"],iconClass:"zoomFeatureIcon",onClick:dojo.hitch(this,this.zoomGridSelection)})); this.contextGridMenu.addChild(new dijit.MenuItem({label:_3dgis.settings.i18n["removeSelectedFeature"],iconClass:"removeFeatureIcon",onClick:dojo.hitch(this,this.deleteGridSelection)})); this.contextGridMenu.startup(); var _308={rowMenu:this.contextGridMenu}; this.selectionGrid=new dojox.grid.EnhancedGrid({selectionMode:"single",clientSort:true,structure:this.gridLayout,plugins:{menus:_308}},"map-selection-grid"); this.selectionGrid.startup(); dojo.connect(this.selectionGrid,"onRowDblClick",this,function(evt){ var _309={}; _309.id=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"id"); _309.recordType=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"type"); this.displayFeatureInfo(_309); }); dojo.connect(this.selectionGrid,"onCellMouseOver",this,function(evt){ if(!this.contextGridMenu.isActive){ var fid=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"fid"); var area=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"area"); var _30a=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"length"); var _30b=""; if(area!=null&&_30a!=null){ _30b=_3dgis.settings.i18n["area"]+": "+area+" m"+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_30a+" m"; }else{ if(_30a!=null){ _30b=_3dgis.settings.i18n["length"]+": "+_30a+" m"; } } dojo.publish("map/currentMeasureChanged",[_30b]); this.selectionLayer.highlightFeature(fid); } }); dojo.connect(this.selectionGrid,"onCellMouseOut",this,function(evt){ if(!this.contextGridMenu.isActive){ var fid=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"fid"); var _30c=""; dojo.publish("map/currentMeasureChanged",[_30c]); this.selectionLayer.dehighlightFeature(fid); } }); dojo.connect(this.selectionGrid,"onRowContextMenu",this,function(evt){ this.selectionGrid.selection.select(evt.rowIndex); this.currentFid=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"fid"); var area=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"area"); var _30d=this.selectionGrid.store.getValue(this.selectionGrid.getItem(evt.rowIndex),"length"); var _30e=""; if(area!=null&&_30d!=null){ _30e=_3dgis.settings.i18n["area"]+": "+area+" m"+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_30d+" m"; }else{ if(_30d!=null){ _30e=_3dgis.settings.i18n["length"]+": "+_30d+" m"; } } dojo.publish("map/currentMeasureChanged",[_30e]); this.selectionLayer.highlightFeature(this.currentFid); }); dojo.connect(this.contextGridMenu,"onClose",this,function(evt){ var _30f=""; dojo.publish("map/currentMeasureChanged",[_30f]); this.selectionLayer.dehighlightFeature(this.currentFid); }); dojo.subscribe("map/layer/reload",this,this.clearQuerySelection); dojo.subscribe("map/layer/show",this,function(_310,_311){ if(_311===false){ this.modifySelectionOnHiddenLayer(_310); } }); dojo.subscribe("map/layer/toQuery",this,function(_312,_313){ if(_313===false){ this.modifySelectionOnNoQueryLayer(_312); } }); var _314=dijit.byId("map-featureSelection-button-confirm"); if(_314){ dojo.connect(_314,"onClick",this,this.confirmFeatureSelection); dojo.connect(dijit.byId("map-featureSelection-button-cancel"),"onClick",this,this.cancelFeatureSelection); this.featureSelectionController=new _3dgis.cwf.OpenLayers.Control.BBoxSelection({call:dojo.hitch(this,this.queryFeatures)}); this.mapManager.addControl(this.featureSelectionController); this.autoPanControl=new _3dgis.cwf.OpenLayers.Control.AutoPan(); this.mapManager.addControl(this.autoPanControl); } this.logger.debug("end init"); },modifySelectionOnHiddenLayer:function(_315){ this.logger.debug("modifySelectionOnHiddenLayer "+_315); if(this.selectionLayer.features.length>0){ this.removeSelectionByLayerName(_315); } },modifySelectionOnNoQueryLayer:function(_316){ this.logger.debug("modifySelectionOnNoQueryLayer "+_316); if(this.selectionLayer.features.length>0){ this.removeSelectionByLayerName(_316); } },removeSelectionByLayerName:function(_317){ var _318=this.layerManager.getElementTypeForLayerName(_317); this.logger.debug("remove feature with recrod type "+_318); this.selectionGrid.store.fetch({query:{type:_318},onItem:dojo.hitch(this,function(item){ var _319=this.selectionGrid.store.getValue(item,"type"); var id=this.selectionGrid.store.getValue(item,"id"); var _31a=this.selectionLayer.getFeature(this.createFid(_319,id)); this.selectionLayer.deleteFeature(this.createFid(_319,id)); this.selectionGrid.store.deleteItem(item); })}); },zoomGridSelection:function(){ var _31b=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"type"); var id=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"id"); var _31c=this.selectionLayer.getFeature(this.createFid(_31b,id)); this.mapManager.zoomToGeometry(_31c.geometry); },deleteGridSelection:function(){ var _31d=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"type"); var id=this.selectionGrid.store.getValue(this.selectionGrid.selection.getFirstSelected(),"id"); var _31e=this.selectionLayer.deleteFeature(this.createFid(_31d,id)); var item=this.selectionGrid.selection.getSelected()[0]; this.selectionGrid.store.deleteItem(item); },getController:function(){ return this.controller; },query:function(_31f){ var _320=this.layerManager.getToQueryLayers(); var _321=this.prepareQueryParams(_31f,_320); if(_321==null||_321.layers.length===0){ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["noLayerSelection"],type:"error"}]); }else{ if(!isNaN(_31f.bottom)){ var def=_3dgis.wf.util.ajaxPostAction("map/json/mapQuery",_321); def.then(dojo.hitch(this,function(_322){ if(_322.data.length>0){ this.displayFeatures(_322.data); }else{ this.clearQuerySelection(); dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["noSelection"],type:"warning"}]); } })); } } },prepareQueryParams:function(_323,_324){ var _325=[]; for(var _326 in _324){ var _327=_324[_326]; if(_327.complex){ for(var i=0;i<_327.subLayers.length;i++){ var _328=_327.subLayers[i]; if(_328.queryable){ _325.push(_328.id); } } }else{ _325.push(_324[_326].id); } } var _329={bbox:_323.toGeometry().toString(),layers:_325}; return _329; },clearQuerySelection:function(){ this.selectionLayer.destroyFeatures(); this.currentSelectionLayer.destroyFeatures(); this.selectionGrid.setStore(new dojo.data.ItemFileWriteStore({data:{items:[]}})); var tab=this.tabContainer.selectedChildWidget; if(tab.id=="map-tabSelection"){ this.tabContainer.selectChild(this.layerContollerTab); } },displayFeatures:function(_32a,open){ this.selectionLayer.destroyFeatures(); this.addFeatures(_32a); if(_32a.length==1&&open!==false){ this.displayFeatureInfo(_32a[0]); }else{ this.showSelectionTab(); } },displayFeatureInfo:function(_32b){ this.logger.debug("displayFeatureInfo",_32b); this.setCurrentFeature(this.selectionLayer.getFeature(this.createFid(_32b.recordType,_32b.id)).clone()); var _32c=this.layerManager.getLayerForFeatureRecordType(_32b.recordType); if(_32c!=null){ if(_32c.wfsFeatureType){ this.showGenericFeatureInfoDialog(_32c,_32b.id); }else{ var _32d=this.layerManager.getElementTypeForLayerName(_32c.layerName); this.objectManager.get("featureDialog",_32d).get(_32b.id); } }else{ var _32e=this.layerManager.getLayerNameForFeatureRecordType(_32b.recordType); var _32d=this.layerManager.getElementTypeForLayerName(_32e); this.objectManager.get("featureDialog",_32d).get(_32b.id); } },setCurrentFeature:function(_32f){ this.currentFeature=_32f; this.currentSelectionLayer.destroyFeatures(); this.currentSelectionLayer.addFeatures([this.currentFeature]); },showGenericFeatureInfoDialog:function(_330,_331){ this.genericFeatureInfoDialog.show(_330,_331); },addFeatures:function(_332){ var _333=[]; for(var i=0;i<_332.length;i++){ var _334=_332[i]; var _335=this.wktParser.read(_334.geometry); _335.fid=this.createFid(_334.recordType,_334.id); this.selectionLayer.addFeatures([_335]); _333.push(this.prepareFeatureDataForStore(_334)); } this.selectionGrid.setStore(new dojo.data.ItemFileWriteStore({data:{items:_333}})); },prepareFeatureDataForStore:function(_336){ var _337=_3dgis.settings.i18n[_3dgis.wf.util.lcfirst(_336.recordType)]; if(!_337){ _337=_3dgis.settings.i18n["layerLabel."+_336.recordType]; } var _338={fid:this.createFid(_336.recordType,_336.id),id:_336.id,label:_337,type:_336.recordType,area:_336.area,length:_336.length,attributes:_336.attributes}; this.logger.debug("object to add",_338); return _338; },highlightSelectedFeature:function(){ this.logger.debug("highlightSelectedFeature"); this.currentSelectionLayer.setVisibility(true); },dehighlightSelectedFeature:function(){ this.logger.debug("dehighlightSelectedFeature"); this.currentSelectionLayer.setVisibility(false); },showSelection:function(show){ this.logger.debug("showSelection",show); this.selectionLayer.setVisibility(show); this.disableSelectionTab(!show); },createFid:function(_339,id){ return _339+"-"+id; },showSelectionTab:function(){ this.previousTab=this.selectionTab; this.tabContainer.selectChild(this.selectionTab); },disableSelectionTab:function(flag){ this.logger.debug("disableSelectionTab",flag); var _33a=""; if(flag){ this.previousTab=this.tabContainer.selectedChildWidget; if(this.previousTab.id==this.selectionTab.id){ this.tabContainer.selectChild(this.layerContollerTab); } }else{ this.tabContainer.selectChild(this.previousTab); } },getCurrentSelectedFeature:function(){ return this.currentFeature; },zoomToSelection:function(){ this.mapManager.zoomToLayer(this.selectionLayer); },selectFeatures:function(_33b){ this.logger.debug("selectFeatures",_33b); this.featureSelectionOptions=_33b; this.featureSelectionTypes=_33b.types; this.featureSelectionMode=_33b.selectionMode; var msg=_3dgis.settings.i18n["featureSelectionSession"]; var _33c=false; if(_33b.msg){ msg=_33b.msg; } if(_33b.showCancelOperation!=null){ _33c=_33b.showCancelOperation; } this.showSelectionTab(); this.disableSelectionTab(false); this.showFeatureSelectionGrid(true); this.selectionLayer.setVisibility(false); this.currentSelectionLayer.setVisibility(false); this.featureSelectionLayer.destroyFeatures(); this.checkedFeatureSelectionLayer.destroyFeatures(); this.featureSelectionLayer.setVisibility(true); this.checkedFeatureSelectionLayer.setVisibility(true); this.createFeatureSelectionGrid(); this.objectManager.get("mapControlManager").disableAllControls(true); this.featureSelectionController.activate(); this.autoPanControl.activate(); dojo.publish("messageManager/message",[{message:msg,showCancelOperation:_33c}]); },queryFeatures:function(_33d){ this.featureSelectionGrid.selection.deselectAll(); this.selectionGrid.setStore(new dojo.data.ItemFileWriteStore({data:{items:[]}})); var def=this.doFeatureRequest(_33d); def.then(dojo.hitch(this,function(_33e){ if(_33e.data.length>0){ this.displaySelectedFeatures(_33e.data); }else{ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["noSelection"],type:"warning"}]); } })); },doFeatureRequest:function(_33f){ var _340={bbox:_33f.toGeometry().toString()}; var _341=this.layerManager.getToQueryLayers(); var _342=[]; if(this.featureSelectionTypes!=null){ var _343="id"; if(this.featureSelectionOptions.useLayerNames){ _343="layerName"; } for(var i=0;i0){ _340.layers=_342; } } var _345="map/json/mapQuery"; if(this.featureSelectionOptions.url!=null){ _345=this.featureSelectionOptions.url; } var def=_3dgis.wf.util.ajaxPostAction(_345,_340); return def; },displaySelectedFeatures:function(_346){ this.featureSelectionLayer.destroyFeatures(); this.checkedFeatureSelectionLayer.destroyFeatures(); var _347=[]; for(var i=0;i<_346.length;i++){ var _348=_346[i]; var _349=this.wktParser.read(_348.geometry); _349.fid=this.createFid(_348.recordType,_348.id); this.featureSelectionLayer.addFeatures([_349]); var _34a=_3dgis.settings.i18n[_3dgis.wf.util.lcfirst(_348.recordType)]; if(!_34a){ _34a=_3dgis.settings.i18n["layerLabel."+_348.recordType]; } _347.push(this.prepareSelectionFeatureDataForStore(_348)); } this.featureSelectionGrid.setStore(new dojo.data.ItemFileWriteStore({data:{items:_347}})); if(_347.length==1){ this.featureSelectionGrid.selection.setSelected(0,true); } },prepareSelectionFeatureDataForStore:function(_34b){ var _34c=this.prepareFeatureDataForStore(_34b); _34c.geometry=_34b.geometry; return _34c; },showFeatureSelectionGrid:function(show){ if(show){ dijit.byId("map-tabSelection").selectChild(dijit.byId("map-tabSelection-featureSelection")); }else{ dijit.byId("map-tabSelection").selectChild(dijit.byId("map-tabSelection-selection")); } },createFeatureSelectionGrid:function(){ if(this.featureSelectionGrid==null||this.featureSelectionGrid.selectionMode!=this.featureSelectionMode){ if(this.featureSelectionGrid){ this.featureSelectionGrid.destroy(true); } var _34d=[]; var _34e; if(this.featureSelectionMode=="single"){ _34e="dojox.grid._RadioSelector"; }else{ _34e="dojox.grid._CheckBoxSelector"; } _34d.push({type:_34e}); _34d.push({cells:this.featureSelectionGridLayout}); this.featureSelectionGrid=new dojox.grid.EnhancedGrid({selectionMode:this.featureSelectionMode,clientSort:true,structure:_34d},"map-featureSelection-grid"); this.featureSelectionGrid.startup(); } this.featureSelectionGrid.setStore(new dojo.data.ItemFileWriteStore({data:{items:[]}})); dojo.connect(this.featureSelectionGrid,"onCellMouseOver",this,function(evt){ var fid=this.featureSelectionGrid.store.getValue(this.featureSelectionGrid.getItem(evt.rowIndex),"fid"); var area=this.featureSelectionGrid.store.getValue(this.featureSelectionGrid.getItem(evt.rowIndex),"area"); var _34f=this.featureSelectionGrid.store.getValue(this.featureSelectionGrid.getItem(evt.rowIndex),"length"); var _350=""; if(area!=null&&_34f!=null){ _350=_3dgis.settings.i18n["area"]+": "+area+" m"+"2"+", "+_3dgis.settings.i18n["perimeter"]+": "+_34f+" m"; }else{ if(_34f!=null){ _350=_3dgis.settings.i18n["length"]+": "+_34f+" m"; } } dojo.publish("map/currentMeasureChanged",[_350]); this.featureSelectionLayer.highlightFeature(fid); }); dojo.connect(this.featureSelectionGrid,"onCellMouseOut",this,function(evt){ var fid=this.featureSelectionGrid.store.getValue(this.featureSelectionGrid.getItem(evt.rowIndex),"fid"); var _351=""; dojo.publish("map/currentMeasureChanged",[_351]); this.featureSelectionLayer.dehighlightFeature(fid); }); dojo.connect(this.featureSelectionGrid,"onClick",this,this.toggleFeatureGridSelection); },toggleFeatureGridSelection:function(){ this.checkedFeatureSelectionLayer.destroyFeatures(); var _352=this.featureSelectionGrid.selection.getSelected(); for(var i=0;i<_352.length;i++){ var fid=this.featureSelectionGrid.store.getValue(_352[i],"fid"); var _353=this.featureSelectionLayer.getFeatureByFid(fid).clone(); this.checkedFeatureSelectionLayer.addFeatures([_353]); } },confirmFeatureSelection:function(){ if(this.featureSelectionGrid.selection.getSelectedCount()!==0){ var _354=this.featureSelectionGrid.selection.getSelected(); this.stopFeatureSelection(); dojo.publish("map/featureSelection/stop",[_354]); }else{ dojo.publish("infoMessage",[{message:_3dgis.settings.i18n["noSelection"],type:"warning"}]); } },cancelFeatureSelection:function(){ this.stopFeatureSelection(); dojo.publish("map/featureSelection/cancel"); },abortFeatureSelection:function(){ this.stopFeatureSelection(); },stopFeatureSelection:function(){ this.showFeatureSelectionGrid(false); this.selectionLayer.setVisibility(true); this.currentSelectionLayer.setVisibility(true); this.featureSelectionLayer.setVisibility(false); this.checkedFeatureSelectionLayer.setVisibility(false); this.objectManager.get("mapControlManager").disableAllControls(false); this.featureSelectionController.deactivate(); this.autoPanControl.deactivate(); this.disableSelection(); dojo.publish("messageManager/hide"); },enableSelection:function(){ this.disableSelectionTab(false); if(this.selectionLayerStatusBeforeDisable){ this.selectionLayer.setVisibility(true); } },disableSelection:function(){ this.disableSelectionTab(true); this.selectionLayerStatusBeforeDisable=this.selectionLayer.visibility; },modifySelectionFeature:function(type,pojo,_355){ var fid=this.createFid(type,pojo.id); this.logger.debug("modify selected feature",fid); this.selectionLayer.deleteFeature(fid); var _356=new OpenLayers.Feature.Vector(_355); _356.fid=fid; this.selectionLayer.addFeatures([_356]); },removeFeatureFromSelection:function(type,id){ var fid=this.createFid(type,id); this.logger.debug("remove selected feature",fid); this.selectionLayer.deleteFeature(fid); this.selectionGrid.store.fetch({query:{id:id,type:type},onItem:dojo.hitch(this,function(item){ this.selectionGrid.store.deleteItem(item); })}); }}); dojo.provide("_3dgis.cwf.manager.MessageManager"); dojo.declare("_3dgis.cwf.manager.MessageManager",null,{contentNodeId:"map-messageManager",textNode:null,operationNode:null,cancelNode:null,hideAfterOperation:null,init:function(){ this.contentNode=dojo.byId(this.contentNodeId); this.textNode=dojo.byId(this.contentNodeId+"-text"); this.operationsNode=dojo.byId(this.contentNodeId+"-operations"); this.cancelNode=dojo.byId(this.contentNodeId+"-cancel"); dojo.connect(this.cancelNode,"onclick",this,function(){ this.cancel(); }); dojo.subscribe("messageManager/message",this,function(opt){ this.show(opt); }); dojo.subscribe("messageManager/hide",this,function(){ this.hide(); }); },show:function(opt){ if(opt.hideAfterOperation===false){ this.hideAfterOperation=false; }else{ this.hideAfterOperation=true; } if(opt.showCancelOperation===false){ this.cancelNode.style.display="none"; this.showCancelOperation=false; }else{ this.cancelNode.style.display=""; this.showCancelOperation=true; } this.contentNode.style.display="block"; this.textNode.innerHTML=opt.message; this.operationsNode.innerHTML=""; if(opt.operations){ this.operationsNode.style.display=""; for(var i=0;i
",show:function(_358,_359){ if(!this.dialog){ this.createDialog(); } var url="html/layer-info?layerId="+_358.id+"&featureId="+_359; dijit.byId("genericFeatureInfoDialog-contentPane").set("href",url); this.dialog.set("title","Info: "+_358[dojo.locale.split("-")[0]]); this.dialog.show(); },createDialog:function(){ this.dialog=new dijit.Dialog({content:this.template}); dojo.connect(this.dialog,"hide",this,function(){ dojo.publish("dialog/close",["featureInfoDialog"]); }); this.dialog.startup(); }}); dojo.provide("_3dgis.cwf.manager.LockedAreaManager"); dojo.declare("_3dgis.cwf.manager.LockedAreaManager",null,{layerManager:null,layerController:null,wktParser:null,postConstructor:function(){ this.wktParser=new OpenLayers.Format.WKT(); },getLockControl:function(){ this.lockControl=new _3dgis.cwf.OpenLayers.Control.BBoxSelection({layer:this.layerManager.getOpenLayersLayer("tempSelection"),eventListeners:{activate:dojo.hitch(this,function(){ this.showLockedAreaLayer(); })},call:dojo.hitch(this,this.lock)}); return this.lockControl; },getUnlockControl:function(){ this.unlockControl=new _3dgis.cwf.OpenLayers.Control.BBoxSelection({layer:this.layerManager.getOpenLayersLayer("tempSelection"),eventListeners:{activate:dojo.hitch(this,function(){ this.showLockedAreaLayer(); })},call:dojo.hitch(this,this.selectArea)}); return this.unlockControl; },lock:function(_35a){ _3dgis.objectManager.get("confirmDialog").show(_3dgis.settings.i18n["confirmAreaLock"],dojo.hitch(this,function(){ var def=_3dgis.wf.util.ajaxPostAction("map/json/lock-lockedArea",{geometry:_35a.toGeometry().toString()}); def.then(dojo.hitch(this,function(_35b){ this.layerManager.reloadLayer("locked_area"); })); })); },unlock:function(_35c){ _3dgis.objectManager.get("confirmDialog").show(_3dgis.settings.i18n["confirmAreaUnlock"],dojo.hitch(this,function(){ var _35d={}; for(var i=0;i<_35c.length;i++){ var area=_35c[i]; _35d["list["+i+"].id"]=area.id; } var def=_3dgis.wf.util.ajaxPostAction("map/json/unlock-lockedArea",_35d); def.then(dojo.hitch(this,function(_35e){ this.layerManager.reloadLayer("locked_area"); this.layerManager.getOpenLayersLayer("tempSelection").destroyFeatures(); }),dojo.hitch(this,function(_35f){ this.layerManager.getOpenLayersLayer("tempSelection").destroyFeatures(); })); }),dojo.hitch(this,function(){ this.layerManager.getOpenLayersLayer("tempSelection").destroyFeatures(); })); },selectArea:function(_360){ var def=_3dgis.wf.util.ajaxPostAction("map/json/query-lockedArea",{geometry:_360.toGeometry().toString()}); def.then(dojo.hitch(this,function(_361){ var _362=[]; for(var i=0;i<_361.data.length;i++){ var area=_361.data[i]; var _363=this.wktParser.read(area.geometry); this.layerManager.getOpenLayersLayer("tempSelection").addFeatures(_363); _362.push(area); } this.unlock(_362); })); },showLockedAreaLayer:function(){ if(!this.layerManager.isLayerActive("locked_area")){ this.layerController.activeLayer("locked_area"); dojo.publish("infoMessage",[_3dgis.settings.i18n["lockedAreaActivated"]]); } }}); dojo.provide("_3dgis.cwf.manager.UserSettingsManager"); dojo.declare("_3dgis.cwf.manager.UserSettingsManager",null,{mapManager:null,timeout:60000,layerController:null,saveUrl:"crud/json/save-userSettings",init:function(){ if(this.timeout!==0){ setInterval(dojo.hitch(this,this.saveOnInterval),this.timeout); } },createCurrentParams:function(){ var _364={}; var _365=this.mapManager.getOpenLayersMap().getCenter(); _364.centerPointX=_365.lon; _364.centerPointY=_365.lat; _364.zoomLevel=this.mapManager.getOpenLayersMap().getZoom(); _364.layerControllerSettings=this.layerController.getSettings(); var _366={userSettings:dojo.toJson(_364)}; return _366; },save:function(){ _3dgis.wf.util.ajaxPostAction(this.saveUrl,this.createCurrentParams()); },saveOnInterval:function(){ var _367=this.timeout/2; var _368={url:this.saveUrl,content:this.createCurrentParams(),handleAs:"json",timeout:_367}; dojo.xhrPost(_368); }}); dojo.provide("_3dgis.cwf.controller.StatusBarController"); dojo.declare("_3dgis.cwf.controller.StatusBarController",null,{prefix:"map-statusBar-",currentLayerSelectedNode:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); this.currentLocale=dojo.locale.split("-")[0]; },postConstructor:function(){ this.currentLayerSelectedNode=dojo.byId(this.prefix+"currentLayerSelected"); this.currentMeasureNode=dojo.byId(this.prefix+"currentMeasure"); dojo.subscribe("map/currentSelectedLayer",this,this.onLayerSelected); dojo.subscribe("map/currentMeasureChanged",this,this.onMeasureChanged); },onLayerSelected:function(_369){ if(_369){ var key=_3dgis.wf.util.fromUnderscoreToLowerCamelCase(_369.layerName); this.logger.debug("key",key); var _36a=_3dgis.settings.i18n[key]; this.logger.debug("label",_36a); if(!_36a){ _36a=_3dgis.settings.i18n["layerLabel."+_369.layerName]; } this.logger.debug("label",_36a); this.currentLayerSelectedNode.innerHTML=_36a; }else{ this.currentLayerSelectedNode.innerHTML=_3dgis.settings.i18n["noLayerSelected"]; } },onMeasureChanged:function(_36b){ if(_36b){ this.currentMeasureNode.innerHTML=_36b; }else{ this.currentMeasureNode.innerHTML=""; } }}); dojo.provide("_3dgis.cwf.dialog.FeatureDialog"); dojo.require("_3dgis.wf.dialog.ElementDialog"); dojo.declare("_3dgis.cwf.dialog.FeatureDialog",_3dgis.wf.dialog.ElementDialog,{mapManager:null,selectionManager:null,geometry:null,editingHandler:null,cancelEditingHandler:null,postConstructor:function(){ this.inherited(arguments); this.editingLayer=this.mapManager.getLayer("dialogEditing"); },setTitle:function(_36c){ this.dialog.set("title",_3dgis.settings.i18n["featureProperty"]); dojo.byId(this.getPrefix()+"header-text").innerHTML=_36c; },postGet:function(){ this.geometry=null; this.editing=false; this.inherited(arguments); },prepareData:function(data){ var d=this.inherited(arguments); if(this.geometry){ d[_3dgis.wf.util.lcfirst(this.type)+".geometry"]=this.geometry.toString(); } return d; },postNewElement:function(arg){ this.geometry=arg.geometry; this.inherited(arguments); },postParse:function(){ this.inherited(arguments); this.registerButton("editGeometry",["update"],this.editGeometry); },postSave:function(){ this.inherited(arguments); this.saved=true; if(this.geometry){ this.selectionManager.clearQuerySelection(); } dojo.publish("crud/feature/save",[this.type]); },onClose:function(){ if(!this.hidden){ this.editingLayer.destroyFeatures(); this.selectionManager.showSelection(true); } this.inherited(arguments); },editGeometry:function(){ this.editingHandler=dojo.subscribe("map/editing/modify/stop",this,function(_36d){ dojo.unsubscribe(this.cancelEditingHandler); dojo.unsubscribe(this.editingHandler); this.geometry=_36d; this.editingLayer.destroyFeatures(); this.editingLayer.addFeatures([new OpenLayers.Feature.Vector(_36d)]); this.postSetGeometry(); this.show(); }); this.cancelEditingHandler=dojo.subscribe("map/editing/cancel",this,function(){ dojo.unsubscribe(this.cancelEditingHandler); dojo.unsubscribe(this.editingHandler); if(this.geometry==null){ this.selectionManager.showSelection(true); } this.show(); }); this.selectionManager.showSelection(false); var _36e={startGeometry:this.pojo.geometry,geometry:this.geometry,checkUrl:"map/json/checkGeometry-"+this.type,layerName:_3dgis.wf.util.string.fromCamelCaseToUnderscore(this.type)}; var opt=this.prepareEditingOptions(_36e); dojo.publish("map/editing/modify/start",[opt]); this.hide(); },prepareEditingOptions:function(opt){ return opt; },postSetGeometry:function(){ }}); dojo.provide("_3dgis.cwf.controller.MapController"); dojo.declare("_3dgis.cwf.controller.MapController",null,{mapOptions:null,userSettings:null,mapManager:null,mapControlManager:null,messageManager:null,searchController:null,statusBar:null,layerController:null,olNode:null,scaleWidget:null,centerContentPaneWidget:null,rightContentPaneWidget:null,overviewMapContentPaneWidget:null,resizeHandle:null,updateMapOverviewDimensionsHandle:null,resizeTimeout:100,initSelectedFeatures:null,initViewParams:null,constructor:function(){ this.logger=_3dgis.wf.Logger.getLogger(this.declaredClass); },init:function(){ this.logger.debug("init"); this.initGui(); this.messageManager.init(); this.mapManager.init(); this.mapControlManager.init(); this.layerController.init(); this.registerMapEvents(); this.initZoom(); if(this.objectManager.getObjDef("userSettingsManager")!=null){ this.objectManager.get("userSettingsManager").init(); } },initZoom:function(){ this.logger.debug("init zoom"); if(this.initSelectedFeatures){ this.logger.debug("zoom to selected features"); this.mapControlManager.selectionManager.addFeatures(this.initSelectedFeatures); this.mapControlManager.selectionManager.zoomToSelection(); this.mapControlManager.selectionManager.showSelectionTab(); var _36f=this.initSelectedFeatures[0].recordType; this.layerController.activeLayerByFeatureType(_36f); }else{ if(this.initViewParams){ this.logger.debug("zoom to view"); this.mapManager.zoomToCoordinates(this.initViewParams.pointX,this.initViewParams.pointY,this.initViewParams.scale); for(var i=0;i