<ejs-schedule
width = '100%'
height="100%"
cssClass='virtual-scrolling'
#scheduleObj
id='Schedule'
[currentView]="setView"
[views] = "setViews"
[eventSettings]= "eventObject"
[selectedDate]="setDate"
[allowDragAndDrop]="schedulerDragAndDrop"
[allowResizing]="true"
[group]="groupData"
[rowAutoHeight]="rowAutoHeight"
[showWeekNumber]="showWeekNumber"
[workHours]="scheduleHours"
[startHour]="startHour"
[endHour]="endHour"
[firstDayOfWeek]="weekFirstDay"
[timeScale]="timeScale"
[showHeaderBar]="showHeaderBar"
(dragStart)="onDragStart($event)"
(resizeStart)="onResizeStart($event)"
(actionBegin)="onActionBegin($event)"
(eventRendered)="oneventRendered($event)"
(popupOpen)="onPopupOpen($event)"
(popupClose)="onPopupClose($event)">
<e-resources>
<e-resource
field="resourceId"
title="Resource Name"
name="Resources"
textField="Name"
idField="Id"
[allowMultiple]='allowMultiple'
[dataSource]="resourceDataSource">
</e-resource>
<!-- Because we use multiple groups we have to assign it in a separate resource tag-->
<e-resource
field ="groupId"
title = "Group Name"
name = "Departments"
[dataSource] = "groupDataSource"
[allowMultiple]='allowMultiple'
textField="Name"
idField="Id"
groupIDField="GroupID">
</e-resource>
</e-resources>
<!-- Set for each view how we want to see the data-->
<e-header-rows>
<e-header-row option='Week'>
<ng-template #template let-data>
<span [innerHTML]="getWeekDetails(data)"></span>
</ng-template>
</e-header-row>
<e-header-row option='Date'></e-header-row>
<e-header-row option='Hour'></e-header-row>
</e-header-rows>
<e-views>
<!-- Lazy loading for all views-->
<e-view
option="TimelineDay"
[allowVirtualScrolling]="virtualscroll"
displayName="Dag">
</e-view>
<e-view
option="TimelineWorkWeek"
[allowVirtualScrolling]="virtualscroll"
displayName="Werkweek">
</e-view>
<e-view
option="TimelineWeek"
[allowVirtualScrolling]="virtualscroll"
displayName="Week">
</e-view>
<e-view
option="TimelineMonth"
[allowVirtualScrolling]="virtualscroll"
displayName="Maand">
</e-view>
</e-views>
<!-- Set time format for the major timescale-->
<ng-template #timeScaleMajorSlotTemplate let-data>
<div class="majorTime">{{getMajorTime(data.date)}}</div>
</ng-template>
<ng-template #eventSettingsTemplate let-data>
<div class='template-wrap' [style.background]="data.PrimaryColor" *ngIf="data.projectName !== ''">
<div class="subject" [style.background]="data.PrimaryColor">{{data.projectName}}</div>
<div class="description" [style.background]="data.PrimaryColor">{{data.location}}</div>
</div>
<div class='template-wrap' [style.background]="data.PrimaryColor" *ngIf="data.projectName === ''">
<div class="subject" [style.background]="data.PrimaryColor">{{data.subject}}</div>
<div class="description" [style.background]="data.PrimaryColor">{{data.location}}</div>
</div>
</ng-template>
</ejs-schedule>
|
public rowDropHandler(event: any): void {
event.cancel = true;
let scheduleElement = event.target.closest('.e-content-wrap');
if (scheduleElement) {
if (event.target.classList.contains('e-work-cells')) {
let cellData = this.scheduleObj.getCellDetails(event.target);
event.data[0].Id = this.scheduleObj.eventsData.length + 1;
event.data[0].StartTime = cellData.startTime;
event.data[0].EndTime = cellData.endTime;
this.scheduleObj.openEditor(event.data[0], 'Add', true);
}
}
}
public rowDrag(args: any): void {
args.cancel = true;
} |
onDragStop(event: any): void {
// console.log('Drop event modal: ', event);
event.cancel = true;
this.dropEventService.emit({event});
}
(actionBegin)="onActionBegin($event)"
onActionBegin(args: ActionEventArgs): void {
// Store the several events in an array
let newRecords: any[] = args.addedRecords;
let changedRecords: any[] = args.changedRecords;
let deletedRecords: any[] = args.deletedRecords;
|
public onActionBegin(args: any): void {
if (args.requestType == "eventCreate") {
console.log(args.addedRecords[0]);
} else if (args.requestType == "eventChange") {
console.log(args.changedRecords[0]);
} else if (args.requestType == "eventRemove") {
console.log(args.deletedRecords[0]);
}
} |