| 1 |
- MWF.xDesktop.requireApp("Attendance","Explorer",null,false);MWF.xDesktop.requireApp("Template","Explorer",null,false);MWF.xApplication.Attendance.AddressExplorer=new Class({Extends:MWF.xApplication.Attendance.Explorer,Implements:[Options,Events],initialize:function(t,e,i,n){this.setOptions(n);this.app=e;this.path="/x_component_Attendance/$AddressExplorer/";this.cssPath="/x_component_Attendance/$AddressExplorer/"+this.options.style+"/css.wcss";this._loadCss();this.actions=i;this.node=$(t);this.initData()},reload:function(){this.node.empty();this.load()},load:function(){this.loadToolbar();this.loadContentNode();this.loadContent();this.setNodeScroll()},destroy:function(){if(this.baiduMap){this.baiduMap.map.clearOverlays();this.elementContentNode.destroy()}this.node.empty();delete this},loadContent:function(t){this.elementContentNode.empty();this.actions.listWorkplace(function(t){t.data=t.data||[];this.wpContent=this.toolbarNode.getElements("[name=wpContent]")[0];this.createList(t.data);this.baiduMap=new MWF.xApplication.Attendance.AddressExplorer.BaiduMap(this.elementContentNode,this.app,this,{});this.baiduMap.load(t.data);this.setContentSize()}.bind(this))},reloadList:function(){this.actions.listWorkplace(function(t){this.wpContent.empty();this.createList(t.data||[])}.bind(this))},createList:function(t){this.wdList=new Element("div",{styles:this.css.wdList}).inject(this.wpContent);this.wdList.setStyle("width",this.toolbarNode.getSize().x-200+"px");t.each(function(t){var e=new Element("div",{styles:this.css.toolbarContentItem,text:t.placeName}).inject(this.wdList);e.addEvent("click",function(t){this.obj.baiduMap.gotoMarker(this.data);t.stopPropagation()}.bind({obj:this,data:t}))}.bind(this));this.arrow="up";if(this.wdList.getScrollSize().y>this.wpContent.getSize().y){this.wdList.addEvent("click",function(t){if(this.arrow!="down"){this.openList(t)}else{this.closeList(t)}}.bind(this));this.arrowNode=new Element("div.arrowNode",{styles:this.css.arrowNode}).inject(this.wpContent,"top");this.arrowNode.addEvents({mouseover:function(){this.arrowNode.setStyles(this.categoryArrow!="down"?this.css.arrowNode_over:this.css.arrowNode_down_over)}.bind(this),mouseout:function(){this.arrowNode.setStyles(this.categoryArrow!="down"?this.css.arrowNode:this.css.arrowNode_down)}.bind(this),click:function(t){if(this.arrow!="down"){this.openList(t)}else{this.closeList(t)}}.bind(this)})}},_setContentSize:function(){this.wdList.setStyle("width",this.toolbarNode.getSize().x-200+"px")},openList:function(t){this.arrow="down";this.arrowNode.setStyle("display","none");this.wdList.setStyles(this.css.wdList_all);window.closeList=this.closeList.bind(this);this.app.content.addEvent("click",window.closeList);t.stopPropagation()},closeList:function(t){this.arrow="up";this.arrowNode.setStyle("display","");this.wdList.setStyles(this.css.wdList);this.app.content.removeEvent("click",window.closeList);t.stopPropagation()},createDocument:function(){this.baiduMap.createMarker()}});MWF.xApplication.Attendance.AddressExplorer.BaiduMap=new Class({Implements:[Options,Events],options:{style:"default"},initialize:function(t,e,i,n){this.container=t;this.explorer=i;this.app=e;this.actions=i.actions;this.setOptions(n);this.markers={};this.markerInfoWindows={}},load:function(t){this.markerData=t;this.mapNode=new Element("div",{styles:{width:"100%",height:"99%"}}).inject(this.container);setTimeout(function(){this.loadResource()}.bind(this),200)},loadResource:function(t){window.BMap_loadScriptTime=(new Date).getTime();var e="http://api.map.baidu.com/getscript?v=2.0&ak=Qac4WmBvHXiC87z3HjtRrbotCE3sC9Zg&services=&t=20161219171637";if(!window.BDMapApiLoaded){COMMON.AjaxModule.loadDom(e,function(){window.BDMapApiLoaded=true;if(!window.BDMarkerToolLoaded){COMMON.AjaxModule.load("/x_component_Attendance/BDMarkerTool.js",function(){window.BDMarkerToolLoaded=true;this._loadMap();if(t)t()}.bind(this))}else{this._loadMap();if(t)t()}}.bind(this))}else{this._loadMap();if(t)t()}},_loadMap:function(){if(navigator.geolocation){try{navigator.geolocation.getCurrentPosition(this.loadMap.bind(this),this.loadMap.bind(this))}catch(t){this.loadMap()}}else{this.loadMap()}},loadMap:function(t){this.createMap(t);this.addMapControl();if(this.markerData){this.addMarkerArray(this.markerData)}},createMap:function(t){var e=null;if(t&&t.coords){e=new BMap.Point(t.coords.longitude,t.coords.latitude)}if(!e){if(this.markerData&&this.markerData.length>0){var i=this.markerData[0];e=new BMap.Point(i.longitude,i.latitude)}else{e=new BMap.Point(116.404,39.915)}}var n=this.map=new BMap.Map(this.mapNode);n.centerAndZoom(e,12);n.enableScrollWheelZoom(true)},addMapControl:function(){var t=new BMap.NavigationControl({anchor:BMAP_ANCHOR_TOP_RIGHT,type:BMAP_NAVIGATION_CONTROL_LARGE});this.map.addControl(t);var e=new BMap.OverviewMapControl({anchor:BMAP_ANCHOR_BOTTOM_RIGHT,isOpen:1});this.map.addControl(e);var i=new BMap.ScaleControl({anchor:BMAP_ANCHOR_BOTTOM_LEFT});this.map.addControl(i);this.addCityListControl()},addCityListControl:function(){this.map.addControl(new BMap.CityListControl({anchor:BMAP_ANCHOR_TOP_LEFT,offset:new BMap.Size(10,20),onChangeBefore:function(){},onChangeAfter:function(){}}))},getInfoWindowHtml:function(t){t=t||{};var e=[];e.push("<br/>");e.push('<table border="0" cellpadding="1" cellspacing="1" id="markerTable" docId="'+(t.id||"")+'" style="font-size:12px;">');e.push(" <tr>");e.push(' <td style="width:50px" align="left" class="common">名称:</td>');e.push(' <td style="width: 300px"><input type="text" size="40" value="'+(t.placeName||"")+'" id="placeName" ></td>');e.push('\t <td style="width: 10px" valign="top"><span style="color:#ff0000">*</span></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <td align="left" class="common">别名:</td>');e.push(' <td><input type="text" maxlength="300px" size="40" value="'+(t.placeAlias||"")+'" id="placeAlias" ></td>');e.push('\t <td valign="top"></td>');e.push(" </tr>");e.push(" <tr>");e.push(' <td align="left" class="common">范围:</td>');e.push(' <td><input type="text" maxlength="300px" size="40" value="'+(t.errorRange||"")+'" id="errorRange" ></td>');e.push('\t <td valign="top">米</td>');e.push(" </tr>");e.push(" <tr>");e.push(' <td align="left" class="common">备注:</td>');e.push(' <td><textarea rows="4" cols="31" id="description">'+(t.description||"")+"</textarea></td>");e.push('\t <td valign="top"></td>');e.push(" </tr>");e.push(" <tr>");e.push('\t <td align="center" colspan="3">');e.push(' <input type="button" name="btnOK" id="submitPlace" value="保存"> ');if(t.id){e.push('\t\t <input type="button" name="btnMove" id="enableMovePlace" value="允许移动"> ')}e.push('\t\t <input type="button" name="btnClear" id="cancelPlace" value="删除">');e.push("\t </td>");e.push(" </tr>");e.push("</table>");return e.join("")},createMarker:function(){var i=this;var t=new BMapLib.MarkerTool(this.map,{autoClose:true});t.addEventListener("markend",function(t){var e=new BMap.InfoWindow(this.getInfoWindowHtml(),{offset:new BMap.Size(0,-10)});e.addEventListener("open",function(){var t=document.id("markerTable");var e=t.getElements("[id='submitPlace']");e.addEvent("click",function(){this.obj.ok(this.mkr,this.table)}.bind({obj:this,mkr:n,table:t}));var i=t.getElements("[id='cancelPlace']");i.addEvent("click",function(){this.obj.cancel(this.mkr,this.table)}.bind({obj:this,mkr:n,table:t}))}.bind(i));var n=t.marker;n.addEventListener("click",function(){this.openInfoWindow(e)});n.addEventListener("dragend",function(){this.openInfoWindow(e)});n.openInfoWindow(e)}.bind(this));t.open();var e=BMapLib.MarkerTool.SYS_ICONS[14];t.setIcon(e)},addMarkerArray:function(t){for(var e=0;e<t.length;e++){var i=t[e];this.addMarker(i)}},addMarker:function(e){var i=this;var t=new BMap.Point(e.longitude,e.latitude);var n=BMapLib.MarkerTool.SYS_ICONS[8];var s=new BMap.Marker(t,{icon:n,enableDragging:false});var d=new BMap.Label(e.placeName,{offset:new BMap.Size(0,-20)});s.setLabel(d);this.map.addOverlay(s);d.setStyle({borderColor:"#808080",color:"#333",cursor:"pointer"});(function(){var t=new BMap.InfoWindow(this.getInfoWindowHtml(e),{offset:new BMap.Size(0,-10)});var o=s;var a=e;o.addEventListener("click",function(){this.openInfoWindow(t)});o.addEventListener("dragend",function(){this.openInfoWindow(t)});t.addEventListener("open",function(){o.getLabel().hide();var t=document.id("markerTable");var e=t.getElements("[id='enableMovePlace']");e.addEvent("click",function(){this.obj.enableMove(this.mkr)}.bind({obj:this,mkr:o,table:t,id:a.id}));var i=t.getElements("[id='submitPlace']");i.addEvent("click",function(){this.obj.ok(this.mkr,this.table,this.id)}.bind({obj:this,mkr:o,table:t,id:a.id}));var n=t.getElements("[id='cancelPlace']");n.addEvent("click",function(){this.obj.cancel(this.mkr,this.table,this.id)}.bind({obj:this,mkr:o,table:t,id:a.id}))}.bind(i));t.addEventListener("close",function(){o.getLabel().show()});d.addEventListener("click",function(){o.openInfoWindow(t)});this.markers[e.id]=s;this.markerInfoWindows[e.id]=t}).bind(this)()},enableMove:function(t){t.closeInfoWindow();t.enableDragging()},gotoMarker:function(t){var e=this.markers[t.id];this.map.centerAndZoom(e.point,15);e.openInfoWindow(this.markerInfoWindows[t.id])},ok:function(e,t,i){var n=t.getElements("[id='placeName']")[0].get("value");if(n.trim()==""){this.app.notice("工作场所不能为空","error");return false}var o=t.getElements("[id='placeAlias']")[0].get("value");var a=t.getElements("[id='description']")[0].get("value");var s=t.getElements("[id='errorRange']")[0].get("value");var d={placeName:n,placeAlias:o,errorRange:s,description:a,longitude:e.point.lng,latitude:e.point.lat};if(i)d.id=i;this.actions.saveWorkplace(d,function(t){d.id=t.data.message;e.closeInfoWindow();e.remove();this.addMarker(d);this.explorer.reloadList()}.bind(this))},cancel:function(e,t,i){if(i){this.actions.deleteWorkplace(i,function(){e.closeInfoWindow();var t=e.getLabel();if(t)t.remove();e.remove();this.explorer.reloadList()}.bind(this))}else{e.closeInfoWindow();var n=e.getLabel();if(n)n.remove();e.remove()}}});
|