123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- $(function () {
- 'use strict';
- window.utils = window.utils || {};
- $.extend(window.utils, {
- holiday: {
- createHolidayManager: function () {
- var holidayDataSource = BemsWebApplication.db.createDataSource('CmHoliday', true, true);
- var holidayCustomDataSource = BemsWebApplication.db.createDataSource('CmHolidayCustom', true);
- var holidayWeekendDataSource = BemsWebApplication.db.createDataSource('CmHolidayWeekend', true);
- var holidaySources, holidayCustomSources, weekend;
- var isSaturday = false,
- isSunday = false;
- var cc = new CalendarConverter;
- var holidays = [];
- var isLoaded = false;
- var currentYear = 0;
- return {
- loadHolidays: function () {
- var deferred = new $.Deferred();
- $.when(holidayDataSource.load(), holidayCustomDataSource.load(), holidayWeekendDataSource.load())
- .done(function (result1, result2, result3) {
- holidaySources = result1[0];
- holidayCustomSources = result2[0];
- weekend = result3[0];
- if (weekend.length > 0) {
- isSaturday = weekend[0].Saturday();
- isSunday = weekend[0].Sunday();
- }
- isLoaded = true;
- deferred.resolve();
- })
- .fail(function () {
- deferred.reject();
- });
- return deferred.promise();
- },
- isLoaded: function () { return isLoaded; },
- generateHolidays: function (momentDate) {
- var year, month, day, solar;
- var self = this;
- if (currentYear !== momentDate.year()) {
- holidays = [];
- $.each(holidaySources, function (i, item) {
- year = momentDate.year();
- month = item.HolidayMonth() - 1;
- day = item.HolidayDay();
- if (item.IsLunar()) {
- solar = cc.lunar2solar(new Date(year - 1, month, day));
- if (solar.sYear !== year) {
- solar = cc.lunar2solar(new Date(year, month, day));
- }
- year = solar.sYear;
- month = solar.sMonth - 1;
- day = solar.sDay;
- }
- holidays.push($G.date(moment([year, month, day])));
- });
- $.each(holidayCustomSources, function (i, item) {
- var itemDate = item.HolidayDate();
- holidays.push($G.date(moment([itemDate.getFullYear(), itemDate.getMonth(), itemDate.getDate()])));
- });
- currentYear = momentDate.year();
- }
- var weekends = self.getWeekendHolidayArray(momentDate, isSaturday, isSunday);
- return holidays.concat(weekends);
- },
- getWeekendHolidayArray: function (momentDate, isSaturday, isSunday) {
- var month = momentDate.clone().startOf('month');
- var sunday = month.clone(),
- saturday = month.clone();
- var weekends = [];
- if (month.day() !== 0) {
- sunday.day(-7);
- }
- if (month.day() !== 6) {
- saturday.day(-1);
- }
- for (var i = 0 ; i < 7 ; i++) {
- if (isSunday) {
- weekends.push($G.date(moment([sunday.year(), sunday.month(), sunday.date()])));
- sunday.day(7);
- }
- if (isSaturday) {
- weekends.push($G.date(moment([saturday.year(), saturday.month(), saturday.date()])));
- saturday.day(13);
- }
- }
- return weekends;
- },
- };
- },
- getWeekendHolidays: function (momentDate, isSaturday, isSunday) {
- var month = momentDate.clone().startOf('month');
- var sunday = month.clone(),
- saturday = month.clone();
- var weekends = [];
- if (month.day() !== 0) {
- sunday.day(-7);
- }
- if (month.day() !== 6) {
- saturday.day(-1);
- }
- for (var i = 0 ; i < 7 ; i++) {
- if (isSunday) {
- this.pushHolidayEventInArray(weekends, '주말 휴일', moment([sunday.year(), sunday.month(), sunday.date()]), null, true, 2, false); // 마지막 false 추가 hcLee 2016 01 22
- sunday.day(7);
- }
- if (isSaturday) {
- this.pushHolidayEventInArray(weekends, '주말 휴일', moment([saturday.year(), saturday.month(), saturday.date()]), null, true, 2, false); // 마지막 false 추가 hcLee 2016 01 22
- saturday.day(13);
- }
- }
- return weekends;
- },
- // holidayType : 0: 정기휴일, 1: 특정휴일, 2: 주말휴일
- // hcLee 2016 01 22
- //pushHolidayEventInArray: function( destArray, title, day, isYearlyHoliday, isWeekend, holidayType ) {
- pushHolidayEventInArray: function (destArray, title, day, isYearlyHoliday, isWeekend, holidayType, isLunar) {
- var o = {
- title: title,
- holiday: true,
- start: day,
- allDay: true,
- backgroundColor: holidayType === 0 ? 'rgb(0,162,232)' : (holidayType === 1 ? 'rgb(255,201,14)' : 'rgb(237,28,36)'),
- // hcLee 2016 01 22
- isLunar: isLunar,
- };
- if (isWeekend) {
- o.isWeekend = isWeekend;
- }
- else if (isYearlyHoliday) {
- o.isYearlyHoliday = isYearlyHoliday;
- }
- destArray.push(o);
- },
- pushWorkScheduleEventInArray: function (destArray, item, day, isYearlyHoliday, isWeekend, holidayType) {
- var o = {
- title: item.Name(),
- holiday: false,
- //content: item.Content(),
- item: item,
- start: day,
- allDay: true,
- backgroundColor: holidayType === 1 ? 'rgb(160,0,255)' : (holidayType === 2 ? 'rgb(34,177,76)' : (holidayType === 5 ? 'rgb(255,183,0)' : 'rgb(204,255,0)'))
- //backgroundColor: 'rgb(34,177,76)'
- };
- if (isWeekend) {
- o.isWeekend = isWeekend;
- }
- else if (isYearlyHoliday) {
- o.isYearlyHoliday = isYearlyHoliday;
- }
- destArray.push(o);
- },
- }
- });
- });
|