works
This commit is contained in:
@@ -2420,11 +2420,11 @@ class PlannedSessionStep(models.Model):
|
|||||||
targetvalue = models.IntegerField(default=0)
|
targetvalue = models.IntegerField(default=0)
|
||||||
targettype = models.TextField(default='',max_length=200, blank=True, null=True,
|
targettype = models.TextField(default='',max_length=200, blank=True, null=True,
|
||||||
choices=targettypes)
|
choices=targettypes)
|
||||||
customtargetvaluelow = models.IntegerField(default=0)
|
targetvaluelow = models.IntegerField(default=0)
|
||||||
customtargetvaluehigh = models.IntegerField(default=0)
|
targetvaluehigh = models.IntegerField(default=0)
|
||||||
intensity = models.TextField(default='',max_length=200, blank=True, null=True,
|
intensity = models.TextField(default='',max_length=200, blank=True, null=True,
|
||||||
choices=intensitytypes)
|
choices=intensitytypes)
|
||||||
notes = models.TextField(default='',max_length=200, blank=True, null=True)
|
description = models.TextField(default='',max_length=200, blank=True, null=True)
|
||||||
color = models.TextField(default='#ddd',max_length=200)
|
color = models.TextField(default='#ddd',max_length=200)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
@@ -2437,6 +2437,19 @@ class PlannedSessionStep(models.Model):
|
|||||||
|
|
||||||
super(PlannedSessionStep, self).save(*args, **kwargs)
|
super(PlannedSessionStep, self).save(*args, **kwargs)
|
||||||
|
|
||||||
|
def asdict(self):
|
||||||
|
d = {
|
||||||
|
'wkt_step_name': self.name,
|
||||||
|
'durationType': self.durationtype,
|
||||||
|
'durationValue': self.durationvalue,
|
||||||
|
'targetValue': self.targetvalue,
|
||||||
|
'description': self.description,
|
||||||
|
'stepId': self.pk,
|
||||||
|
'intensity': self.intensity,
|
||||||
|
}
|
||||||
|
|
||||||
|
return d
|
||||||
|
|
||||||
class StepEditorForm(ModelForm):
|
class StepEditorForm(ModelForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = PlannedSessionStep
|
model = PlannedSessionStep
|
||||||
|
|||||||
@@ -31,7 +31,8 @@
|
|||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section>
|
<ul class="main-content">
|
||||||
|
<li class="grid_2 library">
|
||||||
<h2>Add new step</h2>
|
<h2>Add new step</h2>
|
||||||
<form enctype="multipart/multipart/form-data" method="post">
|
<form enctype="multipart/multipart/form-data" method="post">
|
||||||
<table>
|
<table>
|
||||||
@@ -40,7 +41,14 @@
|
|||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<input name="newstep" type="submit" value="Add to Library">
|
<input name="newstep" type="submit" value="Add to Library">
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</li>
|
||||||
|
<li class="grid_2 library">
|
||||||
|
<h2>Step Information</h2>
|
||||||
|
<div id="stepinfo">
|
||||||
|
<p>Step information</p>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
{% block scripts %}
|
{% block scripts %}
|
||||||
@@ -49,6 +57,15 @@
|
|||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
let csrftoken;
|
let csrftoken;
|
||||||
|
let steps = {};
|
||||||
|
{% for step in steps %}
|
||||||
|
steps["{{ step.id }}"] = { 'name': '{{ step.name }}' };
|
||||||
|
{% endfor %}
|
||||||
|
let descriptions = {}
|
||||||
|
{% for key, value in stepdescriptions.items %}
|
||||||
|
descriptions["{{ key }}"] = "{{ value }}"
|
||||||
|
{% endfor %}
|
||||||
|
console.log(descriptions);
|
||||||
$(document).ready(function() {
|
$(document).ready(function() {
|
||||||
csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
|
csrftoken = jQuery("[name=csrfmiddlewaretoken]").val();
|
||||||
console.log("CSRF token",csrftoken);
|
console.log("CSRF token",csrftoken);
|
||||||
@@ -122,14 +139,33 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDragOver(event) {
|
function handleMouseOver(event) {
|
||||||
if (event.preventDefault) {
|
if (event.preventDefault) {
|
||||||
event.preventDefault();
|
const id = event.target.id;
|
||||||
|
console.log(id);
|
||||||
|
var name = steps[id]['name'];
|
||||||
|
var txt = descriptions[id];
|
||||||
|
var divstring = `<p>${name}</p><p>${txt}</p>`
|
||||||
|
const div = document.getElementById("stepinfo");
|
||||||
|
div.innerHTML = divstring
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function handleMouseLeave(event) {
|
||||||
|
if (event.preventDefault) {
|
||||||
|
const div = document.getElementById("stepinfo");
|
||||||
|
div.innerHTML = '<p>Hover over a step to get details</p>'
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDragOver(event) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
function handleDragEnter(event) {
|
function handleDragEnter(event) {
|
||||||
this.classList.add('over');
|
this.classList.add('over');
|
||||||
const target = event.target;
|
const target = event.target;
|
||||||
@@ -213,6 +249,8 @@
|
|||||||
item.addEventListener('dragleave', handleDragLeave);
|
item.addEventListener('dragleave', handleDragLeave);
|
||||||
item.addEventListener('drop',noDrop);
|
item.addEventListener('drop',noDrop);
|
||||||
item.addEventListener('dragenter',noDrop);
|
item.addEventListener('dragenter',noDrop);
|
||||||
|
item.addEventListener('mouseover',handleMouseOver);
|
||||||
|
item.addEventListener('mouseleave',handleMouseLeave);
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ from rowers.views.statements import *
|
|||||||
import rowers.garmin_stuff as gs
|
import rowers.garmin_stuff as gs
|
||||||
from rowers import credits
|
from rowers import credits
|
||||||
from json.decoder import JSONDecodeError
|
from json.decoder import JSONDecodeError
|
||||||
|
from rowers.utils import step_to_string
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@@ -3013,6 +3014,40 @@ def stepadder(request, id=0):
|
|||||||
redirect_field_name=None)
|
redirect_field_name=None)
|
||||||
def stepeditor(request, id=0):
|
def stepeditor(request, id=0):
|
||||||
ps = get_object_or_404(PlannedSession, pk=id)
|
ps = get_object_or_404(PlannedSession, pk=id)
|
||||||
|
if ps.steps:
|
||||||
|
for step in ps.steps['steps']:
|
||||||
|
print(step)
|
||||||
|
durationtype = step.get('durationType','')
|
||||||
|
durationvalue = step.get('durationValue',0)
|
||||||
|
targetvalue = step.get('targetValue',0)
|
||||||
|
targettype = step.get('targetType','')
|
||||||
|
targetvaluelow = step.get('targetValueLow',0)
|
||||||
|
targetvaluehigh = step.get('targetValueHigh',0)
|
||||||
|
intensity = step.get('intensity','Active')
|
||||||
|
|
||||||
|
archived_steps = PlannedSessionStep.objects.filter(
|
||||||
|
manager = request.user,
|
||||||
|
durationtype = durationtype,
|
||||||
|
durationvalue = durationvalue,
|
||||||
|
targetvalue = targetvalue,
|
||||||
|
targettype = targettype,
|
||||||
|
targetvaluelow = targetvaluelow,
|
||||||
|
targetvaluehigh = targetvaluehigh,
|
||||||
|
intensity = intensity,
|
||||||
|
).count()
|
||||||
|
if not archived_steps and durationvalue != 0:
|
||||||
|
s = PlannedSessionStep(
|
||||||
|
manager = request.user,
|
||||||
|
durationtype = durationtype,
|
||||||
|
durationvalue = durationvalue,
|
||||||
|
targetvalue = targetvalue,
|
||||||
|
targettype = targettype,
|
||||||
|
targetvaluelow = targetvaluelow,
|
||||||
|
targetvaluehigh = targetvaluehigh,
|
||||||
|
intensity = intensity,
|
||||||
|
name = step.get('wkt_step_name','Step')
|
||||||
|
)
|
||||||
|
s.save()
|
||||||
ps.steps = {}
|
ps.steps = {}
|
||||||
|
|
||||||
|
|
||||||
@@ -3028,9 +3063,20 @@ def stepeditor(request, id=0):
|
|||||||
|
|
||||||
steps = PlannedSessionStep.objects.filter(manager=request.user)
|
steps = PlannedSessionStep.objects.filter(manager=request.user)
|
||||||
|
|
||||||
|
|
||||||
|
stepdescriptions = {}
|
||||||
|
|
||||||
|
for step in steps:
|
||||||
|
stepdescriptions[step.id] = step_to_string(step.asdict(), short=False)[0]
|
||||||
|
|
||||||
|
print(stepdescriptions)
|
||||||
|
print(steps)
|
||||||
|
|
||||||
|
|
||||||
return render(request, 'stepeditor.html',
|
return render(request, 'stepeditor.html',
|
||||||
{
|
{
|
||||||
'steps':steps,
|
'steps':steps,
|
||||||
|
'stepdescriptions': stepdescriptions,
|
||||||
'form':form,
|
'form':form,
|
||||||
'ps':ps,
|
'ps':ps,
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user