diff --git a/resources/components/trip.html b/resources/components/trip.html index aa1bdd3..1a6c72d 100644 --- a/resources/components/trip.html +++ b/resources/components/trip.html @@ -1,5 +1,5 @@
-
    +
    1. diff --git a/resources/styles/_trip.scss b/resources/styles/_trip.scss index c44d124..1f3020a 100644 --- a/resources/styles/_trip.scss +++ b/resources/styles/_trip.scss @@ -76,6 +76,10 @@ $trip-visited: rgba($dark, .3); } } +.trip__stop--current .trip__marker { + box-shadow: 0 0 .5rem $dark; +} + @each $type, $color in $line-types { .trip--#{$type} { .trip__marker { @@ -85,6 +89,10 @@ $trip-visited: rgba($dark, .3); background: $color; } } + + .trip__stop--current .trip__marker { + box-shadow: 0 0 .5rem $color; + } } } @@ -101,7 +109,7 @@ $trip-visited: rgba($dark, .3); } } -.trip__stop--current .trip__marker { +.trip__stop--visited + .trip__stop:not(.trip__stop--visited) .trip__marker { &::before { background: $trip-visited; } diff --git a/resources/ts/components/trip.ts b/resources/ts/components/trip.ts index 99100c0..fb70e0e 100644 --- a/resources/ts/components/trip.ts +++ b/resources/ts/components/trip.ts @@ -3,6 +3,7 @@ import Component from "vue-class-component"; import { Prop } from "vue-property-decorator"; import { ScheduledStop } from "../model/trip"; import { Stop } from "../model"; +import * as moment from 'moment'; type ScheduledStopInfo = ScheduledStop & { visited: boolean, current: boolean }; @@ -12,14 +13,21 @@ export class TripComponent extends Vue { @Prop(Object) public current: Stop; get stops(): ScheduledStopInfo[] { - let visited = true; - return this.schedule.map(stop => ({ ...stop, - current: stop.stop.id == this.current.id ? !(visited = false) : false, - visited: visited, + current: stop.stop.id == this.current.id, + visited: moment().isAfter(stop.departure), })); } + + mounted() { + const list = this.$refs['stops'] as HTMLUListElement; + const current = list.querySelector('.trip__stop--current') as HTMLLIElement; + + if (!current) return; + + list.scrollLeft = current.offsetLeft - (list.clientWidth + current.clientWidth) / 2; + } } Vue.component('Trip', TripComponent); diff --git a/resources/ts/store/messages.ts b/resources/ts/store/messages.ts index 0c3e780..d24dae2 100644 --- a/resources/ts/store/messages.ts +++ b/resources/ts/store/messages.ts @@ -45,10 +45,10 @@ export const messages: Module = { } const messages = await response.json() as Jsonified[]; - commit('update', messages.map(m => ({ - ...m, - validFrom: moment(m.validFrom), - validTo: moment(m.validTo), + commit('update', messages.map(message => ({ + ...message, + validFrom: moment(message.validFrom), + validTo: moment(message.validTo), }))); } } diff --git a/src/Provider/ZtmGdansk/ZtmGdanskDataUpdateSubscriber.php b/src/Provider/ZtmGdansk/ZtmGdanskDataUpdateSubscriber.php index d6d1f19..cf778ce 100644 --- a/src/Provider/ZtmGdansk/ZtmGdanskDataUpdateSubscriber.php +++ b/src/Provider/ZtmGdansk/ZtmGdanskDataUpdateSubscriber.php @@ -157,7 +157,9 @@ class ZtmGdanskDataUpdateSubscriber implements EventSubscriberInterface $this->logger->debug(sprintf("Saving %d stops tracks from ZTM GdaƄsk.", count($stops))); return collect($stops) ->filter(function ($stop) { - return $stop['nonpassenger'] !== null && $stop['nonpassenger'] !== 1; + return $stop['nonpassenger'] !== 1 + && $stop['virtual'] !== 1 + && $stop['depot'] !== 1; }) ->map(function ($stop) use ($provider) { return StopEntity::createFromArray([ diff --git a/templates/app.html.twig b/templates/app.html.twig index 0ec12da..738114e 100644 --- a/templates/app.html.twig +++ b/templates/app.html.twig @@ -126,7 +126,7 @@ Zapisane -