forked from geoext/geoext1
-
Notifications
You must be signed in to change notification settings - Fork 0
/
search-form.js
86 lines (74 loc) · 2.49 KB
/
search-form.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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**
* Copyright (c) 2008-2011 The Open Source Geospatial Foundation
*
* Published under the BSD license.
* See http://svn.geoext.org/core/trunk/geoext/license.txt for the full text
* of the license.
*/
/** api: example[search-form]
* Filter Form Panel
* -----------------
* Use a form to build an OpenLayers filter.
*/
var formPanel;
Ext.onReady(function() {
// create a protocol, this protocol is used by the form
// to send the search request, this protocol's read
// method received an OpenLayers.Filter instance,
// which is derived from the content of the form
var protocol = new OpenLayers.Protocol({
read: function(options) {
var f; html = [];
f = options.filter;
html.push([f.CLASS_NAME, ",", f.type, "<br />"].join(" "));
f = options.filter.filters[0];
html.push([f.CLASS_NAME, ",", f.type, ",",
f.property, ":", f.value, "<br />"].join(" "));
f = options.filter.filters[1];
html.push([f.CLASS_NAME, ",", f.type, ", ",
f.property, ": ", f.value].join(" "));
Ext.get("filter").update(html.join(""));
}
});
// create a GeoExt form panel (configured with an OpenLayers.Protocol
// instance)
formPanel = new GeoExt.form.FormPanel({
width: 300,
height: 200,
protocol: protocol,
items: [{
xtype: "textfield",
name: "name__like",
value: "foo",
fieldLabel: "name"
}, {
xtype: "textfield",
name: "elevation__ge",
value: "1200",
fieldLabel: "maximum elevation"
}],
listeners: {
actioncomplete: function(form, action) {
// this listener triggers when the search request
// is complete, the OpenLayers.Protocol.Response
// resulting from the request is available
// through "action.response"
}
}
});
formPanel.addButton({
text: "search",
handler: function() {
// trigger search request, the options passed to doAction
// are passed to the protocol's read method, so one
// can register a read callback here
var o = {
callback: function(response) {
}
};
this.search(o);
},
scope: formPanel
});
formPanel.render("formpanel");
});