diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-11-15 21:24:25 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-11-15 21:24:25 -0500 |
commit | e2a867166b301fecf32421bfdff8bd8bcf767e89 (patch) | |
tree | 215fcb6d3eaf8b10263cd84de5c3f7096d72ba39 /assets/js/components | |
parent | 94cd5869bf9e4b86063cbb71777a05525b9d5c52 (diff) |
Convert calendar to VueJS component
Update to FullCalendar 3.1.0 as well.
Diffstat (limited to 'assets/js/components')
-rw-r--r-- | assets/js/components/calendar.js | 50 |
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'); + }); + } + }); + } +}); |