/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
(function() {
'use strict';
/*
* sgCalendarMonthEvent - An event block to be displayed in a month
* @memberof SOGo.Common
* @restrict element
* @param {object} sgBlock - the event block definition
* @ngInject
* @example:
*/
function sgCalendarMonthEvent() {
return {
restrict: 'E',
scope: {
block: '=sgBlock',
clickBlock: '&sgClick'
},
replace: true,
template: template,
link: link
};
function template(tElem, tAttrs) {
var p = _.has(tAttrs, 'sgCalendarGhost')? '' : '::';
return [
'
',
// Categories color stripes
'
',
'
{{ '+p+'block.component.startHour }}',
// Priority
'
{{'+p+'block.component.c_priority}}',
// Summary
' {{ '+p+'block.component.summary }}',
'
',
// Component is reccurent
' ',
// Component has an alarm
' ',
// Component is confidential
' ',
// Component is private
' ',
' ',
'
'
].join('');
}
function link(scope, iElement, attrs) {
if (!_.has(attrs, 'sgCalendarGhost')) {
// Add class for user's participation state
if (scope.block.userState)
iElement.addClass('sg-event--' + scope.block.userState);
if (scope.block.component) {
// Set background color
iElement.addClass('bg-folder' + scope.block.component.pid);
// Add class for transparency
if (scope.block.component.c_isopaque === 0)
iElement.addClass('sg-event--transparent');
// Add class for cancelled event
if (scope.block.component.c_status === 0)
iElement.addClass('sg-event--cancelled');
}
}
}
}
angular
.module('SOGo.SchedulerUI')
.directive('sgCalendarMonthEvent', sgCalendarMonthEvent);
})();