163 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			6.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| This program is free software; you can redistribute it and/or modify
 | |
| it under the terms of the GNU AFFERO General Public License as published by
 | |
| the Free Software Foundation; either version 3 of the License, or
 | |
| any later version.
 | |
| 
 | |
| This program is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU Affero General Public License
 | |
| along with this program; if not, write to the Free Software
 | |
| Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 | |
| or see http://www.gnu.org/licenses/agpl.txt.
 | |
| */
 | |
| 
 | |
| // OSRM Notifications
 | |
| // [handles notifications: timed tooltips and exclusive notifications]
 | |
| 
 | |
| 
 | |
| OSRM.GUI.extend( {
 | |
| 	
 | |
| // tooltips
 | |
| tooltips: {
 | |
| 	// triggered in OSRM.Localization.setLanguageWrapper
 | |
| 	localization:
 | |
| 	{	timeout:	180000,		// 30min
 | |
| 		header: 	"Did you know? You can change the display language.",
 | |
| 		body: 		"You can use the pulldown menu in the upper left corner to select your favorite language. " +
 | |
| 					"<br/><br/>" +
 | |
| 					"Don't despair if you cannot find your language of choice. " +
 | |
| 					"If you want, you can help to provide additional translations! " +
 | |
| 					"Visit <a href='https://github.com/DennisSchiefer/Project-OSRM-Web'>here</a> for more information."
 | |
| 	},
 | |
| 	// triggered in OSRM.Map.click
 | |
| 	clicking:
 | |
| 	{	timeout:	60000,		// 1min
 | |
| 		header: 	"Did you know? You can click on the map to set route markers.",
 | |
| 		body:		"You can click on the map with the left mouse button to set a source marker (green) or a target marker (red), " +
 | |
| 					"if the source marker already exists. " +
 | |
| 					"The address of the selected location will be displayed in the boxes to the left. " + 
 | |
| 					"<br/><br/>" +
 | |
| 					"You can delete a marker by clicking on it again with the left mouse button."
 | |
| 	},
 | |
| 	// triggered in OSRM.Routing.getRoute_Dragging	
 | |
| 	dragging:
 | |
| 	{	timeout:	120000,		// 2min
 | |
| 		header: 	"Did you know? You can drag each route marker on the map.",
 | |
| 		body:		"You can drag a marker by clicking on it with the left mouse button and holding the button pressed. " +
 | |
| 					"Then you can move the marker around the map and the route will be updated instantaneously. " +
 | |
| 					"<br/><br/>" +
 | |
| 					"You can even create intermediate markers by dragging them off of the main route! "
 | |
| 	}
 | |
| },
 | |
| 
 | |
| 
 | |
| // initialize notifications and tooltip timers
 | |
| init: function() {
 | |
| 	// notifications
 | |
| 	// [nothing to be done at the moment]
 | |
| 	
 | |
| 	// tooltip timers
 | |
| 	var tooltips = OSRM.GUI.tooltips;
 | |
| 	for( id in tooltips ) {
 | |
| 		// start timer
 | |
| 		tooltips[id]._timer = setTimeout(
 | |
| 				function(_id){ return function(){OSRM.GUI._showTooltip(_id);}; }(id),
 | |
| 				tooltips[id].timeout
 | |
| 		);
 | |
| 		
 | |
| 		// mark tooltip as pending
 | |
| 		tooltips[id]._pending = true;
 | |
| 	}
 | |
| },
 | |
| 
 | |
| 
 | |
| // deactivate pending tooltip
 | |
| deactivateTooltip: function(id) {
 | |
| 	var tooltips = OSRM.GUI.tooltips;
 | |
| 	if(tooltips[id] == undefined)
 | |
| 		return;	
 | |
| 	
 | |
| 	// mark tooltip as no longer pending
 | |
| 	tooltips[id]._pending = false;
 | |
| },
 | |
| // show tooltip after timer expired
 | |
| _showTooltip: function(id) {
 | |
| 	var tooltips = OSRM.GUI.tooltips;
 | |
| 	if(tooltips[id] == undefined)
 | |
| 		return;	
 | |
| 	
 | |
| 	// only show tooltip if it is still pending 
 | |
| 	if( tooltips[id]._pending == false ) {
 | |
| 		return;
 | |
| 	}
 | |
| 		
 | |
| 	// if a notification is currently shown, restart timer
 | |
| 	if( OSRM.GUI.isTooltipVisible() ) {
 | |
| 		tooltips[id]._timer = setTimeout(
 | |
| 				function(_id){ return function(){OSRM.GUI._showTooltip(_id);}; }(id),
 | |
| 				tooltips[id].timeout
 | |
| 		);		
 | |
| 		return;
 | |
| 	}
 | |
| 	
 | |
| 	// show notification
 | |
| 	OSRM.GUI.tooltipNotify( tooltips[id].header, tooltips[id].body );
 | |
| 	
 | |
| 	// mark tooltip as no longer pending
 | |
| 	tooltips[id]._pending = false;
 | |
| },
 | |
| 
 | |
| 
 | |
| // exclusive notification
 | |
| exclusiveNotify: function( header, text, closable ){
 | |
| 	document.getElementById('exclusive-notification-blanket').style.display = "block";
 | |
| 	document.getElementById('exclusive-notification-label').innerHTML = header;
 | |
| 	document.getElementById('exclusive-notification-box').innerHTML = text;
 | |
| 	if( closable )
 | |
| 		document.getElementById('exclusive-notification-toggle').onclick = OSRM.GUI.exclusiveDenotify;
 | |
| 	else
 | |
| 		document.getElementById('exclusive-notification-toggle').style.display = "none";
 | |
| },
 | |
| exclusiveDenotify: function() {
 | |
| 	document.getElementById('exclusive-notification-blanket').style.display = "none";
 | |
| },
 | |
| 
 | |
| 
 | |
| // tooltip notification
 | |
| tooltipNotify: function( header, text ){
 | |
| 	document.getElementById('tooltip-notification-wrapper').style.display = "block";
 | |
| 	document.getElementById('tooltip-notification-label').innerHTML = header;
 | |
| 	document.getElementById('tooltip-notification-box').innerHTML = text;
 | |
| 	document.getElementById('tooltip-notification-box').style.display = "block";		// simple trick to always start with a minimized tooltip
 | |
| 	OSRM.GUI.tooltipResize();
 | |
| 	
 | |
| 	document.getElementById('tooltip-notification-toggle').onclick = OSRM.GUI.tooltipDenotify;
 | |
| 	document.getElementById('tooltip-notification-resize').onclick = OSRM.GUI.tooltipResize;
 | |
| },
 | |
| tooltipResize: function() {
 | |
| 	if( document.getElementById('tooltip-notification-box').style.display == "none" ) {	
 | |
| 		document.getElementById('tooltip-notification-box').style.display = "block";
 | |
| 		var height = document.getElementById('tooltip-notification-box').clientHeight;
 | |
| 		document.getElementById('tooltip-notification-content').style.height = (height + 28) + "px";
 | |
| 		document.getElementById('tooltip-notification-wrapper').style.height = (height + 48) + "px";
 | |
| 		document.getElementById('tooltip-notification-resize').className = "iconic-button up-marker top-right-button";
 | |
| 	} else {
 | |
| 		document.getElementById('tooltip-notification-box').style.display = "none";
 | |
| 		document.getElementById('tooltip-notification-content').style.height = "18px";
 | |
| 		document.getElementById('tooltip-notification-wrapper').style.height = "38px";		
 | |
| 		document.getElementById('tooltip-notification-resize').className = "iconic-button down-marker top-right-button";
 | |
| 	}
 | |
| },
 | |
| tooltipDenotify: function() {
 | |
| 	document.getElementById('tooltip-notification-wrapper').style.display = "none";
 | |
| },
 | |
| isTooltipVisible: function() {
 | |
| 	return document.getElementById('tooltip-notification-wrapper').style.display == "block"; 
 | |
| }
 | |
| 
 | |
| });
 |