all files / schedule/event-renderer/ agenda-base.js

98.25% Statements 280/285
93.71% Branches 164/175
100% Functions 23/23
98.21% Lines 275/280
11 statements, 6 functions, 9 branches Ignored     
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429          708×   731× 731× 731× 731× 93× 93×       93×   93×         638×         638× 638× 1679×                   1679× 351×   1679× 1679× 1679× 131× 131× 131× 131× 131×   131× 67×     67×       1548×   1679× 1679× 1679× 1679×       1679× 1679×         731× 731×   718×   731× 731×   1548× 1548×   1548× 1548× 1548×   1548× 1548× 1548× 1548×   1548× 750×   750×   1548× 1548× 1548× 1548× 1548× 1548× 766×   766× 766×     1548× 1548× 1548×   675× 675×     675× 9598× 9598× 9598×   675×   135× 135× 2122× 2122×   135× 135× 686× 686×     36× 36×       36× 36× 36× 36× 36× 36× 36× 36× 90× 90× 90× 90× 90× 90× 90×             89×   89× 89× 87× 266× 266× 266× 266× 266× 225× 555× 555×       421× 421×             421×             421× 421×   421× 421× 421×   555× 555×   225× 225× 225×             225× 225×   225×         87× 87× 87× 87× 30× 30× 60× 60× 144× 72× 72×   144× 51× 51× 51× 51× 51× 51× 51× 51×         87×     36× 36×       87× 87× 87× 87× 87× 87× 87× 65× 65× 65× 170×   65× 540× 65× 157×     87× 409× 409× 1082× 1082× 1082× 409× 158× 158×   251× 251× 251× 251× 55×   251× 251×   251×   673× 409× 409× 515× 515×   515×       409× 409× 409× 158×   409× 409× 409×         264× 264× 264× 264×     409× 58× 58× 58× 58× 58× 58× 58× 58×   52×   403×     617× 617× 20× 20× 20× 20× 20× 20× 20×     597×   617×   110× 110× 110×       110× 110× 110× 17×     922× 922× 922×               922× 922× 922× 922× 812×   922×   121×        
/* istanbul ignore next */ 
var __extends = (this && this.__extends) || (function () {
    var extendStatics = function (d, b) {
        extendStatics = Object.setPrototypeOf ||
            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
        return extendStatics(d, b);
    };
    return function (d, b) {
        extendStatics(d, b);
        function __() { this.constructor = d; }
        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
    };
})();
define(["require", "exports", "@syncfusion/ej2-base", "@syncfusion/ej2-lists", "../renderer/view-base", "../base/util", "../base/css-constant", "../base/constant"], function (require, exports, ej2_base_1, ej2_lists_1, view_base_1, util, cls, event) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var AgendaBase = (function (_super) {
        __extends(AgendaBase, _super);
        function AgendaBase(parent) {
            return _super.call(this, parent) || this;
        }
        AgendaBase.prototype.createAgendaContentElement = function (type, listData, aTd, groupOrder, groupIndex) {
            var _this = this;
            var listElement;
            var fieldMapping = this.parent.eventFields;
            if (type === 'noEvents') {
                var noEvents = [{ 'subject': this.parent.localeObj.getConstant('noEvents') }];
                listElement = ej2_lists_1.ListBase.createList(this.parent.createElement, noEvents, {
                    moduleName: 'agenda',
                    listClass: this.parent.activeView.viewClass,
                    itemClass: this.parent.activeView.viewClass,
                    template: ej2_base_1.initializeCSPTemplate(function () { return "<div class=\"" + cls.AGENDA_NO_EVENT_CLASS + "\">" + _this.parent.localeObj.getConstant('noEvents') + "</div>"; })
                });
                Iif (listElement.querySelector('.e-agenda-item').children.length === 0) {
                    listElement.firstElementChild.appendChild(ej2_base_1.createElement('div', { className: cls.AGENDA_NO_EVENT_CLASS, innerHTML: this.parent.localeObj.getConstant('noEvents') }));
                }
            }
            else {
                listElement = ej2_lists_1.ListBase.createList(this.parent.createElement, listData, {
                    moduleName: 'agenda',
                    listClass: this.parent.activeView.viewClass,
                    itemClass: this.parent.activeView.viewClass
                });
                var listElements = [].slice.call(listElement.children);
                listElements.forEach(function (element, li) {
                    var appWrapper = ej2_base_1.createElement('div', {
                        className: cls.APPOINTMENT_CLASS, attrs: {
                            'data-id': 'Appointment_' + listData[parseInt(li.toString(), 10)]["" + _this.parent.eventFields.id],
                            'data-guid': listData[parseInt(li.toString(), 10)].Guid,
                            'role': 'button',
                            'tabindex': '0',
                            'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[parseInt(li.toString(), 10)]),
                            'aria-label': _this.parent.getAnnouncementString(listData[parseInt(li.toString(), 10)])
                        }
                    });
                    if (!ej2_base_1.isNullOrUndefined(groupIndex)) {
                        appWrapper.setAttribute('data-group-index', groupIndex.toString());
                    }
                    _this.parent.eventBase.applyResourceColor(appWrapper, listData[parseInt(li.toString(), 10)], 'borderColor', groupOrder);
                    var templateEle;
                    if (!ej2_base_1.isNullOrUndefined(_this.parent.activeViewOptions.eventTemplate)) {
                        ej2_base_1.addClass([appWrapper], cls.EVENT_TEMPLATE);
                        var scheduleId = _this.parent.element.id + '_';
                        var viewName = _this.parent.activeViewOptions.eventTemplateName;
                        var templateId = scheduleId + viewName + 'eventTemplate';
                        templateEle =
                            _this.parent.getAppointmentTemplate()(listData[parseInt(li.toString(), 10)], _this.parent, 'eventTemplate', templateId, false, undefined, undefined, _this.parent.root);
                        if (!ej2_base_1.isNullOrUndefined(listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceRule])) {
                            var iconClass = (listData[parseInt(li.toString(), 10)][fieldMapping.id] ===
                                listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceID]) ?
                                cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;
                            appWrapper.appendChild(ej2_base_1.createElement('div', { className: cls.ICON + ' ' + iconClass }));
                        }
                    }
                    else {
                        templateEle = _this.createAppointment(listData[parseInt(li.toString(), 10)]);
                    }
                    ej2_base_1.append([].slice.call(templateEle), appWrapper);
                    util.removeChildren(element);
                    element.appendChild(appWrapper);
                    var args = {
                        data: ej2_base_1.extend({}, listData[parseInt(li.toString(), 10)], null, true),
                        element: element, cancel: false
                    };
                    _this.parent.trigger(event.eventRendered, args, function (eventArgs) {
                        if (eventArgs.cancel) {
                            ej2_base_1.remove(element);
                        }
                    });
                });
            }
            aTd.appendChild(listElement);
            if ((this.parent.currentView === 'MonthAgenda' && this.parent.activeViewOptions.group.resources.length > 0)
                || this.parent.currentView === 'Agenda') {
                ej2_base_1.addClass([aTd], cls.AGENDA_DAY_BORDER_CLASS);
            }
            this.parent.renderTemplates();
            return aTd;
        };
        AgendaBase.prototype.createAppointment = function (event) {
            var fieldMapping = this.parent.eventFields;
            var eventSubject = (event[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default
                || this.parent.localeObj.getConstant('addTitle'));
            var eventLocation = (event[fieldMapping.location] || this.parent.eventSettings.fields.location.default);
            var appSubjectWrap = ej2_base_1.createElement('div', { className: cls.SUBJECT_WRAP });
            if (!ej2_base_1.isNullOrUndefined(eventLocation) && eventLocation !== '') {
                eventSubject += ',';
            }
            var appSubjectText = ej2_base_1.createElement('div', { className: cls.SUBJECT_CLASS });
            this.parent.sanitize(eventSubject, appSubjectText);
            appSubjectWrap.appendChild(appSubjectText);
            if (!ej2_base_1.isNullOrUndefined(eventLocation) && eventLocation !== '') {
                var appLocation = ej2_base_1.createElement('div', { className: cls.LOCATION_CLASS });
                this.parent.sanitize(eventLocation, appLocation);
                appSubjectWrap.appendChild(appLocation);
            }
            if (!ej2_base_1.isNullOrUndefined(event[fieldMapping.recurrenceRule])) {
                var iconClass = (event[fieldMapping.id] === event[fieldMapping.recurrenceID]) ?
                    cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;
                appSubjectWrap.appendChild(ej2_base_1.createElement('div', { className: cls.ICON + ' ' + iconClass }));
            }
            var strDate = event[fieldMapping.startTime];
            var endDate = event[fieldMapping.endTime];
            var isAllDay = event[fieldMapping.isAllDay];
            var allDayStr = this.parent.localeObj.getConstant('allDay');
            var timeStr = this.parent.getTimeString(strDate) + ' - ' + this.parent.getTimeString(endDate);
            if (!ej2_base_1.isNullOrUndefined(event.data)) {
                var milliSeconds = (endDate.getTimezoneOffset() !== strDate.getTimezoneOffset()) ?
                    (endDate.getTime() - strDate.getTime() + 3600000) : (endDate.getTime() - strDate.getTime());
                var eventString = (milliSeconds / util.MS_PER_DAY) >= 1 ? allDayStr : timeStr;
                allDayStr = eventString + ' (' + this.parent.localeObj.getConstant('day') + ' '
                    + event.data.index + '/' + event.data.count + ')';
            }
            var displayStr = (!ej2_base_1.isNullOrUndefined(event.data) || isAllDay) ? allDayStr : timeStr;
            var appDateTime = ej2_base_1.createElement('div', { className: cls.DATE_TIME_CLASS, innerHTML: displayStr });
            return [appSubjectWrap, appDateTime];
        };
        AgendaBase.prototype.processAgendaEvents = function (events) {
            var eventsProcessed = [];
            Iif (ej2_base_1.isNullOrUndefined(events)) {
                return eventsProcessed;
            }
            for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {
                var event_1 = events_1[_i];
                var spanned = this.parent.eventBase.splitEventByDay(event_1);
                eventsProcessed = eventsProcessed.concat(spanned.length > 1 ? spanned : event_1);
            }
            return eventsProcessed;
        };
        AgendaBase.prototype.wireEventActions = function () {
            var eventElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));
            for (var _i = 0, eventElement_1 = eventElement; _i < eventElement_1.length; _i++) {
                var element = eventElement_1[_i];
                this.parent.eventBase.wireAppointmentEvents(element, this.parent.getEventDetails(element), true);
            }
            var dateHeaderElement = [].slice.call(this.parent.element.querySelectorAll('.e-m-date'));
            for (var _a = 0, dateHeaderElement_1 = dateHeaderElement; _a < dateHeaderElement_1.length; _a++) {
                var element = dateHeaderElement_1[_a];
                ej2_base_1.EventHandler.add(element, 'click', this.parent.agendaModule.dayNavigationClick, this);
            }
        };
        AgendaBase.prototype.calculateResourceTableElement = function (tBody, noOfDays, agendaDate, agendaEnd) {
            if (agendaEnd === void 0) { agendaEnd = null; }
            Iif (ej2_base_1.isNullOrUndefined(this.parent.resourceBase.lastResourceLevel)) {
                var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);
                this.parent.resourceBase.generateResourceLevels(level);
            }
            var agendaLastDate = util.addDays(new Date(agendaDate.getTime()), noOfDays);
            var days = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;
            var resColl = this.parent.resourceBase.resourceCollection;
            var resData = this.parent.resourceBase.lastResourceLevel;
            var agendaStart = agendaDate;
            var initialDate = agendaDate;
            var showWeekend = this.parent.activeViewOptions.showWeekend;
            for (var i = 0; i < days; i++) {
                var lastLevelInfo = [];
                var tempLastLevelInfo = [];
                var tempIndex = 0;
                var eventObj = void 0;
                var dateObj = void 0;
                var firstDate = util.addDays(initialDate, i);
                if (this.parent.currentView === 'Agenda' && this.parent.activeViewOptions.group.byDate &&
                    this.parent.activeViewOptions.allowVirtualScrolling && !showWeekend && !this.isWorkDay(firstDate)) {
                    do {
                        firstDate = util.addDays(firstDate, 1);
                        if (firstDate >= agendaEnd) {
                            break;
                        }
                    } while (!this.isWorkDay(firstDate) ||
                        this.parent.eventBase.filterEvents(firstDate, util.addDays(firstDate, 1)).length < 1);
                    if (firstDate >= agendaEnd) {
                        break;
                    }
                    initialDate = util.addDays(firstDate, -i);
                    agendaLastDate = util.addDays(firstDate, 1);
                }
                var finalDate = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda')
                    ? util.addDays(firstDate, 1) : agendaLastDate;
                var agendaCollection = this.parent.eventBase.filterEvents(firstDate, finalDate);
                if (agendaCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {
                    for (var res = 0; res < resData.length; res++) {
                        noOfDays = (!this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;
                        var data = [];
                        agendaDate = firstDate;
                        var resDataCollection = this.parent.eventBase.filterEvents(agendaDate, agendaLastDate, agendaCollection, resData[parseInt(res.toString(), 10)]);
                        if (resDataCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {
                            for (var r = 0; r < noOfDays; r++) {
                                var resDayCollection = this.parent.eventBase.filterEvents(agendaDate, util.addDays(agendaDate, 1), resDataCollection, undefined);
                                if (((showWeekend || !showWeekend && (this.parent.group.byDate ? this.isWorkDay(agendaDate) :
                                    this.isWorkDay(agendaDate, resData[parseInt(res.toString(), 10)].workDays)))
                                    && (resDayCollection.length > 0 || !this.parent.hideEmptyAgendaDays)) ||
                                    this.parent.currentView === 'MonthAgenda') {
                                    data.push(resDayCollection[0]);
                                    eventObj = {
                                        rowSpan: 1, type: 'eventColumn', resource: resColl[resColl.length - 1],
                                        groupIndex: resData[parseInt(res.toString(), 10)].groupIndex,
                                        groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,
                                        resourceData: resData[parseInt(res.toString(), 10)].resourceData,
                                        eventData: resDayCollection, date: agendaDate
                                    };
                                    dateObj = {
                                        rowSpan: 1, type: 'dateColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],
                                        groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,
                                        resourceData: resData[parseInt(res.toString(), 10)].resourceData,
                                        date: agendaDate,
                                        groupIndex: resData[parseInt(res.toString(), 10)].groupIndex
                                    };
                                    Eif (!lastLevelInfo[parseInt(tempIndex.toString(), 10)]) {
                                        lastLevelInfo[parseInt(tempIndex.toString(), 10)] = [];
                                    }
                                    lastLevelInfo[parseInt(tempIndex.toString(), 10)].push(eventObj);
                                    lastLevelInfo[parseInt(tempIndex.toString(), 10)].push(dateObj);
                                    tempIndex++;
                                }
                                agendaDate = util.addDays(agendaDate, 1);
                                if (agendaDate.getTime() >= agendaLastDate.getTime() || this.parent.activeViewOptions.group.byDate
                                    || this.parent.currentView === 'MonthAgenda') {
                                    Eif (data.length > 0) {
                                        lastLevelInfo[lastLevelInfo.length - 1][1].cssClass = cls.AGENDA_DAY_BORDER_CLASS;
                                        var tempObj = {
                                            rowSpan: data.length, type: 'resourceColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],
                                            groupOrder: resData[parseInt(res.toString(), 10)].groupOrder.slice(0, -1),
                                            resourceData: resData[parseInt(res.toString(), 10)].resourceData,
                                            groupIndex: (lastLevelInfo.length - data.length), className: [cls.RESOURCE_NAME],
                                            date: agendaDate
                                        };
                                        lastLevelInfo[parseInt((lastLevelInfo.length - data.length).toString(), 10)].push(tempObj);
                                        tempLastLevelInfo.push(ej2_base_1.extend({}, tempObj, null, true));
                                    }
                                    break;
                                }
                            }
                        }
                    }
                    var topResources = resColl.slice(0, -1);
                    var tempGroupedData = [];
                    var totalRowSpan = 0;
                    for (var y = 0; y < topResources.length; y++) {
                        var data = topResources[topResources.length - (y + 1)].dataSource;
                        for (var x = 0; x < data.length; x++) {
                            var z = 0;
                            for (var u = 0; u < tempLastLevelInfo.length; u++) {
                                if (tempLastLevelInfo[parseInt(u.toString(), 10)].groupOrder[topResources.length - (y + 1)] === data[parseInt(x.toString(), 10)][topResources[topResources.length - (y + 1)].idField]) {
                                    totalRowSpan = totalRowSpan + tempLastLevelInfo[parseInt(u.toString(), 10)].rowSpan;
                                    tempGroupedData.push(ej2_base_1.extend({}, tempLastLevelInfo[parseInt(u.toString(), 10)], null, true));
                                }
                                if (++z === tempLastLevelInfo.length && tempGroupedData.length > 0) {
                                    tempGroupedData[0].rowSpan = totalRowSpan;
                                    tempGroupedData[0].type = 'parentColumnLevel_' + (y + 1);
                                    tempGroupedData[0].resource = topResources[topResources.length - (y + 1)];
                                    tempGroupedData[0].resourceData = data[parseInt(x.toString(), 10)];
                                    tempGroupedData[0].date = agendaDate;
                                    lastLevelInfo[tempGroupedData[0].groupIndex].push(tempGroupedData[0]);
                                    tempGroupedData = [];
                                    totalRowSpan = 0;
                                }
                            }
                        }
                    }
                    this.createResourceTableRow(lastLevelInfo, tBody);
                }
            }
            var totalCollection = this.parent.eventBase.filterEvents(agendaStart, agendaLastDate);
            Iif (totalCollection.length === 0 && !this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {
                this.renderEmptyContent(tBody, agendaStart);
            }
        };
        AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {
            var tr = ej2_base_1.createElement('tr');
            var ntr;
            var td = ej2_base_1.createElement('td');
            var tempData;
            var rowSpan = 0;
            var level;
            if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {
                var tContentCollection = [];
                var parentCollection = this.parent.resourceBase.resourceCollection.slice(0, -1);
                for (var w = 0; w < tContent.length; w++) {
                    tContentCollection = tContentCollection.concat(tContent[parseInt(w.toString(), 10)]);
                }
                level = (parentCollection.length > 0) ? 'parentColumnLevel_' + parentCollection.length : 'resourceColumn';
                var rowSpanCollection = tContentCollection.filter(function (data) { return data.type === level; });
                for (var x = 0; x < rowSpanCollection.length; x++) {
                    rowSpan = rowSpan + rowSpanCollection[parseInt(x.toString(), 10)].rowSpan;
                }
            }
            for (var row = 0; row < tContent.length; row++) {
                ntr = tr.cloneNode();
                for (var col = tContent[parseInt(row.toString(), 10)].length - 1; col >= 0; col--) {
                    var data = tContent[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)];
                    var ntd = td.cloneNode();
                    if (data.type === 'dateColumn') {
                        if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {
                            tempData = tContent[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)];
                            continue;
                        }
                        ntd.setAttribute('data-date', data.date.getTime().toString());
                        ntd.appendChild(this.createDateHeaderElement(data.date, data.groupIndex));
                        var className = [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS];
                        if (data.cssClass) {
                            className.push(data.cssClass);
                        }
                        ej2_base_1.addClass([ntd], className);
                        if (this.isCurrentDate(new Date(data.date.getTime()))) {
                            ej2_base_1.addClass(ntd.childNodes, cls.AGENDA_CURRENT_DAY_CLASS);
                        }
                        ntr.appendChild(ntd);
                    }
                    else if (data.type === 'eventColumn') {
                        var elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';
                        for (var i = 0; i < ntr.childNodes.length; i++) {
                            var currentElement = ntr.childNodes.item(i);
                            var renderCellElementType = currentElement.classList.contains('e-resource-column') ?
                                event.resourceHeader : event.dateHeader;
                            this.parent.trigger(event.renderCell, {
                                elementType: renderCellElementType, element: currentElement, date: data.date, groupIndex: data.groupIndex
                            });
                        }
                        ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);
                        ntd.setAttribute('data-date', data.date.getTime().toString());
                        if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {
                            ej2_base_1.addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DAY_PADDING_CLASS]);
                        }
                        ntr.appendChild(ntd);
                        var renderCellType = (data.eventData.length === 0) ? event.noEvents : event.agendaCells;
                        this.parent.trigger(event.renderCell, {
                            elementType: renderCellType, element: ntd, date: data.date, groupIndex: data.groupIndex
                        });
                    }
                    else {
                        ntd.setAttribute('rowspan', data.rowSpan.toString());
                        ej2_base_1.addClass([ntd], cls.AGENDA_RESOURCE_CLASS);
                        this.setResourceHeaderContent(ntd, data, data.className[0]);
                        ntr.appendChild(ntd);
                    }
                }
                if (this.parent.activeViewOptions.group.byDate && row === 0 && this.parent.currentView !== 'MonthAgenda') {
                    var ntd = td.cloneNode();
                    ntd.setAttribute('data-date', tempData.date.getTime().toString());
                    ntd.setAttribute('rowspan', rowSpan.toString());
                    ntd.appendChild(this.createDateHeaderElement(tempData.date));
                    ej2_base_1.addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS, cls.DATE_BORDER_CLASS]);
                    var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), tempData.date.getTime());
                    ntr.setAttribute('data-row-index', daysCount.toString());
                    if (this.parent.element.querySelector(".e-agenda-view tr[data-row-index=\"" + daysCount + "\"]")) {
                        break;
                    }
                    ntr.insertBefore(ntd, ntr.childNodes[0]);
                }
                tBody.appendChild(ntr);
            }
        };
        AgendaBase.prototype.createDateHeaderElement = function (date, groupIndex) {
            var dateHeader;
            if (this.parent.activeViewOptions.dateHeaderTemplate) {
                dateHeader = ej2_base_1.createElement('div', { className: cls.AGENDA_HEADER_CLASS });
                var args = { date: date, type: 'dateHeader', groupIndex: groupIndex };
                var scheduleId = this.parent.element.id + '_';
                var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;
                var templateId = scheduleId + viewName + 'dateHeaderTemplate';
                var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false, undefined, undefined, this.parent.root));
                ej2_base_1.append(dateTemplate, dateHeader);
            }
            else {
                dateHeader = this.getMobileDateElement(date, cls.AGENDA_HEADER_CLASS);
            }
            return dateHeader;
        };
        AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate, hasNoEvents) {
            var eTr = this.createTableRowElement(agendaDate, 'noEvents');
            var eTd = eTr.children[0];
            var noEvents = ej2_base_1.createElement('div', {
                className: cls.AGENDA_EMPTY_EVENT_CLASS,
                innerHTML: this.parent.localeObj.getConstant('noEvents')
            });
            eTd.appendChild(noEvents);
            tBody.appendChild(eTr);
            if (hasNoEvents) {
                this.parent.trigger(event.renderCell, { elementType: event.noEvents, element: eTd, date: agendaDate });
            }
        };
        AgendaBase.prototype.createTableRowElement = function (date, type) {
            var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());
            var tr = ej2_base_1.createElement('tr', { attrs: { 'data-row-index': daysCount.toString() } });
            var td = ej2_base_1.createElement('td', {
                attrs: {
                    'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,
                    'aria-selected': 'false',
                    'data-column-index': daysCount.toString(),
                    'data-date': date.getTime().toString()
                }
            });
            var dTd = td.cloneNode();
            var aTd = td.cloneNode();
            tr.appendChild(dTd);
            if (type !== 'noEvents') {
                tr.appendChild(aTd);
            }
            return tr;
        };
        AgendaBase.prototype.destroy = function () {
            _super.prototype.destroy.call(this);
        };
        return AgendaBase;
    }(view_base_1.ViewBase));
    exports.AgendaBase = AgendaBase;
});