prasadtalasila/BITS-Darshini

View on GitHub
src/main/webapp/WEB-INF/js/views/load-view.js

Summary

Maintainability
F
3 days
Test Coverage
window.LoadView =  BaseView.extend({
    el : $('body'),

    events: {
      'click #help' :'userHelpPage',
      'click #logout' : 'userLogout',
      'click #loadExperiment' : 'load',
      'click #validateBtn' : 'graphValidation',
      'click #expListMy tbody tr': 'rowClick',
      'click #expListShared tbody tr': 'rowClick',
      'slidechange #slider': 'setPrefetchValue',
      'change #share' : 'share',
      'click #shareExperiment' : 'shareExperiment',
      'click #navclick': 'loadDash'
    },
    initialize: function () {
      this.fillShare();
      LoadView.globalMy = [];
      LoadView.globalShared = [];
      this.fillTable();
    },  

    fillTable : function(event) {
      $.ajax({
      url:'http://localhost:9200/protocol/info/_search',
      type:'POST',
      data : '{"from":0,"size":200,"query":{"multi_match":{"query":"'+Cookies.get('userName')+'","fields":["experimenter","collaborators"]}}}',
      contentType: 'application/json; charset=utf-8',
      success:function (data) {
          var jsonData = JSON.parse(JSON.stringify(data)).hits.hits;
          for(var id=1; id<=jsonData.length;id+=1){
            if (jsonData[id-1]._source.experimenter==Cookies.get('userName')) {
              LoadView.globalMy.push(jsonData[id-1]);
            }
            if (jsonData[id-1]._source.collaborators.indexOf(Cookies.get('userName')) !== -1) {
              LoadView.globalShared.push(jsonData[id-1]);
            }
          }
          for(var id=1; id<=LoadView.globalMy.length;id+=1){    //index of array starts from 0
          var td, tr;
          var tdata = $("#expListMy tbody")
          tr = $("<tr>");
          td = $("<td>").text(id);
          tr.append(td);
          //packetList
          td = $("<td>").text(LoadView.globalMy[id-1]._source.experimentName);
          tr.append(td);
          td = $("<td style='display:none'>").text("Owned");
          tr.append(td);
          tdata.append(tr);
      }
      for(var id=1; id<=LoadView.globalShared.length;id+=1){    //index of array starts from 0
          var td, tr;
          var tdata = $("#expListShared tbody")
          tr = $("<tr>");
          td = $("<td>").text(id);
          tr.append(td);
          //packetList
          td = $("<td>").text(LoadView.globalShared[id-1]._source.experimentName);
          tr.append(td);
          td = $("<td style='display:none'>").text("Shared");
          tr.append(td);
          tdata.append(tr);
      }
        },
        error:function(){
          alert("Error running experiment. Please try again later.");
        }
      });
    },

    fillShare : function(event) {
      $.ajax({
      url:'http://localhost:9200/protocol/credentials/_search',
      type:'GET',
      contentType: 'application/json; charset=utf-8',
      success:function (data) {
          var options = JSON.parse(JSON.stringify(data)).hits.hits;
          var select = document.getElementById("share");
          for(var id=1; id<=options.length;id+=1) {
            if (options[id-1]._source.email == Cookies.get('userName')) {
              continue;
            }
            var opt = document.createElement("option");
            opt.value= options[id-1]._source.email;
            opt.innerHTML = options[id-1]._source.email;
            select.appendChild(opt);
          }
          $('select').material_select();
        },
        error:function(){
          alert("Error running experiment. Please try again later.");
        }
      });
    },
    analysis : function(session){
    sessionStorage.setItem('sessionName',session);
    app.navigate("#/analysis",{trigger: true});
  },
    load : function(event){
    var session = document.getElementById('loadExperiment').getAttribute('session');
    $.ajax({
      url:'http://localhost:9200/protocol_' + session + '/_search',
      type:'POST',
      contentType: 'application/json; charset=utf-8',
      dataType:'text',
      data: '',
      success:function (data) {
          var packetCount = JSON.parse(data).hits.total;
          sessionStorage.setItem('sessionName',session.replace('protocol_',''));
          sessionStorage.setItem('packetCount', packetCount);
          sessionStorage.setItem('layers','start,ethernet,ipv4,tcp,end');
          sessionStorage.setItem('sliderValue',10000);
          app.navigate("#/analysis",{trigger: true});
        },
        error:function(){
          alert("Error running experiment. Please try again later.");
        }
      });
    },

    rowClick: function(event) {
    $("#shareWrap *").removeAttr("disabled");
    $("#noneop").attr("disabled", "disabled");
    document.getElementById('loadExperiment').disabled = false;
    document.getElementById('shareExperiment').disabled = false;
    var id = Number(event.currentTarget.children[0].innerHTML) - 1;
    var share = event.currentTarget.children[2].innerHTML;
    $('#sidePanel').html('');
    var sidePanel = document.getElementById('sidePanel');
    var newDiv = document.createElement('section');
    sidePanel.appendChild(newDiv);
    var data = [];
    var experimenter = '';
    if (share == "Owned") {
      data = LoadView.globalMy;
      var col = data[id]._source.collaborators.split(/\s*,\s*/);
      var selectEl = $('select');
      selectEl.material_select();
      selectEl.val(col);
      selectEl.material_select('refresh');
    } else {
      data = LoadView.globalShared;
      experimenter = 'Experimenter : ' + data[id]._source.experimenter + '<br/>'
      $("#shareWrap *").attr("disabled", "disabled");
      document.getElementById('shareExperiment').disabled = true;
    }
    newDiv.outerHTML = '<p>'+
          'Experiment Name : ' + data[id]._source.experimentName + '<br/>' +
          experimenter +
          'Description : '+ data[id]._source.description +'<br/>' +
          'PCAP Path : '+ data[id]._source.pcapPath + '<br/>' +
          'Session: '+ data[id]._source.id +
        '</p>';
    document.getElementById('loadExperiment').setAttribute('session',data[id]._source.id);
    document.getElementById('shareExperiment').setAttribute('expId',data[id]._id);
    },

    share: function(event) {
      
    },

    shareExperiment: function(event) {
      var share = $('select').val();
      var experimentId = document.getElementById('shareExperiment').getAttribute('expId')
      $.ajax({
            url:'http://localhost:9200/protocol/info/' + experimentId + '/_update',
            type:'POST',
            contentType: 'application/json; charset=utf-8',
            dataType:'text',
            data: '{"doc":{"collaborators":"' + share + '"}}',
            success:function (data) {
              alert("Successfully shared with " + share);
              app.navigate("#/load",{trigger: true});
            }
          });

    },

    render: function () {
        $(this.el).html(this.template());
    //slider initialization  
    $(function() {
      $("#slider").slider({
        range: "max",
        min: 20,
        max: 1000,
        step:10,
        value: sessionStorage.getItem('sliderValue'),
        slide: function( event, ui ) {
          $("#prefetch-amount").val(ui.value);
        }
      });
      $("#prefetch-amount").val($("#slider").slider("value"));
    });
    $(document).ready(function() {
      document.getElementById('shareExperiment').disabled = true;
      document.getElementById('loadExperiment').disabled = true;
      document.getElementById("username").innerHTML = Cookies.get('userName');
    });
        return this;
    }
});