Nei plugin per il booking (prenotazione) online jQuery si rivela fondamentale nella gestione dei calendari.
La prima funzione calcola una data nel futuro basandosi sul numero di giorni:
"use strict";
(function( $ ) {
$.future = function( days ) {
var dayMs = 86400000; // 1 giorno
var timestamp = dayMs * days;
var now = +new Date();
var futureTs = now + timestamp;
return new Date( futureTs );
};
})( jQuery );
La seconda funzione filtra le date in base al giorno della settimana. Volendo la data iniziale può essere sostituita con quella corrente evitando di calcolarla nel futuro:
"use strict";
(function( $ ) {
$.filterDatesByDay = function( days, filterDay ) {
var startDay = $.future( days );
var dayMs = 86400000;
var dates = [];
for( var i = 1; i <= 365; i++ ) {
var day = dayMs * i;
var start = startDay.getTime() + day;
var nDate = new Date( start );
if( nDate.getDay() !== parseInt( filterDay, 10 ) ) {
var yy = nDate.getFullYear().toString();
var mm = ( ( nDate.getMonth() + 1 ) < 10 ) ? '0' + ( nDate.getMonth() + 1 ).toString() : ( nDate.getMonth() + 1 ).toString();
var dd = ( nDate.getDate() < 10 ) ? '0' + ( nDate.getDate() ).toString() : ( nDate.getDate() ).toString();
var formattedDate = yy + "-" + mm + "-" + dd;
dates.push( formattedDate );
}
}
return dates;
};
})( jQuery );