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...