(js) Add date picker to navigate in Calendar view

This commit is contained in:
Francis Lachapelle
2016-07-04 17:11:48 -04:00
parent f7afab5f37
commit da0a099638
11 changed files with 201 additions and 49 deletions
@@ -6,25 +6,46 @@
/**
* @ngInject
*/
CalendarController.$inject = ['$scope', '$rootScope', '$state', '$stateParams', 'Calendar', 'Component', 'stateEventsBlocks'];
function CalendarController($scope, $rootScope, $state, $stateParams, Calendar, Component, stateEventsBlocks) {
CalendarController.$inject = ['$scope', '$rootScope', '$state', '$stateParams', 'Calendar', 'Component', 'Preferences', 'stateEventsBlocks'];
function CalendarController($scope, $rootScope, $state, $stateParams, Calendar, Component, Preferences, stateEventsBlocks) {
var vm = this, deregisterCalendarsList;
// Make the toolbar state of all-day events persistent
if (angular.isUndefined(CalendarController.expandedAllDays))
CalendarController.expandedAllDays = false;
vm.selectedDate = $stateParams.day.asDate();
vm.expandedAllDays = CalendarController.expandedAllDays;
vm.toggleAllDays = toggleAllDays;
vm.views = stateEventsBlocks;
vm.changeDate = changeDate;
vm.changeView = changeView;
Preferences.ready().then(function() {
_formatDate(vm.selectedDate);
});
// Refresh current view when the list of calendars is modified
deregisterCalendarsList = $rootScope.$on('calendars:list', updateView);
// Destroy event listener when the controller is being deactivated
$scope.$on('$destroy', deregisterCalendarsList);
function _formatDate(date) {
if ($stateParams.view == 'month') {
date.setDate(1);
date.setHours(12);
date.$dateFormat = '%B %Y';
}
else if ($stateParams.view == 'week') {
date.setTime(date.beginOfWeek(Preferences.defaults.SOGoFirstDayOfWeek).getTime());
date.$dateFormat = l('Week %d').replace('%d', '%U');
}
else {
date.$dateFormat = '%A';
}
}
// Expand or collapse all-day events
function toggleAllDays() {
CalendarController.expandedAllDays = !CalendarController.expandedAllDays;
@@ -46,8 +67,10 @@
}
// Change calendar's date
function changeDate($event) {
var date = angular.element($event.currentTarget).attr('date');
function changeDate($event, newDate) {
var date = newDate? newDate.getDayString() : angular.element($event.currentTarget).attr('date');
if (newDate)
_formatDate(newDate);
$state.go('calendars.view', { day: date });
}
@@ -25,7 +25,7 @@
vm.showLinks = showLinks;
vm.showProperties = showProperties;
vm.subscribeToFolder = subscribeToFolder;
vm.today = today;
// vm.today = today;
vm.filter = { name: '' };
vm.toggleSortableMode = toggleSortableMode;
@@ -412,14 +412,14 @@
});
}
function today() {
var fragments = $window.location.hash.split('/'),
state = fragments[1],
view = fragments[2],
now = new Date(),
path = ['#', state, view, now.getDayString()];
$window.location = path.join('/');
}
// function today() {
// var fragments = $window.location.hash.split('/'),
// state = fragments[1],
// view = fragments[2],
// now = new Date(),
// path = ['#', state, view, now.getDayString()];
// $window.location = path.join('/');
// }
}
angular