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-acomp/out/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-acomp/out/ChromeTime24Picker.js.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>JSDoc: Source: ChromeTime24Picker.js</title>

    <script src="scripts/prettify/prettify.js"> </script>
    <script src="scripts/prettify/lang-css.js"> </script>
    <!--[if lt IE 9]>
      <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->
    <link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
    <link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>

<body>

<div id="main">

    <h1 class="page-title">Source: ChromeTime24Picker.js</h1>

    



    
    <section>
        <article>
            <pre class="prettyprint source linenums"><code>import ACore, {$$, $, _} from "../ACore";
import '../css/chrometimepicker.css';
import '../css/chrometime24picker.css';
import ChromeTimePicker from "./ChromeTimePicker";
import {beginOfDay, MILLIS_PER_DAY, MILLIS_PER_HOUR, MILLIS_PER_MINUTE} from "absol/src/Time/datetime";
import DomSignal from "absol/src/HTML5/DomSignal";
import {vScrollIntoView} from "./utils";

/**
 *
 * @param {number} leftOffset
 */
function calcMinHMTime(leftOffset) {
    var h = Math.floor(leftOffset / MILLIS_PER_HOUR);
    var m = Math.floor(leftOffset / MILLIS_PER_MINUTE) % 60;
    if (leftOffset % MILLIS_PER_MINUTE > 0) {
        if (m === 59) {
            h++;
            m = 0;
        } else {
            m++;
        }
    }
    var offset = h * MILLIS_PER_HOUR + m * MILLIS_PER_MINUTE;
    return {m: m, h: h, offset: offset};
}

/***
 * @extends AElement
 * @constructor
 */
function ChromeTime24Picker() {
    this.$lists = $$('.as-chrome-time-picker-list', this);
    $$('.as-chrome-time-picker-scroller', this).forEach(ChromeTimePicker.prototype._makeScroller.bind(this));
    this.$hours = $$('.as-chrome-time-picker-h24 .as-chrome-time-picker-btn', this);
    this.$minutes = $$('.as-chrome-time-picker-m60 .as-chrome-time-picker-btn', this);
    this.$lists[0].on('click', this.eventHandler.clickHour24List);
    this.$lists[1].on('click', this.eventHandler.clickMinList);
    this.$domSignal = _('attachhook').addTo(this);
    this.domSignal = new DomSignal(this.$attachhook);
    this.domSignal.on('scrollToSelectedMinute', this._scrollToSelectedMinute.bind(this))
        .on('scrollToSelectedHour', this._scrollToSelectedHour.bind(this));
    this._dayOffset = 0;
    this._value = 0;
    this.dayOffset = new Date();
    this.value = 2 * MILLIS_PER_MINUTE;
}


ChromeTime24Picker.tag = 'ChromeTime24Picker'.toLowerCase();


