Move js out of attribution template

This commit is contained in:
Claude Paroz 2012-11-30 09:33:48 +01:00
parent 20c7637321
commit 66f941ed61
3 changed files with 184 additions and 200 deletions

View file

@ -69,23 +69,8 @@ STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '@2a-1%9w4rmw#(mi*3jlb9!9#kj0a8_g)6$4nv8zt0h(9r(wb%'
# Set it in local_settings.py.
SECRET_KEY = ''
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',

View file

@ -0,0 +1,180 @@
function update_periods(section_id) {
$.getJSON('/section/' + section_id + '/periods/', function(data) {
var sel = $('#period_select');
sel.append($("<option />").val('').text('-------'));
if (data.length > 0) {
$.each(data, function() {
sel.append($("<option />").val(this[0]).text(this[1]));
})
}
update_students('');
update_corporations('');
update_trainings('');
});
}
function update_class_filter(section_id) {
$('#student_filter').empty();
$.getJSON('/section/' + section_id + '/classes/', function(data) {
var sel = $('#student_filter');
sel.append($("<option />").val('').text('Toutes les classes'));
if (data.length > 0) {
$.each(data, function() {
sel.append($("<option />").val(this[1]).text(this[1]));
})
}
});
}
function update_students(period_id) {
$('#student_select').empty();
$('#student_detail').html('').removeClass("filled");
current_student = null;
$('input#valid_training').hide();
if (period_id == '') return;
$.getJSON('/period/' + period_id + '/students/', function(data) {
var sel = $('#student_select');
var options = [];
$.each(data, function() {
if (this.training_id == null) {
options.push(this);
sel.append($("<option />").val(this.id).text(this.name + ' (' + this.klass + ')'));
}
});
// Keep options as data to enable filtering
sel.data('options', options);
$('div#student_total').html(options.length + " étudiant-e-s").data('num', options.length);
});
}
function update_corporations(period_id) {
$('#corp_select').empty();
$('#corp_detail').html('').removeClass("filled");
current_avail = null;
$('input#valid_training').hide();
if (period_id == '') return;
$.getJSON('/period/' + period_id + '/corporations/', function(data) {
var sel = $('#corp_select');
var domains = [];
var options = [];
$('#corp_filter').empty().append($("<option />").val('').text('Tous les domaines'));
$.each(data, function() {
if (this.free) {
options.push(this);
sel.append($("<option />").val(this.id).text(this.corp_name));
}
if (domains.indexOf(this.domain) == -1) {
domains.push(this.domain);
$('#corp_filter').append($("<option />").val(this.domain).text(this.domain));
}
});
sel.data('options', options);
$('div#corp_total').html(options.length + " disponibilités").data('num', options.length);
});
}
function update_trainings(period_id) {
if (period_id == '') $('ul#training_list').html('');
else $('ul#training_list').load('/training/by_period/' + period_id + '/', function() {
$('img.delete_training').click(function() {
if (!confirm("Voulez-vous vraiment supprimer ce stage ?")) return;
var li = $(this).parents('li');
$.post('/training/del/',
{pk: li.attr('id').split('_')[1],
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val()}, function() {
li.remove();
// dispatch student and corp in their listings
update_students($('#period_select').val());
update_corporations($('#period_select').val());
});
});
});
}
$(document).ready(function() {
$('#section_select').change(function(ev) {
// Update period list when section is modified
$('#period_select').empty();
update_periods($(this).val());
update_class_filter($(this).val());
});
$('#period_select').change(function(ev) {
// Update student/corporation list when period is modified
update_students($(this).val());
update_corporations($(this).val());
update_trainings($(this).val());
});
$('#student_filter').change(function(ev) {
var sel = $('#student_select');
var options = sel.data('options');
var filter_val = $(this).val();
sel.empty();
$.each(options, function(i) {
var option = options[i];
if (option.klass == filter_val || filter_val == '') {
sel.append($("<option />").val(option.id).text(option.name + ' (' + option.klass + ')'));
}
});
});
$('#student_select').change(function(ev) {
$('#student_detail').load('/student/' + $(this).val() + '/summary/').addClass("filled");
current_student = $(this).val();
if (current_avail !== null) $('input#valid_training').show()
});
$('#corp_filter').change(function(ev) {
var sel = $('#corp_select');
var options = sel.data('options');
var filter_val = $(this).val();
sel.empty();
$.each(options, function(i) {
var option = options[i];
if (option.domain == filter_val || filter_val == '') {
sel.append($("<option />").val(option.id).text(option.corp_name));
}
});
});
$('#corp_select').change(function(ev) {
$('#corp_detail').load('/availability/' + $(this).val() + '/summary/').addClass("filled");
current_avail = $(this).val();
if (current_student !== null) $('input#valid_training').show()
});
$('#valid_training').click(function() {
$.post('/training/new/', {
student: current_student, avail: current_avail,
referent: $('#referent_select').val(),
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val()},
function(data) {
if (data != 'OK') {
alert(data);
return;
}
// Clear selected student/corp
$('option:selected', '#student_select').remove();
var prev_num = $('div#student_total').data('num');
$('div#student_total').html((prev_num - 1) + " étudiant-e-s").data('num', prev_num - 1);
$('#student_detail').html('').removeClass("filled");
$('option:selected', '#corp_select').remove();
prev_num = $('div#corp_total').data('num');
$('div#corp_total').html((prev_num - 1) + " disponibilités").data('num', prev_num - 1);
$('#corp_detail').html('').removeClass("filled");
current_student = null;
current_avail = null;
$('input#valid_training').hide();
$('#referent_select').val('');
update_trainings($('#period_select').val());
}
);
});
update_periods($('#section_select').val());
update_class_filter($('#section_select').val());
});
var current_student = null;
var current_avail = null;

