diff --git a/api/package.json b/api/package.json index 2608c99..41a601c 100644 --- a/api/package.json +++ b/api/package.json @@ -1,6 +1,6 @@ { "name": "api", - "version": "1.2.0", + "version": "1.3.0", "description": "", "author": "", "private": true, diff --git a/app/.gitignore b/app/.gitignore index a547bf3..019e1dc 100644 --- a/app/.gitignore +++ b/app/.gitignore @@ -1,5 +1,4 @@ # Logs -logs *.log npm-debug.log* yarn-debug.log* diff --git a/app/package.json b/app/package.json index fabb051..c92386e 100644 --- a/app/package.json +++ b/app/package.json @@ -1,7 +1,7 @@ { "name": "app", "private": true, - "version": "1.2.0", + "version": "1.3.0", "type": "module", "scripts": { "dev": "vite", diff --git a/app/public/layers-2x.png b/app/public/layers-2x.png new file mode 100644 index 0000000..200c333 Binary files /dev/null and b/app/public/layers-2x.png differ diff --git a/app/public/layers.png b/app/public/layers.png new file mode 100644 index 0000000..1a72e57 Binary files /dev/null and b/app/public/layers.png differ diff --git a/app/public/marker-icon-2x.png b/app/public/marker-icon-2x.png new file mode 100644 index 0000000..88f9e50 Binary files /dev/null and b/app/public/marker-icon-2x.png differ diff --git a/app/public/marker-icon.png b/app/public/marker-icon.png new file mode 100644 index 0000000..950edf2 Binary files /dev/null and b/app/public/marker-icon.png differ diff --git a/app/public/marker-shadow.png b/app/public/marker-shadow.png new file mode 100644 index 0000000..9fd2979 Binary files /dev/null and b/app/public/marker-shadow.png differ diff --git a/app/src/App.tsx b/app/src/App.tsx index d9607ea..bb2fac4 100644 --- a/app/src/App.tsx +++ b/app/src/App.tsx @@ -1,6 +1,7 @@ import { Navigate, Route, Routes } from 'react-router-dom'; -import Pilots from './components/pilots/Pilots'; +import Flights from './components/flights/Flights'; import Logbook from './components/logbook/Logbook'; +import Pilots from './components/pilots/Pilots'; import SiteNav from './components/siteNav/SiteNav'; import { useIsAuthenticated } from '@azure/msal-react'; @@ -19,8 +20,10 @@ const App = () => { <> + } /> + } /> } /> - } /> + ); diff --git a/app/src/components/flights/Flights.tsx b/app/src/components/flights/Flights.tsx new file mode 100644 index 0000000..2ceee39 --- /dev/null +++ b/app/src/components/flights/Flights.tsx @@ -0,0 +1,32 @@ +import { Box, Container } from "@noahspan/noahspan-components"; +import LogbookCard from "../logbookCard/LogbookCard"; +import { useEffect, useState } from "react"; +import { useLogs } from "../../hooks/logs/UseLogs"; +import { ILogbookEntry } from "../logbook/ILogbookEntry"; + +const Flights = () => { + const [flights, setFlights] = useState([]) + const { logs } = useLogs(); + + useEffect(() => { + const flights: ILogbookEntry[] | undefined = logs?.filter((log: ILogbookEntry) => { + if (log.tracks && JSON.parse(log.tracks).length > 0) { + return log; + } + }) + + if (flights && flights.length > 0) { + setFlights(flights) + } + }, [logs]) + + return ( + + + + + + ) +} + +export default Flights; \ No newline at end of file diff --git a/app/src/components/logTrackMaps/LogTrackMaps.tsx b/app/src/components/logTrackMaps/LogTrackMaps.tsx index e10ea56..f50be45 100644 --- a/app/src/components/logTrackMaps/LogTrackMaps.tsx +++ b/app/src/components/logTrackMaps/LogTrackMaps.tsx @@ -35,10 +35,7 @@ const LogTrackMaps = ({ rowKey, trackUrls }: LogTrackMapsProps) => { config ); const kml = new DOMParser().parseFromString(response.data, 'text/xml') - // const converted = toGeoJSON.kml(dom); - - // rewind(converted, false); - + convertedTracks.push(kml); } diff --git a/app/src/components/logTracks/LogTracks.tsx b/app/src/components/logTracks/LogTracks.tsx index 91a2b9b..c00b3c0 100644 --- a/app/src/components/logTracks/LogTracks.tsx +++ b/app/src/components/logTracks/LogTracks.tsx @@ -1,5 +1,5 @@ import { useEffect, useReducer } from "react"; -import { Button, Drawer, Grid, Icon, IconButton, IconName, TextField, theme, Typography, useMediaQuery } from "@noahspan/noahspan-components"; +import { Button, Drawer, Grid, Icon, IconButton, IconName, Spinner, TextField, theme, Typography, useMediaQuery } from "@noahspan/noahspan-components"; import { useHttpClient } from "../../hooks/httpClient/UseHttpClient"; import { AxiosInstance, AxiosResponse } from "axios"; import { useAccessToken } from "../../hooks/accessToken/UseAcessToken"; @@ -132,13 +132,23 @@ const LogTracks = ({ isDrawerOpen, mode, onOpenClose, selectedRowKey }: LogTrack {`${mode.toString().toLowerCase().charAt(0).toUpperCase() + mode.toString().slice(1).toLowerCase()} Tracks`} - + {mode === FormMode.EDIT && <> - {state.tracks.length > 0 && state.tracks.map((track, index) => { + {state.isLoading && + <> + + + + + Loading... + + + } + {!state.isLoading && state.tracks.length > 0 && state.tracks.map((track, index) => { const trackSplit = track.split('/') const filename = trackSplit[trackSplit.length - 1]; @@ -155,6 +165,7 @@ const LogTracks = ({ isDrawerOpen, mode, onOpenClose, selectedRowKey }: LogTrack })}