Skip to content

Instantly share code, notes, and snippets.

@texirv0203
Last active October 21, 2017 06:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save texirv0203/64ac9f8b1a14f44c307c29743b02deea to your computer and use it in GitHub Desktop.
Save texirv0203/64ac9f8b1a14f44c307c29743b02deea to your computer and use it in GitHub Desktop.
///<reference path="../../../assets/js/jquery/jquery.d.ts" />
///<reference path="../../../assets/js/kendo/kendo.d.ts" />
import { Component, ElementRef, Inject, OnInit, Output, ViewChild, Input, EventEmitter } from '@angular/core';
import { Router } from '@angular/router';
import { AnimalTalking } from '../../Talkings/Animal.Talking';
import { MouseTalking } from '../../components/Mouse/MouseTalking';
import { CroweTalking } from '../../Talkings/CroweTalking';
import { UserViewPopup } from '../../components/admin/user-view-popup';
import { CroweFOXTveAltProgram } from '../Crower/Crower-FOX-tve-alt-program';
import { CroweFOXActualAirings } from '../Crower/Crower-FOX-tve-actual-airings';
import { CroweFOXMouseSearch } from '../Crower/Crower-FOX-Mouse-search';
import { DecodeTalking } from '../../Talkings/decodeTalking';
import { TextDecoder } from 'text-encoding-shim';
declare var kendoCustomReference: any;
declare var searchDateArea: any;
var pako = require('pako');
@Component({
selector: 'Crower',
templateUrl: 'app/components/Crower/Crower.component.html'
})
export class CrowerComponent implements OnInit {
@Input() detailsTemplate;
@Output() CroweTrigger: EventEmitter<any> = new EventEmitter<any>();
@ViewChild(CroweFOXTveAltProgram) public CroweFOXTveAltProgram: CroweFOXTveAltProgram;
@ViewChild(CroweFOXActualAirings) public CroweFOXActualAirings: CroweFOXActualAirings;
@ViewChild(CroweFOXMouseSearch) public CroweFOXMouseSearch: CroweFOXMouseSearch;
constructor(public AnimalTalking: AnimalTalking, private decodeTalking: DecodeTalking, public CroweTalking: CroweTalking, public router: Router, public MouseTalking: MouseTalking) {
}
public eventTemplate;
public targetvalue;
public changevalue;
public _CrowerDataSource;
public dataSourceData = [];
public selectedDay;
public selectedJumping;
public scrollVal = true;
public actualDates;
public specialEvents;
public scrollTalkingCallsave;
public scrollTalkingCalldown = false;
public eventDates;
public categoryType;
public tveDates;
public topdown;
public CrowerOptions;
public template;
public dragStart = false;
public selectedShowType = [];
public copiedEvent = [];
public CroweEventTalking;
public CroweColorEventTalking;
public spanCalcEventTalking;
public datasourceList;
public isCommentContainer = false;
public isClickedEmptySlot = false;
public targetForPaste;
public repeatus;
public isEditable;
public leftRight;
public auditNoEpisodes;
public futureAccessDays
public slotBlockDiff = 0;
@ViewChild(UserViewPopup) public userViewPopup: UserViewPopup;
public currentTarget;
public auditData;
public mouseLeaveCroweContent = 0;
public myWindow;
public windowSchValue;
public isCreateComment = false;
public eventValue;
private keyCurrentEvent = null;
public isctrlKey = false;
public keyDownSourceEvent;
private isCtrlLeft = false;
private weekNoDataSource;
private JumpingDataSource;
public eventWidthHeight;
public CroweStartDate;
public setoriginal;
public CroweEndDate;
public selectedSlotEvent = [];
public selectedSlotTarget = [];
public emptySlotSelect;
public resizeStartTime = 0;
public resizeEndTime = 0;
public shiftEvents = [];
public postJumpingList = [];
public ctrlKey = false;
public eventDESC = [];
public selectedConditionalEvent = 0;
public scrollTalkingCallStarted = false;
private prevSelEvnt = null;
private dragZone;
public contextMenuClick = false;
public isMouseSarch = false;
public rowIndex: any = -1;
public columnIndex: any = -1;
public blockHour = '';
private movementSpeed = 2;
private intervalSpeed = 5;
private runAnimation = false;
private animationSpeed = 50;
private isArrowKeysPressed = false;
private left = false;
private right = false;
private up = false;
private down = false;
private changeStartDur = 0;
private changeEndDur = 0;
private isWhichEnd = "";
private leftStartDate;
private rightEndDate;
private isShiftMove;
private ctrlStartDate;
private ctrlEndDate;
private preEventDataBoundCallMultiTime = true;
private CrowerScrollTop;
private CrowerScrollleft;
private isDrag = false;
private CrowerScrollTopCopy;
public mouseevent = 0;
public mouseeventtop = 0;
public selectedDayPart;
public lastWeekNr;
private isNewSelect = false;
private clickCheck = false;
private searchStart;
private searchEnd;
private destinationEvent: any;
private dblClick = true;
private spanEventTalking;
private spanEventList = [];
private spanEventBool = false;
private spanEndDate;
private spanEndTime;
public runTypeUpdateColor = [];
//weekOfSeason variabled that are used only inside weekOfSeason method
// to improve performance
private seasonWoS = 0
private stWoS: any = null;
private stDateWoS = 15;
private filterStartWoS = null;
private filterEndWoS = null;
private nextStartWoS = null;
private lastWeekWoS = null;
private startWeekWoS = null;
//week of season variables ends here
ngOnInit() {
this.setoriginal = "false";
let that = this;
kendoCustomReference(that);
//$(document).unbind();
$(".chechBoxDropDownMenuList").click(function () {
//$(".NEWS-block").css({"background-color": "red"});
//that.selectedShowType.push("NEWS");
});
that.createDialog("#blockChangePopWith");
that.createDialog("#warningPopup");
that.createDialog("#DeletePopupBlock");
that.createDialog("#repeatPopupBlock");
that.createEventPopup("#eventOpenPopupBlock");
document.addEventListener('mousewheel', function (event) {
let element = $(event.target).parents(".parrotCrower").attr("id");
if (element === 'Crower' && that.CroweTalking.dragStart == false) { // or any other filtering condition
event.preventDefault();
}
}, true);
$(document.body).on("dblclick", ".parrotCrower-table td, .parrotevent", function (e) {
if (e.which) {
if (that.isEditable) {
if (!that.isEditMode()) {
let target = $(e.currentTarget);
//that.blockMenuInit();
if (that.dblClick) {
that.dblClick = false;
that.menuOptionClick("Mouse search", target);
}
setTimeout(function () {
that.dblClick = true;
}, 1600);
// if(target.hasClass("k-event")){
// var Crower = $("#Crower").data("kendoCrower");
// var event = Crower.dataSource.getByUid($(e.currentTarget).attr("data-uid"));
// let getTimeVal = that.changeTimeTS(event['start'],event['end']);
// event['start'] = getTimeVal.startDate;
// event['end']= getTimeVal.endDate;
// that.CroweFOXMouseSearch.MouseSearchWindow(event,"CrowerComp");
// } else {
// let selectedEvents = that.selectedSlotEvent;
// let viewSlot = that.getCrower().view()._resourceBySlot(that.selectedSlotTarget[0]);
// let MouseSelEvents:any = {};
// if(selectedEvents.length==0){
// let JumpingGroup = viewSlot.JumpingWithDay;
// JumpingGroup = JumpingGroup.split("-");
// let dateOfSeason = that.dateOfSeason(viewSlot.week,parseInt(JumpingGroup[1]));
// let actualStartDate = that.getDateWithTime(dateOfSeason,that.selectedSlotTarget[0].startDate);
// let actualEndDate = that.getDateWithTime(dateOfSeason,that.selectedSlotTarget[0].endDate);
// MouseSelEvents["start"] = new Date(that.selectedSlotTarget[0].startDate);
// MouseSelEvents["end"] = new Date(that.selectedSlotTarget[0].endDate);
// }
// if(viewSlot["JumpingWithDay"]!=null && viewSlot["JumpingWithDay"]!=undefined){
// let netNo = viewSlot["JumpingWithDay"].split("-");
// MouseSelEvents["JumpingNo"] = parseInt(netNo[0]);
// MouseSelEvents["dayOfWeekNo"] = parseInt(netNo[1]);
// }
// if(viewSlot["week"]!=null && viewSlot["week"]!=undefined){
// let seaVal = viewSlot["week"].split(" ");
// MouseSelEvents["seasonNo"] = parseInt(seaVal[4]);
// }
// MouseSelEvents["resources"] = viewSlot;
// let getTimeVal = that.changeTimeTS(MouseSelEvents.start,MouseSelEvents.end);
// MouseSelEvents.start = getTimeVal.startDate;
// MouseSelEvents.end = getTimeVal.endDate;
// that.CroweFOXMouseSearch.MouseSearchWindow(MouseSelEvents,"CrowerComp");
// }
} else {
that.singleButtonDialog("Please click on OK or Cancel in Format, Feed, Timing and New Access Guidelines to update the changes.");
}
}
}
});
that.CroweEventTalking = that.CroweTalking.CroweEventReceived.subscribe(params => {
this.isMouseSarch = true;
that.checkAvailability(params, false, false, this._CrowerDataSource._data);
this.isMouseSarch = false;
// let scrollSt = new Date(params.start);
// if(scrollSt.getHours()<19){
// scrollSt.setHours(scrollSt.getHours()+5);
// } else {
// scrollSt.setHours(scrollSt.getHours()-19);
// }
// that.scrollToHour(scrollSt);
});
that.spanCalcEventTalking = that.CroweTalking.spanEvntCalcReceived.subscribe(params => {
that.getSpanList(params);
});
that.CroweColorEventTalking = that.CroweTalking.blockColorEventReceived.subscribe(params => {
that.changeBlockColor();
});
that.CroweEventTalking = that.CroweTalking.MouseSearchFromReceived.subscribe(data => {
if (data != null) {
that.createMouseSearchEvnt(data, true);
}
});
$(window).on('resize', function (e) {
setTimeout(function () {
that.browserResize();
}, 1000);
});
//#CR-19441 & CR-19443 Mouse search showing span Date
this.spanEventTalking = this.CroweTalking.spanEvntReceived.subscribe(params => {
console.log("spanEvent:", params);
this.spanEventList = params;
let totalDuration = 0;
if (this.spanEventList.length > 1) {
this.spanEventBool = true;
let lastEvent = this.spanEventList.length - 1;
let endDate = new Date(this.spanEventList[lastEvent].end);
let dateOfSeasonEnd = new Date(this.spanEventList[lastEvent].clonedEnd)
let endHours = endDate.getHours();
let endMiniutes = endDate.getMinutes();
let endSeconds = endDate.getSeconds();
if (endHours <= 19) {
endHours = endHours + 5;
}
else {
endHours = endHours - 19;
}
let day = dateOfSeasonEnd.getDate().toString();
day = day.length > 1 ? day : '0' + day;
let month = (dateOfSeasonEnd.getMonth() + 1).toString();
month = month.length > 1 ? month : '0' + month;
this.spanEndDate = month + "/" + day + "/" + dateOfSeasonEnd.getFullYear();
this.spanEndTime = this.timeFormation(endHours, endMiniutes, endSeconds);
}
});
}
scrollToHour(stTime: any): any {
// var time = new Date();
// time.setDate(time.getDate()-10);
// time.setHours(hour);
// time.setMinutes(0);
// time.setSeconds(0);
// time.setMilliseconds(0);
// var Crower = $("#Crower").data("kendoCrower");
// var contentDiv = Crower.element.find("div.parrotCrower-content");
// var rows = contentDiv.find("tr");
// for (var i = 0; i < rows.length; i++) {
// var slot = Crower.slotByElement(rows[i]);
// var slotTime = kendo.toString(slot.startDate, "HH:mm");
// var targetTime = kendo.toString(time, "HH:mm");
// if (targetTime === slotTime) {
// //Crower.view()._scrollTo($(rows[i]).find("td:first")[0], contentDiv[0]);
// }
// };
// let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;
// $('th:not(.parrotslot-cell), .parrotCrower-times:eq(1)').each(function () {
// let that= $(this);
// if(that.text().includes(" AM") || that.text().includes(" PM")){
// let timeVal = 0;
// let timeSplit:any = that.text().split(" ");
// let timeCal = timeSplit[0].split(":")
// timeVal = parseInt(timeCal[0])*60+parseInt(timeCal[1]);
// if(timeSplit[1] == "PM" && parseInt(timeCal[0])!=12){
// timeVal = timeVal + 720; //12*60 = 720
// }
// let evntTime = new Date(stTime);
// let evntMin = evntTime.getHours()*60+evntTime.getMinutes();
// if(timeVal<=evntMin && (timeVal+30)>evntMin){
// let scrollVal = that.position().left;
// if($('.parrotCrower-content')[0].scrollLeft<=scrollVal && $('.parrotCrower-content')[0].scrollLeft+500>=scrollVal){
// //do nothing
// } else {
// $('.parrotCrower-content').scrollLeft(scrollVal);
// }
// }
// }
// });
// let scrollSt = new Date(stTime);
// if(scrollSt.getHours()>=5){
// scrollSt.setHours(scrollSt.getHours()-5);
// } else {
// scrollSt.setHours(scrollSt.getHours()+19);
// }
let schWidth = $('.parrotCrower-content').width();
let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;
let totalWidth = cellWidth * 48;// as no. of slots are 48 i.e 5A.M - 5P.M and each hour has 2 slots
let currentScroll = $('.parrotCrower-content')[0].scrollLeft;
let evntTime = new Date(stTime);
evntTime.setHours(evntTime.getHours() + 5);
let eventHours = 0;
if (evntTime.getHours() >= 5) {
eventHours = evntTime.getHours() - 5;
} else {
eventHours = evntTime.getHours() + 19;
}
let eventMin = evntTime.getMinutes() > 30 ? 1 : 0;
let evntScroll = ((eventHours * 2) + eventMin) * cellWidth;
if (evntScroll >= currentScroll && evntScroll <= (currentScroll + schWidth)) {
//Do nothing
} else {
$('.parrotCrower-content').scrollLeft(evntScroll);
}
}
createMouseSearchEvnt(data, isOkBTN): any {
let that = this;
let windowEvent = data;
if (data.fromScreen == "CrowerComp") {
//windowEvent.start = new Date(windowEvent.start);
//windowEvent.end = new Date(windowEvent.end);
//windowEvent.event.start = new Date(windowEvent.start);
//windowEvent.event.end = new Date(windowEvent.end);
if (isOkBTN) {
let getTimeVal = this.changeTimeTSRec(windowEvent.start, windowEvent.end);
windowEvent.event.start = new Date(getTimeVal.startDate);
windowEvent.start = new Date(getTimeVal.startDate);
}
let winStDate = new Date(windowEvent.start)
let JumpingWithDay = windowEvent.resources.JumpingWithDay.split("-");
let actualStart = new Date(this.dateOfSeason(windowEvent.resources.week, JumpingWithDay[1]));
actualStart.setHours(winStDate.getHours(), winStDate.getMinutes(), winStDate.getSeconds());
//let actualEnd=new Date(actualStart);
let duration = windowEvent.event.programLength;
let secondsVal = duration.split(":");
windowEvent.event.programLength = (parseInt(secondsVal[0]) * 60 * 60 + parseInt(secondsVal[1]) * 60 + parseInt(secondsVal[2]));
let actualEnd = new Date(actualStart.getTime() + (windowEvent.event.programLength * 1000));
let windowEventEnd = new Date(windowEvent.event.start.getTime() + (windowEvent.event.programLength * 1000));
windowEvent.event.end = windowEventEnd;
windowEvent.end = windowEventEnd;
//actualEnd.setHours( actualEnd.getHours()+windowEvent.event.programLength)
//let dur = actualEnd.getTime() - actualStart.getTime();
windowEvent['eventActualStart'] = actualStart;
windowEvent['eventActualEnd'] = actualEnd;
windowEvent['eventDuration'] = windowEvent.event.programLength * 1000;
let filterData = [];
let isReplace = false;
let checkDate = new Date(actualStart);
let startDate = that.dateString(new Date(actualStart));
let cloneDataSource = new kendo.data.Query(that._CrowerDataSource._data);
let findData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: startDate
}).data;
findData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
for (let i = 0; i < findData.length; i++) {
let clSt = new Date(findData[i].clonedStart);
let clEnd = new Date(findData[i].clonedEnd);
if (checkDate.getTime() >= clSt.getTime() && checkDate.getTime() < clEnd.getTime()) {
if ((windowEvent.event.seriesNo != -1 && windowEvent.event.seriesNo == findData[i].seriesNo) ||
(windowEvent.event.seriesNo == -1 && windowEvent.event.MouseNo != -1 && windowEvent.event.MouseNo == findData[i].MouseNo)) {
windowEvent.event.spanID = findData[i].spanID;
if (!isOkBTN) {
isReplace = true;
windowEvent.event.exist = true;
} else {
windowEvent.event.exist = true;
}
}
}
}
if (windowEvent.event.exist) {
cloneDataSource = new kendo.data.Query(this._CrowerDataSource._data);
filterData = cloneDataSource.filter({
operator: "eq",
field: "spanID",
value: windowEvent.event.spanID
}).data;
if (filterData.length > 0 && !isOkBTN) {
let filClStart = new Date(filterData[0].clonedStart);
if ((filClStart.getTime() <= windowEvent.eventActualStart.getTime()) &&
(filterData[filterData.length - 1].clonedEnd.getTime() > windowEvent.eventActualStart.getTime())) {
windowEvent.eventActualStart = filClStart;
windowEvent.eventActualEnd = new Date(filterData[filterData.length - 1].clonedEnd);
windowEvent.event.clonedStart = filClStart;
windowEvent.event.clonedEnd = new Date(filterData[filterData.length - 1].clonedEnd);
windowEvent.event.start = new Date(filterData[0].start);
windowEvent.event.end = new Date(filterData[0].end);
windowEvent.start = new Date(filterData[0].start);
windowEvent.end = new Date(filterData[0].end);
windowEvent.event.progDuration = filterData[0].progDuration;
windowEvent.event.programLength = filterData[0].programLength;
isReplace = true;
}
}
}
let list = [windowEvent.event];
if ((windowEvent.event.exist && isOkBTN) || (windowEvent.event.exist && !isOkBTN && isReplace)) {
let sourceEvent = that.getSourceEvents(filterData);
for (let sp = 0; sp < filterData.length; sp++) {
for (let key in windowEvent.event) {
filterData[sp][key] = windowEvent.event[key];
}
filterData[sp]["dirty"] = true;
}
that.getCrower().refresh();
for (let sp = 0; sp < filterData.length; sp++) {
$('div[data-uid="' + filterData[sp].uid + '"]').addClass('k-state-selected');
}
that.sportsPlayersSleeping(filterData[0]);
let destinationEvent = that.getDestinationEvents(filterData);
that.enableSave(sourceEvent, destinationEvent, [], "update")
} else {
this.isMouseSarch = true;
if (windowEvent.event && windowEvent.event.spanID) {
windowEvent.event.spanID = (new Date()).getTime();
windowEvent.event.schedItemNo = 0;
}
if (windowEvent.event.MouseBaseType == "N") {
windowEvent.event["aptShowName"] = windowEvent.event.showName;
} else {
windowEvent.event["episodeName"] = windowEvent.event.episodeName;
}
that.checkAvailability(windowEvent, false, true, list);
this.isMouseSarch = false;
}
}
}
categoryList(categoryType): void {
let that = this;
that.categoryType = categoryType;
that.changeBlockColor();
}
dateCompare(firstStart, secondStart, firstEnd, secondEnd, event): any {
let clonedStart;
let clonedEnd;
let blockDuration;
let fStart = new Date(firstStart);
let sStart = new Date(secondStart);
let fEnd = new Date(firstEnd);
let sEnd = new Date(secondEnd);
if (fEnd.getSeconds() > 30) {
fEnd.setMinutes(fEnd.getMinutes() + 1);
fEnd.setSeconds(0);
} else {
fEnd.setSeconds(0);
};
if (sEnd.getSeconds() > 30) {
sEnd.setMinutes(sEnd.getMinutes() + 1);
sEnd.setSeconds(0);
} else {
sEnd.setSeconds(0);
};
let spanList = this.getSpanEventList(this._CrowerDataSource._data, event);
let sortData = this.arrangeArrayUsingStartDateTime(spanList);
let position = sortData.indexOf(event);
clonedStart = new Date(this.getChangeClonedDate(sortData, fStart, sStart, sortData[0].clonedStart, true, position));
clonedEnd = new Date(this.getChangeClonedDate(sortData, fEnd, sEnd, sortData[sortData.length - 1].clonedEnd, false, position));
blockDuration = clonedEnd.getTime() - clonedStart.getTime();
let result = { "clonedStart": clonedStart, "clonedEnd": clonedEnd, "blockDuration": blockDuration };
return result;
}
getChangeClonedDate(sortData, moveDate, actualDate, clonedDate, isStartDate, position): any {
//let diff=moveDate.getTime()-actualDate.getTime();
let mDate = new Date(moveDate);
mDate.setHours(0, 0, 0, 0);
let aDate = new Date(actualDate);
aDate.setHours(0, 0, 0, 0);
let dateDiff = mDate.getTime() - aDate.getTime();
let diffHours = moveDate.getHours() - actualDate.getHours();
let diffMinutes = moveDate.getMinutes() - actualDate.getMinutes();
let diffSeconds = moveDate.getSeconds() - actualDate.getSeconds();
let millli = ((diffHours * 60 * 60) + (diffMinutes * 60) + diffSeconds) * 1000;
let diff = dateDiff + millli;
let cloned;
if (dateDiff != 0 || diffHours != 0 || diffMinutes != 0 || diffSeconds != 0) {
if (isStartDate) {
cloned = new Date(sortData[position].clonedStart);
} else {
cloned = new Date(sortData[position].clonedEnd);
}
} else {
cloned = new Date(clonedDate);
}
cloned.setTime(cloned.getTime() + diff);
return cloned;
}
CrowerInit(CrowerConfig): void {
searchDateArea = [];
let that = this;
that.datasourceList = [];
//that.selectedSlotEvent=[];
that.dataSourceData = CrowerConfig.dataSourceData;
that.selectedDay = CrowerConfig.selectedDay;
that.selectedJumping = CrowerConfig.selectedJumping;
that.actualDates = CrowerConfig.actualDates;
that.specialEvents = CrowerConfig.specialEvents;
that.eventDates = CrowerConfig.eventDates;
that.categoryType = CrowerConfig.categoryType;
that.tveDates = CrowerConfig.tveDates;
that.weekNoDataSource = CrowerConfig.weekNoDataSource;
that.JumpingDataSource = CrowerConfig.JumpingDataSource;
that.CroweStartDate = CrowerConfig.CroweStartDate.replace(/-/g, "/");
that.CroweEndDate = CrowerConfig.CroweEndDate.replace(/-/g, "/");
that.JumpingDataSource = CrowerConfig.JumpingDataSource;
that.postJumpingList = CrowerConfig.postJumpingList;
that.searchStart = new Date(CrowerConfig.searchStart.replace(/-/g, "/"));
that.searchEnd = new Date(CrowerConfig.searchEnd.replace(/-/g, "/"));
that._CrowerDataSource = new kendo.data.CrowerDataSource({
// offlineStorage: "offline-Animal",
batch: true,
transport: {
read: function (e) {
e.success(that.dataSourceData);
},
parameterMap: function (options, operation) {
if (operation !== "read" && options.models) {
return { models: kendo.stringify(options.models) };
}
}
},
schema: CrowerConfig.CrowerOptions.schema
});
that.datasourceList.push(that._CrowerDataSource._data);
if (that.detailsTemplate) {
that.template = kendo.template(that.detailsTemplate);
that.eventTemplate = `<div class="schedlerCol movie-template #: that.removeSpecialCharacter(programType) #-block Animal#: schedItemNo #: runtypechecked-#: displayRunTypeName #">
<span class="schedlerColShowName nowrapName">#: MouseBaseType=='N'?episodeDisplayName: programName #</span>
<br class=#: MouseBaseType=='N'?episodeDisplayName==""?"":"displayNone":programName==""?"":"displayNone" #>
<span data-nowrap="nowrap" class=#: displayMouseName==""?"schedlerColShowId":MouseNo==-1&&seriesNo==-1?"schedlerColShowId":"displayMouseWrapper" #>#: displayMouseName==""?MouseBaseType!='N'?episodeDisplayName:"":displayMouseName #</span>
<br class=#: MouseBaseType=='N'?displayMouseName==""?"":"displayNone":displayMouseName==""&&episodeDisplayName==""?"":"displayNone" #>
<br class=#: (displayMouseName==""||(MouseNo==-1&&seriesNo==-1))?"displayNone":"" #>
<div class="nationalCrowerEventComments">
<span class="schedlerColShowId CroweEventBlock">#: MouseNo==-1&&seriesNo==-1?"":pgRatingData.replace("TV-","") #</span>
<span class="schedlerColShowId CroweEventBlock">#: displayMouseText #</span>
<span class="schedlerColShowId CroweEventBlock">#: MouseNo==-1&&seriesNo==-1?"":runType==""?"":"["+runType+"]" #</span>
<span class="schedlerColShowId CroweEventBlock">#: MouseNo==-1&&seriesNo==-1?"":hd=="N"?"SD":"" #</span>
<span class="CroweEventBlock"><span class=#: MouseNo==-1&&seriesNo==-1?"":bookedFlag=="EB"?"":"bookEnabled" #>#: MouseNo==-1&&seriesNo==-1?"":bookedFlag=="EB"?"":"NB" #</span></span>
<span class="CroweEventBlock"><span class=#: MouseNo==-1&&seriesNo==-1?"":live=="Y"?"liveEnabled":"" #>#: MouseNo==-1&&seriesNo==-1?"":live=="Y"?"L":"" #</span></span>
<span class="CroweEventBlock"><span class=#: MouseNo==-1&&seriesNo==-1?"":translation=="Y"?"":"translationEnabled" #>#: MouseNo==-1&&seriesNo==-1?"":translation=="Y"?"":"NT" #</span></span></div>
<!--<span class="CrowerContextMenuRow"><span class="contextMenuRow"></span></span>-->
<div class="previousTimeSlot #:isReverse?'':'displayNone'#"><span class="fa fa-backward"></span></div><div class="nextTimeSlot #:isForward?'':'displayNone'#"><span class="fa fa-forward"></span></div>
</div>`;
let options = {
date: new Date(CrowerConfig.CrowerOptions.date),
startTime: CrowerConfig.CrowerOptions.startTime,
height: CrowerConfig.CrowerOptions.height,
views: CrowerConfig.CrowerOptions.views,
selectable: false,
timezone: CrowerConfig.CrowerOptions.timezone,
dataSource: that._CrowerDataSource,
group: CrowerConfig.CrowerOptions.group,
resources: CrowerConfig.CrowerOptions.resources,
snap: CrowerConfig.CrowerOptions.snap,
allDaySlot: false,
editable: {
template: that.template,
confirmation: false,
destroy: false,
resize: that.isEditable,
move: that.isEditable,
update: false
},
eventTemplate: that.eventTemplate,
groupHeaderTemplate: CrowerConfig.CrowerOptions.groupHeaderTemplate,
edit: function (e) {
e.preventDefault(); //prevent popup editing
//$(".NEWS-block").css({"background-color": "red"});
let dataSource = this.dataSource;
let event = e.event;
that.eventValue = e;
if (event.isNew()) {
//that.sportsPlayersSleeping(event);
} else {
if (!event.dirty) {
//event.MouseName="Leee";
//event.dirty = false;
}
//that.sportsPlayersSleeping(event);
}
}, add: function (e) {
e.preventDefault();
//this.dataSource.add(e.event);
//let Crower = $("#Crower").data("kendoCrower");
//Crower.saveEvent();
//Crower.refresh();
},
resizeEnd: function (currentResizeEvent) {
let actualDates = that.dateCompare(currentResizeEvent.start, currentResizeEvent.event.start, currentResizeEvent.end, currentResizeEvent.event.end, currentResizeEvent.event);
//let result={"clonedStart":clonedStart,"clonedEnd":clonedEnd,"blockDuration":blockDuration};
var t0 = performance.now();
if (!$("#snapFlag").is(":checked")) {
let clEnd = new Date(actualDates.clonedEnd);
let evntEnd = new Date(currentResizeEvent.event.end);
let clStart = new Date(actualDates.clonedStart);
let evntStart = new Date(currentResizeEvent.event.start);
if ((clStart.getHours() == evntStart.getHours()) &&
(clStart.getMinutes() == evntStart.getMinutes()) &&
(clStart.getSeconds() == evntStart.getSeconds())) {
let clDur = (clEnd.getTime() - clStart.getTime()) / 1000;
let clRemainder = clDur % 60;
if (clRemainder >= 30) {
clDur = clDur - clRemainder + 60;//move to next minute
} else {
clDur = clDur - clRemainder;
}
actualDates.clonedEnd = new Date(clStart.getTime() + (clDur * 1000));
actualDates.blockDuration = clDur * 1000;
let originalStart = new Date(currentResizeEvent.start);
currentResizeEvent.end = new Date(originalStart.getTime() + actualDates.blockDuration);
} else if ((clEnd.getHours() == evntEnd.getHours()) &&
(clEnd.getMinutes() == evntEnd.getMinutes()) &&
(clEnd.getSeconds() == evntEnd.getSeconds())) {
let clDur = (clEnd.getTime() - clStart.getTime()) / 1000;
let clRemainder = clDur % 60;
if (clRemainder >= 30) {
clDur = clDur - clRemainder + 60;//move to next minute
} else {
clDur = clDur - clRemainder;
}
actualDates.clonedStart = new Date(clEnd.getTime() - (clDur * 1000));
actualDates.blockDuration = clDur * 1000;
let originalEnd = new Date(currentResizeEvent.end);
currentResizeEvent.start = new Date(originalEnd.getTime() - actualDates.blockDuration);
}
}
var t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.");
//alert("resizeEnd Call to doSomething took " + (t1 - t0) + " milliseconds.");
var currentResizeEvent0 = performance.now();
currentResizeEvent['eventActualStart'] = actualDates.clonedStart;
currentResizeEvent['eventActualEnd'] = actualDates.clonedEnd;
currentResizeEvent['eventDuration'] = actualDates.blockDuration;
var currentResizeEvent1 = performance.now();
that.checkAvailability(currentResizeEvent, true, false, that._CrowerDataSource._data);
var currentResizeEvent2 = performance.now();
console.log("Call to doSomething took " + (currentResizeEvent1 - currentResizeEvent0) + " milliseconds.");
//alert("currentResizeEvent1 Call to doSomething took " + (currentResizeEvent1 - currentResizeEvent0) + " milliseconds.");
//alert("currentResizeEvent2 Call to doSomething took " + (currentResizeEvent2 - currentResizeEvent1) + " milliseconds.");
},
moveEnd: function (currentMoveEvent) {
let chkDrop = that.checkValidDrop(currentMoveEvent);
//check if drop is outside the Crowe range
that.mouseLeaveCroweContent = 0;
that.isDrag = false;
that.dragZone.empty();
that.dragStart = false;
if (!chkDrop) {
currentMoveEvent.preventDefault();
return;
}
let evStart = new Date(currentMoveEvent.start);
let evEnd = new Date(currentMoveEvent.end);
let evDuration = evEnd.getTime() - evStart.getTime();
let evSeconds = evStart.getSeconds();
if (evSeconds != 0) {
evStart.setSeconds(0);
}
currentMoveEvent.start = new Date(evStart);
currentMoveEvent.end = new Date(evStart.getTime() + evDuration);
let startChange = that.getMacSupportDate(currentMoveEvent.start);
startChange.setTime(startChange.getTime() - that.slotBlockDiff * 1000);
currentMoveEvent.start = startChange;
let endChange = that.getMacSupportDate(currentMoveEvent.end);
endChange.setTime(endChange.getTime() - that.slotBlockDiff * 1000);
currentMoveEvent.end = endChange;
let clonedChangeStart = that.getMacSupportDate(currentMoveEvent.event.clonedStart);
clonedChangeStart.setTime(clonedChangeStart.getTime() - that.slotBlockDiff * 1000)
currentMoveEvent.event.clonedStart = clonedChangeStart;
let clonedChangeEnd = that.getMacSupportDate(currentMoveEvent.event.clonedEnd);
clonedChangeEnd.setTime(clonedChangeEnd.getTime() - that.slotBlockDiff * 1000);
currentMoveEvent.event.clonedEnd = clonedChangeEnd;
// currentMoveEvent.start.setTime(currentMoveEvent.start.getTime() - that.slotBlockDiff*1000);
// currentMoveEvent.end.setTime(currentMoveEvent.end.getTime() - that.slotBlockDiff*1000);
// currentMoveEvent.event.clonedStart.setTime(currentMoveEvent.event.clonedStart.getTime() - that.slotBlockDiff*1000)
// currentMoveEvent.event.clonedEnd.setTime(currentMoveEvent.event.clonedEnd.getTime() - that.slotBlockDiff*1000)
let JumpingWithDay = currentMoveEvent.resources.JumpingWithDay.split("-");
let duration = new Date(currentMoveEvent.event.clonedEnd).getTime() - new Date(currentMoveEvent.event.clonedStart).getTime();
let startDate = new Date(currentMoveEvent.start);
let actualStart = new Date(that.dateOfSeason(currentMoveEvent.resources.week, JumpingWithDay[1]));
actualStart.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
let actualEnd = new Date(actualStart);
actualEnd.setTime(actualEnd.getTime() + duration);
if (that.ctrlKey) {
currentMoveEvent.preventDefault();
let pastePlace = { "resourceBySlot": currentMoveEvent.resources, "startDate": currentMoveEvent.start, "endDate": currentMoveEvent.end };
that.pastOperation(pastePlace, that.selectedSlotEvent, true);//that.selectedSlotEvent
that.ctrlKey = false;
} else {
if (that.selectedSlotEvent.length == 1) {
if (actualStart.getDate() != actualEnd.getDate() && actualEnd.getHours() != 0 && actualEnd.getMinutes() != 0 && actualEnd.getSeconds() != 0) {
actualStart.setHours(0, 0, 0, 0);
actualEnd.setTime(actualStart.getTime() + duration);
currentMoveEvent.start = new Date();
currentMoveEvent.start.setHours(0, 0, 0, 0);
currentMoveEvent.end = new Date(currentMoveEvent.start);
currentMoveEvent.end.setTime(currentMoveEvent.end.getTime() + duration);
}
currentMoveEvent['eventActualStart'] = actualStart;
currentMoveEvent['eventActualEnd'] = actualEnd;
currentMoveEvent['eventDuration'] = duration;
that.checkAvailability(currentMoveEvent, true, false, that._CrowerDataSource._data);
//that.sportsPlayersSleeping(currentMoveEvent);
} else {
for (let i = 0; i < that.selectedSlotEvent.length; i++) {
if (i != 0) {
let stDate = new Date(that.selectedSlotEvent[i].start);
let endDate = new Date(that.selectedSlotEvent[i].end);
stDate.setTime(stDate.getTime() - that.slotBlockDiff * 1000);
endDate.setTime(endDate.getTime() - that.slotBlockDiff * 1000);
that.selectedSlotEvent[i].start = stDate;
that.selectedSlotEvent[i].end = endDate;
let clStDate = new Date(that.selectedSlotEvent[i].clonedStart);
let clEdDate = new Date(that.selectedSlotEvent[i].clonedEnd);
clStDate.setTime(clStDate.getTime() - that.slotBlockDiff * 1000);
clEdDate.setTime(clEdDate.getTime() - that.slotBlockDiff * 1000);
that.selectedSlotEvent[i].clonedStart = clStDate;
that.selectedSlotEvent[i].clonedEnd = clEdDate;
}
}
currentMoveEvent.preventDefault();
let pastePlace = { "resourceBySlot": currentMoveEvent.resources, "startDate": currentMoveEvent.start, "endDate": currentMoveEvent.end };
that.pastOperation(pastePlace, that.selectedSlotEvent, false);//that.selectedSlotEvent//[currentMoveEvent.event]
}
}
//let scrHt = $('.parrotCrower-content')[0].scrollHeight;
//$('.parrotCrower-content').scrollTop(scrHt/2);
$('.parrotCrower-content').scrollTop(that.CrowerScrollTopCopy);
that.slotBlockDiff = 0;
},
change: function (e) {
that.CrowerChange(e);
},
dataBound: function (e) {
if (that.preEventDataBoundCallMultiTime) {
that.preEventDataBoundCallMultiTime = false;
that.changeBlockColor();
that.preEventDataBoundCallMultiTime = true;
}
that.createDropArea(this);
// that.auditOptions();
//that.datasourceList.push(that._CrowerDataSource._data);
that.resetCrowerHeight();
that.resetTimeHeader();
/* var widget = $("#Crower").data("kendoCrower");
var height = $(window).outerHeight();
//size widget to take the whole view
widget.element.height(height);
widget.resize(true);*/
that.updateHourlyBlock();
},
moveStart: function (e) {
that.CrowerScrollTopCopy = $('.parrotCrower-content').scrollTop();
//that.CrowerScrollleft = $('.parrotCrower-content').scrollLeft();
},
move: function (e) {
that.dragStart = true;
if (that.isEditable) {
//that.CrowerEvntMoveAnimation(e);
that.CroweAnimate(e);
}
},
resize: function (e) {
let endTime = e.end;
let startTime = e.start;
var start = new Date(startTime);
var end = new Date(endTime);
that.resizeStartTime = that.formatTimeWithoutSec(start);
that.resizeEndTime = that.formatTimeWithoutSec(end);
},
resizeStart: function (e) {
setInterval(function () {
$(".parrotCrower-marquee .parrotlabel-top").html(that.resizeStartTime + "");
$(".parrotCrower-marquee .parrotlabel-bottom").html(that.resizeEndTime + "");
}, 0);
}
};
if ($("#Crower").data("kendoCrower")) {
var Crower = $("#Crower").data("kendoCrower");
Crower.destroy();
//Crower.delete();
Crower.wrapper.unbind();
}
$("#Crower").kendoCrower(options);
$("#Crower").data("kendoCrower").dataSource.online(false);
var Crower = $("#Crower").data("kendoCrower");
if (that.postJumpingList.length == 1) {
$("#Crower").addClass("singleJumping");
} else {
$("#Crower").removeClass("singleJumping");
}
var snapFlag = false;
if ($("#snapFlag").is(":checked"))
snapFlag = true;
Crower.options.snap = snapFlag;
(<any>$("#Crower")).getKendoCrower().resources[0].dataSource.read();
//that.daySelection();
let dayPartEvent = true;
// that.CroweTalking.daypartEvent(dayPartEvent);
//that.insertResources();
that.resetGroupHeader();
if (Crower) {
Crower.resize(true);
}
that.resetHeaderTemplate();
that.timeSlotText();
//that.blockMenuInit();
$(window).blur(function (event) {
let contextMenu = $("#context-menuSchAnimal").data("kendoContextMenu");
if (contextMenu) {
contextMenu.close($("#context-menuSchAnimal"));
}
});
//Crower.wrapper.on("keydown", ".parrotCrower-table td, .parrotevent", function(event) {
$(document).unbind('keydown').keydown(function (event) {
if (!that.isEditMode() || $("#dance").find('textarea').is(":focus") || $("#dance").find('input[type="text"]').is(":focus")) {
if (window.getSelection().toString() == "" && $("#Crower").is(":visible")) {
that.ctrlKey = event.ctrlKey;
//that.accessFutureDays(that,"");
var overLay = $(document).find(".parrotoverlay");
if (overLay.length > 0 && !overLay.is(":hidden")) {
return;
}
if (!event.ctrlKey && event.keyCode != 46 && event.keyCode != 16 && event.keyCode != 13 && that.selectedSlotEvent.length == 0) {
let key = event.key;
if (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) {
if (that.isEditable) {
if (event.key == undefined) {
if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 65 && event.keyCode <= 90) || (event.keyCode >= 96 && event.keyCode <= 111)) {
that.createComment(that, String.fromCharCode(event.keyCode));
}
} else {
if (event.key.length == 1) {
that.createComment(that, key);
}
}
}
}
} else {
if (event.keyCode == 13) {
if ($("#comment1Text").is(":focus")) {
$("#comment1Text").trigger('blur');
} else if ($("#comment2Text").is(":focus")) {
$("#comment2Text").trigger('blur');
} else if ($("#comment3Text").is(":focus")) {
$("#comment3Text").trigger('blur');
}
}
}
if (event.keyCode == 36) {
if (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) {
that.getCrower().select(null);
$('.parrotCrower-content').scrollTop(0);
$('.parrotCrower-content').scrollLeft(0);
$('.parrotCrower-content .parrotCrower-table > tbody > tr:first-child > td:first-child').addClass('k-state-selected');
$('.parrotCrower-content .parrotCrower-table > tbody > tr:first-child > td:first-child').trigger('click');
that.selectedSlotTarget = [that.getCrower().slotByElement($('.parrotCrower-content .parrotCrower-table > tbody > tr:first-child > td:first-child'))];
}
//var slot = that.getCrower().slotByPosition(100,600);
}
else if (event.keyCode == 35) {
if (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) {
that.getCrower().select(null);
$('.parrotCrower-content').scrollTop(5000);
$('.parrotCrower-content').scrollLeft(5000);
$('.parrotCrower-content .parrotCrower-table > tbody > tr:last-child > td:last-child').attr('aria-selected', 'true');
$('.parrotCrower-content .parrotCrower-table > tbody > tr:last-child > td:last-child').addClass('k-state-selected');
$('.parrotstate-selected').dblclick();
// var slot = that.getCrower().slotByPosition(100,1600);
}
}
else if (event.keyCode == 34) {
$('.parrotCrower-content').scrollTop($('.parrotCrower-content').scrollTop() + 200);
// $('.parrotCrower-content').scrollLeft(0);
}
else if (event.keyCode == 33) {
$('.parrotCrower-content').scrollTop($('.parrotCrower-content').scrollTop() - 200);
// $('.parrotCrower-content').scrollLeft(0);
}
else if (event.keyCode == 27) {
let contextMenu = $("#context-menuSchAnimal").data("kendoContextMenu");
if (contextMenu) {
contextMenu.close($("#context-menuSchAnimal"));
}
}
else if (event.keyCode == 9) {
event.preventDefault();
if ($("#comment1Text").is(":focus") || $("#comment2Text").is(":focus") || $("#comment3Text").is(":focus")) {
if ($("#comment1Text").is(":focus")) {
if (event.shiftKey)
$("#comment3Text").trigger("focus");
else
$("#comment2Text").trigger("focus");
}
else if ($("#comment2Text").is(":focus")) {
if (event.shiftKey)
$("#comment1Text").trigger("focus");
else
$("#comment3Text").trigger("focus");
}
else if ($("#comment3Text").is(":focus")) {
if (event.shiftKey)
$("#comment2Text").trigger("focus");
else
$("#comment1Text").trigger("focus");
}
}
else {
let uid = that.selectedSlotEvent[0].uid;
let currentevent = that.getEventByUid(uid);
let cloneData = that._CrowerDataSource._data;
cloneData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
let spanPosition = -1;
let nextEvent;
let nextEventId;
for (let i = 0; i < cloneData.length; i++) {
if (cloneData[i].uid == uid) {
if (event.shiftKey) {
spanPosition = i - 1;
} else {
spanPosition = i + 1;
}
nextEvent = cloneData[spanPosition];
nextEventId = cloneData[spanPosition].uid;
}
}
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + nextEventId + '"]'));
that.getCrower().select(null);
that.getCrower().select([nextEventId]);
let filterData = that.getSpanEventList(that._CrowerDataSource._data, nextEvent);
if (filterData.length > 1) {
that.selectedSlotEvent = [];
that.selectedSlotTarget = [];
for (let e = 0; e < filterData.length; e++) {
let uid = filterData[e].uid;
that.selectedSlotEvent.push(filterData[e]);
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid + '"]'));
that.selectedSlotTarget.push(selectedSlot);
}
that.multiSelectEvent();
}
else {
that.selectedSlotEvent = [nextEvent];
that.selectedSlotTarget = [selectedSlot];
}
that.scrollToHour(new Date(nextEvent.start));
that.sportsPlayersSleeping(nextEvent);
//that.addOrRemoveSelectedEvent(nextEvent,false);
// that.eventScroll(nextEvent);
}
}
else if (event.keyCode == 38 || event.keyCode == 40) {
if ($("#comment1Text").is(":focus")) {
if (event.keyCode == 38)
$("#comment3Text").trigger("focus");
else
$("#comment2Text").trigger("focus");
}
else if ($("#comment2Text").is(":focus")) {
if (event.keyCode == 38)
$("#comment1Text").trigger("focus");
else
$("#comment3Text").trigger("focus");
}
else if ($("#comment3Text").is(":focus")) {
if (event.keyCode == 38)
$("#comment2Text").trigger("focus");
else
$("#comment1Text").trigger("focus");
}
} else if ((event.shiftKey && event.keyCode == 113) || event.keyCode == 93) { //shift+F10 or keyboard right click
that.contextMenuClick = true;
$(this).bind("contextmenu", function (e) {
e.preventDefault();
});
let contextMenu = $("#context-menuSchAnimal").data("kendoContextMenu");
if (!$("#context-menuSchAnimal").is(":visible")) {
contextMenu.open($('#Crower'));
}
}
if (event.keyCode == 113 && that.isEditable) { //F2
let selectedEvent = that.getCrower()._selection;
let uid = that.selectedSlotEvent[0].uid;
let currentevent = that.getEventByUid(uid);
if ((currentevent.seriesNo == -1 && currentevent.MouseNo == -1) || currentevent.MouseBaseType == "N") {
$(".parrotCrower-content #commentContainer").remove();
that.commentOverlay(currentevent, false);
} else {
$(".parrotCrower-content #eventNameDD").remove();
that.eventOverlay(currentevent);
}
return false;
} else if (event.keyCode == 13) {
return false;
}
if (event.ctrlKey) {
that.isctrlKey = true;
let code = "code";
if (event.originalEvent[code] == "ControlLeft") {
that.isCtrlLeft = true;
}
else if (event.originalEvent[code] == "ControlRight") {
that.isCtrlLeft = false;
}
}
else {
that.isctrlKey = false;
}
if ((event.keyCode == 46 || (navigator.platform && navigator.platform.includes("Mac") && event.keyCode == 8)) && that.isEditable) {
if (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) {
let eventList = that.selectedSlotEvent;
if (eventList.length > 0) {
that.deleteBlock(eventList);
}
}
} else if (event.ctrlKey && event.keyCode == 86) {
if (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) {
if (that.selectedSlotTarget && that.selectedSlotTarget.length > 0) {
let target = that.selectedSlotTarget;
let Crower = that.getCrower();
let resourceBySlot = Crower.view()._resourceBySlot(target[0]);
let startDate = target[0].startDate;
let endDate = target[0].endDate;
let pastePlace = { "resourceBySlot": resourceBySlot, "startDate": startDate, "endDate": endDate };
that.pastOperation(pastePlace, that.copiedEvent, true);
}
}
} else if (event.ctrlKey && event.keyCode == 67 && that.isEditable) {
let selectedEvents = that.selectedSlotEvent;
if (selectedEvents.length > 0) {
that.copiedEvent = selectedEvents;
//that.targetForPaste = that.selectedSlotTarget;
}
} else if (event.ctrlKey && event.keyCode == 88 && that.isEditable && (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus"))) {
let selectedEvents = that.selectedSlotEvent;
if (selectedEvents.length > 0) {
that.copiedEvent = selectedEvents;
//that.targetForPaste = that.selectedSlotTarget;
that.deleteBlock(selectedEvents);
}
} else if ((event.keyCode == 39 || event.keyCode == 37) && !event.shiftKey && !event.ctrlKey && (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) && !($("#comment1Text").is(":focus") || $("#comment2Text").is(":focus") || $("#comment3Text").is(":focus"))) {
that.rowIndex = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').parent().index();
that.columnIndex = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').index();
let consDays = that.checkConsucutiveDay(event.keyCode);
if (!consDays.isValid && ((that.columnIndex == 0 && event.keyCode == 37) || (that.columnIndex == 47 && event.keyCode == 39))) {
//do nothing
} else {
let clonedStartCurrent = null;
if (that.selectedSlotEvent.length > 0) {
if (event.keyCode == 37) {
clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedStart);
} else {
clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedEnd);
}
let evntTime = new Date(clonedStartCurrent);
let eventMin = evntTime.getMinutes() >= 30 ? 1 : 0;
let colInd = (evntTime.getHours() * 2) + eventMin;
let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
let checkSlot = null;
for (let ct = 0; ct < rowCount; ct++) {
checkSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + ct + ") > td:eq(0)"));
let curTarget = that.getCrower().view()._resourceBySlot(checkSlot);
let JumpingDay = curTarget.JumpingWithDay.split("-");
let curStart = new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
if (curStart.getDate() == clonedStartCurrent.getDate() &&
curStart.getMonth() == clonedStartCurrent.getMonth() &&
curStart.getFullYear() == clonedStartCurrent.getFullYear()) {
that.rowIndex = ct;
}
}
if (!consDays.isValid && ((that.columnIndex == 0 && event.keyCode == 37) || (that.columnIndex == 47 && event.keyCode == 39))) {
//do nothing
} else if (consDays.isValid && ((colInd == 0 || colInd == 47) && (event.keyCode == 39 || event.keyCode == 37))) {
if (event.keyCode == 37) {
that.columnIndex = 47;
that.rowIndex = that.rowIndex - 1;
} else {
that.columnIndex = 0;
that.rowIndex = that.rowIndex + 1;
}
clonedStartCurrent = new Date(consDays.nextDay)
that.moveEventRightLeft(new Date(clonedStartCurrent), event.keyCode, true);
} else {
that.columnIndex = colInd;
that.moveEventRightLeft(new Date(clonedStartCurrent), event.keyCode, false);
}
} else {
let selectedSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")"));
that.selectedSlotTarget = [selectedSlot];
let nextTarget = that.getCrower().view()._resourceBySlot(that.selectedSlotTarget[0]);
let JumpingWithDay = nextTarget.JumpingWithDay.split("-");
let clonedStart = new Date(that.dateOfSeason(nextTarget.week, JumpingWithDay[1]));
if (event.keyCode == 37) {
clonedStartCurrent = that.getDateWithTime(clonedStart, that.selectedSlotTarget[0].startDate);
} else {
clonedStartCurrent = that.getDateWithTime(clonedStart, that.selectedSlotTarget[0].endDate);
}
if (!consDays.isValid && ((that.columnIndex == 0 && event.keyCode == 37) || (that.columnIndex == 47 && event.keyCode == 39))) {
//do nothing
} else if (consDays.isValid && ((that.columnIndex == 0 && event.keyCode == 37) || (that.columnIndex == 47 && event.keyCode == 39))) {
clonedStartCurrent = new Date(consDays.nextDay)
if (event.keyCode == 37) {
that.columnIndex = 47;
that.rowIndex = that.rowIndex - 1;
} else {
that.columnIndex = 0;
that.rowIndex = that.rowIndex + 1;
}
that.moveEventRightLeft(new Date(clonedStartCurrent), event.keyCode, true);
} else {
that.moveEventRightLeft(new Date(clonedStartCurrent), event.keyCode, false);
}
}
//that.rowIndex = that.rowIndex + addVal;
// $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').removeClass('k-state-selected');
// $(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq("+that.rowIndex+") > td:eq("+that.columnIndex+")").addClass("k-state-selected");
//that.getCrower().select(null);
}
} else if ((event.keyCode == 38 || event.keyCode == 40) && !event.shiftKey && !event.ctrlKey && (!$("#dance").find('input[type="text"]').is(":focus") && !$("#dance").find('textarea').is(":focus")) && !($("#comment1Text").is(":focus") || $("#comment2Text").is(":focus") || $("#comment3Text").is(":focus"))) {
that.rowIndex = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').parent().index();
that.columnIndex = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').index();
let addVal = 1;
if (event.keyCode == 38) {
addVal = -1
}
if ((that.rowIndex == 0 && event.keyCode == 38) || (that.rowIndex == $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length - 1 && event.keyCode == 40)) {
//do nothing
} else {
let clonedStartCurrent = null;
if (that.selectedSlotEvent.length > 0) {
clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedStart);
let evntTime = new Date(clonedStartCurrent);
let eventMin = evntTime.getMinutes() >= 30 ? 1 : 0;
let colInd = (evntTime.getHours() * 2) + eventMin;
that.columnIndex = colInd;
let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
let checkSlot = null;
for (let ct = 0; ct < rowCount; ct++) {
checkSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + ct + ") > td:eq(0)"));
let curTarget = that.getCrower().view()._resourceBySlot(checkSlot);
let JumpingDay = curTarget.JumpingWithDay.split("-");
let curStart = new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
if (curStart.getDate() == clonedStartCurrent.getDate() &&
curStart.getMonth() == clonedStartCurrent.getMonth() &&
curStart.getFullYear() == clonedStartCurrent.getFullYear()) {
that.rowIndex = ct;
}
}
}
if ((that.rowIndex == 0 && event.keyCode == 38) || (that.rowIndex == $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length - 1 && event.keyCode == 40)) {
//do nothing
} else {
that.rowIndex = that.rowIndex + addVal;
// $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').removeClass('k-state-selected');
// $(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq("+that.rowIndex+") > td:eq("+that.columnIndex+")").addClass("k-state-selected");
//that.getCrower().select(null);
let selectedSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")"));
that.selectedSlotTarget = [selectedSlot];
let nextTarget = that.getCrower().view()._resourceBySlot(that.selectedSlotTarget[0]);
let JumpingWithDay = nextTarget.JumpingWithDay.split("-");
let clonedStart = new Date(that.dateOfSeason(nextTarget.week, JumpingWithDay[1]));
clonedStartCurrent = that.getDateWithTime(clonedStart, that.selectedSlotTarget[0].startDate);
that.moveEventUpDown(new Date(clonedStartCurrent));
}
}
}
if ((event.shiftKey && event.keyCode == 37) || (event.shiftKey && event.keyCode == 39) ||
(event.ctrlKey && event.keyCode == 37) || (event.ctrlKey && event.keyCode == 39)) {
if (that.isEditable) {
if (event.keyCode == 37) { that.left = true; }
if (event.keyCode == 39) { that.right = true; }
if (event.keyCode == 38) { that.up = true; }
if (event.keyCode == 40) { that.down = true; }
if (event.ctrlKey) {
if (that.selectedSlotEvent && that.selectedSlotEvent.length > 0) {
let uid = that.selectedSlotEvent[0].uid;
let currentevent = that.getEventByUid(uid);
that.keyCurrentEvent = currentevent;
if (that.selectedSlotEvent.length == 1) {
that.keyboardEventCtrlMove(event);
}
}
} else {
if (that.selectedSlotEvent.length == 1) {
that.keyboardEventMove();
}
}
}
}
}
} else {
if (!event.altKey) {
that.singleButtonDialog("Please click on OK or Cancel in Feed, Timing and New Access Guidelines to update the changes.");
}
}
});
$(document).on("keyup", function (event) {
that.ctrlKey = event.ctrlKey;
let keyRelease = true;
if (event.keyCode == 37) { that.left = false; that.isArrowKeysPressed = true; }
if (event.keyCode == 39) { that.right = false; that.isArrowKeysPressed = true; }
if (event.keyCode == 38) { that.up = false; that.isArrowKeysPressed = false; }
if (event.keyCode == 40) { that.down = false; that.isArrowKeysPressed = false; }
if (event.ctrlKey || event.shiftKey) {
if (that.keyCurrentEvent && that.isEditable) {
if (that.isShiftMove) {
that.isShiftMove = false;
that.keyDownSourceEvent = that.getSourceEvents([that.keyCurrentEvent]);
let startDateMove = new Date(that.keyCurrentEvent.start);
startDateMove.setSeconds(startDateMove.getSeconds() + that.changeStartDur);
let endDateMove = new Date(that.keyCurrentEvent.end);
endDateMove.setSeconds(endDateMove.getSeconds() + that.changeEndDur);
let timeDifference: any = (endDateMove.getTime() - startDateMove.getTime()) / 1000;
let timeDuration: any = (endDateMove.getTime() - startDateMove.getTime());
let calculateStartDate = new Date(startDateMove);
let calculateEndDate = new Date(endDateMove);
if (that.isWhichEnd.indexOf("leftReachedEnd") != -1) {
calculateStartDate = that.leftStartDate;
calculateEndDate.setTime(calculateStartDate.getTime() + timeDuration);
} else if (that.isWhichEnd.indexOf("rightReachedEnd") != -1) {
calculateEndDate.setHours(that.rightEndDate.getHours(), that.rightEndDate.getMinutes(), that.rightEndDate.getSeconds());
calculateStartDate.setTime(calculateEndDate.getTime() - timeDuration);
}
that.keyCurrentEvent["programLength"] = timeDifference;
let prevStartDate = that.keyCurrentEvent["start"];
let prevEndDate = that.keyCurrentEvent["end"];
that.keyCurrentEvent["start"] = calculateStartDate;
that.keyCurrentEvent["end"] = calculateEndDate;
let startMinDiff = (((prevStartDate.getHours() * 60) + prevStartDate.getMinutes()) - ((that.keyCurrentEvent["start"].getHours() * 60) + that.keyCurrentEvent["start"].getMinutes()));
let endMinDiff = (((prevEndDate.getHours() * 60) + prevEndDate.getMinutes()) - ((that.keyCurrentEvent["end"].getHours() * 60) + that.keyCurrentEvent["end"].getMinutes()));
if ((startMinDiff > 2 && endMinDiff > 2) || (startMinDiff < -2 && endMinDiff < -2)) {
that.keyCurrentEvent.set("bookedFlag", "NB");
}
} else {
that.keyDownSourceEvent = that.getSourceEvents([that.keyCurrentEvent]);
let timeDifference: any = (that.ctrlEndDate.getTime() - that.ctrlStartDate.getTime()) / 1000;
if (that.ctrlEndDate.getTime() == (new Date(that.keyCurrentEvent["end"])).getTime() && that.ctrlStartDate.getTime() == (new Date(that.keyCurrentEvent["start"])).getTime()) {
that.changeStartDur = 0;
that.changeEndDur = 0;
return;
}
let prevProgramLength = that.keyCurrentEvent["programLength"];
that.keyCurrentEvent["programLength"] = timeDifference;
that.keyCurrentEvent["start"] = that.ctrlStartDate;
that.keyCurrentEvent["end"] = that.ctrlEndDate;
if ((timeDifference - prevProgramLength) > 300 || (prevProgramLength - timeDifference) > 300) {
that.keyCurrentEvent.set("bookedFlag", "NB");
}
}
that.changeStartDur = 0;
that.changeEndDur = 0;
that.keyCurrentEvent.set("clonedStart", that.getDateWithTime(that.keyCurrentEvent.clonedStart, that.keyCurrentEvent.start));
that.keyCurrentEvent.set("clonedEnd", that.getDateWithTime(that.keyCurrentEvent.clonedEnd, that.keyCurrentEvent.end));
that.destinationEvent = that.getDestinationEvents([that.keyCurrentEvent]);
that.sportsPlayersSleeping(that.keyCurrentEvent);
$('div[data-uid="' + that.keyCurrentEvent.uid + '"]').addClass('k-state-selected');
that.keyCurrentEvent = null;
}
} else if ((event.keyCode == 16 || event.keyCode == 17) && that.isArrowKeysPressed) {
that.isArrowKeysPressed = false;
that.enableSave(that.keyDownSourceEvent, that.destinationEvent, [], "update");
}
});
$(".tveBox").unbind("dblclick");
$(".tveBox").on("dblclick", function () {
//if($('#CroweFOXTveProgramDetailPopUpBox').parent().is(":hidden")) {
//if(that.isEditable){
var parentElement = $(this).parents('.weekSeasonHolder');
var weekField = parentElement.attr("week-field");
var sessionHandling = weekField.split("-");
var sessionName = sessionHandling[1].split(" ");
var sessionNameLength = sessionName.length - 1;
var session = sessionName[sessionNameLength];
var dayField = parentElement.attr("day-field");
var JumpingField = parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField, dayField);
var convertedEnd = that.dateOfSeason(weekField, dayField);
convertedStart.setHours(5);
convertedStart.setMinutes(0);
convertedStart.setSeconds(0);
convertedEnd.setHours(5);
convertedEnd.setMinutes(0);
convertedEnd.setSeconds(0);
let selEvents: any = {};
selEvents["JumpingNo"] = parseInt(JumpingField);
selEvents["seasonNo"] = parseInt(session);
selEvents["start"] = convertedStart;
selEvents["end"] = convertedEnd;
that.CroweFOXTveAltProgram.tveAltProgramPopupOpen(selEvents);
//}
//}
});
$(".actualsBox").unbind("dblclick");
$(".actualsBox").on("dblclick", function () {
//if($('#CroweFOXTveProgramDetailPopUpBox').parent().is(":hidden")) {
//if(that.isEditable){
var parentElement = $(this).parents('.weekSeasonHolder');
var weekField = parentElement.attr("week-field");
var sessionHandling = weekField.split("-");
var sessionName = sessionHandling[1].split(" ");
var sessionNameLength = sessionName.length - 1;
var session = sessionName[sessionNameLength];
var dayField = parentElement.attr("day-field");
var JumpingField = parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField, dayField);
var convertedEnd = that.dateOfSeason(weekField, dayField);
convertedStart.setHours(5);
convertedStart.setMinutes(0);
convertedStart.setSeconds(0);
convertedEnd.setHours(5);
convertedEnd.setMinutes(0);
convertedEnd.setSeconds(0);
let selEvents: any = {};
selEvents["JumpingNo"] = parseInt(JumpingField);
selEvents["seasonNo"] = parseInt(session);
selEvents["start"] = convertedStart;
selEvents["end"] = convertedEnd;
that.CroweFOXActualAirings.tveAltProgramPopupOpen(selEvents);
//}
//}
});
$(".eventBox").unbind("dblclick");
$(".eventBox").on("dblclick", function () {
let eventNO = $(this).attr("data-eventNo");
let eventDes = $(this).attr("data-eventDes");
if (eventNO && eventNO.length > 1) {
var parentElement = $(this).parents('.weekSeasonHolder');
var weekField = parentElement.attr("week-field");
var sessionHandling = weekField.split("-");
var sessionName = sessionHandling[1].split(" ");
var sessionNameLength = sessionName.length - 1;
var session = sessionName[sessionNameLength];
var dayField = parentElement.attr("day-field");
var JumpingField = parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField, dayField);
let eventNoSplit = eventNO.split("*??*");
eventNoSplit.splice(0, 1);
let eventDesc = eventDes.split("*??*");
eventDesc.splice(0, 1);
if (eventNoSplit.length > 0) {
if (eventNoSplit.length < 2) {
let tempObj = {
"eventNo": eventNoSplit[0],
"eventName": kendo.toString(new Date(convertedStart), "MM/dd/yyyy") + ' ' + eventDesc[0],
}
that.CroweTalking.navigateToConditional(tempObj);
} else {
that.openEventPopup(eventNoSplit, eventDesc, convertedStart);
}
}
}
});
/*$(".tveBox").unbind().dblclick(function(){
var parentElement=$(this).parents('.weekSeasonHolder');
var weekField=parentElement.attr("week-field");
var sessionHandling=weekField.split("-");
var sessionName=sessionHandling[1].split(" ");
var sessionNameLength=sessionName.length-1;
var session=sessionName[sessionNameLength];
var dayField=parentElement.attr("day-field");
var JumpingField=parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField,dayField);
var convertedEnd = that.dateOfSeason(weekField,dayField);
convertedStart.setHours(5);
convertedStart.setMinutes(0);
convertedStart.setSeconds(0);
convertedEnd.setHours(5);
convertedEnd.setMinutes(0);
convertedEnd.setSeconds(0);
let selEvents:any = {};
selEvents["JumpingNo"] = parseInt(JumpingField);
selEvents["seasonNo"] = parseInt(session);
selEvents["start"]=convertedStart;
selEvents["end"]=convertedEnd;
that.CroweFOXTveAltProgram.tveAltProgramPopupOpen(selEvents);
});
$(".actualsBox").unbind().dblclick(function(){
var parentElement=$(this).parents('.weekSeasonHolder');
var weekField=parentElement.attr("week-field");
var sessionHandling=weekField.split("-");
var sessionName=sessionHandling[1].split(" ");
var sessionNameLength=sessionName.length-1;
var session=sessionName[sessionNameLength];
var dayField=parentElement.attr("day-field");
var JumpingField=parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField,dayField);
var convertedEnd = that.dateOfSeason(weekField,dayField);
convertedStart.setHours(5);
convertedStart.setMinutes(0);
convertedStart.setSeconds(0);
convertedEnd.setHours(5);
convertedEnd.setMinutes(0);
convertedEnd.setSeconds(0);
let selEvents:any = {};
selEvents["JumpingNo"] = parseInt(JumpingField);
selEvents["seasonNo"] = parseInt(session);
selEvents["start"]=convertedStart;
selEvents["end"]=convertedEnd;
that.CroweFOXActualAirings.tveAltProgramPopupOpen(selEvents);
});
$(".eventBox").unbind().dblclick(function(){
let eventNO=$(this).attr("data-eventNo");
let eventDes=$(this).attr("data-eventDes");
if (eventNO && eventNO.length>1) {
var parentElement=$(this).parents('.weekSeasonHolder');
var weekField=parentElement.attr("week-field");
var sessionHandling=weekField.split("-");
var sessionName=sessionHandling[1].split(" ");
var sessionNameLength=sessionName.length-1;
var session=sessionName[sessionNameLength];
var dayField=parentElement.attr("day-field");
var JumpingField=parentElement.attr("Jumping-field");
var convertedStart = that.dateOfSeason(weekField,dayField);
//data-eventSeqNo
let eventNoSplit=eventNO.split("*??*");
eventNoSplit.splice(0,1);
eventNoSplit.splice(0,1);
let eventDesc=eventDes.split("*??*");
eventDesc.splice(0,1);
eventDesc.splice(0,1);
if(eventNoSplit.length>0){
if(eventNoSplit.length<2){
let tempObj = {
"eventNo": eventNoSplit[0],
"eventName": kendo.toString(new Date(convertedStart), "MM/dd/yyyy") + ' ' + eventDesc[0],
}
that.CroweTalking.navigateToConditional(tempObj);
}else{
that.openEventPopup(eventNoSplit,eventDesc);
}
}
}
}); */
$(document.body).on("mouseup touchend", ".parrotCrower-table td, .parrotevent", function (e) {
let which = e.which;
let button = e.button;
let isRight = which && which === 3 || button && button == 2;
let uid = $(e.currentTarget).data("uid");
let eve = that.getCrower().occurrenceByUid(uid);
let selectedSlot = that.getCrower().slotByElement($(e.currentTarget));
if (uid) {
if (e.ctrlKey) {
//that.getCrower().select(null);
//that.selectedSlotEvent=[];
if (!that.isNewSelect && !that.dragStart) {
that.addOrRemoveSelectedEvent(eve, false, true);
}
//that.shiftSelectHandling(eve,e.shiftKey);
//that.selectedSlotTarget =[selectedSlot];
} else {
if (!that.dragStart && !e.shiftKey && !isRight) {
that.getCrower().select(null);
that.selectedSlotEvent = [];
that.addOrRemoveSelectedEvent(eve, true, false);
}
}
}
});
Crower.wrapper.on("mousedown touchend", ".parrotCrower-table td, .parrotevent", function (e) {
let selectNxtSlot = null
let rowInd = $(e.currentTarget).parent().index();
let columnInd = $(e.currentTarget).index();
that.AdvisoryTextAreaUpdate();
that.CroweTalking.setSelectedEvent(e);
if (!that.isEditMode()) {
//that.accessFutureDays(that,"");
if ($("#startTimepicker").is(":focus")) {
$("#startTimepicker").focusout();
}
if ($("#timeMask").is(":focus")) {
$("#timeMask").focusout();
}
let target = $(e.currentTarget);
//that.targetForPaste=$(e.target);
that.eventWidthHeight = { "width": $(e.currentTarget).width(), "height": $(e.currentTarget).height() };
if (target.hasClass("k-si-close")) {
return;
}
let which = e.which;
let button = e.button;
let isRight = which && which === 3 || button && button == 2;
that.currentTarget = $(e.currentTarget);
let uid = $(e.currentTarget).data("uid");
if ($("#comment1Text").is(":focus") || $("#comment2Text").is(":focus") || $("#comment3Text").is(":focus")) {
//$("#commentContainer").trigger( "blur" );
if ($("#comment1Text").is(":focus"))
$("#comment1Text").trigger("blur");
else if ($("#comment2Text").is(":focus"))
$("#comment2Text").trigger("blur");
else if ($("#comment3Text").is(":focus"))
$("#comment3Text").trigger("blur");
}
let selectedSlot = that.getCrower().slotByElement($(e.currentTarget));
that.emptySlotSelect = e;
if (isRight) {
if (uid) {//event
let ev = that.getCrower().occurrenceByUid(uid);
if (!e.ctrlKey) {
if (that.selectedSlotEvent.indexOf(ev) == -1) {
that.getCrower().select(null);
that.selectedSlotEvent = [];
that.addOrRemoveSelectedEvent(ev, true, false);
that.selectedSlotTarget = [selectedSlot];
}
}
that.shiftSelectHandling(ev, e.shiftKey);
} else {
that.getCrower().select(null);
if (selectedSlot.startDate.getHours() == 14 && that.checkPrimeSlot($(e.currentTarget))) {
//as 0th slot is 00:00 and 1st slot is 00:30, 28th slot is 2 PM, 29th slot is 2:30 PM as per Crowe( as the Crowe original time is 12AM-12PM)
selectedSlot = that.getCrower().slotByElement($('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')'));
selectNxtSlot = that.getCrower().slotByElement($('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')'));
}
$(e.target).trigger('click');
$('.parrotCrower-content td').removeClass('k-state-selected');
$('.parrotCrower-content td').attr({ 'aria-selected': 'false' });
$(e.target).addClass('k-state-selected');
$(e.target).attr({ 'aria-selected': 'true' });
that.selectedSlotEvent = [];
that.selectedSlotTarget = [selectedSlot];
if (selectNxtSlot) {
that.selectedSlotTarget[1] = [selectNxtSlot];
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')').addClass('k-state-selected');
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')').attr({ 'aria-selected': 'true' });
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')').addClass('k-state-selected');
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')').attr({ 'aria-selected': 'true' });
}
}
} else {
if (uid) {
let event = that.getCrower().occurrenceByUid(uid);
if (e.ctrlKey || e.shiftKey) {
if (that.selectedSlotEvent.length >= 0 || that.selectedSlotEvent[0].JumpingNo == event.JumpingNo) {
//that.getCrower().select([target.data("uid")]);
let selectedIndex = that.selectedSlotEvent.indexOf(event);
if (selectedIndex == -1) {
that.isNewSelect = true;
that.addOrRemoveSelectedEvent(event, true, false);
that.selectedSlotTarget.push(selectedSlot)
} else {
that.isNewSelect = false;
if (!e.ctrlKey) {
that.addOrRemoveSelectedEvent(that.selectedSlotEvent[selectedIndex], false, false);
that.selectedSlotTarget.splice(selectedIndex, 1);
}
}
}
if (e.shiftKey) {
that.shiftSelectHandling(event, e.shiftKey);
}
}
else {
let selectedIndex = that.selectedSlotEvent.indexOf(event);
if (selectedIndex == -1) {
that.getCrower().select(null);
that.selectedSlotEvent = [];
that.addOrRemoveSelectedEvent(event, true, false);
that.selectedSlotTarget = [selectedSlot];
//that.menuOptionClick("Mouse_search_change_event",$(e.target));
that.shiftSelectHandling(event, e.shiftKey);
}
}
} else {
that.getCrower().select(null);
if (selectedSlot.startDate.getHours() == 14 && that.checkPrimeSlot($(e.currentTarget))) {
//as 0th slot is 00:00 and 1st slot is 00:30, 28th slot is 2 PM, 29th slot is 2:30 PM as per Crowe( as the Crowe original time is 12AM-12PM)
selectedSlot = that.getCrower().slotByElement($('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')'));
selectNxtSlot = that.getCrower().slotByElement($('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')'));
}
$(e.target).trigger('click');
$('.parrotCrower-content td').removeClass('k-state-selected');
$('.parrotCrower-content td').attr({ 'aria-selected': 'false' });
$(e.target).addClass('k-state-selected');
$(e.target).attr({ 'aria-selected': 'true' });
that.selectedSlotEvent = [];
that.selectedSlotTarget = [selectedSlot];
if (selectNxtSlot) {
that.selectedSlotTarget[1] = [selectNxtSlot];
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')').addClass('k-state-selected');
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')').attr({ 'aria-selected': 'true' });
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')').addClass('k-state-selected');
$('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 29 + ')').attr({ 'aria-selected': 'true' });
}
}
}
if (!e.ctrlKey || that.selectedSlotEvent.length >= 1) {
if (target.hasClass("k-event")) {
var event = that.getCrower().occurrenceByUid(target.data("uid"));
if (that.selectedSlotEvent.length >= 1) {
that.sportsPlayersSleeping(that.selectedSlotEvent[0]);
} else {
that.sportsPlayersSleepingEmty({});
}
} else {
if ($(".parrotstate-selected")[0].children.length == 0) {
that.sportsPlayersSleepingEmty({});
}
}
}
that.CroweTrigger.emit({ "type": "CroweSelect" });
} else {
that.singleButtonDialog("Please click on OK or Cancel in Feed, Timing and New Access Guidelines to update the changes.")
}
// if(that.selectedSlotEvent.length>0){
// clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedStart);
// let evntTime = new Date(clonedStartCurrent);
// let eventHours = 0;
// if(evntTime.getHours()<19){
// evntTime.setHours(evntTime.getHours() + 5);
// } else {
// evntTime.setHours(evntTime.getHours() - 19);
// }
// let eventMin = evntTime.getMinutes()>30?1:0;
// let colInd = ((eventHours*2) + eventMin)*cellWidth;
// that.columnIndex = colInd;
// let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
// for(let ct = 0; ct<rowCount; ct++){
// let selectedSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq("+ct+") > td:eq(0)"));
// let curTarget = that.getCrower().view()._resourceBySlot(selectedSlot);
// let JumpingDay = curTarget.JumpingDay.split("-");
// let curStart =new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
// if(curStart.getDate() == clonedStartCurrent.getDate() &&
// curStart.getMonth() == clonedStartCurrent.getMonth() &&
// curStart.getFullYear() == clonedStartCurrent.getFullYear()){
// that.rowIndex = ct;
// }
// }
// }
});
this.blockMenuInit();
}
}
keyboardEventMove() {
let that = this;
let selectedUID = $('.parrotCrower-content .parrotevent.parrotstate-selected').attr("data-uid");
let currentevent = that.getEventByUid(selectedUID);
let startDateMove;
let endDateMove;
if (currentevent) {
var leftMargin = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('left'));
var topMargin = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('top'));
var animationComplete = true;
let totalLength = $('.parrotCrower-content > .parrotevent').length + 1;
let selectedIndexValue = $('.parrotCrower-content > .parrotevent.parrotstate-selected').index();
let selectedIndex = parseInt($('.parrotCrower-content > .parrotevent.parrotstate-selected').css("left"));
let selectedIndexPrevLeft = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css("left"));
let preEventWidth = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css('width')) + 8;
let preEventTop = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css('top'));
let preEventUID = $('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).attr("data-uid");
let preEvent = that.getEventByUid(preEventUID);
let selectedIndexPrev = selectedIndexPrevLeft + preEventWidth - 2;
let selectedIndexNextLeft = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).css("left"));
let nextEventUID = $('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).attr("data-uid");
let nextEvent = that.getEventByUid(nextEventUID);
let nextEventTop = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).css('top'));
let selectedIndexNext = selectedIndexNextLeft - 8;
let currentElementOuterWidth = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('width')) - 3;
let CrowerWidth = parseInt($('.parrotCrower-content .parrotCrower-table').css('width')) - 8;
// setTimeout(function() {
if (animationComplete) {
that.isShiftMove = true;
// LEFT
if (that.left) {
that.left = false;
that.leftStartDate = new Date();
if (preEventTop != topMargin || selectedIndexValue == 2) {
selectedIndexPrev = 0;
that.leftStartDate.setHours(0, 0, 0);
} else {
that.leftStartDate = new Date(preEvent.end);
}
if (selectedIndexPrev >= leftMargin) {
that.isWhichEnd = "leftReachedEnd";
return;
//leftMargin = selectedIndexPrev;
} else {
that.isWhichEnd = "";
leftMargin -= that.movementSpeed;
that.changeStartDur = that.changeStartDur - 30;
that.changeEndDur = that.changeEndDur - 30;
if (leftMargin < 0) {
leftMargin = 0;
}
}
}
// RIGHT
if (that.right) {
that.right = false;
that.rightEndDate = new Date();
if (nextEventTop != topMargin || totalLength == selectedIndexValue) {
selectedIndexNext = CrowerWidth;
that.rightEndDate.setHours(24, 0, 0);
} else {
that.rightEndDate = new Date(nextEvent.start);
}
if (selectedIndexNext - currentElementOuterWidth <= leftMargin) {
that.isWhichEnd = "rightReachedEnd";
return;
//leftMargin = selectedIndexNext;
} else {
that.isWhichEnd = "";
leftMargin += that.movementSpeed;
that.changeStartDur = that.changeStartDur + 30;
that.changeEndDur = that.changeEndDur + 30;
}
}
// ANIMATION?
if (that.runAnimation) {
animationComplete = false;
$('.parrotCrower-content .parrotevent.parrotstate-selected').animate({ 'left': leftMargin + 'px', 'top': topMargin + 'px' }, that.animationSpeed, function () {
animationComplete = true;
});
}
else {
$('.parrotCrower-content .parrotevent.parrotstate-selected').css({ 'left': leftMargin + 'px', 'top': topMargin + 'px' });
}
that.keyCurrentEvent = currentevent;
}
//},that.intervalSpeed);
}
}
keyboardEventCtrlMove(event) {
let that = this;
let changeStartDur = 0;
let changeEndDur = 0;
var selectedEventWidth = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('width'));
var leftMargin = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('left'));
var topMargin = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('top'));
var animationComplete = true;
let totalLength = $('.parrotCrower-content > .parrotevent').length + 1;
let selectedIndexValue = $('.parrotCrower-content > .parrotevent.parrotstate-selected').index();
let selectedIndex = parseInt($('.parrotCrower-content > .parrotevent.parrotstate-selected').css("left"));
let selectedIndexPrevLeft = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css("left"));
let preEventWidth = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css('width')) + 8;
let preEventTop = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).css('top'));
let preEventUID = $('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 3).attr("data-uid");
let preEvent = that.getEventByUid(preEventUID);
let selectedIndexPrev = selectedIndexPrevLeft + preEventWidth - 3;
let selectedIndexNextLeft = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).css("left"));
let nextEventUID = $('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).attr("data-uid");
let nextEvent = that.getEventByUid(nextEventUID);
let nextEventTop = parseInt($('.parrotCrower-content > .parrotevent').eq(selectedIndexValue - 1).css('top'));
let selectedIndexNext = selectedIndexNextLeft - 8;
let currentElementOuterWidth = parseInt($('.parrotCrower-content .parrotevent.parrotstate-selected').css('width'));
let CrowerWidth = parseInt($('.parrotCrower-content .parrotCrower-table').css('width')) - 8;
let selectedEventUID = $('.parrotCrower-content > .parrotevent.parrotstate-selected').attr("data-uid");
let selectedEvent = that.getEventByUid(selectedEventUID);
that.ctrlStartDate = new Date(selectedEvent.start);
that.ctrlEndDate = new Date(selectedEvent.end);
if (that.left) {
let isReachedFirst = false;
if (preEventTop != topMargin || selectedIndexValue == 2) {
selectedIndexPrev = 0;
isReachedFirst = true;
} else {
isReachedFirst = false;
}
let marginLeftCheck = leftMargin;
if (that.isCtrlLeft) {
selectedIndexPrev += 1;
} else {
marginLeftCheck += 2;
}
if (selectedIndexPrev > marginLeftCheck) {
if (isReachedFirst) {
if (that.isCtrlLeft) {
that.ctrlStartDate.setHours(0, 0, 0);
} else {
//that.ctrlEndDate.setHours(24,0,0);
}
} else {
if (that.isCtrlLeft) {
that.ctrlStartDate = new Date(preEvent.end);
} else {
//that.ctrlEndDate=new Date(preEvent.start);
}
}
return;
} else {
if (that.isCtrlLeft) {
changeStartDur = 30;
that.changeStartDur = that.changeStartDur + changeStartDur;
that.ctrlStartDate.setSeconds(that.ctrlStartDate.getSeconds() - that.changeStartDur)
selectedEventWidth += 2;
leftMargin -= 2;
} else {
changeEndDur = -30;
selectedEventWidth -= 2;
that.changeEndDur = that.changeEndDur + changeEndDur;
that.ctrlEndDate.setSeconds(that.ctrlEndDate.getSeconds() + that.changeEndDur);
if (that.ctrlStartDate.getTime() > that.ctrlEndDate.getTime()) {
that.ctrlEndDate.setTime(that.ctrlStartDate.getTime());
that.ctrlEndDate.setSeconds(that.ctrlEndDate.getSeconds() + 30);
return;
}
}
}
}
if (that.right) {
let isReachedEnd = false;
if (nextEventTop != topMargin || totalLength == selectedIndexValue) {
selectedIndexNext = CrowerWidth;
isReachedEnd = true;
} else {
isReachedEnd = false;
}
let marginLeftCheck = leftMargin;
if (that.isCtrlLeft) {
currentElementOuterWidth -= 4;
}
if (selectedIndexNext - currentElementOuterWidth < marginLeftCheck) {
if (isReachedEnd) {
if (that.isCtrlLeft) {
//that.ctrlStartDate.setHours(0,0,0);
} else {
that.ctrlEndDate.setHours(24, 0, 0);
}
} else {
if (that.isCtrlLeft) {
//that.ctrlStartDate=new Date(nextEvent.end);
} else {
that.ctrlEndDate = new Date(nextEvent.start);
}
}
return;
} else {
if (that.isCtrlLeft) {
changeStartDur = -30;
that.changeStartDur = that.changeStartDur + changeStartDur;
that.ctrlStartDate.setSeconds(that.ctrlStartDate.getSeconds() - that.changeStartDur);
if (that.ctrlStartDate.getTime() > that.ctrlEndDate.getTime()) {
that.ctrlStartDate.setTime(that.ctrlEndDate.getTime());
that.ctrlStartDate.setSeconds(that.ctrlStartDate.getSeconds() + changeStartDur);
return;
}
selectedEventWidth -= 2;
leftMargin += 2;
} else {
changeEndDur = 30;
that.changeEndDur = that.changeEndDur + changeEndDur;
that.ctrlEndDate.setSeconds(that.ctrlEndDate.getSeconds() + that.changeEndDur);
selectedEventWidth += 2;
}
}
}
$('.parrotCrower-content .parrotevent.parrotstate-selected').css({ 'left': leftMargin + 'px', 'width': selectedEventWidth + 'px', 'top': topMargin + 'px' });
}
openEventPopup(eventNoSplit, eventDesc, convertedStart) {
let that = this;
that.selectedConditionalEvent = 0;
$('#eventOpenPopupBlock').find(".eventList").empty();
for (let i = 0; i < eventDesc.length; i++) {
$('#eventOpenPopupBlock').find(".eventList").append('<li>' + eventDesc[i] + '</li>');
//$('<li />', {html: eventDesc[0]}).appendTo('ul.eventList')
}
this.eventDESC = eventDesc;
let dialog = $("#eventOpenPopupBlock").data("kendoWindow").center();
dialog.open();
$("#eventOpenOk").unbind().click(function () {
let tempObj = {
"eventNo": eventNoSplit[that.selectedConditionalEvent],
"eventName": kendo.toString(new Date(convertedStart), "MM/dd/yyyy") + ' ' + eventDesc[that.selectedConditionalEvent],
}
that.CroweTalking.navigateToConditional(tempObj);
if (!that.CroweTalking.isEventExits) {
dialog.close();
}
});
$("#eventClose").unbind().click(function () {
dialog.close();
});
$("#eventOpenCancel").unbind().click(function () {
dialog.close();
});
$("#eventOpenPopupBlock .eventList li").unbind().click(function (e) {
e.preventDefault();
$("#eventOpenPopupBlock .eventList li").removeClass("active"); //Remove any "active" class
$(this).addClass("active"); //Add "active" class to selected tab
that.selectedConditionalEvent = $(this).index();
// $(activeTab).show(); //Fade in the active content
});
}
chkEventInSlot(clonedStart: any, currentElement, keyCode) {
let that = this;
let clonedStartDate = that.dateString(new Date(clonedStart));
let cloneDataSource = new kendo.data.Query(that._CrowerDataSource._data);
that.getCrower().select(null);
let filterData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: clonedStartDate
}).data;
let eventEndDt;
let eventStDt;
if (that.selectedSlotEvent.length > 0) {
eventEndDt = new Date(that.selectedSlotEvent[0].end);
eventStDt = new Date(that.selectedSlotEvent[0].start);
} else {
eventEndDt = new Date(that.selectedSlotTarget[0].endDate);
eventStDt = new Date(that.selectedSlotTarget[0].startDate);
}
that.selectedSlotEvent = [];
for (let i = 0; i < filterData.length; i++) {
let filterStart
let currSlot = [that.getCrower().slotByElement(currentElement[0])];
let currStart = that.getDateWithTime(clonedStart, that.selectedSlotTarget[0].startDate);
let currEnd = new Date(currStart.getTime() + 30 * 60000);
if (keyCode == 39) {
filterStart = new Date(filterData[i].clonedStart).getTime();
if (filterStart == clonedStart.getTime()) {
that.selectedSlotEvent = [filterData[i]];
} else if (filterStart > currStart.getTime() && filterStart < currEnd) {
that.selectedSlotEvent = [filterData[i]];
}
// else if(filterStart>clonedStart.getTime() && filterStart< (clonedStart.getTime()+30*60000)){
// that.selectedSlotEvent=[filterData[i]];
// }
} else {
filterStart = new Date(filterData[i].clonedEnd).getTime();
// if(filterStart==clonedStart.getTime() || (filterStart<clonedStart.getTime() && filterStart> (clonedStart.getTime()-30*60000))){
// that.selectedSlotEvent=[filterData[i]];
// }
if (filterStart == clonedStart.getTime()) {
that.selectedSlotEvent = [filterData[i]];
} else if (filterStart > currStart.getTime() && filterStart < currEnd) {
that.selectedSlotEvent = [filterData[i]];
}
}
}
if (that.selectedSlotEvent.length > 0) {
if (keyCode == 39) {
currentElement = currentElement.next();
} else {
let durationVal = that.selectedSlotEvent[0].programLength / 1800;
for (let ct = 0; ct < durationVal; ct++) {
currentElement = currentElement.prev();
}
}
that.selectedSlotTarget = [that.getCrower().slotByElement(currentElement[0])];
$('div[data-uid="' + that.selectedSlotEvent[0].uid + '"]').addClass('k-state-selected');
that.sportsPlayersSleeping(that.selectedSlotEvent[0]);
} else {
if (keyCode == 39) {
if (that.selectedSlotTarget[0].endDate.getTime() <= eventEndDt.getTime())
currentElement = currentElement.next();
} else {
if (that.selectedSlotTarget[0].startDate.getTime() >= eventStDt.getTime())
currentElement = currentElement.prev();
}
that.selectedSlotTarget = [that.getCrower().slotByElement(currentElement[0])];
that.sportsPlayersSleepingEmty({});
$(currentElement[0]).trigger('click');
$('.parrotCrower-content td').removeClass('k-state-selected');
$('.parrotCrower-content td').attr({ 'aria-selected': 'false' });
$(currentElement[0]).addClass('k-state-selected');
$(currentElement[0]).attr({ 'aria-selected': 'true' });
that.selectedSlotEvent = [];
that.selectedSlotTarget = [that.getCrower().slotByElement(currentElement[0])];
}
}
moveEventUpDown(start: any) {
let that = this;
let checkDate = new Date(start);
let startDate = that.dateString(new Date(start));
let cloneDataSource = new kendo.data.Query(that._CrowerDataSource._data);
let filterData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: startDate
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
if (that.selectedSlotEvent.length > 0) {
let timeVal = new Date(that.selectedSlotEvent[0].clonedStart);
checkDate.setHours(timeVal.getHours());
checkDate.setMinutes(timeVal.getMinutes());
checkDate.setSeconds(timeVal.getSeconds());
}
let evntToSel = [];
for (let i = 0; i < filterData.length; i++) {
let clSt = new Date(filterData[i].clonedStart);
let clEnd = new Date(filterData[i].clonedEnd);
if (checkDate.getTime() == clSt.getTime() || (checkDate.getTime() > clSt.getTime() && checkDate.getTime() < clEnd.getTime())) {
evntToSel.push(filterData[i]);
}
}
that.selectedSlotEvent = [];
if (evntToSel.length > 0) {
that.selectedSlotEvent = [evntToSel[evntToSel.length - 1]];
}
that.getCrower().select(null);
if (that.selectedSlotEvent.length > 0) {
$('div[data-uid="' + that.selectedSlotEvent[0].uid + '"]').addClass('k-state-selected');
that.sportsPlayersSleeping(that.selectedSlotEvent[0]);
} else {
that.selectedSlotEvent = [];
that.selectedSlotTarget = [that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")"))];
$(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")").addClass("k-state-selected");
that.sportsPlayersSleepingEmty({});
}
}
moveEventRightLeft(start: any, keyCode, isNextRow) {
let addVal = 1;
if (keyCode == 37) {
addVal = -1
}
let that = this;
let checkDate = new Date(start);
let startDate = that.dateString(new Date(start));
let cloneDataSource = new kendo.data.Query(that._CrowerDataSource._data);
let rowInd = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').parent().index();
let columnInd = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').index();
let filterData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: startDate
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
let evntToSel = [];
for (let i = 0; i < filterData.length; i++) {
if (keyCode == 37) {
let clSt = new Date(filterData[i].clonedStart);
let clEnd = new Date(filterData[i].clonedEnd);
if (rowInd != -1 && columnInd != -1) {
if (checkDate.getTime() >= clSt.getTime() && checkDate.getTime() <= clEnd.getTime()) {
evntToSel.push(filterData[i]);
}
} else {
if (checkDate.getTime() == clEnd.getTime()) {
evntToSel.push(filterData[i]);
}
}
} else {
let clSt = new Date(filterData[i].clonedStart);
let clEnd = new Date(filterData[i].clonedEnd);
if (rowInd != -1 && columnInd != -1) {
if (checkDate.getTime() >= clSt.getTime() && checkDate.getTime() <= clEnd.getTime()) {
evntToSel.push(filterData[i]);
}
} else {
if (checkDate.getTime() == clSt.getTime()) {
evntToSel.push(filterData[i]);
}
}
}
}
let moveCell = true;
if (that.selectedSlotEvent.length > 0 && checkDate.getMinutes() != 0
&& checkDate.getMinutes() != 30 && checkDate.getSeconds() != 0) {
moveCell = false;
}
that.selectedSlotEvent = [];
that.selectedSlotTarget = []
if (evntToSel.length > 0) {
if (keyCode == 37) {
that.selectedSlotEvent = [evntToSel[0]];
} else {
that.selectedSlotEvent = [evntToSel[evntToSel.length - 1]];
}
}
that.getCrower().select(null);
if (that.selectedSlotEvent.length > 0) {
$('div[data-uid="' + that.selectedSlotEvent[0].uid + '"]').addClass('k-state-selected');
that.sportsPlayersSleeping(that.selectedSlotEvent[0]);
that.scrollToHour(new Date(that.selectedSlotEvent[0].clonedStart))
} else {
if (!isNextRow) {
if (moveCell && keyCode == 37) {
that.columnIndex = that.columnIndex + addVal;
} else {
if (rowInd != -1 && columnInd != -1) {
that.columnIndex = that.columnIndex + addVal;
} else {
//the cell is already moved to next timeslot in the parent method
}
}
}
that.sportsPlayersSleepingEmty({});
that.selectedSlotTarget = [that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")"))];
$(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + that.rowIndex + ") > td:eq(" + that.columnIndex + ")").addClass("k-state-selected");
let scrollDate = new Date()
scrollDate.setHours(that.columnIndex / 2, (that.columnIndex % 2) * 30, 0)
that.scrollToHour(scrollDate);
}
}
checkConsucutiveDay(keyCode): any {
let that = this;
let retVal: any = {};
retVal["isValid"] = false;
retVal["nextDay"] = "";
let rowInd = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').parent().index();
let columnInd = $('.parrotCrower-content>.parrotCrower-table > tbody> tr > td.parrotstate-selected').index();
if (keyCode == 37) {
if (rowInd > 0 && columnInd == 0) {
let selectedSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + rowInd + ") > td:eq(0)"));
let currTarget = that.getCrower().view()._resourceBySlot(selectedSlot);
let currNWD = currTarget.JumpingWithDay.split("-");
let currStart = new Date(that.dateOfSeason(currTarget.week, currNWD[1]));
let prevSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + (rowInd - 1) + ") > td:eq(0)"));
let prevTarget = that.getCrower().view()._resourceBySlot(prevSlot);
let prevNWD = prevTarget.JumpingWithDay.split("-");
let prevStart = new Date(that.dateOfSeason(prevTarget.week, prevNWD[1]));
if ((currStart.getDay() == prevStart.getDay() + 1) || (currStart.getDay() == 0 && prevStart.getDay() == 6)) {
prevStart.setHours(23, 59, 59);
retVal["nextDay"] = prevStart;
retVal["isValid"] = true;
}
} else if (this.selectedSlotEvent.length > 0) {
let slotDate = new Date(this.selectedSlotEvent[0].clonedStart);
if (slotDate.getHours() == 0 && slotDate.getMinutes() == 0 && slotDate.getSeconds() == 0) {
columnInd = 0;
rowInd = -1;
let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
let checkSlot = null;
for (let ct = 0; ct < rowCount; ct++) {
checkSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + ct + ") > td:eq(0)"));
let curTarget = that.getCrower().view()._resourceBySlot(checkSlot);
let JumpingDay = curTarget.JumpingWithDay.split("-");
let curStart = new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
if (curStart.getDate() == slotDate.getDate() &&
curStart.getMonth() == slotDate.getMonth() &&
curStart.getFullYear() == slotDate.getFullYear()) {
rowInd = ct;
}
}
if (rowInd < rowCount - 1 && rowInd > 0) {
let tdSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + rowInd + ") > td:eq(0)"));
let tdTarget = that.getCrower().view()._resourceBySlot(tdSlot);
let tdNWD = tdTarget.JumpingWithDay.split("-");
let tdStart = new Date(that.dateOfSeason(tdTarget.week, tdNWD[1]));
let tdPrevSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + (rowInd - 1) + ") > td:eq(0)"));
let tdPrevTarget = that.getCrower().view()._resourceBySlot(tdPrevSlot);
let tdPrevNWD = tdPrevTarget.JumpingWithDay.split("-");
let tdPrevStart = new Date(that.dateOfSeason(tdPrevTarget.week, tdPrevNWD[1]));
if ((tdStart.getDay() == tdPrevStart.getDay() + 1) || (tdStart.getDay() == 0 && tdPrevStart.getDay() == 6)) {
tdPrevStart.setHours(23, 59, 59);
retVal["nextDay"] = tdPrevStart;
retVal["isValid"] = true;
}
}
}
}
return retVal;
} else if (keyCode == 39) {
if (rowInd < $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length - 1 && columnInd == 47) {
let selectedSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + rowInd + ") > td:eq(0)"));
let currTarget = that.getCrower().view()._resourceBySlot(selectedSlot);
let currNWD = currTarget.JumpingWithDay.split("-");
let currStart = new Date(that.dateOfSeason(currTarget.week, currNWD[1]));
let nextSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + (rowInd + 1) + ") > td:eq(0)"));
let nextTarget = that.getCrower().view()._resourceBySlot(nextSlot);
let nexNWD = nextTarget.JumpingWithDay.split("-");
let nextStart = new Date(that.dateOfSeason(nextTarget.week, nexNWD[1]));
if ((currStart.getDay() == nextStart.getDay() - 1) || (currStart.getDay() == 6 && nextStart.getDay() == 0)) {
retVal["nextDay"] = nextStart;
retVal["isValid"] = true;
}
} else if (this.selectedSlotEvent.length > 0) {
let slotDate = new Date(this.selectedSlotEvent[0].clonedEnd);
if (slotDate.getHours() == 23 && slotDate.getMinutes() == 59 && slotDate.getSeconds() == 59) {
columnInd = 47;
rowInd = -1;
let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
let checkSlot = null;
for (let ct = 0; ct < rowCount; ct++) {
checkSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + ct + ") > td:eq(0)"));
let curTarget = that.getCrower().view()._resourceBySlot(checkSlot);
let JumpingDay = curTarget.JumpingWithDay.split("-");
let curStart = new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
if (curStart.getDate() == slotDate.getDate() &&
curStart.getMonth() == slotDate.getMonth() &&
curStart.getFullYear() == slotDate.getFullYear()) {
rowInd = ct;
}
}
if (rowInd < rowCount - 2 && rowInd >= 0) {
let tdSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + rowInd + ") > td:eq(0)"));
let tdTarget = that.getCrower().view()._resourceBySlot(tdSlot);
let tdNWD = tdTarget.JumpingWithDay.split("-");
let tdStart = new Date(that.dateOfSeason(tdTarget.week, tdNWD[1]));
let tdNxtSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq(" + (rowInd + 1) + ") > td:eq(0)"));
let tdNxtTarget = that.getCrower().view()._resourceBySlot(tdNxtSlot);
let tdNxtNWD = tdNxtTarget.JumpingWithDay.split("-");
let tdNxtStart = new Date(that.dateOfSeason(tdNxtTarget.week, tdNxtNWD[1]));
if ((tdStart.getDay() + 1 == tdNxtStart.getDay()) || (tdStart.getDay() == 6 && tdNxtStart.getDay() == 0)) {
retVal["nextDay"] = tdNxtStart;
retVal["isValid"] = true;
}
}
}
}
return retVal;
}
}
shiftSelectHandling(clickedEvent, isShiftKey) {
let that = this;
if (this.shiftEvents.length == 0) {
this.shiftEvents.push(clickedEvent);
} else if (this.shiftEvents.length > 0 && isShiftKey) {
this.shiftEvents.splice(1);
this.shiftEvents[1] = clickedEvent;
} if (!isShiftKey) {
this.shiftEvents = [clickedEvent];
}
if (this.shiftEvents.length == 2) {
let startEvent = this.shiftEvents[0];
let endEvent = this.shiftEvents[1];
let filterData = that.getSpanEventList(that._CrowerDataSource._data, endEvent);
let cloneData = that._CrowerDataSource._data;
cloneData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
let firstEvnt = new Date(startEvent.clonedStart);
let firstEvntEnd = new Date(startEvent.clonedEnd);
let firstEvntTime = new Date(startEvent.clonedStart).getTime();
let firstEvntSec = (firstEvnt.getHours() * 3600) + (firstEvnt.getMinutes() * 60) + firstEvnt.getSeconds();
let firstEvntEndSec = (firstEvntEnd.getHours() * 3600) + (firstEvntEnd.getMinutes() * 60) + firstEvntEnd.getSeconds();
let firstEvntStArr = [firstEvnt.getHours(), firstEvnt.getMinutes(), firstEvnt.getSeconds()];
let firstEvntEndArr = [firstEvntEnd.getHours(), firstEvntEnd.getMinutes(), firstEvntEnd.getSeconds()];
let lastEvnt = new Date(endEvent.clonedStart)
let lastEvntEnd = new Date(endEvent.clonedEnd)
let lastEvntTime = new Date(endEvent.clonedStart).getTime();
let lastEvntSec = (lastEvnt.getHours() * 3600) + (lastEvnt.getMinutes() * 60) + lastEvnt.getSeconds();
let lastEvntEndSec = (lastEvntEnd.getHours() * 3600) + (lastEvntEnd.getMinutes() * 60) + lastEvntEnd.getSeconds();
let lastEvntStArr = [lastEvnt.getHours(), lastEvnt.getMinutes(), lastEvnt.getSeconds()];
let lastEvntEndArr = [lastEvntEnd.getHours(), lastEvntEnd.getMinutes(), lastEvntEnd.getSeconds()];
let checkStartSeconds;
let checkEndSeconds;
if (firstEvntTime > lastEvntTime) {
if (firstEvntSec < lastEvntSec) {
let stDateValue = new Date(endEvent.clonedStart);
stDateValue.setHours(firstEvntStArr[0], firstEvntStArr[1], firstEvntStArr[2])
firstEvntTime = new Date(stDateValue).getTime();
let endDateValue = new Date(startEvent.clonedStart);
endDateValue.setHours(lastEvntEndArr[0], lastEvntEndArr[1], lastEvntEndArr[2])
lastEvntTime = new Date(endDateValue).getTime();
checkStartSeconds = (firstEvntStArr[0] * 3600) + (firstEvntStArr[1] * 60) + (firstEvntStArr[2]);
checkEndSeconds = (lastEvntEndArr[0] * 3600) + (lastEvntEndArr[1] * 60) + (lastEvntEndArr[2]);
} else {
checkStartSeconds = lastEvntSec;
checkEndSeconds = firstEvntEndSec;
let stDate = firstEvntTime;
firstEvntTime = lastEvntTime;
lastEvntTime = stDate;
}
} else {
if (firstEvntSec < lastEvntSec) {
checkStartSeconds = firstEvntSec;
checkEndSeconds = lastEvntEndSec;
} else {
let stDateValue = new Date(startEvent.clonedStart);
stDateValue.setHours(lastEvntStArr[0], lastEvntStArr[1], lastEvntStArr[2])
firstEvntTime = new Date(stDateValue).getTime();
let endDateValue = new Date(endEvent.clonedStart);
endDateValue.setHours(firstEvntEndArr[0], firstEvntEndArr[1], firstEvntEndArr[2])
lastEvntTime = new Date(endDateValue).getTime();
checkStartSeconds = lastEvntSec;
checkEndSeconds = firstEvntEndSec;
}
}
let startIndex;
let endIndex;
let startPositionIndex;
let endPositionIndex;
let shiftSlotEvent = [];
for (let i = 0; i < cloneData.length; i++) {
let startTime = new Date(cloneData[i].clonedStart).getTime();
if (startTime >= firstEvntTime && startTime <= lastEvntTime) {
let cloneEventStartDate = new Date(cloneData[i].clonedStart)
let cloneEventEndDate = new Date(cloneData[i].clonedEnd)
let cloneEventStartSeconds = (cloneEventStartDate.getHours() * 3600) + (cloneEventStartDate.getMinutes() * 60) + cloneEventStartDate.getSeconds();
let cloneEventEndSeconds = (cloneEventEndDate.getHours() * 3600) + (cloneEventEndDate.getMinutes() * 60) + cloneEventEndDate.getSeconds();
if ((cloneEventStartSeconds >= checkStartSeconds && cloneEventStartSeconds < checkEndSeconds) ||
(cloneEventEndSeconds > checkStartSeconds && cloneEventEndSeconds <= checkEndSeconds)) {
shiftSlotEvent.push(cloneData[i])
}
}
}
let firstElement = that.selectedSlotEvent[0].JumpingNo;
that.selectedSlotEvent = [];
that.selectedSlotTarget = [];
that.getCrower().select(null);
for (let e = 0; e < shiftSlotEvent.length; e++) {
let uid = shiftSlotEvent[e].uid;
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid + '"]'));
if (firstElement == shiftSlotEvent[e].JumpingNo) {
that.selectedSlotEvent.push(shiftSlotEvent[e]);
that.selectedSlotTarget.push(selectedSlot);
}
}
/*for (let e = startIndex; e <= endIndex; e++) {
let uid=cloneData[e].uid;
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid+ '"]'));
that.selectedSlotEvent.push(cloneData[e]);
that.selectedSlotTarget.push(selectedSlot);
} */
/* if(firstEvntTime > lastEvntTime){
for (let e = startIndex; e >= endIndex; e--) {
let uid=cloneData[e].uid;
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid+ '"]'));
that.selectedSlotEvent.push(cloneData[e]);
that.selectedSlotTarget.push(selectedSlot);
}
}
else{
for (let e = startIndex; e <= endIndex; e++) {
let uid=cloneData[e].uid;
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid+ '"]'));
that.selectedSlotEvent.push(cloneData[e]);
that.selectedSlotTarget.push(selectedSlot);
}
} */
for (let e = 0; e < filterData.length; e++) {
let uid = filterData[e].uid;
let selectedSpanIndex = that.selectedSlotEvent.indexOf(filterData[e]);
if (firstElement == filterData[e].JumpingNo) {
if (selectedSpanIndex == -1) {
that.selectedSlotEvent.push(filterData[e]);
}
let selectedSlot = that.getCrower().slotByElement($('div[data-uid="' + uid + '"]'));
that.selectedSlotTarget.push(selectedSlot);
}
}
that.multiSelectEvent();
}
}
getSpanEventList(dataList, event: any): any {
let getDataSource = dataList;
let cloneDataSource = new kendo.data.Query(getDataSource);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "spanID",
value: event.spanID
}).data;
return filterData;
}
addOrRemoveSelectedEvent(event, isAdd, isRemove) {
let that = this;
let filterData = that.getSpanEventList(that._CrowerDataSource._data, event);
for (let e = 0; e < filterData.length; e++) {
if (isAdd) {
if (that.selectedSlotEvent[0]) {
if (that.selectedSlotEvent[0].JumpingNo == filterData[e].JumpingNo)
that.selectedSlotEvent.push(filterData[e]);
} else {
that.selectedSlotEvent.push(filterData[e]);
}
} else {
if (isRemove) {
$('div[data-uid="' + filterData[e].uid + '"]').removeClass('k-state-selected');
let selectedSpanIndex = that.selectedSlotEvent.indexOf(filterData[e]);
if (selectedSpanIndex != -1) {
that.selectedSlotEvent.splice(selectedSpanIndex, 1);
that.selectedSlotTarget.splice(selectedSpanIndex, 1);
}
}
}
}
that.multiSelectEvent();
}
multiSelectEvent() {
let that = this;
for (let s = 0; s < that.selectedSlotEvent.length; s++) {
$('div[data-uid="' + that.selectedSlotEvent[s].uid + '"]').addClass('k-state-selected');
}
}
accessFutureDays(that, selectEvent) {
if (selectEvent == "") {
if (that.selectedSlotEvent[0]) {
let selectedEvent = that.selectedSlotEvent[0];
if (selectedEvent) {
selectEvent = selectedEvent.clonedStart;
}
} else {
let actualStart = that.selectedSlotTarget[0];
let resourceBySlot = that.getCrower().view()._resourceBySlot(actualStart);
let JumpingWithDay = resourceBySlot.JumpingWithDay.split("-");
selectEvent = new Date(that.dateOfSeason(resourceBySlot.week, JumpingWithDay[1]));
}
}
if (selectEvent) {
let FutureDate = new Date();
if (that.futureAccessDays) {
FutureDate.setDate(FutureDate.getDate() + that.futureAccessDays - 1);
FutureDate.setHours(0, 0, 0, 0);
let NeweventDate = new Date(selectEvent);
NeweventDate.setHours(0, 0, 0, 0);
if (NeweventDate > FutureDate) {
//that.isEditable=false;
return false;
}
else {
//that.isEditable=true;
return true;
}
}
} else {
return true;
}
}
CroweAnimate(evt) {
// let element=$(".parrotCrower-MyCustomTimelineview").find("tbody")[0];
// let tbodyElemt=$(element)[0].children[1];
// console.log($(tbodyElemt));
let that = this;
let endTime = evt.end;
let startTime = evt.start;
let clonedstart = new Date(that.selectedSlotEvent[0].clonedStart);
if (startTime.getTime() == clonedstart.getTime()) {
that.topdown = true;
that.leftRight = false;
}
else {
that.topdown = false;
that.leftRight = true;
}
let start = new Date(startTime);
//this.slotBlockDiff = 0;
//get the td width(one empty slot width)
let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;
//calculate the pixel:time ratio
let pxCalc = 0;
if ($("#snapFlag").is(":checked")) {
//calculate the time difference between
//the element and its nearby slot(previous slot) start time in seconds
if (startTime.getMinutes() != 30 && startTime.getMinutes() != 0) {
if (startTime.getMinutes() < 30) {
this.slotBlockDiff = (startTime.getMinutes() * 60) + startTime.getSeconds();
} else {
this.slotBlockDiff = ((startTime.getMinutes() * 60) - 1800) + startTime.getSeconds();
}
}
pxCalc = this.slotBlockDiff * cellWidth / 1800;
}
// if(!$("#snapFlag").is(":checked")){
// this.isDrag = false;
// } else{
// this.isDrag = true;
// }
this.isDrag = true;
//subtract the time difference so as to move the animated block to the start time
start.setTime(start.getTime() - this.slotBlockDiff * 1000);
let end = new Date(endTime);
end.setTime(end.getTime() - this.slotBlockDiff * 1000);
let sortData = this.arrangeArrayUsingStartDateTime(this.selectedSlotEvent);
let sTimeDiff = start.getTime() - sortData[0].start.getTime();
let eTimeDiff = end.getTime() - sortData[0].end.getTime();
// evt.start = start;
// evt.end = end;
$(".parrotevent-drag-hint").css("visibility", "hidden");
$(".parrotevent-drag-hint-clone").css("visibility", "hidden");
let draggedElement = [];
for (let i = 0; i < sortData.length; i++) {
if (i != 0) {
// sortData[i].start = new Date(sortData[i].start);
// let eventStart = new Date(sortData[i].start);
// sortData[i].end = new Date(sortData[i].end);
// let eventEnd = nre Date(sortData[i].end);
// eventStart.setTime(eventStart.getTime()+sTimeDiff - (this.slotBlockDiff*1000));
// eventEnd.setTime(eventEnd.getTime()+eTimeDiff - (this.slotBlockDiff*1000));
// endTime = this.formatTimeWithoutSec(eventEnd);
// startTime= this.formatTimeWithoutSec(eventStart);
let eventStart = new Date(sortData[i].start);
let eventEnd = new Date(sortData[i].end);
eventStart.setTime(eventStart.getTime() + sTimeDiff);
eventEnd.setTime(eventEnd.getTime() + eTimeDiff);
endTime = this.formatTimeWithoutSec(eventEnd);
startTime = this.formatTimeWithoutSec(eventStart);
} else {
endTime = this.formatTimeWithoutSec(end);
startTime = this.formatTimeWithoutSec(start);
}
let event = $('[data-uid*="' + sortData[i].uid + '"]')
.clone()
.removeClass('k-event-inverse').removeClass('k-state-selected')
.addClass('multiCloneCrowe');
//console.log(event);
if (event.find('.multiCloneCroweHintWrapper').length == 0) {
event.append('<div class="multiCloneCroweHintWrapper"><div class="multiCloneCroweHint"><span class="multiDragStartTime">' + startTime + '</span><span class="multiDragEndTime">' + endTime + '</span></div></div>');
} else {
event.find('.multiDragStartTime').text(startTime);
event.find('.multiDragEndTime').text(endTime);
}
event.css("width", (event.outerWidth() + 5) + "px")
draggedElement.push(event);
}
that.dragZone = $(".dragZone");
if (that.dragZone.find(".rsApt").length == 0) {
that.dragZone.empty();
for (let i = 0; i < draggedElement.length; i++) {
draggedElement[i].hide();
that.dragZone.append(draggedElement[i]);
}
}
let firstLeft: any = $('.parrotevent.parrotstate-selected').eq(0).css("left");
firstLeft = parseInt(firstLeft, 10);
let firstTop: any = $('.parrotevent.parrotstate-selected').eq(0).css("top");
firstTop = parseInt(firstTop, 10);
let offsetTop = $(".parrotevent-drag-hint").offset().top + 5
let offsetLeft = $(".parrotevent-drag-hint").offset().left + 5;
for (let i = 0; i < draggedElement.length; i++) {
draggedElement[i].hide();
if (i == 0) {
draggedElement[i].show().css("position", "fixed").css("left", offsetLeft - pxCalc).css("top", offsetTop);
} else {
let left: any = $('.parrotevent.parrotstate-selected').eq(i).css("left");
left = parseInt(left, 10);
let top: any = $('.parrotevent.parrotstate-selected').eq(i).css("top");
top = parseInt(top, 10);
draggedElement[i].show().css("position", "fixed").css("left", offsetLeft + (left - firstLeft) - pxCalc).css("top", offsetTop + (top - firstTop));
}
}
if (that.topdown == true) {
this.mouseevent = offsetLeft;
this.mouseeventtop = offsetTop
if (this.mouseeventtop == 0) {
this.mouseeventtop = offsetTop;
} else {
let mouseLeft = this.mouseeventtop;
this.mouseeventtop = offsetTop;
}
if (offsetTop < 0) {
$('.nationalCrowerBg .parrotCrower-content').scrollTop($('.nationalCrowerBg .parrotCrower-content').scrollTop() - 30);
}
else {
$('.nationalCrowerBg .parrotCrower-content').scrollTop($('.nationalCrowerBg .parrotCrower-content').scrollTop() + 30);
}
}
else {
let currSlot = $(evt.slot)[0]["element"];
let schWidth = $('.parrotCrower-content').width();//total scroll width
let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;//1 slot width
if (cellWidth == 0) {
let tdLen = $(".parrotCrower-table > tbody > tr >td").length;
if (tdLen > 0) {
cellWidth = $(".parrotCrower-table > tbody > tr >td")[tdLen - 1].offsetWidth;//1 slot width
}
}
// if(cellWidth == 0){
// var Crower = $("#Crower").data("kendoCrower");
// var viewSch = Crower.view();
// var schElements = viewSch.content.find("td");
// if(schElements.length>0){
// cellWidth = $(schElements[0])[0].offsetWidth;
// } else {
// cellWidth = 125;
// }
// }
if (cellWidth == 0) {
cellWidth = 125;
}
let totalWidth = cellWidth * 48;// as no. of slots are 48 i.e 5A.M - 5P.M and each hour has 2 slots
let curScroll = $('.parrotCrower-content')[0].scrollLeft;// scroll start position
let curScrollWidth = $('.parrotCrower-content')[0].offsetWidth;//current scroll range
let scrollWidth = $('.parrotCrower-content')[0].scrollWidth;//total width
let curScrollRange = curScrollWidth + curScroll;// scroll end value
if (currSlot.offsetLeft <= (curScroll + (cellWidth / 2))) {
if (curScroll >= 30) {
$('.nationalCrowerBg .parrotCrower-content').scrollLeft($('.nationalCrowerBg .parrotCrower-content').scrollLeft() - 30);
} else {
$('.nationalCrowerBg .parrotCrower-content').scrollLeft($('.nationalCrowerBg .parrotCrower-content').scrollLeft() - curScroll);
}
} else if (currSlot.offsetLeft + cellWidth >= (curScrollRange - (cellWidth / 2))) {
if (currSlot.offsetLeft + 30 < curScrollRange) {
$('.nationalCrowerBg .parrotCrower-content').scrollLeft($('.nationalCrowerBg .parrotCrower-content').scrollLeft() + 30);
}
}
}
}
CrowerEvntMoveAnimation(e) {
let endTime = e.end;
let startTime = e.start;
var start = new Date(startTime);
var end = new Date(endTime);
//d.getSeconds();
endTime = this.formatTimeWithoutSec(end);
startTime = this.formatTimeWithoutSec(start);
let eventHTML = $(".parrotevent-drag-hint").html();
$(document).mousemove(function (evt) {
var Crower = $("#Crower").data("kendoCrower");
if (Crower)
var view = Crower.view();
if ($(".parrotevent-drag-hint > div").eq(1).hasClass('k-event-drag-hint-clone')) {
} else {
var template = '<div class="eventDragHint"><span class="eventStartTime">' + startTime + '</span><span class="eventEndTime">' + endTime + '</span></div><div class="k-event-drag-hint-clone">' + eventHTML + '</div>';
$(".parrotevent-drag-hint").html(template);
}
let cloneHeight = $('.parrotevent-drag-hint').outerHeight();
let cloneWidth = $('.parrotevent-drag-hint').outerWidth();
let offsetTop = evt.clientY - (cloneHeight / 2);
let offsetLeft = evt.clientX - (cloneWidth / 2);
$('.parrotevent-drag-hint-clone').css({ "left": offsetLeft, "top": offsetTop, "width": cloneWidth + "px", "height": cloneHeight + "px" });
});
}
sportsPlayersSleeping(event) {
var sportsPlayersSleeping0 = performance.now();
// if(this.prevSelEvnt && event.spanID == this.prevSelEvnt.spanID && this.prevSelEvnt.start == event.start && this.prevSelEvnt.end == event.end){
// //do nothing
// } else {
let that = this;
let dance = $("#dance");
//var ifthatTemplate0 = performance.now();
if (!that.template) {
var thatTemplate0 = performance.now();
that.template = $("#dance").html();
var thatTemplate1 = performance.now();
alert("thatTemplate0 typing sportsPlayersSleeping ------> " + (thatTemplate1 - thatTemplate0) + " milliseconds.");
}
//var ifthatTemplate1 = performance.now();
//alert("ifthatTemplate0 typing sportsPlayersSleeping ------> " + (ifthatTemplate1 - ifthatTemplate0) + " milliseconds.");
var kendoDestroy0 = performance.now();
//kendo.destroy(dance);
//kendo.de
kendo.delete(dance);
var kendoDestroy1 = performance.now();
alert("kendoDestroy0 typing sportsPlayersSleeping ------> " + (kendoDestroy1 - kendoDestroy0) + " milliseconds.");
//var danceHtml0 = performance.now();
dance.html("");
//var danceHtml1 = performance.now();
//alert("danceHtml0 typing sportsPlayersSleeping ------> " + (danceHtml1 - danceHtml0) + " milliseconds.");
if (event.dirty) {
//var eventdirty0 = performance.now();
let Crower = $("#Crower").data("kendoCrower");
if (Crower) {
Crower.saveEvent();
}
//var eventdirty1 = performance.now();
//alert("eventdirty1 typing isSingle ------> " + (eventdirty1 - eventdirty0) + " milliseconds.");
//Crower.refresh();
}
//var dancehtml5 = performance.now();
dance.html(that.template);
//var dancehtml6 = performance.now();
//alert("dance.html(that.template); typing sportsPlayersSleeping ------> " + (dancehtml6 - dancehtml5) + " milliseconds.");
//var kendobind0 = performance.now();
kendo.bind(dance, event);
//var kendobind1 = performance.now();
//alert("kendobind typing sportsPlayersSleeping ------> " + (kendobind1 - kendobind0) + " milliseconds.");
let rainbow = {
"change": false,
"event": {},
"selEvent": that.selectedSlotEvent
};
//var rainbow0 = performance.now();
rainbow.change = true;
rainbow.event = event;
this.prevSelEvnt = event;
//var rainbow1 = performance.now();
//alert("rainbow typing sportsPlayersSleeping ------> " + (rainbow1 - rainbow0) + " milliseconds.");
var watchChange0 = performance.now();
this.CroweTalking.watchChange(rainbow);
var watchChange1 = performance.now();
alert("watchChange0 typing sportsPlayersSleeping ------> " + (watchChange1 - watchChange0) + " milliseconds.");
//that.blockDateHandling()
//}
//that.changeBlockColor();
var sportsPlayersSleeping1 = performance.now();
alert("sportsPlayersSleeping1 typing isSingle ------> " + (sportsPlayersSleeping1 - sportsPlayersSleeping0) + " milliseconds.");
}
sportsPlayersSleepingEmty(event) {
let that = this;
let dance = $("#dance");
if (!that.template) {
that.template = $("#dance").html();
}
kendo.destroy(dance);
dance.html("");
dance.html(that.template);
kendo.bind(dance, event);
let rainbow = {
"change": false,
"event": {}
};
rainbow.change = true;
rainbow.event = event;
this.CroweTalking.watchChange(rainbow);
//that.changeBlockColor();
}
daySelection(): void {
let that = this;
//let Crower = $("#Crower").data("kendoCrower");
//Crower.view(Crower.view().name);
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').removeClass('addSpan');
let selectedJumpingCount = that.selectedJumping.length;
let countInt: any = that.selectedDay.length;
let thCount: any = $('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').length;
let thColspanCount: any = $('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(0).attr('colspan');
let countIntNew: any = countInt * thColspanCount;
let i = 1;
let dayNameList = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
for (let j = 0; j < thCount; j++) {
let eqText = $('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(j).text();
let getDayFromDate = new Date(that.convertDateFromString(eqText));
let convertedDate = (getDayFromDate.getMonth() + 1) + "/" + getDayFromDate.getDate() + "/" + getDayFromDate.getFullYear().toString().substr(2, 2);
let actualDates = that.actualDates;
let specialEvents = that.specialEvents;
let eventDates = that.eventDates;
let tveDates = that.tveDates;
for (let s = 0; s < selectedJumpingCount; s++) {
let eqTextPlace = (thColspanCount * j) + s;
let replacedText = "<div class='eventBoxHolder' id='eventBoxHolder'+eqTextPlace>";
if (that.selectedJumping[s] == "101" && eventDates) {
for (let i = 0; i < eventDates.length; i++) {
let startDate = new Date(kendo.parseDate(eventDates[i].startDate, 'yyyy-mm-dd'));
let endDate = new Date(kendo.parseDate(eventDates[i].endDate, 'yyyy-mm-dd'));
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
replacedText = replacedText + "<div class='eventWrapper'>EVENT</div>";
break;
}
}
}
replacedText = replacedText + "<div class='dateTextWrapper'>" + dayNameList[getDayFromDate.getDay()] + "<br>" + convertedDate + "</div>";
if (that.selectedJumping[s] == "101") {
let isSpecialEvent = false;
if (specialEvents) {
for (let i = 0; i < specialEvents.length; i++) {
let startDate = new Date(kendo.parseDate(specialEvents[i].startDate, 'yyyy-mm-dd'));
let endDate = new Date(kendo.parseDate(specialEvents[i].endDate, 'yyyy-mm-dd'));
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
replacedText = replacedText + "<br>" + specialEvents[i].eventDescription;
replacedText = replacedText.replace('eventBoxHolder', 'eventBoxHolder specialEvents');
isSpecialEvent = true;
break;
}
}
}
if (tveDates) {
for (let i = 0; i < tveDates.length; i++) {
let startDate = new Date(kendo.parseDate(tveDates[i].startDate, 'yyyy-mm-dd'));
let endDate = new Date(kendo.parseDate(tveDates[i].endDate, 'yyyy-mm-dd'));
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
if (isSpecialEvent) {
replacedText = replacedText + '&nbsp;<span class="tveWrapper">TVE</span>';
} else {
replacedText = replacedText + '<br><span class="tveWrapper">TVE</span>';
}
break;
}
}
}
if (actualDates) {
for (let i = 0; i < actualDates.length; i++) {
let startDate = new Date(kendo.parseDate(actualDates[i].startDate, 'yyyy-mm-dd'));
let endDate = new Date(kendo.parseDate(actualDates[i].endDate, 'yyyy-mm-dd'));
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
replacedText = replacedText + "<div class='actualsWrapper'>ACTUALS</div>";
break;
}
}
}
}
if (that.selectedJumping) {
if (that.selectedJumping.length > 1) {
replacedText = replacedText + "<div class='selectedLogoWrapper'><img src=assets/images/Jumping_header/" + that.selectedJumping[s] + ".png class='CrowerHeaderLogo'></div></div>";
}
}
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:nth-child(2) > th').eq(eqTextPlace).html(replacedText);
}
if (i == 1) {
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(j).addClass('addSpan');
let defaultText = $('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(j).find('span').text();
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(j).find('span').text(that.weekOfSeason(defaultText, false, null));
} else {
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(j).addClass('removeCol');
}
i = i + 1;
if (i == countInt + 1) {
i = 1;
}
}
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th.removeCol').detach();
$('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th.addSpan').attr({ "colspan": countIntNew });
let MouseCount = $('.parrotCrower-header .parrotCrower-table > tbody > tr:nth-child(2) > th').length;
let headerCount: any = $('.parrotCrower-header .parrotCrower-table > tbody > tr:nth-child(1) > th').length;
let thColSpanCountNew: any = $('.parrotCrower-header .parrotCrower-header-wrap .parrotCrower-table > tbody > tr:first-child > th').eq(0).attr('colspan');
let thColspanMax: any = headerCount * thColSpanCountNew;
let extraCol = thColspanMax - MouseCount;
let extraColWidth = extraCol * 250;
let customColWidthHeader = (MouseCount * 250) + extraColWidth;
let customColWidthContent = MouseCount * 250;
$('.parrotCrower-content .parrotCrower-table').css({ "width": customColWidthContent + "px" });
$('.parrotCrower-header .parrotCrower-table').css({ "width": customColWidthHeader + "px" });
let windowHeight = $(window).outerHeight();
let CrowerRightBarHeight = windowHeight - 220;
//$('.CrowerTabContent').css({"max-height": CrowerRightBarHeight+"px"});
$('.parrotCrower-content > .parrotCrower-table > tbody > tr > td:nth-child(' + thColSpanCountNew + 'n+0)').css({ "border-right-color": "#2F8BD6" });
$('.parrotCrower-header .parrotCrower-table > tbody > tr > th:nth-child(' + thColSpanCountNew + 'n+0)').css({ "border-right-color": "#2F8BD6" });
$(window).trigger('resize');
//that.changeBlockColor();
}
calculateWeekNo(target): any {
let targetDate: any = new Date(target);
// ISO week date weeks start on monday
// so correct the day number
var dayNr = (targetDate.getDay() + 6) % 7;
// ISO 8601 states that week 1 is the week
// with the first thursday of that year.
// Set the targetDate date to the thursday in the targetDate week
targetDate.setDate(targetDate.getDate() - dayNr + 3);
// Store the millisecond value of the targetDate date
var firstThursday = targetDate.valueOf();
// Set the targetDate to the first thursday of the year
// First set the targetDate to january first
targetDate.setMonth(0, 1);
// Not a thursday? Correct the date to the next thursday
if (targetDate.getDay() != 4) {
targetDate.setMonth(0, 1 + ((4 - targetDate.getDay()) + 7) % 7);
}
// The weeknumber is the number of weeks between the
// first thursday of the year and the thursday in the targetDate week
var valueDate = 1 + Math.ceil((firstThursday - targetDate) / 604800000); // 604800000 = 7 * 24 * 3600 * 1000
return valueDate;
}
getConfigWeekNum(target, season) {
let seasonList = this.CroweTalking.listOfValuesArray.seasons;
let weekNr = 52;
if (!season) {
for (let i = 0; i < seasonList.length; i++) {
let cloneDataSource = new kendo.data.Query(seasonList[i].seasonDayParts);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "daypartId",
value: this.selectedDayPart
}).data;
let filterStartDate;
let filterEndDate;
if (filterData[0]) {
filterStartDate = new Date(filterData[0].startDate);
filterEndDate = new Date(filterData[0].endDate);
} else {
filterStartDate = new Date(seasonList[i].seasonDayParts[0].startDate);
filterEndDate = new Date(seasonList[i].seasonDayParts[0].endDate);
}
if (target.getTime() >= filterStartDate.getTime() && target.getTime() <= filterEndDate.getTime()) {
let oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
let diffDays = Math.round(Math.abs((filterStartDate.getTime() - filterEndDate.getTime()) / (oneDay)));
weekNr = Math.round(diffDays / 7);
}
}
} else {
let cloneDataSource = new kendo.data.Query(seasonList);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "seasonNo",
value: season
}).data;
let cloneDaypart = new kendo.data.Query(filterData[0].seasonDayParts);
let daypartData = cloneDataSource.filter({
operator: "eq",
field: "daypartId",
value: this.selectedDayPart
}).data;
let filterStartDate;
let filterEndDate;
if (daypartData[0]) {
filterStartDate = new Date(daypartData[0].startDate);
filterEndDate = new Date(daypartData[0].endDate);
} else {
filterStartDate = new Date(filterData[0].seasonDayParts[0].startDate);
filterEndDate = new Date(filterData[0].seasonDayParts[0].endDate);
}
let oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
let diffDays = Math.round(Math.abs((filterStartDate.getTime() - filterEndDate.getTime()) / (oneDay)));
weekNr = Math.round(diffDays / 7);
}
return weekNr;
}
getConfigSeason(target, season) {
let seasonList = this.CroweTalking.listOfValuesArray.seasons;
let weekNr = 52;
let seasonVal;
if (!season) {
for (let i = 0; i < seasonList.length; i++) {
let cloneDataSource = new kendo.data.Query(seasonList[i].seasonDayParts);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "daypartId",
value: this.selectedDayPart
}).data;
let filterStartDate;
let filterEndDate;
if (filterData[0]) {
filterStartDate = new Date(filterData[0].startDate);
filterEndDate = new Date(filterData[0].endDate);
} else {
filterStartDate = new Date(seasonList[i].seasonDayParts[0].startDate);
filterEndDate = new Date(seasonList[i].seasonDayParts[0].endDate);
}
if (target.getTime() >= filterStartDate.getTime() && target.getTime() <= filterEndDate.getTime()) {
let oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
let diffDays = Math.round(Math.abs((filterStartDate.getTime() - filterEndDate.getTime()) / (oneDay)));
weekNr = Math.round(diffDays / 7);
seasonVal = seasonList[i].seasonNo;
}
}
} else {
let cloneDataSource = new kendo.data.Query(seasonList);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "seasonNo",
value: season
}).data;
let cloneDaypart = new kendo.data.Query(filterData[0].seasonDayParts);
let daypartData = cloneDataSource.filter({
operator: "eq",
field: "daypartId",
value: this.selectedDayPart
}).data;
let filterStartDate;
let filterEndDate;
if (daypartData[0]) {
filterStartDate = new Date(daypartData[0].startDate);
filterEndDate = new Date(daypartData[0].endDate);
} else {
filterStartDate = new Date(filterData[0].seasonDayParts[0].startDate);
filterEndDate = new Date(filterData[0].seasonDayParts[0].endDate);
}
let oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
let diffDays = Math.round(Math.abs((filterStartDate.getTime() - filterEndDate.getTime()) / (oneDay)));
weekNr = Math.round(diffDays / 7);
seasonVal = filterData[0].seasonNo;
}
return seasonVal;
}
weekOfSeason(date, isSearchScreen, seasonNo): any {
// Create a copy of this date object
let target: any;
if (isSearchScreen) {
target = new Date(this.convertDateFromString(date));
} else {
target = new Date(date);
}
/* target.setHours(1,0,0,0)
// ISO week date weeks start on monday
// so correct the day number
let dayNr = (target.getDay() + 6) % 7;
let year;
// Set the target to the thursday of this week so the
// target date is in the right year
target.setDate(target.getDate() - dayNr + 3);
// ISO 8601 states that week 1 is the week
// with january 4th in it
let jan4:any = new Date(target.getFullYear(), 0, 4);
// Number of days between target date and january 4th
let dayDiff:any = (target - jan4) / 86400000;
// Calculate week number: Week 1 (january 4th) plus the
// number of weeks between target date and january 4th
let weekNr = Math.ceil(dayDiff / 7); */
var weekNr = this.calculateWeekNo(target);
let seasonList = this.CroweTalking.listOfValuesArray.seasons;
let nxtSeasonVal = 0;
//let endSeason:any = null;
var year = target.getFullYear();
var lastWeek = this.lastWeekNr;
var startWeek = 38;
var isValidYear = true;
let seasonVal = 0;
let stSeason: any = null;
let stDateWeek = 15;
let filterStartDate = null;
let filterEndDate = null;
if (this.filterStartWoS && this.filterEndWoS && target.getTime() >= this.filterStartWoS.getTime() && target.getTime() <= this.filterEndWoS.getTime()) {
seasonVal = this.seasonWoS;
stSeason = this.stWoS;
stDateWeek = this.stDateWoS;
filterStartDate = this.filterStartWoS;
filterEndDate = this.filterEndWoS;
lastWeek = this.lastWeekWoS;
startWeek = this.startWeekWoS;
} else {
for (let i = 0; i < seasonList.length; i++) {
let cloneDataSource = new kendo.data.Query(seasonList[i].seasonDayParts);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "daypartId",
value: this.selectedDayPart
}).data;
if (filterData[0]) {
filterStartDate = new Date(filterData[0].startDate);
filterEndDate = new Date(filterData[0].endDate);
} else {
filterStartDate = new Date(seasonList[i].seasonDayParts[0].startDate);
filterEndDate = new Date(seasonList[i].seasonDayParts[0].endDate);
}
filterStartDate.setHours(0, 0, 0, 0);
filterEndDate.setHours(0, 0, 0, 0);
if (target.getTime() >= filterStartDate.getTime() && target.getTime() <= filterEndDate.getTime()) {
stSeason = new Date(filterStartDate);
//endSeason = new Date(filterEndDate);
seasonVal = seasonList[i].seasonNo;
this.filterStartWoS = filterStartDate;
this.filterEndWoS = filterEndDate;
}
}
lastWeek = this.weeksInYear(seasonVal);
startWeek = this.calculateWeekNo(stSeason);
this.lastWeekWoS = lastWeek;
this.startWeekWoS = startWeek;
}
if (seasonVal != 0) {
stDateWeek = lastWeek - startWeek + 1;
if (seasonVal < year) {
isValidYear = false;
}
}
this.seasonWoS = seasonVal;
this.stWoS = stSeason;
this.stDateWoS = stDateWeek;
if (weekNr >= startWeek && isValidYear) {
weekNr = weekNr - startWeek + 1;
} else {
year = year - 1;
weekNr = weekNr + stDateWeek;
}
//let weekOfSeason="Week "+ weekNr +" - Season "+year;
let weekOfSeason = { "weekNo": weekNr, "season": year };
return weekOfSeason;
}
dateOfSeason(week, day) {
let value = new Date();
var ISOweekStart;
if (week) {
let weekNo = week.split(" ");
let year = parseInt(weekNo[4]);
let weekNum = parseInt(weekNo[1]);
let seasonList = this.CroweTalking.listOfValuesArray.seasons;
let seasonVal = 0;
let stSeason: any = null;
//let endSeason:any = null;
let stDateWeek = 15;
var lastWeek = this.lastWeekNr;
//var lastWeek = this.weeksInYear(target.getFullYear());
let cloneDataSource = new kendo.data.Query(seasonList);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "seasonNo",
value: year
}).data;
let filterStartDate = null;
if (filterData.length == 1 && filterData[0].seasonDayParts) {
for (let i = 0; i < filterData[0].seasonDayParts.length; i++) {
if (i == 0) {
filterStartDate = new Date(filterData[0].seasonDayParts[i].startDate);
if (filterData[0].seasonDayParts[i].daypartId == this.selectedDayPart) {
break;
}
} else {
if (filterData[0].seasonDayParts[i].daypartId == this.selectedDayPart) {
filterStartDate = new Date(filterData[0].seasonDayParts[i].startDate);
break;
}
}
}
}
if (filterStartDate) {
filterStartDate.setHours(0, 0, 0, 0);
lastWeek = this.weeksInYear(year);
stDateWeek = lastWeek - this.calculateWeekNo(filterStartDate) + 1;
}
if (weekNum <= stDateWeek) {
weekNum = weekNum + (lastWeek - stDateWeek);
} else {
weekNum = weekNum - stDateWeek;
year = year + 1;
}
//let days = [1,2,3,4,5,6,7];
//let d = ((1 + (weekNum - 1) * 7))+ days[day]; // 1st of January + 7 days for each week
//value= new Date(year, 0, d);
/*let simple =new Date(year,0,(1 + (weekNum - 1) * 7));
var ISOweekStart = simple;
var dow = simple.getDay();
if (dow < 4){
ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1);
}else{
ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay());
}
ISOweekStart.setHours(day*24);*/
var j10 = new Date(year, 0, 10, 12, 0, 0);
var j4 = new Date(year, 0, 4, 12, 0, 0);
var mon1 = j4.getTime() - j10.getDay() * 86400000;
ISOweekStart = new Date(mon1 + ((weekNum - 1) * 7 + parseInt(day)) * 86400000);
}
return ISOweekStart;
}
weeksInYear(year) {
let month = 11, day = 31, week = 1;
// Find week that 31 Dec is in. If is first week, reduce date until
// get previous week.
do {
let d = new Date(year, month, day--);
week = this.getWeekNumber(d)[1];
} while (week == 1);
return week;
};
getWeekNumber(d) {
// Copy date so don't modify original
d = new Date(d);
d.setHours(0, 0, 0);
// Set to nearest Thursday: current date + 4 - current day number
// Make Sunday's day number 7
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
// Get first day of year
let yearStart: any = new Date(d.getFullYear(), 0, 1);
// Calculate full weeks to nearest Thursday
let weekNo: any = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
// Return array of year and week number
return [d.getFullYear(), weekNo];
}
getTalkingCall(data: any): void {
let that = this;
that.AnimalTalking.getResponse(that.CrowerOptions.getComponentUrl, 'get', data)
.subscribe(
data => {
if (data) {
that.dataSourceData = data.Crowes.CroweItems;
//that.CrowerInit();
//that.rowDotMenuClick.emit({"selectedMenuItem":"setData","type":"normalTalking","data":data});
}
},
err => {
}
);
}
getSpanList(data) {
let getDataSource = this._CrowerDataSource._data;
let cloneDataSource = new kendo.data.Query(getDataSource);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "spanID",
value: data
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
//filterData.sort(this.event_sort());
let CrowerSpanEvent = [];
for (let i = 0; i < filterData.length; i++) {
let spanEvent = filterData[i];
/* let startTime=new Date(filterData[i]["start"]);
let endTime=new Date(filterData[i]["end"]);
let cloneStartTime=new Date(filterData[i]["clonedStart"]);
let cloneEndTime=new Date(filterData[i]["clonedEnd"]);
let startHours=cloneStartTime.getHours();
let startMins=cloneStartTime.getMinutes();
let startSecs=cloneStartTime.getSeconds();
let endHours=cloneEndTime.getHours();
let endMins=cloneEndTime.getMinutes();
let endSecs=cloneEndTime.getSeconds();
startTime.setHours(startHours);
startTime.setMinutes(startMins);
startTime.setSeconds(startSecs);
endTime.setHours(endHours);
endTime.setMinutes(endMins);
endTime.setSeconds(endSecs);
// spanEvent["start"]=startTime;
// spanEvent["end"]=endTime; */
CrowerSpanEvent.push(spanEvent);
}
this.CroweTalking.getSpanEvent(CrowerSpanEvent);
// this.CroweTalking.getSpanEvent(filterData);
//that.getCrower().occurrenceByUid(filterData[e].uid)
}
checkAvailability(currentMoveEvent, ispreventDefault, isNew, dataList) {
var t0 = performance.now();
let that = this;
if (ispreventDefault) {
currentMoveEvent.preventDefault(); // cancel click
}
if (!this.isEditMode()) {
let searchDomain = this.searchDomainCheck(currentMoveEvent, currentMoveEvent.event, this._CrowerDataSource._data);
if (this.accessFutureDays(this, currentMoveEvent.eventActualEnd) && searchDomain.searchDateFallCheck) {
let JumpingWithDay = currentMoveEvent.resources.JumpingWithDay.split("-");
if (currentMoveEvent.event.MouseNo == -1 && currentMoveEvent.event.seriesNo == -1) {
currentMoveEvent.event.JumpingNo = parseInt(JumpingWithDay[0]);
}
if (currentMoveEvent.event.JumpingNo != parseInt(JumpingWithDay[0])) {
this.warningPopup("Mouse not available for this Jumping");
} else {
//let spanList=this.getSpanEventList(that._CrowerDataSource._data,currentMoveEvent.event)
//if(spanList.length==1){
let occurrences = this.occurrencesInRangeByResource(currentMoveEvent.eventActualStart, currentMoveEvent.eventActualEnd, currentMoveEvent.start, currentMoveEvent.end, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
if (occurrences.length == 1) {
if (this.matchTimesWithOccurrence(currentMoveEvent, occurrences)) {
this.replaceOrCancelPopup(currentMoveEvent, occurrences, false, isNew, dataList);
} else {
this.replaceOrCancelPopup(currentMoveEvent, occurrences, true, isNew, dataList);
}
} else {
if (this.matchTimesWithOccurrence(currentMoveEvent, occurrences)) {
let slotAvailable = this.checkAvailabilityInsideOverlap(occurrences);
if (slotAvailable.isAvailable) {
this.replaceOrCancelPopup(currentMoveEvent, occurrences, true, isNew, dataList);
//this.typing(currentMoveEvent,(new Date(slotAvailable.start)),(new Date(slotAvailable.end)));
} else {
this.replaceOrCancelPopup(currentMoveEvent, occurrences, false, isNew, dataList);
}
} else {
this.replaceOrCancelPopup(currentMoveEvent, occurrences, true, isNew, dataList);
}
}
return true;
} else {
this.spanOverlapFit(currentMoveEvent, isNew, occurrences, true, dataList, []);
}
//}else {
//this.spanEventReplaceOrFit(spanList,currentMoveEvent,isNew)
//}
}
} else {
this.singleButtonDialog("You cannot perform this action. Please refine your search in order to display more data");
that.sportsPlayersSleeping(currentMoveEvent.event);
}
}
//this.btOperation("NB","aptBooked");
let eventList = this.selectedSlotEvent;
/* let cEventMove;
for(let i=0;i<eventList.length;i++) {
cEventMove=eventList[i];
cEventMove.set("bookedFlag","NB");
}
cEventMove.set("bookedFlag","NB");*/
var t1 = performance.now();
console.log("checkAvailability " + (t1 - t0) + " milliseconds.");
//alert("checkAvailability " + (t1 - t0) + " milliseconds.");
return false;
}
searchDomainCheck(currentMoveEvent, endOccu, dataSource): any {
let searchDateFallCheck = true;
let that = this;
let isNotSpan = true;
let spanList = that.getSpanEventList(dataSource, currentMoveEvent.event);
if (spanList.length == 0) {
spanList.push(currentMoveEvent.event);
}
let sortData = that.arrangeArrayUsingStartDateTime(spanList);
//let clonedStart=new Date(this.getChangeClonedDate(currentMoveEvent.start,currentMoveEvent.event.start,sortData[0].clonedStart));
//let clonedEnd=new Date(this.getChangeClonedDate(currentMoveEvent.end,currentMoveEvent.event.end,sortData[sortData.length-1].clonedEnd));
let clonedStart = new Date(currentMoveEvent.eventActualStart);
let clonedEnd = new Date(currentMoveEvent.eventActualEnd);
let blockDuration = clonedEnd.getTime() - clonedStart.getTime();
let diffDays = this.dateDiffInDays(clonedStart, clonedEnd); //actual diff count need for loop
if (diffDays > 1) {
isNotSpan = false;
}
let clonedStartCurrent;
/*if(that.selectedSlotEvent.length>0 && !isNotSpan){
clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedStart);
// clonedStartCurrent = new Date(that.selectedSlotEvent[0].clonedEnd);
let evntTime = new Date(clonedStartCurrent);
let eventMin = evntTime.getMinutes()>=30?1:0;
let colInd = (evntTime.getHours()*2) + eventMin;
let rowCount = $('.parrotCrower-content>.parrotCrower-table > tbody> tr').length
let checkSlot = null;
for(let ct = 0; ct<rowCount; ct++){
checkSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq("+ct+") > td:eq(0)"));
let curTarget = that.getCrower().view()._resourceBySlot(checkSlot);
let JumpingDay = curTarget.JumpingWithDay.split("-");
let curStart:any =new Date(that.dateOfSeason(curTarget.week, JumpingDay[1]));
if(curStart.getDate() == clonedStartCurrent.getDate() &&
curStart.getMonth() == clonedStartCurrent.getMonth() &&
curStart.getFullYear() == clonedStartCurrent.getFullYear()){
that.rowIndex = ct;
if((rowCount-1) == ct ){
let nexDate = new Date(curStart);
nexDate.setDate(nexDate.getDate()+1)
let nxtDay = nexDate.getDay()==0? 6:nexDate.getDay()-1;
let endDate = new Date(that.CroweEndDate);
if(that.selectedDay.indexOf(nxtDay)!=-1 && nexDate.getTime() < endDate.getTime()){
//allow event to create span for last row if
//the search end date is less than current scroll end date
} else {
searchDateFallCheck=false;
}
break;
}else{
let tdNxtSlot = that.getCrower().slotByElement($(".parrotCrower-content>.parrotCrower-table > tbody> tr:eq("+(that.rowIndex + 1)+") > td:eq(0)"));
let tdNxtTarget = that.getCrower().view()._resourceBySlot(tdNxtSlot);
let tdNxtNWD = tdNxtTarget.JumpingWithDay.split("-");
let tdNxtStart =new Date(that.dateOfSeason(tdNxtTarget.week, tdNxtNWD[1]));
let timeDifference:any=((tdNxtStart.getTime()-curStart.getTime())/(1000*60*60));
if(timeDifference > 24 ){
searchDateFallCheck=false;
break;
}
}
}
}
}*/
for (let i = 0; i < diffDays; i++) {
let actualDate = new Date(clonedStart);
actualDate.setDate(actualDate.getDate() + i);
actualDate.setHours(0, 0, 0, 0);
if (searchDateArea.indexOf(actualDate.getTime()) == -1) {
searchDateFallCheck = false;
}
}
let result = { "searchDateFallCheck": searchDateFallCheck, "isNotSpan": isNotSpan };
return result;
}
spanOverlapFit(currentMoveEvent, isNew, occurence, isSingle, dataSource, operationDonePos): any { // move evnt start overlap with occurrence event end
let that = this;
let operationDonePosition = operationDonePos;
let eventActualStart = currentMoveEvent.eventActualStart;
let startTime = new Date(currentMoveEvent.start);
startTime.setHours(eventActualStart.getHours(), eventActualStart.getMinutes(), eventActualStart.getSeconds());
let blockDuration = (new Date(currentMoveEvent.end).getTime()) - (new Date(currentMoveEvent.start).getTime()); // finding move event duration
let endTime = new Date(startTime);
endTime.setTime(endTime.getTime() + blockDuration); //hours adding for fit
endTime = new Date(endTime);
let spanList = that.getSpanEventList(dataSource, currentMoveEvent.event);
if (spanList.length == 0) {
spanList.push(currentMoveEvent.event);
}
let sortData = that.arrangeArrayUsingStartDateTime(spanList);
let getSourceEvent;
if (isNew) {
getSourceEvent = [];
} else {
getSourceEvent = this.getSourceEvents(sortData);
}
var currentMoveEvent0 = performance.now();
if (currentMoveEvent.eventActualEnd.getHours() == 0 && currentMoveEvent.eventActualEnd.getMinutes() == 0 && currentMoveEvent.eventActualEnd.getSeconds() == 0) {
currentMoveEvent.eventActualEnd.setTime(currentMoveEvent.eventActualEnd.getTime() - 1000);
currentMoveEvent.end.setTime(currentMoveEvent.end.getTime() - 1000);
blockDuration = blockDuration - 1000;
endTime.setTime(endTime.getTime() - 1000);
}
var currentMoveEvent1 = performance.now();
//alert("if (currentMoveEvent.eventActualEnd.getHours() " + (currentMoveEvent1 - currentMoveEvent0) + " milliseconds.")
let spanPosition = sortData.indexOf(currentMoveEvent.event);
let clonedStart = new Date(currentMoveEvent.eventActualStart);
let clonedEnd = new Date(currentMoveEvent.eventActualEnd);
let spanResult = this.getDiffDateAndCompareResult(clonedStart, clonedEnd);
//let clonedStart=new Date(this.getChangeClonedDate(currentMoveEvent.start,currentMoveEvent.event.start,sortData[0].clonedStart));
//let clonedEnd=new Date(this.getChangeClonedDate(currentMoveEvent.end,currentMoveEvent.event.end,sortData[sortData.length-1].clonedEnd));
let actualBlockDuration = clonedEnd.getTime() - clonedStart.getTime();
let diffDays = this.dateDiffInDays(clonedStart, clonedEnd); //actual diff count need for loop
let lastAddedEvent = [];
var t0 = performance.now();
if (spanResult.isSpan) {
var spanResultinsideIf0 = performance.now();
let SourceEvent = $.extend(true, {}, sortData[0]);
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
//dataSource.splice(dataSource.indexOf(sortData[del]),1);
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
that.removeItems(sortData, false);
}
for (let i = 0; i < diffDays; i++) {
let isReverse = false;
let isForward = false;
let eTime = new Date(startTime);
let sTime = new Date(startTime);
sTime.setDate(sTime.getDate());
let actualDate = new Date(clonedStart);
actualDate.setDate(actualDate.getDate() + i);
let actualStart = new Date(actualDate);
let actualEnd = new Date(actualDate);
let event = $.extend(true, {}, SourceEvent);
let cResource = this.getResourceGroup(actualDate, SourceEvent.JumpingNo);
event.week = cResource.week;
event.JumpingWithDay = cResource.JumpingWithDay;
if (i == 0) {
if (i == diffDays - 1) {
if (clonedEnd.getHours() == 0 && clonedEnd.getMinutes() == 0 && clonedEnd.getSeconds() == 0) {
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
} else {
eTime.setHours(0, 0, 0, 0);
eTime.setHours(eTime.getHours() + clonedEnd.getHours(), eTime.getMinutes() + clonedEnd.getMinutes(), eTime.getSeconds() + clonedEnd.getSeconds());
actualEnd.setHours(0, 0, 0, 0);
actualEnd.setHours(clonedEnd.getHours(), clonedEnd.getMinutes(), clonedEnd.getSeconds());
}
isForward = false;
isReverse = false;
} else {
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
isForward = true;
isReverse = false;
}
} else if (i == diffDays - 1) {
sTime.setHours(0, 0, 0, 0);
actualStart.setHours(0, 0, 0);
if (clonedEnd.getHours() == 0 && clonedEnd.getMinutes() == 0 && clonedEnd.getSeconds() == 0) {
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
} else {
eTime.setHours(0, 0, 0, 0);
eTime.setHours(eTime.getHours() + clonedEnd.getHours(), eTime.getMinutes() + clonedEnd.getMinutes(), eTime.getSeconds() + clonedEnd.getSeconds())
actualEnd.setHours(0, 0, 0, 0);
actualEnd.setHours(clonedEnd.getHours(), clonedEnd.getMinutes(), clonedEnd.getSeconds());
}
isForward = false;
isReverse = true;
} else {
sTime.setHours(0, 0, 0);
eTime.setHours(23, 59, 59);
actualStart.setHours(0, 0, 0);
actualEnd.setHours(23, 59, 59);
isForward = true;
isReverse = true;
}
let resources = { JumpingWithDay: event.JumpingWithDay, week: event.week };
let occurrences = this.occurrencesInRangeByResource(actualStart, actualEnd, sTime, eTime, event, resources, "JumpingWithDay");
event.isForward = isForward;
event.isReverse = isReverse;
event.dirty = true;
currentMoveEvent.event = event;
currentMoveEvent.resources = resources;
let isSpanLast = false;
if (i == diffDays - 1) {
isSpanLast = false;
} else {
isSpanLast = true;
}
if (occurrences.length > 0) {
eTime = new Date(occurrences[0].start);
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
break;
} else {
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
}
let addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
that.selectedSlotEvent.push(addedEvent);
}
that.multiSelectEvent();
if (isSingle) {
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent, destinationEvent, getSourceEvent, "create");
}
var spanResultinsideIf1 = performance.now();
//alert("spanResultinsideIf1 { " + (spanResultinsideIf1 - spanResultinsideIf0) + " milliseconds.");
} else {
var spanResultinsideElse0 = performance.now();
let occurrences = this.occurrencesInRangeByResource(clonedStart, clonedEnd, startTime, endTime, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
endTime = new Date(occurrences[0].start);
}
if (sortData.length > 0) {
//var spanResultinsideElse0 = performance.now();
var sortData0 = performance.now();
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
//dataSource.splice(dataSource.indexOf(sortData[del]),1);
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
//that.removeItems(sortData,false);
}
var sortData1 = performance.now();
//alert("sortData { " + (sortData1 - sortData0) + " milliseconds.");
}
currentMoveEvent.event.isForward = false;
currentMoveEvent.event.isReverse = false;
//currentMoveEvent.event.dirty=true;
var typingcurrentMoveEvent0 = performance.now();
this.typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, false);
var typingcurrentMoveEvent1 = performance.now();
alert("typingcurrentMoveEvent0 { " + (typingcurrentMoveEvent1 - typingcurrentMoveEvent0) + " milliseconds.");
let addedEvent;
if (isNew) {
addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
} else {
addedEvent = currentMoveEvent.event
}
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
var spanResultinsideElse1 = performance.now();
//alert("spanResultinsideElse1 { " + (spanResultinsideElse1 - spanResultinsideElse0) + " milliseconds.");
//that.selectedSlotEvent=[addedEvent];
/*if(!isSingle){
that.selectedSlotEvent.push(addedEvent);
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent,destinationEvent,getSourceEvent,"create");
}*/
}
//$('div[data-uid="'+addedEvent.uid+'"]').addClass('k-state-selected');
let result = { "operationDonePosition": operationDonePosition, "lastAddedEvent": lastAddedEvent, "getSourceEvent": getSourceEvent };
var t1 = performance.now();
//alert("if (spanResult.isSpan) { " + (t1 - t0) + " milliseconds.")
return result;
//this.typing(currentMoveEvent,startTime,endTime,isNew,occurence,isSingle);
}
checkMultiBlock(pastList, ispreventDefault, isNew, dataList) {
let JumpingWithDay = pastList[0].resources.JumpingWithDay.split("-");
if (pastList[0].event.JumpingNo != JumpingWithDay[0]) {
this.warningPopup("Mouse not available for this Jumping");
} else {
let overAllOccurrences = false;
let isOverlapOccurs = false;
let pustEventWithOccurrences = [];
let occurrencesCount = 0;
let totalOccurrences = [];
for (let i = 0; i < dataList.length; i++) {
let currentMoveEvent = pastList[i];
let occurrences = this.occurrencesInRangeByResource(currentMoveEvent.eventActualStart, currentMoveEvent.eventActualEnd, currentMoveEvent.start, currentMoveEvent.end, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
//occurrencesCount=occurrencesCount+occurrences.length;
for (let dc = 0; dc < occurrences.length; dc++) {// reduce span count
let cloneDataSource = new kendo.data.Query(totalOccurrences);
let filterData = cloneDataSource.filter({
operator: "eq", field: "spanID", value: occurrences[dc].spanID
}).data;
if (filterData.length == 0) {
totalOccurrences.push(occurrences[dc]);
}
}
occurrencesCount = totalOccurrences.length;
let prepareData = { currentMoveEvent: currentMoveEvent, occurrences: occurrences };
pustEventWithOccurrences.push(prepareData);
if (occurrences.length > 0) {
overAllOccurrences = true;
if (this.matchTimesWithOccurrence(currentMoveEvent, occurrences)) {
let slotAvailable = this.checkAvailabilityInsideOverlap(occurrences);
if (slotAvailable.isAvailable) {
//this.replaceOrCancelPopup(currentMoveEvent,occurrences,true,isNew);
} else {
//this.replaceOrCancelPopup(currentMoveEvent,occurrences,false,isNew);
isOverlapOccurs = true;
}
} else {
//this.replaceOrCancelPopup(currentMoveEvent,occurrences,true,isNew);
}
}
}
if (overAllOccurrences) {
if (isOverlapOccurs) {
this.replaceOrCancelPopupForMultiBlock(pustEventWithOccurrences, false, isNew, occurrencesCount);
} else {
this.replaceOrCancelPopupForMultiBlock(pustEventWithOccurrences, true, isNew, occurrencesCount);
}
} else {
let lastAddedEvent = [];
let sourceEventList = [];
let emptyOccurence = { "event": [], "index": [] }
let operationDonePosition = [];
for (let i = 0; i < dataList.length; i++) {
let result;
//this.typing(pastList[i],pastList[i].start,pastList[i].end,isNew,emptyOccurence,false);
if (operationDonePosition.indexOf(i) == -1) {
result = this.spanOverlapFit(pastList[i], isNew, emptyOccurence, false, dataList, operationDonePosition);
operationDonePosition = result.operationDonePosition;
}
sourceEventList = $.merge(sourceEventList, result.getSourceEvent);
lastAddedEvent = $.merge(lastAddedEvent, result.lastAddedEvent);
}
this.selectedSlotEvent = lastAddedEvent;
let destinationEvent = this.getDestinationEvents(lastAddedEvent);;
if (isNew) {
this.enableSave(destinationEvent, destinationEvent, sourceEventList, "create");
} else {
this.enableSave(sourceEventList, destinationEvent, [], "update");
}
this.multiSelectEvent();
// this.highlightPastEvents(pastList.length);
}
}
}
checkAvailabilityInsideOverlap(occurrences): any {
let slotAvailable = { isAvailable: false, start: null, end: null };
if (occurrences.length > 1) {
for (let i = 0; i < occurrences.length - 1; i++) {
let cDate1 = new Date(occurrences[i].end).getTime();
let cDate2 = new Date(occurrences[i + 1].start).getTime();
if (cDate1 != cDate2) {
slotAvailable.isAvailable = true;
slotAvailable.start = cDate1;
slotAvailable.end = cDate2;
return slotAvailable;
}
}
}
return slotAvailable;
}
startTimeOverlapFit(currentMoveEvent, time, isNew, occurence, isSingle) { // move event end overlap with occurrence event start
let endTime = new Date(time);
let blockDuration = (new Date(currentMoveEvent.end).getTime()) - (new Date(currentMoveEvent.start).getTime()); // finding move event duration
let startTime = new Date(endTime);
startTime.setTime(startTime.getTime() - blockDuration); // hours adding for fit
startTime = new Date(startTime);
let occurrences = this.occurrencesInRangeByResource(currentMoveEvent.eventActualStart, currentMoveEvent.eventActualEnd, startTime, endTime, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
startTime = new Date(occurrences[occurrences.length - 1].end);
}
this.typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, false);
}
spanStartTimeOverlapFit(currentMoveEvent, endOccu, isNew, occurence, isSingle, dataSource, operationDonePos): any { // move evnt start overlap with occurrence event end
let that = this;
let operationDonePosition = operationDonePos;
let endTime = new Date(endOccu.start);
let blockDuration = (that.getMillseconds(currentMoveEvent.end)) - (that.getMillseconds(currentMoveEvent.start));
let startTime = new Date(endTime);
startTime.setTime(startTime.getTime() - blockDuration); // hours adding for fit
startTime = new Date(startTime);
let spanList = that.getSpanEventList(dataSource, currentMoveEvent.event);
if (spanList.length == 0) {
spanList.push(currentMoveEvent.event);
}
let sortData = that.arrangeArrayUsingStartDateTime(spanList);
let getSourceEvent;
if (isNew) {
getSourceEvent = [];
} else {
getSourceEvent = this.getSourceEvents(sortData);
}
let spanPosition = sortData.indexOf(currentMoveEvent.event);
let clonedEnd = new Date(endOccu.clonedStart);
clonedEnd.setHours(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds());
let checkStartDate = new Date(currentMoveEvent.eventActualStart);
checkStartDate.setHours(startTime.getHours(), startTime.getMinutes(), startTime.getSeconds());
let clonedStart = new Date(clonedEnd);
clonedStart.setTime(clonedStart.getTime() - currentMoveEvent.eventDuration);
let spanResult = this.getDiffDateAndCompareResult(clonedStart, clonedEnd);
let actualBlockDuration = clonedEnd.getTime() - clonedStart.getTime();
let actEnd = new Date(endOccu.clonedStart);
let actStart = new Date(actEnd);
actStart.setTime(actStart.getTime() - actualBlockDuration);
let findSpanDuration = (actEnd.getTime()) - (actStart.getTime()); // finding move event duration
//actEnd.setHours(actEnd.getHours()+endTime.getHours(),actEnd.getMinutes()+endTime.getMinutes(),actEnd.getSeconds()+endTime.getSeconds());
let diffDays = this.dateDiffInDays(actStart, actEnd); //actual diff count need for loop
let lastAddedEvent = [];
if (spanResult.isSpan) {
let SourceEvent = $.extend(true, {}, sortData[0]);
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
//dataSource.splice(dataSource.indexOf(sortData[del]),1);
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
that.removeItems(sortData, false);
}
for (let i = 0; i < diffDays; i++) {
let isReverse = false;
let isForward = false;
let eTime = new Date(endTime);
let sTime = new Date(endTime);
sTime.setDate(sTime.getDate());
let actualDate = new Date(actEnd);
actualDate.setDate(actualDate.getDate() - i);
let actualEnd = new Date(actualDate);
let actualStart = new Date(actualDate);
let event = $.extend(true, {}, SourceEvent);
let cResource = this.getResourceGroup(actualDate, SourceEvent.JumpingNo);
event.week = cResource.week;
event.JumpingWithDay = cResource.JumpingWithDay;
if (i == 0) {
if (i == diffDays - 1) {
if (actStart.getHours() == 24 && actStart.getMinutes() == 0 && actStart.getSeconds() == 0) {
//eTime.setTime(startTime.getTime());
sTime.setHours(0, 0, 0);
actualStart.setHours(0, 0, 0);
} else {
sTime.setHours(0, 0, 0);
sTime.setHours(sTime.getHours() + actStart.getHours(), sTime.getMinutes() + actStart.getMinutes(), sTime.getSeconds() + actStart.getSeconds());
actualStart.setHours(0, 0, 0);
actualStart.setHours(actStart.getHours(), actStart.getMinutes(), actStart.getSeconds());
}
isForward = false;
isReverse = false;
} else {
sTime.setHours(0, 0, 0);
actualStart.setHours(0, 0, 0);
isForward = false;
isReverse = true;
}
} else if (i == diffDays - 1) {
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
if (actStart.getHours() == 24 && actStart.getMinutes() == 0 && actStart.getSeconds() == 0) {
//eTime.setTime(startTime.getTime());
sTime.setHours(0, 0, 0);
actualStart.setHours(0, 0, 0);
} else {
sTime.setHours(0, 0, 0);
sTime.setHours(sTime.getHours() + actStart.getHours(), sTime.getMinutes() + actStart.getMinutes(), sTime.getSeconds() + actStart.getSeconds());
actualStart.setHours(0, 0, 0);
actualStart.setHours(actStart.getHours(), actStart.getMinutes(), actStart.getSeconds());
}
isForward = true;
isReverse = false;
} else {
sTime.setHours(0, 0, 0, 0);
eTime.setHours(23, 59, 59);
actualStart.setHours(0, 0, 0, 0);
actualEnd.setHours(23, 59, 59);
isForward = true;
isReverse = true;
}
let resources = { JumpingWithDay: event.JumpingWithDay, week: event.week };
let occurrences = this.occurrencesInRangeByResource(actualStart, actualEnd, sTime, eTime, event, resources, "JumpingWithDay");
event.isForward = isForward;
event.isReverse = isReverse;
event.dirty = true;
currentMoveEvent.event = event;
currentMoveEvent.resources = resources;
let isSpanLast = false;
if (i == diffDays - 1) {
isSpanLast = false;
} else {
isSpanLast = true;
}
if (occurrences.length > 0) {
sTime = new Date(occurrences[occurrences.length - 1].end);
if (sTime.getHours() == 0 && sTime.getMinutes() == 0 && sTime.getSeconds() == 0) {
event.isReverse = false;
}
if (sTime.getTime() === eTime.getTime()) {
let changeLastEventForward = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
changeLastEventForward.set("isReverse", false);
break;
}
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
break;
} else {
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
}
let addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
}
if (isSingle) {
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent, destinationEvent, getSourceEvent, "create");
}
} else {
let occurrences = this.occurrencesInRangeByResource(actStart, actEnd, startTime, endTime, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
startTime = new Date(occurrences[occurrences.length - 1].end);
}
if (sortData.length > 0) {
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
//dataSource.splice(dataSource.indexOf(sortData[del]),1);
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
//that.removeItems(sortData,false);
}
}
currentMoveEvent.event.isForward = false;
currentMoveEvent.event.isReverse = false;
//currentMoveEvent.event.dirty=true;
//let getSourceEvent = this.getSourceEvents(sortData);
this.typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, false);
let addedEvent;
if (isNew) {
addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
} else {
addedEvent = currentMoveEvent.event
}
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
/*if(isSingle){
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent,destinationEvent,getSourceEvent,"create");
}*/
}
let result = { "operationDonePosition": operationDonePosition, "lastAddedEvent": lastAddedEvent, "getSourceEvent": getSourceEvent };
return result;
//this.typing(currentMoveEvent,startTime,endTime,isNew,occurence,isSingle);
}
endTimeOverlapFit(currentMoveEvent, time, isNew, occurence, isSingle) { // move evnt start overlap with occurrence event end
let startTime = new Date(time);
let blockDuration = (new Date(currentMoveEvent.end).getTime()) - (new Date(currentMoveEvent.start).getTime()); // finding move event duration
let endTime = new Date(startTime);
endTime.setTime(endTime.getTime() + blockDuration); //hours adding for fit
endTime = new Date(endTime);
let occurrences = this.occurrencesInRangeByResource(currentMoveEvent.eventActualStart, currentMoveEvent.eventActualEnd, startTime, endTime, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
endTime = new Date(occurrences[0].start);
}
this.typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, false);
}
getSpanEventDuration(dataList, event: any): any {
let getDataSource = dataList;
let cloneDataSource = new kendo.data.Query(getDataSource);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "spanID",
value: event.spanID
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
let totalDuration = 0;
for (let i = 0; i < filterData.length; i++) {
let startTime = new Date(filterData[i]["clonedStart"]).getTime();
let endTime = new Date(filterData[i]["clonedEnd"]).getTime();
let timeDifference = endTime - startTime;
totalDuration = totalDuration + timeDifference;
}
//let durationTime=this.differenceTimes(totalDuration);
let durationTime = totalDuration / 1000;
return durationTime;
}
typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, isSpan) {
let that = this;
if (isNew) {
var isNew0 = performance.now();
let startHours = startTime.getHours();
let startMins = startTime.getMinutes();
let startSecs = startTime.getSeconds();
let endHours = endTime.getHours();
let endMins = endTime.getMinutes();
let endSecs = endTime.getSeconds();
let timeDifference = (endTime - startTime) / 1000;
let JumpingWithDay = currentMoveEvent.resources.JumpingWithDay.split("-");
currentMoveEvent.event.start = startTime;
currentMoveEvent.event.end = endTime;
currentMoveEvent.event.programLength = timeDifference;
currentMoveEvent.event["dayOfWeekNo"] = JumpingWithDay[1];
currentMoveEvent.event["week"] = currentMoveEvent.resources.week;
currentMoveEvent.event["JumpingWithDay"] = currentMoveEvent.event.JumpingNo + "-" + JumpingWithDay[1];
let actualStart = this.dateOfSeason(currentMoveEvent.resources.week, JumpingWithDay[1]);
let actualEnd = this.dateOfSeason(currentMoveEvent.resources.week, JumpingWithDay[1]);
actualStart.setHours(startHours);
actualStart.setMinutes(startMins);
actualStart.setSeconds(startSecs);
currentMoveEvent.event["clonedStart"] = actualStart;
currentMoveEvent.event["clonedStartDate"] = that.dateString(new Date(actualStart));
currentMoveEvent.event["clonedStartFilterRowId"] = that.formatDate(actualStart);
actualEnd.setHours(endHours);
actualEnd.setMinutes(endMins);
actualEnd.setSeconds(endSecs);
currentMoveEvent.event["clonedEnd"] = actualEnd;
if (!currentMoveEvent.event["pgRatingData"]) {
if (currentMoveEvent.event.pgRatingOverride)
currentMoveEvent.event["pgRatingData"] = currentMoveEvent.event.overridedPgRating;
else
currentMoveEvent.event["pgRatingData"] = currentMoveEvent.event.pgRating;
}
if (!currentMoveEvent.event["MouseVersionNo"] || (currentMoveEvent.event["MouseVersionNo"] && (currentMoveEvent.event["MouseVersionNo"] == -1) || currentMoveEvent.event["MouseVersionNo"] == "")) {
if (currentMoveEvent.event["materials"]) {
for (let ct = 0; ct < currentMoveEvent.event.materials.length; ct++) {
if (currentMoveEvent.event.materials[ct].defaultFlag == "Y") {
currentMoveEvent.event["MouseVersionNo"] = currentMoveEvent.event.materials[ct].versionNo;
}
}
}
}
// let duration=this.getSpanEventDuration(this._CrowerDataSource._data,currentMoveEvent.event);
// currentMoveEvent.event["programLength"]=duration;
this._CrowerDataSource.add(currentMoveEvent.event);
let lastAddedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
lastAddedEvent["rowIndex"] = this._CrowerDataSource._data.length - 1;
if (!isSpan) {
this.sportsPlayersSleeping(lastAddedEvent);
}
if (this.isCreateComment) {
this.commentOverlay(lastAddedEvent, true);
this.getCrower().select(null);
this.getCrower().select([lastAddedEvent.uid]);
//this.selectedSlotEvent = lastAddedEvent];
this.isCreateComment = false;
}
if (isSingle) {
var isSingle0 = performance.now();
let getSourceEvent = this.getSourceEvents([lastAddedEvent]);
this.enableSave(getSourceEvent, getSourceEvent, occurence, "create");
this.selectedSlotEvent = [lastAddedEvent];
$('div[data-uid="' + lastAddedEvent.uid + '"]').addClass('k-state-selected');
var isSingle1 = performance.now();
alert("typing isSingle0 { " + (isSingle1 - isSingle0) + " milliseconds.");
}
var isNew1 = performance.now();
alert("typing isNew10 { " + (isNew1 - isNew0) + " milliseconds.");
//this.getCrower().sportsPlayersSleeping(lastAddedEvent);
} else {
var isNewelse0 = performance.now();
let cEventMove = currentMoveEvent.event;
let prevProgramLength = cEventMove.programLength;
let getSourceEvent = this.getSourceEvents([cEventMove]);
if ((new Date(cEventMove.start)).getTime() != startTime.getTime() || (new Date(cEventMove.end)).getTime() != endTime.getTime()
|| currentMoveEvent.event.JumpingWithDay != currentMoveEvent.resources.JumpingWithDay || currentMoveEvent.event.week != currentMoveEvent.resources.week) {
let startHours = startTime.getHours();
let startMins = startTime.getMinutes();
let startSecs = startTime.getSeconds();
let endHours = endTime.getHours();
let endMins = endTime.getMinutes();
let endSecs = endTime.getSeconds();
let timeDifference = (endTime - startTime) / 1000;
if ((timeDifference - prevProgramLength) > 300 || (prevProgramLength - timeDifference) > 300) {
cEventMove.bookedFlag = "NB";
if (cEventMove.formatNo)
cEventMove.formatNo = 0;
if (cEventMove.format)
cEventMove.format = {};
if (cEventMove.affiliateInfos) {
for (let i = 0; i < cEventMove.affiliateInfos.length; i++) {
if (cEventMove.affiliateInfos[i].category == "Timings") {
cEventMove.affiliateInfos[i].notes = "";
if (cEventMove.affiliateInfos[i].affiliateInfoNo)
cEventMove.affiliateInfos[i].status = "Updated";
cEventMove.affiliateInfos[i].MouseNo = -1;
}
}
}
}
let JumpingWithDay = currentMoveEvent.resources.JumpingWithDay.split("-");
let prevStartDate = cEventMove.start;
let prevEndDate = cEventMove.end;
cEventMove.start = startTime;
cEventMove.end = endTime;
let startMinDiff = (((prevStartDate.getHours() * 60) + prevStartDate.getMinutes()) - ((cEventMove.start.getHours() * 60) + cEventMove.start.getMinutes()));
let endMinDiff = (((prevEndDate.getHours() * 60) + prevEndDate.getMinutes()) - ((cEventMove.end.getHours() * 60) + cEventMove.end.getMinutes()));
//cEventMove.bookedFlag="";
if ((startMinDiff > 2 && endMinDiff > 2) || (startMinDiff < -2 && endMinDiff < -2)) {
cEventMove.bookedFlag = "NB";
}
currentMoveEvent.event.dayOfWeekNo = JumpingWithDay[1];
currentMoveEvent.event.week = currentMoveEvent.resources.week;
currentMoveEvent.event.JumpingWithDay = currentMoveEvent.event.JumpingNo + "-" + JumpingWithDay[1];
let actualStart = that.dateOfSeason(currentMoveEvent.resources.week, JumpingWithDay[1]);
let actualEnd = that.dateOfSeason(currentMoveEvent.resources.week, JumpingWithDay[1]);
actualStart.setHours(startHours);
actualStart.setMinutes(startMins);
actualStart.setSeconds(startSecs);
currentMoveEvent.event["clonedStart"] = actualStart;
currentMoveEvent.event["clonedStartDate"] = that.dateString(new Date(actualStart));
currentMoveEvent.event["clonedStartFilterRowId"] = that.formatDate(actualStart);
actualEnd.setHours(endHours);
actualEnd.setMinutes(endMins);
actualEnd.setSeconds(endSecs);
currentMoveEvent.event["clonedEnd"] = actualEnd;
debugger;
cEventMove.set("programLength", "");
cEventMove.set("programLength", timeDifference);
// let duration=this.getSpanEventDuration(this._CrowerDataSource._data,cEventMove);
// cEventMove.set("programLength",duration);
//that.changeBlockColor();
if (isSingle) {
var isSingleElseIf0 = performance.now();
var sportsPlayersSleeping0 = performance.now();
that.sportsPlayersSleeping(cEventMove);
var sportsPlayersSleeping1 = performance.now();
alert("sportsPlayersSleeping1 typing isSingle ------> " + (sportsPlayersSleeping1 - sportsPlayersSleeping0) + " milliseconds.");
//var destinationEvent0 = performance.now();
let destinationEvent = this.getDestinationEvents([cEventMove]);
//var destinationEvent1 = performance.now();
//alert("destinationEvent0 typing isSingle ------> " + (destinationEvent1 - destinationEvent0) + " milliseconds.");
//var enableSave0 = performance.now();
that.enableSave(getSourceEvent, destinationEvent, occurence, "update");
//var enableSave1 = performance.now();
//alert("enableSave typing isSingle ------> " + (enableSave1 - enableSave0) + " milliseconds.");
//var selectedSlotEvent0 = performance.now();
that.selectedSlotEvent = [cEventMove];
//var selectedSlotEvent1 = performance.now();
//alert("selectedSlotEvent1 typing isSingle ------> " + (selectedSlotEvent1 - selectedSlotEvent0) + " milliseconds.");
//var divdatauid0 = performance.now();
$('div[data-uid="' + cEventMove.uid + '"]').addClass('k-state-selected');
//var divdatauid1 = performance.now();
//alert("divdatauid1 typing isSingle ------> " + (divdatauid1 - divdatauid0) + " milliseconds.");
var isSingleElseIf1 = performance.now();
alert("typing isSingle ------> " + (isSingleElseIf1 - isSingleElseIf0) + " milliseconds.");
}
}
var isNewelse1 = performance.now();
//alert("typing isNewelse0 { " + (isNewelse1 - isNewelse0) + " milliseconds.");
}
//that.scrollToHour(startTime);
this.changeBlockColor();
}
calCulatingFit(currentMoveEvent, occurrencesTime): any {
let blockDuration = (new Date(currentMoveEvent.end).getTime()) - (new Date(currentMoveEvent.start).getTime()); // finding move event duration
let findTime = new Date(occurrencesTime);
findTime.setTime(findTime.getTime() + blockDuration); // adding for fit
return (new Date(findTime));
}
matchTimesWithOccurrence(currentMoveEvent, occurrences) {
let Estart = new Date(currentMoveEvent.eventActualStart);//.getTime();
let Ostart = new Date(occurrences[0].clonedStart);//.getTime();
let EstartDate = new Date(currentMoveEvent.eventActualStart);
EstartDate.setHours(0, 0, 0);
let EstartDateMin = EstartDate.getTime() / 1000;
let OstartDate = new Date(occurrences[0].clonedStart);
OstartDate.setHours(0, 0, 0);
let OstartMin = OstartDate.getTime() / 1000;
let EStartTime = EstartDateMin + (Estart.getHours() * 60 * 60) + (Estart.getMinutes() * 60) + Estart.getSeconds();
let OStartTime = OstartMin + (Ostart.getHours() * 60 * 60) + (Ostart.getMinutes() * 60) + Ostart.getSeconds();
let Eend = new Date(currentMoveEvent.eventActualEnd);//.getTime();
let Oend = new Date(occurrences[occurrences.length - 1].clonedEnd);//.getTime();
let EendDate = new Date(currentMoveEvent.eventActualEnd);
EendDate.setHours(0, 0, 0);
let EendDateMin = EendDate.getTime() / 1000;
let OendDate = new Date(occurrences[occurrences.length - 1].clonedEnd);
OendDate.setHours(0, 0, 0);
let OendDateMin = OendDate.getTime() / 1000;
let EEndTime = EendDateMin + (Eend.getHours() * 60 * 60) + (Eend.getMinutes() * 60) + Eend.getSeconds();
let OEndTime = OendDateMin + (Oend.getHours() * 60 * 60) + (Oend.getMinutes() * 60) + Oend.getSeconds();
if ((Oend.getHours() == 23 && Oend.getMinutes() == 59 && Oend.getSeconds() == 59)) {
OEndTime = OEndTime + 1000;
}
if (EStartTime >= OStartTime && EEndTime <= OEndTime) {
return true;
}
return false;
}
matchStartTimeWithOccurrence(currentMoveEvent, occurrences) {
let Estart = new Date(currentMoveEvent.eventActualStart) //.getTime();
let EstartDate = new Date(currentMoveEvent.eventActualStart);
EstartDate.setHours(0, 0, 0);
let EstartDateMin = EstartDate.getTime() / 1000;
let Ostart = new Date(occurrences[0].clonedStart) //.getTime();
let OstartDate = new Date(occurrences[0].clonedStart);//.getTime();
OstartDate.setHours(0, 0, 0);
let OstartMin = OstartDate.getTime() / 1000;
let EStartTime = EstartDateMin + (Estart.getHours() * 60 * 60) + (Estart.getMinutes() * 60) + Estart.getSeconds();
let OStartTime = OstartMin + (Ostart.getHours() * 60 * 60) + (Ostart.getMinutes() * 60) + Ostart.getSeconds();
if (EStartTime < OStartTime) {
return true;
}
return false;
}
matchEndTimeWithOccurrence(currentMoveEvent, occurrences) {
let Eend = new Date(currentMoveEvent.end).getTime();
let Oend = new Date(occurrences[occurrences.length - 1]).getTime();
if (Eend > Oend) {
return true;
}
return false;
}
removeItems(occurrences, isDeleteOnly) {
let Crower = $("#Crower").data("kendoCrower");
let getSourceEvent = this.getSourceEvents(occurrences);
let selectedEvent = [];
this.preEventDataBoundCallMultiTime = false;
if (isDeleteOnly) {
this.preEventDataBoundCallMultiTime = true;
}
for (let i = 0; i < occurrences.length; i++) {
Crower.removeEvent(occurrences[i]);
}
this.preEventDataBoundCallMultiTime = true;
if (isDeleteOnly) {
this.enableSave(getSourceEvent, getSourceEvent, [], "delete");
}
this.getCrower().select(null);
//this.CrowerComponent.getCrower().select([occurrences[0].uid]);
}
occurrencesInRangeByResource(actualStart, actualEnd, start, end, event, resources, resourceFieldName) {
let Crower = $("#Crower").data("kendoCrower");
let occurrences = this.getSourceEvents(this._CrowerDataSource._data);
let idx = this._CrowerDataSource._data.indexOf(event);
if (idx > -1) {
occurrences.splice(idx, 1);
}
event = $.extend({}, event, resources);
return this.filterByResource(actualStart, actualEnd, occurrences, resourceFieldName, event, start, end);
}
filterByResource(actualStart, actualEnd, occurrences, resourceFieldName, value, start, end) {
let t0 = performance.now();
let result = [];
let occurrence;
let startTime = this.getMillseconds(actualStart);
let endTime = this.getMillseconds(actualEnd);
for (let idx = 0, length = occurrences.length; idx < length; idx++) {
occurrence = occurrences[idx];
//let JumpingWithDay = value["JumpingWithDay"].split("-");
let ocurrenceStart = this.getMillseconds(occurrences[idx].clonedStart);
let ocurrenceEnd = this.getMillseconds(occurrences[idx].clonedEnd);
//let ocurrencesStartTime = (ocurrenceStart.getHours()*60*60) + (ocurrenceStart.getMinutes()*60) + ocurrenceStart.getSeconds();
//&& this.dateRangeOverlaps(startTime,endTime,ocurrenceStart,ocurrenceEnd)
let checkList = [{ "clonedStart": ocurrenceStart, "clonedEnd": ocurrenceEnd }];
// if ( occurrence["schedItemNo"] != value["schedItemNo"] && occurrence["spanID"] != value["spanID"] && occurrence["JumpingNo"] === value["JumpingNo"] && this.occurrencesInRangeByDateRange(startTime,endTime,checkList)) {
// result.push(occurrence);
// }
if (occurrence["spanID"] != value["spanID"] && occurrence["JumpingNo"] === value["JumpingNo"] && this.occurrencesInRangeByDateRange(startTime, endTime, checkList) && ((!this.occurrencesInSelectedItem(occurrence["spanID"])))) {
result.push(occurrence);
//break;
}
//break;
}
if (result.length > 1) {
result = this.arrangeArrayUsingStartDateTime(result);
}
let t1 = performance.now();
console.log("Call to doSomething took " + (t1 - t0) + " milliseconds.");
//alert("filterByResource Call to doSomething took " + (t1 - t0) + " milliseconds.");
return result;
}
arrangeArrayUsingStartDateTime(items): any {
items.sort(function (a, b) {
// Turn your strings into dates, and then subtract them
// to get a value that is either negative, positive, or zero.
return (new Date(b.clonedStart).getTime()) - (new Date(a.clonedStart).getTime());
});
return items.reverse();
}
dateRangeOverlaps(a_start, a_end, b_start, b_end): any {
/* if (((a_start >= b_start) && (a_start <= b_end)) || ((a_end <= b_start) && (a_end <= b_end) )){
return true;
}*/
if (((a_start < b_end) && (b_start < a_end) && (a_start < a_end) && (b_start < b_end)) ||
((a_start < b_end) && (a_start < a_end) && (b_start < a_end) && (b_start < b_end)) ||
((a_start < (a_end < b_end ? a_end : b_end)) && (b_start < (a_end < b_end ? a_end : b_end))) ||
((a_start > b_start ? a_start : b_start) < (a_end < b_end ? a_end : b_end))) {
return true;
}
/*if (a_start <= b_start && b_start <= a_end) return true; // b starts in a
if (a_start <= b_end && b_end <= a_end) return true; // b ends in a
if (b_start < a_start && a_end < b_end) return true; // a in b*/
return false;
}
occurrencesInRangeByDateRange(start, end, data): any {
let list = new kendo.data.Query(data).filter({
logic: 'or',
filters: [
{
logic: 'and',
filters: [
{
field: 'clonedStart',
operator: 'gte',
value: start
},
{
field: 'clonedEnd',
operator: 'gte',
value: start
},
{
field: 'clonedStart',
operator: 'lt',
value: end
}
]
},
{
logic: 'and',
filters: [
{
field: 'clonedStart',
operator: 'lte',
value: start
},
{
field: 'clonedEnd',
operator: 'gt',
value: start
}
]
}
]
}).toArray();
if (list.length > 0) {
return true;
}
return false;
}
generateHistoryColumn(detailsMouse) {
let that = this;
let columns = [
{ field: 'contextRow', Mouse: " ", width: 25, locked: true },
{
field: "Date",
Mouse: "Date", width: 200,
template: function Date(Date) {
return Date.Date;
}
},
{
field: "showval",
Mouse: "This Show", width: 200,
template: function showval(showval) {
return showval.showval;
}
},
{
field: "ending",
Mouse: "ending at", width: 200,
template: function ending(ending) {
return ending.ending;
}
},
{
field: "overlap",
Mouse: "overlap with this show", width: 200,
template: function overlap(overlap) {
return overlap.overlap;
}
},
{
field: "starting",
Mouse: "starting at", width: 200,
template: function starting(starting) {
return starting.starting;
}
}
];
return columns;
}
replaceOrCancelPopup(currentMoveEvent, occurrences, isFit, isNew, dataList) {
let replaceOrDelete = "";
let that = this;
let clickEvent = true;
if (isFit) {
$("#blockChangePopWith").find('.kendoContent').text("Overlap exists. Please confirm.");
$("#fitBlock").show();
replaceOrDelete = "Delete";
} else {
$("#blockChangePopWith").find('.kendoContent').text("Are you sure you want replace show(s)?");
$("#fitBlock").hide();
replaceOrDelete = "Replace";
}
$("#blockChangePopWith" + ' .kPopUpMouse').text('Crowing');
let dialog = $("#blockChangePopWith").data("kendoWindow").center().open();
let occurrencesCount = that.spanFilterCount(occurrences);
$("#replaceOK").text(replaceOrDelete + " (" + occurrencesCount + ")");
$("#replaceOK").unbind().click(function () {
if (clickEvent) {
dialog.close();
that.requestStart();
setTimeout(function () {
var emptyOccurence = { "event": [], "index": [] }
clickEvent = false;
that.spanRemoveFind(occurrences);
let occurenceEventList = that.getSourceEvents(occurrences);
that.removeItems(occurrences, false);
//that.typing(currentMoveEvent,(new Date(currentMoveEvent.start)),(new Date(currentMoveEvent.end)),isNew,occurenceEventList,true);
let result = that.spanOverlapFit(currentMoveEvent, isNew, occurrences, true, dataList, []);
//occurenceEventList=$.merge(occurenceEventList, result.getSourceEvent);
//let lastAddedEvent=result.lastAddedEvent;
//let getSourceEvent = that.getSourceEvents(lastAddedEvent);
//that.enableSave(getSourceEvent,getSourceEvent,occurenceEventList,"create");
//that.btOperation("NB","aptBooked");
let eventList = that.selectedSlotEvent;
/*if(eventList.length>0){
let cEventMove;
for(let i=0;i<eventList.length;i++) {
cEventMove=eventList[i];
cEventMove.set("bookedFlag","NB");
}
//cEventMove.set("bookedFlag","NB");
}*/
that.requestEnd();
}, 0);
}
});
$("#cancelBlock").unbind().click(function () {
//var revert=true;
//that.CroweTalking.revertEvent(revert);
if (clickEvent) {
clickEvent = false;
//let JumpingWithDay = currentMoveEvent.resources.JumpingWithDay.split("-");
//currentMoveEvent.event["dayOfWeekNo"] = JumpingWithDay[1];
//currentMoveEvent.event["week"] = currentMoveEvent.resources.week;
//currentMoveEvent.event["JumpingWithDay"] = currentMoveEvent.event.JumpingNo+"-"+JumpingWithDay[1];
//that.selectedSlotEvent=[currentMoveEvent.event];
//that.getCrower().select(null);
//$('div[data-uid="'+currentMoveEvent.event.uid+'"]').addClass('k-state-selected');
if (that.selectedSlotEvent[0])
that.sportsPlayersSleeping(that.selectedSlotEvent[0]);
else
that.sportsPlayersSleepingEmty({})
dialog.close();
}
});
$("#fitBlock").unbind().click(function () {
if (clickEvent) {
dialog.close();
that.requestStart();
setTimeout(function () {
var emptyOccurence = { "event": [], "index": [] }
clickEvent = false;
let slotAvailable = that.checkAvailabilityInsideOverlap(occurrences);
let occurenceEvent = { "event": [], "index": [] }
if (that.matchTimesWithOccurrence(currentMoveEvent, occurrences)) {
that.typing(currentMoveEvent, (new Date(slotAvailable.start)), (new Date(slotAvailable.end)), isNew, occurenceEvent, true, false);
} else if (that.matchStartTimeWithOccurrence(currentMoveEvent, occurrences)) {
let endTime = new Date(occurrences[0].start);
let clonedEnd = new Date(occurrences[0].clonedStart);
clonedEnd.setHours(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds());
let clonedStart = new Date(clonedEnd);
clonedStart.setTime(clonedStart.getTime() - currentMoveEvent.eventDuration);
currentMoveEvent.eventActualStart = clonedStart;
currentMoveEvent.eventActualEnd = clonedEnd;
let searchDomain = that.searchDomainCheck(currentMoveEvent, currentMoveEvent.event, that._CrowerDataSource._data);
if (searchDomain.searchDateFallCheck) {
that.spanStartTimeOverlapFit(currentMoveEvent, occurrences[0], isNew, occurenceEvent, true, dataList, []);
//that.startTimeOverlapFit(currentMoveEvent,occurrences[0].start,isNew,emptyOccurence,false);
} else {
that.singleButtonDialog("You cannot perform this action. Please refine your search in order to display more data");
}
} else {
if (slotAvailable.isAvailable) {
let spanList = that.getSpanEventList(dataList, currentMoveEvent.event);
if (spanList.length != 1) {
let sortData = that.arrangeArrayUsingStartDateTime(spanList);
let spanPosition = sortData.indexOf(currentMoveEvent.event);
sortData.splice(spanPosition, 1);
that.removeItems(sortData, false);
currentMoveEvent.event.isForward = false;
currentMoveEvent.event.isReverse = false;
// change need to do undo redo
}
that.typing(currentMoveEvent, (new Date(slotAvailable.start)), (new Date(slotAvailable.end)), isNew, occurenceEvent, true, false);
} else {
let startTime = new Date(occurrences[occurrences.length - 1].end);
let clonedStart = new Date(currentMoveEvent.eventActualStart);
clonedStart.setHours(startTime.getHours(), startTime.getMinutes(), startTime.getSeconds());
let clonedEnd = new Date(clonedStart);
clonedEnd.setTime(clonedStart.getTime() + currentMoveEvent.eventDuration);
currentMoveEvent.eventActualStart = clonedStart;
currentMoveEvent.eventActualEnd = clonedEnd;
let searchDomain = that.searchDomainCheck(currentMoveEvent, currentMoveEvent.event, that._CrowerDataSource._data);
if (searchDomain.searchDateFallCheck) {
that.spanEndTimeOverlapFit(currentMoveEvent, occurrences[occurrences.length - 1], isNew, occurenceEvent, true, dataList, []);
//endTimeOverlapFit //spanEndTimeOverlapFit
//that.endTimeOverlapFit(currentMoveEvent,occurrences[occurrences.length-1].end,isNew,occurenceEvent,true);
} else {
that.singleButtonDialog("You cannot perform this action. Please refine your search in order to display more data");
}
}
}
//that.getCrower().select(null);
$('div[data-uid="' + currentMoveEvent.event.uid + '"]').addClass('k-state-selected');
let eventList = that.selectedSlotEvent;
/*if(eventList.length>0){
let cEventMove;
for(let i=0;i<eventList.length;i++) {
cEventMove=eventList[i];
cEventMove.set("bookedFlag","NB");
}
//cEventMove.set("bookedFlag","NB");
}*/
that.requestEnd();
}, 0);
}
});
}
spanEndTimeOverlapFit(currentMoveEvent, endOccu, isNew, occurence, isSingle, dataSource, operationDonePos): any { // move evnt start overlap with occurrence event end
let that = this;
let operationDonePosition = operationDonePos;
let startTime = new Date(endOccu.end);
let blockDuration = (new Date(currentMoveEvent.end).getTime()) - (new Date(currentMoveEvent.start).getTime()); // finding move event duration
let endTime = new Date(startTime);
endTime.setTime(endTime.getTime() + blockDuration); //hours adding for fit
endTime = new Date(endTime);
let spanList = that.getSpanEventList(dataSource, currentMoveEvent.event);
if (spanList.length == 0) {
spanList.push(currentMoveEvent.event);
}
let sortData = that.arrangeArrayUsingStartDateTime(spanList);
let getSourceEvent;
if (isNew) {
getSourceEvent = [];
} else {
getSourceEvent = this.getSourceEvents(sortData);
}
let spanPosition = sortData.indexOf(currentMoveEvent.event);
let clonedStart = new Date(currentMoveEvent.eventActualStart);
clonedStart.setHours(startTime.getHours(), startTime.getMinutes(), startTime.getSeconds());
let checkingEnd = new Date(currentMoveEvent.eventActualEnd);
checkingEnd.setHours(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds());
let clonedEnd = new Date(clonedStart);
clonedEnd.setTime(clonedStart.getTime() + currentMoveEvent.eventDuration);
let spanResult = this.getDiffDateAndCompareResult(clonedStart, clonedEnd);
let actualBlockDuration = clonedEnd.getTime() - clonedStart.getTime();
let actStart = new Date(endOccu.clonedEnd);
let actEnd = new Date(actStart);
actEnd.setTime(actEnd.getTime() + actualBlockDuration);
let findSpanDuration = (actEnd.getTime()) - (actStart.getTime()); // finding move event duration
//actEnd.setHours(actEnd.getHours()+endTime.getHours(),actEnd.getMinutes()+endTime.getMinutes(),actEnd.getSeconds()+endTime.getSeconds());
let diffDays = this.dateDiffInDays(actStart, actEnd); //actual diff count need for loop
let lastAddedEvent = [];
if (spanResult.isSpan) {
let SourceEvent = $.extend(true, {}, sortData[0]);
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
//dataSource.splice(dataSource.indexOf(sortData[del]),1);
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
that.removeItems(sortData, false);
}
for (let i = 0; i < diffDays; i++) {
let isReverse = false;
let isForward = false;
let eTime = new Date(startTime);
let sTime = new Date(startTime);
sTime.setDate(sTime.getDate());
let actualDate = new Date(actStart);
actualDate.setDate(actualDate.getDate() + i);
let actualStart = new Date(actualDate);
let actualEnd = new Date(actualDate);
let event = $.extend(true, {}, SourceEvent);
let cResource = this.getResourceGroup(actualDate, SourceEvent.JumpingNo);
event.week = cResource.week;
event.JumpingWithDay = cResource.JumpingWithDay;
if (i == 0) {
if (i == diffDays - 1) {
if (actEnd.getHours() == 0 && actEnd.getMinutes() == 0 && actEnd.getSeconds() == 0) {
//eTime.setTime(startTime.getTime());
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
} else {
eTime.setHours(0, 0, 0, 0);
eTime.setHours(eTime.getHours() + actEnd.getHours(), eTime.getMinutes() + actEnd.getMinutes(), eTime.getSeconds() + actEnd.getSeconds());
actualEnd.setHours(0, 0, 0, 0);
actualEnd.setHours(actEnd.getHours(), actEnd.getMinutes(), actEnd.getSeconds());
}
isForward = false;
isReverse = false;
} else {
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
isForward = true;
isReverse = false;
}
} else if (i == diffDays - 1) {
sTime.setHours(0, 0, 0, 0);
actualStart.setHours(0, 0, 0, 0);
if (actEnd.getHours() == 0 && actEnd.getMinutes() == 0 && actEnd.getSeconds() == 0) {
//eTime.setTime(startTime.getTime());
eTime.setHours(23, 59, 59);
actualEnd.setHours(23, 59, 59);
} else {
eTime.setHours(0, 0, 0, 0);
eTime.setHours(eTime.getHours() + actEnd.getHours(), eTime.getMinutes() + actEnd.getMinutes(), eTime.getSeconds() + actEnd.getSeconds());
actualEnd.setHours(0, 0, 0, 0);
actualEnd.setHours(actEnd.getHours(), actEnd.getMinutes(), actEnd.getSeconds());
}
isForward = false;
isReverse = true;
} else {
sTime.setHours(0, 0, 0, 0);
eTime.setHours(23, 59, 59);
actualStart.setHours(0, 0, 0, 0);
actualEnd.setHours(23, 59, 59);
isForward = true;
isReverse = true;
}
let resources = { JumpingWithDay: event.JumpingWithDay, week: event.week };
let occurrences = this.occurrencesInRangeByResource(actualStart, actualEnd, sTime, eTime, event, resources, "JumpingWithDay");
event.isForward = isForward;
event.isReverse = isReverse;
event.dirty = true;
currentMoveEvent.event = event;
currentMoveEvent.resources = resources;
let isSpanLast = false;
if (i == diffDays - 1) {
isSpanLast = false;
} else {
isSpanLast = true;
}
if (occurrences.length > 0) {
eTime = new Date(occurrences[0].start);
if (eTime.getHours() == 0 && eTime.getMinutes() == 0 && eTime.getSeconds() == 0) {
event.isForward = false;
}
if (sTime.getTime() === eTime.getTime()) {
let changeLastEventForward = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
changeLastEventForward.set("isForward", false);
break;
}
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
break;
} else {
this.typing(currentMoveEvent, sTime, eTime, true, occurence, false, isSpanLast);
}
let addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
}
if (isSingle) {
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent, destinationEvent, getSourceEvent, "create");
}
} else {
let occurrences = this.occurrencesInRangeByResource(actStart, actEnd, startTime, endTime, currentMoveEvent.event, currentMoveEvent.resources, "JumpingWithDay");
if (occurrences.length > 0) {
endTime = new Date(occurrences[0].start);
}
if (sortData.length > 0) {
if (isNew) {
for (let del = 0; del < sortData.length; del++) {
operationDonePosition.push(dataSource.indexOf(sortData[del]));
}
} else {
//that.removeItems(sortData,false);
}
}
currentMoveEvent.event.isForward = false;
currentMoveEvent.event.isReverse = false;
//currentMoveEvent.event.dirty=true;
//let getSourceEvent = this.getSourceEvents(sortData);
this.typing(currentMoveEvent, startTime, endTime, isNew, occurence, isSingle, false);
let addedEvent;
if (isNew) {
addedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - 1];
} else {
addedEvent = currentMoveEvent.event
}
addedEvent.dirty = true;
lastAddedEvent.push(addedEvent);
/*if(isSingle){
let destinationEvent = this.getDestinationEvents(lastAddedEvent);
this.enableSave(destinationEvent,destinationEvent,getSourceEvent,"create");
}*/
}
let result = { "operationDonePosition": operationDonePosition, "lastAddedEvent": lastAddedEvent, "getSourceEvent": getSourceEvent };
return result;
//this.typing(currentMoveEvent,startTime,endTime,isNew,occurence,isSingle);
}
getResourceGroup(actualDate: any, JumpingNo): any {
let resourceByDate = this.weekOfSeason(actualDate, false, null);
let days = [6, 0, 1, 2, 3, 4, 5];
let dayOfWeekNo = days[actualDate.getDay()];
resourceByDate = {
"week": "Week " + resourceByDate.weekNo + " - Season " + resourceByDate.season,
"JumpingWithDay": JumpingNo + "-" + dayOfWeekNo
};
return resourceByDate;
}
getDiffDateAndCompareResult(startTime, endTime): any {
let result = { "isSpan": false, "diffDays": 0, "hours": 0, "min": 0, "sec": 0 };
let startDateCheck = new Date(startTime);
startDateCheck.setHours(0, 0, 0, 0);
//startDateCheck.setMilliseconds(0);
let endDateCheck = new Date(endTime);
endDateCheck.setHours(0, 0, 0, 0);
// endDateCheck.setMilliseconds(0);
let cDate1 = new Date(startDateCheck).getTime();
let cDate2 = new Date(endDateCheck).getTime();
let timeDiff = Math.abs(cDate2 - cDate1);
let diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
result.hours = endTime.getHours();
result.min = endTime.getMinutes();
result.sec = endTime.getSeconds();
if (cDate1 != cDate2 && (result.hours >= 0 || result.min >= 0 || result.sec >= 0)) {
result.isSpan = true;
}
return result;
}
dateDiffInDays(date1, date2): any {
let dt1 = new Date(date1);
let dt2 = new Date(date2);
let count = Math.floor((Date.UTC(dt2.getFullYear(), dt2.getMonth(), dt2.getDate()) - Date.UTC(dt1.getFullYear(), dt1.getMonth(), dt1.getDate())) / (1000 * 60 * 60 * 24));
if (dt2.getHours() == 0 && dt2.getMinutes() == 0 && dt2.getSeconds() == 0) {
//count=count-1;
} else {
count = count + 1;
}
return count;
}
replaceOrCancelPopupForMultiBlock(blockList: any, isFit: any, isNew: any, occurrencesCount: any) {
let replaceOrDelete = "";
let clickEvent = true;
let that = this;
if (isFit) {
$("#blockChangePopWith").find('.kendoContent').text("Overlap exists. Please confirm.");
$("#fitBlock").show();
replaceOrDelete = "Delete";
} else {
$("#blockChangePopWith").find('.kendoContent').text("Are you sure you want to replace show?");
$("#fitBlock").hide();
replaceOrDelete = "Replace";
}
$("#blockChangePopWith" + ' .kPopUpMouse').text('Crowing');
let dialog = $("#blockChangePopWith").data("kendoWindow").center().open();
$("#replaceOK").text(replaceOrDelete + " (" + occurrencesCount + ")");
$("#replaceOK").unbind().click(function () {
if (clickEvent) {
dialog.close();
that.requestStart();
setTimeout(function () {
clickEvent = false;
let lastAddedEvent = [];
let sourceEventList = [];
let occurenceEventList = [];
let operationDonePosition = [];
for (let i = 0; i < blockList.length; i++) {
if (operationDonePosition.indexOf(i) == -1) {
let occurrences = blockList[i].occurrences;
that.spanRemoveFind(occurrences);
let getOccurenceEvent = that.getSourceEvents(occurrences);
occurenceEventList = $.merge(occurenceEventList, getOccurenceEvent);
let currentMoveEvent = blockList[i].currentMoveEvent;
that.removeItems(occurrences, false);
let emptyOccurence = { "event": [], "index": [] }
//that.typing(currentMoveEvent,(new Date(currentMoveEvent.start)),(new Date(currentMoveEvent.end)),isNew,emptyOccurence,false);
let result = that.spanOverlapFit(currentMoveEvent, isNew, emptyOccurence, false, blockList, operationDonePosition);
operationDonePosition = result.operationDonePosition;
sourceEventList = $.merge(sourceEventList, result.getSourceEvent);
lastAddedEvent = $.merge(lastAddedEvent, result.lastAddedEvent);
}
}
//let getSourceEvent = that.getSourceEvents(lastAddedEvent);
if (isNew) {
occurenceEventList = $.merge(occurenceEventList, sourceEventList);
}
//that.enableSave(getSourceEvent,getSourceEvent,occurenceEventList,"create");
that.selectedSlotEvent = lastAddedEvent;
let destinationEvent = that.getDestinationEvents(lastAddedEvent);
if (isNew) {
that.enableSave(destinationEvent, destinationEvent, occurenceEventList, "create");
} else {
that.enableSave(sourceEventList, destinationEvent, occurenceEventList, "update");
}
that.multiSelectEvent();
//that.highlightPastEvents(blockList.length);
that.requestEnd();
}, 0);
}
});
$("#cancelBlock").unbind().click(function () {
//var revert=true;
//that.CroweTalking.revertEvent(revert);
//that.selectedSlotEvent=[currentMoveEvent.event];
//that.sportsPlayersSleeping(currentMoveEvent.event);
if (clickEvent) {
clickEvent = false;
dialog.close();
}
});
$("#fitBlock").unbind().click(function () {
if (clickEvent) {
dialog.close();
that.requestStart();
setTimeout(function () {
clickEvent = false;
let lastAddedEvent = [];
let sourceEventList = [];
let emptyOccurence = { "event": [], "index": [] }
let operationDonePosition = [];
for (let i = 0; i < blockList.length; i++) {
if (operationDonePosition.indexOf(i) == -1) {
let result;
let currentMoveEvent = blockList[i].currentMoveEvent;
let occurrences = blockList[i].occurrences;
if (occurrences.length > 0) {
let slotAvailable = that.checkAvailabilityInsideOverlap(occurrences);
if (that.matchTimesWithOccurrence(currentMoveEvent, occurrences)) {
//that.typing(currentMoveEvent,(new Date(slotAvailable.start)),(new Date(slotAvailable.end)),isNew,emptyOccurence,false);
currentMoveEvent.start = (new Date(slotAvailable.start));
currentMoveEvent.end = (new Date(slotAvailable.end));
result = that.spanOverlapFit(currentMoveEvent, isNew, emptyOccurence, false, blockList, operationDonePosition);
} else if (that.matchStartTimeWithOccurrence(currentMoveEvent, occurrences)) {
//that.startTimeOverlapFit(currentMoveEvent,occurrences[0].start,isNew,emptyOccurence,false);
result = that.spanStartTimeOverlapFit(currentMoveEvent, occurrences[0], isNew, emptyOccurence, false, blockList, operationDonePosition);
} else {
if (slotAvailable.isAvailable) {
//that.typing(currentMoveEvent,(new Date(slotAvailable.start)),(new Date(slotAvailable.end)),isNew,emptyOccurence,false);
currentMoveEvent.start = (new Date(slotAvailable.start));
currentMoveEvent.end = (new Date(slotAvailable.end));
result = that.spanOverlapFit(currentMoveEvent, isNew, emptyOccurence, false, blockList, operationDonePosition);
} else {
//that.endTimeOverlapFit(currentMoveEvent,occurrences[occurrences.length-1].end,isNew,emptyOccurence,false);
result = that.spanEndTimeOverlapFit(currentMoveEvent, occurrences[0], isNew, occurrences, false, blockList, operationDonePosition);
}
}
} else {
//that.typing(currentMoveEvent,(new Date(currentMoveEvent.start)),(new Date(currentMoveEvent.end)),isNew,emptyOccurence,false);
result = that.spanOverlapFit(currentMoveEvent, isNew, emptyOccurence, false, blockList, operationDonePosition);
}
operationDonePosition = result.operationDonePosition;
lastAddedEvent = $.merge(lastAddedEvent, result.lastAddedEvent);
sourceEventList = $.merge(sourceEventList, result.getSourceEvent);
}
}
//let destinationEvent = that.getSourceEvents(lastAddedEvent);
//that.enableSave(destinationEvent,destinationEvent,sourceEventList,"create");
//that.highlightPastEvents(blockList.length);
let destinationEvent = that.getDestinationEvents(lastAddedEvent);
that.selectedSlotEvent = lastAddedEvent;
if (isNew) {
that.enableSave(destinationEvent, destinationEvent, sourceEventList, "create");
} else {
that.enableSave(sourceEventList, destinationEvent, [], "update");
}
that.multiSelectEvent();
that.requestEnd();
}, 100);
}
});
}
spanRemoveFind(occurrences) {
let that = this;
let addRemoveItem = [];
for (let oc = 0; oc < occurrences.length; oc++) {
let filterData = that.getSpanEventList(that._CrowerDataSource._data, occurrences[oc]);
//occurrences.splice(oc,1);
for (let sp = 0; sp < filterData.length; sp++) {
//if(occurrences.indexOf(filterData[sp]) == -1){
addRemoveItem.push(filterData[sp])
// }
}
}
occurrences = addRemoveItem;
}
warningPopup(message) {
let that = this;
$("#warningPopup").find('.kendoMultiLine').html('');
$("#warningPopup").find('.kendoContent').text(message);
let dialog = $("#warningPopup").data("kendoWindow").center().open();
$("#warningOK").click(function () {
dialog.close();
});
}
tveWarningPopup(message) {
let that = this;
$("#warningPopup").find('.kendoMultiLine').html('');
$("#warningPopup").find('.kendoMultiLine').html(message);
let dialog = $("#warningPopup").data("kendoWindow").center().open();
$("#warningOK").click(function () {
$("#warningPopup").find('.kendoMultiLine').html('');
dialog.close();
});
}
createDialog(dialogId) { // init pop dialog
$(dialogId + ' .kPopUpMouse').text('Crowing');
$(dialogId).kendoWindow({
Mouse: false,
// width: "360px",
// height: "150px",
visible: false,
resizable: false,
draggable: false,
modal: true,
open: function (e) { $("html, body").css("overflow", "hidden"); },
close: function (e) { $("html, body").css("overflow", ""); }
});
}
createEventPopup(dialogId) {
let dialog = $(dialogId).kendoWindow({
width: "50%",
Mouse: false,
visible: false,
actions: false,
modal: true
}).data("kendoWindow");
}
convertDateFromString(dateString): any {
let splitDate = dateString.split(" ");
//let day = splitDate[3].length==1?"0"+splitDate[3]:splitDate[3];
//let month = splitDate[1].length==1?"0"+splitDate[1]:splitDate[1];
//let year = 2017;
let date = splitDate[0].replace(/-/g, "/");
return date;
}
convertDateFromObject(date) {
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
return month + '/' + day + '/' + year;
}
timeFormation(hours, miniutes, seconds) {
let timeCondition = "AM";
if (hours >= 12) {
if (hours < 24)
timeCondition = "PM";
hours = hours - 12;
}
if (hours == 0) {
hours = 12;
}
let hoursValue = hours < 10 ? "0" + hours : hours;
let miniutesValue = miniutes < 10 ? "0" + miniutes : miniutes;
let secondsValue = seconds < 10 ? "0" + seconds : seconds;
let timeFormationData = hoursValue + ':' + miniutesValue + ':' + secondsValue + ' ' + timeCondition;
return timeFormationData
}
differenceTimes(duration: any) {
var durationseconds = parseInt(duration);
var seconds = Math.floor((durationseconds / 1000) % 60);
var minutes = Math.floor((durationseconds / (1000 * 60)) % 60);
var hours = Math.floor((durationseconds / (1000 * 60 * 60)) % 24);
var days = Math.floor(durationseconds / (1000 * 60 * 60 * 24));
var hoursDays = days * 24;
hours += hoursDays;
var hoursValue = (hours < 10) ? "0" + hours : hours;
var minutesValue = (minutes < 10) ? "0" + minutes : minutes;
var secondsValue = (seconds < 10) ? "0" + seconds : seconds;
return hoursValue + ":" + minutesValue + ":" + secondsValue;
}
auditClass(MouseNo, seriesNo, bookedFlag, formatNo, dateUpdated): any {
let auditOptions = $("#auditOption").val();
let auditBlockClass = ''
switch (auditOptions) {
case "1":
if (MouseNo != -1 || seriesNo != -1) {
if (!formatNo || bookedFlag != 'EB') {
auditBlockClass = 'auditBlock';
}
}
break;
case "2":
let currentDate = new Date();
let newDate = new Date();
let dateCount = parseInt($("#changeNumber").val());
newDate.setDate(newDate.getDate() - dateCount);
let eventView = dateUpdated.split("-");
let eventDay = eventView[2].split(" ");
let eventDate = new Date(eventView[0], eventView[1], eventDay[0]);
if ((eventDate.getTime() <= newDate.getTime() && eventDate.getTime() >= currentDate.getTime())) {
auditBlockClass = 'auditBlock';
}
break;
case "3":
if (MouseNo == -1 && seriesNo != -1) {
auditBlockClass = 'auditBlock';
}
break;
default:
auditBlockClass = ''
break;
}
return auditBlockClass;
}
auditOptions(): any {
let auditData = this.targetvalue;
let kendoGrid = $("#kgrid");
kendoGrid.find('.parrotgrid-content').find("tr").removeClass('CroweAuditGrid');
kendoGrid.find('.parrotgrid-content').find("tr").removeClass('CroweAuditGridPartial');
kendoGrid.find('.parrotgrid-content-locked').find("tr").removeClass('CroweAuditGrid');
kendoGrid.find('.parrotgrid-content-locked').find("tr").removeClass('CroweAuditGridPartial');
if (this._CrowerDataSource && this.changevalue) {
let CroweData = this._CrowerDataSource._data;
switch (auditData) {
case "1":
for (let i = 0; i < CroweData.length; i++) {
if (CroweData[i].MouseNo != -1 || CroweData[i].seriesNo != -1) {
if (!CroweData[i].formatNo || CroweData[i].bookedFlag != 'EB') {
let uid = CroweData[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": "#FF6969", "border-color": "#FF6969" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
}
}
}
break;
case "2":
let currentDate = new Date();
let newDate = new Date();
let dateCount = this.auditNoEpisodes + 1;
newDate.setDate(newDate.getDate() - dateCount);
for (let i = 0; i < CroweData.length; i++) {
if (!CroweData[i].dateUpdated)
CroweData[i].dateUpdated = currentDate.getFullYear() + "-" + currentDate.getMonth() + "-" + currentDate.getDate() + " " + currentDate.getHours() + ":" + currentDate.getMinutes() + ":" + currentDate.getSeconds();
//let eventView=CroweData[i].dateUpdated.split("-");
//let eventDay=eventView[2].split(" ");
//let eventMOnth=eventView[1]-1;
let eventDate = new Date(CroweData[i].dateUpdated);
if (eventDate.getTime() >= newDate.getTime() && dateCount > 1) {
let uid = CroweData[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": "#FF6969", "border-color": "#FF6969" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
}
}
break;
case "3":
for (let i = 0; i < CroweData.length; i++) {
if (CroweData[i].MouseNo == -1 && CroweData[i].seriesNo != -1) {
let uid = CroweData[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": "#FF6969", "border-color": "#FF6969" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
}
}
break;
case "4":
this.otherAuditCheck();
break;
case "5":
this.otherAuditCheck();
break;
case "6":
this.otherAuditCheck();
break;
case "7":
this.otherAuditCheck();
break;
case "8":
this.otherAuditCheck();
break;
}
}
}
singleButtonDialog(msg) {
let that = this;
$("#CrowerStatusDialog").find('.kendoContent').text(msg);
let dialog = $("#CrowerStatusDialog").data("kendoWindow").center().open();
$("#statusOk").unbind().click(function () {
dialog.close();
});
}
otherAuditCheck() {
let that = this;
if (that.auditData) {
for (let i = 0; i < that.auditData.length; i++) {
let CroweItemno = that.auditData[i].schedItemNo;
let cloneDataSource = new kendo.data.Query(this._CrowerDataSource._data);
let filterData = cloneDataSource.filter({
operator: "eq", field: "schedItemNo", value: CroweItemno
}).data;
if (filterData[0]) {
let uid = filterData[0].uid;
if (that.auditData[i].auditStatus == "N") {
$(".Animal" + that.auditData[i].schedItemNo).parent().css({ "background-color": "#FF6969", "border-color": "#FF6969" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
} else if (that.auditData[i].auditStatus == "P") {
$(".Animal" + that.auditData[i].schedItemNo).parent().css({ "background-color": "#FCCCFE", "border-color": "#FCCCFE" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGridPartial');
}
}
}
} else {
let auditData = this._CrowerDataSource._data;
for (let i = 0; i < auditData.length; i++) {
let uid = auditData[i].uid;
if (auditData[i].auditStatus == "N") {
$(".Animal" + auditData[i].schedItemNo).parent().css({ "background-color": "#FF6969", "border-color": "#FF6969" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
} else if (auditData[i].auditStatus == "P") {
$(".Animal" + auditData[i].schedItemNo).parent().css({ "background-color": "#FCCCFE", "border-color": "#FCCCFE" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGridPartial');
}
}
}
}
setAuditData(auditData) {
this.auditData = auditData
}
changeBlockColor(): any {
let that = this;
let auditData;
if (this.auditData) {
auditData = this.auditData;
} else {
if (this._CrowerDataSource)
auditData = this._CrowerDataSource._data;
else
auditData = [];
}
for (let j = 0; j < auditData.length; j++) {
$(".Animal" + auditData[j].schedItemNo).parent().css({ "background-color": "#ffffff", "border-color": "#ffffff" });
}
if (this.categoryType) {
for (let i = 0; i < this.categoryType.length; i++) {
let convertType = this.removeSpecialCharacter(this.categoryType[i].name);
if (this.categoryType[i].isChecked) {
$("." + convertType + "-block").parent().css({ "background-color": this.categoryType[i].color, "border-color": this.categoryType[i].color });
} else {
$("." + convertType + "-block").parent().css({ "background-color": "#ffffff", "border-color": "#ffffff" });
}
}
$(".-block").parent().css({ "background-color": "#dcdddf", "border-color": "#dcdddf" });
}
//this.getCrower().refresh();
let cloneDataSource = new kendo.data.Query(this.categoryType);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "name",
value: "REPEAT"
}).data;
if (filterData[0]) {
if (that.runTypeUpdateColor.length > 0) {
let unique: any = that.runTypeUpdateColor.filter(that.onlyUnique);
for (var r = 0; r < unique.length; r++) {
$(".runtypechecked-" + unique[r]).parent().css({ "background-color": filterData[0].color, "border-color": "#ffffff" });
}
}
// $(".true-runtypechecked-Repeat").parent().css({"background-color":filterData[0].color, "border-color":"#ffffff"});
// $(".false-runtypechecked-Repeat").parent().css({"background-color":filterData[0].color, "border-color":"#ffffff"});
// $(".false-runtypechecked-3rd").parent().css({"background-color":filterData[0].color, "border-color":"#ffffff"});
// $(".false-runtypechecked-Unspecified").parent().css({"background-color":filterData[0].color, "border-color":"#ffffff"});
}
this.auditOptions();
}
removeSpecialCharacter(str): any {
let value = str.replace(/(?!\w|\s)./g, '')
.replace(/\s+/g, ' ')
.replace(/^(\s*)([\W\w]*)(\b\s*$)/g, '$2')
.replace(" ", "");
return value;
}
blockMenuInit() {
let that = this;
let Crower = that.getCrower();
setTimeout(function () {
that.clickCheck = true;
//$('.parrotevent').append('<span class="CrowerContextMenuRow"><span class="contextMenuRow"></span>'</span>');
$("#context-menuSchAnimal").unbind().kendoContextMenu({
filter: ".parrotevent, .parrotCrower-table td",
target: "#Crower",
hoverDelay: 100,
popupCollision: "fit",
alignToAnchor: true,
// showOn: "click",
select: function (e) {
if (that.clickCheck == true) {
that.clickCheck = false;
let selectedMenuItem = $(e.item).children(".parrotlink").text();
let target = $(e.target);
that.menuOptionClick(selectedMenuItem, target);
let contextMenu = $("#context-menuSchAnimal").data("kendoContextMenu");
if (contextMenu) {
contextMenu.close($("#context-menuSchAnimal"));
}
}
},
open: function (e) {
if (navigator.platform.indexOf('Mac') !== -1) {
if (e.event.ctrlKey) {
let contextMenu = $("#context-menuSchAnimal").data("kendoContextMenu");
e.preventDefault();
if (contextMenu) {
contextMenu.close($("#context-menuSchAnimal"));
}
return;
}
}
that.clickCheck = true;
if (that.contextMenuClick) {
e.target = that.currentTarget;
}
//that.disbleMenuItem();
$(".parrotanimation-container .parrotmenu.parrotheader").css({ "left": 80 + "px" });
let target = $(e.target);
let event;
if (target.hasClass("k-event") && that.isEditable) {
event = that.getEventByUid(target.data("uid"));
let count = that.spanFilterCount(that.selectedSlotEvent);
if (event.MouseNo == -1 && event.seriesNo == -1) {
that.cBlockMenuItem();
} else if (count > 1) {
that.multiSelectMenu(that.selectedSlotEvent);
} else {
that.blockMenuItem(event);
}
} else {
if (target.hasClass("k-event")) {
event = that.getEventByUid(target.data("uid"));
that.emptyCellMenuItem(event.JumpingNo);
} else {
let emptySlot = that.getCrower().slotByElement($(target));
let resource = that.getCrower().view()._resourceBySlot(emptySlot);
let JumpingWithDay = resource.JumpingWithDay.split("-");
that.emptyCellMenuItem(JumpingWithDay[0]);
}
}
}
});
}, 10);
}
spanFilterCount(list): any {
let count = 0;
let positionCheckDone = [];
for (let dc = 0; dc < list.length; dc++) {// reduce span count
let filterData = this.getSpanEventList(list, list[dc]);
if (positionCheckDone.indexOf(dc) == -1) {
count = count + 1;
for (let fd = 0; fd < filterData.length; fd++) {
positionCheckDone.push(list.indexOf(filterData[fd]));
}
}
}
return count;
}
menuOptionClick(selectedMenuItem, target) {
selectedMenuItem = selectedMenuItem.toLowerCase();
let selectedEvents = this.selectedSlotEvent;
let selectedMouseEvents = this.getCrower()._selection;
let viewSlot = this.getCrower().view()._resourceBySlot(this.selectedSlotTarget[0]);
let selEvents: any = {};
let MouseSelEvents: any = {};
if (selectedEvents.length == 0) {
let JumpingGroup = viewSlot.JumpingWithDay;
JumpingGroup = JumpingGroup.split("-");
let dateOfSeason = this.dateOfSeason(viewSlot.week, parseInt(JumpingGroup[1]));
let actualStartDate = this.getDateWithTime(dateOfSeason, this.selectedSlotTarget[0].startDate);
let actualEndDate = this.getDateWithTime(dateOfSeason, this.selectedSlotTarget[0].endDate);
selEvents["start"] = new Date(this.getDateWithTime(dateOfSeason, this.selectedSlotTarget[0].startDate));
selEvents["end"] = new Date(this.getDateWithTime(dateOfSeason, this.selectedSlotTarget[0].endDate));
MouseSelEvents["start"] = new Date(this.selectedSlotTarget[0].startDate);
MouseSelEvents["end"] = new Date(this.selectedSlotTarget[0].endDate);
}
if (viewSlot["JumpingWithDay"] != null && viewSlot["JumpingWithDay"] != undefined) {
let netNo = viewSlot["JumpingWithDay"].split("-");
selEvents["JumpingNo"] = parseInt(netNo[0]);
selEvents["dayOfWeekNo"] = parseInt(netNo[1]);
MouseSelEvents["JumpingNo"] = parseInt(netNo[0]);
MouseSelEvents["dayOfWeekNo"] = parseInt(netNo[1]);
}
if (selectedEvents.length != 0 && selectedEvents[0].seasonNo) {
selEvents["seasonNo"] = selectedEvents[0].seasonNo;
MouseSelEvents["seasonNo"] = selectedEvents[0].seasonNo;
} else if (viewSlot["week"] != null && viewSlot["week"] != undefined) {
let seaVal = viewSlot["week"].split(" ");
selEvents["seasonNo"] = parseInt(seaVal[4]);
MouseSelEvents["seasonNo"] = parseInt(seaVal[4]);
}
selEvents["resources"] = viewSlot;
MouseSelEvents["resources"] = viewSlot;
if (selectedEvents.length != 0) {
let tempData = selEvents;
let eventArray = this.selectedSlotEvent;
let JumpingGroup = viewSlot.JumpingWithDay;
let dateOfSeason = this.dateOfSeason(viewSlot.week, parseInt(JumpingGroup[1]));
//selEvents={};
selEvents = $.extend(true, [], eventArray[0]);
selEvents["JumpingNo"] = tempData.JumpingNo;
selEvents["dayOfWeekNo"] = tempData.dayOfWeekNo;
selEvents["seasonNo"] = tempData.seasonNo;
selEvents["resources"] = tempData.resources;
selEvents["start"] = new Date(eventArray[0].clonedStart);
selEvents["end"] = new Date(eventArray[0].clonedEnd);
}
let currentEvent = this.selectedSlotEvent;
if (selectedEvents && selectedEvents.length != 0 && selectedMenuItem == "Mouse search") {
let tempSearchData = MouseSelEvents;
let eventArray = this.selectedSlotEvent;
//selEvents={};
MouseSelEvents = $.extend(true, [], eventArray[0]);
MouseSelEvents["JumpingNo"] = tempSearchData.JumpingNo;
MouseSelEvents["dayOfWeekNo"] = tempSearchData.dayOfWeekNo;
MouseSelEvents["seasonNo"] = tempSearchData.seasonNo;
if (MouseSelEvents.seasonNoFilterRowId)
MouseSelEvents["seasonNo"] = MouseSelEvents.seasonNoFilterRowId;
MouseSelEvents["resources"] = tempSearchData.resources;
MouseSelEvents["start"] = new Date(MouseSelEvents.start);
MouseSelEvents["end"] = new Date(MouseSelEvents.end);
}
//let currentEvent=this.selectedSlotEvent;
if (selectedMenuItem == "cut") {
this.copiedEvent = currentEvent;
this.deleteBlock(currentEvent);
let copyEvent = $.extend(true, [], currentEvent);
this.CroweTalking.copiedEvent = copyEvent;
//Crower.removeEvent(this.copiedEvent);
} else if (selectedMenuItem == "delete block") {
this.deleteBlock(this.selectedSlotEvent);
} else if (selectedMenuItem == "copy") {
this.copiedEvent = currentEvent;
let copyEvent = $.extend(true, [], currentEvent);
this.CroweTalking.copiedEvent = copyEvent;
//this.targetForPaste = this.selectedSlotTarget;
} else if (selectedMenuItem == "paste") {
let target = this.selectedSlotTarget;
let Crower = this.getCrower();
let resourceBySlot = Crower.view()._resourceBySlot(target[0]);
let startDate = target[0].startDate;
let endDate = target[0].endDate;
let pastePlace = { "resourceBySlot": resourceBySlot, "startDate": startDate, "endDate": endDate };
if (this.copiedEvent.length == 0) {
if (this.CroweTalking.copiedEvent)
this.copiedEvent = this.CroweTalking.copiedEvent;
}
this.pastOperation(pastePlace, this.copiedEvent, true);
} else if (selectedMenuItem == "book") {
this.btOperation("EB", "aptBooked");
} else if (selectedMenuItem == "unbook") {
this.btOperation("NB", "aptBooked");
} else if (selectedMenuItem == "enable translation") {
this.btOperation("Y", "aptTranslation");
} else if (selectedMenuItem == "stop translation") {
this.btOperation("N", "aptTranslation");
} else if (selectedMenuItem == "set as live") {
this.btOperation("Y", "liveFlag");
} else if (selectedMenuItem == "set as taped") {
this.btOperation("N", "liveFlag");
} else if (selectedMenuItem == "remove Mouse") {
this.removeMouse();
} else if (selectedMenuItem == "set as repeat") {
this.setRepeatOriginal(true);
} else if (selectedMenuItem == "set as original") {
this.setRepeatOriginal(false);
} else if (selectedMenuItem == "Mouse search") {
let getTimeVal = this.changeTimeTS(MouseSelEvents.start, MouseSelEvents.end);
MouseSelEvents.start = getTimeVal.startDate;
MouseSelEvents.end = getTimeVal.endDate;
MouseSelEvents.spanEventBool = this.spanEventBool;
MouseSelEvents.spanEndDate = this.spanEndDate;
MouseSelEvents.spanEndTime = this.spanEndTime;
this.CroweFOXMouseSearch.MouseSearchWindow(MouseSelEvents, "CrowerComp");
this.spanEndDate = '';
this.spanEndTime = '';
this.spanEventBool = false;
//this.MouseSearchWindow(selectedEvents[0]);
} else if (selectedMenuItem == "tve alternative programming") {
this.CroweFOXTveAltProgram.tveAltProgramPopupOpen(selEvents);
} else if (selectedMenuItem == "actual airings") {
this.CroweFOXActualAirings.tveAltProgramPopupOpen(selEvents);
} else if (selectedMenuItem == "view history") {
this.CroweHistory()
}
else if (selectedMenuItem == "tve exceptions") {
this.tveException(currentEvent[0])
}
else if (selectedMenuItem == "show details" || selectedMenuItem == "Mouse details") {
this.MouseDetails(currentEvent[0], selectedMenuItem);
}
}
MouseDetails(event, menuItem) {
let MouseId;
if (event.MouseBaseType == 'N')
MouseId = event.MouseNo;
else {
if (menuItem == "show details")
MouseId = event.seriesNo;
else
MouseId = event.MouseNo;
}
this.MouseTalking.MouseBasetypes = event.MouseBaseType;
window.localStorage.setItem("season", event.seasonNo);
this.MouseTalking.setNavigateFromPage(true); //whenever calling the Mousemain.ts .. this needs to be set as true for displaying in recent Mouse.
this.router.navigate(['/MousesFOX/MousesFOXMain', MouseId]);
}
tveException(event) {
let selectedSchedId = event.schedItemNo;
let selectedCrowe;
if (this.auditData) {
for (let i = 0; i < this.auditData.length; i++) {
if (this.auditData[i].schedItemNo == selectedSchedId)
selectedCrowe = this.auditData[i]
}
}
else {
let auditData = this._CrowerDataSource._data;
for (let i = 0; i < auditData.length; i++) {
if (auditData[i].schedItemNo == selectedSchedId)
selectedCrowe = auditData[i]
}
}
let jsonToStr = "";
for (let arr = 0; arr < selectedCrowe.tveExceptions.length; arr++) {
jsonToStr = jsonToStr + selectedCrowe.tveExceptions[arr];
if (arr != selectedCrowe.tveExceptions.length - 1)
jsonToStr = jsonToStr + "<br>";
}
// this.warningPopup(jsonToStr);
this.tveWarningPopup(jsonToStr);
}
private gridTemplate(options: any, fieldName: any, mandatory: any) {
let value = options[fieldName];
if (options[fieldName] == null || options[fieldName] == undefined) {
value = "";
}
if (options[fieldName + "changed"]) {
value = "<span class='history-highlight'>" + value + "</span>"
}
options[fieldName + "FilterRowId"] = options[fieldName];
return value;
}
changeTimeTS(stTime, endTime): any {
let st = new Date(stTime);
let en = new Date(endTime);
let stHours = st.getHours();
let endHours = en.getHours();
if (stHours < 19) {
stHours = stHours + 5;
} else {
stHours = stHours - 19;
}
if (endHours < 19) {
endHours = endHours + 5;
} else {
endHours = endHours - 19;
}
stTime.setHours(stHours);
endTime.setHours(endHours);
return { "startDate": stTime, "endDate": endTime }
}
changeTimeTSRec(stTime, endTime): any {
let st = new Date(stTime);
let en = new Date(endTime);
let stHours = st.getHours();
let endHours = en.getHours();
if (stHours >= 5) {
stHours = stHours - 5;
} else {
stHours = stHours + 19;
}
if (endHours >= 5) {
endHours = endHours - 5;
} else {
endHours = endHours + 19;
}
stTime = new Date(stTime);
endTime = new Date(endTime);
stTime.setHours(stHours);
endTime.setHours(endHours);
return { "startDate": stTime, "endDate": endTime }
}
CroweHistory() {
let that = this;
let selectedEvents = that.selectedSlotEvent;
let url = "Crowes/v1/Croweitems/history";
let excelFileName = "CroweHistoryExport";
let postRequest = {
"JumpingNo": '',
"periods": []
};
let viewSlot = this.getCrower().view()._resourceBySlot(this.selectedSlotTarget[0]);
let JumpingGroup = viewSlot.JumpingWithDay;
JumpingGroup = JumpingGroup.split("-");
let dateOfSeason = that.dateOfSeason(viewSlot.week, parseInt(JumpingGroup[1]));
let actualStartDate = that.getDateWithTime(dateOfSeason, that.selectedSlotTarget[0].startDate);
let periodStart;
if (that.selectedSlotEvent.length == 0) {
periodStart = new Date(actualStartDate);
} else {
periodStart = new Date(selectedEvents[0].clonedStart);
}
let startDay = periodStart.getDate();
let startDayDate = startDay < 10 ? '0' + startDay : startDay;
let startMonth = periodStart.getMonth() + 1;
let startMonthValue = startMonth < 10 ? '0' + startMonth : startMonth;
let startYear = periodStart.getFullYear();
if (periodStart.getHours() < 19) {
periodStart.setHours(periodStart.getHours() + 5);
} else {
periodStart.setHours(periodStart.getHours() - 19);
}
let startHours = periodStart.getHours();
let startMiniutes = periodStart.getMinutes();
let startSeconds = periodStart.getSeconds();
let periodEnd;
let actualEndDate = that.getDateWithTime(dateOfSeason, that.selectedSlotTarget[0].endDate);
if (that.selectedSlotTarget.length == 2) {
actualEndDate = that.getDateWithTime(dateOfSeason, that.selectedSlotTarget[1][0].endDate);
}
if (that.selectedSlotEvent.length == 0) {
periodEnd = new Date(actualEndDate);
} else {
periodEnd = new Date(selectedEvents[selectedEvents.length - 1].clonedEnd);
}
let endDay = periodEnd.getDate();
let endDayDate = endDay < 10 ? '0' + endDay : endDay;
let endMonth = periodEnd.getMonth() + 1;
let endMonthValue = endMonth < 10 ? '0' + endMonth : endMonth;
let endYear = periodEnd.getFullYear();
if (periodEnd.getHours() < 19) {
periodEnd.setHours(periodEnd.getHours() + 5);
} else {
periodEnd.setHours(periodEnd.getHours() - 19);
}
// for span event there will 1 second delay, and for event that ends at 5AM, one second is added(as the end time will be 4:59:59)
if (that.selectedSlotEvent.length > 1) {
periodEnd.setTime(periodEnd.getTime() + (that.selectedSlotEvent.length - 1) * 1000);
} else if (that.selectedSlotEvent.length == 1 && periodEnd.getHours() == 4 && periodEnd.getMinutes() == 59 && periodEnd.getSeconds() == 59) {
periodEnd.setTime(periodEnd.getTime() + 1000);
}
let endHours = periodEnd.getHours();
let endMiniutes = periodEnd.getMinutes();
let endSeconds = periodEnd.getSeconds();
let periodDateValue = startYear + '-' + startMonthValue + '-' + startDayDate;
let periodStartTime = this.timeFormation(startHours, startMiniutes, startSeconds);
let periodEndTime = this.timeFormation(endHours, endMiniutes, endSeconds);
let periodJson = {
"startDate": periodDateValue,
"startTime": periodStartTime,
"endTime": periodEndTime
}
let periodArray = [];
periodArray.push(periodJson);
postRequest.JumpingNo = JumpingGroup[0];
postRequest.periods = periodArray;
let MouseStart = startMonth + '/' + startDay + '/' + startYear + ' ' + periodStartTime;
let MouseEnd = endMonth + '/' + endDay + '/' + endYear + ' ' + periodEndTime;
var Mouse = "View history for National " + MouseStart + " - " + MouseEnd;
let columns = [
{ field: 'contextRow', Mouse: " ", width: 25, locked: true },
{
field: "loggedBy",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Logged by", width: 200,
template: function loggedBy(options) {
return that.gridTemplate(options, "loggedBy", false);
}
},
{
field: "dateLogged",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Date Logged", width: 200,
template: function loggedDate(options) {
return that.gridTemplate(options, "dateLogged", false);
}
},
{
field: "action",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Action", width: 200,
template: function action(options) {
return that.gridTemplate(options, "action", false);
}
},
{
field: "showName",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Show Name", width: 200,
template: function action(options) {
return that.gridTemplate(options, "showName", false);
}
},
{
field: "episodeName",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Episode Name", width: 200,
template: function action(options) {
return that.gridTemplate(options, "episodeName", false);
}
},
{
field: "start",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Start Date", width: 200,
template: function action(options) {
var date = new Date(options.start)
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
if (options.startDatechanged) {
return "<span class='history-highlight'>" + month + '/' + day + '/' + year + "</span>";
} else {
return month + '/' + day + '/' + year;
}
}
},
{
field: "start",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Start Time", width: 200,
template: function action(options) {
let startTimeFormation = "";
var startDate = new Date(options.start);
let startHours = startDate.getHours();
let startMiniutes = startDate.getMinutes();
let startSeconds = startDate.getSeconds();
startTimeFormation = that.timeFormation(startHours, startMiniutes, startSeconds);
if (options.startTimechanged) {
return "<span class='history-highlight'>" + startTimeFormation + "</span>";
} else {
return startTimeFormation;
}
}
},
{
field: "duration",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Duration", width: 200,
template: function action(options) {
return that.gridTemplate(options, "duration", false);
}
},
{
field: "formatName",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Format", width: 200,
template: function action(options) {
return that.gridTemplate(options, "formatName", false);
}
},
{
field: "booked",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Booked", width: 200,
template: function action(options) {
return that.gridTemplate(options, "booked", false);
}
},
{
field: "seasonNo",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Season", width: 200,
template: function action(options) {
return that.gridTemplate(options, "seasonNo", false);
}
},
{
field: "displayMouseName",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Display Mouse", width: 200,
template: function action(options) {
return that.gridTemplate(options, "displayMouseName", false);
}
},
{
field: "additionalComments",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Additional Comments", width: 200,
template: function action(options) {
return that.gridTemplate(options, "additionalComments", false);
}
},
{
field: "programType",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Show Type", width: 200,
template: function action(options) {
return that.gridTemplate(options, "programType", false);
}
},
{
field: "runType",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Run Type", width: 200,
template: function action(options) {
return that.gridTemplate(options, "runType", false);
}
},
{
field: "runCount",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Run Count", width: 200,
template: function action(options) {
return that.gridTemplate(options, "runCount", false);
}
},
{
field: "override",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Override", width: 200,
template: function action(options) {
return that.gridTemplate(options, "override", false);
}
},
{
field: "materialId",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Material Id", width: 200,
template: function action(options) {
return that.gridTemplate(options, "materialId", false);
}
},
{
field: "end",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "End Date", width: 200,
template: function action(options) {
var date = new Date(options.end)
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
if (options.endDatechanged) {
return "<span class='history-highlight'>" + month + '/' + day + '/' + year + "</span>";
} else {
return month + '/' + day + '/' + year;
}
}
},
{
field: "end",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "End Time", width: 200,
template: function action(options) {
let endTimeFormation = "";
var endDate = new Date(options.end);
let endHours = endDate.getHours();
let endMiniutes = endDate.getMinutes();
let endSeconds = endDate.getSeconds();
endTimeFormation = that.timeFormation(endHours, endMiniutes, endSeconds);
if (options.endTimechanged) {
return "<span class='history-highlight'>" + endTimeFormation + "</span>";
} else {
return endTimeFormation;
}
}
},
{
field: "normalSlot",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Normal Slot", width: 200,
template: function action(options) {
return that.gridTemplate(options, "normalSlot", false);
}
},
{
field: "manualChange",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Manual Change", width: 200,
template: function action(options) {
return that.gridTemplate(options, "manualChange", false);
}
},
{
field: "translation",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Translation", width: 200,
template: function action(options) {
return that.gridTemplate(options, "translation", false);
}
},
{
field: "schedItemNo",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "SchedItem No.", width: 200,
template: function action(options) {
return that.gridTemplate(options, "schedItemNo", false);
}
},
{
field: "MouseNo",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Episode Mouse No.", width: 200,
template: function action(options) {
return that.gridTemplate(options, "MouseNo", false);
}
},
{
field: "seriesNo",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Series Mouse No.", width: 200,
template: function action(options) {
return that.gridTemplate(options, "seriesNo", false);
}
},
{
field: "feeds",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Feed", width: 200,
template: function action(options) {
return that.gridTemplate(options, "feeds", false);
}
},
{
field: "timings",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Timings", width: 200,
template: function action(options) {
return that.gridTemplate(options, "timings", false);
}
},
{
field: "formats",
filterable: { multi: true, search: true },
headerAttributes: { class: "multiCheckboxFilterEnabled" }, Mouse: "Format Details", width: 200,
template: function details(options) {
return that.gridTemplate(options, "formats", false);
}
}];
let data = { "url": url, "columns": columns, "Mouse": Mouse, "excelFileName": excelFileName, "postData": postRequest };
this.userViewPopup.openPopup(data);
}
dragOver(event: any) {
event.preventDefault();
}
createDropArea(Crower) {
let that = this;
Crower.view().content.find(".parrotCrower-table td, .parrotevent").unbind().bind("drop", function (ev) {
var Crower = $("#Crower").data("kendoCrower");
ev.preventDefault();
let target = $(ev.currentTarget);
let rowInd = $(ev.currentTarget).parent().index();
var slot = Crower.slotByElement(target);
if ($(ev.currentTarget).hasClass("k-event")) {
let currScroll = $(ev.currentTarget)[0].offsetLeft;
let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;
if (currScroll < (cellWidth * 48)) {
let currentTime = currScroll * (30 * 60 * 1000 / cellWidth);
slot.startDate.setHours(0, 0, 0, 0)
slot.startDate.setTime(slot.startDate.getTime() + currentTime);
}
} else if (slot.startDate.getHours() == 14 && that.checkPrimeSlot($(ev.currentTarget))) {
slot = that.getCrower().slotByElement($('.parrotCrower-content>.parrotCrower-table > tbody> tr:eq(' + rowInd + ') > td:eq(' + 28 + ')'));
}
let resource = Crower.resourcesBySlot(slot);
var jsonData = JSON.parse(ev.originalEvent.dataTransfer.getData("text"));
if (jsonData != null) {
jsonData.eventVal["fromScreen"] = jsonData.fromScreen;
var data = jsonData.eventVal;
data.start = new Date(slot.startDate);
var setEndDate = new Date(slot.startDate);
var durVal = data.event.programLength;
var parts = durVal.split(":");
var totlaSec = (parseInt(parts[0]) * 60 * 60) + (parseInt(parts[1]) * 60) + parseInt(parts[2]);
setEndDate.setSeconds(setEndDate.getSeconds() + totlaSec);
data.end = new Date(setEndDate);
data.event.start = new Date(slot.startDate);
data.event.end = new Date(setEndDate);
data.resources = resource;
let winStDate = new Date(slot.startDate)
let JumpingWithDay = resource.JumpingWithDay.split("-");
let actualStart = new Date(that.dateOfSeason(resource.week, JumpingWithDay[1]));
actualStart.setHours(winStDate.getHours(), winStDate.getMinutes(), winStDate.getSeconds());
let actualEnd = new Date(actualStart);
let duration = data.event.programLength;
let secondsVal = duration.split(":");
actualEnd.setHours(actualEnd.getHours() + parseInt(secondsVal[0]), actualEnd.getMinutes() + parseInt(secondsVal[1]), actualEnd.getSeconds() + parseInt(secondsVal[2]))
let dur = actualEnd.getTime() - actualStart.getTime();
data['eventActualStart'] = actualStart;
data['eventActualEnd'] = actualEnd;
data['eventDuration'] = dur;
//data['fromScreen'] = "CrowerComp";
// if(!$("#snapFlag").is(":checked")){
// let slotPosTime = 0;
// if(ev.offsetX){
// slotPosTime = ev.offsetX;
// }
// let slotWidth = 125;
// if(ev.currentTarget && ev.currentTarget.offsetWidth){
// slotWidth = ev.currentTarget.offsetWidth;
// }
// slotPosTime = slotPosTime * 30 * 1000 / slotWidth;
// }
that.createMouseSearchEvnt(data, false)
// that.isMouseSarch = true;
// that.checkAvailability(data,false,true,[data.event]);
// that.isMouseSarch = false;
}
// ev.preventDefault();
// let target = $(ev.currentTarget);
// if(target.hasClass("k-event")) {
// }else{
// var slot=Crower.slotByElement(target);
// if(data && slot) {
// var newEvent = {
// Mouse: data.Mouse,
// end: new Date(slot.startDate.getTime() + ((new Date(data.end)).getTime() - (new Date(data.start)).getTime())),
// start: slot.startDate ,
// isAllDay: slot.isDaySlot,
// description: data.description,
// imdb: data.imdb,
// image: data.image
// };
// Crower.dataSource.add(newEvent);
// }
// }
});
}
checkValidDrop(evt): any {
let currSlot = $(evt.slot)[0]["element"];
let cellWidth = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;//1 slot width
let cellHeight = $(".parrotCrower-table > tbody > tr >td")[0].offsetHeight
if (cellWidth == 0) {
let tdLen = $(".parrotCrower-table > tbody > tr >td").length;
if (tdLen > 0) {
cellWidth = $(".parrotCrower-table > tbody > tr >td")[tdLen - 1].offsetWidth;//1 slot width
}
}
if (cellHeight == 0) {
let tdLen = $(".parrotCrower-table > tbody > tr >td").length;
if (tdLen > 0) {
cellHeight = $(".parrotCrower-table > tbody > tr >td")[tdLen - 1].offsetHeight;//1 slot height
}
}
if (cellWidth == 0) {
cellWidth = 125;
}
if (cellHeight == 0) {
cellHeight = 54;
}
let curScroll = $('.parrotCrower-content')[0].scrollLeft;// scroll start position
let curScrollWidth = $('.parrotCrower-content')[0].offsetWidth;//current scroll range
let scrollWidth = $('.parrotCrower-content')[0].scrollWidth;//total width
let curScrollRange = curScrollWidth + curScroll;// scroll end value
let curScrTop = $('.parrotCrower-content')[0].scrollTop;// scroll start position
let curScrHeight = $('.parrotCrower-content')[0].offsetHeight;//current scroll range
let scrollHeight = $('.parrotCrower-content')[0].scrollHeight;//total width
let curScrTopRange = curScrHeight + curScrTop;// scroll top value
if (currSlot.offsetLeft < curScroll) {
// before scroll start position(left end)
return false;
} else if (currSlot.offsetLeft > curScrollRange) {
// beyond current scroll range(right end)
return false;
} else if (currSlot.offsetTop + (cellHeight / 2) < curScrTop) {
// above current scroll range(top)
return false;
} else if (currSlot.offsetTop + (cellHeight / 2) > curScrTopRange) {
// beyond current scroll range(bottom)
return false;
}
return true;
}
removeMouse() {
let eventList = this.selectedSlotEvent;
let eventTrigger;
let filterData = this.getSpanEventList(this._CrowerDataSource._data, eventList[0]);
let getSourceEvent = this.getSourceEvents(filterData);
for (let e = 0; e < filterData.length; e++) {
filterData[e].episodeName = "";
filterData[e].episodeDisplayName = "";
filterData[e].MouseNo = -1;
if (filterData[e].materials.length > 0) {
filterData[e].materials[0].materialId = "";
}
filterData[e].cc = "N";
filterData[e].scc = "N";
filterData[e].lbox = "N";
filterData[e].audio = "N";
filterData[e].hd = "N";
filterData[e].sap = "N";
}
eventTrigger = eventList[0];
eventTrigger.displayMouseName = "forChange";
eventTrigger.episodeDisplayName = "";
eventTrigger.MouseNo = -1;
eventTrigger.set("displayMouseName", "");
this.sportsPlayersSleeping(eventTrigger);
let destinationEvent = this.getDestinationEvents(filterData);
this.enableSave(getSourceEvent, destinationEvent, [], "update");
}
setRepeatOriginal(repeatFlag) {
if (repeatFlag == false) {
$("#runTypeCount").val("Original");
$("#runTypeOverride").prop('checked', false);
this.setoriginal = "true";
}
let repeatCondition;
let overRideCondition = false;
if (repeatFlag) {
repeatCondition = 'Repeat';
}
else {
repeatCondition = 'Original';
}
let categoryType: any = this.categoryType;
let eventList = this.selectedSlotEvent;
let getSourceEvent = this.getSourceEvents(eventList);
let eventTrigger;
let overrideEnable = false;
let cEventMove;
for (let i = 0; i < eventList.length; i++) {
cEventMove = eventList[i];
if (cEventMove.MouseNo != -1 && repeatFlag == true) {
overRideCondition = true;
this.showRepeatOriginalPopup(repeatCondition, cEventMove, this.selectedSlotEvent);
}
else {
cEventMove.displayRunTypeName = repeatCondition;
let j: any;
let repearColor;
let cloneDataSource = new kendo.data.Query(categoryType);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "name",
value: "REPEAT"
}).data;
if (repeatCondition == 'Repeat') {
let uid = eventList[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": filterData[0].color, "border-color": "#ffffff" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
} else if (repeatCondition == 'Original') {
let programType = this.removeSpecialCharacter(eventList[i].programType);
let originalColorStatus = false;
let cloneDataSource = new kendo.data.Query(categoryType);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "name",
value: programType
}).data;
if (filterData.length > 0) {
repearColor = filterData[0].color;
originalColorStatus = true;
}
eventList[i]["dirty"] = true;
if (originalColorStatus) {
let uid = eventList[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": repearColor, "border-color": "#ffffff" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
} else {
let uid = eventList[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": "#ffffff", "border-color": "#ffffff" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
}
}
}
eventTrigger = cEventMove;
}
cEventMove.rtFlag = true;
if (repeatFlag == false) {
cEventMove.runcountflags = false;
}
if (eventTrigger) {
if (!overRideCondition) {
eventTrigger.runType = "";
eventTrigger.set("displayRunTypeName", repeatCondition);
$("#runType").val(repeatCondition);
}
}
if (!overRideCondition) {
let destinationEvent = this.getDestinationEvents(eventList);
this.enableSave(getSourceEvent, destinationEvent, [], "update");
}
}
showRepeatOriginalPopup(repeatCondition, event, eventlist) {
let that = this;
let dialog;
let eventList = this.selectedSlotEvent;
let getSourceEvent = that.getSourceEvents(eventList);
$("#repeatPopupBlock").find(".kendoContent").text("This will override the Run Type of this airing(s). Do you wish to continue?");
if ($("#repeatPopupBlock").data("kendoWindow"))
dialog = $("#repeatPopupBlock").data("kendoWindow").center().open();
$("#OverrideBlock").unbind().click(function () {
for (let i = 0; i < eventList.length; i++) {
eventList[i].displayRunTypeName = repeatCondition;
$("#runTypeCount").val(repeatCondition);
eventList[i]["runcountflags"] = true;
eventList[i]["rtFlag"] = true;
eventList[i]["dirty"] = true;
that.CroweTalking.setusrepeats = "false";
that.setoriginal = "false";
if (repeatCondition == "Repeat") {
that.repeatus = "true";
let j: any;
let repearColor;
let cloneDataSource = new kendo.data.Query(that.categoryType);
let filterData = cloneDataSource.filter({
operator: "eq",
field: "name",
value: "REPEAT"
}).data;
let uid = eventList[i].uid;
let CroweDiv = $("div[data-uid='" + uid + "']");
CroweDiv.find(".schedlerCol").parent().css({ "background-color": filterData[0].color, "border-color": "#ffffff" });
let kendoGrid = $("#kgrid");
kendoGrid.find("tr[data-uid='" + uid + "']").addClass('CroweAuditGrid');
}
if ($("#runTypeOverride").is(':checked')) {
//$("#runTypeOverride").attr('disabled', 'disabled');
// $("#runTypeOverride").prop('checked', false);
}
else {
$("#runTypeOverride").removeAttr('disabled');
$("#runTypeOverride").prop('checked', true);
}
dialog.close();
}
let destinationEvent = that.getDestinationEvents(eventList);
that.enableSave(getSourceEvent, destinationEvent, [], "update");
});
$("#OverrideCancel").unbind().click(function () {
dialog.close();
});
}
setOverrideRepeat(repeatFlag) {
let that = this;
let repeatCondition;
if (repeatFlag)
repeatCondition = 'Repeat';
else
repeatCondition = 'Original';
let eventList = that.selectedSlotEvent;
let eventTrigger;
for (let i = 0; i < eventList.length; i++) {
let cEventMove = eventList[i];
if (cEventMove.MouseNo != -1 || cEventMove.seriesNo != -1) {
cEventMove.runType = repeatCondition;
eventTrigger = cEventMove;
}
}
if (eventTrigger) {
eventTrigger.runType = "";
eventTrigger.set("runType", repeatCondition);
}
}
btOperation(bookValue, key) {
let eventList = this.selectedSlotEvent;
let getSourceEvent = this.getSourceEvents(eventList);
let eventTrigger;
for (let i = 0; i < eventList.length; i++) {
let cEventMove = eventList[i];
if (cEventMove.MouseNo != -1 || cEventMove.seriesNo != -1) {
if (key == "aptBooked") {
cEventMove.bookedFlag = bookValue;
} else if (key == "aptTranslation") {
cEventMove.translation = bookValue;
} else if (key == "liveFlag") {
cEventMove.live = bookValue;
}
cEventMove.dirty = true;
eventTrigger = cEventMove;
}
}
if (eventTrigger) {
if (key == "aptBooked") {
eventTrigger.bookedFlag = "";
eventTrigger.set("bookedFlag", bookValue);
} else if (key == "aptTranslation") {
eventTrigger.translation = "";
eventTrigger.set("translation", bookValue);
} else if (key == "liveFlag") {
eventTrigger.live = "";
eventTrigger.set("live", bookValue);
}
}
/* if(key!="liveFlag"){
if(bookValue=="EB" || bookValue=="Y"){
$("#"+key).prop('checked', true).triggerHandler('click');;
}else{
$("#"+key).prop('checked', false).triggerHandler('click');;
}
} */
if (key == "aptBooked") {
if (bookValue == "EB") {
$("#aptBooked").prop('checked', true);
$("#bookedFlag").val('EB').change();
$(".bookInfo").addClass('bookEnabledGreen');
$(".bookInfo").removeClass('bookEnabled');
$(".bookInfo").text('B');
} else {
$("#aptBooked").prop('checked', false);
$("#bookedFlag").val('NB').change();
$(".bookInfo").addClass('bookEnabled');
$(".bookInfo").removeClass('bookEnabledGreen');
$(".bookInfo").text('NB');
}
}
else if (key == "aptTranslation") {
if (bookValue == "Y") {
$("#aptTranslation").prop('checked', true);
$("#translationFlag").val('Y').change();
$(".translateInfo").addClass('translationEnabledGreen');
$(".translateInfo").removeClass('translationEnabled');
$(".translateInfo").text('T');
} else {
$("#aptTranslation").prop('checked', false);
$("#translationFlag").val('N').change();
$(".translateInfo").addClass('translationEnabled');
$(".translateInfo").removeClass('translationEnabledGreen');
$(".translateInfo").text('NT');
}
}
else {
if (bookValue == 'Y') {
$(".telecastType").addClass('liveEnabled');
$(".telecastType").text("LIVE");
}
else {
$(".telecastType").removeClass('liveEnabled');
$(".telecastType").text("");
}
}
let destinationEvent = this.getDestinationEvents(eventList);
this.enableSave(getSourceEvent, destinationEvent, [], "update");
this.multiSelectEvent();
}
pastOperation(target, copiedEvent, isNew) {
let copyOption = $("#copyOption").val();
let searchDateFallCheck = false;
let actStartEvent;
if (copiedEvent.length > 0) {
let Crower = this.getCrower();
if (!this.accessFutureDays(this, target.endDate)) {
this.singleButtonDialog("You cannot perform this action. Please refine your search in order to display more data");
}
else {
if (this.isEditable) {
let pastEventList = this.arrangeArrayUsingStartDateTime(copiedEvent);//copiedEvent;
let pastList = [];
let sendEventList = [];
let resourceBySlot = target.resourceBySlot; //Crower.view()._resourceBySlot(target[0]);
let JumpingWithDay = resourceBySlot.JumpingWithDay.split("-");
let actualFirstBlockStart = this.dateOfSeason(resourceBySlot.week, parseInt(JumpingWithDay[1]));
actualFirstBlockStart = this.getDateWithTime(actualFirstBlockStart, target.startDate);
let cloneDataSource = new kendo.data.Query(this._CrowerDataSource._data);
let chkStDate = this.dateString(new Date(actualFirstBlockStart));
let filterData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: chkStDate
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
for (let i = 0; i < filterData.length; i++) {
let clEnd = new Date(filterData[i].clonedEnd);
if ((actualFirstBlockStart.getTime() < clEnd.getTime() && (actualFirstBlockStart.getTime() + (30 * 60 * 1000)) > clEnd.getTime())) {
actualFirstBlockStart = new Date(clEnd);
}
}
let pasteDonePosition = [];
for (let i = 0; i < pastEventList.length; i++) {
let pastEvent = pastEventList[i];
let filterData = this.getSpanEventList(pastEventList, pastEvent);
let sortData = this.arrangeArrayUsingStartDateTime(filterData);
if (pasteDonePosition.indexOf(i) == -1) {
for (let sp = 0; sp < sortData.length; sp++) {
pasteDonePosition.push(pastEventList.indexOf(sortData[sp]));
}
let firstEventFilterData = this.getSpanEventList(pastEventList, pastEventList[0]);
let firstEventSortData = this.arrangeArrayUsingStartDateTime(firstEventFilterData);
let firstBlockStart = (new Date(firstEventSortData[0].clonedStart).getTime());
let start = (new Date(sortData[0].clonedStart).getTime());
let startCalculate = start - firstBlockStart;
let end = (new Date(sortData[sortData.length - 1].clonedEnd).getTime());
let blockDuration = end - start; // finding move event duration
let uniqueSpanId = this.getUniqueSpanId() + i;
let isReverse = false;
let isForward = false;
//for(let m=0;m<sortData.length;m++){
let m = 0;
let startTime = new Date(actualFirstBlockStart.getTime() + startCalculate);
startTime.setDate(startTime.getDate() + m);
if (m == 0) {
actStartEvent = startTime;
}
let actualStart = this.formDate(startTime);
let resourceByDate = this.weekOfSeason(actualStart, false, null);
let days = [6, 0, 1, 2, 3, 4, 5];
let dayOfWeekNo = days[startTime.getDay()];
resourceByDate = {
"week": "Week " + resourceByDate.weekNo + " - Season " + resourceByDate.season,
"JumpingWithDay": JumpingWithDay[0] + "-" + dayOfWeekNo
};
startTime = this.getDateWithTime(new Date(), startTime);
startTime = new Date(startTime);
let endTime = new Date(startTime);
endTime.setTime(endTime.getTime() + blockDuration); //hours adding for fit
let diffDays = this.dateDiffInDays(startTime, endTime); //actual diff count need for loop
for (let s = 0; s < diffDays; s++) {
let searchDateCheck = new Date(actualFirstBlockStart.getTime() + startCalculate);
searchDateCheck.setDate(searchDateCheck.getDate() + s);
searchDateCheck.setHours(0, 0, 0, 0);
if (searchDateArea.indexOf(searchDateCheck.getTime()) == -1) {
searchDateFallCheck = true;
}
}
/*let findSpanStart=new Date(startTime);
findSpanStart.setHours(0,0,0,0);
let findSpanEnd=new Date(endTime.getTime());
let findSpanEndHoursCheck=new Date(endTime.getTime());
let spanResult=this.getDiffDateAndCompareResult(findSpanStart,findSpanEndHoursCheck);
findSpanEnd.setHours(0,0,0,0);
if( sortData.length > 1){
if(!spanResult.isSpan){
for(let r=1;r<sortData.length;r++){
sortData.splice(r,1);
}
}
}*/
let timeDuration = blockDuration / 1000;
let eventFormatNo;
let eventFormat;
let eventAffiliateInfos;
if (copyOption == "Without Format") {
eventFormatNo = '';
eventFormat = {};
eventAffiliateInfos = [];
}
else if (copyOption == "With Format") {
eventFormatNo = pastEvent.formatNo;
eventFormat = {
"activeFlag": pastEvent.format.activeFlag,
"comments": pastEvent.format.comments,
"formatName": pastEvent.format.formatName,
"formatNo": pastEvent.format.formatNo,
"JumpingNo": pastEvent.format.JumpingNo,
"userName": pastEvent.format.userName,
"dateUpdated": pastEvent.format.dateUpdated
}
//eventFormat=pastEvent.format;
eventAffiliateInfos = [];
}
else {
eventFormatNo = pastEvent.formatNo;
eventFormat = {
"activeFlag": pastEvent.format.activeFlag,
"comments": pastEvent.format.comments,
"formatName": pastEvent.format.formatName,
"formatNo": pastEvent.format.formatNo,
"JumpingNo": pastEvent.format.JumpingNo,
"userName": pastEvent.format.userName,
"dateUpdated": pastEvent.format.dateUpdated
}
if (pastEvent.affiliateInfos && pastEvent.affiliateInfos.length > 0) {
let affiliationArray = [];
for (let j = 0; j < pastEvent.affiliateInfos.length; j++) {
let affiliateJson = {
"schedItemNo": -1,
"category": pastEvent.affiliateInfos[j].category,
"delFlag": pastEvent.affiliateInfos[j].delFlag,
"notes": pastEvent.affiliateInfos[j].notes,
"status": "Added",
"MouseNo": -1,
"manualChangeFlag": 'Y',
"dateUpdated": pastEvent.affiliateInfos[j].dateUpdated,
"userUpdated": pastEvent.affiliateInfos[j].userUpdated
};
affiliationArray.push(affiliateJson);
}
eventAffiliateInfos = affiliationArray;
}
else {
eventAffiliateInfos = [];
}
}
/* let addEvent={MouseNo:pastEvent.MouseNo,seriesNo:pastEvent.seriesNo,seasonNo:pastEvent.seasonNo,
programName: pastEvent.programName,start:startTime,end:endTime,bookedFlag:"NB",JumpingNo:pastEvent.JumpingNo,
translation: pastEvent.translation,displayMouseName:pastEvent.displayMouseName,displayMouseText:pastEvent.displayMouseText,
programType: pastEvent.programType,live:pastEvent.live,episodeDisplayName:pastEvent.episodeDisplayName,hd:pastEvent.hd,
pgRating:pastEvent.pgRating,runType:pastEvent.runType,programLength:timeDuration,affiliateInfos:eventAffiliateInfos,
format :eventFormat,formatNo:eventFormatNo,cc:pastEvent.cc,scc:pastEvent.scc,lbox:pastEvent.lbox,materialIds:pastEvent.materialIds,pgRatingOverride:pastEvent.pgRatingOverride,
contentRatingOverride:pastEvent.contentRatingOverride,formatOverride:pastEvent.formatOverride
//dayOfWeekNo:pastEvent.dayOfWeekNo
}; */
let orFlag = '';
let addEvent = {
schedItemNo: 0, MouseNo: pastEvent.MouseNo, seriesNo: pastEvent.seriesNo, seasonNo: pastEvent.seasonNo,
programName: pastEvent.programName, start: startTime, end: endTime, bookedFlag: "NB", JumpingNo: pastEvent.JumpingNo,
translation: pastEvent.translation, displayMouseName: pastEvent.displayMouseName, displayMouseText: pastEvent.displayMouseText,
programType: pastEvent.programType, live: pastEvent.live, episodeDisplayName: pastEvent.episodeDisplayName, hd: pastEvent.hd,
pgRating: pastEvent.pgRating, runType: pastEvent.runType, programLength: timeDuration, affiliateInfos: eventAffiliateInfos,
format: eventFormat, formatNo: eventFormatNo, cc: pastEvent.cc, lbox: pastEvent.lbox, materialIds: pastEvent.materialIds, materials: pastEvent.materials, pgRatingOverride: pastEvent.pgRatingOverride,
contentRatingOverride: pastEvent.contentRatingOverride, formatOverride: pastEvent.formatOverride, seqNo: pastEvent.seqNo,
MouseVersionNo: pastEvent.MouseVersionNo, oRFlag: orFlag, runSeq: pastEvent.runSeq, normalSlot: pastEvent.normalSlot,
contentRating: pastEvent.contentRating, customFormatDescription: pastEvent.customFormatDescription, showName: pastEvent.showName, MouseBaseType: pastEvent.MouseBaseType,
vds: pastEvent.vds, sap: pastEvent.sap, audio: pastEvent.audio, materialID: pastEvent.materialID, dayPart: pastEvent.dayPart, progDuration: pastEvent.progDuration, displayRunTypeName: pastEvent.displayRunTypeName, feedNo: pastEvent.feedNo,
overridedPgRating: pastEvent.overridedPgRating, pgRatingData: pastEvent.pgRatingData, overridedContentRating: pastEvent.overridedContentRating, isReverse: isReverse, isForward: isForward, spanID: uniqueSpanId, clonedStart: pastEvent.clonedStart, clonedEnd: pastEvent.clonedEnd,
isOverrideChecked: pastEvent.isOverrideChecked, manualChangeFlag: 'Y', licStartDate: pastEvent.licStartDate, licEndDate: pastEvent.licEndDate, aptShowName: pastEvent.aptShowName
};
if (!isNew) {
addEvent = pastEvent;
//addEvent['start']=startTime;
//addEvent['end']=endTime;
//addEvent['bookedFlag']="NB";
//addEvent['programLength']=timeDuration;
addEvent['isReverse'] = isReverse;
addEvent['isForward'] = isForward;
}
let clonedPasteEvent = addEvent; //$.extend(true,{}, addEvent);
let actEndEvent = new Date(actStartEvent);
actEndEvent.setTime(actEndEvent.getTime() + blockDuration);
let currentEvent = { eventActualStart: actStartEvent, eventActualEnd: actEndEvent, eventDuration: blockDuration, start: startTime, end: endTime, event: clonedPasteEvent, resources: resourceByDate };
pastList.push(currentEvent);
sendEventList.push(currentEvent.event);
//}
}
}
if (searchDateFallCheck) {
this.singleButtonDialog("You cannot perform this action. Please refine your search in order to display more data");
} else {
/*for(let sp=0;sp<pastList.length;sp++){
let filterData = this.getSpanEventList(sendEventList,sendEventList[sp]);
let sortData=this.arrangeArrayUsingStartDateTime(filterData
if(sortData.length>1){
let firstPos=sendEventList.indexOf(sortData[0]);
let LastPos=sendEventList.indexOf(sortData[sortData.length-1]);
let firstSpanStart=new Date(pastList[firstPos].eventActualStart);
let lastSpanEnd=new Date(pastList[LastPos].eventActualEnd);
let duration=lastSpanEnd.getTime()-firstSpanStart.getTime();
for(let sub=0;sub<sortData.length;sub++){
let pos=sendEventList.indexOf(sortData[sub]);
pastList[pos].eventActualStart=firstSpanStart;
pastList[pos].eventActualEnd=lastSpanEnd;
pastList[pos].eventDuration=duration;
}
}
}*/
if (isNew) {
this.isMouseSarch = true;
}
if (pastList.length > 1) {
this.checkMultiBlock(pastList, false, isNew, sendEventList);
} else {
this.checkAvailability(pastList[0], false, isNew, [pastList[0].event]);
}
this.isMouseSarch = false;
}
}
}
}
}
getUniqueSpanId(): any {
let date = new Date();
let timeMil = date.getTime();
return timeMil;
}
getEventByUid(uid) {
let Crower = this.getCrower();
return Crower.occurrenceByUid(uid);
}
deleteBlock(eventSelected) {
let that = this;
let islinkedWithAPT = false;
let linkedWithAPTEventCount = 0;
for (let i = 0; i < eventSelected.length; i++) {
if (eventSelected[i].bookedFlag == "EB" && eventSelected[i].formatNo > 0) {
islinkedWithAPT = true;
linkedWithAPTEventCount = linkedWithAPTEventCount + 1;
}
}
if (islinkedWithAPT) {
that.deleteBlockWithPOP(eventSelected, linkedWithAPTEventCount);
} else {
that.removeItems(eventSelected, true);
that.selectedSlotEvent = [];
}
}
deleteBlockGrid(eventSelected) {
let that = this;
let islinkedWithAPT = false;
let linkedWithAPTEventCount = 0;
for (let i = 0; i < eventSelected.length; i++) {
if (eventSelected[i].bookedFlag == "EB" && eventSelected[i].formatNo > 0) {
islinkedWithAPT = true;
linkedWithAPTEventCount = linkedWithAPTEventCount + 1;
}
}
if (islinkedWithAPT) {
that.deleteBlockWithPOPGrid(eventSelected, linkedWithAPTEventCount);
} else {
that.removeGridItems(eventSelected, true);
}
}
removeGridItems(occurrences, isDeleteOnly) {
let grid = $("#KendoGridView").data("kendoGrid").dataSource;
let getSourceEvent = this.getSourceEvents(occurrences);
grid.remove(getSourceEvent[0]);
if (isDeleteOnly) {
this.enableSave(getSourceEvent, getSourceEvent, [], "delete");
}
}
deleteBlockWithPOPGrid(deleteItem, linkedWithAPTEventCount) {
let that = this;
let clickEvent = true;
$("#DeletePopupBlock").find('.kendoContent').text("Are you sure want to delete show(s)? This will be deleted from APT");
let dialog = $("#DeletePopupBlock").data("kendoWindow").center().open();
$("#deleteBlock").text("Delete (" + linkedWithAPTEventCount + ")");
$("#deleteBlock").unbind().click(function () {
if (clickEvent) {
clickEvent = false;
that.removeGridItems(deleteItem, true);
dialog.close();
}
});
$("#deleteCancel").unbind().click(function () {
dialog.close();
});
}
deleteBlockWithPOP(deleteItem, linkedWithAPTEventCount) {
let that = this;
let clickEvent = true;
$("#DeletePopupBlock").find('.kendoContent').text("Are you sure want to delete show(s)? This will be deleted from APT");
let dialog = $("#DeletePopupBlock").data("kendoWindow").center().open();
$("#deleteBlock").text("Delete (" + linkedWithAPTEventCount + ")");
$("#deleteBlock").unbind().click(function () {
if (clickEvent) {
clickEvent = false;
that.removeItems(deleteItem, true);
that.selectedSlotEvent = [];
dialog.close();
}
});
$("#deleteCancel").unbind().click(function () {
//that.selectedSlotEvent = [];
that.copiedEvent = [];
that.CroweTalking.copiedEvent = [];
dialog.close();
if (that.CroweTalking.copiedEvent) {
that.CroweTalking.copiedEvent = "";
}
});
}
getCrower(): any {
let Crower = $("#Crower").data("kendoCrower");
return Crower;
}
getResourceBySlot(target): any {
let Crower = this.getCrower();
let slot = Crower.slotByElement(target);
let resourceBySlot = Crower.view()._resourceBySlot(slot);
return resourceBySlot;
}
disbleMenuItem(enableList) {
let menuListID = ["evntBolckMenuMouseSearch", "evntBolckMenuShowDetails", "evntBolckMenuMouseDetails", "evntBolckMenuCut", "evntBolckMenuCopy", "evntBolckMenuPaste",
"evntBolckMenuDeleteBlock", "evntBolckMenuRemoveMouse", "evntBolckMenuViewHistory", "evntBolckMenuBook", "evntBolckMenuUnbook",
"evntBolckMenuEnableTranslation", "evntBolckMenuStopTranslation", "evntBolckMenuSetAsRepeat", "evntBolckMenuSetAsOriginal",
"evntBolckMenuSetAsLive", "evntBolckMenuSetAsTaped", "evntBolckMenuTveAltProgramming", "evntBolckMenuActualAirTings",
"evntBolckMenuTeException"
];
for (let i = 0; i < menuListID.length; i++) {
if (enableList.indexOf(menuListID[i]) != -1) {
$('#' + menuListID[i]).removeClass('disabledElement');
} else {
$('#' + menuListID[i]).addClass('disabledElement');
}
}
}
checkCroweChanges(): any {
let Crower = $("#Crower").data("kendoCrower");
let hasChanges = false;
let dataSource = this._CrowerDataSource;
if (dataSource.hasChanges()) {
hasChanges = true;
}
return hasChanges;
}
calculateDuration(sortData: any): any {
let duration = 0;
for (let d = 0; d < sortData.length; d++) {
let start = new Date(sortData[d].clonedStart).getTime();
let end = new Date(sortData[d].clonedEnd).getTime();
let blockDuration = end - start;
duration = duration + blockDuration;
}
return duration;
}
setCroweKeyData(data): any {
var action;
let startDate = new Date(data[0].clonedStart);
let endDate = new Date(data[data.length - 1].clonedEnd);
let arrayForClone = [];
arrayForClone.push(data[0]);
let clonedArray = arrayForClone.slice();
let clonedEvent = clonedArray[0];
clonedEvent.start = this.formatDate(startDate) + " " + this.formatTime(startDate);
clonedEvent.end = this.formatDate(endDate) + " " + this.formatTime(endDate);
let milliseconds = this.calculateDuration(data);
clonedEvent.programLength = milliseconds / 1000;
// var durVal = clonedEvent.duration1;
// var parts = durVal.split(":");
// clonedEvent.programLength = (parseInt(parts[0])*60*60)+(parseInt(parts[1])*60)+parseInt(parts[2]);
/*if(clonedEvent.dateAdded && clonedEvent.dateUpdated){
let dateAdded = new Date(clonedEvent.dateAdded);
let dateUpdated = new Date(clonedEvent.dateUpdated);
clonedEvent.dateAdded = this.formatDate(dateAdded)+" "+this.formatTime(dateAdded);
clonedEvent.dateUpdated = this.formatDate(dateUpdated)+" "+this.formatTime(dateUpdated);
}*/
// delete clonedEvent.uid;
if (clonedEvent.pgRatingData)
// delete clonedEvent.pgRatingData;
if (clonedEvent.week && clonedEvent.JumpingWithDay) {
// delete clonedEvent.week;
// delete clonedEvent.clonedStart;
// delete clonedEvent.clonedEnd;
// delete clonedEvent.JumpingWithDay;
// delete clonedEvent.bookedFlagFilterRowId;
// delete clonedEvent.clonedStartFilterRowId;
// delete clonedEvent.endFilterRowId;
// delete clonedEvent.JumpingNoFilterRowId;
// delete clonedEvent.starttimeFilterRowId;
// delete clonedEvent.startweekFilterRowId;
//delete clonedEvent.actualStart;
//delete clonedEvent.actualEnd;
}
if (data[0].dirty) {
action = "update";
}
if (data[0].schedItemNo == "0" || data[0].schedItemNo == "-1") {
action = "create";
clonedEvent.schedItemNo = -1;
}
clonedEvent.action = action;
/*let CroweEvent={
"schedItemNo": data.schedItemNo,
"dayOfWeekNo": data.dayOfWeekNo,
"MouseNo": data.MouseNo,
"seriesNo": data.seriesNo,
"programName": data.programName,
"programLength": data.programLength,
"programType": data.programType,
"seasonNo": data.seasonNo,
"bookedFlag": data.bookedFlag,
"formatNo": data.formatNo,
"JumpingNo": data.JumpingNo,
"displayMouseName": data.displayMouseName,
"displayMouseText": data.displayMouseText,
"live": data.live,
"translation": data.translation,
"pgRating": data.pgRating,
"contentRating": data.contentRating,
"start": this.formatDate(startDate)+" "+this.formatTime(startDate),
"end": this.formatDate(endDate)+" "+this.formatTime(endDate),
"runType": data.runType,
"episodeDisplayName": data.episodeDisplayName,
"showName": data.showName,
"MouseBaseType": data.MouseBaseType,
"hd": data.hd,
"cc": data.cc,
"lbox": data.lbox,
"materialIds": data.materialIds,
"pgRatingOverride": data.pgRatingOverride,
"contentRatingOverride": data.contentRatingOverride,
"formatOverride": data.formatOverride,
"allAiringsCount": data.allAiringsCount,
"notBookedFlagCount": data.notBookedFlagCount,
"affiliateInfos":data.affiliateInfos,
"action": action,
}
if(data.format)
CroweEvent["format"]=data.format;
if(data.affiliateInfos)
CroweEvent["affiliateInfos"]=data.affiliateInfos;*/
return clonedEvent;
}
getCroweData(backupData): any {
let Crower = $("#Crower").data("kendoCrower");
//let getDataSource = this._CrowerDataSource._data;
let dataSourceSet = jQuery.extend(true, [], this._CrowerDataSource._data);
let updatedData = [];
let actualData = [];
let newDataSource = new kendo.data.Query(dataSourceSet);
let dataSource = newDataSource.filter({
"logic": "or",
"filters": [
{
"field": "dirty",
"operator": "eq",
"value": true
},
{
"field": "schedItemNo",
"operator": "eq",
"value": 0
},
{
"field": "schedItemNo",
"operator": "eq",
"value": -1
}
]
}).data;
for (let i = 0; i < dataSource.length; i++) {
if (dataSource[i].dirty || dataSource[i].schedItemNo == "0" || dataSource[i].schedItemNo == "-1") {
let spanList = this.getSpanEventList(dataSource, dataSource[i]);
let sortData = this.arrangeArrayUsingStartDateTime(spanList);
let isExitArray = this.getSpanEventList(updatedData, dataSource[i]);
if (isExitArray.length == 0) {
let CroweKeyEvent = this.setCroweKeyData(sortData);
updatedData.push(CroweKeyEvent);
if (dataSource[i].schedItemNo != "0") {
let cloneDataSource = new kendo.data.Query(backupData);
let filterData = cloneDataSource.filter({
operator: "eq", field: "schedItemNo", value: dataSource[i].schedItemNo
}).data;
if (filterData && filterData[0]) {
filterData[0].start = this.formatStringTime((filterData[0].start));
filterData[0].end = this.formatStringTime((filterData[0].end));
}
/*let startDate = this.dateFormatHandling(filterData[0].actualStart);
let endDate = this.dateFormatHandling(filterData[0].actualEnd);
filterData[0].start = this.formatDate(startDate)+" "+this.formatTime(startDate);
filterData[0].end = this.formatDate(endDate)+" "+this.formatTime(endDate);
if(filterData[0].pgRatingData)
delete filterData[0].pgRatingData;delete filterData[0].week;
delete filterData[0].clonedStart;
delete filterData[0].clonedEnd;
delete filterData[0].JumpingWithDay;
delete filterData[0].actualStart;
delete filterData[0].actualEnd; */
actualData = $.merge(actualData, filterData);
}
}
}
}
let destroyedDataSource = this._CrowerDataSource._destroyed;
for (let i = 0; i < destroyedDataSource.length; i++) {
let spanList = this.getSpanEventList(updatedData, destroyedDataSource[i]);
if (spanList.length == 0) {
updatedData.push({
"schedItemNo": destroyedDataSource[i].schedItemNo, "action": "delete", "seqNo": destroyedDataSource[i].seqNo,
"dayOfWeekNo": destroyedDataSource[i].dayOfWeekNo
});
let cloneDataSource = new kendo.data.Query(backupData);
let filterData = cloneDataSource.filter({
operator: "eq", field: "schedItemNo", value: destroyedDataSource[i].schedItemNo
}).data;
/* let startDate = new Date(filterData[0].start);
let endDate = new Date(filterData[0].end);
filterData[0].start = this.formatDate(startDate)+" "+this.formatTime(startDate);
filterData[0].end = this.formatDate(endDate)+" "+this.formatTime(endDate);*/
if (filterData[0]) {
filterData[0].start = this.formatStringTime(filterData[0].start);
filterData[0].end = this.formatStringTime(filterData[0].end);
}
actualData = $.merge(actualData, filterData);
}
}
let data = { "updatedData": updatedData, "actualData": actualData };
return data;
}
dateFormatHandling(dateFormat): any {
let dateString = dateFormat.split(" ");
let dateDay = dateString[0];
let dateTime = dateString[1];
let dayFormat = dateDay.split('-');
let timeFormat = dateTime.split(':');
let dayMonth = parseInt(dayFormat[1]) - 1;
let newDate = new Date(dayFormat[0], dayMonth, dayFormat[2], timeFormat[0], timeFormat[1], timeFormat[2]);
return newDate;
}
formatTime(date): any {
let hours = date.getHours();
if (hours <= 19) {
hours = hours + 5;
} else {
hours = hours - 19;
}
let mins = date.getMinutes();
let secs = date.getSeconds();
mins = mins > 9 ? mins : '0' + mins;
secs = secs > 9 ? secs : '0' + secs;
var h = hours % 12;
if (h === 0) h = 12;
return (h < 10 ? '0' : '') + h + ':' + mins + ':' + secs + (hours < 12 || hours == 24 ? ' AM' : ' PM');
}
formatStringTime(date): any {
//let dateVal = date.split(" ");
let dateVal = this.getMacSupportDate(date);
let getDate = this.formattedDate(dateVal, 'ymd');
//if(dateVal.length>0){
let time = dateVal.getHours();
var h = time % 12;
if (h === 0)
h = 12;
return getDate + " " + (h < 10 ? '0' : '') + h + ':' + dateVal.getMinutes() + ':' + dateVal.getSeconds() + (time < 12 || time == 24 ? ' AM' : ' PM');
//}
//return date;
}
formatTimeWithoutSec(date): any {
let hours = date.getHours();
if (hours <= 19) {
hours = hours + 5;
} else {
hours = hours - 19;
}
let mins = date.getMinutes();
let secs = date.getSeconds();
mins = mins > 9 ? mins : '0' + mins;
secs = secs > 9 ? secs : '0' + secs;
var h = hours % 12;
if (h === 0) h = 12;
return (h < 10 ? '' : '') + h + ':' + mins + (hours < 12 || hours == 24 ? ' AM' : ' PM');
}
formatDate(date): any {
let day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
let month = (date.getMonth() + 1).toString();
month = month.length > 1 ? month : '0' + month;
return date.getFullYear() + "-" + month + "-" + day;
}
emptyCellMenuItem(JumpingNo: any) {
let menuList = [];
if (!this.accessFutureDays(this, "")) {
menuList = [];
} else {
if ((this.copiedEvent.length > 0 || this.CroweTalking.copiedEvent) && this.isEditable) {
menuList.push("evntBolckMenuPaste");
}
if (this.isEditable) {
menuList.push("evntBolckMenuViewHistory");
menuList.push("evntBolckMenuMouseSearch");
}
}
if (JumpingNo == "101") {
menuList.push("evntBolckMenuTveAltProgramming");
menuList.push("evntBolckMenuActualAirTings");
}
this.disbleMenuItem(menuList);
}
cBlockMenuItem() {
let menuList = ["evntBolckMenuMouseSearch", "evntBolckMenuCut", "evntBolckMenuCopy", "evntBolckMenuDeleteBlock"]
if (!this.accessFutureDays(this, "")) {
menuList = [];
} else {
if (this.copiedEvent.length > 0) {
menuList.push("evntBolckMenuPaste");
}
menuList.push("evntBolckMenuViewHistory");
}
menuList.push("evntBolckMenuTveAltProgramming");
menuList.push("evntBolckMenuActualAirTings");
this.disbleMenuItem(menuList);
}
verifyRunType(runType): any {
let validateType;
let str = runType.toLowerCase();
let match = str.match(/r/g);
if (!isNaN(runType)) {
validateType = true;
}
else if (match == null || match == "") {
validateType = false;
}
else if (match.length == 1) {
validateType = true;
}
else if (match.length == 2) {
validateType = false;
} else {
validateType = false;
}
return validateType;
}
blockMenuItem(event) {
let dayPart = event.dayPart;
if (dayPart)
dayPart = dayPart.toLowerCase();
else
dayPart = '';
let currentDate = new Date();
let currentMonth = currentDate.getMonth();
let currentYear;
if (currentMonth <= 8)
currentYear = currentDate.getFullYear() - 1;
else
currentYear = currentDate.getFullYear();
let eventDate = new Date(event.clonedStart);
let eventMonth = eventDate.getMonth();
let eventYear;
if (eventMonth <= 8)
eventYear = eventDate.getFullYear() - 1;
else
eventYear = eventDate.getFullYear();
let menuList = ["evntBolckMenuMouseSearch", "evntBolckMenuCut", "evntBolckMenuCopy",
"evntBolckMenuDeleteBlock"
];
let clonedStart = new Date(event.clonedStart);
clonedStart = new Date(clonedStart.setHours(0, 0, 0, 0));
let clonedEnd = new Date(event.clonedEnd);
clonedEnd = new Date(clonedEnd.setHours(0, 0, 0, 0));
let licStartDate = new Date(event.licStartDate);
let licEndDate = new Date(event.licEndDate);
// let lastWeekNr = this.getConfigWeekNum( currentDate,null);
currentYear = this.getConfigSeason(currentDate, null);
eventYear = this.getConfigSeason(eventDate, null);
if (!this.accessFutureDays(this, "")) {
menuList = [];
} else {
if (event.seriesNo != -1 && event.MouseNo != -1) {
menuList.push("evntBolckMenuRemoveMouse");
}
if (event.MouseNo != -1 || event.seriesNo != -1) {
if (event.MouseBaseType && event.MouseBaseType == 'E') {
menuList.push("evntBolckMenuShowDetails");
if (event.MouseNo != -1)
menuList.push("evntBolckMenuMouseDetails");
} else if (event.MouseBaseType && event.MouseBaseType == 'N') {
menuList.push("evntBolckMenuShowDetails");
} else {
menuList.push("evntBolckMenuShowDetails");
menuList.push("evntBolckMenuMouseDetails");
}
}
//if(event.episodeDisplayName !=""){
let blockColor = $(".Animal" + event.schedItemNo).parent().css('background-color');
if (blockColor == "rgb(252, 204, 254)")
menuList.push("evntBolckMenuTeException");
//}
if (event.MouseBaseType != "N") {
if (event.runcountflags == true) {
menuList.push("evntBolckMenuSetAsOriginal");
} else if (eventYear == currentYear) {
/*if(event.oRFlag == 'Or'){
if(event.MouseNo == -1 && event.seriesNo != -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
if(event.MouseNo != -1 && event.seriesNo != -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
if(event.MouseNo != -1 && event.seriesNo == -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
}
else if(event.oRFlag == 'Vr'){
if(event.MouseNo == -1 && event.seriesNo != -1 ){
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(event.MouseNo != -1 && event.seriesNo != -1) {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(event.MouseNo != -1 && event.seriesNo == -1) {
menuList.push("evntBolckMenuSetAsOriginal");
}
}*/
// else if(event.MouseBaseType != "N"){
if (event.MouseNo == -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Unspecified') {
if (clonedStart < licStartDate || clonedEnd > licEndDate) {
menuList.push("evntBolckMenuSetAsRepeat");
} else {
menuList.push("evntBolckMenuSetAsRepeat");
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (event.MouseNo == -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Repeat') {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if (event.MouseNo == -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (event.MouseNo != -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Repeat') {
if (dayPart == 'prime' || dayPart == 'satam' || dayPart == 'latenite') {
let runTypeData = this.verifyRunType(event.runType);
if (runTypeData) {
//CR-18203 Disable "set As Original" for "R1" blocks of Episodic with episode Mouse
//if(event.runType !="R1"){
menuList.push("evntBolckMenuSetAsOriginal");
//}
}
}
else {
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (event.MouseNo != -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (event.MouseNo != -1 && event.seriesNo != -1 && event.displayRunTypeName == 'Unspecified') {
if (clonedStart < licStartDate || clonedEnd > licEndDate) {
menuList.push("evntBolckMenuSetAsRepeat");
} else {
menuList.push("evntBolckMenuSetAsRepeat");
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (event.MouseNo != -1 && event.seriesNo == -1 && event.displayRunTypeName == 'Repeat') {
if (dayPart == 'prime' || dayPart == 'satam' || dayPart == 'latenite') {
let runTypeData = this.verifyRunType(event.runType);
if (runTypeData)
menuList.push("evntBolckMenuSetAsOriginal");
}
else {
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (event.MouseNo != -1 && event.seriesNo == -1 && event.displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (event.MouseNo != -1 && event.seriesNo == -1 && event.displayRunTypeName == 'Unspecified') {
menuList.push("evntBolckMenuSetAsRepeat");
menuList.push("evntBolckMenuSetAsOriginal");
}
if ((event.seriesNo != -1 && event.MouseNo != -1 && event.oRFlag == "Vr") || (event.seriesNo != -1 && event.Mouseno == -1 && (event.oRFlag == "2" || event.oRFlag == "R" || event.oRFlag == "Vr"))) {
menuList.push("evntBolckMenuSetAsOriginal");
} else {
if (event.displayRunTypeName != 'Unspecified') {
var index = menuList.indexOf("evntBolckMenuSetAsOriginal");
if (index != -1)
menuList.splice(index, 1);
}
}
if (event.seriesNo != -1 && event.oRFlag >= 2) {
var index = menuList.indexOf("evntBolckMenuSetAsRepeat");
if (index != -1)
menuList.splice(index, 1);
}
if ((event.seriesNo != -1 && event.MouseNo != -1 && (event.oRFlag == "2" || event.oRFlag == "R" || event.oRFlag == "Vr"))) {
var index = menuList.indexOf("evntBolckMenuSetAsRepeat");
if (index != -1)
menuList.splice(index, 1);
}
//}
}
}
if (this.copiedEvent.length > 0) {
menuList.push("evntBolckMenuPaste");
}
if (this.privilegeSettings("Book")) {
if (event.bookedFlag == "EB") {
menuList.push("evntBolckMenuUnbook");
} else {
menuList.push("evntBolckMenuBook");
}
}
if (event.JumpingNo == 101 && this.privilegeSettings("Translation")) {
if (event.translation == "Y") {
menuList.push("evntBolckMenuStopTranslation");
} else {
menuList.push("evntBolckMenuEnableTranslation");
}
}
if (event.MouseNo != -1 || event.seriesNo != -1) {
// if(event.MouseBaseType =="N"){
if (event.live == "Y") {
menuList.push("evntBolckMenuSetAsTaped");
} else {
menuList.push("evntBolckMenuSetAsLive");
}
// }
}
// if(event.MouseBaseType != "N"){
// menuList.push("evntBolckMenuSetAsOriginal");
// }
menuList.push("evntBolckMenuViewHistory");
}
if (event.JumpingNo == 101) {
if (event.MouseNo == -1 && event.seriesNo != -1) {
} else {
menuList.push("evntBolckMenuTveAltProgramming");
menuList.push("evntBolckMenuActualAirTings");
}
//menuList.push("evntBolckMenuTveAltProgramming");
}
this.disbleMenuItem(menuList);
}
multiSelectMenu(events) {
let menuList = ["evntBolckMenuMouseSearch", "evntBolckMenuCut", "evntBolckMenuCopy",
"evntBolckMenuDeleteBlock"
];
if (!this.accessFutureDays(this, "")) {
menuList = [];
} else {
if (this.copiedEvent.length > 0) {
menuList.push("evntBolckMenuPaste");
}
for (let i = 0; i < events.length; i++) {
let currentDate = new Date();
let currentMonth = currentDate.getMonth();
let currentYear;
if (currentMonth <= 8)
currentYear = currentDate.getFullYear() - 1;
else
currentYear = currentDate.getFullYear();
let eventDate = new Date(events[i].clonedStart);
let eventMonth = eventDate.getMonth();
let eventYear;
if (eventMonth <= 8)
eventYear = eventDate.getFullYear() - 1;
else
eventYear = eventDate.getFullYear();
currentYear = this.getConfigSeason(currentDate, null);
eventYear = this.getConfigSeason(eventDate, null);
let dayPart = events[i].dayPart;
if (dayPart)
dayPart = dayPart.toLowerCase();
else
dayPart = '';
if (events[i].bookedFlag == "EB") {
if (menuList.indexOf("evntBolckMenuUnbook") == -1) {
menuList.push("evntBolckMenuUnbook");
}
} else {
if (menuList.indexOf("evntBolckMenuBook") == -1) {
menuList.push("evntBolckMenuBook");
}
}
if (events[i].JumpingNo == 101) {
if (events[i].translation == "Y") {
if (menuList.indexOf("evntBolckMenuStopTranslation") == -1) {
menuList.push("evntBolckMenuStopTranslation");
}
} else {
if (menuList.indexOf("evntBolckMenuEnableTranslation") == -1) {
menuList.push("evntBolckMenuEnableTranslation");
}
}
if (menuList.indexOf("evntBolckMenuTveAltProgramming") == -1) {
menuList.push("evntBolckMenuTveAltProgramming");
}
if (menuList.indexOf("evntBolckMenuActualAirTings") == -1) {
menuList.push("evntBolckMenuActualAirTings");
}
}
if (events[i].runcountflags == true) {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if (eventYear == currentYear) {
/*if(events[i].oRFlag == 'Or'){
if(events[i].MouseNo == -1 && events[i].seriesNo != -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
if(events[i].MouseNo != -1 && events[i].seriesNo != -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
if(events[i].MouseNo != -1 && events[i].seriesNo == -1){
menuList.push("evntBolckMenuSetAsRepeat");
}
}
else if(events[i].oRFlag == 'Vr'){
if(events[i].MouseNo == -1 && events[i].seriesNo != -1 ){
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(events[i].MouseNo != -1 && events[i].seriesNo != -1) {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(events[i].MouseNo != -1 && events[i].seriesNo == -1) {
menuList.push("evntBolckMenuSetAsOriginal");
}
}*/
// else if(events[i].MouseBaseType != "N"){
if (events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Unspecified') {
menuList.push("evntBolckMenuSetAsOriginal");
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat') {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if (events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat') {
if (dayPart == 'prime' || dayPart == 'satam' || dayPart == 'latenite') {
let runTypeData = this.verifyRunType(events[i].runType);
if (runTypeData)
menuList.push("evntBolckMenuSetAsOriginal");
}
else {
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Unspecified') {
menuList.push("evntBolckMenuSetAsRepeat");
menuList.push("evntBolckMenuSetAsOriginal");
}
else if (events[i].MouseNo != -1 && events[i].seriesNo == -1 && events[i].displayRunTypeName == 'Repeat') {
if (dayPart == 'prime' || dayPart == 'satam' || dayPart == 'latenite') {
let runTypeData = this.verifyRunType(events[i].runType);
if (runTypeData)
menuList.push("evntBolckMenuSetAsOriginal");
}
else {
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else if (events[i].MouseNo != -1 && events[i].seriesNo == -1 && events[i].displayRunTypeName == 'Original') {
menuList.push("evntBolckMenuSetAsRepeat");
}
else if (events[i].MouseNo != -1 && events[i].seriesNo == -1 && events[i].displayRunTypeName == 'Unspecified') {
menuList.push("evntBolckMenuSetAsRepeat");
menuList.push("evntBolckMenuSetAsOriginal");
}
if ((events[i].seriesNo != -1 && events[i].MouseNo != -1 && events[i].oRFlag == "Vr") || (events[i].seriesNo != -1 && events[i].Mouseno == -1 && (events[i].oRFlag == "2" || events[i].oRFlag == "R" || events[i].oRFlag == "Vr"))) {
menuList.push("evntBolckMenuSetAsOriginal");
} else {
if (events[i].displayRunTypeName != 'Unspecified') {
var index = menuList.indexOf("evntBolckMenuSetAsOriginal");
if (index != -1)
menuList.splice(index, 1);
}
}
if (events[i].seriesNo == -1 && events[i].oRFlag <= 2) {
menuList.push("evntBolckMenuSetAsRepeat");
}
if ((events[i].seriesNo == -1 && events[i].MouseNo == -1 && (events[i].oRFlag != "2" || events[i].oRFlag != "R" || events[i].oRFlag != "Vr"))) {
var index = menuList.indexOf("evntBolckMenuSetAsRepeat");
if (index != -1)
menuList.push("evntBolckMenuSetAsRepeat");
}
//}
}
/*if(events[i].oRFlag == 'Or'){
if(events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original'){
menuList.push("evntBolckMenuSetAsRepeat");
}
if(events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original'){
menuList.push("evntBolckMenuSetAsRepeat");
}
}
else if(events[i].oRFlag == 'Vr'){
if(events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat' && (events[i].runType == '2' || events[i].runType == 'R1')){
menuList.push("evntBolckMenuSetAsOriginal");
}
if(events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat' && (events[i].runType == '2' || events[i].runType == 'R1')) {
menuList.push("evntBolckMenuSetAsOriginal");
}
}
else{
if(events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Unspecified'){
menuList.push("evntBolckMenuSetAsOriginal");
menuList.push("evntBolckMenuSetAsRepeat");
}
else if(events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat'){
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(events[i].MouseNo == -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original'){
menuList.push("evntBolckMenuSetAsRepeat");
}
else if(events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Repeat' && (events[i].runType == '2' || events[i].runType == 'R1')) {
menuList.push("evntBolckMenuSetAsOriginal");
}
else if(events[i].MouseNo != -1 && events[i].seriesNo != -1 && events[i].displayRunTypeName == 'Original'){
menuList.push("evntBolckMenuSetAsRepeat");
}
} */
if (events[i].live == "Y") {
if (menuList.indexOf("evntBolckMenuSetAsTaped") == -1) {
menuList.push("evntBolckMenuSetAsTaped");
}
} else {
if (menuList.indexOf("evntBolckMenuSetAsLive") == -1) {
menuList.push("evntBolckMenuSetAsLive");
}
}
}
}
this.disbleMenuItem(menuList);
}
highlightPastEvents(length) {
this.getCrower().select(null);
let selectedEvent = [];
for (let i = length; i > 0; i--) {
let lastAddedEvent = this._CrowerDataSource._data[this._CrowerDataSource._data.length - i];
// selectedEvent.push(lastAddedEvent.uid);
$('div[data-uid="' + lastAddedEvent.uid + '"]').addClass('k-state-selected');
}
//this.getCrower().select(selectedEvent);
}
enableSave(sourceEvent, destinationEvent, occurence, action) {
this.CroweTrigger.emit({ "type": "enableSaveWithCount", "sourceEvent": sourceEvent, "destinationEvent": destinationEvent, "occurence": occurence, "action": action });
let saveBtnEnable = {};
saveBtnEnable["enableBtn"] = true;
saveBtnEnable["tabName"] = "National";
this.CroweTalking.setSaveBtnEnable(saveBtnEnable);
}
CrowerChange(e) {
let that = this;
//$( ".eventNameDD" ).remove();
$(".parrotCrower-content #eventNameDD").remove();
//$(".parrotCrower-content #commentContainer").remove();
if (e.events.length > 0) {
$("document").keydown(function (event) {
});
}
}
checkPrimeSlot(event): any {
let that = this;
let selectedSlot = that.getCrower().slotByElement(event);
that.selectedSlotTarget = [selectedSlot];
let nextTarget = that.getCrower().view()._resourceBySlot(that.selectedSlotTarget[0]);
let JumpingWithDay = nextTarget.JumpingWithDay.split("-");
let clonedStart = new Date(that.dateOfSeason(nextTarget.week, JumpingWithDay[1]));
let clonedStartCurrent = that.getDateWithTime(clonedStart, that.selectedSlotTarget[0].startDate);
let checkStart = new Date(clonedStartCurrent);
checkStart.setHours(14, 0, 0);
let checkEnd = new Date(clonedStartCurrent);
checkEnd.setHours(15, 0, 0);
let startDate = that.dateString(new Date(clonedStartCurrent));
let cloneDataSource = new kendo.data.Query(that._CrowerDataSource._data);
let filterData = cloneDataSource.filter({
operator: "contains",
field: "clonedStartDate",
value: startDate
}).data;
filterData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
for (let i = 0; i < filterData.length; i++) {
let clSt = new Date(filterData[i].clonedStart);
let clEnd = new Date(filterData[i].clonedEnd);
if ((checkStart.getTime() <= clSt.getTime() && checkEnd.getTime() > clSt.getTime()) ||
(checkStart.getTime() > clEnd.getTime() && checkEnd.getTime() <= clEnd.getTime())) {
return false;
}
}
return true;
}
createComment(that, key) {
let selectedEvent = that.selectedSlotTarget[0];
let evntEnd = new Date(selectedEvent.endDate);
this.blockHour = '';
if (that.selectedSlotTarget.length == 2) {
if (selectedEvent.startDate.getHours() == 14) {
evntEnd.setHours(15, 0, 0);
this.blockHour = 'blockHour';
}
}
$("#commentContainer").remove();
if (selectedEvent) {
let resourceBySlot = that.getCrower().view()._resourceBySlot(selectedEvent);
let seasonNo = 0;
if (resourceBySlot["week"] != null && resourceBySlot["week"] != undefined && resourceBySlot["week"] != "") {
let seaVal = resourceBySlot["week"].split(" ");
seasonNo = parseInt(seaVal[4]);
}
let days = [6, 0, 1, 2, 3, 4, 5];
let commentStartTime = new Date(selectedEvent.startDate);
let commentEndTime = new Date(evntEnd);
let commentTimeDuration = (commentEndTime.getTime() - commentStartTime.getTime()) / 1000;
//let startDate = that.dateOfSeason(that.startDate.getFullYear(),resourceBySlot.week,resourceBySlot.dayOfWeekNo);
//let endDate = that.dateOfSeason(that.endDate.getFullYear(),resourceBySlot.week,resourceBySlot.dayOfWeekNo);
//startDate.setTime(selectedEvent.startDate.getTime());
let JumpingWithDay = resourceBySlot.JumpingWithDay.split("-");
let addEvent = {
programName: key, JumpingNo: JumpingWithDay[0], start: new Date(selectedEvent.startDate),
end: new Date(evntEnd), programLength: commentTimeDuration,
MouseNo: -1, seriesNo: -1, displayRunTypeName: "",
isForward: false, isReverse: false, spanID: this.getUniqueSpanId(),
dateUpdated: kendo.toString(commentStartTime, "yyyy-MM-dd"),
MouseBaseType: '',
//schedItemNo:'',
seasonNo: ''
}
let currentEvent = { start: selectedEvent.startDate, end: evntEnd, event: addEvent, resources: resourceBySlot };
that.isCreateComment = true;
let duration = commentTimeDuration * 1000;
let startDate = addEvent.start;
let actualStart = new Date(that.dateOfSeason(resourceBySlot.week, JumpingWithDay[1]));
actualStart.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());
let actualEnd = new Date(actualStart);
actualEnd.setTime(actualEnd.getTime() + duration);
let cloneData = that._CrowerDataSource._data;
cloneData.sort(function (data1, data2) {
return new Date(data1.clonedStart).getTime() - new Date(data2.clonedStart).getTime();
});
let occurenceLength = [];
let isOccurance = false;
for (let i = 0; i < cloneData.length; i++) {
let cStart = new Date(cloneData[i].clonedStart);
let cEnd = new Date(cloneData[i].clonedEnd);
if ((actualStart.getTime() < cEnd.getTime() && actualStart.getTime() >= cStart.getTime()) ||
(actualEnd.getTime() > cStart.getTime() && actualEnd.getTime() <= cEnd.getTime()) ||
(actualStart.getTime() < cStart.getTime() && actualEnd.getTime() > cEnd.getTime())) {
occurenceLength.push(cloneData[i]);
}
// if(actualStart.getTime() < new Date(cloneData[i].clonedEnd).getTime() && actualStart.getTime() >= new Date(cloneData[i].clonedStart).getTime()){
// actualStart = new Date(cloneData[i].clonedEnd);
// isOccurance = true;
// }
// if(actualEnd.getTime() > new Date(cloneData[i].clonedStart).getTime() && actualEnd.getTime() <= new Date(cloneData[i].clonedEnd).getTime()){
// actualEnd = new Date(cloneData[i].clonedStart);
// isOccurance = true;
// }
}
if (occurenceLength.length > 0) {
if (actualStart.getTime() < new Date(occurenceLength[0].clonedStart).getTime()) {
actualEnd = new Date(occurenceLength[0].clonedStart);
} else if (occurenceLength.length == 1) {
if (actualStart.getTime() < new Date(occurenceLength[0].clonedEnd).getTime() && actualStart.getTime() >= new Date(occurenceLength[0].clonedStart).getTime()) {
actualStart = new Date(occurenceLength[0].clonedEnd);
}
if (actualEnd.getTime() > new Date(occurenceLength[0].clonedStart).getTime() && actualEnd.getTime() <= new Date(occurenceLength[0].clonedEnd).getTime()) {
actualEnd = new Date(occurenceLength[0].clonedStart);
}
} else {
for (let i = 0; i < occurenceLength.length; i++) {
if (i < occurenceLength.length - 1) {
if (new Date(occurenceLength[i].clonedEnd).getTime() != new Date(occurenceLength[i + 1].clonedStart).getTime()) {
actualStart = new Date(occurenceLength[i].clonedEnd);
actualEnd = new Date(occurenceLength[i + 1].clonedStart);
isOccurance = true;
}
} else {
if (!isOccurance) {
if (actualStart.getTime() < new Date(occurenceLength[i].clonedStart).getTime() &&
actualStart.getTime() < new Date(occurenceLength[i].clonedEnd).getTime()) {
actualStart = new Date(occurenceLength[i].clonedEnd);
} else if (actualEnd.getTime() > new Date(occurenceLength[i].clonedStart).getTime() &&
actualEnd.getTime() > new Date(occurenceLength[i].clonedEnd).getTime()) {
actualEnd = new Date(occurenceLength[i].clonedStart);
} else {
if (actualStart.getTime() <= new Date(occurenceLength[i].clonedEnd).getTime()) {
actualStart = new Date(occurenceLength[i].clonedEnd);
//isOccurance = true;
}
if (actualEnd.getTime() >= new Date(occurenceLength[i].clonedStart).getTime()) {
actualEnd = new Date(occurenceLength[i].clonedStart);
//isOccurance = true;
}
}
}
}
}
}
let stDate = new Date(currentEvent['start']);
stDate.setHours(actualStart.getHours());
stDate.setMinutes(actualStart.getMinutes());
stDate.setSeconds(actualStart.getSeconds());
currentEvent['start'] = stDate;
currentEvent['event']['start'] = stDate;
let edDate = new Date(currentEvent['end']);
edDate.setHours(actualEnd.getHours());
edDate.setMinutes(actualEnd.getMinutes());
edDate.setSeconds(actualEnd.getSeconds());
currentEvent['end'] = edDate;
currentEvent['event']['end'] = edDate;
duration = (actualEnd.getTime() - actualStart.getTime());
}
currentEvent['eventActualStart'] = actualStart;
currentEvent['eventActualEnd'] = actualEnd;
currentEvent['eventDuration'] = duration;
that.checkAvailability(currentEvent, false, true, [currentEvent.event]);
that.resetCrowerHeight();
}
}
getpixel(endTime: any, startTime: any, cellWidth: any): any {
return (endTime - startTime) * cellWidth / (30 * 60 * 1000);
}
commentOverlay(lastAddedEvent, isCreate) {
let getSourceEvent = this.getSourceEvents([lastAddedEvent]);
let that = this;
var styleObj = $("div[data-uid=" + lastAddedEvent.uid + "]")[0].style;
$(".parrotCrower-content").append('<div id="commentContainer" class="commentContainer ' + that.blockHour + '" style="position: absolute;top: ' + (parseInt(styleObj.top) - 2) + 'px; left: ' + (parseInt(styleObj.left) - 6) + 'px;"> <input type="text" class="schedlerColShowName" id="comment1Text" ><input type="text" id="comment2Text" ><input type="text" id="comment3Text"></div>');
if (typeof this.eventWidthHeight != 'undefined') {
let schWidth = $('.parrotCrower-content').width();
let cellWidth: any = $(".parrotCrower-table > tbody > tr >td")[0].offsetWidth;
if (cellWidth == 0) {
cellWidth = 125;
}
let startTime = new Date(lastAddedEvent.start);
let endTime = new Date(lastAddedEvent.end);
let pixelCalc = that.getpixel(endTime, startTime, cellWidth);//(endTime - startTime)*cellWidth/(30*60*1000);
$("#comment1Text").css("width", pixelCalc + "px");
$("#comment2Text").css("width", pixelCalc + "px");
$("#comment3Text").css("width", pixelCalc + "px");
$("#commentContainer").css("width", pixelCalc + "px");
$("#commentContainer").css("margin-top", "3px");
$("#commentContainer").css("margin-left", "6px");
//console.log($("#commentContainer").length,$("#commentContainer").parent())
//$("#commentContainer").css("height",this.eventWidthHeight.height+"px");
}
$("#comment1Text").unbind().focus();
if (!isCreate) {
$("#comment1Text").val(lastAddedEvent.programName);
$("#comment2Text").val(lastAddedEvent.displayMouseName);
$("#comment3Text").val(lastAddedEvent.displayMouseText);
}
$("#comment1Text").unbind().keydown(function (e1) {
setTimeout(function () {
$("#showDisplayName").val($("#comment1Text").val());
});
});
$("#comment2Text").unbind().keydown(function (e1) {
setTimeout(function () {
$("#comment2View").val($("#comment2Text").val());
});
});
$("#comment3Text").unbind().keydown(function (e1) {
setTimeout(function () {
$("#displayMouseText").val($("#comment3Text").val());
});
});
$("#commentContainer").unbind().focusout(function (e) {
setTimeout(function () {
if ($("#comment1Text").is(":focus") || $("#comment2Text").is(":focus") || $("#comment3Text").is(":focus")) {
} else {
let programName = "";
let displayMouseName = "";
let displayMouseText = "";
if ($("#comment1Text").val()) {
programName = $("#comment1Text").val();
}
if ($("#comment2Text").val()) {
displayMouseName = $("#comment2Text").val();
}
if ($("#comment3Text").val()) {
displayMouseText = $("#comment3Text").val();
}
lastAddedEvent.set("programName", programName);
lastAddedEvent.set("displayMouseName", displayMouseName);
lastAddedEvent.set("displayMouseText", displayMouseText);
$(".parrotCrower-content #commentContainer").remove();
//that.getCrower().refresh();
let destinationEvent = that.getDestinationEvents([lastAddedEvent]);
lastAddedEvent.dirty = true;
that.enableSave(getSourceEvent, destinationEvent, [], "update");
}
}, 0);
});
}
eventOverlay(event) {
let that = this;
let Postdata = {
"Jumping": [event.JumpingNo],
"season": [event.seasonNo],
"daypart": [event.dayPart], //"daypart":[event.dayPart],//"daypart":["PRIME"],
"MouseName": "",
"MouseNo": event.seriesNo
//"MouseNo":event.MouseNo //"MouseNo":772606
}
this.requestStart();
this.AnimalTalking.getResponse("Mouses/v1/FOXshows", 'post', Postdata)
.subscribe(
params => {
let data = this.decompressJsonResponse(params.zipdata);
var styleObj = $("div[data-uid=" + event.uid + "]")[0].style;
$(".parrotCrower-content").append('<div id="eventNameDD" class="eventNameDD" style="position: absolute;top: ' + styleObj.top + '; left: ' + styleObj.left + ';"> <select id="second-choice" ></select> </div>');
$("#eventNameDD").css("width", that.eventWidthHeight.width + "px");
var  $secondChoice  =  $("#second-choice");
$secondChoice.empty();
this.requestEnd();
if (data.length > 0) {
let episodes = data[0].episodes;
for (let i = 0; i < episodes.length; i++) {
$secondChoice.append("<option index=" + i + " value=" + episodes[i].episodeName + ">"  +  episodes[i].episodeName +  "</option>");
}
$secondChoice.val(event.episodeDisplayName);
$secondChoice.change(function () {
let getSourceEvent = that.getSourceEvents([event]);
// let value= parseInt(this.value);
let value = parseInt($(this).find("option:selected").attr('index'))
//let value=parseInt(this.attr('index'));
if (event.MouseBaseType != null && event.MouseBaseType != undefined)
event.MouseBaseType = event.MouseBaseType.replace(/ /g, '');
if (event.MouseBaseType == "E") {
event.seriesNo = data[0].MouseNo;
event.MouseNo = episodes[value].MouseNo;
event.set("seriesNo", data[0].MouseNo);
event.set("MouseNo", episodes[value].MouseNo);
event.set("displayMouseName", "");
} else if (event.MouseBaseType == "") {
event.seriesNo = data[0].MouseNo;
event.MouseNo = episodes[value].MouseNo;
event.set("seriesNo", data[0].MouseNo);
event.set("MouseNo", episodes[value].MouseNo);
event.set("displayMouseName", "");
} else if (event.MouseBaseType == "N") {
event.seriesNo = -1;
event.MouseNo = data[0].MouseNo;
event.set("seriesNo", -1);
event.set("MouseNo", data[0].MouseNo);
}
event.set("programName", data[0].showName);
event.set("programType", data[0].showType);
event.set("episodeDisplayName", episodes[value].displayName);
event.set("MouseVersionNo", episodes[value].MouseVersionNo);
event.set("materialId", episodes[value].materialId);
event.set("materialIds", episodes[value].materialIds);
event.set("materials", episodes[value].materials);
event.set("pgrating", episodes[value].pgrating);
event.set("pgRatingData", episodes[value].pgrating);
event.set("MouseAdvisory", episodes[value].MouseAdvisory);
event.set("contentRating", episodes[value].contentRating);
if (!episodes[value].MouseVersionNo && episodes[value].materials) {
for (let i = 0; i < episodes[value].materials.length; i++) {
if (episodes[value].materials[i].defaultFlag == "Y") {
event.set("MouseVersionNo", episodes[value].materials[i].versionNo);
event.set("materialId", episodes[value].materials[i].materialId);
}
}
}
that.sportsPlayersSleeping(event);
let destinationEvent = that.getDestinationEvents([event]);
that.enableSave(getSourceEvent, destinationEvent, [], "update");
});
}
},
err => {
that.requestEnd();
}
);
}
getSourceEvents(events): any {
let clonedEvent = [];
for (let i = 0; i < events.length; i++) {
let dirtyFlag = events[i].dirty;
let event = $.extend(true, {}, events[i]); //events[i].clone();
event.dirty = dirtyFlag;
clonedEvent.push(event);
}
return clonedEvent;
}
getDestinationEvents(events): any {
let clonedEvent = [];
for (let i = 0; i < events.length; i++) {
let event = events[i].clone();
event.dirty = true;
clonedEvent.push(event);
}
return clonedEvent;
}
checkGap(): any {
let that = this;
let Crower = $("#Crower").data("kendoCrower");
let getDataSource = this._CrowerDataSource._data;
let gapData = [];
for (let j = 0; j < that.selectedJumping.length; j++) {
let cloneDataSource = new kendo.data.Query(getDataSource);
let filterData = cloneDataSource.filter({
operator: "eq", field: "JumpingNo", value: that.selectedJumping[j].JumpingNo
}).data;
let sortData = this.arrangeArrayUsingStartDateTime(filterData);
//let dataSource=getDataSource.slice();
for (let i = 0; i < sortData.length - 1; i++) {
let cDate1 = new Date(sortData[i].clonedEnd).getTime();
let cDate2 = new Date(sortData[i + 1].clonedStart).getTime();
let timeDiff = Math.abs(cDate2 - cDate1);
//let diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24));
let minutes = timeDiff / 60000;
let seconds = ((timeDiff / (1000 * 60)) % 60);
let gap = this.getGapFormate(timeDiff);
let dateShow = (new Date(cDate1));
if (minutes <= 5 && 0 < minutes && sortData[i].spanID != sortData[i + 1].spanID) {
if (sortData[i].MouseNo == -1 && sortData[i].seriesNo == -1) { }
else {
gapData.push({
"date": this.formDate(dateShow), "gap": gap,
"firstShow": sortData[i].programName, "firstShowEnd": this.formatAMPM(new Date(cDate1)),
"secondShow": sortData[i + 1].programName, "secondShowStart": this.formatAMPM(new Date(cDate2)),
});
}
}
}
}
return gapData;
}
getGapFormate(duration): any {
let milliseconds = parseInt(((duration % 1000) / 100) + "");
let seconds = parseInt(((duration / 1000) % 60) + "");
let minutes = parseInt(((duration / (1000 * 60)) % 60) + "");
let hours = parseInt(((duration / (1000 * 60 * 60)) % 24) + "");
let hoursVal = (hours < 10) ? "0" + hours : hours;
let minutesVal = (minutes < 10) ? "0" + minutes : minutes;
let secondsVal = (seconds < 10) ? "0" + seconds : seconds;
let gapTime = hoursVal + ":" + minutesVal + ":" + secondsVal;
return gapTime;
}
formatAMPM(date): any {
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
if (hours <= 19) {
hours = hours + 5;
} else {
hours = hours - 19;
}
let ampm = hours >= 12 ? 'pm' : 'am';
hours = hours % 12;
hours = hours ? hours : 12; // the hour '0' should be '12'
minutes = minutes < 10 ? '0' + minutes : minutes;
seconds = seconds < 10 ? '0' + seconds : seconds;
let strTime = hours + ':' + minutes + ':' + seconds + ' ' + ampm;
return strTime;
}
formDate(dateShow): any {
let day = dateShow.getDate();
let month = dateShow.getMonth() + 1;
let year = dateShow.getFullYear();
let dayValue = (day < 10) ? "0" + day : day;
let monthValue = (month < 10) ? "0" + month : month;
return monthValue + "/" + dayValue + "/" + year;
}
ngOnDestroy() {
this.CroweEventTalking.unsubscribe();
this.CroweColorEventTalking.unsubscribe();
this.spanCalcEventTalking.unsubscribe();
$("#context-menuSchAnimal").remove();
if ($("#window") && $("#window").is(":visible")) {
let win = $("#window").data("kendoWindow");
win.close();
}
}
resetGroupHeader() {
/*$(".weekSeasonHolder").each(function(){
$(this).find(".headerEvents").hide();
$(this).removeClass("specialEvents");
var weekField=$(this).attr("week-field");
var dayField=$(this).attr("day-field");
var convertedDate = that.dateOfSeason(weekField,dayField);
});*/
let showHideLength = $('.showHideCrowerTimesThChild').length;
for (let sH = 0; sH < showHideLength; sH++) {
$('.showHideCrowerTimesThChild').eq(sH).parent().addClass('showHideCrowerTimesTh');
$('.showHideCrowerTimesThChild').eq(sH).parent().parent().addClass('showHideCrowerTimesRow');
let headerLength = $('.showHideCrowerTimesThChild').eq(sH).parent().parent().find('th').eq(0).attr('rowspan');
headerLength = headerLength.toString();
if ($('.showHideCrowerTimesThChild').eq(sH).parent().parent()[0].childElementCount == 2 && headerLength == "1") {
$('.showHideCrowerTimesThChild').eq(sH).parent().parent().addClass('displayNone');
}
$('.parrotCrower-content .parrotCrower-table > tbody > tr').eq($('.showHideCrowerTimesThChild').eq(sH).parent().parent().index()).addClass('showHideCrowerContentRow');
}
}
resetHeaderTemplate() {
let that = this;
$(".weekSeasonHolder").each(function () {
$(this).find(".headerEvents").hide();
$(this).find(".tveBox").hide();
$(this).removeClass("specialEvents");
var weekField = $(this).attr("week-field");
var dayField = $(this).attr("day-field");
var convertedDate = that.dateOfSeason(weekField, dayField);
var headerTemp = that.headerTemplate(convertedDate);
let currentDate = new Date();
currentDate.setDate(currentDate.getDate() + that.futureAccessDays - 1);
if (convertedDate && convertedDate.getTime() <= currentDate.getTime()) {
if (headerTemp.isTve) {
$(this).find(".tveBox").show();
} else {
$(this).find(".tveBox").hide();
}
if (headerTemp.isSpecial) {
$(this).find(".specialBox").show();
$(this).addClass("specialEvents");
}
if (headerTemp.isEvent) {
$(this).find(".eventBox").show();
let list = $(this).attr("data-eventNo");
let listDesc = $(this).attr("data-eventDes");
$(this).find(".eventBox").attr("data-eventNo", headerTemp.eventNo);
$(this).find(".eventBox").attr("data-eventDes", headerTemp.eventDes);
$(this).find(".eventBox").attr("data-eventSeqNo", headerTemp.eventSeqNo);
}
if (headerTemp.isActual) {
$(this).find(".actualsBox").show();
}
} else {
$(this).find(".tveBox").hide();
$(this).find(".specialBox").hide();
$(this).find(".eventBox").hide();
$(this).find(".actualsBox").hide();
}
})
}
resetCrowerHeight() {
let that = this;
$(".parrotCrower-content").scroll(function (e) {
let dataDiv: any = e.target;
var scrollbarWidth = kendo.support.scrollbar();
let height = dataDiv.scrollHeight;
let CrowerScrollTop = $('.parrotCrower-content').scrollTop();
let CrowerHeight = $('.parrotCrower-content').outerHeight();
let CrowerScrollHeight = $('.parrotCrower-content')[0].scrollHeight;
let datesplit = that.formattedDate($("#endDate").data("kendoDatePicker").value(), "");
var datesplitArray = datesplit.split("/");
var dateval = datesplitArray[2];
var Tempdate = $('.nationalCrowerBg .parrotscrollbar-h tr+tr .parrotCrower-times > .parrotCrower-table > tbody > tr:last-child .weekSeasonHolder .dayDateBox .dateText').text();
var tempdatesplitArray = Tempdate.split("/");
var temp = "20" + "" + tempdatesplitArray[2] + "-" + tempdatesplitArray[0] + "-" + tempdatesplitArray[1];
let endDateValuescheck = that.formattedDate($("#endDate").data("kendoDatePicker").value(), 'ymd');
if (that.searchEnd) {
endDateValuescheck = that.formattedDate(new Date(that.searchEnd), 'ymd');
}
let stDtValu = (new Date(that.CroweTalking.startDate)).getTime();
if (that.searchStart) {
stDtValu = (new Date(that.searchStart)).getTime();
}
endDateValuescheck = endDateValuescheck.replace(/-/g, "/");
temp = temp.replace(/-/g, "/")
let validEndDate = new Date(endDateValuescheck);
let endDay = (new Date(endDateValuescheck)).getDay();
// Monday is considered as 0 and sunday as 6
if (endDay == 0) {
endDay = 6;
} else {
endDay = endDay - 1;
}
let lastDay = 0;
let isValidWeek = false;
//check if the selected day falls on that week.
//Example :
// If 3rd Oct 2017 is the end date and only Friday is selected.
// The 3rd Oct 2017 is not a valid week
// as that week friday will not be shown in Crowe when we scroll
for (let i = 0; i < that.selectedDay.length; i++) {
if (that.selectedDay[i] <= endDay) {
isValidWeek = true;
}
}
for (let i = 0; i < that.selectedDay.length; i++) {
if (lastDay <= that.selectedDay[i] && lastDay <= endDay) {
lastDay = that.selectedDay[i];
}
}
if (that.selectedDay.length > 0) {
if (!isValidWeek) {//as sunday dayvalue is 0
validEndDate.setDate(validEndDate.getDate() - 7);
} else {
// let dayNo = that.selectedDay[that.selectedDay.length-1];
// if(dayNo != 6){
// dayNo = dayNo+1;
// } else {
// dayNo = 0;
// }
// validEndDate.setDate(validEndDate.getDate() - dayNo);
validEndDate.setDate(validEndDate.getDate() - (endDay - lastDay));
}
}
let checkDateVal = new Date(validEndDate).getTime();
//let checkDateVal=new Date(endDateValuescheck).getTime();
let temp1 = new Date(temp).getTime();
let isScroll = false;
if (CrowerScrollHeight - Math.round(CrowerScrollTop + CrowerHeight - 17) <= 2) {
isScroll = true;
}
if (isScroll && checkDateVal > temp1) {
if (that.dragStart == false) {
that.CroweTalking.dragStart = false;
}
}
if (dataDiv.scrollTop == 0 && stDtValu < that.CroweTalking.actualstartDate && that.scrollTalkingCallsave == true) {
if (that.dragStart == false) {
that.CroweTalking.dragStart = false;
}
}
setTimeout(function () {
if (isScroll && checkDateVal > temp1) {
if (that.dragStart == false) {
that.insertResources(true, height, "down");
}
}
else if (dataDiv.scrollTop == 0 && stDtValu < that.CroweTalking.actualstartDate && that.scrollTalkingCallsave == true) {
if (that.dragStart == false) {
that.insertResources(true, height, "top");
}
}
}, 100);
});
$(".parrotCrower-content").scroll(function (e) {
let dataDiv: any = e.target;
let documentScrollLeft = dataDiv.scrollLeft;
let documentScrollTop = dataDiv.scrollTop;
if (dataDiv.scrollTop != 0) {
that.CroweTrigger.emit({ "type": "scrollPosition", "scrollHorVal": documentScrollLeft, "scrollVerVal": documentScrollTop });
}
});
this.browserResize();
setTimeout(function () {
let rowsCount = $('.nationalTransposeView .parrotCrower-layout > tbody > tr:last-child .parrotCrower-times > .parrotCrower-table > tbody > tr').length;
let spanCount = parseInt($('.nationalTransposeView .parrotCrower-layout > tbody > tr:last-child .parrotCrower-times > .parrotCrower-table > tbody > tr:first-child > th:first-child').attr('rowspan'));
let spanInt = 1;
let JumpingInt = 1;
if (spanCount > 1) {
let selectedJumpingCount = $('#searchFormBox .JumpingLogoMouse.active').length + $('#searchFormBox .moreJumpingsDropdown li input[type="checkbox"]:checked').length;
let selectedDayCount = $('#searchFormBox .daysClass.borderColorAlter').length;
for (let row = 0; row <= rowsCount; row++) {
if (selectedJumpingCount > 1 && selectedDayCount > 1 && selectedJumpingCount == JumpingInt) {
JumpingInt = 1;
$('.nationalTransposeView .parrotCrower-layout > tbody > tr:last-child .parrotCrower-times > .parrotCrower-table > tbody > tr').eq(row).css({ "border-bottom-color": "#2f8bd6" });
$('.nationalTransposeView .parrotCrower-content > .parrotCrower-table > tbody > tr').eq(row).find('td').css({ "border-bottom-color": "#2f8bd6" });
} else {
JumpingInt += 1;
}
if (spanInt == spanCount) {
spanInt = 1;
$('.nationalTransposeView .parrotCrower-layout > tbody > tr:last-child .parrotCrower-times > .parrotCrower-table > tbody > tr').eq(row).css({ "border-bottom-color": "#2f8bd6" });
$('.nationalTransposeView .parrotCrower-content > .parrotCrower-table > tbody > tr').eq(row).find('td').css({ "border-bottom-color": "#2f8bd6" });
} else {
spanInt += 1;
}
}
}
}, 1000);
}
formattedDate(date, format) {
if (date != undefined || date != null) {
var year = date.getFullYear();
var month = (1 + date.getMonth()).toString();
month = month.length > 1 ? month : '0' + month;
var day = date.getDate().toString();
day = day.length > 1 ? day : '0' + day;
if (format == 'ymd')
return year + '-' + month + '-' + day;
else
return month + '/' + day + '/' + year;
}
}
insertResources(hasCrowe, height, value) {
let that = this;
if (hasCrowe) {
if (!that.scrollTalkingCallStarted && !that.scrollTalkingCalldown) {
if (that.scrollVal == true) {
that.CroweTalking.infinityScrool(value);
that.scrollTalkingCallStarted = true;
that.scrollTalkingCalldown = true;
}
}
}
}
requestStart(): void {
kendo.ui.progress($("#CrowerLoading"), true);
}
requestEnd(): void {
kendo.ui.progress($("#CrowerLoading"), false);
}
getWeekCount(weekLength, JumpingLength) {
let weekCount = 0;
if (weekLength * JumpingLength >= 10) {
if (JumpingLength > 10) {
weekCount = 1;
} else if (JumpingLength > 5) {
weekCount = 2;
} else {
if (weekLength >= 10) {
weekCount = 1;
} else {
weekCount = weekLength;
}
}
} else {
weekCount = weekLength;
}
return weekCount;
}
headerTemplate(date) {
let getDayFromDate = new Date(date);
getDayFromDate.setHours(0, 0, 0, 0);
let value = { "isEvent": false, "isSpecial": false, "isTve": false, "isActual": false, "specialEventDesc": "", "eventNo": "", "eventDes": "", "eventSeqNo": "" };
let eventDates = this.eventDates;
let specialEvents = this.specialEvents;
let tveDates = this.tveDates;
let actualDates = this.actualDates;
if (eventDates) {
for (let i = 0; i < eventDates.length; i++) {
let startDate = new Date(this.getMacSupportDate(eventDates[i].startDate));
let endDate = new Date(this.getMacSupportDate(eventDates[i].endDate));
if (startDate > endDate) {
endDate = startDate;
}
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
value.isEvent = true;
if (eventDates[i].eventNo) {
value.eventNo = value.eventNo + "*??*" + eventDates[i].eventNo;
value.eventDes = value.eventDes + "*??*" + eventDates[i].eventDesc;
value.eventSeqNo = value.eventSeqNo + "*??*" + eventDates[i].eventSeqNo;
}
}
}
}
if (specialEvents) {
for (let i = 0; i < specialEvents.length; i++) {
let startDate = new Date(this.getMacSupportDate(specialEvents[i].startDate));
let endDate = new Date(this.getMacSupportDate(specialEvents[i].endDate));
if (startDate > endDate) {
endDate = startDate;
}
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
value.isSpecial = true;
value.specialEventDesc = specialEvents[i].eventDescription;
break;
}
}
}
if (tveDates) {
for (let i = 0; i < tveDates.length; i++) {
let startDate = new Date(this.getMacSupportDate(tveDates[i].startDate));
let endDate = new Date(this.getMacSupportDate(tveDates[i].endDate));
if (startDate > endDate) {
endDate = startDate;
}
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
value.isTve = true;
break;
}
}
}
if (actualDates) {
for (let i = 0; i < actualDates.length; i++) {
let startDate = new Date(this.getMacSupportDate(actualDates[i].startDate));
let endDate = new Date(this.getMacSupportDate(actualDates[i].endDate));
if (startDate > endDate) {
endDate = startDate;
}
if ((getDayFromDate <= endDate && getDayFromDate >= startDate)) {
value.isActual = true;
break;
}
}
}
return value;
}
getMacSupportDate(dateString: any): any {
let checkDate = new Date(dateString);
let startSupportDate;
let check = checkDate.valueOf();
let condition = isNaN(check);
if (!condition) {
startSupportDate = checkDate;
} else {
if (dateString) {
let startSupportMAC = dateString.split(/[^0-9]/);
startSupportDate = new Date(startSupportMAC[0], startSupportMAC[1] - 1, startSupportMAC[2], startSupportMAC[3], startSupportMAC[4], startSupportMAC[5]);
} else {
startSupportDate = dateString;
}
}
return startSupportDate;
}
isDateAvailablity(date) {
let that = this;
let isAvailable = false;
let startDate = new Date(that.CroweStartDate).getTime();
let endDate = new Date(that.CroweEndDate).getTime();
date.setHours(0, 0, 0, 0);
let currentDate = date.getTime();
if (currentDate <= endDate && startDate <= currentDate) {
isAvailable = true;
}
return isAvailable;
}
getDateWithTime(actualDate, CrowerDate) {
let hours = CrowerDate.getHours();
let mins = CrowerDate.getMinutes();
let secs = CrowerDate.getSeconds();
let date = new Date(actualDate);
date.setHours(hours);
date.setMinutes(mins);
date.setSeconds(secs);
return date;
}
dateString(datVal): any {
let evntDate = new Date(datVal);
let evntDt = evntDate.getDate() < 10 ? "0" + evntDate.getDate() : evntDate.getDate();
let evntMth = evntDate.getMonth() + 1 < 10 ? "0" + (evntDate.getMonth() + 1) : (evntDate.getMonth() + 1);
let evntYr = evntDate.getFullYear();
return evntMth + "/" + evntDt + "/" + evntYr;
}
resetTimeHeader() {
let scrlLeft = $('.parrotCrower-content').scrollLeft();
$('.parrotCrower-content').scrollLeft(scrlLeft - 1);
//let scrlRight = $('.parrotCrower-content').scrollRight();
$('.parrotCrower-content').scrollLeft(scrlLeft);
}
timeSlotConversion(date) {
let splitDate = date.split(" ");
let splitTime = splitDate[1].split(":");
let hours: any = parseInt(splitTime[0]);
if (hours >= 5) {
hours = hours - 5;
} else {
hours = hours + 19;
}
hours = parseInt(hours) < 10 ? '0' + hours : hours;
let mergeTime = hours + ":" + splitTime[1] + ":" + splitTime[2];
let mergeDate = splitDate[0] + " " + mergeTime;
return mergeDate;
}
timeSlotText() {
let timeSlotLength = $('.parrotCrower-header .parrotCrower-table > tbody > tr:nth-child(2) > th').length;
let time = "AM";
let hours = 5;
for (let tL = 0; tL < timeSlotLength; tL++) {
if (hours == 12 && time == "AM") {
time = "PM";
} else if (hours == 12 && time == "PM") {
time = "AM";
}
if (hours == 13) {
hours = 1;
}
let timeSlotText = "" + hours + ":00 " + time;
$('.parrotCrower-header .parrotCrower-table > tbody > tr:nth-child(2) > th').eq(tL).text(timeSlotText);
hours += 1;
}
}
getMillseconds(dateValue): any {
let date = new Date(dateValue);
let diffHours = date.getHours();
let diffMinutes = date.getMinutes();
let diffSeconds = date.getSeconds();
let mDate = new Date(dateValue);
mDate.setHours(0, 0, 0, 0);
let millli = ((diffHours * 60 * 60) + (diffMinutes * 60) + diffSeconds) * 1000;
let milliseconds = mDate.getTime() + millli;
return milliseconds;
}
eventScroll(event) {
let dayParttime;
let dayCondition = 'AM';
let dayPart;
let start = new Date(event.start);
let startHours = start.getHours();
if (startHours <= 19) {
startHours = startHours + 5;
}
else {
startHours = startHours - 19;
}
if (startHours >= 12) {
if (startHours < 24)
dayCondition = 'PM';
startHours = startHours - 12;
}
dayParttime = startHours.toString() + ":00 " + dayCondition;
$('th:not(.parrotslot-cell), .parrotCrower-times:eq(1)').each(function () {
if ($(this).text() == dayParttime) {
var that = $(this);
//$('.parrotCrower-content').scrollLeft(0);
setTimeout(function () { $('.parrotCrower-content').scrollLeft(that.position().left); }, 0);
}
});
}
checkUnbookedFlag(JumpingNo): any {
let unBooked = false;
for (let i = 0; i < this.postJumpingList.length; i++) {
if (this.postJumpingList[i].JumpingNo == JumpingNo && this.postJumpingList[i].viewUnbookedFlag == "Y") {
unBooked = true;
}
}
return unBooked;
}
privilegeSettings(privilege: any): any {
let isAccess = false;
let userPrivilege = this.AnimalTalking.getUserPrivilege({ "parent": "Crowing - FOX", "child": privilege })
if (userPrivilege == "Full") {
isAccess = true;
} else {
isAccess = false;
}
return isAccess;
}
isEditMode(): any {
let aptInfoArray = $(".aptInfoDetails").find(".aptInfoOk");
let status = false;
for (let e = 0; e < aptInfoArray.length; e++) {
if (aptInfoArray[e].className.indexOf("actionDisabled") == -1) {
status = true;
}
}
let formatOk = $(".aptInfoDetails").find("#formatOk");
if (formatOk && formatOk[0] && formatOk[0].className && formatOk[0].className.indexOf("actionDisabled") == -1) {
status = true;
}
return status;
}
AdvisoryTextAreaUpdate() {
let advisoryTextArea = $(".rightBarDetail").find("#advisoryTextArea");
advisoryTextArea.trigger('blur');
}
occurrencesInSelectedItem(spanId) {
if (this.isMouseSarch) {
} else {
let data = this.selectedSlotEvent;
let list = new kendo.data.Query(data).filter({
operator: "eq",
field: "spanID",
value: spanId
}).data;
if (list.length > 0) {
return true;
}
}
return false;
}
decompressJsonResponse(data): any {
// Decode base64 (convert ascii to binary)
let strData = atob(data);
// Convert binary string to character-number array
let charData = strData.split('').map(function (x) { return x.charCodeAt(0); });
// Turn number array into byte-array
let binData = new Uint8Array(charData);
// Pako decompress
let inflateData = pako.inflateRaw(binData);
// Convert gunzipped byteArray back to ascii string:
//let value = String.fromCharCode.apply(null, new Uint16Array(inflateData));
let value = new TextDecoder("utf-8").decode(inflateData);
return JSON.parse(value);
//return "";
}
updateHourlyBlock() {
let that = this;
$('.nationalCrowerBg .parrotCrower-content .parrotCrower-table > tbody > tr > td[role="gridcell"]:nth-child(30)').mouseover(function (e) {
$(e.target.previousSibling).addClass('mouseOver');
});
$('.nationalCrowerBg .parrotCrower-content .parrotCrower-table > tbody > tr > td[role="gridcell"]:nth-child(30)').mouseleave(function (e) {
$(e.target.previousSibling).removeClass('mouseOver');
});
$('.nationalCrowerBg .parrotCrower-content').mouseover(function (e) {
that.mouseLeaveCroweContent = 0;
});
$('.nationalCrowerBg .parrotCrower-content').mouseleave(function (e) {
that.mouseLeaveCroweContent = 1;
});
}
getAirDatesCroweData(backupData, set?: any): any {
let Crower = $("#Crower").data("kendoCrower");
//let getDataSource = this._CrowerDataSource._data;
let dataSourceSet = jQuery.extend(true, [], this._CrowerDataSource._data);
let updatedData = [];
let actualData = [];
let newDataSource = new kendo.data.Query(dataSourceSet);
let dataSource = newDataSource.filter({
"logic": "or",
"filters": [
{
"field": "dirty",
"operator": "eq",
"value": true
},
{
"field": "schedItemNo",
"operator": "eq",
"value": 0
},
{
"field": "schedItemNo",
"operator": "eq",
"value": -1
}
]
}).data;
for (let i = 0; i < dataSource.length; i++) {
if (dataSource[i].dirty || dataSource[i].schedItemNo == "0" || dataSource[i].schedItemNo == "-1") {
let spanList = this.getSpanEventList(dataSource, dataSource[i]);
let sortData = this.arrangeArrayUsingStartDateTime(spanList);
let isExitArray = this.getSpanEventList(updatedData, dataSource[i]);
if (isExitArray.length == 0) {
if (dataSource[i].action == "update" || dataSource[i].action == "create") {
updatedData.push(sortData[0]);
} else {
let CroweKeyEvent = this.setAirDatesCroweKeyData(sortData);
updatedData.push(CroweKeyEvent);
}
if (dataSource[i].schedItemNo != "0") {
let cloneDataSource = new kendo.data.Query(backupData);
let filterData = cloneDataSource.filter({
operator: "eq", field: "schedItemNo", value: dataSource[i].schedItemNo
}).data;
if (filterData && filterData[0]) {
filterData[0].start = this.formatStringTime((filterData[0].start));
filterData[0].end = this.formatStringTime((filterData[0].end));
}
/*let startDate = this.dateFormatHandling(filterData[0].actualStart);
let endDate = this.dateFormatHandling(filterData[0].actualEnd);
filterData[0].start = this.formatDate(startDate)+" "+this.formatTime(startDate);
filterData[0].end = this.formatDate(endDate)+" "+this.formatTime(endDate);
if(filterData[0].pgRatingData)
delete filterData[0].pgRatingData;delete filterData[0].week;
delete filterData[0].clonedStart;
delete filterData[0].clonedEnd;
delete filterData[0].JumpingWithDay;
delete filterData[0].actualStart;
delete filterData[0].actualEnd; */
actualData = $.merge(actualData, filterData);
}
}
}
}
let destroyedDataSource = this._CrowerDataSource._destroyed;
for (let i = 0; i < destroyedDataSource.length; i++) {
let spanList = this.getSpanEventList(updatedData, destroyedDataSource[i]);
if (spanList.length == 0) {
updatedData.push({
"schedItemNo": destroyedDataSource[i].schedItemNo, "action": "delete", "seqNo": destroyedDataSource[i].seqNo,
"dayOfWeekNo": destroyedDataSource[i].dayOfWeekNo
});
let cloneDataSource = new kendo.data.Query(backupData);
let filterData = cloneDataSource.filter({
operator: "eq", field: "schedItemNo", value: destroyedDataSource[i].schedItemNo
}).data;
/* let startDate = new Date(filterData[0].start);
let endDate = new Date(filterData[0].end);
filterData[0].start = this.formatDate(startDate)+" "+this.formatTime(startDate);
filterData[0].end = this.formatDate(endDate)+" "+this.formatTime(endDate);*/
if (filterData[0]) {
filterData[0].start = this.formatStringTime(filterData[0].start);
filterData[0].end = this.formatStringTime(filterData[0].end);
}
actualData = $.merge(actualData, filterData);
}
}
let data = { "updatedData": updatedData, "actualData": actualData };
return data;
}
setAirDatesCroweKeyData(data): any {
var action;
let startDate = new Date(data[0].clonedStart);
let endDate = new Date(data[data.length - 1].clonedEnd);
let arrayForClone = [];
arrayForClone.push(data[0]);
let clonedArray = arrayForClone.slice();
let clonedEvent = clonedArray[0];
//clonedEvent.start = this.formatDate(startDate)+" "+this.formatTime(startDate);
//clonedEvent.end = this.formatDate(endDate)+" "+this.formatTime(endDate);
let milliseconds = this.calculateDuration(data);
clonedEvent.programLength = milliseconds / 1000;
if (data[0].dirty) {
action = "update";
}
if (data[0].schedItemNo == "0" || data[0].schedItemNo == "-1") {
action = "create";
clonedEvent.schedItemNo = -1;
}
clonedEvent.action = action;
return clonedEvent;
}
browserResize() {
let navHeight = $('.navHeaderBox').outerHeight();
let breadCrumbHeight = $('.breadCrumbBox').outerHeight();
let footerHeight = $('.CrowesFooterOptions').outerHeight();
let searchFormHeight = $('#searchFormBox').outerHeight();
let windowHeight = $(window).outerHeight();
let rightTabMouseHeight = $('.CrowerTabList').outerHeight();
let scheulerMouseHeight = 33;
let windowBalanceHeight = (windowHeight) - (navHeight + breadCrumbHeight + footerHeight + scheulerMouseHeight + searchFormHeight);
let customCrowerHeight = windowBalanceHeight;
$('.parrotCrower-content').css({ "height": customCrowerHeight + "px" });
$('.parrotCrower-layout .parrotCrower-times').eq(1).css({ "height": (customCrowerHeight - 20) + "px" });
}
onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
}
/*
Copyright 2016 Google Inc. All Rights Reserved.
Use of this source code is governed by an MIT-style license that
can be found in the LICENSE file at http://angular.io/license
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment