Răsfoiți Sursa

Fixed #26972 -- Fixed is_collection definition in MapWidget initialization

Claude Paroz 8 ani în urmă
părinte
comite
f530b4fdfc

+ 1 - 1
django/contrib/gis/static/gis/js/OLMapWidget.js

@@ -184,7 +184,7 @@
             default_lat: 0,
             default_lon: 0,
             default_zoom: 4,
-            is_collection: new options.geom_type() instanceof OpenLayers.Geometry.Collection,
+            is_collection: options.geom_name.indexOf('Multi') > -1 || options.geom_name.indexOf('Collection') > -1,
             layerswitcher: false,
             map_options: {},
             map_srid: 4326,

+ 32 - 0
js_tests/gis/mapwidget.test.js

@@ -44,3 +44,35 @@ test('MapWidget.getControls', function(assert) {
     assert.equal(widget.controls[1].displayClass, 'olControlDrawFeaturePoint', 'Draw control');
     assert.equal(widget.controls[2].displayClass, 'olControlModifyFeature', 'Modify control');
 });
+
+test('MapWidget.IsCollection', function(assert) {
+    var options = {id: 'id_point', map_id: 'id_point_map', geom_name: 'Point'};
+    var widget = new MapWidget(options);
+    assert.notOk(widget.options.is_collection);
+    // Empty the default initial Point
+    document.getElementById('id_point').value = "";
+
+    options.geom_name = 'Polygon';
+    widget = new MapWidget(options);
+    assert.notOk(widget.options.is_collection);
+
+    options.geom_name = 'LineString';
+    widget = new MapWidget(options);
+    assert.notOk(widget.options.is_collection);
+
+    options.geom_name = 'MultiPoint';
+    widget = new MapWidget(options);
+    assert.ok(widget.options.is_collection);
+
+    options.geom_name = 'MultiPolygon';
+    widget = new MapWidget(options);
+    assert.ok(widget.options.is_collection);
+
+    options.geom_name = 'MultiLineString';
+    widget = new MapWidget(options);
+    assert.ok(widget.options.is_collection);
+
+    options.geom_name = 'GeometryCollection';
+    widget = new MapWidget(options);
+    assert.ok(widget.options.is_collection);
+});