source: src/django_gheat/website/static/heatmap_extensions_test.js@ 9225

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

It seems Rick's foo_filter is exactly what I needed. Added date to it.

Got User & Dataset chained with this, going for date now.

File size: 5.2 KB
Line 
1// Base stolen from http://java.sun.com/developer/technicalArticles/J2EE/AJAX/RealtimeValidation/
2var json;
3function AjaxRequest(url, callback, filter, field) {
4
5 var req = init();
6 req.onreadystatechange = processRequest;
7
8 function init() {
9 if (window.XMLHttpRequest) {
10 return new XMLHttpRequest();
11 } else if (window.ActiveXObject) {
12 return new ActiveXObject("Microsoft.XMLHTTP");
13 }
14 }
15
16 function processRequest () {
17 if (req.readyState == 4) {
18 if (req.status == 200) {
19 if (callback) {
20 if (filter) callback(filter, field, req.responseText);
21 else callback(req.responseText);
22 }
23 }
24 }
25 }
26
27 this.doGet = function() {
28 req.open("GET", url, true);
29 req.send(null);
30 }
31}
32
33
34// Uses zoomlevel en mouseposition to call the nodelist.py view. View returns nodes in json format which is read and printed in document element.
35function getNodeList(zoomlevel, mousepos) {
36 var url = "/website/nodelist/" + zoomlevel + "," + mousepos.lat + "," + mousepos.lon;
37 var ajax = new AjaxRequest(url, setNodeList);
38 ajax.doGet();
39}
40
41
42function setNodeList(responseText) {
43 json_nodelist=eval('(' + responseText + ')');
44 if (json_nodelist.length>0){
45 list = 'Wireless Leiden nodes on mouseposition:<br /><b>';
46 for (var i=0; i<json_nodelist.length; i++){
47 list += json_nodelist[i].fields.ssid + '<br />';
48 }
49 list += '</b>';
50 }
51 else{
52 list = 'No nodes to display.';
53 }
54 document.getElementById('node_list').innerHTML=list;
55}
56
57
58function get_filters() {
59
60 // Create form
61 var formstart = '<form method="get" action="">';
62 var formend = '<input type="button" value="Add filter" onClick="addFilter()"/></form>';
63 var layername = '<input type="text" id="lname" name="lname" size="10"/> Layername<br />';
64 var colour = '<input type="text" id="colour" name="colour" size="10"/> Colour<br />';
65 var user = '<select id="user" style="width:104px" onchange=update_dataset()><option></option></select> User<br />';
66 var dataset = '<select id="dataset" style="width:104px"><option></option></select> Dataset<br />';
67 var node = '<select id="node" style="width:104px"><option></option></select> Node<br />';
68 var enc = '<select id="enc" style="width:104px"><option></option></select> Encryption<br />';
69 var date = '<select id="date" style="width:104px"><option></option></select> Date<br />';
70
71 // Write form to document
72 document.getElementById('filter_list').innerHTML+=(formstart + user + dataset + node + enc + date + colour + layername + formend);
73
74 // Request JSON with filter values
75 var url = "/website/foofilter";
76 var ajax = new AjaxRequest(url, set_user);
77 ajax.doGet();
78}
79
80function set_user(responseText) {
81 json=eval('(' + responseText + ')');
82 var options = '<option value="All">All</option>';
83 for (var i=0; i<json.length; i++){
84 options += '<option>' + json[i].gebruiker + '</option>';
85 }
86 document.getElementById('user').innerHTML=options;
87
88 update_dataset();
89}
90
91
92function update_dataset(){
93 var options = '';
94 var user_value = $('#user option:selected').text();
95
96 for (var i=0; i<json.length; i++){
97 for (m in json[i].meetrondje){
98 if (user_value != 'All'){
99 if (json[i].gebruiker == user_value){
100 options += '<option>' + json[i].meetrondje[m].naam + '</option>';
101 }
102 else{
103 continue;
104 }
105 }
106 else{
107 options += '<option>' + json[i].meetrondje[m].naam + '</option>';
108 }
109 }
110 }
111 document.getElementById('dataset').innerHTML=options;
112}
113
114
115
116function update_filters(id){
117 var filtervalue = id.options[id.selectedIndex].value;
118 var d = document.getElementById('dataset');
119 var ds = d.options[id.selectedIndex].value;
120}
121
122
123function addFilter(){
124
125 var user = $('#user option:selected').text();
126 var dataset = $('#dataset option:selected').text();
127 var wlnode = $('#wlnode option:selected').text();
128 var enc = $('#enc option:selected').text();
129 var date = $('#date option:selected').text();
130 var colour = encodeURIComponent(document.getElementById("colour").value);
131 var lname = encodeURIComponent(document.getElementById("lname").value);
132
133 if ((user != '') && (user != 'All')){user='&meetrondje__gebruiker__naam='+user;}
134 else {user='';}
135 if (dataset != ''){dataset='&meetrondje__naam='+dataset;}
136 if (wlnode != ''){wlnode='&accespoint__ssid='+wlnode;}
137 if (enc != ''){enc='&accespoint__encryptie='+enc;}
138 if (date != ''){date='&meetrondje__datum='+date;}
139 if (colour != ''){colour='colour='+colour;}
140 else {colour = '&colour='+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256);}
141 if (lname != ''){lname=lname;}
142 else {lname = 'Custom Filter';}
143
144 var baseurl = "/website/tile/${z}/${x},${y}.png?";
145
146 OpenLayers.Layer.OSM.Overlay = OpenLayers.Class(OpenLayers.Layer.OSM, {
147 initialize: function(name, options) {
148 var url = [
149 baseurl + colour + user + dataset + wlnode + enc + date
150 ];
151 options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
152 var newArguments = [name, url, options];
153 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
154 },
155 CLASS_NAME: "OpenLayers.Layer.Overlay"
156 });
157
158 filterlayer = new OpenLayers.Layer.OSM.Overlay(lname, {isBaseLayer: false, visibility: true});
159 map.addLayer(filterlayer);
160}
161
162
Note: See TracBrowser for help on using the repository browser.