Project

General

Profile

1
<!doctype html public "-//W3C//DTD HTML 4.0 Frameset//EN""http://www.w3.org/TR/REC-html40/frameset.dtd">
2
<html>
3
<head>
4
<title>
5
<a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008 Overview
6
</title>
7
<link rel ="stylesheet" type="text/css" href="stylesheet.css" title="Style">
8
<script>
9
function asd() {
10
	
11
		parent.document.title="WebServiceForm.js Overview";
12
	
13
}
14
</script>
15
</head>
16
<body bgcolor="white" onload="asd();">
17

    
18
<!-- ========== START OF NAVBAR ========== -->
19
<a name="navbar_top"><!-- --></a>
20
<table border="0" width="100%" cellpadding="1" cellspacing="0">
21
<tr>
22
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
23
<a name="navbar_top_firstrow"><!-- --></a>
24
<table border="0" cellpadding="0" cellspacing="3">
25
  <tr align="center" valign="top">
26
  
27
  
28
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
29
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
30
  
31

    
32
  <td bgcolor="#FFFFFF" class="NavBarCell1"> 	<font class="NavBarFont1">Class</font>&nbsp;</td>
33
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
34
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
35
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
36
  </tr>
37
</table>
38
</td>
39
<td bgcolor="#EEEEFF" align="right" valign="top">
40
<em>
41
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
42
</td>
43
</tr>
44

    
45
<tr>
46
<td bgcolor="white" class="NavBarCell2"><font size="-2">
47
&nbsp;PREV&nbsp;
48
&nbsp;NEXT</font></td>
49
<td bgcolor="white" class="NavBarCell2"><font size="-2">
50
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
51
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
52
&nbsp;&nbsp;
53
<script>
54
  <!--
55
  if(window==top) {
56
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
57
  }
58
  //-->
59
</script>
60
<noscript>
61
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
62
</noscript>
63
</font></td>
64
</tr>
65
</table>
66
<!-- =========== END OF NAVBAR =========== -->
67

    
68
<hr>
69
<center>
70
	
71
	   <h2>WebServiceForm.js</h2>
72
	
73
</center>
74

    
75
	
76

    
77

    
78
<h4>Summary</h4>
79
<p>
80
	
81
		No overview generated for 'WebServiceForm.js'<BR/><BR/>
82
	
83
</p>
84

    
85
<hr>
86

    
87

    
88
    <table border="1" cellpadding="3" cellspacing="0" width="100%">
89
    <tr bgcolor="#CCCCFF" class="TableHeadingColor">
90
    <td colspan=2><font size="+2">
91
    
92
        <b>Class Summary</b>
93
    
94
    </font></td>
95
    </tr>
96
    
97
    <tr bgcolor="white" class="TableRowColor">
98
    <td width="15%"><b><a href="WebServiceForm.html">WebServiceForm</a></b></td>
99
    <td>&nbsp;</td>
100
    </tr>
101
    
102
    </table>
103
    <hr/> 
104

    
105

    
106
<!-- ========== METHOD SUMMARY =========== -->
107

    
108
<!-- ========== END METHOD SUMMARY =========== -->
109

    
110

    
111
        <pre class="sourceview"><span class="comment">/*
112
Author:       Mike Adair mike.adairATccrs.nrcan.gc.ca
113
License:      LGPL as per: http://www.gnu.org/copyleft/lesser.html
114

    
115
$Id: WebServiceForm.js 3879 2008-02-27 14:20:29Z gjvoosten $
116
*/</span>
117
<span class="comment">
118
// Ensure this object's dependancies are loaded.</span>
119
mapbuilder.loadScript(baseDir+<span class="literal">"/widget/WidgetBaseXSL.js"</span>);
120
<span class="comment">//mapbuilder.loadScript(baseDir+"/util/dojo/src/uuid/TimeBasedGenerator.js");</span>
121

    
122
<span class="comment">/**
123
 * Widget to display a form for input of parameters to generate a web service 
124
 * request.  This JS object handles the form submit via HTTP Get by appending 
125
 * a query string to the form's action URL.  The query string is created from
126
 * all input elements and their values.
127
 * The target model is then loaded from the URL created.
128
 * A stylehseet must be specified as a property in config for this widget.  
129
 * See widget/NtsForm.xsl for an example. 
130
 *
131
 * <span class="attrib">@constructor</span>
132
 * <span class="attrib">@base</span> WidgetBaseXSL
133
 * <span class="attrib">@param</span> widgetNode This widget's object node from the configuration document.
134
 * <span class="attrib">@param</span> model The model that this widget is a view of.
135
 */</span>
