e90c54e6d24b154c772bb4cc69b5ba07f9aa286e.svn-base 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. $(function () {
  2. 'use strict';
  3. window.utils = window.utils || {};
  4. $.extend(window.utils, {
  5. holiday: {
  6. createHolidayManager: function () {
  7. var holidayDataSource = BemsWebApplication.db.createDataSource('CmHoliday', true, true);
  8. var holidayCustomDataSource = BemsWebApplication.db.createDataSource('CmHolidayCustom', true);
  9. var holidayWeekendDataSource = BemsWebApplication.db.createDataSource('CmHolidayWeekend', true);
  10. var holidaySources, holidayCustomSources, weekend;
  11. var isSaturday = false,
  12. isSunday = false;
  13. var cc = new CalendarConverter;
  14. var holidays = [];
  15. var isLoaded = false;
  16. var currentYear = 0;
  17. return {
  18. loadHolidays: function () {
  19. var deferred = new $.Deferred();
  20. $.when(holidayDataSource.load(), holidayCustomDataSource.load(), holidayWeekendDataSource.load())
  21. .done(function (result1, result2, result3) {
  22. holidaySources = result1[0];
  23. holidayCustomSources = result2[0];
  24. weekend = result3[0];
  25. if (weekend.length > 0) {
  26. isSaturday = weekend[0].Saturday();
  27. isSunday = weekend[0].Sunday();
  28. }
  29. isLoaded = true;
  30. deferred.resolve();
  31. })
  32. .fail(function () {
  33. deferred.reject();
  34. });
  35. return deferred.promise();
  36. },
  37. isLoaded: function () { return isLoaded; },
  38. generateHolidays: function (momentDate) {
  39. var year, month, day, solar;
  40. var self = this;
  41. if (currentYear !== momentDate.year()) {
  42. holidays = [];
  43. $.each(holidaySources, function (i, item) {
  44. year = momentDate.year();
  45. month = item.HolidayMonth() - 1;
  46. day = item.HolidayDay();
  47. if (item.IsLunar()) {
  48. solar = cc.lunar2solar(new Date(year - 1, month, day));
  49. if (solar.sYear !== year) {
  50. solar = cc.lunar2solar(new Date(year, month, day));
  51. }
  52. year = solar.sYear;
  53. month = solar.sMonth - 1;
  54. day = solar.sDay;
  55. }
  56. holidays.push($G.date(moment([year, month, day])));
  57. });
  58. $.each(holidayCustomSources, function (i, item) {
  59. var itemDate = item.HolidayDate();
  60. holidays.push($G.date(moment([itemDate.getFullYear(), itemDate.getMonth(), itemDate.getDate()])));
  61. });
  62. currentYear = momentDate.year();
  63. }
  64. var weekends = self.getWeekendHolidayArray(momentDate, isSaturday, isSunday);
  65. return holidays.concat(weekends);
  66. },
  67. getWeekendHolidayArray: function (momentDate, isSaturday, isSunday) {
  68. var month = momentDate.clone().startOf('month');
  69. var sunday = month.clone(),
  70. saturday = month.clone();
  71. var weekends = [];
  72. if (month.day() !== 0) {
  73. sunday.day(-7);
  74. }
  75. if (month.day() !== 6) {
  76. saturday.day(-1);
  77. }
  78. for (var i = 0 ; i < 7 ; i++) {
  79. if (isSunday) {
  80. weekends.push($G.date(moment([sunday.year(), sunday.month(), sunday.date()])));
  81. sunday.day(7);
  82. }
  83. if (isSaturday) {
  84. weekends.push($G.date(moment([saturday.year(), saturday.month(), saturday.date()])));
  85. saturday.day(13);
  86. }
  87. }
  88. return weekends;
  89. },
  90. };
  91. },
  92. getWeekendHolidays: function (momentDate, isSaturday, isSunday) {
  93. var month = momentDate.clone().startOf('month');
  94. var sunday = month.clone(),
  95. saturday = month.clone();
  96. var weekends = [];
  97. if (month.day() !== 0) {
  98. sunday.day(-7);
  99. }
  100. if (month.day() !== 6) {
  101. saturday.day(-1);
  102. }
  103. for (var i = 0 ; i < 7 ; i++) {
  104. if (isSunday) {
  105. this.pushHolidayEventInArray(weekends, '주말 휴일', moment([sunday.year(), sunday.month(), sunday.date()]), null, true, 2, false); // 마지막 false 추가 hcLee 2016 01 22
  106. sunday.day(7);
  107. }
  108. if (isSaturday) {
  109. this.pushHolidayEventInArray(weekends, '주말 휴일', moment([saturday.year(), saturday.month(), saturday.date()]), null, true, 2, false); // 마지막 false 추가 hcLee 2016 01 22
  110. saturday.day(13);
  111. }
  112. }
  113. return weekends;
  114. },
  115. // holidayType : 0: 정기휴일, 1: 특정휴일, 2: 주말휴일
  116. // hcLee 2016 01 22
  117. //pushHolidayEventInArray: function( destArray, title, day, isYearlyHoliday, isWeekend, holidayType ) {
  118. pushHolidayEventInArray: function (destArray, title, day, isYearlyHoliday, isWeekend, holidayType, isLunar) {
  119. var o = {
  120. title: title,
  121. holiday: true,
  122. start: day,
  123. allDay: true,
  124. backgroundColor: holidayType === 0 ? 'rgb(0,162,232)' : (holidayType === 1 ? 'rgb(255,201,14)' : 'rgb(237,28,36)'),
  125. // hcLee 2016 01 22
  126. isLunar: isLunar,
  127. };
  128. if (isWeekend) {
  129. o.isWeekend = isWeekend;
  130. }
  131. else if (isYearlyHoliday) {
  132. o.isYearlyHoliday = isYearlyHoliday;
  133. }
  134. destArray.push(o);
  135. },
  136. pushWorkScheduleEventInArray: function (destArray, item, day, isYearlyHoliday, isWeekend, holidayType) {
  137. var o = {
  138. title: item.Name(),
  139. holiday: false,
  140. //content: item.Content(),
  141. item: item,
  142. start: day,
  143. allDay: true,
  144. //backgroundColor: holidayType === 0 ? 'rgb(0,162,232)' : (holidayType === 1 ? 'rgb(255,201,14)' : 'rgb(237,28,36)')
  145. backgroundColor: 'rgb(34,177,76)'
  146. };
  147. if (isWeekend) {
  148. o.isWeekend = isWeekend;
  149. }
  150. else if (isYearlyHoliday) {
  151. o.isYearlyHoliday = isYearlyHoliday;
  152. }
  153. destArray.push(o);
  154. },
  155. }
  156. });
  157. });