VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol-card__js__dom__CActivity.js
/*** 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;

VaKeR 2022