Added DHing for someone
This commit is contained in:
@@ -10,10 +10,7 @@ class PositioningForm(forms.ModelForm):
|
|||||||
class Meta:
|
class Meta:
|
||||||
model = Positioning
|
model = Positioning
|
||||||
widgets = {
|
widgets = {
|
||||||
# 'order': forms.NumberInput(attrs={'class':'w-100'}),
|
'position': forms.Select(attrs={'class': 'form-control form-control-sm'})
|
||||||
# 'player': forms.Select(attrs={'class': 'form-control'}),
|
|
||||||
'position': forms.Select(attrs={'class': 'form-control form-control-sm'}),
|
|
||||||
# 'ordering': forms.NumberInput(attrs={'class':'w-100'})
|
|
||||||
}
|
}
|
||||||
exclude = ()
|
exclude = ()
|
||||||
|
|
||||||
@@ -25,11 +22,3 @@ PositioningFormSet = modelformset_factory(
|
|||||||
extra=0
|
extra=0
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# class PositioningFormSet(modelformset_factory):
|
|
||||||
# class Meta:
|
|
||||||
# model = Positioning
|
|
||||||
# fields = ['player', 'position', 'order']
|
|
||||||
# widgets = {
|
|
||||||
# 'order':forms.NumberInput(attrs={'style':'width:6ch'})
|
|
||||||
# }
|
|
||||||
|
|||||||
@@ -46,9 +46,20 @@
|
|||||||
<script id="sortable">
|
<script id="sortable">
|
||||||
function refresh_lineup_order (){
|
function refresh_lineup_order (){
|
||||||
var player_rows = document.getElementById('lineup').querySelectorAll('tr')
|
var player_rows = document.getElementById('lineup').querySelectorAll('tr')
|
||||||
|
var has_dh = false
|
||||||
|
|
||||||
for (let i = 0; i < player_rows.length; i++) {
|
for (let i = 0; i < player_rows.length; i++) {
|
||||||
player_rows[i].dataset.order = i + 1
|
if (player_rows[i].dataset.order == 0) {
|
||||||
var player_order = player_rows[i].querySelector('[id^="player-order"]')
|
has_dh = true
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
if (has_dh) {
|
||||||
|
player_rows[i].dataset.order = i
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
player_rows[i].dataset.order = i+1
|
||||||
|
}
|
||||||
|
var player_order = player_rows[i].querySelector('[id^="player-order-button"]')
|
||||||
var form_element_order = player_rows[i].querySelector('[id$="order"]')
|
var form_element_order = player_rows[i].querySelector('[id$="order"]')
|
||||||
player_order.innerText = parseInt(player_rows[i].dataset.order)
|
player_order.innerText = parseInt(player_rows[i].dataset.order)
|
||||||
form_element_order.value = parseInt(player_rows[i].dataset.order)
|
form_element_order.value = parseInt(player_rows[i].dataset.order)
|
||||||
@@ -64,19 +75,18 @@
|
|||||||
pull:true
|
pull:true
|
||||||
},
|
},
|
||||||
onAdd: function (/**Event*/evt) {
|
onAdd: function (/**Event*/evt) {
|
||||||
console.log('added to lineup')
|
|
||||||
var itemEl = evt.item; // dragged HTMLElement
|
var itemEl = evt.item; // dragged HTMLElement
|
||||||
var player_id = itemEl.dataset.playerId
|
var player_id = itemEl.dataset.playerId
|
||||||
{#itemEl.order.set(99)#}
|
|
||||||
{#var statline = document.querySelector('#player-statline-'+player_id);#}
|
|
||||||
console.log(itemEl)
|
console.log(itemEl)
|
||||||
var form_element_order =itemEl.querySelector('[id$="order"]')
|
var form_element_order =itemEl.querySelector('[id$="order"]')
|
||||||
var player_order = itemEl.querySelector('[id^="player-order"]')
|
var player_order = itemEl.querySelector('[id^="player-order"]')
|
||||||
var player_available =itemEl.querySelector('[id^="player-available"]')
|
var player_available =itemEl.querySelector('[id^="player-available"]')
|
||||||
|
var player_order_button =itemEl.querySelector('[id^="player-order-button"]')
|
||||||
|
console.log(player_order.parentElement.dataset)
|
||||||
|
toggle_in_lineup(player_order_button)
|
||||||
|
player_order.parentElement.dataset.order = evt.newIndex
|
||||||
refresh_lineup_order()
|
refresh_lineup_order()
|
||||||
player_available.parentElement.style.display="none"
|
player_available.parentElement.style.display="none"
|
||||||
form_element_order.value = evt.newIndex + 1
|
|
||||||
player_order.innerHTML = evt.newIndex + 1
|
|
||||||
player_order.style.display="table-cell"
|
player_order.style.display="table-cell"
|
||||||
evt.to; // target list
|
evt.to; // target list
|
||||||
evt.from; // previous list
|
evt.from; // previous list
|
||||||
@@ -91,11 +101,6 @@
|
|||||||
console.log('update to lineup')
|
console.log('update to lineup')
|
||||||
var itemEl = evt.item; // dragged HTMLElement
|
var itemEl = evt.item; // dragged HTMLElement
|
||||||
refresh_lineup_order()
|
refresh_lineup_order()
|
||||||
|
|
||||||
{#player_available.parentElement.style.display="none"#}
|
|
||||||
{#form_element_order.value = evt.newIndex - 4#}
|
|
||||||
{#player_order.innerHTML = evt.newIndex - 4#}
|
|
||||||
{#player_order.style.display="block"#}
|
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
var bench = new Sortable.create(
|
var bench = new Sortable.create(
|
||||||
@@ -116,26 +121,29 @@
|
|||||||
var player_order = itemEl.querySelector('[id^="player-order"]')
|
var player_order = itemEl.querySelector('[id^="player-order"]')
|
||||||
var player_available =itemEl.querySelector('[id^="player-available"]')
|
var player_available =itemEl.querySelector('[id^="player-available"]')
|
||||||
player_available.parentElement.style.display="table-cell"
|
player_available.parentElement.style.display="table-cell"
|
||||||
form_element_order.value = evt.newIndex - 4
|
form_element_order.value = 0
|
||||||
player_order.innerHTML = evt.newIndex - 4
|
player_order.innerHTML = 1
|
||||||
player_order.style.display="none"
|
player_order.style.display="none"
|
||||||
evt.to; // target list
|
|
||||||
evt.from; // previous list
|
|
||||||
evt.oldIndex; // element's old index within old parent
|
|
||||||
evt.newIndex; // element's new index within new parent
|
|
||||||
evt.oldDraggableIndex; // element's old index within old parent, only counting draggable elements
|
|
||||||
evt.newDraggableIndex; // element's new index within new parent, only counting draggable elements
|
|
||||||
evt.clone // the clone element
|
|
||||||
evt.pullMode; // when item is in another sortable: `"clone"` if cloning, `true` if moving
|
|
||||||
var player_id = itemEl.dataset.playerId
|
var player_id = itemEl.dataset.playerId
|
||||||
var statline = document.querySelector('#player-statline-'+player_id);
|
|
||||||
refresh_lineup_order()
|
refresh_lineup_order()
|
||||||
{#console.log(itemEl)#}
|
|
||||||
{#console.log(player_id)#}
|
|
||||||
{#console.log(statline)#}
|
|
||||||
{#statline.style.visibility='visible'#}
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
function toggle_in_lineup(order_button){
|
||||||
|
var player_row = order_button.parentNode.parentNode
|
||||||
|
if (player_row.dataset.order == 0) {
|
||||||
|
order_button.innerText = "1"
|
||||||
|
order_button.classList.add("btn-light")
|
||||||
|
order_button.classList.remove("btn-dark")
|
||||||
|
player_row.dataset.order = 1
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
order_button.innerText = "D"
|
||||||
|
order_button.classList.remove("btn-light")
|
||||||
|
order_button.classList.add("btn-dark")
|
||||||
|
player_row.dataset.order = 0
|
||||||
|
}
|
||||||
|
refresh_lineup_order()
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,21 @@
|
|||||||
id="player-order-{{ form.instance.player.id }}"
|
id="player-order-{{ form.instance.player.id }}"
|
||||||
style="display:{{ order_display }};">
|
style="display:{{ order_display }};">
|
||||||
{% if form.order.value %}
|
{% if form.order.value %}
|
||||||
{{ form.order.value }}
|
<button type="button"
|
||||||
|
class="btn btn-light"
|
||||||
|
id="player-order-button-{{ form.instance.player.id }}"
|
||||||
|
onclick="toggle_in_lineup(this)"
|
||||||
|
>
|
||||||
|
{{ form.order.value }}
|
||||||
|
</button>
|
||||||
|
{% elif form.order.value == 0 %}
|
||||||
|
<button type="button"
|
||||||
|
class="btn btn-dark"
|
||||||
|
id="player-order-button-{{ form.instance.player.id }}"
|
||||||
|
onclick="toggle_in_lineup(this)"
|
||||||
|
>
|
||||||
|
D
|
||||||
|
</button>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</th>
|
</th>
|
||||||
<th>
|
<th>
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ def edit(request, event_id):
|
|||||||
# process the data in form.cleaned_data as required
|
# process the data in form.cleaned_data as required
|
||||||
# ...
|
# ...
|
||||||
# redirect to a new URL:
|
# redirect to a new URL:
|
||||||
# form.cleaned_data.pop('id')
|
|
||||||
|
|
||||||
if isinstance(form.cleaned_data['id'], Positioning):
|
if isinstance(form.cleaned_data['id'], Positioning):
|
||||||
positioning_id = form.cleaned_data.pop('id').id #FIXME this is a workaround, not sure why it is necessary
|
positioning_id = form.cleaned_data.pop('id').id #FIXME this is a workaround, not sure why it is necessary
|
||||||
@@ -27,7 +26,9 @@ def edit(request, event_id):
|
|||||||
else:
|
else:
|
||||||
positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id)
|
positioning = Positioning.objects.create(**form.cleaned_data, event_id=event_id)
|
||||||
did_create = True
|
did_create = True
|
||||||
return render(request, 'success.html', {'call_back':'edit lineup','id':event_id}, status=200)
|
else:
|
||||||
|
pass
|
||||||
|
return render(request, 'success.html', {'call_back':'edit lineup','id':event_id, 'errors':[error for error in formset.errors if error]}, status=200)
|
||||||
# return render(request, 'success.html', {'call_back':'schedule'})
|
# return render(request, 'success.html', {'call_back':'schedule'})
|
||||||
event = Event.objects.get(id=event_id)
|
event = Event.objects.get(id=event_id)
|
||||||
players = Player.objects.all().prefetch_related('availability_set', 'statline_set', 'positioning_set')
|
players = Player.objects.all().prefetch_related('availability_set', 'statline_set', 'positioning_set')
|
||||||
|
|||||||
@@ -10,5 +10,8 @@
|
|||||||
</head>
|
</head>
|
||||||
|
|
||||||
<span class="text-success">Success!</span> <span class="text-muted">Redirecting...</span>
|
<span class="text-success">Success!</span> <span class="text-muted">Redirecting...</span>
|
||||||
|
{% for error in errors %}
|
||||||
|
error
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
Reference in New Issue
Block a user