Skip to content

Commit

Permalink
Inclusão da opção de URL para permitir que o desenvolvedor apenas pas…
Browse files Browse the repository at this point in the history
…se a url a ser chamada e o próprio plugin monte o objeto de eventos.
  • Loading branch information
jhonis committed Jul 14, 2014
1 parent 51ca861 commit 9154d24
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 67 deletions.
28 changes: 28 additions & 0 deletions e-calendar.jquery.json
@@ -0,0 +1,28 @@
{
"name": "e-calendar",
"title": "jQuery e-Calendar",
"description": "jQuery plugin for create a calendar with events.",
"keywords": [
"calendar",
"events"
],
"version": "0.9.0",
"author": {
"name": "Jhonis de Souza",
"email": "jhonis.souza@gmail.com",
"url": "https://github.com/jquery/jquery-color/blob/2.1.2/AUTHORS.txt"
},
"licenses": [
{
"type": "GNU GENERAL PUBLIC LICENSE",
"url": "https://github.com/jhonis/e-calendar/blob/master/LICENSE"
}
],
"bugs": "https://github.com/jhonis/e-calendar/issues",
"homepage": "https://github.com/jhonis/e-calendar",
"docs": "https://github.com/jhonis/e-calendar",
"download": "https://github.com/jhonis/e-calendar",
"dependencies": {
"jquery": ">=1.9"
}
}
137 changes: 70 additions & 67 deletions js/jquery.e-calendar.js
@@ -1,15 +1,6 @@
(function( $ ) {

var eCalendar = function(options, object) {
// Initializing options
var weekDays = ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'];
var months = ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'];
var textArrows = {previous: '<', next: '>'};
var eventTitle = 'Eventos';
var events = [{title: 'Brasil x Croácia', description: 'Abertura da copa do mundo 2014', datetime: new Date(2014, 6, 12, 17)},
{title: 'Brasil x México', description: 'Segundo jogo da seleção brasileira', datetime: new Date(2014, 6, 17, 16)},
{title: 'Brasil x Camarões', description: 'Terceiro jogo da seleção brasileira', datetime: new Date(2014, 6, 23, 16)}];
(function ($) {

var eCalendar = function (options, object) {
// Initializing global variables
var adDay = new Date().getDate();
var adMonth = new Date().getMonth();
Expand All @@ -19,26 +10,7 @@
var dYear = adYear;
var instance = object;

function init(oInit) {
if (typeof oInit != 'undefined') {
if (typeof oInit.weekDays != 'undefined') {
weekDays = oInit.weekDays;
}
if (typeof oInit.months != 'undefined') {
months = oInit.months;
}
if (typeof oInit.textArrows != 'undefined') {
textArrows = oInit.textArrows;
}
if (typeof oInit.events != 'undefined') {
events = oInit.events;
}
if (typeof oInit.eventTitle != 'undefined') {
eventTitle = oInit.eventTitle;
}
}
print();
}
var settings = $.extend({}, $.fn.eCalendar.defaults, options);

function lpad(value, length, pad) {
if (typeof pad == 'undefined') {
Expand All @@ -51,29 +23,33 @@
return (p + value).slice(-length);
}

var mouseOver = function() { $(this).addClass('c-nav-btn-over'); };
var mouseLeave = function() { $(this).removeClass('c-nav-btn-over'); };
var mouseOverEvent = function() {
var mouseOver = function () {
$(this).addClass('c-nav-btn-over');
};
var mouseLeave = function () {
$(this).removeClass('c-nav-btn-over');
};
var mouseOverEvent = function () {
$(this).addClass('c-event-over');
var d = $(this).attr('data-event-day');
$('div.c-event-item[data-event-day="' + d + '"]').addClass('c-event-over');
};
var mouseLeaveEvent = function() {
var mouseLeaveEvent = function () {
$(this).removeClass('c-event-over')
var d = $(this).attr('data-event-day');
$('div.c-event-item[data-event-day="' + d + '"]').removeClass('c-event-over');
};
var mouseOverItem = function() {
var mouseOverItem = function () {
$(this).addClass('c-event-over');
var d = $(this).attr('data-event-day');
$('div.c-event[data-event-day="' + d + '"]').addClass('c-event-over');
};
var mouseLeaveItem = function() {
var mouseLeaveItem = function () {
$(this).removeClass('c-event-over')
var d = $(this).attr('data-event-day');
$('div.c-event[data-event-day="' + d + '"]').removeClass('c-event-over');
};
var nextMonth = function() {
var nextMonth = function () {
if (dMonth < 11) {
dMonth++;
} else {
Expand All @@ -82,7 +58,7 @@
}
print();
};
var previousMonth = function() {
var previousMonth = function () {
if (dMonth > 0) {
dMonth--;
} else {
Expand All @@ -92,38 +68,50 @@
print();
};

function loadEvents() {
if (typeof settings.url != 'undefined' && settings.url != '') {
$.ajax({url: settings.url,
async: false,
success: function (result) {
settings.events = result;
}
});
}
}

function print() {
loadEvents();
var dWeekDayOfMonthStart = new Date(dYear, dMonth, 1).getDay();
var dLastDayOfMonth = new Date(dYear, dMonth + 1, 0).getDate();
var dLastDayOfPreviousMonth = new Date(dYear, dMonth + 1, 0).getDate() - dWeekDayOfMonthStart + 1;

var cBody = $('<div class="c-grid"></div>');
var cEvents = $('<div class="c-event-grid"></div>');
var cEventsBody = $('<div class="c-event-body"></div>');
cEvents.append($('<div class="c-event-title c-pad-top"></div>').html(eventTitle));
var cBody = $('<div/>').addClass('c-grid');
var cEvents = $('<div/>').addClass('c-event-grid');
var cEventsBody = $('<div/>').addClass('c-event-body');
cEvents.append($('<div/>').addClass('c-event-title c-pad-top').html(settings.eventTitle));
cEvents.append(cEventsBody);
var cNext = $('<div class="c-next c-grid-title c-pad-top"></div>');
var cMonth = $('<div class="c-month c-grid-title c-pad-top"></div>');
var cPrevious = $('<div class="c-previous c-grid-title c-pad-top"></div>');
cPrevious.html(textArrows.previous);
cMonth.html(months[dMonth] +' '+ dYear);
cNext.html(textArrows.next);
var cNext = $('<div/>').addClass('c-next c-grid-title c-pad-top');
var cMonth = $('<div/>').addClass('c-month c-grid-title c-pad-top');
var cPrevious = $('<div/>').addClass('c-previous c-grid-title c-pad-top');
cPrevious.html(settings.textArrows.previous);
cMonth.html(settings.months[dMonth] + ' ' + dYear);
cNext.html(settings.textArrows.next);

cPrevious.on('mouseover', mouseOver).on('mouseleave', mouseLeave).on('click', previousMonth);
cNext.on('mouseover', mouseOver).on('mouseleave', mouseLeave).on('click', nextMonth);

cBody.append(cPrevious);
cBody.append(cMonth);
cBody.append(cNext);
for (var i = 0; i < weekDays.length; i++) {
var cWeekDay = $('<div class="c-week-day c-pad-top"></div>');
cWeekDay.html(weekDays[i]);
for (var i = 0; i < settings.weekDays.length; i++) {
var cWeekDay = $('<div/>').addClass('c-week-day c-pad-top');
cWeekDay.html(settings.weekDays[i]);
cBody.append(cWeekDay);
}
var day = 1;
var dayOfNextMonth = 1;
for (var i = 0; i < 42; i++) {
var cDay = $('<div></div>');
var cDay = $('<div/>');
if (i < dWeekDayOfMonthStart) {
cDay.addClass('c-day-previous-month c-pad-top');
cDay.html(dLastDayOfPreviousMonth++);
Expand All @@ -132,8 +120,8 @@
if (day == dDay && adMonth == dMonth && adYear == dYear) {
cDay.addClass('c-today');
}
for (var j = 0; j < events.length; j++) {
var d = events[j].datetime;
for (var j = 0; j < settings.events.length; j++) {
var d = settings.events[j].datetime;
if (d.getDate() == day && (d.getMonth() - 1) == dMonth && d.getFullYear() == dYear) {
cDay.addClass('c-event').attr('data-event-day', d.getDate());
cDay.on('mouseover', mouseOverEvent).on('mouseleave', mouseLeaveEvent);
Expand All @@ -146,14 +134,14 @@
}
cBody.append(cDay);
}
var eventList = $('<div class="c-event-list"></div>');
for (var i = 0; i < events.length; i++) {
var d = events[i].datetime;
var eventList = $('<div/>').addClass('c-event-list');
for (var i = 0; i < settings.events.length; i++) {
var d = settings.events[i].datetime;
if ((d.getMonth() - 1) == dMonth && d.getFullYear() == dYear) {
var date = lpad(d.getDate(), 2) +'/'+ lpad(d.getMonth(), 2) +' '+ lpad(d.getHours(), 2) +':'+ lpad(d.getMinutes(), 2);
var item = $('<div class="c-event-item"></div>');
var title = $('<div class="title"></div>').html(date +' '+ events[i].title +'<br/>');
var description = $('<div class="description"></div>').html(events[i].description +'<br/>');
var date = lpad(d.getDate(), 2) + '/' + lpad(d.getMonth(), 2) + ' ' + lpad(d.getHours(), 2) + ':' + lpad(d.getMinutes(), 2);
var item = $('<div/>').addClass('c-event-item');
var title = $('<div/>').addClass('title').html(date + ' ' + settings.events[i].title + '<br/>');
var description = $('<div/>').addClass('description').html(settings.events[i].description + '<br/>');
item.attr('data-event-day', d.getDate());
item.on('mouseover', mouseOverItem).on('mouseleave', mouseLeaveItem);
item.append(title).append(description);
Expand All @@ -164,13 +152,28 @@
cEventsBody.append(eventList);
$(instance).html(cBody).append(cEvents);
}
init(options);

return print();
}

$.fn.eCalendar = function(options) {
return this.each(function() {
return eCalendar(options, $(this));
$.fn.eCalendar = function (oInit) {
return this.each(function () {
return eCalendar(oInit, $(this));
});
};

}( jQuery ));
// plugin defaults
$.fn.eCalendar.defaults = {
weekDays: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
textArrows: {previous: '<', next: '>'},
eventTitle: 'Eventos',
url: '',
events: [
{title: 'Brasil x Croácia', description: 'Abertura da copa do mundo 2014', datetime: new Date(2014, 6, 12, 17)},
{title: 'Brasil x México', description: 'Segundo jogo da seleção brasileira', datetime: new Date(2014, 6, 17, 16)},
{title: 'Brasil x Camarões', description: 'Terceiro jogo da seleção brasileira', datetime: new Date(2014, 6, 23, 16)}
]
};

}(jQuery));

0 comments on commit 9154d24

Please sign in to comment.