gotrain fiddle
by B D
HTML
<table class="gridStatusTrain" cellpadding="0" cellspacing="0">
<thead>
<tr>
<th class="gridStatusWidthOne">Lines</th>
<th class="gridStatusWidthTwo">Status</th>
</tr>
</thead>
<tbody>
<tr data-symbol="LW">
<td class="gridStatusWidthOne">Lakeshore West</td>
<td class="gridStatusWidthTwo">
<a class="delayLink" rel="span.messageDisrp" data-geo="data-geo" data-hasqtip="true">Delayed</a>
<span class="messageDisrp" style="display:none">
<h3 class="trainD">Lakeshore West</h3>
<ul class="listTrainD">
<li class="subtitle"><h4>WESTBOUND</h4></li>
<li class="odd"><span>Union Station 21:13 - Aldershot GO 22:21<br>Delay of 36m:07s<br>Stopped<br>Equipment problem</span></li>
<li class="even"><span>Union Station 21:43 - Aldershot GO 22:51<br>Delay of 07m:33s<br>Moving<br>Heavy volume of passengers</span></li>
<li class="subtitle">
<h4>EASTBOUND</h4></li>
<li class="odd"><span>Aldershot GO 21:01 - Union Station 22:10<br>Delay of 09m:20s<br>Moving<br>Wheel slip as a result of track conditions</span></li>
<li><a class="moreInfoUpdateTamp moreInfoLink" href="http://www.gotransit.com/publicroot/en/updates/servicestatus.aspx?tab=0&routeID=LW">more information</a></li>
</ul><span class="furtherDetail">More information will be provided for delays greater than 10 minutes.</span></span>
</td>
</tr>
<tr data-symbol="LE">
<td class="gridStatusWidthOne">Lakeshore East</td>
<td class="gridStatusWidthTwo"><a class="delayLink" rel="span.messageDisrp" data-geo="data-geo" data-hasqtip="true">Delayed</a><span class="messageDisrp" style="display:none"><h3 class="trainD">Lakeshore East</h3><ul class="listTrainD"><li class="subtitle"><h4>WESTBOUND</h4></li><li class="odd"><span>Oshawa GO 21:11 - Union Station 22:10<br>Delay of 05m:15s<br>Moving</span></li>
</ul><span class="furtherDetail">More information will be provided for...
JavaScript
var TransitData = {
transitLine: "", // Default value of properties
status: "N/A",
details: {},
displayType: function() {
return "Line: " + this.transitLine + " status: " + this.status;
}
}
var table = $("table.gridStatusTrain tbody");
table.find('tr').each(function(i) {
var $tds = $(this).find('td'),
transitLine = $tds.eq(0).text();
var transitData = Object.create(TransitData);
transitData.transitLine = transitLine;
var lineResult = $tds.eq(1);
if (lineResult.find('a').length == 0) {
transitData.status = 'On Time';
} else {
parseDelay(lineResult, transitData);
}
console.log('Row ' + (i + 1) + ':\n' + transitData.displayType());
});
function parseDelay(element, transitData) {
transitData.status = "Delayed";
var details = {};
var currentSubtitle = "";
element.find("ul.listTrainD li").each(function(i, listElement) {
var listTxt = listElement.textContent.trim();
if (listElement.classList.contains("subtitle")) {
currentSubtitle = listTxt;
details[listTxt] = "";
} else {
debugger;
details[currentSubtitle] += listTxt.trim() + "\n";
}
});
transitData.details = details;
}