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 %}
+
+ {% 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;