Skip to content

Commit

Permalink
Merge 7ce194b into 46a2e1e
Browse files Browse the repository at this point in the history
  • Loading branch information
dondrzzy committed Jun 19, 2018
2 parents 46a2e1e + 7ce194b commit 50a98cd
Show file tree
Hide file tree
Showing 21 changed files with 318 additions and 59 deletions.
3 changes: 2 additions & 1 deletion tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,8 @@ def load_fixtures(context, settings_path=None):
call_command("loaddata", path + "gym_config.json")

# Manager
# path = os.path.join(current_dir, 'manager', 'fixtures/')
path = os.path.join(current_dir, 'wger', 'manager', 'fixtures/')
call_command("loaddata", path + "categories.json")

# Exercises
path = os.path.join(current_dir, 'wger', 'exercises', 'fixtures/')
Expand Down
92 changes: 90 additions & 2 deletions wger/core/static/js/wger-core.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,20 @@ function setProfileField(field, newValue) {
});
}

function changeWorkoutType (event) {

if (event.value === '1') {
$('#id_sets').val(4);
$('#id_sets_value').html($('#id_sets').val());
updateAllExerciseFormset();
} else {
$('#id_sets').val(1);
$('#id_sets_value').html($('#id_sets').val());
updateAllExerciseFormset();
}
}


