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))) {