+
+
Map View
diff --git a/rowers/templates/workoutstats.html b/rowers/templates/workoutstats.html
index 75dc0f8c..3a02f214 100644
--- a/rowers/templates/workoutstats.html
+++ b/rowers/templates/workoutstats.html
@@ -18,7 +18,7 @@
diff --git a/rowers/templatetags/rowerfilters.py b/rowers/templatetags/rowerfilters.py
index 12cd75b1..123faa9e 100644
--- a/rowers/templatetags/rowerfilters.py
+++ b/rowers/templatetags/rowerfilters.py
@@ -118,7 +118,6 @@ def user_teams(user):
return teams
-
@register.filter
def has_teams(user):
try:
diff --git a/rowers/utils.py b/rowers/utils.py
index 205c74e9..23a04080 100644
--- a/rowers/utils.py
+++ b/rowers/utils.py
@@ -9,15 +9,23 @@ workflowmiddlepanel = (
('panel_statcharts.html','Static Charts'),
('flexthumbnails.html','Flex Charts'),
('panel_summary.html','Summary'),
+ ('panel_map.html','Map'),
+ ('panel_comments.html','Basic Info and Links'),
+ ('panel_middlesocial.html','Social Media Share Buttons'),
)
-defaultmiddle = ['panel_statcharts.html',
+defaultmiddle = ['panel_middlesocial.html',
+ 'panel_statcharts.html',
'flexthumbnails.html',
- 'panel_summary.html']
+ 'panel_summary.html',
+ 'panel_map.html']
workflowleftpanel = (
('panel_navigationheader.html','Navigation Header'),
('panel_editbuttons.html','Edit Workout Button'),
+ ('panel_delete.html','Delete Workout Button'),
+ ('panel_export.html','Export Workout Button'),
+ ('panel_social.html','Social Media Share Buttons'),
('panel_advancededit.html','Advanced Workout Edit Button'),
('panel_editintervals.html','Edit Intervals Button'),
('panel_stats.html','Workout Statistics Button'),
@@ -25,7 +33,8 @@ workflowleftpanel = (
('panel_geekyheader.html','Geeky Header'),
('panel_editwind.html','Edit Wind Data'),
('panel_editstream.html','Edit Stream Data'),
- ('panel_otwpower.html','Run OTW Power Calculations')
+ ('panel_otwpower.html','Run OTW Power Calculations'),
+ ('panel_mapview.html','Map'),
)
defaultleft = [
diff --git a/rowers/views.py b/rowers/views.py
index 0faed633..09238cbc 100644
--- a/rowers/views.py
+++ b/rowers/views.py
@@ -12,6 +12,7 @@ from PIL import Image
from numbers import Number
from django.views.generic.base import TemplateView
from django.db.models import Q
+from django import template
from django.db import IntegrityError, transaction
from django.shortcuts import render
from django.http import (
@@ -157,6 +158,27 @@ from interactiveplots import *
# Define the API documentation
schema_view = get_swagger_view(title='Rowsandall API')
+# Test if row data include candidates
+def rowhascoordinates(row):
+ # create interactive plot
+ f1 = row.csvfilename
+ u = row.user.user
+ r = getrower(u)
+ rowdata = rdata(f1)
+ hascoordinates = 1
+ if rowdata != 0:
+ try:
+ latitude = rowdata.df[' latitude']
+ if not latitude.std():
+ hascoordinates = 0
+ except KeyError,AttributeError:
+ hascoordinates = 0
+
+ else:
+ hascoordinates = 0
+
+ return hascoordinates
+
# Custom error pages with Rowsandall headers
def error500_view(request):
response = render_to_response('500.html', {},
@@ -5231,7 +5253,11 @@ def workout_otwsetpower_view(request,id=0,message="",successmessage=""):
kwargs = {
'id':int(id)}
- url = reverse(workout_advanced_view,kwargs=kwargs)
+ try:
+ url = request.session['referer']
+ except KeyError:
+ url = reverse(workout_advanced_view,kwargs=kwargs)
+
response = HttpResponseRedirect(url)
return response
@@ -6006,16 +6032,42 @@ def workout_workflow_view(request,id):
charts = []
- if favorites:
+ if favorites and 'flexthumbnails.html' in r.workflowmiddlepanel:
charts = thumbnails_set(r,id,favorites)
+ if charts[0]['script'] == '':
+ charts = []
+
+ if 'panel_map.html' in r.workflowmiddlepanel and rowhascoordinates(row):
+ rowdata = rdata(row.csvfilename)
+ mapscript,mapdiv = leaflet_chart2(rowdata.df[' latitude'],
+ rowdata.df[' longitude'],
+ row.name)
+ else:
+ mapscript = ''
+ mapdiv = ''
+
+
statcharts = GraphImage.objects.filter(workout=row)
- # This will be user configurable in the future
- middleTemplates = r.workflowmiddlepanel
- leftTemplates = r.workflowleftpanel
+ middleTemplates = []
+ for t in r.workflowmiddlepanel:
+ try:
+ template.loader.get_template(t)
+ middleTemplates.append(t)
+ except template.TemplateDoesNotExist:
+ pass
+ leftTemplates = []
+ for t in r.workflowleftpanel:
+ try:
+ template.loader.get_template(t)
+ leftTemplates.append(t)
+ except template.TemplateDoesNotExist:
+ pass
+
+
return render(request,
'workflow.html',
{
@@ -6023,6 +6075,8 @@ def workout_workflow_view(request,id):
'leftTemplates':leftTemplates,
'charts':charts,
'workout':row,
+ 'mapscript':mapscript,
+ 'mapdiv':mapdiv,
'statcharts':statcharts,
})