1 line
5.5 KiB
JavaScript
1 line
5.5 KiB
JavaScript
"use strict";function _typeof(e){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},_typeof(e)}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r={}.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);r<t;r++)n[r]=e[r];return n}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,a,o,i,l=[],u=!0,s=!1;try{if(o=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;u=!1}else for(;!(u=(n=o.call(r)).done)&&(l.push(n.value),l.length!==t);u=!0);}catch(e){s=!0,a=e}finally{try{if(!u&&null!=r.return&&(i=r.return(),Object(i)!==i))return}finally{if(s)throw a}}return l}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,_toPropertyKey(n.key),n)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _toPropertyKey(e){var t=_toPrimitive(e,"string");return"symbol"==_typeof(t)?t:t+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var n=r.call(e,t||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}var ScheduleManager=function(){return _createClass(function e(){_classCallCheck(this,e),this.lastActiveItem=null,this.updateInterval=6e4},[{key:"getCurrentTimeInMinutes",value:function(){var e=new Date,t=60*e.getHours()+e.getMinutes();return{now:e,minutes:t}}},{key:"parseTimeToMinutes",value:function(e){var t=_slicedToArray(e.split(":").map(Number),2);return 60*t[0]+t[1]}},{key:"getItemTimeRange",value:function(e){var t=e.dataset,r=t.start,n=t.end;return r&&n?{start:this.parseTimeToMinutes(r),end:this.parseTimeToMinutes(n)}:null}},{key:"determineItemStatus",value:function(e,t){return t>=e.start&&t<=e.end?"active":t>e.end?"completed":"upcoming"}},{key:"updateBadge",value:function(e,t){var r=e.querySelector(".current-time-badge");if(t&&!r){var n=document.createElement("span");n.className="current-time-badge",n.textContent="진행중",e.appendChild(n)}else!t&&r&&r.remove()}},{key:"updateItemClasses",value:function(e,t){var r,n,a={active:{add:["active"],remove:["completed"]},completed:{add:["completed"],remove:["active"]},upcoming:{add:[],remove:["active","completed"]}}[t],o=a.add,i=a.remove;(r=e.classList).remove.apply(r,_toConsumableArray(i)),(n=e.classList).add.apply(n,_toConsumableArray(o))}},{key:"updateItemState",value:function(e,t){var r=this.getItemTimeRange(e);if(!r)return!1;var n=this.determineItemStatus(r,t),a="active"===n;return this.updateItemClasses(e,n),a}},{key:"scrollToElement",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:20;t&&e.scrollTo({top:t.offsetTop-r,behavior:"smooth"})}},{key:"getTodayDateString",value:function(e){return e.getFullYear()+"-"+String(e.getMonth()+1).padStart(2,"0")+"-"+String(e.getDate()).padStart(2,"0")}},{key:"updateCardItems",value:function(e,t){var r=this,n=null;return e.querySelectorAll(".day-list li").forEach(function(e){r.updateItemState(e,t)&&!n&&(n=e)}),n}},{key:"processAllCards",value:function(e,t){var r=this,n=null,a=null;return document.querySelectorAll(".day-card").forEach(function(o){var i=o.dataset.date===e;o.classList.toggle("today",i),i?(a=o,n=r.updateCardItems(o,t)):r.updateCardItems(o,t)}),{firstActive:n,todayCard:a}}},{key:"handleAutoScroll",value:function(e,t){var r=document.querySelector(".week-box");r&&(e&&e!==this.lastActiveItem?(this.scrollToElement(r,e),this.lastActiveItem=e):!e&&t&&this.scrollToElement(r,t))}},{key:"checkSchedule",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.getCurrentTimeInMinutes(),r=t.now,n=t.minutes,a=this.getTodayDateString(r),o=this.processAllCards(a,n),i=o.firstActive,l=o.todayCard;e&&this.handleAutoScroll(i,l)}},{key:"initialize",value:function(){var e=this;this.checkSchedule(!0),setInterval(function(){return e.checkSchedule(!0)},this.updateInterval)}}])}(); |