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__fragment__WorkCalendar.js
/*** module: node_modules/absol-card/js/fragment/WorkCalendar.js ***/
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

require("../../css/workcalendar.css");

var _Fragment = _interopRequireDefault(require("absol/src/AppPattern/Fragment"));

var _Core = _interopRequireDefault(require("../dom/Core"));

var _Dom = _interopRequireDefault(require("absol/src/HTML5/Dom"));

var _datetime = require("absol/src/Time/datetime");

var _WorkCalendarApdapter = _interopRequireDefault(require("../adapter/WorkCalendarApdapter"));


var _ = _Core.default._;
var $ = _Core.default.$;

function WorkCalendar(props) {
  _Fragment.default.call(this);

  this._loadingToken = -1; // property default value

  this.firstDayOfWeek = 1;
  /***
   *
   * @type {WorkCalendarAdapter}
   */

  this.adapter = null;
  Object.assign(this, props);
  if (this.adapter && this.adapter.attach) this.adapter.attach(this);
  this.activities = []; //các thẻ đang hiển thị hiệnt tại
}

Object.defineProperties(WorkCalendar.prototype, Object.getOwnPropertyDescriptors(_Fragment.default.prototype));
WorkCalendar.prototype.constructor = WorkCalendar;
/***
 * hàm này gọi sau khi gọi createView, đợc gọi 1 lần bởi getView
 */

WorkCalendar.prototype.onCreated = function () {
  this._viewCurrentCalendar();

  this._loadCurrentCalendar();
};

WorkCalendar.prototype._createHeader = function () {
  var thisWC = this;
  this.$header = _({
    class: 'cd-work-calendar-header',
    child: [{
      class: 'cd-work-calendar-filter',
      child: [{
        tag: 'label',
        child: {
          text: "Board"
        }
      }, {
        tag: 'selectmenu',
        class: "cd-work-calendar-board-select",
        props: {
          items: this.adapter.getBoardList()
        },
        on: {
          change: this._loadCurrentCalendar.bind(this) // load lại lịch hiện tại với user mới

        }
      }]
    }, {
      class: 'cd-work-calendar-filter',
      child: [{
        tag: 'label',
        child: {
          text: "User"
        }
      }, {
        tag: 'selectmenu',
        class: 'cd-work-calendar-user-select',
        props: {
          items: this.adapter.getUserList()
        },
        on: {
          change: this._loadCurrentCalendar.bind(this) // load lại lịch hiện tại với user mới

        }
      }]
    }, {
      class: 'cd-work-calendar-filter',
      child: [{
        class: 'cd-work-calendar-date',
        child: [{
          tag: 'button',
          class: '.cd-prev-2',
          child: 'span.mdi.mdi-chevron-double-left',
          on: {
            click: this.ev_clickPrevPage.bind(this)
          }
        }, {
          tag: 'button',
          class: '.cd-prev',
          child: 'span.mdi.mdi-chevron-left',
          on: {
            click: this.ev_clickPrevDate.bind(this)
          }
        }, {
          tag: 'button',
          class: 'cd-today',
          child: {
            text: 'Today'
          },
          on: {
            click: this.ev_clickToday.bind(this)
          }
        }, {
          tag: 'button',
          class: 'cd-next',
          child: 'span.mdi.mdi-chevron-right',
          on: {
            click: this.ev_clickNextDate.bind(this)
          }
        }, {
          tag: 'button',
          class: 'cd-next-2',
          child: 'span.mdi.mdi-chevron-double-right',
          on: {
            click: this.ev_clickNextPage.bind(this)
          }
        }, {
          tag: 'dateinput',
          props: {
            value: new Date()
          },
          on: {
            change: function () {
              console.log(this.value);
              thisWC.focusIntoDate(this.value || new Date());
            }
          }
        }]
      }]
    }, {
      class: 'cd-work-calendar-filter',
      child: [{
        tag: 'label',
        child: {
          text: "Lịch"
        }
      }, {
        tag: 'selectmenu',
        class: 'cd-work-calendar-type-select',
        props: {
          items: [{
            text: "Tháng",
            value: "MONTH"
          }, {
            text: "Tuần",
            value: "WEEK"
          }],
          disabled: false,
          value: "MONTH"
        },
        on: {
          change: function () {
            thisWC._viewCurrentCalendar();

            thisWC._loadCurrentCalendar();
          }
        }
      }]
    }]
  });
  this.$calendarType = $('selectmenu.cd-work-calendar-type-select', this.$header);
  this.$userId = $('.cd-work-calendar-user-select', this.$header);
  this.$boardId = $('.cd-work-calendar-board-select', this.$header);
  this.$focusDate = $('dateinput', this.$header);
};

