summaryrefslogtreecommitdiff
path: root/assets/js/components/calendar.js
diff options
context:
space:
mode:
Diffstat (limited to 'assets/js/components/calendar.js')
-rw-r--r--assets/js/components/calendar.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/assets/js/components/calendar.js b/assets/js/components/calendar.js
new file mode 100644
index 00000000..6a20bbfc
--- /dev/null
+++ b/assets/js/components/calendar.js
@@ -0,0 +1,50 @@
+Vue.component('calendar', {
+ props: ['saveUrl', 'checkUrl'],
+ template: '<div id="calendar"></div>',
+ ready: function() {
+ var self = this;
+ var calendar = $('#calendar');
+
+ calendar.fullCalendar({
+ locale: $("body").data("js-lang"),
+ editable: true,
+ eventLimit: true,
+ defaultView: "month",
+ header: {
+ left: 'prev,next today',
+ center: 'title',
+ right: 'month,agendaWeek,agendaDay'
+ },
+ eventDrop: function(event) {
+ $.ajax({
+ cache: false,
+ url: self.saveUrl,
+ contentType: "application/json",
+ type: "POST",
+ processData: false,
+ data: JSON.stringify({
+ "task_id": event.id,
+ "date_due": event.start.format()
+ })
+ });
+ },
+ viewRender: function() {
+ var url = self.checkUrl;
+ var params = {
+ "start": calendar.fullCalendar('getView').start.format(),
+ "end": calendar.fullCalendar('getView').end.format()
+ };
+
+ for (var key in params) {
+ url += "&" + key + "=" + params[key];
+ }
+
+ $.getJSON(url, function(events) {
+ calendar.fullCalendar('removeEvents');
+ calendar.fullCalendar('addEventSource', events);
+ calendar.fullCalendar('rerenderEvents');
+ });
+ }
+ });
+ }
+});