[Libreoffice-commits] online.git: Branch 'distro/collabora/collabora-online-4-0' - loleaflet/src

Michael Meeks (via logerrit) logerrit at kemper.freedesktop.org
Wed Oct 9 11:50:01 UTC 2019


 loleaflet/src/layer/marker/ProgressOverlay.js |   54 +++++++++++++++++++++++++-
 loleaflet/src/map/Map.js                      |   14 ------
 2 files changed, 55 insertions(+), 13 deletions(-)

New commits:
commit d010919b8f2f21688b49c45dd7e32e8642cc1c4f
Author:     Michael Meeks <michael.meeks at collabora.com>
AuthorDate: Fri Oct 4 17:11:46 2019 +0100
Commit:     Michael Meeks <michael.meeks at collabora.com>
CommitDate: Wed Oct 9 13:49:42 2019 +0200

    Spinner: accelerate the spin, and hold off showing the progress bar.
    
    Ironically the progress bar makes people think something is slow.
    
    Change-Id: I3fb85ba1a44cdb436159abe5448d71b666020c5c
    Reviewed-on: https://gerrit.libreoffice.org/80242
    Tested-by: Aron Budea <aron.budea at collabora.com>
    Reviewed-by: Michael Meeks <michael.meeks at collabora.com>

diff --git a/loleaflet/src/layer/marker/ProgressOverlay.js b/loleaflet/src/layer/marker/ProgressOverlay.js
index 93835c583..7100243d8 100644
--- a/loleaflet/src/layer/marker/ProgressOverlay.js
+++ b/loleaflet/src/layer/marker/ProgressOverlay.js
@@ -6,13 +6,15 @@
 L.ProgressOverlay = L.Layer.extend({
 
 	options: {
-		spinnerSpeed: 15
+		spinnerSpeed: 30
 	},
 
 	initialize: function (latlng, size) {
 		this._latlng = L.latLng(latlng);
 		this._size = size;
+		this._percent = 0;
 		this._initLayout();
+		this.intervalTimer = undefined;
 	},
 
 	onAdd: function () {
@@ -67,6 +69,55 @@ L.ProgressOverlay = L.Layer.extend({
 		L.DomUtil.setPosition(this._container, pos);
 	},
 
+	shutdownTimer: function() {
+		if (this.intervalTimer)
+			clearInterval(this.intervalTimer);
+		this.intervalTimer = undefined;
+	},
+
+	// Show the progress bar, but only if things seem slow
+	delayedStart: function(map, label, bar) {
+		this.setLabel(label);
+		this.setBar(false);
+		this.setValue(0);
+
+		this.shutdownTimer();
+
+		var self = this;
+		self.state = 0;
+		this.intervalTimer = setInterval(
+			function() {
+				self.state = self.state + 1;
+				switch (self.state) {
+				// 0.5s -> start the spinner
+				case 1:
+					if (!map.hasLayer(self))
+						map.addLayer(self);
+					break;
+				// 2s -> enable the progress bar if we have one & it's low
+				case 4:
+					if (self._percent < 80)
+						self.setBar(bar);
+					break;
+				// 3s -> show the bar if it's not up.
+				case 6:
+					self.setBar(bar);
+					break;
+				}
+				if (!map.hasLayer(self)) {
+					map.addLayer(self);
+				}
+			}, 500 /* ms */);
+	},
+
+	// Hide ourselves if there is anything to hide
+	end: function(map) {
+		this.shutdownTimer();
+		if (map.hasLayer(this)) {
+			map.removeLayer(this);
+		}
+	},
+
 	setLabel: function (label) {
 		if (this._label.innerHTML !== label) {
 			this._label.innerHTML = label;
@@ -83,6 +134,7 @@ L.ProgressOverlay = L.Layer.extend({
 	},
 
 	setValue: function (value) {
+		this._percent = value;
 		this._bar.style.width = value + '%';
 		this._value.innerHTML = value + '%';
 	}
diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index 10525ae73..2c802d5e9 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -347,22 +347,12 @@ L.Map = L.Evented.extend({
 			this.fire('showbusy', {label: label});
 			return;
 		}
-
-		this._progressBar.setLabel(label);
-		this._progressBar.setBar(bar);
-		this._progressBar.setValue(0);
-
-		if (!this.hasLayer(this._progressBar)) {
-			this.addLayer(this._progressBar);
-		}
+		this._progressBar.delayedStart(this, label, bar);
 	},
 
 	hideBusy: function () {
 		this.fire('hidebusy');
-
-		if (this.hasLayer(this._progressBar)) {
-			this.removeLayer(this._progressBar);
-		}
+		this._progressBar.end(this);
 	},
 
 	setZoom: function (zoom, options) {


More information about the Libreoffice-commits mailing list