air-lib
Version:
This is Air's angular component library
174 lines • 14.1 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Injectable } from '@angular/core';
import { PagingEvent } from '../entities/paging-event';
import { BehaviorSubject } from 'rxjs';
import * as i0 from "@angular/core";
export class PagingService {
constructor() {
PagingService.currentMessage = PagingService.messageSource.asObservable();
}
/**
* @param {?} hash
* @param {?} context
* @param {?} currentIndex
* @param {?} itemsOnPage
* @return {?}
*/
static fireHashChangedEvent(hash, context, currentIndex, itemsOnPage) {
/** @type {?} */
const hashIndex = Math.floor(currentIndex / itemsOnPage);
if (!PagingService.isExistsHash(context, hashIndex)) {
PagingService.addHash(context, hashIndex, hash);
}
}
/**
* @param {?} event
* @return {?}
*/
static firePagingEvent(event) {
PagingService.saveToLocalStorage(event);
PagingService.messageSource.next(event);
}
/**
* @param {?} event
* @return {?}
*/
static fireClosingContextEvent(event) {
PagingService.messageSource.next(event);
}
/**
* @param {?} pagingEvent
* @return {?}
*/
static saveToLocalStorage(pagingEvent) {
/** @type {?} */
const key = pagingEvent.hash + '_' + pagingEvent.currentId + '_' + pagingEvent.currentIndex;
localStorage.setItem(key, JSON.stringify(pagingEvent));
}
/**
* @param {?} snapshot
* @return {?}
*/
static readFromLocalStorage(snapshot) {
/** @type {?} */
const key = PagingService.buildKey(snapshot);
/** @type {?} */
const json = localStorage.getItem(key);
if (!json) {
return null;
}
/** @type {?} */
const result = (/** @type {?} */ (JSON.parse(json)));
return result;
}
/**
* @param {?} route
* @param {?} name
* @return {?}
*/
static readSegmentByName(route, name) {
/** @type {?} */
const snapshot = route.snapshot;
return snapshot.params[name];
}
/**
* @param {?} pagingEvent
* @return {?}
*/
static buildRedirectUrl(pagingEvent) {
return pagingEvent.detailsUrl + pagingEvent.currentId + '/' + pagingEvent.hash + '/' + pagingEvent.currentIndex;
}
/**
* @param {?} snapshot
* @return {?}
*/
static buildKey(snapshot) {
/** @type {?} */
const id = snapshot.paramMap.get('id');
/** @type {?} */
const hash = snapshot.paramMap.get('hash');
/** @type {?} */
const pageIndex = snapshot.paramMap.get('page');
/** @type {?} */
const result = hash + '_' + id + '_' + pageIndex;
console.log('buildKey=' + result);
return result;
}
/**
* @param {?} context
* @param {?} index
* @return {?}
*/
static isExistsHash(context, index) {
/** @type {?} */
const key = this.buildMapKey(context, index);
return PagingService.cache.has(key);
}
/**
* @param {?} context
* @param {?} index
* @return {?}
*/
static getHash(context, index) {
/** @type {?} */
const key = this.buildMapKey(context, index);
/** @type {?} */
const result = PagingService.cache.get(key);
if (result === undefined) {
throw new Error('Key does not exists.');
}
return result;
}
/**
* @param {?} context
* @param {?} index
* @param {?} hash
* @return {?}
*/
static addHash(context, index, hash) {
/** @type {?} */
const key = this.buildMapKey(context, index);
PagingService.cache.set(key, hash);
}
/**
* @param {?} context
* @param {?} index
* @return {?}
*/
static buildMapKey(context, index) {
/** @type {?} */
const splitter = '_';
return context + splitter + index;
}
}
PagingService.cache = new Map();
PagingService.emptyPagingEvent = new PagingEvent('empty');
PagingService.messageSource = new BehaviorSubject(PagingService.emptyPagingEvent);
PagingService.currentMessage = PagingService.messageSource.asObservable();
PagingService.decorators = [
{ type: Injectable, args: [{
providedIn: 'root'
},] }
];
PagingService.ctorParameters = () => [];
/** @nocollapse */ PagingService.ngInjectableDef = i0.defineInjectable({ factory: function PagingService_Factory() { return new PagingService(); }, token: PagingService, providedIn: "root" });
if (false) {
/**
* @type {?}
* @private
*/
PagingService.cache;
/** @type {?} */
PagingService.emptyPagingEvent;
/**
* @type {?}
* @private
*/
PagingService.messageSource;
/** @type {?} */
PagingService.currentMessage;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9haXItbGliLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL3BhZ2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOztBQU1uRCxNQUFNO0lBSUo7UUFDRSxhQUFhLENBQUMsY0FBYyxHQUFHLGFBQWEsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDNUUsQ0FBQzs7Ozs7Ozs7SUFNTSxNQUFNLENBQUMsb0JBQW9CLENBQUMsSUFBWSxFQUFFLE9BQWUsRUFBRSxZQUFvQixFQUFFLFdBQW1COztjQUNuRyxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO1FBQ3hELElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLENBQUMsRUFBRTtZQUNuRCxhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDOzs7OztJQUVNLE1BQU0sQ0FBQyxlQUFlLENBQUMsS0FBa0I7UUFDNUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7Ozs7O0lBRU0sTUFBTSxDQUFDLHVCQUF1QixDQUFDLEtBQWtCO1FBQ3RELGFBQWEsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7Ozs7O0lBRU0sTUFBTSxDQUFDLGtCQUFrQixDQUFDLFdBQXdCOztjQUNq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QUFHLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDcEMsQ0FBQzs7QUFyRmMsbUJBQUssR0FBd0IsSUFBSSxHQUFHLEVBQWtCLENBQUM7QUFDeEQsOEJBQWdCLEdBQUcsSUFBSSxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7QUFLM0MsMkJBQWEsR0FBRyxJQUFJLGVBQWUsQ0FBYyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUVsRiw0QkFBYyxHQUE0QixhQUFhLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDOztZQWRwRyxVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7Ozs7Ozs7OztJQUlDLG9CQUFzRTs7SUFDdEUsK0JBQTBEOzs7OztJQUsxRCw0QkFBZ0c7O0lBRWhHLDZCQUFtRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYWdpbmdFdmVudCB9IGZyb20gJy4uL2VudGl0aWVzL3BhZ2luZy1ldmVudCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFBhZ2luZ1NlcnZpY2Uge1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyBjYWNoZTogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbiAgcHVibGljIHN0YXRpYyBlbXB0eVBhZ2luZ0V2ZW50ID0gbmV3IFBhZ2luZ0V2ZW50KCdlbXB0eScpO1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgUGFnaW5nU2VydmljZS5jdXJyZW50TWVzc2FnZSA9IFBhZ2luZ1NlcnZpY2UubWVzc2FnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIG1lc3NhZ2VTb3VyY2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFBhZ2luZ0V2ZW50PihQYWdpbmdTZXJ2aWNlLmVtcHR5UGFnaW5nRXZlbnQpO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGN1cnJlbnRNZXNzYWdlOiBPYnNlcnZhYmxlPFBhZ2luZ0V2ZW50PiA9IFBhZ2luZ1NlcnZpY2UubWVzc2FnZVNvdXJjZS5hc09ic2VydmFibGUoKTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaXJlSGFzaENoYW5nZWRFdmVudChoYXNoOiBzdHJpbmcsIGNvbnRleHQ6IHN0cmluZywgY3VycmVudEluZGV4OiBudW1iZXIsIGl0ZW1zT25QYWdlOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IGhhc2hJbmRleCA9IE1hdGguZmxvb3IoY3VycmVudEluZGV4IC8gaXRlbXNPblBhZ2UpO1xyXG4gICAgaWYgKCFQYWdpbmdTZXJ2aWNlLmlzRXhpc3RzSGFzaChjb250ZXh0LCBoYXNoSW5kZXgpKSB7XHJcbiAgICAgIFBhZ2luZ1NlcnZpY2UuYWRkSGFzaChjb250ZXh0LCBoYXNoSW5kZXgsIGhhc2gpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaXJlUGFnaW5nRXZlbnQoZXZlbnQ6IFBhZ2luZ0V2ZW50KSB7XHJcbiAgICAgIFBhZ2luZ1NlcnZpY2Uuc2F2ZVRvTG9jYWxTdG9yYWdlKGV2ZW50KTtcclxuICAgICAgUGFnaW5nU2VydmljZS5tZXNzYWdlU291cmNlLm5leHQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBmaXJlQ2xvc2luZ0NvbnRleHRFdmVudChldmVudDogUGFnaW5nRXZlbnQpIHtcclxuICAgIFBhZ2luZ1NlcnZpY2UubWVzc2FnZVNvdXJjZS5uZXh0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZVRvTG9jYWxTdG9yYWdlKHBhZ2luZ0V2ZW50OiBQYWdpbmdFdmVudCkge1xyXG4gICAgY29uc3Qga2V5ID0gcGFnaW5nRXZlbnQuaGFzaCArICdfJyArIHBhZ2luZ0V2ZW50LmN1cnJlbnRJZCArICdfJyArIHBhZ2luZ0V2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGtleSwgSlNPTi5zdHJpbmdpZnkocGFnaW5nRXZlbnQpKTtcclxuXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIHJlYWRGcm9tTG9jYWxTdG9yYWdlKHNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90KTogUGFnaW5nRXZlbnQgfCBudWxsIHtcclxuICAgIGNvbnN0IGtleSA9IFBhZ2luZ1NlcnZpY2UuYnVpbGRLZXkoc25hcHNob3QpO1xyXG4gICAgY29uc3QganNvbiA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGtleSk7XHJcbiAgICBpZiAoIWpzb24pIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ICA9IEpTT04ucGFyc2UoanNvbikgYXMgUGFnaW5nRXZlbnQ7XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyByZWFkU2VnbWVudEJ5TmFtZShyb3V0ZTogQWN0aXZhdGVkUm91dGUsIG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBzbmFwc2hvdCA9IHJvdXRlLnNuYXBzaG90O1xyXG4gICAgcmV0dXJuIHNuYXBzaG90LnBhcmFtc1tuYW1lXTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYnVpbGRSZWRpcmVjdFVybChwYWdpbmdFdmVudDogUGFnaW5nRXZlbnQpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHBhZ2luZ0V2ZW50LmRldGFpbHNVcmwgKyBwYWdpbmdFdmVudC5jdXJyZW50SWQgKyAnLycgKyBwYWdpbmdFdmVudC5oYXNoICsgJy8nICsgcGFnaW5nRXZlbnQuY3VycmVudEluZGV4O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBidWlsZEtleShzbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBpZCA9IHNuYXBzaG90LnBhcmFtTWFwLmdldCgnaWQnKTtcclxuICAgIGNvbnN0IGhhc2ggPSBzbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2hhc2gnKTtcclxuICAgIGNvbnN0IHBhZ2VJbmRleCA9IHNuYXBzaG90LnBhcmFtTWFwLmdldCgncGFnZScpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gaGFzaCArICdfJyArIGlkICsgJ18nICsgcGFnZUluZGV4O1xyXG5cclxuICAgIGNvbnNvbGUubG9nKCdidWlsZEtleT0nICsgcmVzdWx0KTtcclxuXHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBpc0V4aXN0c0hhc2goY29udGV4dDogc3RyaW5nLCBpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkTWFwS2V5KGNvbnRleHQsIGluZGV4KTtcclxuICAgIHJldHVybiBQYWdpbmdTZXJ2aWNlLmNhY2hlLmhhcyhrZXkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXRIYXNoKGNvbnRleHQ6IHN0cmluZywgaW5kZXg6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmJ1aWxkTWFwS2V5KGNvbnRleHQsIGluZGV4KTtcclxuICAgIGNvbnN0IHJlc3VsdCA9IFBhZ2luZ1NlcnZpY2UuY2FjaGUuZ2V0KGtleSk7XHJcbiAgICBpZiAocmVzdWx0ID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdLZXkgZG9lcyBub3QgZXhpc3RzLicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzdGF0aWMgYWRkSGFzaChjb250ZXh0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIsIGhhc2g6IHN0cmluZykge1xyXG4gICAgY29uc3Qga2V5ID0gdGhpcy5idWlsZE1hcEtleShjb250ZXh0LCBpbmRleCk7XHJcbiAgICBQYWdpbmdTZXJ2aWNlLmNhY2hlLnNldChrZXksIGhhc2gpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBidWlsZE1hcEtleShjb250ZXh0OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgY29uc3Qgc3BsaXR0ZXIgPSAnXyc7XHJcbiAgICByZXR1cm4gY29udGV4dCArIHNwbGl0dGVyICsgaW5kZXg7XHJcbiAgfVxyXG59XHJcbiJdfQ==