'use strict';
var
_ = require('underscore'),
ko = require('knockout'),
App = require('%PathToCoreWebclientModule%/js/App.js'),
CAbstractPopup = require('%PathToCoreWebclientModule%/js/popups/CAbstractPopup.js')
;
/**
* @constructor
*/
function CEditTaskPopup()
{
CAbstractPopup.call(this);
this.modified = false;
this.isPublic = App.isPublic();
this.isEditable = ko.observable(false);
this.isEditableReminders = ko.observable(false);
this.selectedCalendarIsShared = ko.observable(false);
this.selectedCalendarIsEditable = ko.observable(false);
this.callbackSave = null;
this.callbackDelete = null;
this.timeFormatMoment = 'HH:mm';
this.dateFormatMoment = 'MM/DD/YYYY';
this.dateFormatDatePicker = 'mm/dd/yy';
this.ampmTimeFormat = ko.observable(false);
this.calendarId = ko.observable(null);
this.id = ko.observable(null);
this.uid = ko.observable(null);
this.subject = ko.observable('').extend({'disableLinebreaks': true});
this.description = ko.observable('');
this.calendars = null;
this.calendarsList = ko.observableArray([]);
this.calendarColor = ko.observable('');
this.selectedCalendarId = ko.observable('');
this.selectedCalendarName = ko.observable('');
this.selectedCalendarId.subscribe(function (sValue) {
if (sValue)
{
var oCalendar = this.calendars.getCalendarById(sValue);
this.selectedCalendarName(oCalendar.name());
this.selectedCalendarIsShared(oCalendar.isShared());
this.selectedCalendarIsEditable(oCalendar.isEditable());
this.changeCalendarColor(sValue);
}
}, this);
this.subjectFocus = ko.observable(false);
this.descriptionFocus = ko.observable(false);
this.autosizeTrigger = ko.observable(true);
};
_.extendOwn(CEditTaskPopup.prototype, CAbstractPopup.prototype);
CEditTaskPopup.prototype.PopupTemplate = '%ModuleName%_EditTaskPopup';
/**
* @param {Object} oParameters
*/
CEditTaskPopup.prototype.onOpen = function (oParameters)
{
this.subject('');
this.callbackSave = oParameters.CallbackSave;
this.callbackDelete = oParameters.CallbackDelete;
this.calendars = oParameters.Calendars;
if (this.calendars)
{
this.calendarsList(
_.filter(
this.calendars.collection(),
function(oItem){
return oItem.isEditable();
}
)
);
}
this.selectedCalendarId(oParameters.SelectedCalendar);
this.selectedCalendarId.valueHasMutated();
this.changeCalendarColor(this.selectedCalendarId());
this.autosizeTrigger.notifySubscribers(true);
};
CEditTaskPopup.prototype.onSaveClick = function ()
{
if (this.callbackSave)
{
this.callbackSave(
{
'CalendarId': this.selectedCalendarId(),
'Subject': this.subject()
}
);
}
this.closePopup();
};
CEditTaskPopup.prototype.onDeleteClick = function ()
{
if (this.callbackDelete)
{
this.callbackDelete();
}
this.closePopup();
};
/**
* @param {string} sId
*/
CEditTaskPopup.prototype.changeCalendarColor = function (sId)
{
if (_.isFunction(this.calendars.getCalendarById))
{
var oCalendar = this.calendars.getCalendarById(sId);
if (oCalendar)
{
this.calendarColor('');
this.calendarColor(oCalendar.color());
}
}
};
module.exports = new CEditTaskPopup();