/*
Get a single field from the user's profile.
Synchronous request, use sparingly!
Expand Down Expand Up @@ -521,8 +535,13 @@ function wgerInitEditSet() {

// Slider to set the number of sets
$('#id_sets').on('change', function () {
updateAllExerciseFormset();
$('#id_sets_value').html($('#id_sets').val());
if ($('#workout-type').val() =='2'){
$('#id_sets').val(1);
$('#id_sets_value').html($('#id_sets').val());
}else{
updateAllExerciseFormset();
$('#id_sets_value').html($('#id_sets').val());
}
});

/*
Expand Down Expand Up @@ -697,4 +716,73 @@ $(document).ready(function () {
'/' + token;
window.location.href = targetUrl;
});

// Handle the add entry event
// Handle the add entry event
$('.addEntry').on('click', function (event) {
event.preventDefault();
var $formset;
// get associated exercise
var entryMatches = $(this).closest('.workout-log-table').find('.exercise-id');
var exerciseId = entryMatches[0].value;
// generate id from number of actual entries
var generatedId = $(this).closest('#workout-wrap').find('.actual').length
// append a new entry
var name = 'name-'+generatedId
var entry = `<td>
<div>
<input class="form-control narrow-input" id="id_form-`+ generatedId +`-reps" name="form-`+ generatedId +`-reps" type="number">
<span class="help-block">
</span>
</div>
</td>
<td>
<div>
<select class="form-control narrow-input" id="id_form-`+ generatedId +`-repetition_unit" name="form-`+ generatedId +`-repetition_unit">
<option value="">---------</option>
<option value="6">Kilometers</option>
<option value="5">Miles</option>
<option value="4">Minutes</option>
<option value="1" selected="selected">Repetitions</option>
<option value="3">Seconds</option>
<option value="2">Until Failure</option>
</select>
<span class="help-block">
</span>
</div>
</td>
<td>
<div>
<input class="form-control narrow-input" id="id_form-`+ generatedId +`-weight" name="form-`+ generatedId +`-weight" step="any" type="number" value="0">
<span class="help-block">
</span>
</div>
</td>
<td>
<div>
<select class="form-control narrow-input" id="id_form-`+ generatedId +`-weight_unit" name="form-`+ generatedId +`-weight_unit">
<option value="">---------</option>
<option value="3">Body Weight</option>
<option value="5">Kilometers Per Hour</option>
<option value="6">Miles Per Hour</option>
<option value="4">Plates</option>
<option value="1" selected="selected">kg</option>
<option value="2">lb</option>
</select>
<span class="help-block">
</span>
</div>
</td>`
$formset = $(this).closest('.workout-log-table').find('.form-body')
$formset.append('<tr class=\'actual\'>'+ entry +'</tr>');
$formset.trigger('create')
// create associated exercise input at the new created set
var setWraps = $(this).closest('.workout-log-table').find('.actual')
$(setWraps[setWraps.length-1]).append("<input type='hidden' name="+ name +" class='exercise-id' value ="+ exerciseId +">")
$(this).closest('#workout-wrap').find("#max-sets").val(generatedId+1)
});
});
2 changes: 1 addition & 1 deletion wger/core/templates/mobile/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@
}

// Init the modal dialog for editing forms
wgerFormModalDialog();
// wgerFormModalDialog();

// Check for RO-access before allowing sharing
wgerToggleReadOnlyAccess();
Expand Down
47 changes: 26 additions & 21 deletions wger/core/templates/tags/render_day.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,33 +8,33 @@
wgerSetupSortable();

// Init the modal dialog to edit the exercise
wgerFormModalDialog();
// wgerFormModalDialog();

})
</script>

<table class="table table-bordered workout-table" id="table-day-{{ day.obj.id }}" data-id="{{ day.obj.id }}">
<thead>
<tr id="day-{{ day.obj.id }}">
<th colspan="2" style="background: none repeat scroll 0% 0% #F5F5F5;">
<thead>
<tr id="day-{{ day.obj.id }}">
<th colspan="2" style="background: none repeat scroll 0% 0% #F5F5F5;">

{{ day.days_of_week.text }} – {{ day.obj.description }}
{% if editable %}
<span class="editoptions" style="float: right;">
<a href="{% url 'manager:day:delete' day.obj.id %}"
title="{% trans 'Delete' %}">
<span class="{% fa_class 'trash' %}"></span></a>
<a href="{% url 'manager:day:edit' day.obj.id %}"
title="{% trans 'Edit' %}"
class="wger-modal-dialog">
<span class="{% fa_class 'pencil-square-o' %}"></span></a>
<a href="{% url 'manager:day:log' day.obj.id %}"
title="{% trans 'Add weight log to this day' %}">
<span class="{% fa_class 'line-chart' %}"></span></a>
</span>
{% endif %}
</th>
</tr>
{{ day.days_of_week.text }} – {{ day.obj.description }}
{% if editable %}
<span class="editoptions" style="float: right;">
<a href="{% url 'manager:day:delete' day.obj.id %}"
title="{% trans 'Delete' %}">
<span class="{% fa_class 'trash' %}"></span></a>
<a href="{% url 'manager:day:edit' day.obj.id %}"
title="{% trans 'Edit' %}"
class="wger-modal-dialog">
<span class="{% fa_class 'pencil-square-o' %}"></span></a>
<a href="{% url 'manager:day:log' day.obj.id %}"
title="{% trans 'Add weight log to this day' %}">
<span class="{% fa_class 'line-chart' %}"></span></a>
</span>
{% endif %}
</th>
</tr>
</thead>
<tbody>
{% for set in day.set_list %}
Expand Down Expand Up @@ -91,6 +91,11 @@ <h4 class="media-heading">
{{ exercise.obj.name }}
</h4>
<p>{{exercise.setting_text}}</p>
{% if exercise.setting_obj_list %}
<p>
{{ set.category }}
</p>
{% endif %}

{% if editable %}
{% if not exercise.setting_list %}
Expand Down
1 change: 1 addition & 0 deletions wger/core/tests/base_testcase.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ class BaseTestCase(object):
fixtures = ('days_of_week',
'gym_config',
'groups',
'test-categories',
'setting_repetition_units',
'setting_weight_units',
'test-languages',
Expand Down
2 changes: 1 addition & 1 deletion wger/manager/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,5 @@
admin.site.register(manager_models.Day)
admin.site.register(manager_models.WorkoutLog)
admin.site.register(UserProfile)

admin.site.register(manager_models.WorkoutType)
admin.site.register(manager_models.Setting)
16 changes: 16 additions & 0 deletions wger/manager/fixtures/categories.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[
{
"pk": 1,
"model": "manager.WorkoutType",
"fields": {
"category": "Default"
}
},
{
"pk": 2,
"model": "manager.WorkoutType",
"fields": {
"category": "Dropset"
}
}
]
16 changes: 16 additions & 0 deletions wger/manager/fixtures/test-categories.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[
{
"pk": 1,
"model": "manager.WorkoutType",
"fields": {
"category": "Default"
}
},
{
"pk": 2,
"model": "manager.WorkoutType",
"fields": {
"category": "Dropset"
}
}
]
9 changes: 6 additions & 3 deletions wger/manager/fixtures/test-workout-data.json
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,8 @@
"weight_unit_id": 1,
"weight": null,
"order": 1,
"exercise": 1
"exercise": 1,
"category": 1
}
},
{
Expand All @@ -148,7 +149,8 @@
"weight_unit_id": 1,
"weight": 15,
"order": 1,
"exercise": 2
"exercise": 2,
"category": 1
}
},
{
Expand All @@ -162,7 +164,8 @@
"weight_unit_id": 1,
"weight": null,
"order": 1,
"exercise": 2
"exercise": 2,
"category": 1
}
},

Expand Down
34 changes: 34 additions & 0 deletions wger/manager/migrations/0010_auto_20180619_2110.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.9.13 on 2018-06-19 18:10
from __future__ import unicode_literals

import django.core.validators
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('manager', '0009_merge'),
]

operations = [
migrations.CreateModel(
name='WorkoutType',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('category', models.CharField(choices=[(b'1', 'Default'), (b'2', 'Dropset')], max_length=10)),
],
),
migrations.AlterField(
model_name='setting',
name='reps',
field=models.IntegerField(null=True, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(600)], verbose_name='Amount'),
),
migrations.AddField(
model_name='setting',
name='category',
field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='manager.WorkoutType'),
),
]
28 changes: 25 additions & 3 deletions wger/manager/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -438,12 +438,13 @@ def get_canonical_representation(self):
muscles_back = []
muscles_front_secondary = []
muscles_back_secondary = []

category = ''
for set_obj in self.set_set.select_related():
exercise_tmp = []
has_setting_tmp = True
for exercise in set_obj.exercises.select_related():
setting_tmp = []


# Muscles for this set
for muscle in exercise.muscles.all():
Expand All @@ -461,6 +462,7 @@ def get_canonical_representation(self):
for setting in Setting.objects.filter(set=set_obj,
exercise=exercise).order_by('order', 'id'):
setting_tmp.append(setting)
category = setting.category

# "Smart" textual representation
setting_text, setting_list, weight_list, reps_list, repetition_units, weight_units \
Expand Down Expand Up @@ -512,6 +514,7 @@ def get_canonical_representation(self):
exercise['repetition_units'] = repetition_units

canonical_repr.append({'obj': set_obj,
'category': category,
'exercise_list': exercise_tmp,
'is_superset': True if len(exercise_tmp) > 1 else False,
'has_settings': has_setting_tmp,
Expand All @@ -526,7 +529,7 @@ def get_canonical_representation(self):
tmp_days_of_week = []
for day_of_week in self.day.select_related():
tmp_days_of_week.append(day_of_week)

return {'obj': self,
'days_of_week': {
'text': u', '.join([six.text_type(_(i.day_of_week))
Expand Down Expand Up @@ -593,6 +596,23 @@ def delete(self, *args, **kwargs):
super(Set, self).delete(*args, **kwargs)


@python_2_unicode_compatible
class WorkoutType(models.Model):
'''
Settings for an exercise (weight, reps, etc.)
'''
TYPE_DEFAULT = '1'
TYPE_DROPSET = '2'
TYPES = (
(TYPE_DEFAULT, _('Default')),
(TYPE_DROPSET, _('Dropset'))
)

category = models.CharField(max_length=10,
choices=TYPES)

def __str__(self):
return self.category
@python_2_unicode_compatible
class Setting(models.Model):
'''
Expand All @@ -605,12 +625,14 @@ class Setting(models.Model):
repetition_unit = models.ForeignKey(RepetitionUnit,
verbose_name=_('Unit'),
default=1)

category = models.ForeignKey(WorkoutType, on_delete=models.CASCADE, default=1)
'''
The repetition unit of a set. This can be e.g. a repetition, a minute, etc.
'''

reps = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(600)],
verbose_name=_('Amount'))
verbose_name=_('Amount'), null=True)
'''
Amount of repetitions, minutes, etc. for a set.
Expand Down
Loading

0 comments on commit 50a98cd

Please sign in to comment.