| 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);            },        }    });});
 |