(function ()
{
'use strict';
angular.module('app.calendar')
.controller('EventFormDialogController', EventFormDialogController);
/** @ngInject */
function EventFormDialogController($mdDialog, dialogData)
{
var vm = this;
// Data
vm.dialogData = dialogData;
vm.notifications = ['15 minutes before', '30 minutes before', '1 hour before'];
// Methods
vm.saveEvent = saveEvent;
vm.removeEvent = removeEvent;
vm.closeDialog = closeDialog;
init();
//////////
/**
* Initialize
*/
function init()
{
// Figure out the title
switch ( vm.dialogData.type )
{
case 'add' :
vm.dialogTitle = 'Add Event';
break;
case 'edit' :
vm.dialogTitle = 'Add Event';
break;
default:
break;
}
// Edit
if ( vm.dialogData.calendarEvent )
{
// Clone the calendarEvent object before doing anything
// to make sure we are not going to brake FullCalendar
vm.calendarEvent = angular.copy(vm.dialogData.calendarEvent);
// Convert moment.js dates to javascript date object
if ( moment.isMoment(vm.calendarEvent.start) )
{
vm.calendarEvent.start = vm.calendarEvent.start.toDate();
}
if ( moment.isMoment(vm.calendarEvent.end) )
{
vm.calendarEvent.end = vm.calendarEvent.end.toDate();
}
}
// Add
else
{
// Convert moment.js dates to javascript date object
if ( moment.isMoment(vm.dialogData.start) )
{
vm.dialogData.start = vm.dialogData.start.toDate();
}
if ( moment.isMoment(vm.dialogData.end) )
{
vm.dialogData.end = vm.dialogData.end.toDate();
}
vm.calendarEvent = {
start : vm.dialogData.start,
end : vm.dialogData.end,
notifications: []
};
}
}
/**
* Save the event
*/
function saveEvent()
{
// Convert the javascript date objects back to the moment.js dates
var dates = {
start: moment.utc(vm.calendarEvent.start),
end : moment.utc(vm.calendarEvent.end)
};
var response = {
type : vm.dialogData.type,
calendarEvent: angular.extend({}, vm.calendarEvent, dates)
};
$mdDialog.hide(response);
}
/**
* Remove the event
*/
function removeEvent()
{
var response = {
type : 'remove',
calendarEvent: vm.calendarEvent
};
$mdDialog.hide(response);
}
/**
* Close the dialog
*/
function closeDialog()
{
$mdDialog.cancel();
}
}
})();
|