-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjobu-karendaa.js
1 lines (1 loc) · 5.63 KB
/
jobu-karendaa.js
1
'use strict';Object.defineProperty(exports,'__esModule',{value:true});var _createClass=function(){function defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if('value'in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor)}}return function(Constructor,protoProps,staticProps){if(protoProps)defineProperties(Constructor.prototype,protoProps);if(staticProps)defineProperties(Constructor,staticProps);return Constructor}}();var _moment=require('moment');var _moment2=_interopRequireDefault(_moment);function _interopRequireDefault(obj){return obj&&obj.__esModule?obj:{default:obj}}function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError('Cannot call a class as a function')}}var JobuKarendaa=function(){function JobuKarendaa(mmtDate,options){_classCallCheck(this,JobuKarendaa);this.mmtDate=(0,_moment2.default)();this.useIsoWeek=true;switch(arguments.length){case 2:if(mmtDate===undefined&&options===undefined)break;if(!(mmtDate instanceof _moment2.default)){var year=mmtDate.hasOwnProperty('year')?mmtDate.year:this.mmtDate.year();var month=mmtDate.hasOwnProperty('month')?mmtDate.month:0;this.mmtDate.year(year).month(month);this.mmtDate=this.firstWorkDay()}else{this.mmtDate=mmtDate.clone()}this.useIsoWeek=options.hasOwnProperty('useIsoWeek')?options.useIsoWeek===true:true;break;case 1:this.mmtDate=mmtDate.clone();break;case 0:default:break;}}_createClass(JobuKarendaa,[{key:'firstWorkDay',value:function firstWorkDay(units){var result=null;var startOfWorkMonth=null;switch(units){case'workweek':case'week':case'weeks':result=this.mmtDate.clone().startOf(this.getWeekType()).startOf(this.getWeekType());break;case'year':case'years':startOfWorkMonth=this.mmtDate.clone().startOf('year').startOf(this.getWeekType());if(this.mmtDate.month()===0){startOfWorkMonth=this.firstWorkDay();if(startOfWorkMonth.diff(this.mmtDate,'hours')>0){startOfWorkMonth.subtract(182,'days');startOfWorkMonth.startOf('year').startOf(this.getWeekType())}}else{startOfWorkMonth=this.mmtDate.clone().startOf('year').startOf(this.getWeekType())}if(startOfWorkMonth.month()===11)startOfWorkMonth.add(1,'week');result=startOfWorkMonth;break;case'month':case'months':default:startOfWorkMonth=this.mmtDate.clone().startOf('month').startOf(this.getWeekType()).hours(0).minutes(0).seconds(0);if(startOfWorkMonth.date()>7)startOfWorkMonth.add(1,'week');if(startOfWorkMonth.diff(this.mmtDate,'hours')>0){startOfWorkMonth.subtract(1,'month').startOf('month').startOf(this.getWeekType());if(startOfWorkMonth.date()>7)startOfWorkMonth.add(1,'week')}result=startOfWorkMonth;}return result.clone().hours(0).minutes(0).seconds(0)}},{key:'lastWorkDay',value:function lastWorkDay(units){var result=null;switch(units){case'workweek':case'week':case'weeks':result=this.mmtDate.clone().endOf('week').endOf(this.getWeekType());break;case'year':case'years':result=this.mmtDate.clone().endOf('year').endOf(this.getWeekType());break;case'month':case'months':default:var endOfMonth=this.mmtDate.clone().endOf('month');result=endOfMonth.day()===0?endOfMonth:endOfMonth.startOf(this.getWeekType()).add(6,'days');}return result.hours(23).minutes(59).seconds(59)}},{key:'workYear',value:function workYear(val){if(arguments.length==0)return this.mmDate.year();this.mmtDate.year(val);return this}},{key:'workMonth',value:function workMonth(val){if(arguments.length==0){return this.firstWorkDay().month()}var month=new JobuKarendaa(this.firstWorkDay('year'),{useIsoWeek:this.useIsoWeek}),i=0;while(i<val){month.next('month');++i}this.mmtDate=month.current().clone();return this}},{key:'workWeek',value:function workWeek(val,units){var result=null;switch(arguments.length){case 0:break;case 1:switch(arguments[0]){case'year':case'years':result=this.mmtDate.diff(this.firstWorkDay('year'),'weeks')+1;break;case'month':case'months':result=this.mmtDate.diff(this.firstWorkDay(),'weeks')+1;break;}break;case 2:switch(units){case'year':case'years':this.mmtDate=this.firstWorkDay('year').add(val-1,'weeks');break;case'month':case'months':this.mmtDate=this.firstWorkDay().add(val-1,'weeks');break;}result=this;break;default:break;}return result}},{key:'weeksCount',value:function weeksCount(units){var result=null;switch(units){case'workweek':case'week':case'weeks':result=1;break;case'year':case'years':result=this.mmtDate.clone().month(0).startOf(this.getWeekType()).diff(this.lastWorkDay(),'weeks');break;case'month':case'months':default:var firstDay=this.firstWorkDay(),lastDay=this.lastWorkDay().add(1,'days');result=lastDay.diff(firstDay,'weeks');}return result}},{key:'getWeekType',value:function getWeekType(){return this.useIsoWeek?'isoweek':'week'}},{key:'current',value:function current(units){var result=this.mmtDate.clone();switch(units){case'workweek':result=this.workWeek(units);break;case'year':case'years':result=this.mmtDate.year();break;case'month':case'months':result=this.mmtDate.month();break;case'workmonth':result=this.firstWorkDay('month').month();break;default:}return result}},{key:'next',value:function next(units){var mmtUnitType=null,unitType=units;if(arguments.length==0){unitType='month'}this.mmtDate=this.lastWorkDay(unitType).add(1,'days').hours(0).minutes(0).seconds(0);return this}},{key:'previous',value:function previous(units){var mmtUnitType=null,unitType=units;if(arguments.length==0){unitType='month';mmtUnitType='month'}else{switch(units){case'workweek':mmtUnitType='week';break;case'workmonth':mmtUnitType='month';break;default:mmtUnitType=units;}}this.mmtDate=this.firstWorkDay(unitType).subtract(1,mmtUnitType);return this}}]);return JobuKarendaa}();exports.default=JobuKarendaa;