-
Notifications
You must be signed in to change notification settings - Fork 106
/
StyleStore.js
60 lines (59 loc) · 2.35 KB
/
StyleStore.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
* Copyright (c) 2008-present The Open Source Geospatial Foundation
*
* Published under the BSD license.
* See https://github.com/geoext/geoext2/blob/master/license.txttxt for the full
* text of the license.
*/
/**
* A smart store that creates records for client-side rendered legends. If
* its store is configured with an {OpenLayers.Style2} instance as `data`,
* each record will represent a rule of the Style, and the store will be
* configured with `symbolizers` (Array of {OpenLayers.Symbolizer}),
* `filter` ({OpenLayers.Filter}), `label` (String, the rule's title),
* `name` (String), `description` (String), `elseFilter` (Boolean),
* `minScaleDenominator` (Number) and `maxScaleDenominator` (Number)
* fields. If the store's `data` is an {OpenLayers.Symbolizer.Raster}
* instance, records will represent its ColorMap entries, and the available
* fields will only be `symbolizers` (object literal with `color` and
* `opacity` properties from the ColorMapEntry, and stroke set to false),
* `filter` (String, the ColorMapEntry's quantity) and `label` (String).
*
* NOTE: Calling `commitChanges` on the store that is populated with
* this reader will fail with OpenLayers 2.11 - it requires at least revision
* https://github.com/openlayers/openlayers/commit/1db5ac3cbe874317968f78832901d6ef887ecca6
* from 2011-11-28 of OpenLayers.
*
* Sample code to create a store that reads from an OpenLayers.Style2
* object:
*
* var store = Ext.create('GeoExt.data.StyleStore',{
* data: myStyle // OpenLayers.Style2 or OpenLayers.Symbolizer.Raster
* });
*
* @class GeoExt.data.StyleStore
*/
Ext.define('GeoExt.data.StyleStore', {
extend: 'Ext.data.Store',
requires: [
'GeoExt.data.VectorStyleModel',
'GeoExt.data.RasterStyleModel'
],
alias: 'store.gx_style',
constructor: function(config){
config = Ext.apply({}, config);
if(config.data && !config.model){
if (config.data instanceof OpenLayers.Symbolizer.Raster) {
config.model = 'GeoExt.data.RasterStyleModel';
config.sorters = [{
property: 'filter',
direction: 'ASC',
root: 'data'
}];
} else {
config.model = 'GeoExt.data.VectorStyleModel';
}
}
this.callParent([config]);
}
});