Project

General

Profile

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

    
(10-10/145)