com.phloxui
Version:
PhloxUI Ng2+ Framework
117 lines (116 loc) • 10.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { Injectable } from '@angular/core';
import { PhloxAppInfo } from '../component/model/PhloxAppInfo';
/**
* <p style="text-indent: 2em;">
* A <code>ng</code> service handles the <code>UI</code> system clock logic. The <code>UI</code> system clock is mainly responsible for periodically
* update the system-wide clock to other components. Using clock provided by <code>this</code> service instead of using <code>setInterval()</code> or
* <code>setTimeout()</code> method may be more benefitial in many circumstances. For example, if you have many <code>UI</code> components needed to
* be periodically updated itself in background, without <code>this</code> service, you may need to use <code>setTimeout()</code> / <code>setInterval()</code>
* method for each component. This leads to having poor <code>application</code>'s performance. In spite of that, you can use the <code>system clock</code>
* provided by <code>this</code> service to let all <code>UI</code> components being updated at the same <code>clock tick</code> rate. Furthermore,
* <code>this</code> service also provides you a capability to configure its <code>interval</code>. So, you can haste up or slow down system-wide <code>UI</code>
* updating rate in a single place.
* </p>
*
* @author shiorin, tee4cute
*/
var UISystemClock = /** @class */ (function () {
function UISystemClock() {
this.currentDateTime = new Date();
// ! TODO We should auto load the default value from somewhere else instead of hard-coded static field.
this.timerInterval = PhloxAppInfo.DEFAULT_UI_SYSTEM_CLOCK_INTERVAL;
// if(phloxAppService != null){
// phloxAppService.getAppInfo().then((result) => {
// this.phloxAppInfo = result;
// let setting = this.phloxAppInfo.settings;
//
// if (setting.UI_SYSTEM_CLOCK_INTERVAL !== null && typeof setting.UI_SYSTEM_CLOCK_INTERVAL === 'number') {
// this.updateTimerInterval();
// }
// });
// }
this.updateTimerInterval();
}
/**
* @return {?}
*/
UISystemClock.prototype.updateTimerInterval = /**
* @return {?}
*/
function () {
var _this = this;
// update interval
if (this.delayTimer !== null && typeof this.delayTimer !== 'undefined') {
clearInterval(this.delayTimer);
this.delayTimer = null;
}
this.delayTimer = setInterval(function () {
_this.currentDateTime = new Date();
}, this.timerInterval);
};
/**
* <p style="text-indent: 1em;">
* Get current <code>system clock</code> datetime.
* </p>
*
* @return {?} A <code>Date</code> object representing current system datetime.
*/
UISystemClock.prototype.getCurrentClockDateTime = /**
* <p style="text-indent: 1em;">
* Get current <code>system clock</code> datetime.
* </p>
*
* @return {?} A <code>Date</code> object representing current system datetime.
*/
function () {
// return as a clone of date
return new Date(this.currentDateTime);
};
/**
* <p style="text-indent: 1em;">
* Get current <code>system clock</code> time in milliseconds.
* </p>
*
* @return {?} A number representing current system datetime in milliseconds.
*/
UISystemClock.prototype.getCurrentClockTime = /**
* <p style="text-indent: 1em;">
* Get current <code>system clock</code> time in milliseconds.
* </p>
*
* @return {?} A number representing current system datetime in milliseconds.
*/
function () {
// return as a millisec
return this.currentDateTime.getTime();
};
UISystemClock.decorators = [
{ type: Injectable },
];
/** @nocollapse */
UISystemClock.ctorParameters = function () { return []; };
return UISystemClock;
}());
export { UISystemClock };
function UISystemClock_tsickle_Closure_declarations() {
/** @type {!Array<{type: !Function, args: (undefined|!Array<?>)}>} */
UISystemClock.decorators;
/**
* @nocollapse
* @type {function(): !Array<(null|{type: ?, decorators: (undefined|!Array<{type: !Function, args: (undefined|!Array<?>)}>)})>}
*/
UISystemClock.ctorParameters;
/** @type {?} */
UISystemClock.prototype.currentDateTime;
/** @type {?} */
UISystemClock.prototype.phloxAppInfo;
/** @type {?} */
UISystemClock.prototype.timerInterval;
/** @type {?} */
UISystemClock.prototype.delayTimer;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVUlTeXN0ZW1DbG9jay5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvc2VydmljZS9VSVN5c3RlbUNsb2NrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lBNEI3RDtRQUNFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQzs7UUFHbEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUMsZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7O1FBYW5FLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0tBQzVCOzs7O0lBRU8sMkNBQW1COzs7Ozs7UUFFekIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDdkUsYUFBYSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztTQUN4QjtRQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDO1lBQzVCLEtBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztTQUNuQyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQzs7Ozs7Ozs7O0lBVWxCLCtDQUF1Qjs7Ozs7Ozs7O1FBRTVCLE1BQU0sQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7Ozs7Ozs7OztJQVVqQywyQ0FBbUI7Ozs7Ozs7OztRQUV4QixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQzs7O2dCQWhFekMsVUFBVTs7Ozt3QkFsQlg7O1NBbUJhLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4vL2ltcG9ydCB7IFBobG94QXBwSW5mb1NlcnZpY2UgfSBmcm9tICcuL1BobG94QXBwSW5mb1NlcnZpY2Uuc2VydmljZSc7XG5pbXBvcnQgeyBQaGxveEFwcEluZm8gfSBmcm9tICcuLi9jb21wb25lbnQvbW9kZWwvUGhsb3hBcHBJbmZvJztcblxuLyoqXG4gKiA8cCBzdHlsZT1cInRleHQtaW5kZW50OiAyZW07XCI+XG4gKiBBIDxjb2RlPm5nPC9jb2RlPiBzZXJ2aWNlIGhhbmRsZXMgdGhlIDxjb2RlPlVJPC9jb2RlPiBzeXN0ZW0gY2xvY2sgbG9naWMuIFRoZSA8Y29kZT5VSTwvY29kZT4gc3lzdGVtIGNsb2NrIGlzIG1haW5seSByZXNwb25zaWJsZSBmb3IgcGVyaW9kaWNhbGx5XG4gKiB1cGRhdGUgdGhlIHN5c3RlbS13aWRlIGNsb2NrIHRvIG90aGVyIGNvbXBvbmVudHMuIFVzaW5nIGNsb2NrIHByb3ZpZGVkIGJ5IDxjb2RlPnRoaXM8L2NvZGU+IHNlcnZpY2UgaW5zdGVhZCBvZiB1c2luZyA8Y29kZT5zZXRJbnRlcnZhbCgpPC9jb2RlPiBvclxuICogPGNvZGU+c2V0VGltZW91dCgpPC9jb2RlPiBtZXRob2QgbWF5IGJlIG1vcmUgYmVuZWZpdGlhbCBpbiBtYW55IGNpcmN1bXN0YW5jZXMuIEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSBtYW55IDxjb2RlPlVJPC9jb2RlPiBjb21wb25lbnRzIG5lZWRlZCB0b1xuICogYmUgcGVyaW9kaWNhbGx5IHVwZGF0ZWQgaXRzZWxmIGluIGJhY2tncm91bmQsIHdpdGhvdXQgPGNvZGU+dGhpczwvY29kZT4gc2VydmljZSwgeW91IG1heSBuZWVkIHRvIHVzZSA8Y29kZT5zZXRUaW1lb3V0KCk8L2NvZGU+IC8gPGNvZGU+c2V0SW50ZXJ2YWwoKTwvY29kZT5cbiAqIG1ldGhvZCBmb3IgZWFjaCBjb21wb25lbnQuIFRoaXMgbGVhZHMgdG8gaGF2aW5nIHBvb3IgPGNvZGU+YXBwbGljYXRpb248L2NvZGU+J3MgcGVyZm9ybWFuY2UuIEluIHNwaXRlIG9mIHRoYXQsIHlvdSBjYW4gdXNlIHRoZSA8Y29kZT5zeXN0ZW0gY2xvY2s8L2NvZGU+XG4gKiBwcm92aWRlZCBieSA8Y29kZT50aGlzPC9jb2RlPiBzZXJ2aWNlIHRvIGxldCBhbGwgPGNvZGU+VUk8L2NvZGU+IGNvbXBvbmVudHMgYmVpbmcgdXBkYXRlZCBhdCB0aGUgc2FtZSA8Y29kZT5jbG9jayB0aWNrPC9jb2RlPiByYXRlLiBGdXJ0aGVybW9yZSxcbiAqIDxjb2RlPnRoaXM8L2NvZGU+IHNlcnZpY2UgYWxzbyBwcm92aWRlcyB5b3UgYSBjYXBhYmlsaXR5IHRvIGNvbmZpZ3VyZSBpdHMgPGNvZGU+aW50ZXJ2YWw8L2NvZGU+LiBTbywgeW91IGNhbiBoYXN0ZSB1cCBvciBzbG93IGRvd24gc3lzdGVtLXdpZGUgPGNvZGU+VUk8L2NvZGU+XG4gKiB1cGRhdGluZyByYXRlIGluIGEgc2luZ2xlIHBsYWNlLlxuICogPC9wPlxuICpcbiAqIEBhdXRob3Igc2hpb3JpbiwgdGVlNGN1dGVcbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIFVJU3lzdGVtQ2xvY2sge1xuXG4gIC8vICEgVE9ETyBEbyB3ZSBuZWVkIHRvIHNpZ25hbCB0aGUgXCJjbG9jayB0aWNrXCIgZXZlbnQgb3V0IGZyb20gdGhpcyBzZXJ2aWNlPz8/XG5cbiAgcHJpdmF0ZSBjdXJyZW50RGF0ZVRpbWU6IERhdGU7XG4gIHByaXZhdGUgcGhsb3hBcHBJbmZvOiBQaGxveEFwcEluZm87XG5cbiAgLy8gISBTaG91bGQgd2UgcHJvdmlkZSBnZXR0ZXIvc2V0dGVyIGZvciB0aGlzIGZpZWxkIHRvIGxldCB0aGUgb3RoZXIgY29uZmlndXJlIHRoaXMgdmFsdWUgYXQgcnVudGltZT9cbiAgcHJpdmF0ZSB0aW1lckludGVydmFsOiBudW1iZXI7XG4gIHByaXZhdGUgZGVsYXlUaW1lcjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY3VycmVudERhdGVUaW1lID0gbmV3IERhdGUoKTtcblxuICAgIC8vICEgVE9ETyBXZSBzaG91bGQgYXV0byBsb2FkIHRoZSBkZWZhdWx0IHZhbHVlIGZyb20gc29tZXdoZXJlIGVsc2UgaW5zdGVhZCBvZiBoYXJkLWNvZGVkIHN0YXRpYyBmaWVsZC5cbiAgICB0aGlzLnRpbWVySW50ZXJ2YWwgPSBQaGxveEFwcEluZm8uREVGQVVMVF9VSV9TWVNURU1fQ0xPQ0tfSU5URVJWQUw7XG5cbiAgICAvLyAgICAgICAgaWYocGhsb3hBcHBTZXJ2aWNlICE9IG51bGwpe1xuICAgIC8vICAgICAgICAgICAgcGhsb3hBcHBTZXJ2aWNlLmdldEFwcEluZm8oKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgICB0aGlzLnBobG94QXBwSW5mbyA9IHJlc3VsdDtcbiAgICAvLyAgICAgICAgICAgICAgICBsZXQgc2V0dGluZyA9IHRoaXMucGhsb3hBcHBJbmZvLnNldHRpbmdzO1xuICAgIC8vXG4gICAgLy8gICAgICAgICAgICAgICAgaWYgKHNldHRpbmcuVUlfU1lTVEVNX0NMT0NLX0lOVEVSVkFMICE9PSBudWxsICYmIHR5cGVvZiBzZXR0aW5nLlVJX1NZU1RFTV9DTE9DS19JTlRFUlZBTCA9PT0gJ251bWJlcicpIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVUaW1lckludGVydmFsKCk7XG4gICAgLy8gICAgICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgICAgfSk7XG4gICAgLy8gICAgICAgIH1cblxuICAgIHRoaXMudXBkYXRlVGltZXJJbnRlcnZhbCgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVUaW1lckludGVydmFsKCk6IHZvaWQge1xuICAgIC8vIHVwZGF0ZSBpbnRlcnZhbFxuICAgIGlmICh0aGlzLmRlbGF5VGltZXIgIT09IG51bGwgJiYgdHlwZW9mIHRoaXMuZGVsYXlUaW1lciAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5kZWxheVRpbWVyKTtcbiAgICAgIHRoaXMuZGVsYXlUaW1lciA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuZGVsYXlUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudERhdGVUaW1lID0gbmV3IERhdGUoKTtcbiAgICB9LCB0aGlzLnRpbWVySW50ZXJ2YWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIDxwIHN0eWxlPVwidGV4dC1pbmRlbnQ6IDFlbTtcIj5cbiAgICogR2V0IGN1cnJlbnQgPGNvZGU+c3lzdGVtIGNsb2NrPC9jb2RlPiBkYXRldGltZS5cbiAgICogPC9wPlxuICAgKlxuICAgKiBAcmV0dXJuIEEgPGNvZGU+RGF0ZTwvY29kZT4gb2JqZWN0IHJlcHJlc2VudGluZyBjdXJyZW50IHN5c3RlbSBkYXRldGltZS5cbiAgICovXG4gIHB1YmxpYyBnZXRDdXJyZW50Q2xvY2tEYXRlVGltZSgpOiBEYXRlIHtcbiAgICAvLyByZXR1cm4gYXMgYSBjbG9uZSBvZiBkYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKHRoaXMuY3VycmVudERhdGVUaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiA8cCBzdHlsZT1cInRleHQtaW5kZW50OiAxZW07XCI+XG4gICAqIEdldCBjdXJyZW50IDxjb2RlPnN5c3RlbSBjbG9jazwvY29kZT4gdGltZSBpbiBtaWxsaXNlY29uZHMuXG4gICAqIDwvcD5cbiAgICpcbiAgICogQHJldHVybiBBIG51bWJlciByZXByZXNlbnRpbmcgY3VycmVudCBzeXN0ZW0gZGF0ZXRpbWUgaW4gbWlsbGlzZWNvbmRzLlxuICAgKi9cbiAgcHVibGljIGdldEN1cnJlbnRDbG9ja1RpbWUoKTogbnVtYmVyIHtcbiAgICAvLyByZXR1cm4gYXMgYSBtaWxsaXNlY1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnREYXRlVGltZS5nZXRUaW1lKCk7XG4gIH1cbn1cbiJdfQ==