diff --git a/rowers/interactiveplots.py b/rowers/interactiveplots.py index 67c1996b..73b041c5 100644 --- a/rowers/interactiveplots.py +++ b/rowers/interactiveplots.py @@ -92,7 +92,13 @@ def get_chart(end_point, chart_data): url = settings.ROWSANDALL_CHARTS_URL+end_point headers = {'authorization':"Bearer {token}".format(token=settings.ROWSANDALL_CHARTS_TOKEN)} - response = requests.post(url, json=chart_data, headers=headers) + try: + response = requests.post(url, json=chart_data, headers=headers) + except: + script = '' + div = 'Chart Server Error' + return script, div + if response.status_code == 200: script = response.json()['script'] div = response.json()['div'] @@ -2202,273 +2208,6 @@ def course_map(course): -def get_map_script_course( - latmean, - lonmean, - latbegin, - latend, - longbegin, - longend, - scoordinates, - course, -): # pragma: no cover - latmean, lonmean, coordinates = course_coord_center(course) - lat_min, lat_max, long_min, long_max = course_coord_maxmin(course) - - coordinates = course_spline(coordinates) - - scoordinates = "[" - - for index, row in coordinates.iterrows(): - scoordinates += """[{x},{y}], - """.format( - x=row['latitude'], - y=row['longitude'] - ) - - scoordinates += "]" - - polygons = GeoPolygon.objects.filter( - course=course).order_by("order_in_course") - - plabels = '' - - for p in polygons: - coords = polygon_coord_center(p) - - plabels += """ - var marker = L.marker([{latbegin}, {longbegin}]).addTo(mymap); - marker.bindPopup("{name}"); - - """.format( - latbegin=coords[0], - longbegin=coords[1], - name=p.name - ) - - pcoordinates = """[ - """ - - for p in polygons: - pcoordinates += """[ - [""" - - points = GeoPoint.objects.filter(polygon=p).order_by("order_in_poly") - - for pt in points: - pcoordinates += "[{x},{y}],".format( - x=pt.latitude, - y=pt.longitude - ) - - # remove last comma - pcoordinates = pcoordinates[:-1] - pcoordinates += """] - ], - """ - - pcoordinates += """ - ]""" - - script = """ - - """.format( - latmean=latmean, - lonmean=lonmean, - scoordinates=scoordinates, - pcoordinates=pcoordinates, - plabels=plabels - ) - - return script - - -def get_map_script( - latmean, - lonmean, - latbegin, - latend, - longbegin, - longend, - scoordinates, -): - script = """ - - """.format( - latmean=latmean, - lonmean=lonmean, - latbegin=latbegin, - latend=latend, - longbegin=longbegin, - longend=longend, - scoordinates=scoordinates, - ) - - return script def leaflet_chart(lat, lon, name="", raceresult=0): @@ -2500,48 +2239,31 @@ def leaflet_chart(lat, lon, name="", raceresult=0): coordinates = zip(lat, lon) - scoordinates = "[" + data = { + 'coordinates': [{'latitude': c[0], 'longitude': c[1]} for c in list(coordinates)], + 'latmean': latmean, + 'lonmean': lonmean, + 'latbegin': latbegin, + 'latend': latend, + 'longbegin': longbegin, + 'longend': longend, + } - for x, y in coordinates: - scoordinates += """[{x},{y}], - """.format( - x=x, - y=y - ) - - scoordinates += "]" - - if raceresult == 0: - script = get_map_script( - latmean, - lonmean, - latbegin, - latend, - longbegin, - longend, - scoordinates, - ) - else: # pragma: no cover + if raceresult != 0: record = VirtualRaceResult.objects.get(id=raceresult) course = record.course - script = get_map_script_course( - latmean, - lonmean, - latbegin, - latend, - longbegin, - longend, - scoordinates, - course, - ) + course_dict = GeoCourseSerializer(course).data + data['course'] = course_dict - div = """ -

 

- """ + + coordinates = zip(lat, lon) + + script, div = get_chart("/workoutmap", data) return script, div + def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}): data = [] for id in workoutids: @@ -2564,6 +2286,10 @@ def leaflet_chart_compare(course, workoutids, labeldict={}, startenddict={}): except ValueError: # pragma: no cover df = pd.DataFrame() + mapdata = { + 'trajectories': df.reset_index().to_json() + } + latmean, lonmean, coordinates = course_coord_center(course) lat_min, lat_max, long_min, long_max = course_coord_maxmin(course) diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz index e380513e..fad5c58b 100644 Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