136

    
137
<span class="reserved">function</span> WebServiceForm(widgetNode, model) {
138
  WidgetBaseXSL.apply(<span class="reserved">this</span>,new Array(widgetNode, model));
139
  <span class="reserved">this</span>.formElements = new Object();
140
<span class="comment">  // We might have a request stylesheet to fill for a more complex post</span>
141
  var requestStylesheet = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:requestStylesheet"</span>);
142
  <span class="reserved">if</span> (requestStylesheet) {
143
    <span class="reserved">this</span>.requestStylesheet = new XslProcessor(requestStylesheet, model.namespace); 
144
  }
145
  
146
  <span class="reserved">this</span>.webServiceUrl = <span class="reserved">this</span>.getProperty(<span class="literal">"mb:webServiceUrl"</span>);
147
  
148
  <span class="comment">/**
149
   * Handles submission of the form (via javascript in an &lt;a&gt; tag)
150
   */</span>
151
  <span class="reserved">this</span>.submitForm = <span class="reserved">function</span>() {
152
    <span class="reserved">this</span>.webServiceForm = document.getElementById(<span class="reserved">this</span>.formName);
153
    <span class="reserved">if</span>( <span class="reserved">this</span>.webServiceForm == null ) { 
154
<span class="comment">      // get it from a user div instead if present</span>
155
      <span class="reserved">this</span>.webServiceForm = document.getElementById(<span class="literal">"webServiceForm_form"</span>);
156
    }
157
    
158
    <span class="reserved">if</span>( <span class="reserved">this</span>.webServiceForm == null ) {
159
        
160
      <span class="reserved">return</span>;
161
    }
162
    
163
    var httpPayload = new Object();
164
    httpPayload.method = <span class="reserved">this</span>.targetModel.method;
165
    httpPayload.url = <span class="reserved">this</span>.webServiceUrl;
166
    
167
    <span class="reserved">if</span> (httpPayload.method.toLowerCase() == <span class="literal">"get"</span>) {
168
      httpPayload.url = <span class="reserved">this</span>.webServiceForm.action + <span class="literal">"?"</span>;
169
      <span class="reserved">for</span> (var i=0; i&lt;<span class="reserved">this</span>.webServiceForm.elements.length; ++i) {
170
        var element = <span class="reserved">this</span>.webServiceForm.elements[i];
171
        webServiceUrl += element.name + <span class="literal">"="</span> + element.value + <span class="literal">"&amp;"</span>;
172
        <span class="reserved">this</span>.formElements[element.name] = element.value;
173
      }  
174
      
175
      mbDebugMessage(<span class="reserved">this</span>, httpPayload.url);
176
    
177
      <span class="reserved">this</span>.targetModel.newRequest(<span class="reserved">this</span>.targetModel,httpPayload);
178
    
179
    } <span class="reserved">else</span> { 
180
<span class="comment">        // a post</span>
181
<span class="comment">        // put parameters we got in request stylesheet</span>
182
      <span class="reserved">for</span> (var i=0; i&lt;<span class="reserved">this</span>.webServiceForm.elements.length; ++i) {
183
        var element = <span class="reserved">this</span>.webServiceForm.elements[i];
184
        <span class="reserved">this</span>.formElements[element.name] = element.value;
185
      }  
186
      
187
      <span class="reserved">this</span>.requestStylesheet.setParameter(<span class="literal">"resourceName"</span>, <span class="reserved">this</span>.formElements[<span class="literal">"feature"</span>])
188
      <span class="reserved">this</span>.requestStylesheet.setParameter(<span class="literal">"fromDateField"</span>, <span class="reserved">this</span>.formElements[<span class="literal">"fromDateField"</span>])
189
      <span class="reserved">this</span>.requestStylesheet.setParameter(<span class="literal">"toDateField"</span>, <span class="reserved">this</span>.formElements[<span class="literal">"toDateField"</span>])
190
<span class="comment">  
191
      // <span class="attrib">@TODO</span></span>
192
<span class="comment">      // we need a new uuid if we wnat to uniquely identify new layers  </span>
193
<span class="comment">      // var uuid = dojo_uuid_TimeBasedGenerator.generate();</span>
194
       
195
      var layer = <span class="reserved">this</span>.requestStylesheet.transformNodeToObject(<span class="reserved">this</span>.model.doc); 
196
<span class="comment">      //layer.childNodes[0].setAttribute("id", uuid)</span>
197
      <span class="reserved">if</span> (<span class="reserved">this</span>.debug) mbDebugMessage(<span class="reserved">this</span>, <span class="literal">"Transformed: "</span>+ (new XMLSerializer()).serializeToString(layer));
198
<span class="comment">           
199
      // extract the GetFeature out</span>
200
      <span class="reserved">this</span>.namespace = <span class="literal">"xmlns:wmc='http://www.opengis.net/context' xmlns:ows='http://www.opengis.net/ows' xmlns:ogc='http://www.opengis.net/ogc' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:xlink='http://www.w3.org/1999/xlink' xmlns:gml='http://www.opengis.net/gml' xmlns:wfs='http://www.opengis.net/wfs'"</span>;
201
      
202
      Sarissa.setXpathNamespaces(layer, <span class="reserved">this</span>.namespace);
203
      var getFeature = layer.selectSingleNode(<span class="literal">"//wfs:GetFeature"</span>)
204
      
205
      httpPayload.postData = (new XMLSerializer()).serializeToString( getFeature);
206
      
207
      mbDebugMessage(<span class="reserved">this</span>, <span class="literal">"httpPayload.postData:"</span>+ httpPayload.postData);
208
      
209
      <span class="reserved">this</span>.targetModel.wfsFeature = layer.childNodes[0];
210
      <span class="reserved">if</span> (<span class="reserved">this</span>.debug) mbDebugMessage(<span class="reserved">this</span>, <span class="literal">"wfsFeature = "</span>+ (new XMLSerializer()).serializeToString(<span class="reserved">this</span>.targetModel.wfsFeature));
211
        
212
      <span class="reserved">this</span>.targetModel.newRequest(<span class="reserved">this</span>.targetModel,httpPayload);
213
    }
214
  }
215

    
216
  <span class="comment">/**
217
   * handles keypress events to filter out everything except "enter".  
218
   * Pressing the "enter" key will trigger a form submit
219
   * <span class="attrib">@param</span> event  the event object passed in for Mozilla; IE uses window.event
220
   */</span>
221
  <span class="reserved">this</span>.handleKeyPress = <span class="reserved">function</span>(event) {
222
    var keycode;
223
    var target;
224
    <span class="reserved">if</span> (event){
225
<span class="comment">      //Mozilla</span>
226
      keycode=event.which;
227
      target=event.currentTarget;
228
    }<span class="reserved">else</span>{
229
<span class="comment">      //IE</span>
230
      keycode=window.event.keyCode;
231
      target=window.event.srcElement.form;
232
    }
233

    
234
    <span class="reserved">if</span> (keycode == 13) {    //enter key
235
      target.parentWidget.submitForm();
236
      <span class="reserved">return</span> false;
237
    }
238
  }
239

    
240
  <span class="comment">/**
241
   * Refreshes the form onblur handlers when this widget is painted.
242
   * <span class="attrib">@param</span> objRef Pointer to this object.
243
   */</span>
244
  <span class="reserved">this</span>.postPaint = <span class="reserved">function</span>(objRef) {
245
    objRef.webServiceForm = document.getElementById(objRef.formName);
246
    <span class="reserved">if</span>( <span class="reserved">this</span>.webServiceForm == null ) { 
247
<span class="comment">      // get it from a user div instead if present</span>
248
      <span class="reserved">this</span>.webServiceForm = document.getElementById(<span class="literal">"webServiceForm_form"</span>);
249
    }
250
    
251
    objRef.webServiceForm.parentWidget = objRef;
252
    objRef.webServiceForm.onkeypress = objRef.handleKeyPress;
253
<span class="comment">    //objRef.WebServiceForm.onsubmit = objRef.submitForm;</span>
254
<span class="comment">    //objRef.WebServiceForm.mapsheet.onblur = objRef.setMapsheet;</span>
255
  }
256
<span class="comment">
257
  //set some properties for the form output</span>
258
  <span class="reserved">this</span>.formName = <span class="literal">"WebServiceForm_"</span> + mbIds.getId();
259
  <span class="reserved">this</span>.stylesheet.setParameter(<span class="literal">"formName"</span>, <span class="reserved">this</span>.formName);
260

    
261
  <span class="comment">/**
262
   * Sets value for form elements
263
   * <span class="attrib">@param</span> objRef Pointer to this object.
264
   */</span>
265
  <span class="reserved">this</span>.prePaint = <span class="reserved">function</span>(objRef) {
266
    <span class="reserved">for</span> (var elementName in objRef.formElements) {
267
      objRef.stylesheet.setParameter(elementName, objRef.formElements[elementName]);
268
    }
269
  }
270

    
271
  <span class="comment">/**
272
    * Setup the listener for AOI changes to be used in filter if necessary
273
    */</span>
274
  <span class="reserved">this</span>.setAoiParameters = <span class="reserved">function</span>(objRef,bbox) {
275
    <span class="reserved">if</span> (objRef.model) {
276
      var featureSRS = null;
277
      var containerSRS = objRef.model.getSRS();
278
     
279
      objRef.requestStylesheet.setParameter(<span class="literal">"bBoxMinX"</span>, bbox[0][0] );
280
      objRef.requestStylesheet.setParameter(<span class="literal">"bBoxMinY"</span>, bbox[1][1] );
281
      objRef.requestStylesheet.setParameter(<span class="literal">"bBoxMaxX"</span>, bbox[1][0] );
282
      objRef.requestStylesheet.setParameter(<span class="literal">"bBoxMaxY"</span>, bbox[0][1] );
283
      objRef.requestStylesheet.setParameter(<span class="literal">"srs"</span>, containerSRS );
284
      objRef.requestStylesheet.setParameter(<span class="literal">"width"</span>, objRef.model.getWindowWidth() );
285
      objRef.requestStylesheet.setParameter(<span class="literal">"height"</span>, objRef.model.getWindowHeight() );
286
    }
287
  }
288

    
289
  <span class="reserved">this</span>.init = <span class="reserved">function</span>(objRef) {
290
    <span class="reserved">if</span> (objRef.model) {
291
      objRef.model.addListener(<span class="literal">"aoi"</span>, objRef.setAoiParameters, objRef);
292
<span class="comment">      //TBD: another one for bbox</span>
293
    }
294
  }
295
  
296
  <span class="reserved">this</span>.model.addListener(<span class="literal">"init"</span>, <span class="reserved">this</span>.init, <span class="reserved">this</span>);
297

    
298
}
299

    
300
</pre>
301
	<hr>
