From 2ed14a26ff08d5e7a619d9f046d9bfc133ffd39b Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 14 May 2017 20:39:13 +0000
Subject: [PATCH] Refactor alert pane

---
 map.js |   38 ++++++++++++++++++++++++--------------
 1 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/map.js b/map.js
index 2e3614d..b462d46 100644
--- a/map.js
+++ b/map.js
@@ -23,7 +23,6 @@
 
 var map = null;
 var map_sphere = null;
-var fail_element = document.getElementById('fail');
 
 var ignore_hashchange = false;
 
@@ -63,10 +62,25 @@
 	},
 };
 
-function fail(msg) {
-	setText(fail_element, msg);
-	fail_element.style.top = '0.5em';
-}
+var Alert = {
+	element: document.getElementById('fail'),
+	action: undefined,
+	
+	fail: function(message, action) {
+		if(this.action) {
+			this.element.removeEventListener('click', this.action);
+			this.action = undefined;
+		}
+		
+		setText(this.element, message);
+		this.element.style.top = '0.5em';
+		
+		if(action) {
+			this.action = action;
+			this.element.addEventListener('click', action);
+		}
+	},
+};
 
 function fail_ajax_generic(data, fnc) {
 	// abort() is not a failure
@@ -82,11 +96,11 @@
 }
 
 function fail_ajax(data) {
-	fail_ajax_generic(data, fail);
+	fail_ajax_generic(data, Alert.fail.bind(Alert));
 }
 
 function fail_ajax_popup(data) {
-	fail_ajax_generic(data, Panel.fail);
+	fail_ajax_generic(data, Panel.fail.bind(Panel));
 }
 
 function getGeometry(object) {
@@ -588,7 +602,7 @@
 
 function init() {
 	if(!window.jQuery) {
-		fail(lang.jquery_not_loaded);
+		Alert.fail(lang.jquery_not_loaded);
 		return;
 	}
 	
@@ -653,7 +667,7 @@
 				element: document.getElementById('title'),
 			}),
 			new ol.control.Control({
-				element: fail_element,
+				element: Alert.element,
 			})
 		]),
 		loadTilesWhileAnimating: true,
@@ -725,10 +739,6 @@
 		
 		featureClicked(feature);
 	});
-	
-	fail_element.addEventListener('click', function() {
-		fail_element.style.top = '-10em';
-	});
 
 	// Change mouse cursor when over marker
 	map.on('pointermove', function(e) {
@@ -756,7 +766,7 @@
 		if(vehicles_xhr) vehicles_xhr.abort();
 		if(vehicles_timer) clearTimeout(vehicles_timer);
 		  
-		fail(lang.error_refresh);
+		Alert.fail(lang.error_refresh);
 	}, 1800000);
 }
 

--
Gitblit v1.9.1