ChromeTime24Picker.render = function () {
    return _({
        extendEvent: 'change',
        class: ['as-chrome-time-24-picker', 'as-chrome-time-picker'],
        child: [
            {
                class: ['as-chrome-time-picker-scroller', 'as-chrome-time-24-picker-hour'],
                child: [
                    {tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up'},
                    {tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down'},
                    {
                        class: ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-h24'],
                        child: {
                            class: 'as-chrome-time-picker-list',
                            child: Array(24).fill(0).map(function (u, i) {
                                return {
                                    tag: 'button',
                                    class: 'as-chrome-time-picker-btn',
                                    child: [
                                        {
                                            tag: 'span',
                                            child: {text: i + ''}
                                        },
                                        {
                                            tag: 'span',
                                            class: 'as-chrome-time-24-picker-tomorrow-text',
                                            child: {text: ' (Hôm sau)'}
                                        }
                                    ],
                                    props: {
                                        __hour__: i
                                    }
                                }
                            })
                        }
                    }
                ]

            },
            {
                class: 'as-chrome-time-picker-scroller',
                child: [
                    {tag: 'button', class: 'as-chrome-time-picker-scroller-up', child: 'span.mdi.mdi-chevron-up'},
                    {tag: 'button', class: 'as-chrome-time-picker-scroller-down', child: 'span.mdi.mdi-chevron-down'},
                    {
                        class: ['as-chrome-time-picker-viewport', 'as-chrome-time-picker-m60'],
                        child: {
                            class: 'as-chrome-time-picker-list',
                            child: Array(60).fill(0).map(function (u, i) {
                                return {
                                    tag: 'button',
                                    class: 'as-chrome-time-picker-btn',

                                    child: {
                                        tag: 'span',
                                        child: {text: i + ''}
                                    },
                                    props: {
                                        __min__: i
                                    }
                                }
                            })
                        }
                    }
                ]
            }
        ]

    });
};

ChromeTime24Picker.prototype._updateHourNumbers = function () {
    var mH = calcMinHMTime(this.dayOffset).h;
    for (var i = 0; i &lt; this.$hours.length; ++i) {
        this.$hours[i].firstChild.firstChild.data = (mH + i) % 24;
        if (mH + i >= 24) {
            this.$hours[i].addClass('as-in-tomorrow');
        } else {
            this.$hours[i].removeClass('as-in-tomorrow');
        }
    }
};

ChromeTime24Picker.prototype._updateMinuteNumbers = function () {
    var minHM = calcMinHMTime(this.dayOffset);
    var h = minHM.h;
    var m = minHM.m;
    var vH = Math.floor((this.dayOffset + this.value) / MILLIS_PER_HOUR);
    for (var i = 0; i &lt; this.$minutes.length; ++i) {
        if (vH === h &amp;&amp; i &lt; m) {
            this.$minutes[i].disabled = true;

        } else {
            this.$minutes[i].disabled = false;
        }
    }
};

ChromeTime24Picker.prototype._updateSelectedHour = function () {
    var h = Math.floor(this.dayOffset / MILLIS_PER_HOUR);
    var vH = Math.floor((this.dayOffset + this.value) / MILLIS_PER_HOUR);
    var d = vH - h;
    for (var i = 0; i &lt; this.$hours.length; ++i) {
        if (i === d) {
            this.$hours[i].addClass('as-selected');
            this.$selectedHour = this.$hours[i];
        } else {
            this.$hours[i].removeClass('as-selected');
        }
    }
    this._scrollToSelectedHour();
};

ChromeTime24Picker.prototype._updateSelectedMinute = function () {
    var vM = Math.floor((this.dayOffset + this.value) / MILLIS_PER_MINUTE) % 60;
    for (var i = 0; i &lt; this.$minutes.length; ++i) {
        if (vM === i) {
            this.$minutes[i].addClass('as-selected');
            this.$selectedMinute = this.$minutes[i];
        } else {
            this.$minutes[i].removeClass('as-selected');
        }
    }
    this._scrollToSelectedMinute();
};

ChromeTime24Picker.prototype._update = function () {
    this._updateHourNumbers();
    this._updateMinuteNumbers();
    this._updateSelectedHour();
    this._updateSelectedMinute();
};

ChromeTime24Picker.prototype._scrollToSelectedHour = function () {
    if (this.isDescendantOf(document.body)) {
        if (this.$selectedHour) {
            vScrollIntoView(this.$selectedHour);
        }
    } else {
        this.domSignal.emit('scrollToSelectedHour');
    }
};

ChromeTime24Picker.prototype._scrollToSelectedMinute = function () {
    if (this.isDescendantOf(document.body)) {
        if (this.$selectedMinute) {
            vScrollIntoView(this.$selectedMinute);
        }
    } else {
        this.domSignal.emit('scrollToSelectedMinute');
    }
};

ChromeTime24Picker.prototype.notifyChange = function () {
    this.emit('change', {type: 'change'}, this);
};


ChromeTime24Picker.property = {};

ChromeTime24Picker.property.dayOffset = {
    /***
     *
     * @param {number|Date} value
     */
    set: function (value) {
        if (typeof value === "number") {
            value = Math.max(0, value % MILLIS_PER_DAY);//10p
        } else if (value instanceof Date) {
            value = Math.max(0, (value.getTime() - beginOfDay(value).getTime()) % MILLIS_PER_DAY);
        } else value = 0;
        this._dayOffset = value;
        this._update();
    },
    get: function () {
        return this._dayOffset;
    }
};


ChromeTime24Picker.property.value = {
    /***
     * @this ChromeTime24Picker
     * @param value
     */
    set: function (value) {
        this._value = value;
        this._update();
    },
    get: function () {
        return this._value;
    }
};

ChromeTime24Picker.property.hour = {
    get: function () {
        return Math.floor((this.dayOffset + this.value) / MILLIS_PER_HOUR);
    }
};


ChromeTime24Picker.property.minute = {
    get: function () {
        return Math.floor((this.dayOffset + this.value) / MILLIS_PER_MINUTE) % 60;
    }
};


ChromeTime24Picker.eventHandler = {};

ChromeTime24Picker.eventHandler.clickHour24List = function (event) {
    var minHM = calcMinHMTime(this.dayOffset);
    var h = minHM.h;
    var vM = Math.floor((this.dayOffset + this.value) / MILLIS_PER_MINUTE) % 60;
    var hour;
    var minChanged = false;
    var prevValue = this._value;
    if ('__hour__' in event.target) hour = event.target.__hour__;
    if ('__hour__' in event.target.parentElement) hour = event.target.parentElement.__hour__;
    if (hour !== undefined) {
        if (hour === 0 &amp;&amp; minHM.m > vM) {
            vM = minHM.m;
            minChanged = true;
        }
        this._value = (h + hour) * MILLIS_PER_HOUR + vM * MILLIS_PER_MINUTE - this.dayOffset;
        this._updateSelectedHour();
        this._updateMinuteNumbers();
        if (minChanged) this._updateSelectedMinute();
        if (prevValue !== this._value)
            this.notifyChange(event);
    }
};


ChromeTime24Picker.eventHandler.clickMinList = function (event) {
    var vH = Math.floor((this.dayOffset + this.value) / MILLIS_PER_HOUR);
    var min;
    var prevValue = this._value;
    if ('__min__' in event.target) min = event.target.__min__;
    if ('__min__' in event.target.parentElement) min = event.target.parentElement.__min__;
    if (min !== undefined) {
        this._value = vH * MILLIS_PER_HOUR + min * MILLIS_PER_MINUTE - this.dayOffset;
        this._updateSelectedMinute();
        this.notifyChange(event);
        if (prevValue !== this._value)
            this.notifyChange(event);
    }
};

ACore.install(ChromeTime24Picker);

export default ChromeTime24Picker;</code></pre>
        </article>
    </section>




</div>

<nav>
    <h2><a href="index.html">Home</a></h2><h3>Classes</h3><ul><li><a href="CalendarInput.html">CalendarInput</a></li><li><a href="CandyBoxButton.html">CandyBoxButton</a></li><li><a href="ChromeCalendar.html">ChromeCalendar</a></li><li><a href="CircleSectionLabel.html">CircleSectionLabel</a></li><li><a href="Cluster.html">Cluster</a></li><li><a href="ClusterIconInfo.html">ClusterIconInfo</a></li><li><a href="ClusterIconStyle.html">ClusterIconStyle</a></li><li><a href="ContextCaptor.html">ContextCaptor</a></li><li><a href="DateInput.html">DateInput</a></li><li><a href="DateInput2.html">DateInput2</a></li><li><a href="DropPanel.html">DropPanel</a></li><li><a href="DropPanelStack.html">DropPanelStack</a></li><li><a href="FlexiconButton.html">FlexiconButton</a></li><li><a href="MarkerClusterer.html">MarkerClusterer</a></li><li><a href="MarkerClustererOptions.html">MarkerClustererOptions</a></li><li><a href="SearchTextInput.html">SearchTextInput</a></li><li><a href="Sprite.html">Sprite</a></li><li><a href="Time24Input.html">Time24Input</a></li></ul><h3>Events</h3><ul><li><a href="MarkerClusterer.html#event:click">click</a></li><li><a href="MarkerClusterer.html#event:clusteringbegin">clusteringbegin</a></li><li><a href="MarkerClusterer.html#event:clusteringend">clusteringend</a></li><li><a href="MarkerClusterer.html#event:mouseout">mouseout</a></li><li><a href="MarkerClusterer.html#event:mouseover">mouseover</a></li></ul><h3>Global</h3><ul><li><a href="global.html#$windowTitleText">$windowTitleText</a></li><li><a href="global.html#AddIcon">AddIcon</a></li><li><a href="global.html#calcMinHMTime">calcMinHMTime</a></li><li><a href="global.html#cleanMenuItemProperty">cleanMenuItemProperty</a></li><li><a href="global.html#preventNotNumberInput">preventNotNumberInput</a></li><li><a href="global.html#vScrollIntoView">vScrollIntoView</a></li></ul>
</nav>

<br class="clear">

<footer>
    Documentation generated by <a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.0</a> on Wed Jan 04 2023 18:18:58 GMT+0700 (Indochina Time)
</footer>

<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>

VaKeR 2022