UNPKG

ice-utilities

Version:

Utilities for manage arrays, breadcrumb, dom elements, dates, injectors, local storage, login, objects, router animations, router, session storage, strings and translate utilities, encryption, for angular 6+ with ECMAScript 6 - ECMAScript 2015

260 lines 19.5 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { SessionUtils } from './sessionUtils'; import { StringUtils } from './stringUtils'; import { ObjectUtils } from './objectUtils'; import { TranslateUtils } from './translateUtils'; import notify from 'devextreme/ui/notify'; // @dynamic /** * @abstract */ export class GlobalUtils { /** * @param {?} responsiveWidth * @return {?} */ static setResponsiveWidth(responsiveWidth) { if (!this.responsiveWidth && responsiveWidth) { this.responsiveWidth = responsiveWidth; } } /** * @param {?} timeshow * @return {?} */ static setTimeShow(timeshow) { if (!this.timeshow && timeshow) { this.timeshow = timeshow; } } /** * @param {?} obj1 * @param {?} obj2 * @return {?} */ static areEquals(obj1, obj2) { return JSON.stringify(obj1) === JSON.stringify(obj2); } /** * @param {?} data * @return {?} */ static isEmptyData(data) { return (this.areEquals(data, '') || this.areEquals(data, 0) || data === null || this.areEquals(data, {}) || this.areEquals(data, [])); } /** * @param {?} data * @return {?} */ static isUndefined(data) { return typeof data === 'undefined'; } /** * @param {?} name * @return {?} */ static setSysname(name) { SessionUtils.setSession('sysname', name); } /** * @return {?} */ static getSysname() { return SessionUtils.getSession('sysname'); } /** * @param {?} width * @param {?} actstt * @return {?} */ static autoFixSidebarState(width, actstt) { if (width <= this.responsiveWidth) { return 'inres'; } else { if (actstt === 'inres') { return 'out'; } else { return actstt; } } } /** * @param {?} stt * @param {?} width * @param {?} actstt * @param {?} responsiveWidth * @return {?} */ static fixsidebarState(stt, width, actstt, responsiveWidth) { if (width <= responsiveWidth) { if (actstt === 'inres') { return 'in'; } else { return 'inres'; } } else { return stt; } } /** * @param {?} stt * @param {?} width * @param {?} responsiveWidth * @return {?} */ static fixContainerState(stt, width, responsiveWidth) { if (width <= responsiveWidth) { return 'inres'; } else { return stt; } } /** * @param {?} men * @param {?} data * @return {?} */ static successNotify(men, data) { notify(TranslateUtils.Translate(men) + ' ' + JSON.stringify(data), 'success', this.timeshow); } /** * @param {?} error * @param {?} men * @param {?=} type * @return {?} */ static cathNotify(error, men, type = 'warning') { /** @type {?} */ const tmen = TranslateUtils.Translate(men); this.notifyError(tmen, error, type); } /** * @private * @param {?} tmen * @param {?} error * @param {?} type * @return {?} */ static notifyError(tmen, error, type) { notify(`${tmen} :${this.errorCath(error)}`, type, this.timeshow); if (type === 'error') { throw new Error(tmen); } } /** * @param {?} error * @param {?} men * @param {?} extraMen * @param {?=} type * @return {?} */ static cathNotifyExtraMen(error, men, extraMen, type = 'warning') { /** @type {?} */ const tmen = `${TranslateUtils.Translate(men)} ${extraMen}`; this.notifyError(tmen, error, type); } /** * @param {?} error * @return {?} */ static errorCath(error) { /** @type {?} */ let errorMen = ''; if (StringUtils.isString(error)) { errorMen = error; } else if (ObjectUtils.isObject(error)) { if (error.error) { if (StringUtils.isString(error.error)) { errorMen = error.error; } else if (ObjectUtils.isObject(error.error) && error.error.ResponseStatus) { if (error.error.ResponseStatus.Message) { errorMen = error.error.ResponseStatus.Message; } else if (error.error.ResponseStatus.ErrorCode) { errorMen = error.error.ResponseStatus.ErrorCode; } } else if (StringUtils.isString(error.message)) { errorMen = error.message; } } else { if (error.message) { errorMen = error.message; } else if (error.statusText) { errorMen = error.statusText; } } } return TranslateUtils.Translate(errorMen); } /** * @return {?} */ static getNativeWindow() { return window; } /** * @param {?} url * @param {?=} config * @return {?} */ static openWindow(url, config) { return window.open(url, '', 'location=no,width=1800,height=900,scrollbars=yes,top=100,left=700,resizable = no'); } /** * @param {?=} whm * @return {?} */ static setWithHeight(whm) { if (whm && whm.fullScreen) { return { fullscreen: 1, }; } /** @type {?} */ let mm = 1.5; if (whm && whm.Media) { mm = whm.Media; } /** @type {?} */ const val = { width: window.innerWidth / mm, height: window.innerHeight / mm }; if (whm && whm.hasOwnProperty('width')) { val.width = whm.width; } if (whm && whm.hasOwnProperty('height')) { val.height = whm.height; } return val; } } GlobalUtils.responsiveWidth = 960; GlobalUtils.timeshow = 8000; if (false) { /** * @type {?} * @private */ GlobalUtils.responsiveWidth; /** * @type {?} * @private */ GlobalUtils.timeshow; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsVXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9pY2UtdXRpbGl0aWVzLyIsInNvdXJjZXMiOlsibGliL3V0aWxpdGllcy9nbG9iYWxVdGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzVDLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDMUMsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFDaEQsT0FBTyxNQUFNLE1BQU0sc0JBQXNCLENBQUM7Ozs7O0FBRzFDLE1BQU0sT0FBZ0IsV0FBVzs7Ozs7SUFHL0IsTUFBTSxDQUFDLGtCQUFrQixDQUFDLGVBQXVCO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLGVBQWUsRUFBRTtZQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztTQUN4QztJQUNILENBQUM7Ozs7O0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFnQjtRQUNqQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxRQUFRLEVBQUU7WUFDOUIsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7U0FDMUI7SUFDSCxDQUFDOzs7Ozs7SUFDRCxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVMsRUFBRSxJQUFTO1FBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7Ozs7O0lBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFTO1FBQzFCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxD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QixvQkFBUSxHQUFHLElBQUksQ0FBQzs7Ozs7O0lBRC9CLDRCQUFxQzs7Ozs7SUFDckMscUJBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtTZXNzaW9uVXRpbHN9IGZyb20gJy4vc2Vzc2lvblV0aWxzJztcclxuaW1wb3J0IHtTdHJpbmdVdGlsc30gZnJvbSAnLi9zdHJpbmdVdGlscyc7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gJy4vb2JqZWN0VXRpbHMnO1xyXG5pbXBvcnQge1RyYW5zbGF0ZVV0aWxzfSBmcm9tICcuL3RyYW5zbGF0ZVV0aWxzJztcclxuaW1wb3J0IG5vdGlmeSBmcm9tICdkZXZleHRyZW1lL3VpL25vdGlmeSc7XHJcbmltcG9ydCB7V2lkdGhIZWlnaHRNZWR9IGZyb20gJy4uL2ludGVyZmFjZXMvV2lkdGhIZWlnaHRNZWQnO1xyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2xvYmFsVXRpbHMge1xyXG4gIHByaXZhdGUgc3RhdGljIHJlc3BvbnNpdmVXaWR0aCA9IDk2MDtcclxuICBwcml2YXRlIHN0YXRpYyB0aW1lc2hvdyA9IDgwMDA7XHJcbiAgc3RhdGljIHNldFJlc3BvbnNpdmVXaWR0aChyZXNwb25zaXZlV2lkdGg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLnJlc3BvbnNpdmVXaWR0aCAmJiByZXNwb25zaXZlV2lkdGgpIHtcclxuICAgICAgdGhpcy5yZXNwb25zaXZlV2lkdGggPSByZXNwb25zaXZlV2lkdGg7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0YXRpYyBzZXRUaW1lU2hvdyh0aW1lc2hvdzogbnVtYmVyKSB7XHJcbiAgICBpZiAoIXRoaXMudGltZXNob3cgJiYgdGltZXNob3cpIHtcclxuICAgICAgdGhpcy50aW1lc2hvdyA9IHRpbWVzaG93O1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgYXJlRXF1YWxzKG9iajE6IGFueSwgb2JqMjogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqMSkgPT09IEpTT04uc3RyaW5naWZ5KG9iajIpO1xyXG4gIH1cclxuICBzdGF0aWMgaXNFbXB0eURhdGEoZGF0YTogYW55KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKHRoaXMuYXJlRXF1YWxzKGRhdGEsICcnKSB8fCB0aGlzLmFyZUVxdWFscyhkYXRhLCAwKSB8fCBkYXRhICA9PT0gbnVsbCB8fCB0aGlzLmFyZUVxdWFscyhkYXRhLCB7fSkgfHwgdGhpcy5hcmVFcXVhbHMoZGF0YSwgW10pKTtcclxuICB9XHJcbiAgc3RhdGljIGlzVW5kZWZpbmVkKGRhdGE6IGFueSk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHR5cGVvZiBkYXRhID09PSAndW5kZWZpbmVkJztcclxuICB9XHJcbiAgc3RhdGljIHNldFN5c25hbWUgKG5hbWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgU2Vzc2lvblV0aWxzLnNldFNlc3Npb24oJ3N5c25hbWUnLCBuYW1lKTtcclxuICB9XHJcbiAgc3RhdGljIGdldFN5c25hbWUgKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU2Vzc2lvblV0aWxzLmdldFNlc3Npb24oJ3N5c25hbWUnKTtcclxuICB9XHJcbiAgc3RhdGljIGF1dG9GaXhTaWRlYmFyU3RhdGUgKHdpZHRoOiBudW1iZXIsIGFjdHN0dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh3aWR0aCA8PSB0aGlzLnJlc3BvbnNpdmVXaWR0aCkge1xyXG4gICAgICByZXR1cm4gJ2lucmVzJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhY3RzdHQgPT09ICdpbnJlcycpIHtcclxuICAgICAgICByZXR1cm4gJ291dCc7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGFjdHN0dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZml4c2lkZWJhclN0YXRlIChzdHQ6IHN0cmluZywgd2lkdGg6IG51bWJlciwgYWN0c3R0OiBzdHJpbmcsIHJlc3BvbnNpdmVXaWR0aDogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGlmICh3aWR0aCA8PSByZXNwb25zaXZlV2lkdGgpIHtcclxuICAgICAgaWYgKGFjdHN0dCA9PT0gJ2lucmVzJykge1xyXG4gICAgICAgIHJldHVybiAnaW4nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiAnaW5yZXMnO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc3R0O1xyXG4gICAgfVxyXG4gIH1cclxuICBzdGF0aWMgZml4Q29udGFpbmVyU3RhdGUgKHN0dDogc3RyaW5nLCB3aWR0aDogbnVtYmVyLCByZXNwb25zaXZlV2lkdGg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAod2lkdGggPD0gcmVzcG9uc2l2ZVdpZHRoKSB7XHJcbiAgICAgIHJldHVybiAnaW5yZXMnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHN0dDtcclxuICAgIH1cclxuICB9XHJcbiAgc3RhdGljIHN1Y2Nlc3NOb3RpZnkobWVuOiBzdHJpbmcsIGRhdGE6IGFueSkge1xyXG4gICAgbm90aWZ5KFRyYW5zbGF0ZVV0aWxzLlRyYW5zbGF0ZShtZW4pICsgJyAnXHJcbiAgICAgICsgSlNPTi5zdHJpbmdpZnkoZGF0YSksICdzdWNjZXNzJywgdGhpcy50aW1lc2hvdyk7XHJcbiAgfVxyXG4gIHN0YXRpYyBjYXRoTm90aWZ5IChlcnJvciwgbWVuOiBzdHJpbmcsIHR5cGUgPSAnd2FybmluZycpOiB2b2lkIHtcclxuICAgICAgY29uc3QgdG1lbiA9IFRyYW5zbGF0ZVV0aWxzLlRyYW5zbGF0ZShtZW4pO1xyXG4gICAgICB0aGlzLm5vdGlmeUVycm9yKHRtZW4sIGVycm9yLCB0eXBlKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBzdGF0aWMgbm90aWZ5RXJyb3IgKHRtZW46IHN0cmluZywgZXJyb3I6IHN0cmluZywgdHlwZTogc3RyaW5nKSB7XHJcbiAgICAgIG5vdGlmeShgJHt0bWVufSA6JHt0aGlzLmVycm9yQ2F0aChlcnJvcil9YCwgdHlwZSwgdGhpcy50aW1lc2hvdyk7XHJcbiAgICAgIGlmICh0eXBlID09PSAnZXJyb3InKSB7XHJcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodG1lbik7XHJcbiAgICAgIH1cclxuICB9XHJcbiAgc3RhdGljIGNhdGhOb3RpZnlFeHRyYU1lbiAoZXJyb3IsIG1lbjogc3RyaW5nLCBleHRyYU1lbjogc3RyaW5nLCB0eXBlID0gJ3dhcm5pbmcnKTogdm9pZCB7XHJcbiAgICBjb25zdCB0bWVuID0gYCR7VHJhbnNsYXRlVXRpbHMuVHJhbnNsYXRlKG1lbil9ICR7ZXh0cmFNZW59YDtcclxuICAgIHRoaXMubm90aWZ5RXJyb3IodG1lbiwgZXJyb3IsIHR5cGUpO1xyXG4gIH1cclxuICBzdGF0aWMgZXJyb3JDYXRoIChlcnJvcjogYW55KTogc3RyaW5nIHtcclxuICAgIGxldCBlcnJvck1lbiA9ICcnO1xyXG4gICAgaWYgKFN0cmluZ1V0aWxzLmlzU3RyaW5nKGVycm9yKSkge1xyXG4gICAgICBlcnJvck1lbiA9IGVycm9yO1xyXG4gICAgfSBlbHNlICBpZiAoT2JqZWN0VXRpbHMuaXNPYmplY3QoZXJyb3IpKSB7XHJcbiAgICAgIGlmIChlcnJvci5lcnJvcikge1xyXG4gICAgICAgIGlmIChTdHJpbmdVdGlscy5pc1N0cmluZyhlcnJvci5lcnJvcikpIHtcclxuICAgICAgICAgIGVycm9yTWVuID0gZXJyb3IuZXJyb3I7XHJcbiAgICAgICAgfSBlbHNlIGlmIChPYmplY3RVdGlscy5pc09iamVjdChlcnJvci5lcnJvcikgJiYgZXJyb3IuZXJyb3IuUmVzcG9uc2VTdGF0dXMpIHtcclxuICAgICAgICAgIGlmIChlcnJvci5lcnJvci5SZXNwb25zZVN0YXR1cy5NZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIGVycm9yTWVuID0gZXJyb3IuZXJyb3IuUmVzcG9uc2VTdGF0dXMuTWVzc2FnZTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoZXJyb3IuZXJyb3IuUmVzcG9uc2VTdGF0dXMuRXJyb3JDb2RlKSB7XHJcbiAgICAgICAgICAgIGVycm9yTWVuID0gZXJyb3IuZXJyb3IuUmVzcG9uc2VTdGF0dXMuRXJyb3JDb2RlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoU3RyaW5nVXRpbHMuaXNTdHJpbmcoZXJyb3IubWVzc2FnZSkpIHtcclxuICAgICAgICAgIGVycm9yTWVuID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGVycm9yLm1lc3NhZ2UpIHtcclxuICAgICAgICAgIGVycm9yTWVuID0gZXJyb3IubWVzc2FnZTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVycm9yLnN0YXR1c1RleHQpIHtcclxuICAgICAgICAgIGVycm9yTWVuID0gZXJyb3Iuc3RhdHVzVGV4dDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBUcmFuc2xhdGVVdGlscy5UcmFuc2xhdGUoZXJyb3JNZW4pO1xyXG4gIH1cclxuICBzdGF0aWMgZ2V0TmF0aXZlV2luZG93ICgpOiBXaW5kb3cge1xyXG4gICAgcmV0dXJuIHdpbmRvdztcclxuICB9XHJcbiAgc3RhdGljIG9wZW5XaW5kb3codXJsOiBzdHJpbmcsIGNvbmZpZz86IGFueSk6IFdpbmRvdyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHdpbmRvdy5vcGVuKHVybCwgJycsICdsb2NhdGlvbj1ubyx3aWR0aD0xODAwLGhlaWdodD05MDAsc2Nyb2xsYmFycz15ZXMsdG9wPTEwMCxsZWZ0PTcwMCxyZXNpemFibGUgPSBubycpO1xyXG4gIH1cclxuICBzdGF0aWMgc2V0V2l0aEhlaWdodCAod2htPzogV2lkdGhIZWlnaHRNZWQpOiBhbnkge1xyXG4gICAgaWYgKHdobSAmJiB3aG0uZnVsbFNjcmVlbikge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIGZ1bGxzY3JlZW46IDEsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIGxldCBtbSA9IDEuNTtcclxuICAgIGlmICh3aG0gJiYgd2htLk1lZGlhKSB7XHJcbiAgICAgIG1tID0gd2htLk1lZGlhO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdmFsID0ge1xyXG4gICAgICB3aWR0aDogd2luZG93LmlubmVyV2lkdGggLyBtbSxcclxuICAgICAgaGVpZ2h0OiB3aW5kb3cuaW5uZXJIZWlnaHQgLyBtbVxyXG4gICAgfTtcclxuICAgIGlmICh3aG0gJiYgd2htLmhhc093blByb3BlcnR5KCd3aWR0aCcpKSB7XHJcbiAgICAgIHZhbC53aWR0aCA9IHdobS53aWR0aDtcclxuICAgIH1cclxuICAgIGlmICh3aG0gJiYgd2htLmhhc093blByb3BlcnR5KCdoZWlnaHQnKSkge1xyXG4gICAgICB2YWwuaGVpZ2h0ID0gd2htLmhlaWdodDtcclxuICAgIH1cclxuICAgIHJldHVybiB2YWw7XHJcbiAgfVxyXG59XHJcbiJdfQ==