302

    
303

    
304

    
305
<!-- ========== START OF NAVBAR ========== -->
306
<a name="navbar_top"><!-- --></a>
307
<table border="0" width="100%" cellpadding="1" cellspacing="0">
308
<tr>
309
<td colspan=2 bgcolor="#EEEEFF" class="NavBarCell1">
310
<a name="navbar_top_firstrow"><!-- --></a>
311
<table border="0" cellpadding="0" cellspacing="3">
312
  <tr align="center" valign="top">
313
  
314
  
315
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-summary.html"><font class="NavBarFont1"><b>Overview</b></font></a>&nbsp;</td>
316
  <td bgcolor="#FFFFFF" class="NavBarCell1Rev">	&nbsp;<font class="NavBarFont1Rev"><b>File</b></font>&nbsp;</td>
317
  
318

    
319
  <td bgcolor="#FFFFFF" class="NavBarCell1"> <font class="NavBarFont1">Class</font>&nbsp;</td>
320
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="overview-tree.html"><font class="NavBarFont1"><b>Tree</b></font></a>&nbsp;</td>
321
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="index-all.html"--><font class="NavBarFont1"><b>Index</b></font></a>&nbsp;</td>
322
  <td bgcolor="#EEEEFF" class="NavBarCell1">    <a href="help-doc.html"><font class="NavBarFont1"><b>Help</b></font></a>&nbsp;</td>
