mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-10 21:10:17 +02:00
Adding Absolute Timers to base timerboard
This commit is contained in:
parent
6f4dffe930
commit
951c4135c2
30
allianceauth/static/allianceauth/js/timerboard.js
Normal file
30
allianceauth/static/allianceauth/js/timerboard.js
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
$(document).ready(() => {
|
||||||
|
'use strict';
|
||||||
|
const inputAbsoluteTime = $('input#id_absolute_time');
|
||||||
|
const inputCountdown = $('#id_days_left, #id_hours_left, #id_minutes_left');
|
||||||
|
|
||||||
|
//inputAbsoluteTime.prop('disabled', true);
|
||||||
|
inputAbsoluteTime.parent().hide()
|
||||||
|
inputAbsoluteTime.parent().prev('label').hide()
|
||||||
|
inputCountdown.prop('required', true);
|
||||||
|
|
||||||
|
$('input#id_absolute_checkbox').change(function () {
|
||||||
|
if ($(this).prop("checked")) {
|
||||||
|
// check box enabled
|
||||||
|
inputAbsoluteTime.parent().show()
|
||||||
|
inputAbsoluteTime.parent().prev('label').show()
|
||||||
|
inputCountdown.parent().hide()
|
||||||
|
inputCountdown.parent().prev('label').hide()
|
||||||
|
inputAbsoluteTime.prop('required', true);
|
||||||
|
inputCountdown.prop('required', false);
|
||||||
|
} else {
|
||||||
|
// Checkbox is not checked
|
||||||
|
inputAbsoluteTime.parent().hide()
|
||||||
|
inputAbsoluteTime.parent().prev('label').hide()
|
||||||
|
inputCountdown.parent().show()
|
||||||
|
inputCountdown.parent().prev('label').show()
|
||||||
|
inputAbsoluteTime.prop('required', false);
|
||||||
|
inputCountdown.prop('required', true);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
3
allianceauth/templates/bundles/timerboard-js.html
Normal file
3
allianceauth/templates/bundles/timerboard-js.html
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{% load static %}
|
||||||
|
|
||||||
|
<script src="{% static 'allianceauth/js/timerboard.js' %}"></script>
|
@ -61,14 +61,17 @@ class TimerForm(forms.ModelForm):
|
|||||||
structure = forms.ChoiceField(choices=structure_choices, required=True, label=_("Structure Type"))
|
structure = forms.ChoiceField(choices=structure_choices, required=True, label=_("Structure Type"))
|
||||||
timer_type = forms.ChoiceField(choices=TimerType.choices, label=_("Timer Type"))
|
timer_type = forms.ChoiceField(choices=TimerType.choices, label=_("Timer Type"))
|
||||||
objective = forms.ChoiceField(choices=objective_choices, required=True, label=_("Objective"))
|
objective = forms.ChoiceField(choices=objective_choices, required=True, label=_("Objective"))
|
||||||
days_left = forms.IntegerField(required=True, label=_("Days Remaining"), validators=[MinValueValidator(0)])
|
absolute_checkbox = forms.BooleanField(label=_("Absolute Timer"), required=False, initial=False)
|
||||||
hours_left = forms.IntegerField(required=True, label=_("Hours Remaining"),
|
absolute_time = forms.CharField(required=False,label=_("Date and Time"))
|
||||||
|
days_left = forms.IntegerField(required=False, label=_("Days Remaining"), validators=[MinValueValidator(0)])
|
||||||
|
hours_left = forms.IntegerField(required=False, label=_("Hours Remaining"),
|
||||||
validators=[MinValueValidator(0), MaxValueValidator(23)])
|
validators=[MinValueValidator(0), MaxValueValidator(23)])
|
||||||
minutes_left = forms.IntegerField(required=True, label=_("Minutes Remaining"),
|
minutes_left = forms.IntegerField(required=False, label=_("Minutes Remaining"),
|
||||||
validators=[MinValueValidator(0), MaxValueValidator(59)])
|
validators=[MinValueValidator(0), MaxValueValidator(59)])
|
||||||
important = forms.BooleanField(label=_("Important"), required=False)
|
important = forms.BooleanField(label=_("Important"), required=False)
|
||||||
corp_timer = forms.BooleanField(label=_("Corp-Restricted"), required=False)
|
corp_timer = forms.BooleanField(label=_("Corp-Restricted"), required=False)
|
||||||
|
|
||||||
|
|
||||||
def save(self, commit=True):
|
def save(self, commit=True):
|
||||||
timer = super().save(commit=False)
|
timer = super().save(commit=False)
|
||||||
|
|
||||||
@ -77,18 +80,30 @@ class TimerForm(forms.ModelForm):
|
|||||||
corporation = character.corporation
|
corporation = character.corporation
|
||||||
logger.debug("Determined timer save request on behalf "
|
logger.debug("Determined timer save request on behalf "
|
||||||
"of character {} corporation {}".format(character, corporation))
|
"of character {} corporation {}".format(character, corporation))
|
||||||
# calculate future time
|
|
||||||
future_time = datetime.timedelta(days=self.cleaned_data['days_left'], hours=self.cleaned_data['hours_left'],
|
days_left = self.cleaned_data['days_left']
|
||||||
minutes=self.cleaned_data['minutes_left'])
|
hours_left = self.cleaned_data['hours_left']
|
||||||
|
minutes_left = self.cleaned_data['minutes_left']
|
||||||
|
absolute_time = self.cleaned_data['absolute_time']
|
||||||
|
|
||||||
|
if days_left or hours_left or minutes_left:
|
||||||
|
# Calculate future time
|
||||||
|
future_time = datetime.timedelta(days=days_left, hours=hours_left, minutes=minutes_left)
|
||||||
current_time = timezone.now()
|
current_time = timezone.now()
|
||||||
eve_time = current_time + future_time
|
eve_time = current_time + future_time
|
||||||
logger.debug(
|
logger.debug(f"Determined timer eve time is {eve_time} - current time {current_time}, adding {future_time}")
|
||||||
f"Determined timer eve time is {eve_time} - current time {current_time}, adding {future_time}")
|
elif absolute_time:
|
||||||
|
# Use absolute time
|
||||||
|
eve_time = absolute_time
|
||||||
|
else:
|
||||||
|
raise ValueError("Either future time or absolute time must be provided.")
|
||||||
|
|
||||||
timer.eve_time = eve_time
|
timer.eve_time = eve_time
|
||||||
timer.eve_character = character
|
timer.eve_character = character
|
||||||
timer.eve_corp = corporation
|
timer.eve_corp = corporation
|
||||||
timer.user = self.user
|
timer.user = self.user
|
||||||
|
|
||||||
if commit:
|
if commit:
|
||||||
timer.save()
|
timer.save()
|
||||||
|
|
||||||
return timer
|
return timer
|
||||||
|
@ -30,3 +30,21 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
||||||
|
{% block extra_javascript %}
|
||||||
|
{% include 'bundles/jquery-datetimepicker-js.html' %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_script %}
|
||||||
|
$('#id_start').datetimepicker({
|
||||||
|
setlocale: '{{ LANGUAGE_CODE }}',
|
||||||
|
{% if NIGHT_MODE %}
|
||||||
|
theme: 'dark',
|
||||||
|
{% else %}
|
||||||
|
theme: 'default',
|
||||||
|
{% endif %}
|
||||||
|
mask: true,
|
||||||
|
format: 'Y-m-d H:i',
|
||||||
|
minDate: 0
|
||||||
|
});
|
||||||
|
{% endblock extra_script %}
|
||||||
|
@ -12,3 +12,19 @@
|
|||||||
{% block submit_button_text %}
|
{% block submit_button_text %}
|
||||||
{% translate "Create Timer" %}
|
{% translate "Create Timer" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_javascript %}
|
||||||
|
{% include 'bundles/timerboard-js.html' %}
|
||||||
|
{% include 'bundles/jquery-datetimepicker-js.html' %}
|
||||||
|
{% include 'bundles/jquery-datetimepicker-css.html' %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_script %}
|
||||||
|
$('input#id_absolute_time').datetimepicker({
|
||||||
|
setlocale: '{{ LANGUAGE_CODE }}',
|
||||||
|
theme: {% if NIGHT_MODE %}'dark'{% else %}'default'{% endif %},
|
||||||
|
format: 'Y-m-d H:i',
|
||||||
|
minDate: 0,
|
||||||
|
defaultDate: null
|
||||||
|
});
|
||||||
|
{% endblock extra_script %}
|
||||||
|
@ -12,3 +12,23 @@
|
|||||||
{% block submit_button_text %}
|
{% block submit_button_text %}
|
||||||
{% translate "Update Structure Timer" %}
|
{% translate "Update Structure Timer" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_javascript %}
|
||||||
|
{% include 'bundles/timerboard-js.html' %}
|
||||||
|
{% include 'bundles/jquery-datetimepicker-js.html' %}
|
||||||
|
{% include 'bundles/jquery-datetimepicker-css.html' %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block extra_script %}
|
||||||
|
$('input#id_absolute_time').datetimepicker({
|
||||||
|
setlocale: '{{ LANGUAGE_CODE }}',
|
||||||
|
{% if NIGHT_MODE %}
|
||||||
|
theme: 'dark',
|
||||||
|
{% else %}
|
||||||
|
theme: 'default',
|
||||||
|
{% endif %}
|
||||||
|
mask: true,
|
||||||
|
format: 'Y-m-d H:i',
|
||||||
|
defaultDate: null
|
||||||
|
});
|
||||||
|
{% endblock extra_script %}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user