czydojade/resources/ts/components/stop.ts
2018-09-14 17:17:35 +02:00

49 lines
1.3 KiB
TypeScript

import { Component, Prop } from "vue-property-decorator";
import { Line, Stop, Track } from "../model";
import Vue from 'vue';
import urls from "../urls";
@Component({ template: require('../../components/stop-details.html') })
class StopDetailsComponent extends Vue {
@Prop(Object)
public stop: Stop;
private ready: boolean = false;
tracks: { order: number, track: Track }[] = [];
get types() {
return this.tracks.map(t => t.track.line.type).filter((value, index, array) => {
return array.indexOf(value) === index;
});
}
get lines(): Line[] {
return this.tracks.map(t => t.track.line).reduce((lines, line: Line) => {
return Object.assign(lines, { [line.symbol]: line });
}, {} as any);
}
async mounted() {
const response = await fetch(urls.prepare(urls.stops.tracks, { id: this.stop.id }));
if (response.ok) {
this.tracks = await response.json();
}
this.ready = true;
}
}
@Component({ template: require('../../components/stop.html') })
export class StopComponent extends Vue {
@Prop(Object)
public stop: Stop;
details: boolean = false;
map: boolean = false;
}
Vue.component('Stop', StopComponent);
Vue.component('StopDetails', StopDetailsComponent);