diff --git a/src/components/Map.vue b/src/components/Map.vue deleted file mode 100644 index 87d4ec6..0000000 --- a/src/components/Map.vue +++ /dev/null @@ -1,390 +0,0 @@ - - - - - diff --git a/src/components/SidebarPanel.vue b/src/components/SidebarPanel.vue new file mode 100644 index 0000000..6b97616 --- /dev/null +++ b/src/components/SidebarPanel.vue @@ -0,0 +1,13 @@ + + + + + \ No newline at end of file diff --git a/src/pages/InsightsPage.vue b/src/pages/InsightsPage.vue index 160952c..9b6c3c1 100644 --- a/src/pages/InsightsPage.vue +++ b/src/pages/InsightsPage.vue @@ -16,6 +16,13 @@

Suburban: {{ this.insights["numSuburban"] }}

Darts: {{ this.insights["numDart"] }}

+ +

Leaderboard

+
+

{{ this.rawData[item.jsonIndex]["TrainCode"][0] }}

+

{{ item.time }} mins late

+

{{ item.time * -1}} mins early

+
diff --git a/src/pages/MapPage.vue b/src/pages/MapPage.vue index cdef6c2..01f5d26 100644 --- a/src/pages/MapPage.vue +++ b/src/pages/MapPage.vue @@ -3,6 +3,8 @@ Insights +
+
@@ -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) { @@ -361,4 +371,4 @@ export default { left: 50%; z-index: 0; } - \ No newline at end of file + diff --git a/src/store/store.js b/src/store/store.js index 627fa79..d4c09b9 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -4,6 +4,8 @@ export const store = reactive({ insights: {}, latestTrain: {}, earliestTrain: {}, + orderedTrains: [], + rawData: {}, setInsights(insights) { this.insights = insights @@ -13,5 +15,15 @@ export const store = reactive({ }, setEarliestTrain(earliestTrain) { this.earliestTrain = earliestTrain + }, + setRawData(rawData) { + this.rawData = rawData + }, + setOrderedTrains(unorderedTrains) { + // sort in ascending order + unorderedTrains.sort((a, b) => { + return a.time - b.time + }) + this.orderedTrains = unorderedTrains } }) \ No newline at end of file