summaryrefslogtreecommitdiff
path: root/assets/js/src/calendar.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/src/calendar.js')
-rw-r--r--assets/js/src/calendar.js99
1 files changed, 72 insertions, 27 deletions
diff --git a/assets/js/src/calendar.js b/assets/js/src/calendar.js
index bdd43db0..1d712545 100644
--- a/assets/js/src/calendar.js
+++ b/assets/js/src/calendar.js
@@ -2,44 +2,86 @@ Kanboard.Calendar = (function() {
var filter_storage_key = "";
- // Show the empty calendar
- function show_calendar()
+ // Save the new due date for a moved task
+ function move_calendar_event(calendar_event)
+ {
+ $.ajax({
+ cache: false,
+ url: $("#calendar").data("save-url"),
+ contentType: "application/json",
+ type: "POST",
+ processData: false,
+ data: JSON.stringify({
+ "task_id": calendar_event.id,
+ "date_due": calendar_event.start.format()
+ })
+ });
+ }
+
+ // Show the user calendar
+ function show_user_calendar()
{
- var calendar = $("#calendar");
+ var calendar = $("#user-calendar");
var translations = calendar.data("translations");
calendar.fullCalendar({
lang: $("body").data("js-lang"),
- editable: true,
+ editable: false,
eventLimit: true,
+ defaultView: "agendaWeek",
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay'
},
- viewRender: load_filters,
- eventDrop: move_calendar_event
+ viewRender: refresh_user_calendar
});
}
- // Save the new due date for a moved task
- function move_calendar_event(calendar_event)
- {
- $.ajax({
- cache: false,
- url: $("#calendar").data("save-url"),
- contentType: "application/json",
- type: "POST",
- processData: false,
- data: JSON.stringify({
- "task_id": calendar_event.id,
- "date_due": calendar_event.start.format()
- })
+ // Refresh the calendar events
+ function refresh_user_calendar(filters)
+ {
+ var calendar = $("#user-calendar");
+ var url = calendar.data("check-url");
+ var params = {
+ "start": calendar.fullCalendar('getView').start.format(),
+ "end": calendar.fullCalendar('getView').end.format(),
+ "user_id": calendar.data("user-id")
+ }
+
+ for (var key in params) {
+ url += "&" + key + "=" + params[key];
+ }
+
+ $.getJSON(url, function(events) {
+ calendar.fullCalendar('removeEvents');
+ calendar.fullCalendar('addEventSource', events);
+ calendar.fullCalendar('rerenderEvents');
+ });
+ }
+
+ // Show the project calendar
+ function show_project_calendar()
+ {
+ var calendar = $("#calendar");
+ var translations = calendar.data("translations");
+
+ calendar.fullCalendar({
+ lang: $("body").data("js-lang"),
+ editable: true,
+ eventLimit: true,
+ header: {
+ left: 'prev,next today',
+ center: 'title',
+ right: 'month,agendaWeek,agendaDay'
+ },
+ viewRender: load_project_filters,
+ eventDrop: move_calendar_event
});
}
// Refresh the calendar events
- function refresh_calendar(filters)
+ function refresh_project_calendar(filters)
{
var calendar = $("#calendar");
var url = calendar.data("check-url");
@@ -62,7 +104,7 @@ Kanboard.Calendar = (function() {
}
// Restore saved filters
- function load_filters()
+ function load_project_filters()
{
var filters = Kanboard.GetStorageItem(filter_storage_key);
@@ -74,13 +116,13 @@ Kanboard.Calendar = (function() {
}
}
- refresh_calendar(filters || {});
+ refresh_project_calendar(filters || {});
- $('.calendar-filter').change(apply_filters);
+ $('.calendar-filter').change(apply_project_filters);
}
// Apply filters on change
- function apply_filters()
+ function apply_project_filters()
{
var filters = {};
@@ -89,15 +131,18 @@ Kanboard.Calendar = (function() {
});
Kanboard.SetStorageItem(filter_storage_key, JSON.stringify(filters));
- refresh_calendar(filters);
+ refresh_project_calendar(filters);
}
jQuery(document).ready(function() {
if (Kanboard.Exists("calendar")) {
filter_storage_key = "calendar_filters_" + $("#calendar").data("project-id");
- show_calendar();
- load_filters();
+ show_project_calendar();
+ load_project_filters();
+ }
+ else if (Kanboard.Exists("user-calendar")) {
+ show_user_calendar();
}
});