Commit 42fdf204 authored by Kacper Bielecki's avatar Kacper Bielecki
Browse files

Incoming events can be filtered according to session filter

parent 263f429f
Loading
Loading
Loading
Loading
+46 −10
Original line number Diff line number Diff line
@@ -739,7 +739,7 @@ var FnordMetric = (function(){
    ).append(listElem);

    var eventsPolledUntil = false;
    var eventsFilter = [];
    var eventsFilter = {uncheckedTypes: [], checkedSessions: []};
    var sessionData = {};
    var pollRunning = true;

@@ -838,7 +838,15 @@ var FnordMetric = (function(){
          _unchecked_types.push($(v).attr('rel'));
        }
      });
      eventsFilter = _unchecked_types;
      eventsFilter.uncheckedTypes = _unchecked_types;

      var _checked_sessions = [];
      $('ul.session_list li.session').each(function(i,v){
        if($('input', v).attr('checked')){
          _checked_sessions.push($(v).data().session);
        }
      });
      eventsFilter.checkedSessions = _checked_sessions;
    }

    function doEventsPoll(){
@@ -854,32 +862,58 @@ var FnordMetric = (function(){
      return (function(_data, _status){
        var data = JSON.parse(_data)
        var events = data.events;
        var timout = 1000;
        var timeout = 1000;
        var maxevents = 200;
        var passesFiltering = function(event_data) {
          var passes_type_filtering = false;
          var passes_session_filtering = false;
          if(eventsFilter.uncheckedTypes.indexOf(event_data._type) == -1) {
            if(parseInt(v._time)<=eventsPolledUntil) {
              passes_type_filtering = true;
            }
          }
          if(!passes_type_filtering) return false;

          if(eventsFilter.checkedSessions.length == 0){
            return true; // No filter set - show all events
          } else {
            if(event_data._session_key){
              if(eventsFilter.checkedSessions.indexOf(event_data._session_key) >= 0){
                return true; // Filter set and match
              } else {
                return false; // Filter set but no match
              }
            } else {
              return false; // Filter set but event is not associated with session
            }
          }
        }

        if(events.length > 0){
          timeout = 200;
          eventsPolledUntil = parseInt(events[0]._time)-1;
        }
	      for(var n=events.length-1; n >= 0; n--){
	        var v = events[n];
          if(eventsFilter.indexOf(v._type) == -1){
            if(parseInt(v._time)<=eventsPolledUntil){
          if(passesFiltering(v)) {
            renderEvent(v);
          }
          }
        };
        var elems = $("p", feedInnerElem);
        for(var n=maxevents; n < elems.length; n++){
          $(elems[n]).remove();
        }
        if(pollRunning){
          window.setTimeout(doEventsPoll(), timout);
          window.setTimeout(doEventsPoll(), timeout);
        }
      });
    };

    function updateSession(session_data){
      sessionData[session_data.session_key] = session_data;
      var session_key = session_data.session_key;
      if(!sessionData[session_key]){
        updateEventFilter()
      }
      sessionData[session_key] = session_data;
      renderSession(session_data);
    }

@@ -919,6 +953,8 @@ var FnordMetric = (function(){

        listElem.append(
          $('<li class="session"></li>').append(
            $('<input type="checkbox" />').click(function(){ updateEventFilter(); })
          ).append(
            $('<div class="picture"></div>').html(session_picture)
          ).append(
            $('<span class="name"></span>').html(session_name)