323
  </tr>
324
</table>
325
</td>
326
<td bgcolor="#EEEEFF" align="right" valign="top"><em>
327
<b><a href='http://mapbuilder.sourceforge.net'>Community Map Builder</a> 27 Apr 2008</b></em>
328
</td>
329
</tr>
330

    
331
<tr>
332
<td bgcolor="white" class="NavBarCell2"><font size="-2">
333
&nbsp;PREV&nbsp;
334
&nbsp;NEXT</font></td>
335
<td bgcolor="white" class="NavBarCell2"><font size="-2">
336
  <a href="index.html" target="_top"><b>FRAMES</b></a>  &nbsp;
337
&nbsp;<a href="overview-summary.html" target="_top"><b>NO FRAMES</b></a>
338
&nbsp;&nbsp;
339
<script>
340
  <!--
341
  if(window==top) {
342
    document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>');
343
  }
344
  //-->
345
</script>
346
<noscript>
347
<a href="allclasses-noframe.html" target=""><b>All Classes</b></a>
348
</noscript>
349
</font></td>
350
</tr>
351
</table>
352
<!-- =========== END OF NAVBAR =========== -->
353

    
354
<hr>
355
<font size="-1">
356

    
357
</font>
358
<div class="jsdoc_ctime">Documentation generated by <a href="http://jsdoc.sourceforge.net/" target="_parent">JSDoc</a> on Sun Apr 27 20:30:54 2008</div>
359
</body>
360
</html>
(301-301/316)