diff options
author | Stanislau Wolski <stanislau.wolski@gmail.com> | 2013-10-18 14:02:16 +0300 |
---|---|---|
committer | Stanislau Wolski <stanislau.wolski@gmail.com> | 2013-10-18 14:02:16 +0300 |
commit | c2e1fd58b0c848118cf8554de50f788199d609e2 (patch) | |
tree | bd30b3b7de59b34120705465e8628a740cdb513d /codebase/ext/dhtmlxscheduler_map_view.js | |
download | scheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.zip scheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.tar.gz scheduler-c2e1fd58b0c848118cf8554de50f788199d609e2.tar.bz2 |
[add] version 4.0v4.0.0
Diffstat (limited to 'codebase/ext/dhtmlxscheduler_map_view.js')
-rw-r--r-- | codebase/ext/dhtmlxscheduler_map_view.js | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/codebase/ext/dhtmlxscheduler_map_view.js b/codebase/ext/dhtmlxscheduler_map_view.js new file mode 100644 index 0000000..29252fb --- /dev/null +++ b/codebase/ext/dhtmlxscheduler_map_view.js @@ -0,0 +1,29 @@ +/* +This software is allowed to use under GPL or you need to obtain Commercial or Enterise License +to use it in non-GPL project. Please contact sales@dhtmlx.com for details +*/ +scheduler.xy.map_date_width=188;scheduler.xy.map_description_width=400;scheduler.config.map_resolve_event_location=!0;scheduler.config.map_resolve_user_location=!0;scheduler.config.map_initial_position=new google.maps.LatLng(48.724,8.215);scheduler.config.map_error_position=new google.maps.LatLng(15,15);scheduler.config.map_infowindow_max_width=300;scheduler.config.map_type=google.maps.MapTypeId.ROADMAP;scheduler.config.map_zoom_after_resolve=15;scheduler.locale.labels.marker_geo_success="It seems you are here."; +scheduler.locale.labels.marker_geo_fail="Sorry, could not get your current position using geolocation.";scheduler.templates.marker_date=scheduler.date.date_to_str("%Y-%m-%d %H:%i");scheduler.templates.marker_text=function(g,i,f){return"<div><b>"+f.text+"</b><br/><br/>"+(f.event_location||"")+"<br/><br/>"+scheduler.templates.marker_date(g)+" - "+scheduler.templates.marker_date(i)+"</div>"}; +scheduler.dblclick_dhx_map_area=function(){!this.config.readonly&&this.config.dblclick_create&&this.addEventNow({start_date:scheduler._date,end_date:scheduler.date.add(scheduler._date,scheduler.config.time_step,"minute")})};scheduler.templates.map_time=function(g,i,f){return f._timed?this.day_date(f.start_date,f.end_date,f)+" "+this.event_date(g):scheduler.templates.day_date(g)+" – "+scheduler.templates.day_date(i)};scheduler.templates.map_text=function(g,i,f){return f.text}; +scheduler.date.map_start=function(g){return g};scheduler.date.add_map=function(g){return new Date(g.valueOf())};scheduler.templates.map_date=function(){return""};scheduler._latLngUpdate=!1; +scheduler.attachEvent("onSchedulerReady",function(){function g(a){if(a){var b=scheduler.locale.labels;scheduler._els.dhx_cal_header[0].innerHTML="<div class='dhx_map_line' style='width: "+(scheduler.xy.map_date_width+scheduler.xy.map_description_width+2)+"px;' ><div class='headline_date' style='width: "+scheduler.xy.map_date_width+"px;'>"+b.date+"</div><div class='headline_description' style='width: "+scheduler.xy.map_description_width+"px;'>"+b.description+"</div></div>";scheduler._table_view=!0; +scheduler.set_sizes()}}function i(){scheduler._selected_event_id=null;scheduler.map._infowindow.close();var a=scheduler.map._markers,b;for(b in a)a.hasOwnProperty(b)&&(a[b].setMap(null),delete scheduler.map._markers[b],scheduler.map._infowindows_content[b]&&delete scheduler.map._infowindows_content[b])}function f(){var a=scheduler.get_visible_events();a.sort(function(a,b){return a.start_date.valueOf()==b.start_date.valueOf()?a.id>b.id?1:-1:a.start_date>b.start_date?1:-1});for(var b="<div class='dhx_map_area'>", +d=0;d<a.length;d++){var c=a[d],e=c.id==scheduler._selected_event_id?"dhx_map_line highlight":"dhx_map_line",f=c.color?"background:"+c.color+";":"",g=c.textColor?"color:"+c.textColor+";":"";b+="<div class='"+e+"' event_id='"+c.id+"' style='"+f+""+g+""+(c._text_style||"")+" width: "+(scheduler.xy.map_date_width+scheduler.xy.map_description_width+2)+"px;'><div style='width: "+scheduler.xy.map_date_width+"px;' >"+scheduler.templates.map_time(c.start_date,c.end_date,c)+"</div>";b+="<div class='dhx_event_icon icon_details'> </div>"; +b+="<div class='line_description' style='width:"+(scheduler.xy.map_description_width-25)+"px;'>"+scheduler.templates.map_text(c.start_date,c.end_date,c)+"</div></div>"}b+="<div class='dhx_v_border' style='left: "+(scheduler.xy.map_date_width-2)+"px;'></div><div class='dhx_v_border_description'></div></div>";scheduler._els.dhx_cal_data[0].scrollTop=0;scheduler._els.dhx_cal_data[0].innerHTML=b;scheduler._els.dhx_cal_data[0].style.width=scheduler.xy.map_date_width+scheduler.xy.map_description_width+ +1+"px";var h=scheduler._els.dhx_cal_data[0].firstChild.childNodes;scheduler._els.dhx_cal_date[0].innerHTML=scheduler.templates[scheduler._mode+"_date"](scheduler._min_date,scheduler._max_date,scheduler._mode);scheduler._rendered=[];for(d=0;d<h.length-2;d++)scheduler._rendered[d]=h[d]}function l(a){var b=document.getElementById(a),d=scheduler._y-scheduler.xy.nav_height;d<0&&(d=0);var c=scheduler._x-scheduler.xy.map_date_width-scheduler.xy.map_description_width-1;c<0&&(c=0);b.style.height=d+"px";b.style.width= +c+"px";b.style.marginLeft=scheduler.xy.map_date_width+scheduler.xy.map_description_width+1+"px";b.style.marginTop=scheduler.xy.nav_height+2+"px"}scheduler._isMapPositionSet=!1;var h=document.createElement("div");h.className="dhx_map";h.id="dhx_gmap";h.style.dispay="none";var n=scheduler._obj;n.appendChild(h);scheduler._els.dhx_gmap=[];scheduler._els.dhx_gmap.push(h);l("dhx_gmap");var o={zoom:scheduler.config.map_inital_zoom||10,center:scheduler.config.map_initial_position,mapTypeId:scheduler.config.map_type|| +google.maps.MapTypeId.ROADMAP},e=new google.maps.Map(document.getElementById("dhx_gmap"),o);e.disableDefaultUI=!1;e.disableDoubleClickZoom=!scheduler.config.readonly;google.maps.event.addListener(e,"dblclick",function(a){if(!scheduler.config.readonly&&scheduler.config.dblclick_create){var b=a.latLng;geocoder.geocode({latLng:b},function(a,c){if(c==google.maps.GeocoderStatus.OK)b=a[0].geometry.location,scheduler.addEventNow({lat:b.lat(),lng:b.lng(),event_location:a[0].formatted_address,start_date:scheduler._date, +end_date:scheduler.date.add(scheduler._date,scheduler.config.time_step,"minute")})})}});var m={content:""};if(scheduler.config.map_infowindow_max_width)m.maxWidth=scheduler.config.map_infowindow_max_width;scheduler.map={_points:[],_markers:[],_infowindow:new google.maps.InfoWindow(m),_infowindows_content:[],_initialization_count:-1,_obj:e};geocoder=new google.maps.Geocoder;scheduler.config.map_resolve_user_location&&navigator.geolocation&&(scheduler._isMapPositionSet||navigator.geolocation.getCurrentPosition(function(a){var b= +new google.maps.LatLng(a.coords.latitude,a.coords.longitude);e.setCenter(b);e.setZoom(scheduler.config.map_zoom_after_resolve||10);scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_success);scheduler.map._infowindow.position=e.getCenter();scheduler.map._infowindow.open(e);scheduler._isMapPositionSet=!0},function(){scheduler.map._infowindow.setContent(scheduler.locale.labels.marker_geo_fail);scheduler.map._infowindow.setPosition(e.getCenter());scheduler.map._infowindow.open(e); +scheduler._isMapPositionSet=!0}));google.maps.event.addListener(e,"resize",function(){h.style.zIndex="5";e.setZoom(e.getZoom())});google.maps.event.addListener(e,"tilesloaded",function(){h.style.zIndex="5"});h.style.display="none";scheduler.attachEvent("onSchedulerResize",function(){return this._mode=="map"?(this.map_view(!0),!1):!0});var p=scheduler.render_data;scheduler.render_data=function(a,b){if(this._mode=="map"){f();for(var d=scheduler.get_visible_events(),c=0;c<d.length;c++)scheduler.map._markers[d[c].id]|| +j(d[c],!1,!1)}else return p.apply(this,arguments)};scheduler.map_view=function(a){scheduler.map._initialization_count++;var b=scheduler._els.dhx_gmap[0];scheduler._els.dhx_cal_data[0].style.width=scheduler.xy.map_date_width+scheduler.xy.map_description_width+1+"px";scheduler._min_date=scheduler.config.map_start||scheduler._currentDate();scheduler._max_date=scheduler.config.map_end||scheduler.date.add(scheduler._currentDate(),1,"year");scheduler._table_view=!0;g(a);if(a){i();f();b.style.display="block"; +l("dhx_gmap");for(var d=scheduler.map._obj.getCenter(),c=scheduler.get_visible_events(),e=0;e<c.length;e++)scheduler.map._markers[c[e].id]||j(c[e])}else b.style.display="none";google.maps.event.trigger(scheduler.map._obj,"resize");scheduler.map._initialization_count===0&&d&&scheduler.map._obj.setCenter(d);scheduler._selected_event_id&&q(scheduler._selected_event_id)};var q=function(a){scheduler.map._obj.setCenter(scheduler.map._points[a]);scheduler.callEvent("onClick",[a])},j=function(a,b,d){var c= +scheduler.config.map_error_position;a.lat&&a.lng&&(c=new google.maps.LatLng(a.lat,a.lng));var e=scheduler.templates.marker_text(a.start_date,a.end_date,a);scheduler._new_event||(scheduler.map._infowindows_content[a.id]=e,scheduler.map._markers[a.id]&&scheduler.map._markers[a.id].setMap(null),scheduler.map._markers[a.id]=new google.maps.Marker({position:c,map:scheduler.map._obj}),google.maps.event.addListener(scheduler.map._markers[a.id],"click",function(){scheduler.map._infowindow.setContent(scheduler.map._infowindows_content[a.id]); +scheduler.map._infowindow.open(scheduler.map._obj,scheduler.map._markers[a.id]);scheduler._selected_event_id=a.id;scheduler.render_data()}),scheduler.map._points[a.id]=c,b&&scheduler.map._obj.setCenter(scheduler.map._points[a.id]),d&&scheduler.callEvent("onClick",[a.id]))};scheduler.attachEvent("onClick",function(a){if(this._mode=="map"){scheduler._selected_event_id=a;for(var b=0;b<scheduler._rendered.length;b++)scheduler._rendered[b].className="dhx_map_line",scheduler._rendered[b].getAttribute("event_id")== +a&&(scheduler._rendered[b].className+=" highlight");scheduler.map._points[a]&&scheduler.map._markers[a]&&(scheduler.map._obj.setCenter(scheduler.map._points[a]),google.maps.event.trigger(scheduler.map._markers[a],"click"))}return!0});var k=function(a){a.event_location&&geocoder?geocoder.geocode({address:a.event_location,language:scheduler.uid().toString()},function(b,d){var c={};if(d!=google.maps.GeocoderStatus.OK){if(c=scheduler.callEvent("onLocationError",[a.id]),!c||c===!0)c=scheduler.config.map_error_position}else c= +b[0].geometry.location;a.lat=c.lat();a.lng=c.lng();scheduler._selected_event_id=a.id;scheduler._latLngUpdate=!0;scheduler.callEvent("onEventChanged",[a.id,a]);j(a,!0,!0)}):j(a,!0,!0)},r=function(a){a.event_location&&geocoder&&geocoder.geocode({address:a.event_location,language:scheduler.uid().toString()},function(b,d){var c={};if(d!=google.maps.GeocoderStatus.OK){if(c=scheduler.callEvent("onLocationError",[a.id]),!c||c===!0)c=scheduler.config.map_error_position}else c=b[0].geometry.location;a.lat= +c.lat();a.lng=c.lng();scheduler._latLngUpdate=!0;scheduler.callEvent("onEventChanged",[a.id,a])})},s=function(a,b,d,c){setTimeout(function(){var c=a.apply(b,d);a=b=d=null;return c},c||1)};scheduler.attachEvent("onEventChanged",function(a){if(this._latLngUpdate)this._latLngUpdate=!1;else{var b=scheduler.getEvent(a);b.start_date<scheduler._min_date&&b.end_date>scheduler._min_date||b.start_date<scheduler._max_date&&b.end_date>scheduler._max_date||b.start_date.valueOf()>=scheduler._min_date&&b.end_date.valueOf()<= +scheduler._max_date?(scheduler.map._markers[a]&&scheduler.map._markers[a].setMap(null),k(b)):(scheduler._selected_event_id=null,scheduler.map._infowindow.close(),scheduler.map._markers[a]&&scheduler.map._markers[a].setMap(null))}return!0});scheduler.attachEvent("onEventIdChange",function(a,b){var d=scheduler.getEvent(b);if(d.start_date<scheduler._min_date&&d.end_date>scheduler._min_date||d.start_date<scheduler._max_date&&d.end_date>scheduler._max_date||d.start_date.valueOf()>=scheduler._min_date&& +d.end_date.valueOf()<=scheduler._max_date)scheduler.map._markers[a]&&(scheduler.map._markers[a].setMap(null),delete scheduler.map._markers[a]),scheduler.map._infowindows_content[a]&&delete scheduler.map._infowindows_content[a],k(d);return!0});scheduler.attachEvent("onEventAdded",function(a,b){if(!scheduler._dataprocessor&&(b.start_date<scheduler._min_date&&b.end_date>scheduler._min_date||b.start_date<scheduler._max_date&&b.end_date>scheduler._max_date||b.start_date.valueOf()>=scheduler._min_date&& +b.end_date.valueOf()<=scheduler._max_date))scheduler.map._markers[a]&&scheduler.map._markers[a].setMap(null),k(b);return!0});scheduler.attachEvent("onBeforeEventDelete",function(a){scheduler.map._markers[a]&&scheduler.map._markers[a].setMap(null);scheduler._selected_event_id=null;scheduler.map._infowindow.close();return!0});scheduler._event_resolve_delay=1500;scheduler.attachEvent("onEventLoading",function(a){scheduler.config.map_resolve_event_location&&a.event_location&&!a.lat&&!a.lng&&(scheduler._event_resolve_delay+= +1500,s(r,this,[a],scheduler._event_resolve_delay));return!0});scheduler.attachEvent("onEventCancel",function(a,b){b&&(scheduler.map._markers[a]&&scheduler.map._markers[a].setMap(null),scheduler.map._infowindow.close());return!0})}); |