[ZTM Gdansk] Merge real departure with scheduled for better destination showcase
This commit is contained in:
parent
78263302c8
commit
4b389582ad
@ -22,7 +22,7 @@ const sessionStoragePersist = new VuexPersistence<State>({
|
|||||||
storage: window.sessionStorage
|
storage: window.sessionStorage
|
||||||
});
|
});
|
||||||
|
|
||||||
export default new Vuex.Store({
|
const store = new Vuex.Store({
|
||||||
state, mutations, actions,
|
state, mutations, actions,
|
||||||
modules: { messages, departures, favourites },
|
modules: { messages, departures, favourites },
|
||||||
plugins: [
|
plugins: [
|
||||||
@ -31,4 +31,6 @@ export default new Vuex.Store({
|
|||||||
localStoragePersist.plugin,
|
localStoragePersist.plugin,
|
||||||
sessionStoragePersist.plugin,
|
sessionStoragePersist.plugin,
|
||||||
]
|
]
|
||||||
})
|
});
|
||||||
|
|
||||||
|
export default store;
|
||||||
|
@ -42,9 +42,9 @@ class ZtmGdanskDepartureRepository implements DepartureRepository
|
|||||||
public function getForStop(Stop $stop): Collection
|
public function getForStop(Stop $stop): Collection
|
||||||
{
|
{
|
||||||
$real = $this->getRealDepartures($stop);
|
$real = $this->getRealDepartures($stop);
|
||||||
$now = Carbon::now();
|
$now = Carbon::now()->second(0);
|
||||||
$first = $real->map(t\getter('scheduled'))->min() ?? $now;
|
$first = $real->map(t\getter('scheduled'))->min() ?? $now;
|
||||||
$scheduled = $this->getScheduledDepartures($stop, $first < $now ? $now : $first);
|
$scheduled = $this->getScheduledDepartures($stop, $first);
|
||||||
|
|
||||||
return $this->pair($scheduled, $real);
|
return $this->pair($scheduled, $real);
|
||||||
}
|
}
|
||||||
@ -103,10 +103,26 @@ class ZtmGdanskDepartureRepository implements DepartureRepository
|
|||||||
})->merge(collect($schedule)->map(function (Departure $scheduled) {
|
})->merge(collect($schedule)->map(function (Departure $scheduled) {
|
||||||
return [ null, $scheduled ];
|
return [ null, $scheduled ];
|
||||||
}))->map(function ($pair) {
|
}))->map(function ($pair) {
|
||||||
return $pair[0] ?? $pair[1];
|
return $this->merge(...$pair);
|
||||||
})->sortBy(function (Departure $departure) {
|
})->sortBy(function (Departure $departure) {
|
||||||
$time = $departure->getEstimated() ?? $departure->getScheduled();
|
$time = $departure->getEstimated() ?? $departure->getScheduled();
|
||||||
return $time->getTimestamp();
|
return $time->getTimestamp();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function merge(?Departure $real, ?Departure $scheduled)
|
||||||
|
{
|
||||||
|
if (!$real) {
|
||||||
|
return $scheduled;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$scheduled) {
|
||||||
|
return $real;
|
||||||
|
}
|
||||||
|
|
||||||
|
$departure = clone $real;
|
||||||
|
$departure->setDisplay($scheduled->getDisplay());
|
||||||
|
|
||||||
|
return $departure;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user