![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /var/www/html/libs/absol-full/dist/js/ |
Upload File : |
/*** module: node_modules/absol-card/js/dom/CActivity.js ***/ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _HTimeTableItem = _interopRequireDefault(require("./HTimeTableItem")); var _datetime = require("absol/src/Time/datetime"); var _Core = _interopRequireDefault(require("./Core")); var _EventEmitter = _interopRequireDefault(require("absol/src/HTML5/EventEmitter")); var _VTimeTableItem = _interopRequireDefault(require("./VTimeTableItem")); var _Vec = _interopRequireDefault(require("absol/src/Math/Vec2")); var _CActivityTooltip = _interopRequireDefault(require("./CActivityTooltip")); var _ = _Core.default._; var $ = _Core.default.$; var MIN_DATE = new Date(1890, 0, 1); var MAX_DATE = new Date(2200, 0, 1); /** * @typedef {Object} MonthTableItemProperty * @property {Date} startTime * @property {Date} endTime * @property {Array<String>} status * @property {String} list * @property {String} board */ /** * * @param {import('./MonthTable').default} tableElt * @param {MonthTableItemProperty} props */ function CActivity(tableElt, props) { _EventEmitter.default.call(this); /** * @type {CActivity} */ this.cloneFrom = null; // to track this.$table = tableElt; /*** * * @type {string} */ this.boardName = ""; this.listName = ''; this.cardName = ""; this.desc = ""; /** * @type {Date} */ this.startTime = null; /** * @type {Date} */ this.allDay = false; this.firstDayOfWeek = -1; //need to update this.endTime = null; this.active = false; this.daySegments = []; this.vSegment = null; this.status = []; this.name = '(no title)'; this.hourSegment = null; // /*example this.quickmenu = { menuProps: { items: [{ text: "Mở", icon: 'span.mdi.mdi-open-in-new' }, { text: "Xóa", icon: 'span.mdi.mdi-delete' }] }, onSelect: function (item, activity) {// console.log(item, activity); } }; // */ // this.quickmenu = null; this.on('contextmenu', this.ev_contextMenu.bind(this)).on('mouseenter', this.ev_mouseEnter.bind(this)).on('mouseleave', this.ev_mouseLeave.bind(this)); this._quickmenuShowing = false; this._tooltipToken = null; this._tooltipTimeout = -1; Object.assign(this, props); //todo } Object.defineProperties(CActivity.prototype, Object.getOwnPropertyDescriptors(_EventEmitter.default.prototype)); CActivity.prototype.constructor = CActivity; CActivity.prototype.$itemPool = []; CActivity.prototype.$vItemPool = []; CActivity.prototype._attach = function () {}; CActivity.prototype._detach = function () {}; CActivity.prototype.remove = function () { this.removeAllDaySegment(); this.removeAllHourSegment(); this.$table = null; if (!this.cloneFrom) { //origin this.$table.removeActivity(this); } else {//todo } }; CActivity.prototype.updateStatus = function () { var status = this.status; status = status || []; if (this.daySegments.length > 0) { this.daySegments[0].$item.status = status; } }; CActivity.prototype.updateName = function () { var name = this.name; name = name || ''; this.daySegments.forEach(function (seg) { seg.$item.name = name; }); }; CActivity.prototype.getDayLength = function () { var dayLength = (0, _datetime.compareDate)(this.endTime, this.startTime); if (this.endTime.getTime() > (0, _datetime.beginOfDay)(this.endTime).getTime()) dayLength++; return dayLength; }; CActivity.prototype.removeAllDaySegment = function () { var segment; for (var i = 0; i < this.daySegments.length; ++i) { segment = this.daySegments[i]; segment.$item.remove(); //todo: make it like new segment.$item.mActivity = null; segment.$item.left = null; segment.$item.right = null; segment.$item.status = null; this.$itemPool.push(segment.$item); } this.daySegments = []; }; CActivity.prototype.removeAllHourSegment = function () { if (this.hourSegment) { this.hourSegment.$item.remove(); this.$vItemPool.push(this.hourSegment.$item); this.hourSegment = null; } }; CActivity.prototype._makeOneItem = function () { var itemElt; if (this.$itemPool.length > 0) { itemElt = this.$itemPool.pop(); } else { itemElt = _(_HTimeTableItem.default.tag); ['click', 'mouseenter', 'mouseleave', 'predrag', 'drag', 'dragend', 'dragstart', 'contextmenu'].forEach(function (eventName) { itemElt.on(eventName, function (event) { if (this.mActivity) this.mActivity.emit(eventName, event, this.mActivity); }); }); } itemElt.mActivity = this; return itemElt; }; CActivity.prototype.updateActive = function () { var active = this.active; for (var i = 0; i < this.daySegments.length; ++i) { if (active) this.daySegments[i].$item.addClass('cd-active');else this.daySegments[i].$item.removeClass('cd-active'); } if (this.hourSegment) { if (active) this.hourSegment.$item.addClass('cd-active');else this.hourSegment.$item.removeClass('cd-active'); } }; CActivity.prototype._isDaySegmentUpdated = function () { var startMil = this.startTime.getTime(); var endMil = this.endTime.getTime(); if (startMil > endMil) return this.daySegments.length === 0; //invalid time, must remove all if (this.daySegments.length === 0) return false; // not created if (this.$table.firstDayOfWeek !== this.firstDayOfWeek) return false; // must update var firstSegment = this.daySegments[0]; var lastSegment = this.daySegments[this.daySegments.length - 1]; if (startMil !== firstSegment.startTime.getTime()) return false; if (endMil !== lastSegment.endTime.getTime()) return false; //todo: check if scroll return true; }; CActivity.prototype.reCreateDaySegments = function () { this.removeAllDaySegment(); var start = this.startTime; var end = this.endTime; var segments = []; var segment; var nextWeek; var firstDayOfWeek = this.$table.firstDayOfWeek; this.firstDayOfWeek = firstDayOfWeek; //update if (start.getTime() < end.getTime()) { while (start.getTime() < end.getTime()) { nextWeek = (0, _datetime.beginOfWeek)(new Date(start.getTime() + _datetime.MILLIS_PER_DAY * 7), false, firstDayOfWeek); segment = {}; segment.holder = this; segments.push(segment); segment.startTime = start; segment.endTime = new Date(Math.min(end.getTime(), nextWeek.getTime())); segment.dayLength = (0, _datetime.compareDate)(segment.endTime, segment.startTime); if (segment.endTime.getTime() > (0, _datetime.beginOfDay)(segment.endTime).getTime()) segment.dayLength++;else { segment.dayLength = 0; } segment.$item = this._makeOneItem(); segment.$item.addStyle('width', 'calc(' + 100 * segment.dayLength + '% - 10px)'); start = nextWeek; } } else { segment = {}; segment.holder = this; segments.push(segment); segment.startTime = start; segment.endTime = start; segment.dayLength = 1; segment.$item = this._makeOneItem(); segment.$item.addStyle('width', 'calc(' + 100 * segment.dayLength + '% - 10px)'); } for (var i = 0; i < segments.length; ++i) { if (i > 0) { segments[i].$item.left = segments[i - 1].$item; segments[i - 1].$item.right = segments[i].$item; } if (i < segments.length - 1) { segments[i].$item.right = segments[i + 1].$item; segments[i + 1].$item.left = segments[i].$item; } } this.daySegments = segments; this.updateStatus(); this.updateName(); this.updateActive(); }; CActivity.prototype.updateDaySegments = function () { if (!this._isDaySegmentUpdated()) this.reCreateDaySegments(); }; CActivity.prototype.getVisibleDaySegments = function () { this.updateDaySegments(); var start = this.$table.startTime.getTime(); var end = this.$table.endTime.getTime(); return this.daySegments.filter(function (seg) { return seg.startTime.getTime() >= start && seg.endTime.getTime() <= end; }); }; CActivity.prototype.getVisibleHourSegment = function () { if (this.isSingleDay()) { //todo: pool var itemElt; if (!this.hourSegment) { itemElt = _(_VTimeTableItem.default.tag); this.hourSegment = { $item: itemElt, startTime: new Date(), endTime: new Date() }; ['click', 'mouseenter', 'mouseleave', 'predrag', 'drag', 'dragend', 'dragstart'].forEach(function (eventName) { itemElt.on(eventName, function (event) { if (this.mActivity) this.mActivity.emit(eventName, event, this.mActivity); }); }); } else { itemElt = this.hourSegment.$item; } itemElt.mActivity = this; itemElt.name = this.name; this.hourSegment.startTime = this.startTime; this.hourSegment.endTime = this.endTime; this.hourSegment.$item.addStyle('height', (this.endTime.getTime() - this.startTime.getTime()) * 100 / _datetime.MILLIS_PER_HOUR + '%'); return this.hourSegment; } else { return null; } }; CActivity.prototype.isSingleDay = function () { return !this.allDay && (0, _datetime.compareDate)(this.startTime, new Date(this.endTime.getTime() - 1)) == 0; }; //May 18 12-00pm \u2212 Jun 22 1-00pm (35d 1h) CActivity.prototype._dateTimeToText = function (date) { var h, m; var text = ''; text += _datetime.shortMonthNames[this.startTime.getMonth()] + ' ' + this.startTime.getDate(); h = this.startTime.getHours(); m = this.startTime.getMinutes(); text += ' ' + (h > 12 ? h - 12 : h) + '-' + (m < 10 ? '0' + m : m) + (h >= 12 ? 'pm' : 'am'); return text; }; CActivity.prototype._milToText = function (mil) { var mil = this.endTime.getTime() - this.startTime.getTime(); var d = Math.floor(mil / _datetime.MILLIS_PER_DAY); var h = Math.floor(mil % _datetime.MILLIS_PER_DAY / _datetime.MILLIS_PER_HOUR); var m = Math.floor(mil % _datetime.MILLIS_PER_HOUR / _datetime.MILLIS_PER_MINUTE); var text = '(' + d + 'd'; if (h > 0 || m > 0) { text += ' ' + h + 'h'; if (m > 0) text += m + 'm'; } text += ')'; return text; }; /** * @returns {String} */ CActivity.prototype.getTimeText = function () { var text = this._dateTimeToText(this.startTime); if (this.startTime.getTime() < this.endTime.getTime()) { text += ' \u2212 ' + this._dateTimeToText() + this._milToText(this.endTime.getTime() - this.startTime.getTime()); } return text; }; /** * @return {CActivity} */ CActivity.prototype.clone = function () { var obj = new CActivity(this.$table, { startTime: this.startTime, endTime: this.endTime, name: this.name, list: this.list, board: this.board, status: this.status, cloneFrom: this }); return obj; }; CActivity.prototype.ev_contextMenu = function (event) { var quickmenu = this.quickmenu; var thisA = this; if (quickmenu) { var menuProps = this.quickmenu.menuProps || this.quickmen && this.quickmenu.getMenuProps() || null; if (!menuProps) throw new Error("Invalid quickmenu!"); var items = menuProps.items; // copy to keep data safely var items2 = items.map(function (item, i) { return Object.assign({ __idx__: i }, item); }); _CActivityTooltip.default.close(this._tooltipToken); CActivity._quickmenuShowing = true; event.showContextMenu(Object.assign({}, menuProps, { items: items2 }), function (event) { var idx = event.menuItem.__idx__; var item = items[idx]; if (quickmenu.onSelect) { quickmenu.onSelect(item, thisA); } }); $(document.body).once('mousedown', function () { CActivity._quickmenuShowing = false; }); event.stopPropagation(); } }; CActivity.prototype.ev_mouseEnter = function (event) { if (this.cloneFrom) return; var thisCA = this; if (this._showTooltipTimeout > 0) { clearTimeout(this._showTooltipTimeout); this._showTooltipTimeout = -1; } var pos = new _Vec.default(event.clientX, event.clientY); this._tooltipTimeout = setTimeout(function () { if (CActivity._quickmenuShowing) return; thisCA._tooltipToken = _CActivityTooltip.default.show(pos, thisCA._getTooltipData()); }, 200); }; CActivity.prototype._getTooltipData = function () { return { name: this.name, time: this.getTimeText(), board: this.boardName || '', list: this.listName || '', card: this.cardName || '', desc: this.desc || '' }; }; CActivity.prototype.ev_mouseLeave = function () { if (this._tooltipTimeout > 0) { clearTimeout(this._tooltipTimeout); this._tooltipTimeout = -1; } _CActivityTooltip.default.close(this._tooltipToken); }; var _default = CActivity; exports.default = _default;