WorkCalendar.prototype._createWeekFrame = function () {
  this.$weekFrame = _({
    tag: 'frame',
    class: 'cd-work-calendar-frame',
    style: {// backgroundColor: 'rgb(255, 220, 220)'
    },
    child: {
      tag: 'weektable',
      style: {
        width: '100%',
        height: '100%' // fix sau

      },
      props: {
        firstDayOfWeek: this.firstDayOfWeek
      },
      on: {
        visibleperiodchange: function (event) {
          console.log(event.visiblePeriod); //ngoài ra thời điểm bất kì có thể lấy bằng cách gọi
          //this là weektable

          console.log(this.getVisiblePeriod());
        }
      }
    }
  });
  this.$weekTable = $('weektable', this.$weekFrame);
};

WorkCalendar.prototype._createMonthFrame = function () {
  this.$monthFrame = _({
    tag: 'frame',
    class: 'cd-work-calendar-frame',
    style: {// backgroundColor: 'rgb(255, 220, 220)'
    },
    child: {
      tag: 'monthtable',
      style: {
        width: '100%',
        height: '100%' // fix sau

      },
      props: {
        firstDayOfWeek: this.firstDayOfWeek
      },
      on: {
        visibleperiodchange: function (event) {
          console.log(event.visiblePeriod); //ngoài ra thời điểm bất kì có thể lấy bằng cách gọi
          //this là weektable

          console.log(this.getVisiblePeriod());
        }
      }
    }
  });
  this.$monthTable = $('monthtable', this.$monthFrame);
};

WorkCalendar.prototype._createLoadModal = function () {
  this.$loadModal = _({
    tag: 'modal',
    class: 'cd-work-loading-modal',
    child: {
      tag: 'img',
      props: {
        src: 'https://absol.cf/assets/loadingicon/Spin1s.svg'
      }
    }
  });
};
/***
 * hàm gọi bởi getView, và chỉ được gọi 1 lần duy nhất
 */


WorkCalendar.prototype.createView = function () {
  this._createHeader();

  this._createWeekFrame();

  this._createMonthFrame();

  this.$view = _({
    class: 'cd-work-calendar',
    child: [this.$header, {
      tag: 'frameview',
      child: [this.$weekFrame, this.$monthFrame]
    }]
  });
  this.$frameView = $('frameview', this.$view);
  this.$attachhook = _('attachhook').addTo(this.$view).on('error', function () {
    _Dom.default.addToResizeSystem(this);

    this.requestUpdateSize();
  });
  this.$attachhook.requestUpdateSize = this.updateSize.bind(this);
};

WorkCalendar.prototype._viewCurrentCalendar = function () {
  var calendarType = this.$calendarType.value;

  switch (calendarType) {
    case "MONTH":
      this._viewMonthCalendar();

      break;

    case 'WEEK':
      this._viewWeekCalendar();

      break;
  }

  this.focusIntoDate(this.$focusDate.value);
};

WorkCalendar.prototype._viewMonthCalendar = function () {
  this.$monthFrame.requestActive();
};

WorkCalendar.prototype._viewWeekCalendar = function () {
  this.$weekFrame.requestActive();
};

WorkCalendar.prototype.updateSize = function () {
  var headerBound = this.$header.getBoundingClientRect();
  this.$frameView.addStyle('height', 'calc(100% - ' + headerBound.height + 'px)');
};

WorkCalendar.prototype.reload = function () {
  this._loadCurrentCalendar();
};

