@qrsln/utils
Version:
1 lines • 18.5 kB
Source Map (JSON)
{"version":3,"file":"qrsln-utils-Services.mjs","sources":["../../../projects/utils/Services/src/DOM/dom.service.ts","../../../projects/utils/Services/src/Storage/Models/index.ts","../../../projects/utils/Services/src/Storage/web-storage.service.ts","../../../projects/utils/Services/src/Pagination/pagination.service.ts","../../../projects/utils/Services/src/Pagination/Models/index.ts","../../../projects/utils/Services/qrsln-utils-Services.ts"],"sourcesContent":["import {Injectable, EmbeddedViewRef, ApplicationRef, ComponentRef, ViewContainerRef} from '@angular/core';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class DomService {\r\n\r\n constructor(private viewContainerRef: ViewContainerRef, private appRef: ApplicationRef) {\r\n }\r\n\r\n private GetComponentRef(component: any, componentProps?: object): ComponentRef<any> {\r\n // 1. Create a component reference from the component\r\n const componentRef = this.viewContainerRef.createComponent(component);\r\n\r\n if (componentProps && typeof componentRef.instance === 'object') {\r\n Object.assign(componentRef.instance as object, componentProps);\r\n }\r\n\r\n return componentRef;\r\n }\r\n\r\n private AttachComponent(componentRef: ComponentRef<unknown>, element: Element, asSibling: boolean = false): void {\r\n // 2. Attach component to the appRef so that it's inside the ng component tree\r\n this.appRef.attachView(componentRef.hostView);\r\n\r\n // 3. Get DOM element from component\r\n const domElem = (componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement;\r\n\r\n // 4. Append DOM element to the body\r\n if (asSibling && element.parentNode) {\r\n element.parentNode.insertBefore(domElem, element.nextSibling);\r\n // console.log('append as Sibling', domElem);\r\n } else {\r\n element.appendChild(domElem);\r\n // console.log('appendChild', domElem);\r\n }\r\n }\r\n\r\n Append(component: any, element: Element, asSibling: boolean = true): ComponentRef<any> {\r\n const componentRef = this.GetComponentRef(component);\r\n\r\n this.AttachComponent(componentRef, element, asSibling);\r\n\r\n return componentRef;\r\n }\r\n\r\n Remove(componentRef: ComponentRef<any>): boolean {\r\n // 5. Wait some time and remove it from the component tree and from the DOM\r\n try {\r\n if (!!componentRef) {\r\n this.appRef.detachView(componentRef.hostView);\r\n componentRef.destroy();\r\n return true;\r\n }\r\n return false;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n}\r\n","export enum StorageType {\r\n Local,\r\n Session,\r\n Cookie\r\n}\r\n","import {Inject, Injectable, PLATFORM_ID} from '@angular/core';\r\nimport {DOCUMENT, isPlatformBrowser} from '@angular/common';\r\n\r\nimport {StorageType} from \"./Models\";\r\n\r\n/** @dynamic */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class WebStorageService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document,\r\n @Inject(PLATFORM_ID) private platformId: any) {\r\n // console.log('isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n }\r\n\r\n Set(storageType: StorageType, key: string, obj: any, expMin: number = 60): any {\r\n // const expires = new Date(year, month, day, hours, minutes, seconds, milliseconds);\r\n const expires = new Date();\r\n expires.setMinutes(expires.getMinutes() + expMin);\r\n const data = {ExpiresAt: Date.parse(expires.toString()), Data: obj};\r\n // console.log('Set isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n\r\n if (isPlatformBrowser(this.platformId)) {\r\n switch (storageType) {\r\n case StorageType.Cookie:\r\n const expireCookie: string = 'expires=' + new Date(data.ExpiresAt).toUTCString();\r\n this.SetCookie(key, JSON.stringify(data), expireCookie, '/');\r\n break;\r\n case StorageType.Local:\r\n localStorage.setItem(key, JSON.stringify(data));\r\n break;\r\n case StorageType.Session:\r\n sessionStorage.setItem(key, JSON.stringify(data));\r\n break;\r\n }\r\n }\r\n\r\n return this.Get(storageType, key);\r\n }\r\n\r\n Get(storageType: StorageType, key: string): any {\r\n // console.log('Get isPlatformBrowser', isPlatformBrowser(this.platformId), this.document);\r\n let data = null;\r\n if (isPlatformBrowser(this.platformId)) {\r\n switch (storageType) {\r\n case StorageType.Cookie:\r\n data = this.GetCookie(key);\r\n break;\r\n case StorageType.Local:\r\n data = window.localStorage.getItem(key);\r\n break;\r\n case StorageType.Session:\r\n data = window.sessionStorage.getItem(key);\r\n break;\r\n }\r\n }\r\n // console.log('Get', data);\r\n\r\n if (data !== 'undefined' && data !== undefined && data !== null) {\r\n return this.CheckData(storageType, key, data);\r\n }\r\n return null;\r\n }\r\n\r\n Remove(storageType: StorageType, key: string): void {\r\n switch (storageType) {\r\n case StorageType.Cookie:\r\n this.RemoveCookie(key, '/');\r\n console.log(key, ' Cookie expired');\r\n break;\r\n case StorageType.Local:\r\n window.localStorage.removeItem(key);\r\n console.log(key, 'localStorage expired');\r\n break;\r\n case StorageType.Session:\r\n window.sessionStorage.removeItem(key);\r\n console.log(key, 'session expired');\r\n break;\r\n }\r\n }\r\n\r\n //#region Cookie\r\n\r\n private GetCookie(key: string): any {\r\n const cookies: Array<string> = this.document.cookie.split(';');\r\n const cookieName = `${key}=`;\r\n\r\n let data: any | null = cookies.map(x => x.replace(/^\\s+/g, ''))\r\n .find(x => x.indexOf(cookieName) === 0);\r\n\r\n data = data ? data.substring(cookieName.length, data.length) : null;\r\n return data;\r\n }\r\n\r\n private SetCookie(key: string, data: string, expireCookie: string, path: string = '/'): void {\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.document.cookie = key + '=' + data + '; ' + expireCookie + (path.length > 0 ? '; path=' + path : '');\r\n }\r\n }\r\n\r\n private RemoveCookie(key: string, path: string = '/'): void {\r\n const d: Date = new Date();\r\n d.setTime(d.getTime() + -1 * 24 * 60 * 60 * 1000);\r\n // console.log(d);\r\n const data = '';\r\n const expireCookie: string = 'expires=' + d.toUTCString();\r\n if (isPlatformBrowser(this.platformId)) {\r\n this.document.cookie = key + '=' + data + '; ' + expireCookie + (path.length > 0 ? '; path=' + path : '');\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n private CheckData(storageType: StorageType, key: string, obj: any): any {\r\n const sessionObject = JSON.parse(obj);\r\n // console.log(key, sessionObject, new Date(sessionObject.ExpiresAt));\r\n if (Date.parse(new Date().toString()) < sessionObject.ExpiresAt) {\r\n return sessionObject.Data;\r\n } else {\r\n this.Remove(storageType, key);\r\n return null;\r\n }\r\n }\r\n\r\n}\r\n","import {EventEmitter, Injectable} from '@angular/core';\nimport {Page, PagerResponse} from \"./Models\";\n\n/** @dynamic */\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginationService {\n\n public Changed: EventEmitter<string> = new EventEmitter<string>();\n\n constructor() {\n }\n\n Paginate(TotalItems: number, CurrentPage: number = 1, ItemsPerPage: number = 10, Size: number = 7): PagerResponse {\n // calculate total pages\n const totalPages = Math.ceil(TotalItems / ItemsPerPage);\n\n // ensure current page isn't out of range\n if (CurrentPage < 1) {\n CurrentPage = 1;\n } else if (CurrentPage > totalPages) {\n CurrentPage = totalPages;\n }\n\n let startPage: number;\n let endPage: number;\n if (totalPages <= Size) {\n // less than {{indicatorsPerPage}} total pages so show all\n startPage = 1;\n endPage = totalPages;\n } else {\n // more than {{indicatorsPerPage}} total pages so calculate start and end pages\n if (CurrentPage <= +(Size / 2).toFixed(0) + 1) {\n startPage = 1;\n endPage = Size;\n } else if (CurrentPage + 4 >= totalPages) {\n startPage = totalPages - (Size - 1);\n endPage = totalPages;\n } else {\n startPage = CurrentPage - +(Size / 2).toFixed(0) + 1;\n endPage = CurrentPage + +(Size / 2).toFixed(0) - 1;\n }\n }\n\n // calculate start and end item indexes\n let startIndex = (CurrentPage - 1) * ItemsPerPage;\n let endIndex = Math.min(startIndex + ItemsPerPage - 1, TotalItems - 1);\n\n // create an array of pages to ng-repeat in the pager control\n let pages = Array.from(Array(endPage + 1 - startPage).keys()).map(i => {\n const val = startPage + i;\n return {Value: val, Label: val.toString()} as Page;\n });\n\n this.Changed.emit(CurrentPage.toString());\n\n // return object with all pager properties required by the view\n return {\n Req: {TotalItems, CurrentPage, ItemsPerPage, Size},\n Pages: pages, TotalPages: totalPages,\n StartPage: startPage, StartIndex: startIndex, EndPage: endPage, EndIndex: endIndex,\n } as PagerResponse;\n }\n}\n","export class PagerRequest {\r\n TotalItems!: number;\r\n CurrentPage!: number;\r\n\r\n ItemsPerPage!: number;\r\n Size!: number;\r\n}\r\n\r\nexport interface Page {\r\n Label: string;\r\n Value: number;\r\n}\r\n\r\nexport interface PagerResponse {\r\n Req: PagerRequest;\r\n\r\n Pages: Page[];\r\n TotalPages: number;\r\n\r\n StartPage: number;\r\n StartIndex: number;\r\n EndPage: number;\r\n EndIndex: number;\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}