diff --git a/src/components/TrainsView/TrainTable.vue b/src/components/TrainsView/TrainTable.vue index 8005a10..8dd6805 100644 --- a/src/components/TrainsView/TrainTable.vue +++ b/src/components/TrainsView/TrainTable.vue @@ -22,8 +22,6 @@ :key="i" :ref=" (el) => { - observer.observe(el); - if (!train.timetableData) return; elList[train.timetableData.timetableId] = el; } @@ -163,18 +161,18 @@ -
-
+ @@ -264,29 +262,28 @@ export default defineComponent({ const store = useStore(); const elList: Ref<(HTMLElement | null)[]> = ref([]); - onBeforeUpdate(() => { - elList.value.length = 0; - observer.disconnect(); - }); + // onBeforeUpdate(() => { + // elList.value.length = 0; + // observer.disconnect(); + // }); const timetableDataStatus: ComputedRef = computed( () => store.getters[GETTERS.timetableDataStatus] ); - const observer = new IntersectionObserver((entries) => { - entries.forEach((entry) => { - if (entry.isIntersecting) { - (entry.target as HTMLElement).classList.add("visible"); - return; - } + // const observer = new IntersectionObserver((entries) => { + // entries.forEach((entry) => { + // if (entry.isIntersecting) { + // (entry.target as HTMLElement).classList.add("visible"); + // return; + // } - (entry.target as HTMLElement).classList.remove("visible"); - }); - }); + // (entry.target as HTMLElement).classList.remove("visible"); + // }); + // }); return { elList, - observer, timetableLoaded: computed( () => timetableDataStatus.value === DataStatus.Loaded ), @@ -304,6 +301,29 @@ export default defineComponent({ }, methods: { + enter(el: HTMLElement) { + const maxHeight = getComputedStyle(el).height; + + el.style.height = "0px"; + + getComputedStyle(el); + + setTimeout(() => { + el.style.height = maxHeight; + }, 10); + }, + + afterEnter(el: HTMLElement) { + el.style.height = "auto"; + }, + + leave(el: HTMLElement) { + el.style.height = getComputedStyle(el).height; + + setTimeout(() => { + el.style.height = "0px"; + }, 10); + }, focusOnTrain(trainNoStr: string) { const timetableId = this.computedTrains.find( (train) => train.trainNo == Number(trainNoStr) @@ -319,14 +339,15 @@ export default defineComponent({ this.showedSchedule = this.showedSchedule == timetableId ? 0 : timetableId; - this.$nextTick(() => { + + setTimeout(() => { const currentEl = this.elList[timetableId]; currentEl?.scrollIntoView({ behavior: "smooth", - block: "nearest", + block: this.showedSchedule == 0 ? "nearest" : "center", }); - }); + }, 175); }, onImageError(e: Event) { @@ -382,6 +403,14 @@ export default defineComponent({ @import "../../styles/responsive.scss"; @import "../../styles/user_badge.scss"; +.unfold { + &-leave-active, + &-enter-active { + transition: all 150ms ease-out; + overflow: hidden; + } +} + .no-trains { text-align: center; diff --git a/src/locales/en.json b/src/locales/en.json index 3171aed..d0ad15e 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -92,7 +92,7 @@ "no-stations": "No stations to show here!" }, "trains": { - "no-trains": "Oops! No trains online!", + "no-trains": "No trains to show here!", "loading": "Loading train data...", "stats": "TRAFFIC STATISTICS", "stats-speed": "TRAINS SPEED (MIN, AVG, MAX) [km/h]", diff --git a/src/locales/pl.json b/src/locales/pl.json index 6346e82..323e078 100644 --- a/src/locales/pl.json +++ b/src/locales/pl.json @@ -92,7 +92,7 @@ "no-stations": "Brak stacji do wyświetlenia!" }, "trains": { - "no-trains": "Brak pociągów online!", + "no-trains": "Brak pociągów do wyświetlenia!", "loading": "Pobieranie danych o pociągach...", "stats": "STATYSTYKI RUCHU", "stats-speed": "PRĘDKOŚCI POCIĄGÓW (MIN, ŚR, MAX) [km/h]", diff --git a/src/main.ts b/src/main.ts index 3d38330..5ae440b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -20,7 +20,6 @@ const i18n = createI18n({ const clickOutsideDirective: Directive = { beforeMount(el, binding) { - console.log("before mount"); el.clickOutsideEvent = (event: Event) => { if (!(el == event.target || el.contains(event.target))) {