Merge branch 'fix/Date_picker_doesnt_appear' into 'develop'

Fix: date picker that doesn't appear when clicking on calendar icon

Move JS code about date picker from `js/app/core.js` to  `js/app/framadatepicker.js`

See merge request !43
This commit is contained in:
Olivier Perez 2015-04-02 17:42:31 +02:00
commit 6b2937bf2e
2 changed files with 21 additions and 30 deletions

View File

@ -15,7 +15,7 @@
* Auteurs de STUdS (projet initial) : Guilhem BORGHESI (borghesi@unistra.fr) et Raphaël DROZ
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
*/
$(document).ready(function() {
$(document).ready(function () {
var init_datepicker = function () {
$('.input-group.date').datepicker({
format: "dd/mm/yyyy",
@ -25,16 +25,19 @@ $(document).ready(function() {
language: lang,
todayHighlight: true,
beforeShowDay: function (date) {
var $selected_days = [];
// Retrieve selected dates from text fields
var selected_days = [];
$('#selected-days').find('input[id^="day"]').each(function () {
if ($(this).val() != '') {
$selected_days.push($(this).val());
selected_days.push($(this).val());
}
});
for (var i = 0; i < $selected_days.length; i++) {
var $selected_date = $selected_days[i].split('/');
if (date.getFullYear() == $selected_date[2] && (date.getMonth() + 1) == $selected_date[1] && date.getDate() == $selected_date[0]) {
// Disable selected dates in DatePicker
for (var i = 0; i < selected_days.length; i++) {
var selected_date = selected_days[i].split('/');
if (date.getFullYear() == selected_date[2] && (date.getMonth() + 1) == selected_date[1] && date.getDate() == selected_date[0]) {
return {
classes: 'disabled selected'
};
@ -44,16 +47,26 @@ $(document).ready(function() {
});
};
$(document).on('click', '.input-group.date .input-group-addon', function () {
// Re-init datepicker config before displaying
init_datepicker();
$(this).parent().datepicker('show');
// Trick to refresh calendar
$('.datepicker-days .prev').trigger('click');
$('.datepicker-days .next').trigger('click');
});
// Complete the date fields when use partialy fill it (eg: 15/01 could become 15/01/2016)
var leftPad = function(text, pad) {
var leftPad = function (text, pad) {
return text ? pad.substring(0, pad.length - text.length) + text : text;
};
$(document).on('change', '.input-group.date input', function () {
// Complete field if needed
var val = $(this).val();
var capture = /([0-9]+)(?:\/([0-9]+))?/.exec(val);
var capture = /^([0-9]+)(?:\/([0-9]+))?$/.exec(val);
if (capture) {
var inputDay = leftPad(capture[1], "00"); // 5->05, 15->15

View File

@ -2,28 +2,6 @@ $(document).ready(function() {
window.lang = $('html').attr('lang');
var datepickerfocus = false; // a11y : datepicker not display on focus until there is one click on the button
$(document).on('click','.input-group.date .input-group-addon', function() {
datepickerfocus = true;
// Re-init datepicker config before displaying
$(this).parent().datepicker(init_datepicker());
$(this).parent().datepicker('show');
// Trick to refresh calendar
$('.datepicker-days .prev').trigger('click');
$('.datepicker-days .next').trigger('click');
// .active must be clicable in order to unfill the form
$('.datepicker-days .active').removeClass('disabled');
});
$(document).on('focus','.input-group.date input', function() {
if(datepickerfocus) {
$(this).parent('.input-group.date').datepicker(init_datepicker());
$(this).parent('.input-group.date').datepicker('show');
}
});
/**
* adminstuds.php
**/