WorkCalendar.prototype._loadCurrentCalendar = function () {
  var calendarType = this.$calendarType.value;

  switch (calendarType) {
    case "MONTH":
      this._loadMonthCalendar();

      break;

    case "WEEK":
      this._loadWeekCalendar();

      break;
  }
};

WorkCalendar.prototype._loadMonthCalendar = function () {
  var thisWC = this; //xóa toàn bộ thẻ cũ trước khi thêm các thẻ mới

  this.$monthTable.removeAllActivity();
  var userId = this.$userId.value;
  var boardId = this.$boardId.value;
  this.adapter.getActivities(boardId, userId).then(function (propOfCards) {
    thisWC.activities = propOfCards.map(function (pC) {
      //hàm addActivity trả về một đối tượng CActivity với các property lấy từ card
      var act = thisWC.$monthTable.addActivity(pC);
      act.on('click', function () {
        thisWC.adapter.openActivity(act);
      }); //cũng có thể viết ngắn gọn :
      // act.on('click',  thisWC.adapter._openActivity.bind( thisWC.adapter, card));

      return act;
    });
  });
};

WorkCalendar.prototype._loadWeekCalendar = function () {
  var thisWC = this;
  this.$weekTable.removeAllActivity();
  var userId = this.$userId.value;
  var boardId = this.$boardId.value;
  this.adapter.getActivities(boardId, userId).then(function (propOfCards) {
    thisWC.activities = propOfCards.map(function (pC) {
      //hàm addActivity trả về một đối tượng CActivity với các property lấy từ card
      var act = thisWC.$weekTable.addActivity(pC);
      act.on('click', function () {
        thisWC.adapter.openActivity(act);
      });
      return act;
    });
  });
};
/***
 *
 * @param {Date} date
 */


WorkCalendar.prototype.focusIntoDate = function (date) {
  var calendarType = this.$calendarType.value;
  this.$focusDate.value = date;

  switch (calendarType) {
    case "MONTH":
      this.$monthTable.focusInto(date);
      break;

    case "WEEK":
      this.$weekTable.focusInto(date);
      break;
  }
};

WorkCalendar.prototype._showLoading = function () {
  var token = Math.random() * 10000 >> 0;
  this._loadingToken = token;
  if (!this.$loadModal) this._createLoadModal();
  this.$loadModal.addTo(document.body);
  return token;
};

WorkCalendar.prototype._closeLoading = function (token) {
  if (this._loadingToken != token) return;
  this.$loadModal.remove();
  this._loadingToken = -1;
};

WorkCalendar.prototype.ev_clickPrevDate = function () {
  var newFocusDate = (0, _datetime.prevDate)(this.$focusDate.value);
  this.focusIntoDate(newFocusDate);
};

WorkCalendar.prototype.ev_clickToday = function () {
  var newFocusDate = (0, _datetime.beginOfDay)(new Date());
  this.focusIntoDate(newFocusDate);
};

WorkCalendar.prototype.ev_clickNextDate = function () {
  var newFocusDate = (0, _datetime.nextDate)(this.$focusDate.value);
  this.focusIntoDate(newFocusDate);
};

WorkCalendar.prototype.ev_clickNextPage = function () {
  var calendarType = this.$calendarType.value;
  var newFocusDate;

  switch (calendarType) {
    case "MONTH":
      newFocusDate = this.$monthTable.nextPeriod();
      break;

    case "WEEK":
      newFocusDate = this.$weekTable.nextPeriod();
      break;
  }

  this.$focusDate.value = newFocusDate;
};

WorkCalendar.prototype.ev_clickPrevPage = function () {
  var calendarType = this.$calendarType.value;
  var newFocusDate;

  switch (calendarType) {
    case "MONTH":
      newFocusDate = this.$monthTable.prevPeriod();
      break;

    case "WEEK":
      newFocusDate = this.$weekTable.prevPeriod();
      break;
  }

  this.$focusDate.value = newFocusDate;
};

var _default = WorkCalendar;
exports.default = _default;

VaKeR 2022