Files
ember-panda/addon/utils/moment-business-days.js
2023-11-28 14:30:02 -05:00

203 lines
4.7 KiB
JavaScript

// Generated by CoffeeScript 2.7.0
'use strict';
// taken from https://github.com/kalmecak/moment-business-days
//if (typeof require === 'function') {
// var moment = require('moment');
//}
moment.fn.isHoliday = function() {
var locale;
locale = this.localeData();
if (locale._holidays) {
if (locale._holidays.indexOf(this.format(locale._holidayFormat)) >= 0) {
return true;
}
}
if (locale.holiday) {
if (locale.holiday(this)) {
return true;
} else {
return false;
}
}
return false;
};
moment.fn.isBusinessDay = function(options) {
var defaultWorkingWeekdays, locale, workingWeekdays;
locale = this.localeData();
defaultWorkingWeekdays = [1, 2, 3, 4, 5];
workingWeekdays = options.business_days || locale._workingWeekdays || defaultWorkingWeekdays;
if (this.isHoliday()) {
return false;
}
if (workingWeekdays.indexOf(this.day()) >= 0) {
return true;
}
return false;
};
moment.fn.businessDaysIntoMonth = function() {
var businessDay, businessDaysIntoMonth, monthBusinessDays;
businessDay = this.isBusinessDay() ? this : this.prevBusinessDay();
monthBusinessDays = businessDay.monthBusinessDays();
businessDaysIntoMonth = void 0;
monthBusinessDays.map(function(day, index) {
if (day.format('M/DD/YY') === businessDay.format('M/DD/YY')) {
businessDaysIntoMonth = index + 1;
}
});
return businessDaysIntoMonth;
};
moment.fn.businessDiff = function(param) {
var d1, d2, daysBetween, end, start;
d1 = this.clone();
d2 = param.clone();
start = d1 < d2 ? d1 : d2;
end = d2 > d1 ? d2 : d1;
daysBetween = 0;
if (start === end) {
return daysBetween;
}
while (start < end) {
if (start.isBusinessDay()) {
daysBetween++;
}
start.add(1, 'd');
}
return daysBetween;
};
moment.fn.businessAdd = function(number, options = {}) {
var day, remaining, signal;
options.period || (options.period = 'days');
day = this.clone();
signal = number < 0 ? -1 : 1;
remaining = Math.abs(number);
while (remaining) {
day.add(signal, options.period);
if (day.isBusinessDay(options)) {
remaining--;
}
}
return day;
};
moment.fn.businessSubtract = function(number, options = {}) {
return this.businessAdd(-number, options);
};
moment.fn.nextBusinessDay = function() {
var iterator, limit;
iterator = 1;
limit = 7;
while (iterator < limit) {
if (this.add(1, 'd').isBusinessDay()) {
break;
}
iterator++;
}
return this;
};
moment.fn.prevBusinessDay = function() {
var iterator, limit;
iterator = 1;
limit = 7;
while (iterator < limit) {
if (this.subtract(1, 'd').isBusinessDay()) {
break;
}
iterator++;
}
return this;
};
moment.fn.monthBusinessDays = function(partialEndDate) {
var day, daysArr, done, end, me;
me = this.clone();
day = me.clone().startOf('month');
end = partialEndDate ? partialEndDate : me.clone().endOf('month');
daysArr = [];
done = false;
while (!done) {
if (day.isBusinessDay()) {
daysArr.push(day.clone());
}
if (end.diff(day.add(1, 'd')) < 0) {
done = true;
}
}
return daysArr;
};
moment.fn.monthNaturalDays = function(fromToday) {
var day, daysArr, done, end, me;
me = this.clone();
day = fromToday ? me.clone() : me.clone().startOf('month');
end = me.clone().endOf('month');
daysArr = [];
done = false;
while (!done) {
daysArr.push(day.clone());
if (end.diff(day.add(1, 'd')) < 0) {
done = true;
}
}
return daysArr;
};
moment.fn.monthBusinessWeeks = function(fromToday) {
var day, daysArr, done, end, me, weeksArr;
me = this.clone();
day = fromToday ? me.clone() : me.clone().startOf('month');
end = me.clone().endOf('month');
weeksArr = [];
daysArr = [];
done = false;
while (!done) {
if (day.day() >= 1 && day.day() < 6) {
daysArr.push(day.clone());
}
if (day.day() === 5) {
weeksArr.push(daysArr);
daysArr = [];
}
if (end.diff(day.add(1, 'd')) < 0) {
if (daysArr.length < 5) {
weeksArr.push(daysArr);
}
done = true;
}
}
return weeksArr;
};
moment.fn.monthNaturalWeeks = function(fromToday) {
var day, daysArr, done, end, me, weeksArr;
me = this.clone();
day = fromToday ? me.clone() : me.clone().startOf('month');
end = me.clone().endOf('month');
weeksArr = [];
daysArr = [];
done = false;
while (!done) {
daysArr.push(day.clone());
if (day.day() === 6) {
weeksArr.push(daysArr);
daysArr = [];
}
if (end.diff(day.add(1, 'd')) < 0) {
if (daysArr.length < 7) {
weeksArr.push(daysArr);
}
done = true;
}
}
return weeksArr;
};
if (typeof module !== 'undefined' && module.exports) {
module.exports = moment;
}