source: src/django_gheat/website/static/heatmap_extensions.js@ 9219

Last change on this file since 9219 was 9219, checked in by dennisw, 14 years ago

Solved form problem. Fixing form now.

Next step: get the chained selections working.

File size: 7.0 KB
Line 
1// Base stolen from http://java.sun.com/developer/technicalArticles/J2EE/AJAX/RealtimeValidation/
2function AjaxRequest(url, callback, filter) {
3
4 var req = init();
5 req.onreadystatechange = processRequest;
6
7 function init() {
8 if (window.XMLHttpRequest) {
9 return new XMLHttpRequest();
10 } else if (window.ActiveXObject) {
11 return new ActiveXObject("Microsoft.XMLHTTP");
12 }
13 }
14
15 function processRequest () {
16 if (req.readyState == 4) {
17 if (req.status == 200) {
18 if (callback) {
19 if (filter) callback(filter, req.responseText);
20 else callback(req.responseText);
21 }
22 }
23 }
24 }
25
26 this.doGet = function() {
27 req.open("GET", url, true);
28 req.send(null);
29 }
30}
31
32
33// Uses zoomlevel en mouseposition to call the nodelist.py view. View returns nodes in json format which is read and printed in document element.
34function getNodeList(zoomlevel, mousepos) {
35 var url = "/website/nodelist/" + zoomlevel + "," + mousepos.lat + "," + mousepos.lon;
36 var ajax = new AjaxRequest(url, setNodeList);
37 ajax.doGet();
38}
39
40
41function setNodeList(responseText) {
42 json=eval('(' + responseText + ')');
43 if (json.length>0){
44 list = 'Wireless Leiden nodes on mouseposition:<br /><b>';
45 for (var i=0; i<json.length; i++){
46 list += json[i].fields.ssid + '<br />';
47 }
48 list += '</b>';
49 }
50 else{
51 list = 'No nodes to display.';
52 }
53 document.getElementById('node_list').innerHTML=list;
54}
55
56
57function get_filters() {
58 var formstart = '<form method="get" action="">';
59 var formend = '<input type="button" value="Add filter" onClick="addFilter()"/></form>';
60 var layername = '<input type="text" id="lname" name="lname" size="10"/> Layername<br />';
61 var colour = '<input type="text" id="colour" name="colour" size="10"/> Colour<br />';
62 var user = '<select id="user" style="width:104px"><option></option></select> User<br />';
63var dataset = '<select id="dataset" style="width:104px"><option></option></select> Dataset<br />';
64var node = '<select id="node" style="width:104px"><option></option></select> Node<br />';
65
66 document.getElementById('filter_list').innerHTML+=formstart;
67 document.getElementById('filter_list').innerHTML+=user;
68
69 var filters = new Array('user');
70 for (var i=0; i<filters.length; i++) {
71 get_json(filters[i]);
72 }
73
74 // todo: Fix formend, it is called before the 'for' filter is completed, making the form look silly.
75 document.getElementById('filter_list').innerHTML+=formend;
76}
77
78
79function get_json(filter) {
80 var url = "/website/filter/filter_" + filter;
81 var ajax = new AjaxRequest(url, set_filter, filter);
82 ajax.doGet();
83}
84
85
86function set_filter(filter, responseText) {
87 json=eval('(' + responseText + ')');
88 var options = '';
89 for (var i=0; i<json.length; i++){
90 options += '<option>' + json[i].fields.naam + '</option>';
91 }
92 document.getElementById('user').innerHTML+=options;
93}
94
95
96function addFilter(){
97
98 var user = encodeURIComponent(document.getElementById("user").value);
99 var dataset = '';
100 var wlnode = '';
101 var enc ='';
102 var date = '';
103 var colour = '';
104 var lname = '';
105
106 if (user != ''){user='&gebruiker__naam='+user;}
107 if (dataset != ''){dataset='&meetrondje__naam='+dataset;}
108 if (wlnode != ''){wlnode='&accespoint__ssid='+wlnode;}
109 if (enc != ''){enc='&accespoint__encryptie='+enc;}
110 if (date != ''){date='&meetrondje__datum='+date;}
111 if (colour != ''){colour='colour='+colour;}
112 else {colour = '&colour='+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256);}
113 if (lname != ''){lname=lname;}
114 else {lname = 'Custom Filter';}
115
116 var baseurl = "/website/tile/${z}/${x},${y}.png?";
117
118 OpenLayers.Layer.OSM.Overlay = OpenLayers.Class(OpenLayers.Layer.OSM, {
119 initialize: function(name, options) {
120 var url = [
121 baseurl + colour + user + dataset + wlnode + enc + date
122 ];
123 options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
124 var newArguments = [name, url, options];
125 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
126 },
127 CLASS_NAME: "OpenLayers.Layer.Overlay"
128 });
129
130 filterlayer = new OpenLayers.Layer.OSM.Overlay(lname, {isBaseLayer: false, visibility: true});
131 map.addLayer(filterlayer);
132}
133
134
135/*
136
137The following code is old, broken and for reference purposes. Will be removed when new code is done.
138The above (new) code was used instead to make everything more easy when adding new pieces.
139
140// Get filter values from django view and serve as option list
141function getFilters(){
142 var filterlist;
143 var nodelist;
144 var userlist;
145 var datasetlist;
146
147 if (window.XMLHttpRequest){
148 nodelist=new XMLHttpRequest();
149 userlist=new XMLHttpRequest();
150 datasetlist=new XMLHttpRequest();
151 }
152 else{
153 nodelist=new ActiveXObject("Microsoft.XMLHTTP");
154 userlist=new ActiveXObject("Microsoft.XMLHTTP");
155 datasetlist=new ActiveXObject("Microsoft.XMLHTTP");
156 }
157
158 var list = '<form method="get" action="">';
159
160
161 // todo: Get new options if one option is selected; every user has different datasets, make sure when user 'John' is selected, you can only choose datasets who are his.
162
163 userlist.onreadystatechange=function(){
164 if (userlist.readyState==4 && userlist.status==200){
165 userlist=eval('(' + userlist.responseText + ')');
166
167 list += '<select id="user" style="width:104px"><option></option>';
168 for (var i=0; i<userlist.length; i++){
169 list += '<option>' + userlist[i].fields.naam + '</option>';
170 }
171 list += '</select> User<br />';
172
173 document.getElementById('filter_list').innerHTML=list;
174 }
175 }
176
177
178
179
180 nodelist.onreadystatechange=function(){
181 if (nodelist.readyState==4 && nodelist.status==200){
182 nodelist=eval('(' + nodelist.responseText + ')');
183
184 list += '<select id="wlnode" style="width:104px"><option></option>';
185 for (var i=0; i<nodelist.length; i++){
186 list += '<option>' + nodelist[i].fields.ssid + '</option>';
187 }
188 list += '</select> WLnode<br />';
189
190 document.getElementById('filter_list').innerHTML=list;
191 }
192 }
193
194
195 datasetlist.onreadystatechange=function(){
196 if (datasetlist.readyState==4 && datasetlist.status==200){
197 datasetlist=eval('(' + datasetlist.responseText + ')');
198
199 list += '<select id="dataset" style="width:104px"><option></option>';
200 for (var i=0; i<datasetlist.length; i++){
201 list += '<option>' + datasetlist[i].fields.naam + '</option>';
202 }
203 list += '</select> Dataset<br />';
204
205 document.getElementById('filter_list').innerHTML=list;
206 }
207 }
208
209
210 list += '<input type="text" id="enc" name="enc" size="10"/> Encrypted<br />';
211 list += '<input type="text" id="colour" name="colour" size="10"/> Colour<br />';
212 list += '<input type="text" id="lname" name="lname" size="10"/> Layername<br />';
213 list += '<input type="button" value="Add filter" onClick="addFilter()"/>';
214 list += '</form>';
215
216
217
218
219
220 nodelist.open("GET","/website/filters/1",true);
221 nodelist.send();
222 userlist.open("GET","/website/filters/2",true);
223 userlist.send();
224 datasetlist.open("GET","/website/filters/3",true);
225 datasetlist.send();
226}
227*/
Note: See TracBrowser for help on using the repository browser.