diff --git a/src/preview /components/nav-widget/components/get-distance-formatter.ts b/src/preview/widgets/nav-widget/components/get-distance-formatter.ts
similarity index 100%
rename from src/preview /components/nav-widget/components/get-distance-formatter.ts
rename to src/preview/widgets/nav-widget/components/get-distance-formatter.ts
diff --git a/src/preview /components/nav-widget/components/index.ts b/src/preview/widgets/nav-widget/components/index.ts
similarity index 100%
rename from src/preview /components/nav-widget/components/index.ts
rename to src/preview/widgets/nav-widget/components/index.ts
diff --git a/src/preview /components/nav-widget/hooks/index.ts b/src/preview/widgets/nav-widget/hooks/index.ts
similarity index 100%
rename from src/preview /components/nav-widget/hooks/index.ts
rename to src/preview/widgets/nav-widget/hooks/index.ts
diff --git a/src/preview/widgets/nav-widget/hooks/useGetAttractionDetails.ts b/src/preview/widgets/nav-widget/hooks/useGetAttractionDetails.ts
new file mode 100644
index 0000000..d8dba45
--- /dev/null
+++ b/src/preview/widgets/nav-widget/hooks/useGetAttractionDetails.ts
@@ -0,0 +1,27 @@
+import { uuid } from "@mt/common-types";
+import { AttractionDetailsBE } from "../nav-widget.interface";
+import { AttractionShortPreviewProps } from "@mt/components";
+import { UseQueryResult, useQuery } from "@tanstack/react-query";
+
+export function useGetAttractionDetails(
+ touristAttractionId: uuid
+): UseQueryResult {
+ return useQuery({
+ queryKey: ["getAttractionDetails", touristAttractionId],
+ queryFn: async () => {
+ const {
+ touristAttractionAddress: subtitle,
+ touristAttractionDescription: content,
+ touristAttractionName: title,
+ touristAttractionImageUrl: img,
+ }: AttractionDetailsBE = await fetch(
+ "https://localhost:8443/widgets/attraction-info/data-by-params?" +
+ new URLSearchParams({
+ touristAttractionId: touristAttractionId as string,
+ })
+ ).then((res) => res.json());
+
+ return { img, title, subtitle, content };
+ },
+ });
+}
diff --git a/src/preview/widgets/nav-widget/hooks/useGetAttractions.ts b/src/preview/widgets/nav-widget/hooks/useGetAttractions.ts
new file mode 100644
index 0000000..d9e0ace
--- /dev/null
+++ b/src/preview/widgets/nav-widget/hooks/useGetAttractions.ts
@@ -0,0 +1,28 @@
+import { UseQueryResult, useQuery } from "@tanstack/react-query";
+import { Attraction } from "../nav-widget.interface";
+import { useEventQuery } from "@mt/utils";
+import { useEffect } from "react";
+
+export function useGetAttractions(): UseQueryResult {
+ const { data, isSuccess } = useEventQuery(
+ // 'getAttractionsEvents',
+ "/widgets/attraction-list/events",
+ ["REFRESH_DATA"]
+ );
+
+ const attractionQuery = useQuery({
+ queryKey: ["getAttractions"],
+ queryFn: async () =>
+ await fetch("https://localhost:8443/widgets/attraction-list/data")
+ .then((res) => res.json())
+ .then(({ touristAttractions }) => touristAttractions),
+ });
+
+ useEffect(() => {
+ if (isSuccess && data.length) {
+ attractionQuery.refetch();
+ }
+ }, [data, isSuccess]);
+
+ return attractionQuery;
+}
diff --git a/src/preview/widgets/nav-widget/hooks/useGetStations.ts b/src/preview/widgets/nav-widget/hooks/useGetStations.ts
new file mode 100644
index 0000000..dcde17f
--- /dev/null
+++ b/src/preview/widgets/nav-widget/hooks/useGetStations.ts
@@ -0,0 +1,31 @@
+import { UseQueryResult, useQuery } from "@tanstack/react-query";
+import { Station } from "../nav-widget.interface";
+import { useEventQuery } from "@mt/utils";
+import { useEffect } from "react";
+
+export function useGetStations(): UseQueryResult {
+ const { data = [], isSuccess } = useEventQuery(
+ // 'getStationsEvents',
+ "/widgets/station-list/events",
+ ["REFRESH_DATA"]
+ );
+
+ const stationQuery = useQuery({
+ queryKey: ["getStations"],
+ queryFn: async () => {
+ const { stations } = await fetch(
+ "https://localhost:8443/widgets/station-list/data"
+ ).then((res) => res.json());
+
+ return stations;
+ },
+ });
+
+ useEffect(() => {
+ if (isSuccess && data.length) {
+ stationQuery.refetch();
+ }
+ }, [data, isSuccess]);
+
+ return stationQuery;
+}
diff --git a/src/preview /components/nav-widget/nav-widget-container.tsx b/src/preview/widgets/nav-widget/nav-widget-container.tsx
similarity index 100%
rename from src/preview /components/nav-widget/nav-widget-container.tsx
rename to src/preview/widgets/nav-widget/nav-widget-container.tsx
diff --git a/src/preview /components/nav-widget/nav-widget.interface.ts b/src/preview/widgets/nav-widget/nav-widget.interface.ts
similarity index 100%
rename from src/preview /components/nav-widget/nav-widget.interface.ts
rename to src/preview/widgets/nav-widget/nav-widget.interface.ts
diff --git a/src/preview /components/nav-widget/nav-widget.styles.tsx b/src/preview/widgets/nav-widget/nav-widget.styles.tsx
similarity index 100%
rename from src/preview /components/nav-widget/nav-widget.styles.tsx
rename to src/preview/widgets/nav-widget/nav-widget.styles.tsx
diff --git a/src/preview /components/nav-widget/nav-widget.tsx b/src/preview/widgets/nav-widget/nav-widget.tsx
similarity index 100%
rename from src/preview /components/nav-widget/nav-widget.tsx
rename to src/preview/widgets/nav-widget/nav-widget.tsx
diff --git a/src/preview /components/operative-info-widget/OperativeInfoWidget.css b/src/preview/widgets/operative-info-widget/OperativeInfoWidget.css
similarity index 100%
rename from src/preview /components/operative-info-widget/OperativeInfoWidget.css
rename to src/preview/widgets/operative-info-widget/OperativeInfoWidget.css
diff --git a/src/preview /components/operative-info-widget/alert.interface.ts b/src/preview/widgets/operative-info-widget/alert.interface.ts
similarity index 100%
rename from src/preview /components/operative-info-widget/alert.interface.ts
rename to src/preview/widgets/operative-info-widget/alert.interface.ts
diff --git a/src/preview /components/operative-info-widget/operative-info-widget.tsx b/src/preview/widgets/operative-info-widget/operative-info-widget.tsx
similarity index 100%
rename from src/preview /components/operative-info-widget/operative-info-widget.tsx
rename to src/preview/widgets/operative-info-widget/operative-info-widget.tsx
diff --git a/src/preview /components/operative-info-widget/transfer.interface.ts b/src/preview/widgets/operative-info-widget/transfer.interface.ts
similarity index 68%
rename from src/preview /components/operative-info-widget/transfer.interface.ts
rename to src/preview/widgets/operative-info-widget/transfer.interface.ts
index 2f4196b..bbc620f 100644
--- a/src/preview /components/operative-info-widget/transfer.interface.ts
+++ b/src/preview/widgets/operative-info-widget/transfer.interface.ts
@@ -1,5 +1,4 @@
-import { Transfer } from '@front/types';
-import { TransportType } from '@mt/common-types';
+import { Transfer, TransportType } from "@mt/common-types";
export interface PublicRoute {
type: TransportType;
@@ -8,7 +7,7 @@ export interface PublicRoute {
}
export interface TransferEvent {
- ['@type']: 'UPDATE_AVAILABLE_TRANSFERS';
+ ["@type"]: "UPDATE_AVAILABLE_TRANSFERS";
publicRoutes: PublicRoute[];
stations: Transfer[];
}
diff --git a/src/preview /components/operative-info-widget/useOperativeInfo.ts b/src/preview/widgets/operative-info-widget/useOperativeInfo.ts
similarity index 68%
rename from src/preview /components/operative-info-widget/useOperativeInfo.ts
rename to src/preview/widgets/operative-info-widget/useOperativeInfo.ts
index 502fb8e..9d59738 100644
--- a/src/preview /components/operative-info-widget/useOperativeInfo.ts
+++ b/src/preview/widgets/operative-info-widget/useOperativeInfo.ts
@@ -1,9 +1,9 @@
-import { Dispatch, useEffect, useState } from 'react';
-import { EventQueryData, useEventQuery } from '@mt/utils';
-import { TransportType } from '@mt/common-types';
-import { LocalizeTextFn, useServerLocalization } from '@mt/i18n';
-import { TransferEvent, PublicRoute, TransferItem } from './transfer.interface';
-import { AlertEvent, AlertMessage } from './alert.interface';
+import { Dispatch, useEffect, useState } from "react";
+import { EventQueryData, useEventQuery } from "@mt/utils";
+import { TransportType } from "@mt/common-types";
+import { LocalizeTextFn, useServerLocalization } from "@mt/i18n";
+import { TransferEvent, PublicRoute, TransferItem } from "./transfer.interface";
+import { AlertEvent, AlertMessage } from "./alert.interface";
export const useOperativeInfo = () => {
const localizeText = useServerLocalization();
@@ -11,8 +11,8 @@ export const useOperativeInfo = () => {
const [alerts, setAlerts] = useState([]);
const { data: events, isSuccess } = useEventQuery(
- '/widgets/operative-info/events',
- ['UPDATE_AVAILABLE_TRANSFERS', 'UPDATE_AVAILABLE_ALERTS']
+ "/widgets/operative-info/events",
+ ["UPDATE_AVAILABLE_TRANSFERS", "UPDATE_AVAILABLE_ALERTS"]
);
useEffect(() => {
@@ -50,7 +50,10 @@ function updateTransfers(
}
}
-function updateAlerts(alertEvent: EventQueryData, setAlerts: Dispatch) {
+function updateAlerts(
+ alertEvent: EventQueryData,
+ setAlerts: Dispatch
+) {
if (alertEvent) {
const { msgs } = alertEvent as AlertEvent;
@@ -66,18 +69,21 @@ function updateAlerts(alertEvent: EventQueryData, setAlerts: Dispatc
}
function mapPublicRoutesToTransfers(routes: PublicRoute[]): TransferItem[] {
- const routeMap = routes.reduce((acc: Partial>, item) => {
- const { type, number } = item;
+ const routeMap = routes.reduce(
+ (acc: Partial>, item) => {
+ const { type, number } = item;
- acc[type] = [...(acc[type] ?? []), number];
+ acc[type] = [...(acc[type] ?? []), number];
- return acc;
- }, {});
+ return acc;
+ },
+ {}
+ );
return Object.entries(routeMap).flatMap(([type, numbers]) => {
return {
type,
- label: numbers.join(', '),
+ label: numbers.join(", "),
} as TransferItem;
});
}
diff --git a/src/preview /lib/WeatherWidget/weather.interface.ts b/src/preview/widgets/weather-widget/weather.interface.ts
similarity index 100%
rename from src/preview /lib/WeatherWidget/weather.interface.ts
rename to src/preview/widgets/weather-widget/weather.interface.ts
diff --git a/tsconfig.json b/tsconfig.json
index c7b9729..18ead04 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -14,7 +14,14 @@
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
- "jsx": "react-jsx"
+ "jsx": "react-jsx",
+ "paths": {
+ "@mt/common-types": ["./src/preview/types"],
+ "@mt/components": ["./src/preview/components"],
+ "@mt/i18n": ["./src/preview/i18n"],
+ "@mt/widgets": ["./src/preview/widgets"],
+ "@mt/utils": ["./src/preview/utils"]
+ }
},
"include": ["src"],
"references": [
diff --git a/vite.config.ts b/vite.config.ts
index db80a72..aeeedae 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -1,6 +1,17 @@
-import {defineConfig} from 'vite'
-import react from '@vitejs/plugin-react'
+import { defineConfig } from "vite";
+import react from "@vitejs/plugin-react";
+import * as path from "path";
+import svgr from "vite-plugin-svgr";
export default defineConfig({
- plugins: [react()],
-})
+ plugins: [react(), svgr()],
+ resolve: {
+ alias: {
+ "@mt/common-types": path.resolve(__dirname, "./src/preview/types"),
+ "@mt/components": path.resolve(__dirname, "./src/preview/components"),
+ "@mt/i18n": path.resolve(__dirname, "./src/preview/i18n"),
+ "@mt/widgets": path.resolve(__dirname, "./src/preview/widgets"),
+ "@mt/utils": path.resolve(__dirname, "./src/preview/utils"),
+ },
+ },
+});