JGirault has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/317076

Change subject: Fix how Wikivoyage shows external groups in the layers dropdown
......................................................................

Fix how Wikivoyage shows external groups in the layers dropdown

Bug: T148346
Change-Id: I6e22a243da182e0b7c8965c10fe977c7ee8ea7be
---
M lib/wikimedia-mapdata.js
M modules/box/Map.js
M modules/wikivoyage/WVMapLayers.js
M modules/wikivoyage/styles/control-layers.less
4 files changed, 28 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Kartographer 
refs/changes/76/317076/1

diff --git a/lib/wikimedia-mapdata.js b/lib/wikimedia-mapdata.js
index 0e14db5..7ac88be 100644
--- a/lib/wikimedia-mapdata.js
+++ b/lib/wikimedia-mapdata.js
@@ -161,6 +161,7 @@
   var ExternalGroup = function () {
     // call the constructor
     this.initialize.apply( this, arguments );
+    this.isExternal = true;
   };
 
   extend( ExternalGroup.prototype, Group.prototype );
@@ -309,7 +310,11 @@
 
 /* globals module */
 /**
- * Internal Data Group.
+ * A hybrid group is a group that is not considered as a {@link 
Kartographer.Data.Group.HybridGroup}
+ * because it does not implement a `fetch` method.
+ *
+ * This abstraction is useful for the Developer API: the data is passed 
directly but still needs to
+ * be parsed to extract the external sub-groups.
  *
  * @class Kartographer.Data.Group.HybridGroup
  * @extends Kartographer.Data.Group
@@ -332,6 +337,7 @@
 
     Group.prototype.initialize.call( this, groupId, geoJSON, options );
     this.externals = [];
+    this.isExternal = false;
   };
 
   /**
diff --git a/modules/box/Map.js b/modules/box/Map.js
index 6880fc4..56b0329 100644
--- a/modules/box/Map.js
+++ b/modules/box/Map.js
@@ -359,8 +359,14 @@
                        DataManager.loadGroups( dataGroups ).then( function ( 
dataGroups ) {
 
                                $.each( dataGroups, function ( key, group ) {
+                                       var layerOptions = {
+                                               attribution: group.attribution
+                                       };
+                                       if ( group.isExternal ) {
+                                               layerOptions.name = 
group.attribution;
+                                       }
                                        if ( !$.isEmptyObject( 
group.getGeoJSON() ) ) {
-                                               map.addGeoJSONLayer( group.id, 
group.getGeoJSON(), { attribution: group.attribution } );
+                                               map.addGeoJSONLayer( group.id, 
group.getGeoJSON(), layerOptions );
                                        } else {
                                                mw.log.warn( 'Layer not found 
or contains no data: "' + group.id + '"' );
                                        }
@@ -386,9 +392,15 @@
 
                        DataManager.load( groupData ).then( function ( 
dataGroups ) {
                                $.each( dataGroups, function ( key, group ) {
-                                       var groupId = inlineDataLayerKey + 
inlineDataLayerId++;
+                                       var groupId = inlineDataLayerKey + 
inlineDataLayerId++,
+                                               layerOptions = {
+                                                       attribution: 
group.attribution || options.attribution
+                                               };
+                                       if ( group.isExternal ) {
+                                               layerOptions.name = 
group.attribution;
+                                       }
                                        if ( !$.isEmptyObject( 
group.getGeoJSON() ) ) {
-                                               map.addGeoJSONLayer( groupId, 
group.getGeoJSON(), { attribution: group.attribution || options.attribution } );
+                                               map.addGeoJSONLayer( groupId, 
group.getGeoJSON(), layerOptions );
                                        } else {
                                                mw.log.warn( 'Layer not found 
or contains no data: "' + groupId + '"' );
                                        }
diff --git a/modules/wikivoyage/WVMapLayers.js 
b/modules/wikivoyage/WVMapLayers.js
index 41c315f..a8e6161 100644
--- a/modules/wikivoyage/WVMapLayers.js
+++ b/modules/wikivoyage/WVMapLayers.js
@@ -84,9 +84,10 @@
                        } );
                        return this;
                }
+
                this.addLayer(
                        layer,
-                       wikivoyage.formatLayerName( mw.msg( 
'kartographer-wv-group' ) + id ),
+                       layer.options.name || wikivoyage.formatLayerName( 
mw.msg( 'kartographer-wv-group' ) + ' ' + id ),
                        true
                );
                return this;
diff --git a/modules/wikivoyage/styles/control-layers.less 
b/modules/wikivoyage/styles/control-layers.less
index 72224d8..1b059fd 100644
--- a/modules/wikivoyage/styles/control-layers.less
+++ b/modules/wikivoyage/styles/control-layers.less
@@ -39,6 +39,10 @@
 .leaflet-control-layers-list * {
        line-height: normal;
        vertical-align: middle;
+
+       a {
+               vertical-align: bottom;
+       }
 }
 
 .leaflet-control-layers-list {

-- 
To view, visit https://gerrit.wikimedia.org/r/317076
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I6e22a243da182e0b7c8965c10fe977c7ee8ea7be
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Kartographer
Gerrit-Branch: master
Gerrit-Owner: JGirault <julien.inbox.w...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to