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

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

Some work on site. Messing with django queries, trying to get a nice json for filterlist.

File size: 4.1 KB
Line 
1// Uses zoomlevel en mouseposition to call the nodelist.py view. View returns nodes in json format which is read and printed in document element.
2function getNodeList(zoomlevel, mousepos){
3 var nodelist;
4
5 if (window.XMLHttpRequest){
6 nodelist=new XMLHttpRequest();
7 }
8 else{
9 nodelist=new ActiveXObject("Microsoft.XMLHTTP");
10 }
11
12 nodelist.onreadystatechange=function(){
13 if (nodelist.readyState==4 && nodelist.status==200){
14 json=eval('(' + nodelist.responseText + ')');
15 var list;
16 if (json.length>0){
17 list = 'Wireless Leiden nodes on mouseposition:<br /><b>';
18 for (var i=0; i<json.length; i++){
19 list += json[i].fields.ssid + '<br />';
20 }
21 list += '</b>';
22 }
23 else{
24 list = 'No nodes to display.';
25 }
26 document.getElementById('node_list').innerHTML=list;
27 }
28 }
29 nodelist.open("GET","/website/nodelist/" + zoomlevel + "," + mousepos.lat + "," + mousepos.lon,true);
30 nodelist.send();
31}
32
33
34// Get filter values from django view and serve as option list
35function getFilters(){
36 var filterlist;
37
38 if (window.XMLHttpRequest){
39 filterlist=new XMLHttpRequest();
40 }
41 else{
42 filterlist=new ActiveXObject("Microsoft.XMLHTTP");
43 }
44 // 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.
45 filterlist.onreadystatechange=function(){
46 if (filterlist.readyState==4 && filterlist.status==200){
47 json=eval('(' + filterlist.responseText + ')');
48 var list = '<form method="get" action="">';
49 list += '<input type="text" id="user" name="user" size="10"/> User<br />';
50 list += '<input type="text" id="dataset" name="dataset" size="10"/> Dataset<br />';
51 list += '<input type="text" id="date" name="date" size="10"/> Date<br />';
52
53 list += '<select id="wlnode" style="width:104px"><option></option>';
54 for (var i=0; i<json.length; i++){
55 list += '<option>' + json[i].fields.ssid + '</option>';
56 }
57 list += '</select> WLnode<br />';
58
59 list += '<input type="text" id="enc" name="enc" size="10"/> Encrypted<br />';
60 list += '<input type="text" id="colour" name="colour" size="10"/> Colour<br />';
61 list += '<input type="text" id="lname" name="lname" size="10"/> Layername<br />';
62 list += '<input type="button" value="Add filter" onClick="addFilter()"/>';
63 list += '</form>';
64 document.getElementById('filter_list').innerHTML=list;
65 }
66 }
67 filterlist.open("GET","/website/filters",true);
68 filterlist.send();
69}
70
71
72// Some value checks, create an overlay using these values and place it on the map.
73function addFilter(){
74
75 var user = '';
76 var dataset = '';
77 var wlnode = encodeURIComponent(document.getElementById("wlnode").value);
78 var enc ='';
79 var date = '';
80 var colour = encodeURIComponent(document.getElementById("colour").value);
81 var lname = encodeURIComponent(document.getElementById("lname").value);
82
83 if (user != ''){user='&accespoint__id='+user;}
84 if (dataset != ''){dataset='&meetrondje__naam='+dataset;}
85 if (wlnode != ''){wlnode='&accespoint__ssid='+wlnode;}
86 if (enc != ''){enc='&accespoint__encryptie='+enc;}
87 if (date != ''){date='&meetrondje__datum='+date;}
88 if (colour != ''){colour='colour='+colour;}
89 else {colour = '&colour='+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256)+','+Math.floor(Math.random()*256);}
90 if (lname != ''){lname=lname;}
91 else {lname = 'Custom Filter';}
92
93 var baseurl = "/website/tile/${z}/${x},${y}.png?";
94
95 OpenLayers.Layer.OSM.Overlay = OpenLayers.Class(OpenLayers.Layer.OSM, {
96 initialize: function(name, options) {
97 var url = [
98 baseurl + colour + user + dataset + wlnode + enc + date
99 ];
100 options = OpenLayers.Util.extend({ numZoomLevels: 21 }, options);
101 var newArguments = [name, url, options];
102 OpenLayers.Layer.OSM.prototype.initialize.apply(this, newArguments);
103 },
104 CLASS_NAME: "OpenLayers.Layer.Overlay"
105 });
106
107 filterlayer = new OpenLayers.Layer.OSM.Overlay(lname, {isBaseLayer: false, visibility: true});
108 map.addLayer(filterlayer);
109}
Note: See TracBrowser for help on using the repository browser.