Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. import { Injectable } from "@angular/core";
  3. import { SessionStorageService } from "./session-storage.service";
  4.  
  5. @Injectable()
  6. export class ErrorSessionStorageService {
  7.  
  8.     private _errorKey = "errors";
  9.  
  10.     constructor(private sessionStorageService: SessionStorageService) {
  11.     }
  12.  
  13.     /**
  14.      * Получение ошибок из хранилища.
  15.      */
  16.     getAllErrors() {
  17.         return this.sessionStorageService.getItem(this._errorKey);
  18.     }
  19.  
  20.     /**
  21.      * Получает ошибки в заданном интервале от даты.
  22.      * */
  23.     getErrorsInInterval(minutes: number, to: Date) {
  24.         let ms = minutes * 60 * 1000;
  25.         let toMs = to.getTime();
  26.         let start = toMs - ms;
  27.  
  28.         let errors = this.getAllErrors();
  29.         let resultErrors = {};
  30.  
  31.         if (errors != null) {
  32.             let reversedKeys = Object.keys(errors).reverse();
  33.  
  34.             for (let i = 0; i < reversedKeys.length; i++) {
  35.                 let key = reversedKeys[i];
  36.                 let keyNum = +key;
  37.                 if (keyNum > start) {
  38.                     if (keyNum <= toMs) {
  39.                         resultErrors[key] = errors[key];
  40.                     }
  41.  
  42.                 }
  43.                 else break;
  44.             }
  45.         }
  46.  
  47.         return resultErrors;
  48.     }
  49.  
  50.     /**
  51.      * Добавление ошибки к логу в хранилище.
  52.      */
  53.     saveError(error: string) {
  54.         //сперва почистим от старых ошибок
  55.         this.clearOldErrors();
  56.  
  57.         let errors = JSON.parse(sessionStorage.getItem(this._errorKey)) || {};
  58.         let key = (new Date()).valueOf();
  59.         errors[key] = error;
  60.         this.sessionStorageService.saveItem(this._errorKey, errors);
  61.     }
  62.  
  63.  
  64.     /**
  65.      * Удаление из хранилища ошибок, которые были сохранены более n-часов назад (24 по умолчанию).
  66.      */
  67.     private clearOldErrors(hours?: number) {
  68.         hours = hours || 24;
  69.         let minutes = hours * 60;
  70.         let now = new Date();
  71.  
  72.         let resultErrors = this.getErrorsInInterval(minutes, now);
  73.         this.sessionStorageService.saveItem(this._errorKey, resultErrors);
  74.     }
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement