{"version":3,"file":"bootkit-angular-data.mjs","sources":["../../../projects/bootkit/data/data-request.ts","../../../projects/bootkit/data/data-result.ts","../../../projects/bootkit/data/data-source.ts","../../../projects/bootkit/data/async-data-source.ts","../../../projects/bootkit/data/array-data-source.ts","../../../projects/bootkit/data/data-result-operator.ts","../../../projects/bootkit/data/utils/data-size-util.ts","../../../projects/bootkit/data/utils/data-size.pipe.ts","../../../projects/bootkit/data/bootkit-angular-data.ts"],"sourcesContent":["export class DataRequest {\r\n    constructor(\r\n        public pageIndex = 0,\r\n        public pageSize = 10,\r\n        public computeTotal = true,\r\n        public filters: DataRequestFilter[] = [],\r\n        public sort?: DataRequestSort,\r\n    ) { }\r\n\r\n    public addFilter(field: string, value: string, operator: DataRequestFilterOperator = DataRequestFilterOperator.EQ) {\r\n        this.filters.push(new DataRequestFilter(field, value, operator));\r\n        return this;\r\n    }\r\n\r\n    public sortDescending(field: string) {\r\n        this.sort = new DataRequestSort(field, false);\r\n        return this;\r\n    }\r\n\r\n    public sortAscending(field: string) {\r\n        this.sort = new DataRequestSort(field, true);\r\n        return this;\r\n    }\r\n\r\n    public static all() {\r\n        return new DataRequest(0, 1000000, false);\r\n    }\r\n}\r\n\r\nexport class DataRequestSort {\r\n    constructor(\r\n        public field: string,\r\n        public asc = true) {\r\n    }\r\n}\r\n\r\nexport class DataRequestFilter {\r\n    constructor(\r\n        public field: string,\r\n        public value?: string,\r\n        public operator: DataRequestFilterOperator = DataRequestFilterOperator.EQ) {\r\n    }\r\n}\r\n\r\nexport enum DataRequestFilterOperator {\r\n    EQ = 0,\r\n    NEQ = 1,    \r\n    LT = 2,\r\n    LTE = 3,\r\n    GT = 4,\r\n\tGTE = 5,\r\n    LI = 6,\r\n    SW = 7,\r\n}\r\n","import { DataRequest } from \"./data-request\";\r\n\r\nexport class DataResult<T = any> {\r\n  constructor(\r\n    public readonly request: DataRequest,\r\n    public readonly data: T[],\r\n    public readonly total?: number) {\r\n  }\r\n}\r\n","import { Subject } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\n\r\nexport abstract class DataSource<T=any> {\r\n  protected _loading = false;\r\n  private _data: T[] | undefined;\r\n  private _totallRecords?: number;\r\n  protected changeSubject = new Subject<DataResult>;\r\n  public readonly change = this.changeSubject.asObservable();\r\n\r\n  constructor() {\r\n  }\r\n\r\n  get loading() { return this._loading; }\r\n  protected set loading(value: boolean) {\r\n    this._loading = value;\r\n  }\r\n\r\n  get data() { return this._data; }\r\n  protected set data(value: any[] | undefined) {\r\n    this._data = value;\r\n  }\r\n\r\n  get totallRecords() { return this._totallRecords; }\r\n  protected set totallRecords(value: number | undefined) {\r\n    this._totallRecords= value;\r\n  }\r\n\r\n  remove(item: any) {\r\n    var idx = this._data!.findIndex(x => x === item);\r\n    if(idx > -1) {\r\n      this._data?.splice(idx, 1);\r\n      this.changeSubject.next(new DataResult(undefined as any, this._data!, this._totallRecords));\r\n    }\r\n  }\r\n\r\n  abstract load(request: DataRequest): void;\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\nexport type DataLoaderFunc = (request: DataRequest) => Observable<DataResult>;\r\n\r\nexport class AsyncDataSource extends DataSource {\r\n  private _loader: DataLoaderFunc;\r\n\r\n  constructor(loader: DataLoaderFunc) {\r\n    super();\r\n\r\n    if (typeof loader === 'function') {\r\n      this._loader = loader;\r\n    } else {\r\n      throw 'Invalid data loader';\r\n    }\r\n  }\r\n\r\n  load(request: DataRequest) {\r\n    this.loading = true;\r\n    this._loader(request).subscribe(result => {\r\n      this.loading = false;\r\n      this.data = result.data;\r\n      this.totallRecords = result.total;\r\n      this.changeSubject.next(result);\r\n    });\r\n  }\r\n}\r\n","import { DataRequest } from \"./data-request\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataSource } from \"./data-source\";\r\n\r\nexport class ArrayDataSource extends DataSource {\r\n  private _lastRequest?: DataRequest;\r\n\r\n  constructor(private readonly allData: any[]) {\r\n    super();\r\n  }\r\n\r\n  load(request: DataRequest) {\r\n    this._lastRequest = request;\r\n    var startItem = request.pageIndex * request.pageSize;\r\n    this.data = this.allData.slice(startItem, startItem + request.pageSize);\r\n    this.totallRecords = this.allData.length;\r\n    this.changeSubject.next(new DataResult(request, this.data , this.totallRecords));\r\n  }\r\n\r\n  // reload() {\r\n  //   this.changeSubject.next(new DataResult(this.allData, this.totallRecords));\r\n  // }\r\n}\r\n","import { Observable } from \"rxjs\";\r\nimport { DataResult } from \"./data-result\";\r\nimport { DataRequest } from \"./data-request\";\r\n\r\nexport function toDataResult<T=any>(dr: DataRequest) {\r\n  return function (source: Observable<any>): Observable<DataResult<T>> {\r\n    return new Observable(subscriber => {\r\n      source.subscribe({\r\n        next(event) {\r\n          subscriber.next(new DataResult(dr, event));\r\n        },\r\n        error(error) {\r\n          subscriber.error(error);\r\n        },\r\n        complete() {\r\n          subscriber.complete();\r\n        }\r\n      });\r\n    });\r\n  }\r\n}\r\n","\r\nexport enum DataSizeUnit {\r\n    Byte = 'Byte',\r\n    KiloByte = 'KiloByte',\r\n    MegaByte = 'MegaByte',\r\n    GigaByte = 'GigaByte',\r\n    TeraByte = 'TeraByte',\r\n}\r\n\r\nexport class DataSizeUtil {\r\n    static readonly bytesPerKb = 1024;\r\n    static readonly bytesPerMb = this.bytesPerKb * 1024;\r\n    static readonly bytesPerGb = this.bytesPerMb * 1024;\r\n    static readonly bytesPerTb = this.bytesPerGb * 1024;\r\n\r\n    static ToKilloByte(bytes: number) {\r\n        return bytes / this.bytesPerKb;\r\n    }\r\n\r\n    static ToMegaByte(bytes: number) {\r\n        return bytes / this.bytesPerMb;\r\n    }\r\n\r\n    static ToGigaByte(bytes: number) {\r\n        return bytes / this.bytesPerGb;\r\n    }\r\n\r\n    static ToTeraByte(bytes: number) {\r\n        return bytes / this.bytesPerTb;\r\n    }\r\n\r\n    static toByte(size: number, unit: DataSizeUnit) {\r\n        switch (unit) {\r\n            case DataSizeUnit.Byte: return size;\r\n            case DataSizeUnit.KiloByte: return size * this.bytesPerKb;\r\n            case DataSizeUnit.MegaByte: return size * this.bytesPerMb;\r\n            case DataSizeUnit.GigaByte: return size * this.bytesPerGb;\r\n            case DataSizeUnit.TeraByte: return size * this.bytesPerTb;\r\n            default: throw Error();\r\n        }\r\n    }\r\n\r\n    static fromByte(bytes: number): { volume: number, unit: DataSizeUnit } {\r\n        if (bytes < this.bytesPerKb)\r\n            return { volume: bytes, unit: DataSizeUnit.Byte }\r\n        else if (bytes < this.bytesPerMb)\r\n            return { volume: this.ToKilloByte(bytes), unit: DataSizeUnit.KiloByte }\r\n        else if (bytes < this.bytesPerGb)\r\n            return { volume: this.ToMegaByte(bytes), unit: DataSizeUnit.MegaByte }\r\n        else if (bytes < this.bytesPerTb)\r\n            return { volume: this.ToGigaByte(bytes), unit: DataSizeUnit.GigaByte }\r\n        else\r\n            return { volume: this.ToTeraByte(bytes), unit: DataSizeUnit.TeraByte }\r\n    }\r\n}\r\n","import { formatNumber } from '@angular/common';\r\nimport { Pipe, PipeTransform } from '@angular/core';\r\nimport { DataSizeUtil } from './data-size-util';\r\nimport { LocalizationService } from '@bootkit/angular/localization';\r\n\r\n@Pipe({\r\n    name: 'bkDataSize',\r\n    standalone: true\r\n})\r\nexport class DataSizePipe implements PipeTransform {\r\n    constructor(private lsService: LocalizationService) {\r\n    }\r\n\r\n    transform(\r\n        /** In bytes */\r\n        bytes?: number,\r\n    ): string {\r\n        var f = (n: number) => formatNumber((n), 'en', '1.0-2');\r\n        \r\n        if (bytes == null) {\r\n            return this.lsService.getActive().translate('unlimited');\r\n        } else  {\r\n            var res = DataSizeUtil.fromByte(bytes);\r\n            return `${res.volume} ${this.lsService.getActive().translate(res.unit)}`;\r\n        }\r\n    }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}