diff --git a/rowers/models.py b/rowers/models.py index c11d0f5b..7624c996 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -2425,7 +2425,7 @@ class PlannedSessionStep(models.Model): intensity = models.TextField(default='',max_length=200, blank=True, null=True, choices=intensitytypes) notes = models.TextField(default='',max_length=200, blank=True, null=True) - color = models.TextField(default='gray',max_length=200) + color = models.TextField(default='#ddd',max_length=200) class PlannedSession(models.Model): diff --git a/rowers/templates/stepeditor.html b/rowers/templates/stepeditor.html new file mode 100644 index 00000000..19e5abd6 --- /dev/null +++ b/rowers/templates/stepeditor.html @@ -0,0 +1,95 @@ +{% extends "newbase.html" %} +{% load static %} +{% load rowerfilters %} + +{% block title %}Rowsandall Training Plans{% endblock %} + + +{% block main %} +

Plan Training Steps

+ +
+ {% for step in steps %} +
+
+ {{ step.name }} +
+
+ {% endfor %} +
+{% endblock %} + +{% block scripts %} + + +{% endblock %} + +{% block sidebar %} +{% include 'menu_plan.html' %} +{% endblock %} diff --git a/rowers/urls.py b/rowers/urls.py index 4251c30e..9e1e4e5c 100644 --- a/rowers/urls.py +++ b/rowers/urls.py @@ -875,6 +875,8 @@ urlpatterns = [ views.rower_create_trainingplan, name='rower_create_trainingplan'), re_path(r'^plans/$', views.rower_select_instantplan, name='rower_select_instantplan'), + re_path(r'^plans/stepeditor/$', + views.stepeditor, name='stepeditor'), re_path(r'^plans/(?P[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{12})/$', views.rower_view_instantplan, name='rower_view_instantplan'), re_path(r'^buyplan/(?P\d+)/$', views.buy_trainingplan_view, diff --git a/rowers/views/planviews.py b/rowers/views/planviews.py index ade55c80..169d84c7 100644 --- a/rowers/views/planviews.py +++ b/rowers/views/planviews.py @@ -2959,6 +2959,40 @@ def rower_create_trainingplan(request, id=0): 'old_targets': old_targets, }) +@user_passes_test(can_plan, login_url="/rowers/paidplans", + message="This functionality requires a Coach or Self-Coach plan", + redirect_field_name=None) +def stepeditor(request, id=0): + step1 = PlannedSessionStep( + manager = request.user, + name = "Warming Up", + intensity = "Warmup", + durationtype = "Time", + durationvalue = 60000, + ) + + step2 = PlannedSessionStep( + manager = request.user, + name = "Steady", + intensity = "Active", + durationtype = "Time", + durationvalue = 180000, + ) + + step3 = PlannedSessionStep( + manager = request.user, + name = "Cooling Down", + intensity = "Cooldown", + durationtype = "Time", + durationvalue = 60000, + ) + + steps = [step1,step2,step3] + + return render(request, 'stepeditor.html', + { + 'steps':steps, + }) @user_passes_test(can_plan, login_url="/rowers/paidplans", message="This functionality requires a Coach or Self-Coach plan", diff --git a/rowers/views/statements.py b/rowers/views/statements.py index 8232bfc6..c2238e68 100644 --- a/rowers/views/statements.py +++ b/rowers/views/statements.py @@ -151,7 +151,8 @@ from rowers.models import ( PlannedSessionComment, CoachRequest, CoachOffer, VideoAnalysis, ShareKey, StandardCollection, CourseStandard, - VirtualRaceFollower, TombStone, InstantPlan + VirtualRaceFollower, TombStone, InstantPlan, + PlannedSessionStep, ) from rowers.models import ( RowerPowerForm, RowerHRZonesForm, RowerForm, RowerCPForm, GraphImage, AdvancedWorkoutForm, diff --git a/static/css/rowsandall2.css b/static/css/rowsandall2.css index c4d36853..ee6e6e21 100644 --- a/static/css/rowsandall2.css +++ b/static/css/rowsandall2.css @@ -322,6 +322,25 @@ th.rotate > div > span { margin: 2px; } + +.stepcontainer { + display: grid; + grid-template-columns: repeat(5, 1fr); + gap: 10px; +} + +.trainingstep { + border: 3px solid #666; + background-color: #ddd; + border-radius: .5em; + padding: 10px; + cursor: move; +} + +.trainingstep.over { + border: 3px dotted #666; +} + .divlines { display: block; overflow-x: hidden;