View file

@ -30,189 +30,8 @@
{% endblock %}
{% block extrahead %}
<script type="text/javascript" src="{% static "admin/js/jquery.js" %}"></script>
<script type="text/javascript">
function update_periods(section_id) {
$.getJSON('/section/' + section_id + '/periods/', function(data) {
var sel = $('#period_select');
sel.append($("<option />").val('').text('-------'));
if (data.length > 0) {
$.each(data, function() {
sel.append($("<option />").val(this[0]).text(this[1]));
})
}
update_students('');
update_corporations('');
update_trainings('');
});
}
function update_class_filter(section_id) {
$('#student_filter').empty();
$.getJSON('/section/' + section_id + '/classes/', function(data) {
var sel = $('#student_filter');
sel.append($("<option />").val('').text('Toutes les classes'));
if (data.length > 0) {
$.each(data, function() {
sel.append($("<option />").val(this[1]).text(this[1]));
})
}
});
}
function update_students(period_id) {
$('#student_select').empty();
$('#student_detail').html('').removeClass("filled");
current_student = null;
$('input#valid_training').hide();
if (period_id == '') return;
$.getJSON('/period/' + period_id + '/students/', function(data) {
var sel = $('#student_select');
var options = [];
$.each(data, function() {
if (this.training_id == null) {
options.push(this);
sel.append($("<option />").val(this.id).text(this.name + ' (' + this.klass + ')'));
}
});
// Keep options as data to enable filtering
sel.data('options', options);
$('div#student_total').html(options.length + " étudiant-e-s").data('num', options.length);
});
}
function update_corporations(period_id) {
$('#corp_select').empty();
$('#corp_detail').html('').removeClass("filled");
current_avail = null;
$('input#valid_training').hide();
if (period_id == '') return;
$.getJSON('/period/' + period_id + '/corporations/', function(data) {
var sel = $('#corp_select');
var domains = [];
var options = [];
$('#corp_filter').empty().append($("<option />").val('').text('Tous les domaines'));
$.each(data, function() {
if (this.free) {
options.push(this);
sel.append($("<option />").val(this.id).text(this.corp_name));
}
if (domains.indexOf(this.domain) == -1) {
domains.push(this.domain);
$('#corp_filter').append($("<option />").val(this.domain).text(this.domain));
}
});
sel.data('options', options);
$('div#corp_total').html(options.length + " disponibilités").data('num', options.length);
});
}
function update_trainings(period_id) {
if (period_id == '') $('ul#training_list').html('');
else $('ul#training_list').load('/training/by_period/' + period_id + '/', function() {
$('img.delete_training').click(function() {
if (!confirm("Voulez-vous vraiment supprimer ce stage ?")) return;
var li = $(this).parents('li');
$.post('/training/del/',
{pk: li.attr('id').split('_')[1],
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val()}, function() {
li.remove();
// dispatch student and corp in their listings
update_students($('#period_select').val());
update_corporations($('#period_select').val());
});
});
});
}
$(document).ready(function() {
$('#section_select').change(function(ev) {
// Update period list when section is modified
$('#period_select').empty();
update_periods($(this).val());
update_class_filter($(this).val());
});
$('#period_select').change(function(ev) {
// Update student/corporation list when period is modified
update_students($(this).val());
update_corporations($(this).val());
update_trainings($(this).val());
});
$('#student_filter').change(function(ev) {
var sel = $('#student_select');
var options = sel.data('options');
var filter_val = $(this).val();
sel.empty();
$.each(options, function(i) {
var option = options[i];
if (option.klass == filter_val || filter_val == '') {
sel.append($("<option />").val(option.id).text(option.name + ' (' + option.klass + ')'));
}
});
});
$('#student_select').change(function(ev) {
$('#student_detail').load('/student/' + $(this).val() + '/summary/').addClass("filled");
current_student = $(this).val();
if (current_avail !== null) $('input#valid_training').show()
});
$('#corp_filter').change(function(ev) {
var sel = $('#corp_select');
var options = sel.data('options');
var filter_val = $(this).val();
sel.empty();
$.each(options, function(i) {
var option = options[i];
if (option.domain == filter_val || filter_val == '') {
sel.append($("<option />").val(option.id).text(option.corp_name));
}
});
});
$('#corp_select').change(function(ev) {
$('#corp_detail').load('/availability/' + $(this).val() + '/summary/').addClass("filled");
current_avail = $(this).val();
if (current_student !== null) $('input#valid_training').show()
});
$('#valid_training').click(function() {
$.post('/training/new/', {
student: current_student, avail: current_avail,
referent: $('#referent_select').val(),
csrfmiddlewaretoken: $("input[name='csrfmiddlewaretoken']").val()},
function(data) {
if (data != 'OK') {
alert(data);
return;
}
// Clear selected student/corp
$('option:selected', '#student_select').remove();
var prev_num = $('div#student_total').data('num');
$('div#student_total').html((prev_num - 1) + " étudiant-e-s").data('num', prev_num - 1);
$('#student_detail').html('').removeClass("filled");
$('option:selected', '#corp_select').remove();
prev_num = $('div#corp_total').data('num');
$('div#corp_total').html((prev_num - 1) + " disponibilités").data('num', prev_num - 1);
$('#corp_detail').html('').removeClass("filled");
current_student = null;
current_avail = null;
$('input#valid_training').hide();
$('#referent_select').val('');
update_trainings($('#period_select').val());
}
);
});
update_periods($('#section_select').val());
update_class_filter($('#section_select').val());
});
var current_student = null;
var current_avail = null;
</script>
<script type="text/javascript" src="{% static "admin/js/jquery.js" %}"></script>
<script type="text/javascript" src="{% static "js/attribution.js" %}"></script>
{% endblock %}
{% block breadcrumbs %}