[Commits] r2860 - in core/trunk/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets
commits at geoext.org
commits at geoext.org
Tue Oct 25 14:18:06 CEST 2011
Author: ahocevar
Date: 2011-10-25 14:18:06 +0200 (Tue, 25 Oct 2011)
New Revision: 2860
Modified:
core/trunk/geoext/lib/GeoExt/widgets/LayerLegend.js
core/trunk/geoext/lib/GeoExt/widgets/UrlLegend.js
core/trunk/geoext/lib/GeoExt/widgets/VectorLegend.js
core/trunk/geoext/lib/GeoExt/widgets/WMSLegend.js
core/trunk/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
core/trunk/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
Log:
Score instead of true/false for LayerLegend.supports. Thanks bartvde for updating the tests. r=bartvde (closes #452)
Modified: core/trunk/geoext/lib/GeoExt/widgets/LayerLegend.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/LayerLegend.js 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/lib/GeoExt/widgets/LayerLegend.js 2011-10-25 12:18:06 UTC (rev 2860)
@@ -146,8 +146,8 @@
* legend types for. If not provided, all registered types will be
* returned.
* :param preferredTypes: ``Array(String)`` Types that should be considered.
- * first. If not provided, all legend types will be returned in the order
- * they were registered.
+ * first. If not provided, all registered legend types will be returned
+ * in the order of their score for support of the provided layerRecord.
* :return: ``Array(String)`` xtypes of legend types that can be used with
* the provided ``layerRecord``.
*
@@ -155,17 +155,30 @@
* with optionally provided preferred types listed first.
*/
GeoExt.LayerLegend.getTypes = function(layerRecord, preferredTypes) {
- var types = (preferredTypes || []).concat();
- var goodTypes = [];
- for(var type in GeoExt.LayerLegend.types) {
- if(GeoExt.LayerLegend.types[type].supports(layerRecord)) {
- // add to goodTypes if not preferred
- types.indexOf(type) == -1 && goodTypes.push(type);
+ var types = (preferredTypes || []).concat(),
+ scoredTypes = [], score, type;
+ for (type in GeoExt.LayerLegend.types) {
+ score = GeoExt.LayerLegend.types[type].supports(layerRecord);
+ if(score > 0) {
+ // add to scoredTypes if not preferred
+ if (types.indexOf(type) == -1) {
+ scoredTypes.push({
+ type: type,
+ score: score
+ });
+ }
} else {
// preferred, but not supported
types.remove(type);
}
}
+ scoredTypes.sort(function(a, b) {
+ return a.score < b.score ? 1 : (a.score == b.score ? 0 : -1);
+ });
+ var len = scoredTypes.length, goodTypes = new Array(len);
+ for (var i=0; i<len; ++i) {
+ goodTypes[i] = scoredTypes[i].type;
+ }
// take the remaining preferred types, and add other good types
return types.concat(goodTypes);
};
@@ -173,8 +186,8 @@
/** private: method[supports]
* :param layerRecord: :class:`GeoExt.data.LayerRecord` The layer record
* to check support for.
- * :return: ``Boolean`` true if this legend type supports the layer
- * record.
+ * :return: ``Integer`` score indicating how good the legend supports the
+ * provided record. 0 means not supported.
*
* Checks whether this legend type supports the provided layerRecord.
*/
Modified: core/trunk/geoext/lib/GeoExt/widgets/UrlLegend.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/UrlLegend.js 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/lib/GeoExt/widgets/UrlLegend.js 2011-10-25 12:18:06 UTC (rev 2860)
@@ -54,7 +54,7 @@
* Private override
*/
GeoExt.UrlLegend.supports = function(layerRecord) {
- return layerRecord.get("legendURL") != null;
+ return layerRecord.get("legendURL") == null ? 0 : 10;
};
/** api: legendtype = gx_urllegend */
Modified: core/trunk/geoext/lib/GeoExt/widgets/VectorLegend.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/VectorLegend.js 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/lib/GeoExt/widgets/VectorLegend.js 2011-10-25 12:18:06 UTC (rev 2860)
@@ -662,7 +662,7 @@
* Private override
*/
GeoExt.VectorLegend.supports = function(layerRecord) {
- return layerRecord.getLayer() instanceof OpenLayers.Layer.Vector;
+ return layerRecord.getLayer() instanceof OpenLayers.Layer.Vector ? 1 : 0;
};
/** api: legendtype = gx_vectorlegend */
Modified: core/trunk/geoext/lib/GeoExt/widgets/WMSLegend.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/WMSLegend.js 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/lib/GeoExt/widgets/WMSLegend.js 2011-10-25 12:18:06 UTC (rev 2860)
@@ -232,7 +232,7 @@
* Private override
*/
GeoExt.WMSLegend.supports = function(layerRecord) {
- return layerRecord.getLayer() instanceof OpenLayers.Layer.WMS;
+ return layerRecord.getLayer() instanceof OpenLayers.Layer.WMS ? 1 : 0;
};
/** api: legendtype = gx_wmslegend */
Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/LayerLegend.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/LayerLegend.html 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/LayerLegend.html 2011-10-25 12:18:06 UTC (rev 2860)
@@ -101,7 +101,7 @@
layer: new OpenLayers.Layer.WMS(),
legendURL: "foo"
});
- t.eq(GeoExt.LayerLegend.getTypes(rec), ["gx_urllegend","gx_wmslegend"], "a layer record with WMS layer and legendURL is supported by gx_urllegend and gx_wmslegend.");
+ t.eq(GeoExt.LayerLegend.getTypes(rec), ["gx_urllegend","gx_wmslegend"], "a layer record with WMS layer and legendURL is supported by gx_urllegend and gx_wmslegend, with a higher priority of gx_urllegend.");
t.eq(GeoExt.LayerLegend.getTypes(rec, ["gx_wmslegend"]), ["gx_wmslegend","gx_urllegend"], "a layer record with WMS layer and legendURL and gx_wmslegend as preferred type lists gx_wmslegend first, then gx_urllegend.");
rec = new Rec({
layer: new OpenLayers.Layer.WMS()
Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/UrlLegend.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/UrlLegend.html 2011-10-25 07:20:45 UTC (rev 2859)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/UrlLegend.html 2011-10-25 12:18:06 UTC (rev 2860)
@@ -76,16 +76,16 @@
layer: new OpenLayers.Layer(),
legendURL: "foo"
});
- t.eq(GeoExt.UrlLegend.supports(rec), true, "layer record with a legendURL property is supported.");
+ t.ok(GeoExt.UrlLegend.supports(rec) > 0, "layer record with a legendURL property is supported.");
var rec = new Rec({
layer: new OpenLayers.Layer()
});
- t.eq(GeoExt.UrlLegend.supports(rec), false, "layer record without a legendURL property is not supported.");
+ t.eq(GeoExt.UrlLegend.supports(rec), 0, "layer record without a legendURL property is not supported.");
}
</script>
<body>
<div id="legend"></div>
</body>
-</html>
\ No newline at end of file
+</html>
More information about the Commits
mailing list