Vue

by gdarussian

HTML

<div id="app">
<input type="file" id="fileUpload" />
<hr />
<div id="results"></div>
</div>

CSS

body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
}

#app {
  background: #fff;
  border-radius: 4px;
  padding: 20px;
  transition: all 0.2s;
}

li {
  margin: 8px 0;
}

h2 {
  font-weight: bold;
  margin-bottom: 15px;
}

del {
  color: rgba(0, 0, 0, 0.3);
}

JavaScript

const states = ["NotStarted", "RunningWeek", "CheckingVariable", "CheckingBinding", "ReadingScore"];

const weekRegex = /DEBUG \[Util.Log.Debug\] Running search for week [0-9]/;
const variableRegex = /DEBUG \[Util.Log.Debug\] Checking \[DayVariable\] Agent: (.*), Day: (.*), Binding: (.*)/;
const bindingRegex = /DEBUG \[Util.Log.Debug\] Checking binding \[[0-9]+\] (.*); Score: \[ContactCenterScore\]: /;
const scoreRegex = /[0-9]: ((.*) = [-0-9.]+;)+/;

const transitionRegexes = [
	weekRegex,
  variableRegex,
  bindingRegex,
  scoreRegex
];

const EventTypes = { Checking: "Checking", Accepted: "Accepted" };

const Event = function(eventType, agentName, day, binding) {
	this.eventType = eventType;
  this.agentName = agentName;
  this.day = day;
  this.binding = binding;
  this.score = [];
  this.toString = function() {
  	return  this.agentName + " on " + this.day + " " + this.eventType + " " + this.binding + ": " + this.score.length;
  }
}



var agents = new Map();
var events = [];

var currentState = states[0]; // NotStarted;
var currentWeek = 0;
var currentAgent;
var currentDay;
var currentEvent;


function parseLine(line) {
	if (!transition(line)) {
  	return false;
  }
  switch (currentState) {
  	case "NotStarted":
    	break;
    case "RunningWeek": // TODO: set week
    	break;
    case "CheckingVariable":
    	parseVariable(line);
      break;
    case "CheckingBinding":
    	parseBinding(line);
      break;
    case "ReadingScore":
    	parseScore(line);
      break;
  }
  return true;
}

function transition(line) {
  if (weekRegex.test(line)) {
    if (currentState == "NotStarted") {
      currentState = "RunningWeek";
      return true;
    }
    else { 
      return false;
    }
  }
  else if (currentState == "NotStarted") {
  	return true;
  }
  
  for (var i = 1; i < transitionRegexes.length; i++) {
    if (transitionRegexes[i].test(line)) {
      currentState = states[i + 1];
      return true;
    }
  }
  
  return true;
}

function...