Last active
October 21, 2017 06:37
-
-
Save texirv0203/64ac9f8b1a14f44c307c29743b02deea to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
///<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 + ' <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