1
|
/*
|
2
|
License: LGPL as per: http://www.gnu.org/copyleft/lesser.html
|
3
|
$Id$
|
4
|
*/
|
5
|
|
6
|
// Ensure this object's dependancies are loaded.
|
7
|
mapbuilder.loadScript(baseDir+"/widget/ButtonBase.js");
|
8
|
|
9
|
/**
|
10
|
* When this button is selected, clicks on the MapPane trigger a Metacat query with the
|
11
|
* currently set AOI.
|
12
|
* @constructor
|
13
|
* @base ButtonBase
|
14
|
* @authors P. Mark Anderson anderson@nceas.ucsb.edu, Matthew Perry perry@nceas.ucsb.edu
|
15
|
* @param widgetNode The widget node from the Config XML file.
|
16
|
* @param model The model for this widget
|
17
|
*/
|
18
|
function AoiMetacatQuery(widgetNode, model) {
|
19
|
// Extend ButtonBase
|
20
|
ButtonBase.apply(this, new Array(widgetNode, model))
|
21
|
|
22
|
// Grab the important values from the config file
|
23
|
var wfs_proxy = widgetNode.selectSingleNode("mb:wfs_proxy").firstChild.nodeValue;
|
24
|
var wfs_server = widgetNode.selectSingleNode("mb:wfs_server").firstChild.nodeValue;
|
25
|
var tolerance = widgetNode.selectSingleNode("mb:pixel_tolerance").firstChild.nodeValue;
|
26
|
|
27
|
/**
|
28
|
* Queries metacat and displays the result in a popup window.
|
29
|
* @param objRef Pointer to this object.
|
30
|
* @param targetNode The node for the enclosing HTML tag for this widget.
|
31
|
*/
|
32
|
this.doAction = function(objRef,targetNode) {
|
33
|
if (objRef.enabled) {
|
34
|
var method = "popup";
|
35
|
var bbox = objRef.targetModel.getParam("aoi");
|
36
|
if ( bbox!=null) {
|
37
|
var ul = bbox[0];
|
38
|
var lr = bbox[1];
|
39
|
var extent = objRef.targetModel.extent;
|
40
|
var extbox = extent.model.getBoundingBox();
|
41
|
var mapwidth_real = extbox[2] - extbox[0];
|
42
|
var mapwidth_pixel = extent.model.getWindowWidth();
|
43
|
var res = mapwidth_real / mapwidth_pixel;
|
44
|
}
|
45
|
|
46
|
var selectedLayer = objRef.context.getParam("selectedLayer");
|
47
|
|
48
|
if ( selectedLayer != null ) {
|
49
|
|
50
|
// Determine the BBOX
|
51
|
var x1 = ul[0];
|
52
|
var y1 = lr[1];
|
53
|
var x2 = lr[0];
|
54
|
var y2 = ul[1];
|
55
|
if ( x1 == x2 && y1 == y2 ) {
|
56
|
// BBOX is really a point; give a bit of wiggle room
|
57
|
// tolerance is number of pixels to buffer, set in config
|
58
|
x1 = x1 - tolerance * res;
|
59
|
y1 = y1 - tolerance * res;
|
60
|
x2 = x2 + tolerance * res;
|
61
|
y2 = y2 + tolerance * res;
|
62
|
}
|
63
|
|
64
|
var wfs_url = wfs_server + "?request=GetFeature&typename=" + selectedLayer +
|
65
|
"&BBOX=" + x1 + "," + y1 + "," + x2 + "," + y2;
|
66
|
var url = wfs_proxy + "?wfsurl=" + escape(wfs_url);
|
67
|
|
68
|
if (method == 'popup') {
|
69
|
newwindow = window.open(url,'queryWin','height=600,width=800,status=yes,toolbar=yes,menubar=no,location=yes,resizable=yes,scrollbars=yes');
|
70
|
if (window.focus) {newwindow.focus()}
|
71
|
}
|
72
|
} else {
|
73
|
alert("Please select a query layer first");
|
74
|
|
75
|
}
|
76
|
|
77
|
}
|
78
|
}
|
79
|
|
80
|
/**
|
81
|
* Register for mouseUp events.
|
82
|
* @param objRef Pointer to this object.
|
83
|
*/
|
84
|
this.setMouseListener = function(objRef) {
|
85
|
if (objRef.mouseHandler) {
|
86
|
objRef.mouseHandler.model.addListener('mouseup',objRef.doAction,objRef);
|
87
|
}
|
88
|
objRef.context=objRef.widgetNode.selectSingleNode("mb:context");
|
89
|
if (objRef.context){
|
90
|
alert("got context!");
|
91
|
objRef.context=eval("config.objects."+objRef.context.firstChild.nodeValue);
|
92
|
} else {
|
93
|
//alert("no context in AoiMetacatQuery widget. using mainMap ");
|
94
|
objRef.context=eval("config.objects.mainMap");
|
95
|
/*
|
96
|
var nodes = objRef.widgetNode.childNodes;
|
97
|
for (var i=0; i<nodes.length; i++) {
|
98
|
alert(nodes.item(i).nodeType + " // " +
|
99
|
nodes.item(i).nodeName + " // " +
|
100
|
nodes.item(i).nodeValue);
|
101
|
}
|
102
|
*/
|
103
|
}
|
104
|
}
|
105
|
this.model.addListener( "loadModel", this.setMouseListener, this );
|
106
|
|
107
|
}
|
108
|
|