diff --git a/rowers/dataprep.py b/rowers/dataprep.py
index 8197c6d8..35a7ec9f 100644
--- a/rowers/dataprep.py
+++ b/rowers/dataprep.py
@@ -1076,7 +1076,7 @@ def checkbreakthrough(w, r):
# Processes painsled CSV file to database
def save_workout_database(f2, r, dosmooth=True, workouttype='rower',
- boattype='1x',
+ boattype='static',
adaptiveclass='None',
weightcategory='hwt',
dosummary=True, title='Workout',
@@ -1366,7 +1366,7 @@ def new_workout_from_file(r, f2,
workouttype='rower',
workoutsource=None,
title='Workout',
- boattype='1x',
+ boattype='static',
rpe=-1,
makeprivate=False,
startdatetime='',
@@ -1552,7 +1552,7 @@ def new_workout_from_file(r, f2,
def new_workout_from_df(r, df,
title='New Workout',
workoutsource='unknown',
- boattype='1x',
+ boattype='static',
workouttype='rower',
parent=None,
workoutid='',
diff --git a/rowers/forms.py b/rowers/forms.py
index 4a5df3d8..bb29caa2 100644
--- a/rowers/forms.py
+++ b/rowers/forms.py
@@ -1120,7 +1120,7 @@ workouttypes = tuple(ww)
class DataFrameColumnsForm(forms.Form):
cols = ['ftime', 'cumdist', 'fpace', 'spm',
- 'hr', 'power', 'driveenergy', 'drivelength', 'averageforce',
+ 'hr', 'grpower', 'driveenergy', 'drivelength', 'averageforce',
'peakforce', 'distance', 'drivespeed', 'workoutstate',
'catch', 'finish', 'peakforceangle', 'wash', 'slip', 'rhythm',
'effectiveangle', 'totalangle', 'distanceperstroke', 'velo']
@@ -1157,7 +1157,7 @@ class TrendFlexModalForm(forms.Form):
modality = forms.ChoiceField(choices=workouttypes,
label='Workout Type',
initial='all')
- waterboattype = forms.MultipleChoiceField(choices=boattypes,
+ waterboattype = forms.MultipleChoiceField(choices=boattypes+ergtypes,
label='Water Boat Type',
initial=mytypes.waterboattype)
diff --git a/rowers/models.py b/rowers/models.py
index b46f727a..20be9e6f 100644
--- a/rowers/models.py
+++ b/rowers/models.py
@@ -3569,6 +3569,11 @@ class Workout(models.Model):
if self.timezone == 'tzutc()':
self.timezone = 'UTC' # pragma: no cover
+ if self.workouttype in mytypes.otwtypes and self.boattype in mytypes.ergtypes:
+ self.boattype = '1x'
+ elif self.workouttype in mytypes.otetypes and self.boattype in mytypes.boattypes:
+ self.boattype = 'static'
+
super(Workout, self).save(*args, **kwargs)
def __str__(self):
diff --git a/rowers/mytypes.py b/rowers/mytypes.py
index 182886d5..fef3969d 100644
--- a/rowers/mytypes.py
+++ b/rowers/mytypes.py
@@ -340,8 +340,6 @@ otwtypes = (
otetypes = (
'rower',
- 'dynamic',
- 'slides'
)
rowtypes = (
diff --git a/rowers/templates/alert_create.html b/rowers/templates/alert_create.html
index 9940fa8e..3cb0b5bd 100644
--- a/rowers/templates/alert_create.html
+++ b/rowers/templates/alert_create.html
@@ -65,26 +65,85 @@
deleteText: '
remove
'
});
-
+ $('#id_workouttype').on('change', function(){
+ if (
+ $(this).val() == 'water'
+ || $(this).val() == 'coastal'
+ || $(this).val() == 'c-boat'
+ || $(this).val() == 'churchboat'
+ ) {
+ var $el = $('#id_boattype');
+ $el.empty();
+ $.each(boattypes, function(key,value) {
+ if ( key == '{{ workout.boattype }}') {
+ $el.append($("
{% endblock %}
diff --git a/rowers/templates/alert_edit.html b/rowers/templates/alert_edit.html
index 04f92ce2..d8712700 100644
--- a/rowers/templates/alert_edit.html
+++ b/rowers/templates/alert_edit.html
@@ -63,26 +63,86 @@
addText: '
add filter
',
deleteText: 'remove
'
});
-
+
+ $('#id_workouttype').on('change', function(){
+ if (
+ $(this).val() == 'water'
+ || $(this).val() == 'coastal'
+ || $(this).val() == 'c-boat'
+ || $(this).val() == 'churchboat'
+ ) {
+ var $el = $('#id_boattype');
+ $el.empty();
+ $.each(boattypes, function(key,value) {
+ if ( key == '{{ workout.boattype }}') {
+ $el.append($("
{% endblock %}
diff --git a/rowers/templates/document_form.html b/rowers/templates/document_form.html
index 85d7be01..dd591307 100644
--- a/rowers/templates/document_form.html
+++ b/rowers/templates/document_form.html
@@ -11,8 +11,6 @@
-
{% endblock %}
{% block main %}
@@ -80,244 +78,304 @@
{% block scripts %}
-
+
+ $('#id_workouttype').on('change', function(){
+ if (
+ $(this).val() == 'water'
+ || $(this).val() == 'coastal'
+ || $(this).val() == 'c-boat'
+ || $(this).val() == 'churchboat'
+ ) {
+ var $el = $('#id_boattype');
+ $el.empty();
+ $.each(boattypes, function(key,value) {
+ if ( key == '{{ workout.boattype }}') {
+ $el.append($("
-
- {% endblock %}
+ $('#id_offline').prop('checked','True');
+ data.set($('#id_offline').attr('name'),$('#id_offline').prop('checked'));
+ console.log("Set offline to True");
+ $('#extra_message').text('Because of the large size, we recommend to use background processing. You will receive email when it is done.');
+ $('#extra_message').addClass('message');
+ }
+ data.set("file",f);
+ // data.append("file",f);
+
+ $("#id_file").replaceWith('');
+ },
+ mouseenter:function(){$("#id_drop-files").css("background-color","#E9E9E4");},
+ mouseleave:function(){$("#id_drop-files").css("background-color","#FFFFFF");},
+ dragover:function(e){
+ e.preventDefault();
+ $("#id_drop-files").css("background-color","#E9E9E4");},
+ dragleave:function(e){ e.preventDefault();},
+ });
+ $(document).on("click", "a.remove", function() {
+ $(this).parent().replaceWith(' | ');
+ });
+ });
+ };
+
+{% endblock %}
- {% block sidebar %}
- {% include 'menu_workouts.html' %}
- {% endblock %}
+{% block sidebar %}
+{% include 'menu_workouts.html' %}
+{% endblock %}
diff --git a/rowers/templates/team_document_form.html b/rowers/templates/team_document_form.html
index 54260f6d..c011697e 100644
--- a/rowers/templates/team_document_form.html
+++ b/rowers/templates/team_document_form.html
@@ -76,22 +76,82 @@
+ $('#id_workouttype').on('change', function(){
+ if (
+ $(this).val() == 'water'
+ || $(this).val() == 'coastal'
+ || $(this).val() == 'c-boat'
+ || $(this).val() == 'churchboat'
+ ) {
+ var $el = $('#id_boattype');
+ $el.empty();
+ $.each(boattypes, function(key,value) {
+ if ( key == '{{ workout.boattype }}') {
+ $el.append($("
{% endblock %}
diff --git a/rowers/templates/workout_join_select.html b/rowers/templates/workout_join_select.html
index 4baa15d5..5b58836d 100644
--- a/rowers/templates/workout_join_select.html
+++ b/rowers/templates/workout_join_select.html
@@ -16,58 +16,93 @@
+
diff --git a/rowers/tests/testdata/testdata.tcx.gz b/rowers/tests/testdata/testdata.tcx.gz
index cb21fdd4..f3b37174 100644
Binary files a/rowers/tests/testdata/testdata.tcx.gz and b/rowers/tests/testdata/testdata.tcx.gz differ
diff --git a/rowers/uploads.py b/rowers/uploads.py
index 36b6ceac..781271f7 100644
--- a/rowers/uploads.py
+++ b/rowers/uploads.py
@@ -1,4 +1,4 @@
-from rowers.mytypes import workouttypes, boattypes, otwtypes, workoutsources, workouttypes_ordered
+from rowers.mytypes import workouttypes, boattypes, ergtypes, otwtypes, workoutsources, workouttypes_ordered
from rowers.rower_rules import is_promember
diff --git a/rowers/views/workoutviews.py b/rowers/views/workoutviews.py
index 1b2705ac..e2134167 100644
--- a/rowers/views/workoutviews.py
+++ b/rowers/views/workoutviews.py
@@ -1219,6 +1219,9 @@ def workouts_join_select(request,
for b in mytypes.boattypes:
if b[0] not in waterboattype:
negtypes.append(b[0])
+ for b in mytypes.ergtypes:
+ if b[0] not in waterboattype: # pragma: no cover
+ negtypes.append(b[0])
startdate = datetime.datetime.combine(startdate, datetime.time())
enddate = datetime.datetime.combine(enddate, datetime.time(23, 59, 59))