From c97499196cc3e47ad56a3819efea04352910bb2d Mon Sep 17 00:00:00 2001 From: steev Date: Thu, 9 Jan 2025 01:15:20 +0100 Subject: [PATCH] fix: :bug: fixed issue in both back and frontend that would prevent geojson data from beeing loaded --- app.py | 52 +- modules/driverHandler.py | 12 +- modules/geoObjects.py | 32 +- modules/gpxInterpreter.py | 54 +- modules/vehicleHandler.py | 7 +- uploads/AA_WITAA000_001.gpx | 6099 +++++++++++++++++++++++++++++ web/src/classes/settings.ts | 36 - web/src/components/fileUpload.vue | 10 +- web/src/components/map.vue | 45 +- web/src/interfaces/ISettings.ts | 4 - web/src/views/route.vue | 143 +- web/tsconfig.tsbuildinfo | 1 + 12 files changed, 6308 insertions(+), 187 deletions(-) create mode 100644 uploads/AA_WITAA000_001.gpx delete mode 100644 web/src/classes/settings.ts delete mode 100644 web/src/interfaces/ISettings.ts create mode 100644 web/tsconfig.tsbuildinfo diff --git a/app.py b/app.py index 9742607..87c859f 100644 --- a/app.py +++ b/app.py @@ -7,7 +7,7 @@ from sqlalchemy.orm import sessionmaker, Session from modules.driverHandler import DriverHandler from modules.gpxInterpreter import GPXHandler from modules.vehicleHandler import VehicleHandler -from modules.geoObjects import create_table, db_connect +from modules.geoObjects import Waypoint, create_table, db_connect, Driver, Vehicle from flask_cors import CORS, cross_origin root = logging.getLogger() @@ -52,7 +52,9 @@ def serve_vue_app(): @cross_origin() def getTrack(): - if "start" in request.args and "end" in request.args or "track" in request.args: + app.logger.debug(f"found arguments {request.args}") + + if ("start" in request.args and "end" in request.args) or ("id" in request.args): if "start" in request.args and "end" in request.args: # get tracks by filter start = request.args["start"] @@ -60,21 +62,23 @@ def getTrack(): try: return gpxHandler.getTracksInTime(start, request.args["end"]), 200 except Exception as e: - app.logger.debug(f"failed to search tracks error { - e} values: start={start}, end={end}") + app.logger.debug(f"failed to search tracks error {e} values: start={start}, end={end}") return f"error {e}", 500 - elif "track" in request.args: + elif "id" in request.args: # get track by id - track = int(request.args["track"]) + trackID = int(request.args["id"]) try: - return gpxHandler.getTrack(track), 200 + app.logger.debug(f"Request args: {request.args}") + app.logger.debug(f"track id {trackID}") + track = gpxHandler.getTrack(trackID) + + app.logger.debug(f"returned track {track}") + + return jsonify(track), 200 except Exception as e: - app.logger.debug(f"fetching track { - track} failed with error {e}") + app.logger.debug(f"fetching track failed with error {e}") return f"error {e}", 500 - - pass else: try: # gets all tracks as list @@ -181,18 +185,32 @@ def uploadFile(): app.logger.debug("no file was found in clients request") return "no file provided", 400 - if request.args["routeName"] == '': - app.logger.debug("client did not provide any name for uploaded route") - return "no route name provided", 400 - file = request.files['file'] if file.filename == '': app.logger.debug("filename was found empty") return "no file selected", 400 try: - app.logger.debug(f"attempting to parse file: {file.name}") - gpxHandler.parse(file, request.args["routeName"]) + + app.logger.debug(f"Received file: {file.filename}, size: {len(file.read())} bytes") + file.seek(0) # Setzt den Datei-Zeiger zurück, nachdem die Größe abgerufen wurde. + + file_path = f'./uploads/{file.filename}' + with open(file_path, 'wb') as f: + f.write(file.read()) + + driver = driverHandler.getDriver(1) + vehicle = vehicleHandler.getVehicle(1) + + app.logger.debug(f"driver {driver.id}") + app.logger.debug(f"vehicle {vehicle.id}") + + if not driver or not vehicle: + raise ValueError("Driver or vehicle not found") + + app.logger.debug(f"attempting to parse file: {file.filename}") + gpxHandler.parse(file.filename, driver, vehicle) + return "file stored succesfull", 200 except Exception as e: app.logger.debug(f"storing gpx file failed with error {e}") diff --git a/modules/driverHandler.py b/modules/driverHandler.py index 9dcd6bb..82c08e6 100644 --- a/modules/driverHandler.py +++ b/modules/driverHandler.py @@ -1,5 +1,6 @@ from sqlalchemy.orm import Session +from errors.NotFoundException import NotFoundError from modules.geoObjects import Driver @@ -27,14 +28,13 @@ class DriverHandler: raise RuntimeError(f"failed to create driver with errors{e}") # handles getting a driver by its id from the database - def getDriver(self, driverID: int): + def getDriver(self, driverID: int) -> Driver: try: driver = self.dbSession.query(Driver).filter_by(id=driverID).first() - - return { - "id": driver.id, - "name": driver.name - } + if driver: + return driver + else: + raise NotFoundError(f"Driver with ID {driverID} not found", errors=[]) except Exception as e: raise RuntimeError(f"failed to get driver with errors{e}") diff --git a/modules/geoObjects.py b/modules/geoObjects.py index 1977748..7c2453c 100644 --- a/modules/geoObjects.py +++ b/modules/geoObjects.py @@ -1,7 +1,7 @@ -from sqlalchemy import create_engine, Column, Table, ForeignKey, Index, UniqueConstraint, MetaData, SmallInteger, Integer, String, Date, DateTime, Float, Boolean, Text, Numeric, DateTime -from sqlalchemy.orm import relationship, sessionmaker +from sqlalchemy import create_engine, Column, ForeignKey, Integer, String, Date, Float, DateTime +from sqlalchemy.orm import relationship, sessionmaker from sqlalchemy.ext.declarative import declarative_base -from sqlalchemy.pool import NullPool +from sqlalchemy.pool import NullPool from sqlalchemy.exc import OperationalError Base = declarative_base() @@ -28,7 +28,7 @@ def create_table(engine): print("Keine Verbindung zur Datenbank verfügbar.") except Exception as e: print(f"Fehler bei der Tabellenerstellung: {e}") - + class Track(Base): __tablename__ = 'track' id = Column(Integer, primary_key=True, autoincrement=True) @@ -38,14 +38,10 @@ class Track(Base): date = Column(Date, nullable=True) distance = Column(Float, nullable=False, default=0) speed = Column(Float, nullable=False, default=0) - start = Column(DateTime, nullable=False) - end = Column(DateTime, nullable=False) - # Beziehungen zu anderen Tabellen + driver = relationship("Driver", backref="vehicle_tracks") # 'vehicle_tracks' als backref + vehicle = relationship("Vehicle", backref="driver_tracks") # 'driver_tracks' als backref waypoints = relationship('Waypoint', backref='track', lazy=True) - driver = relationship('Driver', back_populates='tracks') - vehicle = relationship('Vehicle', back_populates='tracks') - class Waypoint(Base): __tablename__ = 'waypoint' @@ -57,20 +53,16 @@ class Waypoint(Base): time = Column(DateTime, nullable=True) track_id = Column(Integer, ForeignKey('track.id'), nullable=False) - class Driver(Base): __tablename__ = 'driver' - id = Column(Integer, primary_key=True, autoincrement=True) - name = Column(String, nullable=False) - - # Beziehung zu Track, zurück über 'tracks' auf Track-Seite - tracks = relationship("Track", back_populates='driver') + id = Column(Integer, primary_key=True) + name = Column(String, nullable=False) + tracks = relationship("Track", back_populates="driver") # Beziehung von Track -> Driver class Vehicle(Base): __tablename__ = 'vehicle' - id = Column(Integer, primary_key=True, autoincrement=True) + + id = Column(Integer, primary_key=True) name = Column(String, nullable=False) - - # Beziehung zu Track, zurück über 'tracks' auf Track-Seite - tracks = relationship('Track', back_populates='vehicle') + tracks = relationship("Track", back_populates="vehicle") # Beziehung von Track -> Vehicle diff --git a/modules/gpxInterpreter.py b/modules/gpxInterpreter.py index f194798..a7dcef0 100644 --- a/modules/gpxInterpreter.py +++ b/modules/gpxInterpreter.py @@ -6,7 +6,7 @@ from geojson import Feature, LineString from geopy.distance import geodesic from errors.NotFoundException import NotFoundError -from modules.geoObjects import Track, Waypoint +from modules.geoObjects import Driver, Track, Vehicle, Waypoint class GPXHandler: __dbSession: Session @@ -16,8 +16,9 @@ class GPXHandler: pass # handles converting a gpx file into usable data - def parse(self, file, driver, vehicle): - self.__gpx = gpxpy.parse(file) + def parse(self, file, driver:Driver, vehicle:Vehicle): + print(f"filename: {file}") + self.__gpx = gpxpy.parse(open(f"./uploads/{file}")) if not driver: raise ValueError("no driver found") @@ -34,47 +35,45 @@ class GPXHandler: trackName = track.name or f"Track-{datetime.now().isoformat()}" # todo using time.now might end up being misleading and to be reworked # initializes track values - self.__startTime, - self.__endTime, - self.__trackDistance, - self.__waypoints = None, None, 0, [] + self.startTime = None + self.endTime = None + self.trackDistance = 0 + self.waypoints = [] # grab all waypoints from a track for segment in track.segments: for point in segment.points: - self.__waypoints.append(point) - if start_time is None or point.time < start_time: - start_time = point.time - if end_time is None or point.time > end_time: - end_time = point.time + self.waypoints.append(point) + if self.startTime is None or point.time < self.startTime: + self.startTime = point.time + if self.endTime is None or point.time > self.endTime: + self.endTime = point.time # calculate distance between 2 waypoints - for i in range(1, len(self.__waypoints)): - total_distance += self.__waypoints[i - 1].distance_3d(self.__waypoints[i]) + for i in range(1, len(self.waypoints)): + self.trackDistance += self.waypoints[i - 1].distance_3d(self.waypoints[i]) # push values to the database track = Track( trackName=trackName, - vehicle=vehicle.id, - driver=driver.id, - date=start_time.date() if start_time else None, - distance=total_distance, + vehicle=vehicle, + driver=driver, + date=self.startTime.date() if self.startTime else None, + distance=self.trackDistance, speed=0, - start=start_time, - end=end_time ) self.__dbSession.add(track) self.__dbSession.commit() - for point in self.__waypoints: + for point in self.waypoints: waypoint = Waypoint( lat=point.latitude, lon=point.longitude, ele=point.elevation, speed=None, time=point.time, - track=track.id + track=track ) self.__dbSession.add(waypoint) @@ -84,10 +83,11 @@ class GPXHandler: def getTrack(self, trackID): track = self.__dbSession.query(Track).filter_by(id=trackID).first() if not track: - raise NotFoundError(f"track with id {trackID} not found") + raise NotFoundError(f"track with id {trackID} not found", errors=[]) # fetches waypoints for a given track and converts them into geoJSON - waypoints = self.__dbSession.query(Waypoint).filter_by(track=track.id).all() + waypoints = track.waypoints + coordinates = [(wp.lon, wp.lat) for wp in waypoints] feature = Feature(geometry=LineString(coordinates)) return feature @@ -109,8 +109,8 @@ class GPXHandler: # "name": track.vehicle.name # } if track.vehicle else None, # "distance": track.distance, - # "start_time": track.start.isoformat() if track.start else None, - # "end_time": track.end.isoformat() if track.end else None, + # "startTime": track.start.isoformat() if track.start else None, + # "endTime": track.end.isoformat() if track.end else None, } for track in tracks # iterates all tracks and appends them to the list ] @@ -134,7 +134,7 @@ class GPXHandler: "name": track.vehicle.name } if track.vehicle else None, "distance": track.distance, - "start_time": track.start.isoformat() if track.start else None, + "startTime": track.start.isoformat() if track.start else None, "end_time": track.end.isoformat() if track.end else None, } for track in tracks # iterates all tracks and appends them to the list diff --git a/modules/vehicleHandler.py b/modules/vehicleHandler.py index c844a96..369c149 100644 --- a/modules/vehicleHandler.py +++ b/modules/vehicleHandler.py @@ -22,13 +22,10 @@ class VehicleHandler: return vehicle # handles getting a vehicle identified with its id from the database - def getVehicle(self, vehicleID:int): + def getVehicle(self, vehicleID:int) -> Vehicle: vehicle = self.dbSession.query(Vehicle).filter_by(id=vehicleID).first() - return { - "id": vehicle.id, - "name": vehicle.name - } + return vehicle # handles getting all vehicles from database def getVehicles(self): diff --git a/uploads/AA_WITAA000_001.gpx b/uploads/AA_WITAA000_001.gpx new file mode 100644 index 0000000..8cc0b2b --- /dev/null +++ b/uploads/AA_WITAA000_001.gpx @@ -0,0 +1,6099 @@ + + + + + Garmin Connect + + + + + Bochum Randonnée + hiking + + + 171.600006103515625 + + + + 29.0 + 76 + + + + + 171.8000030517578125 + + + + 30.0 + 79 + + + + + 171.8000030517578125 + + + + 30.0 + 78 + + + + + 172.1999969482421875 + + + + 30.0 + 81 + + + + + 172.1999969482421875 + + + + 30.0 + 84 + + + + + 172.399993896484375 + + + + 30.0 + 83 + + + + + 172.399993896484375 + + + + 30.0 + 84 + + + + + 171.600006103515625 + + + + 30.0 + 84 + + + + + 171.399993896484375 + + + + 30.0 + 85 + + + + + 171.399993896484375 + + + + 30.0 + 86 + + + + + 171.399993896484375 + + + + 29.0 + 86 + + + + + 171.600006103515625 + + + + 29.0 + 86 + + + + + 171.600006103515625 + + + + 29.0 + 84 + + + + + 171.600006103515625 + + + + 29.0 + 81 + + + + + 171.399993896484375 + + + + 29.0 + 78 + + + + + 171.399993896484375 + + + + 29.0 + 76 + + + + + 171.399993896484375 + + + + 29.0 + 75 + + + + + 171.399993896484375 + + + + 29.0 + 71 + + + + + 171.399993896484375 + + + + 29.0 + 70 + + + + + 171.1999969482421875 + + + + 29.0 + 69 + + + + + 171.1999969482421875 + + + + 29.0 + 66 + + + + + 170.8000030517578125 + + + + 29.0 + 69 + + + + + 170.8000030517578125 + + + + 29.0 + 68 + + + + + 170.8000030517578125 + + + + 29.0 + 65 + + + + + 170.8000030517578125 + + + + 29.0 + 68 + + + + + 171.1999969482421875 + + + + 29.0 + 72 + + + + + 171 + + + + 29.0 + 76 + + + + + 171 + + + + 29.0 + 79 + + + + + 171 + + + + 29.0 + 76 + + + + + 170.8000030517578125 + + + + 29.0 + 79 + + + + + 170.8000030517578125 + + + + 29.0 + 75 + + + + + 170.8000030517578125 + + + + 29.0 + 78 + + + + + 170.8000030517578125 + + + + 29.0 + 75 + + + + + 170.600006103515625 + + + + 29.0 + 78 + + + + + 170.8000030517578125 + + + + 29.0 + 75 + + + + + 170.600006103515625 + + + + 29.0 + 72 + + + + + 170.600006103515625 + + + + 29.0 + 75 + + + + + 170.600006103515625 + + + + 29.0 + 78 + + + + + 170.8000030517578125 + + + + 29.0 + 79 + + + + + 170.8000030517578125 + + + + 29.0 + 81 + + + + + 170.8000030517578125 + + + + 29.0 + 81 + + + + + 171 + + + + 29.0 + 79 + + + + + 171 + + + + 29.0 + 78 + + + + + 171 + + + + 29.0 + 78 + + + + + 171 + + + + 29.0 + 78 + + + + + 171 + + + + 29.0 + 81 + + + + + 170.8000030517578125 + + + + 29.0 + 78 + + + + + 170.8000030517578125 + + + + 29.0 + 76 + + + + + 171.399993896484375 + + + + 29.0 + 77 + + + + + 171.1999969482421875 + + + + 29.0 + 80 + + + + + 171.1999969482421875 + + + + 29.0 + 84 + + + + + 171.1999969482421875 + + + + 29.0 + 80 + + + + + 171 + + + + 29.0 + 84 + + + + + 171 + + + + 29.0 + 81 + + + + + 171 + + + + 29.0 + 84 + + + + + 171 + + + + 29.0 + 87 + + + + + 171 + + + + 29.0 + 88 + + + + + 171 + + + + 29.0 + 85 + + + + + 171 + + + + 29.0 + 84 + + + + + 171 + + + + 29.0 + 81 + + + + + 171 + + + + 29.0 + 78 + + + + + 171 + + + + 29.0 + 75 + + + + + 171 + + + + 29.0 + 79 + + + + + 171 + + + + 29.0 + 82 + + + + + 171 + + + + 29.0 + 85 + + + + + 171 + + + + 29.0 + 88 + + + + + 171 + + + + 29.0 + 91 + + + + + 171 + + + + 29.0 + 94 + + + + + 171.1999969482421875 + + + + 29.0 + 90 + + + + + 171.1999969482421875 + + + + 29.0 + 87 + + + + + 171.1999969482421875 + + + + 29.0 + 86 + + + + + 171.1999969482421875 + + + + 29.0 + 85 + + + + + 171.1999969482421875 + + + + 29.0 + 85 + + + + + 171.399993896484375 + + + + 29.0 + 85 + + + + + 171.399993896484375 + + + + 29.0 + 85 + + + + + 171.399993896484375 + + + + 29.0 + 85 + + + + + 171.399993896484375 + + + + 29.0 + 86 + + + + + 171.399993896484375 + + + + 29.0 + 87 + + + + + 171.600006103515625 + + + + 29.0 + 91 + + + + + 171.600006103515625 + + + + 29.0 + 90 + + + + + 171.600006103515625 + + + + 29.0 + 91 + + + + + 171.600006103515625 + + + + 29.0 + 93 + + + + + 171.600006103515625 + + + + 29.0 + 89 + + + + + 171.8000030517578125 + + + + 28.0 + 89 + + + + + 172 + + + + 28.0 + 86 + + + + + 172 + + + + 28.0 + 83 + + + + + 172 + + + + 28.0 + 80 + + + + + 172 + + + + 28.0 + 80 + + + + + 172 + + + + 28.0 + 80 + + + + + 172.1999969482421875 + + + + 28.0 + 78 + + + + + 172.1999969482421875 + + + + 28.0 + 75 + + + + + 172.1999969482421875 + + + + 28.0 + 75 + + + + + 172.1999969482421875 + + + + 28.0 + 77 + + + + + 172.399993896484375 + + + + 28.0 + 78 + + + + + 172.399993896484375 + + + + 28.0 + 80 + + + + + 172.399993896484375 + + + + 28.0 + 79 + + + + + 172.399993896484375 + + + + 28.0 + 76 + + + + + 172.399993896484375 + + + + 28.0 + 72 + + + + + 172.399993896484375 + + + + 28.0 + 71 + + + + + 172.399993896484375 + + + + 28.0 + 74 + + + + + 172 + + + + 28.0 + 71 + + + + + 172 + + + + 28.0 + 74 + + + + + 172 + + + + 28.0 + 75 + + + + + 172 + + + + 28.0 + 72 + + + + + 172.1999969482421875 + + + + 28.0 + 69 + + + + + 172.399993896484375 + + + + 28.0 + 71 + + + + + 172.399993896484375 + + + + 28.0 + 74 + + + + + 172 + + + + 28.0 + 79 + + + + + 172 + + + + 28.0 + 82 + + + + + 172.399993896484375 + + + + 28.0 + 78 + + + + + 172.1999969482421875 + + + + 28.0 + 75 + + + + + 172.399993896484375 + + + + 28.0 + 71 + + + + + 172.1999969482421875 + + + + 28.0 + 69 + + + + + 172.1999969482421875 + + + + 28.0 + 72 + + + + + 172.1999969482421875 + + + + 28.0 + 73 + + + + + 172 + + + + 28.0 + 76 + + + + + 172 + + + + 28.0 + 80 + + + + + 172 + + + + 28.0 + 83 + + + + + 172.399993896484375 + + + + 28.0 + 79 + + + + + 172.1999969482421875 + + + + 28.0 + 79 + + + + + 172 + + + + 28.0 + 76 + + + + + 172.399993896484375 + + + + 28.0 + 78 + + + + + 172.399993896484375 + + + + 28.0 + 77 + + + + + 172.399993896484375 + + + + 28.0 + 76 + + + + + 172.399993896484375 + + + + 28.0 + 75 + + + + + 172.399993896484375 + + + + 28.0 + 73 + + + + + 172.1999969482421875 + + + + 28.0 + 71 + + + + + 172.1999969482421875 + + + + 28.0 + 70 + + + + + 172.1999969482421875 + + + + 28.0 + 70 + + + + + 172.1999969482421875 + + + + 28.0 + 70 + + + + + 172 + + + + 28.0 + 70 + + + + + 172 + + + + 28.0 + 70 + + + + + 172 + + + + 28.0 + 70 + + + + + 172 + + + + 28.0 + 68 + + + + + 172 + + + + 28.0 + 69 + + + + + 172 + + + + 28.0 + 69 + + + + + 172.399993896484375 + + + + 28.0 + 68 + + + + + 172.1999969482421875 + + + + 28.0 + 70 + + + + + 172.1999969482421875 + + + + 28.0 + 71 + + + + + 172 + + + + 28.0 + 68 + + + + + 172 + + + + 28.0 + 71 + + + + + 172 + + + + 28.0 + 71 + + + + + 171.8000030517578125 + + + + 28.0 + 74 + + + + + 171.8000030517578125 + + + + 28.0 + 70 + + + + + 171.8000030517578125 + + + + 28.0 + 70 + + + + + 171.8000030517578125 + + + + 28.0 + 69 + + + + + 171.8000030517578125 + + + + 28.0 + 72 + + + + + 171.8000030517578125 + + + + 28.0 + 71 + + + + + 171.8000030517578125 + + + + 28.0 + 69 + + + + + 171.600006103515625 + + + + 28.0 + 72 + + + + + 171.600006103515625 + + + + 28.0 + 75 + + + + + 171.600006103515625 + + + + 27.0 + 78 + + + + + 171.600006103515625 + + + + 28.0 + 83 + + + + + 171.600006103515625 + + + + 27.0 + 80 + + + + + 171.600006103515625 + + + + 28.0 + 83 + + + + + 171.600006103515625 + + + + 27.0 + 79 + + + + + 171.600006103515625 + + + + 27.0 + 76 + + + + + 171.600006103515625 + + + + 27.0 + 73 + + + + + 171.600006103515625 + + + + 27.0 + 70 + + + + + 171.600006103515625 + + + + 27.0 + 67 + + + + + 171.600006103515625 + + + + 27.0 + 64 + + + + + 171.600006103515625 + + + + 28.0 + 61 + + + + + 171.600006103515625 + + + + 27.0 + 58 + + + + + 171.600006103515625 + + + + 27.0 + 61 + + + + + 171.600006103515625 + + + + 27.0 + 66 + + + + + 171.600006103515625 + + + + 27.0 + 69 + + + + + 171.600006103515625 + + + + 27.0 + 72 + + + + + 171.600006103515625 + + + + 27.0 + 75 + + + + + 171.600006103515625 + + + + 27.0 + 78 + + + + + 171.600006103515625 + + + + 27.0 + 81 + + + + + 171.600006103515625 + + + + 27.0 + 84 + + + + + 171.600006103515625 + + + + 27.0 + 87 + + + + + 171.399993896484375 + + + + 27.0 + 90 + + + + + 171.600006103515625 + + + + 27.0 + 83 + + + + + 171.399993896484375 + + + + 27.0 + 80 + + + + + 171.399993896484375 + + + + 27.0 + 84 + + + + + 171.399993896484375 + + + + 27.0 + 87 + + + + + 171.399993896484375 + + + + 27.0 + 84 + + + + + 171.399993896484375 + + + + 27.0 + 81 + + + + + 171.399993896484375 + + + + 27.0 + 80 + + + + + 171.399993896484375 + + + + 27.0 + 78 + + + + + 171.399993896484375 + + + + 27.0 + 75 + + + + + 171.600006103515625 + + + + 27.0 + 80 + + + + + 171.600006103515625 + + + + 27.0 + 85 + + + + + 171.600006103515625 + + + + 27.0 + 88 + + + + + 171.600006103515625 + + + + 27.0 + 90 + + + + + 171.399993896484375 + + + + 27.0 + 91 + + + + + 171.399993896484375 + + + + 27.0 + 94 + + + + + 171.399993896484375 + + + + 27.0 + 95 + + + + + 171.399993896484375 + + + + 27.0 + 97 + + + + + 171.399993896484375 + + + + 27.0 + 98 + + + + + 171.399993896484375 + + + + 27.0 + 98 + + + + + 171.399993896484375 + + + + 27.0 + 101 + + + + + 171.399993896484375 + + + + 27.0 + 103 + + + + + 171.399993896484375 + + + + 27.0 + 102 + + + + + 171.399993896484375 + + + + 27.0 + 98 + + + + + 171.1999969482421875 + + + + 27.0 + 98 + + + + + 171.1999969482421875 + + + + 27.0 + 95 + + + + + 171.1999969482421875 + + + + 27.0 + 92 + + + + + 171.1999969482421875 + + + + 27.0 + 89 + + + + + 171.1999969482421875 + + + + 27.0 + 88 + + + + + 171.1999969482421875 + + + + 27.0 + 91 + + + + + 171.1999969482421875 + + + + 27.0 + 96 + + + + + 171.1999969482421875 + + + + 27.0 + 100 + + + + + 171.1999969482421875 + + + + 27.0 + 103 + + + + + 171.1999969482421875 + + + + 27.0 + 106 + + + + + 171.1999969482421875 + + + + 27.0 + 104 + + + + + 171.1999969482421875 + + + + 27.0 + 101 + + + + + 171.1999969482421875 + + + + 27.0 + 97 + + + + + 171.1999969482421875 + + + + 27.0 + 102 + + + + + 171.1999969482421875 + + + + 27.0 + 99 + + + + + 171.1999969482421875 + + + + 27.0 + 97 + + + + + 171.1999969482421875 + + + + 27.0 + 98 + + + + + 171.399993896484375 + + + + 27.0 + 97 + + + + + 171.399993896484375 + + + + 27.0 + 96 + + + + + 171.399993896484375 + + + + 27.0 + 95 + + + + + 171.1999969482421875 + + + + 27.0 + 93 + + + + + 171.399993896484375 + + + + 27.0 + 93 + + + + + 171.399993896484375 + + + + 27.0 + 90 + + + + + 171.399993896484375 + + + + 27.0 + 92 + + + + + 171.399993896484375 + + + + 27.0 + 92 + + + + + 171.600006103515625 + + + + 27.0 + 92 + + + + + 171.600006103515625 + + + + 27.0 + 93 + + + + + 171.600006103515625 + + + + 27.0 + 90 + + + + + 171.600006103515625 + + + + 27.0 + 86 + + + + + 171.600006103515625 + + + + 27.0 + 85 + + + + + 171.600006103515625 + + + + 27.0 + 88 + + + + + 171.600006103515625 + + + + 27.0 + 88 + + + + + 171.600006103515625 + + + + 27.0 + 91 + + + + + 171.8000030517578125 + + + + 27.0 + 85 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 84 + + + + + 172 + + + + 27.0 + 88 + + + + + 172 + + + + 27.0 + 88 + + + + + 172 + + + + 27.0 + 85 + + + + + 172 + + + + 27.0 + 86 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 27.0 + 87 + + + + + 171.8000030517578125 + + + + 28.0 + 90 + + + + + 172 + + + + 27.0 + 93 + + + + + 172 + + + + 28.0 + 95 + + + + + 172 + + + + 28.0 + 93 + + + + + 172 + + + + 28.0 + 92 + + + + + 172 + + + + 28.0 + 89 + + + + + 172 + + + + 28.0 + 93 + + + + + 172 + + + + 27.0 + 92 + + + + + 172 + + + + 27.0 + 93 + + + + + 172 + + + + 27.0 + 90 + + + + + 172 + + + + 27.0 + 86 + + + + + 172 + + + + 27.0 + 81 + + + + + 172 + + + + 27.0 + 78 + + + + + 172 + + + + 27.0 + 75 + + + + + 172 + + + + 27.0 + 72 + + + + + 172.1999969482421875 + + + + 27.0 + 72 + + + + + 172.1999969482421875 + + + + 27.0 + 70 + + + + + 172.399993896484375 + + + + 27.0 + 70 + + + + + 172.399993896484375 + + + + 27.0 + 71 + + + + + 172.399993896484375 + + + + 27.0 + 71 + + + + + 172.399993896484375 + + + + 27.0 + 69 + + + + + 172.399993896484375 + + + + 27.0 + 65 + + + + + 172.600006103515625 + + + + 27.0 + 68 + + + + + 172.600006103515625 + + + + 27.0 + 69 + + + + + 172.600006103515625 + + + + 27.0 + 66 + + + + + 172.600006103515625 + + + + 27.0 + 69 + + + + + 172.600006103515625 + + + + 27.0 + 66 + + + + + 172.600006103515625 + + + + 27.0 + 68 + + + + + 172.600006103515625 + + + + 27.0 + 70 + + + + + 172.8000030517578125 + + + + 27.0 + 74 + + + + + 173 + + + + 27.0 + 75 + + + + + 173 + + + + 27.0 + 74 + + + + + 173.1999969482421875 + + + + 27.0 + 74 + + + + + 173.1999969482421875 + + + + 27.0 + 74 + + + + + 173.1999969482421875 + + + + 27.0 + 75 + + + + + 173.1999969482421875 + + + + 27.0 + 73 + + + + + 173.399993896484375 + + + + 27.0 + 71 + + + + + 173.399993896484375 + + + + 27.0 + 68 + + + + + 173.399993896484375 + + + + 27.0 + 66 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.399993896484375 + + + + 27.0 + 72 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 72 + + + + + 173.600006103515625 + + + + 27.0 + 68 + + + + + 173.600006103515625 + + + + 27.0 + 65 + + + + + 173.600006103515625 + + + + 27.0 + 62 + + + + + 173.600006103515625 + + + + 27.0 + 59 + + + + + 173.600006103515625 + + + + 27.0 + 62 + + + + + 173.600006103515625 + + + + 27.0 + 59 + + + + + 173.600006103515625 + + + + 27.0 + 63 + + + + + 173.600006103515625 + + + + 27.0 + 66 + + + + + 173.600006103515625 + + + + 27.0 + 62 + + + + + 173.600006103515625 + + + + 27.0 + 65 + + + + + 173.600006103515625 + + + + 27.0 + 62 + + + + + 173.600006103515625 + + + + 27.0 + 65 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 72 + + + + + 173.600006103515625 + + + + 27.0 + 76 + + + + + 173.600006103515625 + + + + 27.0 + 73 + + + + + 173.600006103515625 + + + + 27.0 + 70 + + + + + 173.600006103515625 + + + + 27.0 + 73 + + + + + 173.600006103515625 + + + + 27.0 + 70 + + + + + 173.600006103515625 + + + + 27.0 + 73 + + + + + 173.600006103515625 + + + + 27.0 + 70 + + + + + 173.600006103515625 + + + + 27.0 + 73 + + + + + 173.600006103515625 + + + + 27.0 + 77 + + + + + 173.600006103515625 + + + + 27.0 + 74 + + + + + 173.600006103515625 + + + + 27.0 + 77 + + + + + 173.600006103515625 + + + + 27.0 + 80 + + + + + 173.600006103515625 + + + + 27.0 + 83 + + + + + 173.600006103515625 + + + + 27.0 + 80 + + + + + 173.600006103515625 + + + + 26.0 + 75 + + + + + 173.600006103515625 + + + + 26.0 + 70 + + + + + 173.600006103515625 + + + + 27.0 + 65 + + + + + 173.600006103515625 + + + + 26.0 + 62 + + + + + 173.600006103515625 + + + + 27.0 + 65 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 66 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 66 + + + + + 173.600006103515625 + + + + 27.0 + 69 + + + + + 173.600006103515625 + + + + 27.0 + 74 + + + + + 173.600006103515625 + + + + 27.0 + 79 + + + + + 173.600006103515625 + + + + 27.0 + 79 + + + + + 173.600006103515625 + + + + 27.0 + 84 + + + + + 173.600006103515625 + + + + 27.0 + 88 + + + + + 173.600006103515625 + + + + 27.0 + 90 + + + + + 173.600006103515625 + + + + 27.0 + 87 + + + + + 173.600006103515625 + + + + 27.0 + 86 + + + + + 173.600006103515625 + + + + 27.0 + 82 + + + + + 173.600006103515625 + + + + 27.0 + 85 + + + + + 173.600006103515625 + + + + 27.0 + 82 + + + + + 173.600006103515625 + + + + 27.0 + 83 + + + + + 173.399993896484375 + + + + 27.0 + 85 + + + + + 173.399993896484375 + + + + 27.0 + 82 + + + + + 173.399993896484375 + + + + 26.0 + 82 + + + + + 173.399993896484375 + + + + 27.0 + 79 + + + + + 173.399993896484375 + + + + 26.0 + 79 + + + + + 173.399993896484375 + + + + 26.0 + 82 + + + + + 173.399993896484375 + + + + 26.0 + 80 + + + + + 173.399993896484375 + + + + 26.0 + 76 + + + + + 173.399993896484375 + + + + 26.0 + 73 + + + + + 173.600006103515625 + + + + 26.0 + 72 + + + + + 174 + + + + 26.0 + 71 + + + + + 174 + + + + 26.0 + 74 + + + + + 174 + + + + 26.0 + 71 + + + + + 174 + + + + 26.0 + 74 + + + + + 174 + + + + 26.0 + 75 + + + + + 174 + + + + 26.0 + 75 + + + + + 174 + + + + 26.0 + 74 + + + + + 174 + + + + 26.0 + 71 + + + + + 174 + + + + 26.0 + 68 + + + + + 174 + + + + 26.0 + 71 + + + + + 174 + + + + 26.0 + 74 + + + + + 174 + + + + 26.0 + 77 + + + + + 174 + + + + 26.0 + 80 + + + + + 174 + + + + 26.0 + 76 + + + + + 174 + + + + 26.0 + 79 + + + + + 174 + + + + 26.0 + 76 + + + + + 174 + + + + 26.0 + 74 + + + + + 174 + + + + 26.0 + 73 + + + + + 173.8000030517578125 + + + + 26.0 + 71 + + + + + 173.8000030517578125 + + + + 26.0 + 75 + + + + + 173.8000030517578125 + + + + 26.0 + 71 + + + + + 173.600006103515625 + + + + 26.0 + 74 + + + + + 173.600006103515625 + + + + 26.0 + 71 + + + + + 173.600006103515625 + + + + 26.0 + 68 + + + + + 173.600006103515625 + + + + 26.0 + 67 + + + + + 173.600006103515625 + + + + 26.0 + 68 + + + + + 173.600006103515625 + + + + 26.0 + 71 + + + + + 173.8000030517578125 + + + + 26.0 + 74 + + + + + 173.8000030517578125 + + + + 26.0 + 75 + + + + + 173.600006103515625 + + + + 26.0 + 78 + + + + + 173.600006103515625 + + + + 26.0 + 75 + + + + + 173.600006103515625 + + + + 26.0 + 72 + + + + + 173.600006103515625 + + + + 26.0 + 73 + + + + + 173.399993896484375 + + + + 26.0 + 76 + + + + + 173.399993896484375 + + + + 25.0 + 80 + + + + + 173.399993896484375 + + + + 25.0 + 82 + + + + + 173.399993896484375 + + + + 25.0 + 85 + + + + + 173.399993896484375 + + + + 25.0 + 86 + + + + + 173.399993896484375 + + + + 25.0 + 87 + + + + + 173.600006103515625 + + + + 25.0 + 84 + + + + + 173.600006103515625 + + + + 25.0 + 83 + + + + + 173.399993896484375 + + + + 25.0 + 83 + + + + + 173.399993896484375 + + + + 25.0 + 83 + + + + + 173.1999969482421875 + + + + 25.0 + 83 + + + + + 173.1999969482421875 + + + + 25.0 + 81 + + + + + 173.1999969482421875 + + + + 25.0 + 82 + + + + + 173.1999969482421875 + + + + 25.0 + 79 + + + + + 173.1999969482421875 + + + + 25.0 + 80 + + + + + 173.1999969482421875 + + + + 25.0 + 83 + + + + + 173.1999969482421875 + + + + 25.0 + 82 + + + + + 173.1999969482421875 + + + + 25.0 + 84 + + + + + 173.1999969482421875 + + + + 25.0 + 81 + + + + + 173.1999969482421875 + + + + 25.0 + 81 + + + + + 173.1999969482421875 + + + + 25.0 + 82 + + + + + 173 + + + + 25.0 + 82 + + + + + 173 + + + + 25.0 + 81 + + + + + 172.8000030517578125 + + + + 25.0 + 78 + + + + + 172.8000030517578125 + + + + 25.0 + 75 + + + + + 173 + + + + 25.0 + 72 + + + + + 172.8000030517578125 + + + + 25.0 + 69 + + + + + 172.8000030517578125 + + + + 25.0 + 66 + + + + + 172.600006103515625 + + + + 25.0 + 69 + + + + + 172.600006103515625 + + + + 25.0 + 73 + + + + + 172.8000030517578125 + + + + 25.0 + 77 + + + + + 172.8000030517578125 + + + + 25.0 + 81 + + + + + 172.600006103515625 + + + + 25.0 + 84 + + + + + 172.600006103515625 + + + + 25.0 + 87 + + + + + 172.8000030517578125 + + + + 25.0 + 91 + + + + + 172.8000030517578125 + + + + 25.0 + 96 + + + + + 172.8000030517578125 + + + + 25.0 + 100 + + + + + 172.8000030517578125 + + + + 25.0 + 103 + + + + + 172.8000030517578125 + + + + 25.0 + 106 + + + + + 173 + + + + 25.0 + 109 + + + + + 173 + + + + 25.0 + 112 + + + + + 173 + + + + 25.0 + 115 + + + + + 173 + + + + 24.0 + 112 + + + + + 173 + + + + 24.0 + 109 + + + + + 173 + + + + 24.0 + 105 + + + + + 173 + + + + 24.0 + 101 + + + + + 173 + + + + 24.0 + 97 + + + + + 173 + + + + 24.0 + 94 + + + + + 173 + + + + 24.0 + 91 + + + + + 173 + + + + 24.0 + 87 + + + + + 173 + + + + 24.0 + 84 + + + + + 173 + + + + 24.0 + 84 + + + + + 172.8000030517578125 + + + + 24.0 + 85 + + + + + 172.8000030517578125 + + + + 24.0 + 83 + + + + + 172.8000030517578125 + + + + 24.0 + 83 + + + + + 172.8000030517578125 + + + + 24.0 + 82 + + + + + 172.8000030517578125 + + + + 24.0 + 81 + + + + + 172.600006103515625 + + + + 24.0 + 86 + + + + + 172.600006103515625 + + + + 24.0 + 87 + + + + + 172.600006103515625 + + + + 24.0 + 90 + + + + + 172.600006103515625 + + + + 24.0 + 94 + + + + + 172.8000030517578125 + + + + 24.0 + 98 + + + + + 172.8000030517578125 + + + + 24.0 + 102 + + + + + 172.8000030517578125 + + + + 24.0 + 105 + + + + + 172.8000030517578125 + + + + 24.0 + 106 + + + + + 172.399993896484375 + + + + 24.0 + 103 + + + + + 172.399993896484375 + + + + 24.0 + 102 + + + + + 172.399993896484375 + + + + 24.0 + 105 + + + + + 172.1999969482421875 + + + + 24.0 + 102 + + + + + 172.1999969482421875 + + + + 24.0 + 100 + + + + + 172.1999969482421875 + + + + 24.0 + 101 + + + + + 172.1999969482421875 + + + + 24.0 + 100 + + + + + 172 + + + + 24.0 + 97 + + + + + 172 + + + + 24.0 + 94 + + + + + 172 + + + + 24.0 + 90 + + + + + 172 + + + + 24.0 + 87 + + + + + 172 + + + + 25.0 + 91 + + + + + 171.8000030517578125 + + + + 24.0 + 85 + + + + + 171.600006103515625 + + + + 25.0 + 85 + + + + + 171.600006103515625 + + + + 25.0 + 81 + + + + + 171.600006103515625 + + + + 25.0 + 85 + + + + + 171.600006103515625 + + + + 25.0 + 86 + + + + + 171.399993896484375 + + + + 25.0 + 84 + + + + + 171.399993896484375 + + + + 25.0 + 81 + + + + + 171.1999969482421875 + + + + 25.0 + 81 + + + + + 171.1999969482421875 + + + + 25.0 + 84 + + + + + 171.1999969482421875 + + + + 25.0 + 80 + + + + + 171 + + + + 25.0 + 78 + + + + + 171 + + + + 25.0 + 79 + + + + + 171 + + + + 25.0 + 81 + + + + + 171 + + + + 25.0 + 77 + + + + + 171 + + + + 25.0 + 78 + + + + + 170.8000030517578125 + + + + 25.0 + 81 + + + + + 170.8000030517578125 + + + + 25.0 + 81 + + + + + 170.8000030517578125 + + + + 25.0 + 78 + + + + + 170.8000030517578125 + + + + 25.0 + 78 + + + + + 170.8000030517578125 + + + + 25.0 + 79 + + + + + 170.8000030517578125 + + + + 25.0 + 76 + + + + + 170.8000030517578125 + + + + 25.0 + 76 + + + + + 170.600006103515625 + + + + 25.0 + 75 + + + + + 170.600006103515625 + + + + 25.0 + 72 + + + + + 170.600006103515625 + + + + 25.0 + 74 + + + + + 170.399993896484375 + + + + 25.0 + 70 + + + + + 170.600006103515625 + + + + 25.0 + 76 + + + + + 170.600006103515625 + + + + 25.0 + 73 + + + + + 170.399993896484375 + + + + 25.0 + 74 + + + + + 170.399993896484375 + + + + 25.0 + 75 + + + + + 170.399993896484375 + + + + 25.0 + 78 + + + + + 170.399993896484375 + + + + 25.0 + 75 + + + + + 170.1999969482421875 + + + + 25.0 + 74 + + + + + 170.1999969482421875 + + + + 25.0 + 71 + + + + + 170.1999969482421875 + + + + 25.0 + 68 + + + + + 170.1999969482421875 + + + + 25.0 + 71 + + + + + 170.1999969482421875 + + + + 25.0 + 72 + + + + + 170.1999969482421875 + + + + 25.0 + 72 + + + + + 169.8000030517578125 + + + + 25.0 + 72 + + + + + 170 + + + + 25.0 + 71 + + + + + 170.1999969482421875 + + + + 25.0 + 72 + + + + + 170.1999969482421875 + + + + 25.0 + 73 + + + + + 170.1999969482421875 + + + + 25.0 + 74 + + + + + 170 + + + + 25.0 + 75 + + + + + 170 + + + + 25.0 + 74 + + + + + 169.8000030517578125 + + + + 25.0 + 75 + + + + + 169.8000030517578125 + + + + 25.0 + 72 + + + + + 170 + + + + 25.0 + 69 + + + + + 170 + + + + 25.0 + 69 + + + + + 169.8000030517578125 + + + + 25.0 + 75 + + + + + 169.8000030517578125 + + + + 25.0 + 71 + + + + + 169.8000030517578125 + + + + 25.0 + 71 + + + + + 169.8000030517578125 + + + + 25.0 + 71 + + + + + 170.1999969482421875 + + + + 25.0 + 72 + + + + + 170 + + + + 25.0 + 72 + + + + + 170 + + + + 25.0 + 71 + + + + + 170 + + + + 25.0 + 71 + + + + + 170 + + + + 25.0 + 68 + + + + + 170 + + + + 25.0 + 67 + + + + + 170 + + + + 25.0 + 64 + + + + + 170 + + + + 25.0 + 68 + + + + + 170 + + + + 25.0 + 65 + + + + + 170 + + + + 25.0 + 68 + + + + + 170 + + + + 25.0 + 65 + + + + + 170 + + + + 25.0 + 68 + + + + + 170 + + + + 25.0 + 71 + + + + + 170 + + + + 25.0 + 74 + + + + + 170 + + + + 25.0 + 76 + + + + + 170 + + + + 25.0 + 75 + + + + + 169.8000030517578125 + + + + 25.0 + 78 + + + + + 169.8000030517578125 + + + + 25.0 + 79 + + + + + 169.8000030517578125 + + + + 25.0 + 82 + + + + + 169.600006103515625 + + + + 25.0 + 79 + + + + + 169.600006103515625 + + + + 25.0 + 79 + + + + + 169.600006103515625 + + + + 25.0 + 79 + + + + + 169.8000030517578125 + + + + 25.0 + 80 + + + + + 169.600006103515625 + + + + 25.0 + 83 + + + + + 169.8000030517578125 + + + + 25.0 + 83 + + + + + 169.399993896484375 + + + + 25.0 + 85 + + + + + 169.399993896484375 + + + + 25.0 + 81 + + + + + 169.600006103515625 + + + + 25.0 + 78 + + + + + 169.399993896484375 + + + + 25.0 + 82 + + + + + 169.399993896484375 + + + + 25.0 + 85 + + + + + 169.399993896484375 + + + + 25.0 + 88 + + + + + 169.399993896484375 + + + + 25.0 + 89 + + + + + 169.1999969482421875 + + + + 25.0 + 89 + + + + + 169.1999969482421875 + + + + 25.0 + 89 + + + + + 169 + + + + 25.0 + 88 + + + + + 169 + + + + 25.0 + 85 + + + + + 169 + + + + 25.0 + 88 + + + + + 169 + + + + 25.0 + 86 + + + + + 168.8000030517578125 + + + + 25.0 + 82 + + + + + 168.8000030517578125 + + + + 25.0 + 79 + + + + + 168.8000030517578125 + + + + 25.0 + 76 + + + + + 168.8000030517578125 + + + + 25.0 + 80 + + + + + 168.8000030517578125 + + + + 25.0 + 84 + + + + + 168.8000030517578125 + + + + 25.0 + 79 + + + + + 168.8000030517578125 + + + + 25.0 + 82 + + + + + 169 + + + + 25.0 + 85 + + + + + 168.8000030517578125 + + + + 25.0 + 80 + + + + + 168.8000030517578125 + + + + 25.0 + 76 + + + + + 168.8000030517578125 + + + + 25.0 + 73 + + + + + 168.8000030517578125 + + + + 25.0 + 69 + + + + + 168.8000030517578125 + + + + 25.0 + 66 + + + + + 168.8000030517578125 + + + + 25.0 + 69 + + + + + 168.8000030517578125 + + + + 25.0 + 73 + + + + + 168.8000030517578125 + + + + 25.0 + 76 + + + + + 168.8000030517578125 + + + + 25.0 + 79 + + + + + 168.8000030517578125 + + + + 25.0 + 76 + + + + + 168.8000030517578125 + + + + 25.0 + 73 + + + + + 168.8000030517578125 + + + + 25.0 + 70 + + + + + 168.8000030517578125 + + + + 25.0 + 67 + + + + + 168.8000030517578125 + + + + 25.0 + 64 + + + + + 168.8000030517578125 + + + + 25.0 + 67 + + + + + 168.8000030517578125 + + + + 25.0 + 70 + + + + + 168.8000030517578125 + + + + 25.0 + 74 + + + + + 168.8000030517578125 + + + + 25.0 + 77 + + + + + 168.8000030517578125 + + + + 25.0 + 81 + + + + + 168.8000030517578125 + + + + 25.0 + 85 + + + + + 168.8000030517578125 + + + + 25.0 + 87 + + + + + 168.8000030517578125 + + + + 25.0 + 87 + + + + + 170 + + + + 25.0 + 86 + + + + + 170.600006103515625 + + + + 25.0 + 85 + + + + + 170.600006103515625 + + + + 25.0 + 83 + + + + + 170.600006103515625 + + + + 25.0 + 82 + + + + + 170.600006103515625 + + + + 25.0 + 83 + + + + + 170.399993896484375 + + + + 25.0 + 83 + + + + + 170.1999969482421875 + + + + 25.0 + 86 + + + + + 170 + + + + 25.0 + 83 + + + + + 170.1999969482421875 + + + + 25.0 + 80 + + + + + 170.1999969482421875 + + + + 25.0 + 82 + + + + + 170 + + + + 25.0 + 79 + + + + + 170.399993896484375 + + + + 25.0 + 76 + + + + + 170.399993896484375 + + + + 25.0 + 79 + + + + + 170.399993896484375 + + + + 25.0 + 82 + + + + + 170.399993896484375 + + + + 25.0 + 85 + + + + + 170.399993896484375 + + + + 25.0 + 82 + + + + + 170.399993896484375 + + + + 25.0 + 78 + + + + + 170.399993896484375 + + + + 25.0 + 81 + + + + + 170.399993896484375 + + + + 25.0 + 84 + + + + + 170.399993896484375 + + + + 25.0 + 80 + + + + + 170.399993896484375 + + + + 25.0 + 77 + + + + + 170.399993896484375 + + + + 25.0 + 74 + + + + + 170.399993896484375 + + + + 25.0 + 71 + + + + + 170.399993896484375 + + + + 25.0 + 68 + + + + + 170.399993896484375 + + + + 25.0 + 73 + + + + + 170.399993896484375 + + + + 25.0 + 76 + + + + + 170.399993896484375 + + + + 25.0 + 79 + + + + + 170.399993896484375 + + + + 25.0 + 76 + + + + + 170.399993896484375 + + + + 25.0 + 73 + + + + + 170.399993896484375 + + + + 25.0 + 70 + + + + + + diff --git a/web/src/classes/settings.ts b/web/src/classes/settings.ts deleted file mode 100644 index c28853d..0000000 --- a/web/src/classes/settings.ts +++ /dev/null @@ -1,36 +0,0 @@ -enum SettingNodes { - allowDateCollect, - theme, - language, -} - -/** - * class which handles reading and writing settings - */ -var SettingsHandler = class SettingsHandler implements ISettings{ - - settings:Map - constructor() { - this.settings = new Map(); - // TODO: load settings from localstorage if any present - } - - /** - * writes settings to the localstorage and handles errors - * @param name the settings name - * @param value - */ - WriteSetting(name:SettingNodes, value:any):boolean { - return false - } - - /** - * fetches settings from the localstorage and handles errors - * @param name the requested setting - */ - FetchSetting(name:SettingNodes):any { - return "" - } -} - -export {SettingsHandler, SettingNodes}; \ No newline at end of file diff --git a/web/src/components/fileUpload.vue b/web/src/components/fileUpload.vue index 94e9649..c0c291c 100644 --- a/web/src/components/fileUpload.vue +++ b/web/src/components/fileUpload.vue @@ -33,6 +33,7 @@ export default defineComponent({ const target = $event.target as HTMLInputElement; if (target && target.files) { file.value = target.files[0]; + console.log(`selected file: ${file.value}`); } } @@ -45,10 +46,13 @@ export default defineComponent({ const formData = new FormData(); formData.append("file", file.value); - formData.append("driverId", selectedDriver.value.toString()); - + formData.append("driverId", selectedDriver.value.toString()); + try { - const response = await fetch('http://localhost:5000/track', { + + console.log('Request Body:', formData); + + const response = await fetch('http://localhost:5000/upload', { method: 'POST', body: formData, }); diff --git a/web/src/components/map.vue b/web/src/components/map.vue index a0c82c2..65774b2 100644 --- a/web/src/components/map.vue +++ b/web/src/components/map.vue @@ -1,5 +1,5 @@