mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-07-08 09:55:09 +00:00
(js) Add date picker to navigate in Calendar view
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user