{"version":3,"sources":["../../es6/SplittingShift.js"],"names":["SplittingShift","data","offset","weeks","ignoreAOnPublicHoliday","parseInt","intervals","minNrOfBlockIntervals","mindestblock","minDistanceIntervals","minDistance","maxDistanceIntervals","maxDistance","wishWindow","Array","weekdays","lastSplittingShiftIndex","currentSplittingShiftIndex","splittingShiftFound","errorText","wishBreak","week","day","length","WishWeek","setDays","_isSplittingOkay","nrOfWeek","_isSplittingShift","numberSegments","getNumberOfASegments","getNumberOfAIntervalls","getNumberOfIntervalsFirstSegment","getNumberOfIntervalsLastSegment","numberOfIntervallsBetweenA","getNumberOfIntervalsBetweenTwoASegments","_isCurrentSplittingShiftTheLast"],"mappings":"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","file":"SplittingShift.js","sourcesContent":["class SplittingShift{\r\n constructor(data){\r\n this.offset = data.offset;\r\n this.weeks = data.weeks;\r\n this.ignoreAOnPublicHoliday = parseInt(data.ignoreAOnPublicHoliday);\r\n this.intervals = data.intervals;\r\n this.minNrOfBlockIntervals = (parseInt(data.mindestblock)/60 * (this.offset/24));\r\n this.minDistanceIntervals = (parseInt(data.minDistance)/60 * (this.offset/24));\r\n this.maxDistanceIntervals = (parseInt(data.maxDistance)/60 * (this.offset/24));\r\n this.wishWindow = new Array(data.weeks);\r\n this.weekdays = [\"Montag\", \"Dienstag\", \"Mittwoch\", \"Donnerstag\", \"Freitag\", \"Samstag\", \"Sonntag\"];\r\n this.lastSplittingShiftIndex = data.lastSplittingShiftIndex;\r\n this.currentSplittingShiftIndex = data.currentSplittingShiftIndex;\r\n this.splittingShiftFound = data.splittingShiftFound;\r\n this.errorText = new Array(data.weeks);\r\n this.wishBreak = data.wishBreak;\r\n }\r\n\r\n getSplittingShiftFound(){\r\n return this.splittingShiftFound;\r\n }\r\n\r\n getError(week, day){\r\n return this.errorText [week][day];\r\n }\r\n\r\n checkSplitting(){\r\n for(let week = 1; week <= this.wishWindow.length; week++){\r\n this.wishWindow[week-1] = new WishWeek(this.offset, week, this.ignoreAOnPublicHoliday);\r\n this.wishWindow[week-1].setDays();\r\n }\r\n let errorText = this._isSplittingOkay();\r\n return errorText;\r\n }\r\n\r\n _isSplittingOkay(){\r\n for(let nrOfWeek = 0; nrOfWeek < this.wishWindow.length ; nrOfWeek++) {\r\n this.errorText [nrOfWeek] = new Array (7);\r\n for(let day = 0; day < 7; day++) {\r\n this.errorText [nrOfWeek][day] = this._isSplittingShift(nrOfWeek, day);\r\n }\r\n }\r\n }\r\n\r\n _isCurrentSplittingShiftTheLast(){\r\n return this.lastSplittingShiftIndex === this.currentSplittingShiftIndex;\r\n }\r\n\r\n _isSplittingShift(nrOfWeek, day){\r\n //if((!this.ignoreAOnPublicHoliday && !this.wishWindow[nrOfWeek].isPublicHoliday(day)) && !this.wishWindow[nrOfWeek].isPublicHoliday(day)){\r\n let numberSegments = this.wishWindow[nrOfWeek].getNumberOfASegments(day);\r\n if(numberSegments == 2 && !this.splittingShiftFound[nrOfWeek][day]){\r\n if(this.wishWindow[nrOfWeek].getNumberOfAIntervalls(day) == this.intervals) {\r\n if (this.wishWindow[nrOfWeek].getNumberOfIntervalsFirstSegment(day, this.wishBreak) >= this.minNrOfBlockIntervals && this.wishWindow[nrOfWeek].getNumberOfIntervalsLastSegment(day, this.wishBreak) >= this.minNrOfBlockIntervals) {\r\n let numberOfIntervallsBetweenA = this.wishWindow[nrOfWeek].getNumberOfIntervalsBetweenTwoASegments(day);\r\n if (numberOfIntervallsBetweenA < this.minDistanceIntervals) {\r\n return \"Woche \" + (nrOfWeek + 1) + \": \" + this.weekdays[day] + \"
Mindestabstand zwischen den Schichtelementen wird nicht eingehalten.
\";\r\n } else if (numberOfIntervallsBetweenA > this.maxDistanceIntervals) {\r\n return \"Woche \" + (nrOfWeek + 1) + \": \" + this.weekdays[day] + \"
Maximalabstand zwischen den Schichtelementen wird nicht eingehalten.
\";\r\n } else {\r\n this.splittingShiftFound[nrOfWeek][day] = true;\r\n }\r\n } else {\r\n return \"Woche \" + (nrOfWeek + 1) + \": \" + this.weekdays[day] + \"
Mindestlänge der Schichtelemente wird nicht eingehalten.
\";\r\n }\r\n } else if (this._isCurrentSplittingShiftTheLast()) {\r\n return \"Woche \" + (nrOfWeek + 1) + \": \" + this.weekdays[day] + \"
Die Anzahl der eingegebenen Intervalle passt nicht zu einer Splittingschicht.
\";\r\n }\r\n } else if(numberSegments > 2 && this._isCurrentSplittingShiftTheLast()){\r\n return \"Woche \" + (nrOfWeek + 1) + \": \" + this.weekdays[day] + \"
Es wurden zu viele Splittingsegmente eingegeben.
\";\r\n }\r\n return \"\";\r\n }\r\n}"]}