Implement a leaderboard based on lateness
This commit is contained in:
@ -16,6 +16,13 @@
|
||||
<p>Suburban: {{ this.insights["numSuburban"] }}</p>
|
||||
<p>Darts: {{ this.insights["numDart"] }}</p>
|
||||
</div>
|
||||
|
||||
<h1>Leaderboard</h1>
|
||||
<div v-for="item in orderedTrains">
|
||||
<h2>{{ this.rawData[item.jsonIndex]["TrainCode"][0] }}</h2>
|
||||
<p v-if="item.time > 0">{{ item.time }} mins late</p>
|
||||
<p v-else>{{ item.time * -1}} mins early</p>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -28,6 +35,8 @@ export default {
|
||||
insights: {},
|
||||
latestTrain: {},
|
||||
earliestTrain: {},
|
||||
rawData: {},
|
||||
orderedTrains: [],
|
||||
store
|
||||
}
|
||||
},
|
||||
@ -36,6 +45,8 @@ export default {
|
||||
this.insights = store.insights
|
||||
this.latestTrain = store.latestTrain
|
||||
this.earliestTrain = store.earliestTrain
|
||||
this.rawData = store.rawData
|
||||
this.orderedTrains = store.orderedTrains
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -3,6 +3,8 @@
|
||||
<router-link to="/insights">Insights</router-link>
|
||||
<button @click="postLiveTrainData">Populate Database</button>
|
||||
|
||||
<div><SidebarPanel /></div>
|
||||
|
||||
<!--Sidebar, fades out on click of X button-->
|
||||
<transition id="sidebar" name="slideLeft">
|
||||
<div v-if="this.display" id= "sidebarDiv">
|
||||
@ -47,6 +49,8 @@ import { ref } from 'vue';
|
||||
import {fromLonLat, toLonLat} from 'ol/proj.js';
|
||||
import app from '../api/firebase';
|
||||
import { getFunctions, httpsCallable, connectFunctionsEmulator } from "firebase/functions";
|
||||
import SidebarPanel from '../components/SidebarPanel.vue'
|
||||
import { set } from 'ol/transform';
|
||||
|
||||
export default {
|
||||
name: "MapPage",
|
||||
@ -80,6 +84,10 @@ export default {
|
||||
}
|
||||
},
|
||||
|
||||
components: {
|
||||
SidebarPanel
|
||||
},
|
||||
|
||||
created() {
|
||||
let host = window.location.hostname
|
||||
if (host === '127.0.0.1' || host === 'localhost') {
|
||||
@ -138,6 +146,7 @@ export default {
|
||||
"numMainland": 0,
|
||||
"numSuburban": 0,
|
||||
"numDart": 0}
|
||||
var unorderedTrains = []
|
||||
var latest = null
|
||||
var earliest = null
|
||||
var currLatestTime = null
|
||||
@ -158,14 +167,15 @@ export default {
|
||||
insights["numRunningTrains"] += 1;
|
||||
let publicMessage = train["PublicMessage"][0];
|
||||
let startTimeStr = publicMessage.indexOf("(");
|
||||
let timeEnd = publicMessage.indexOf(" ", startTimeStr+1);
|
||||
let num = parseInt(publicMessage.substring(startTimeStr+1, timeEnd))
|
||||
unorderedTrains.push({"time": num, "jsonIndex": i})
|
||||
|
||||
// check if the train is late
|
||||
if (publicMessage[startTimeStr+1] != "-" && publicMessage[startTimeStr+1] != "0") {
|
||||
insights["numLateRunningTrains"] += 1;
|
||||
|
||||
if (!latest) latest = train;
|
||||
let timeEnd = publicMessage.indexOf(" ", startTimeStr+1);
|
||||
let num = parseInt(publicMessage.substring(startTimeStr+1, timeEnd))
|
||||
|
||||
// check for a new latest train
|
||||
if (num > currLatestTime) {
|
||||
@ -176,10 +186,8 @@ export default {
|
||||
// train is early or ontime
|
||||
else {
|
||||
if (!earliest) earliest = train;
|
||||
let timeEnd = publicMessage.indexOf(" ", startTimeStr+1);
|
||||
let num = parseInt(publicMessage.substring(startTimeStr+1, timeEnd))
|
||||
|
||||
// check for a new earliest train (early trains a -x mins late)
|
||||
// check for a new earliest train (early trains are -x mins late)
|
||||
if (num < currEarliestTime) {
|
||||
earliest = train
|
||||
currEarliestTime = num
|
||||
@ -198,6 +206,8 @@ export default {
|
||||
store.setInsights(insights);
|
||||
store.setEarliestTrain(earliest);
|
||||
store.setLatestTrain(latest);
|
||||
store.setRawData(this.dbLiveTrainData);
|
||||
store.setOrderedTrains(unorderedTrains);
|
||||
loader.hide();
|
||||
}
|
||||
catch (error) {
|
||||
|
Reference in New Issue
Block a user