Index: src/django_gheat/wlheatmap/static/heatmap_extensions.js
===================================================================
--- src/django_gheat/wlheatmap/static/heatmap_extensions.js	(revision 9813)
+++ src/django_gheat/wlheatmap/static/heatmap_extensions.js	(revision 9815)
@@ -224,7 +224,7 @@
         userlist.push(json.gebruiker);
         $.each(json.meetrondje, function(m, meetrondje){
-          $("#select_dataset").append($("<option/>").attr({"class":json.gebruiker, "value": json.gebruiker + "-" + meetrondje.naam}).text(meetrondje.naam));
+          $("#select_dataset").append($("<option/>").attr({"class":json.gebruiker, "value": meetrondje.naam}).text(meetrondje.naam));
           $.each(meetrondje.nodes, function(n, nodes){
-            $("#select_node").append($("<option/>").attr({"class":json.gebruiker + "-" + meetrondje.naam, "value":nodes}).text(nodes));
+            $("#select_node").append($("<option/>").attr({"class":json.gebruiker + "\\" + meetrondje.naam, "value":nodes}).text(nodes));
             if(jQuery.inArray(nodes, nodelist)<0){
               nodelist.push(nodes);
@@ -235,5 +235,5 @@
     // Initiate the chain
     $("#select_dataset").chained("#select_user");
-    $("#select_node").chained("#select_dataset");
+    $("#select_node").chained("#select_user, #select_dataset");
     }
   );
@@ -258,4 +258,7 @@
   $("#select_node").change(function(){
     update_lname();
+    update_raw_filter();
+  });
+  $("#select_nodetype").change(function(){
     update_raw_filter();
   });
@@ -333,70 +336,61 @@
 
   function get_raw_filter() {
-    user = $('#select_user option:selected').text();
-    dataset = $('#select_dataset option:selected').text();
-    wlnode = $('#select_node option:selected').text();
+    var query_array = [];
+
+    /* Values to be used to create the filter */
+    user = $('#select_user option:selected').val();
+    dataset = $('#select_dataset option:selected').val();
+    wlnode = $('#select_node option:selected').val();
+    nodetype = $('#select_nodetype option:selected').val();
     start_date = $('#start_date').val();
     end_date = $('#end_date').val();
     colour = $("#colour").val();
 
+    // some checks if values are correct, and adding them to parts of the link
+    if (user != 'all') {
+      query_array.push('meetrondje__gebruiker__naam=' + user);
+    }
+    if (dataset != 'all') {
+      query_array.push('meetrondje__naam=' + dataset);
+    }
+    if (wlnode != 'all') {
+      query_array.push('accespoint__ssid=' + wlnode);
+    }
+    if (nodetype) {
+      query_array.push(nodetype);
+    }
+
+    if (start_date){
+      sd_d=start_date.substr(0,2);
+      sd_m=start_date.substr(3,2);
+      sd_y=start_date.substr(6,4);
+      query_array.push('meetrondje__datum__gte=' + sd_y +'-'+ sd_m +'-'+ sd_d);
+    }
+    if (end_date){
+      ed_d=end_date.substr(0,2);
+      ed_m=end_date.substr(3,2);
+      ed_y=end_date.substr(6,4);
+      query_array.push('meetrondje__datum__lte=' + ed_y +'-'+ ed_m +'-'+ ed_d);
+    }
+
+    var min = $("#select_sig_slider").slider("values")[0];
+    var max = $("#select_sig_slider").slider("values")[1];
+    query_array.push('signaal__gte=' + min);
+    query_array.push('signaal__lte=' + max);
+
     /**
      * On HEX to RGB:
      * http://stackoverflow.com/questions/5798868/need-some-tips-with-how-to-convert-a-hexadecimal-color-value-to-a-rgb-one/5798900#5798900
+     * If no colour is defined, use a random colour
      */
-    colour = parseInt((colour.substr(1, 2)),16) + ',' + parseInt((colour.substr(3, 2)),16) + ',' + parseInt((colour.substr(5, 2)),16);
-
-    // some checks if values are correct, and adding them to parts of the link
-    if (user == 'all') {
-      user = '';
+    if (colour){
+      colour = [parseInt((colour.substr(1, 2)),16), parseInt((colour.substr(3, 2)),16), parseInt((colour.substr(5, 2)),16)];
     } else {
-      user='&meetrondje__gebruiker__naam='+user;
-    }
-    if (dataset == 'all') {
-      dataset = '';
-    } else {
-      dataset='&meetrondje__naam='+dataset;
-    }
-    if (wlnode == 'all'){
-      wlnode='';
-    } else {
-      wlnode='&accespoint__ssid='+wlnode;
-    }
-    if (start_date && end_date){
-      sd_d=start_date.substr(0,2);
-      sd_m=start_date.substr(3,2);
-      sd_y=start_date.substr(6,4);
-
-      ed_d=end_date.substr(0,2);
-      ed_m=end_date.substr(3,2);
-      ed_y=end_date.substr(6,4);
-
-      start_date='&meetrondje__datum__gte=' + sd_y +'-'+ sd_m +'-'+ sd_d;
-      end_date='&meetrondje__datum__lte=' + ed_y +'-'+ ed_m +'-'+ ed_d;
-    }
-    if (start_date && !end_date){
-      sd_d=start_date.substr(0,2);
-      sd_m=start_date.substr(3,2);
-      sd_y=start_date.substr(6,4);
-      start_date='&meetrondje__datum__gte=' + sd_y +'-'+ sd_m +'-'+ sd_d;
-      end_date='';
-    }
-    if (!start_date && end_date){
-      ed_d=end_date.substr(0,2);
-      ed_m=end_date.substr(3,2);
-      ed_y=end_date.substr(6,4);
-      start_date='';
-      end_date='&meetrondje__datum__lte=' + ed_y +'-'+ ed_m +'-'+ ed_d;
-    }
-    if (colour != 'NaN,NaN,NaN'){
-      colour=colour;
-    } else {
-      colour = Math.floor(Math.random()*256)+','+Math.floor (Math.random()*256)+','+Math.floor(Math.random()*256);
-    }
-
-    var min = $("#select_sig_slider").slider("values")[0];
-    var max = $("#select_sig_slider").slider("values")[1];
-    signal = '&signaal__gte=' + min + '&signaal__lte=' + max;
-
-    var raw_filter = "colour=" + colour + user + dataset + wlnode + start_date + end_date + signal
+      colour = [Math.floor(Math.random()*256), Math.floor (Math.random()*256), Math.floor(Math.random()*256)];
+    }
+    query_array.push('colour=' + colour.join(','));
+
+    /* Return final result */
+    var raw_filter = query_array.filter(function() {return true;}).sort().join('&');
     return raw_filter;
   }
@@ -458,4 +452,4 @@
   }
   var pl = map.getControlsByClass('OpenLayers.Control.Permalink');
-  pl.updateLink();
+  pl.updateLink;
 });
