@obliczeniowo/elementary
Version:
Library made in Angular version 19
1 lines • 11.7 kB
Source Map (JSON)
{"version":3,"file":"obliczeniowo-elementary-json-def-table.mjs","sources":["../../../../projects/components/json-def-table/directives/safe-pipe/safe-pipe.directive.ts","../../../../projects/components/json-def-table/components/json-def-table/json-def-table.component.ts","../../../../projects/components/json-def-table/components/json-def-table/json-def-table.component.html","../../../../projects/components/json-def-table/json-def-table.module.ts","../../../../projects/components/json-def-table/obliczeniowo-elementary-json-def-table.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safe',\r\n standalone: false\r\n})\r\nexport class SafePipeDirective implements PipeTransform {\r\n constructor(protected sanitizer: DomSanitizer) { }\r\n\r\n public transform(value: any, type: 'html' | 'style' | 'script' | 'url' | 'resourceUrl'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\r\n switch (type) {\r\n case 'html':\r\n return this.sanitizer.bypassSecurityTrustHtml(value);\r\n case 'style':\r\n return this.sanitizer.bypassSecurityTrustStyle(value);\r\n case 'script':\r\n return this.sanitizer.bypassSecurityTrustScript(value);\r\n case 'url':\r\n return this.sanitizer.bypassSecurityTrustUrl(value);\r\n case 'resourceUrl':\r\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\r\n }\r\n }\r\n}\r\n","import { OblFileService } from '@obliczeniowo/elementary/files';\r\nimport { TableHeaderCell } from './../../interfaces/table-data';\r\nimport { Component, input, model, SimpleChanges } from '@angular/core';\r\n\r\nimport { TableData } from '../../interfaces/table-data';\r\n\r\n@Component({\r\n selector: 'obl-json-def-table',\r\n templateUrl: './json-def-table.component.html',\r\n styleUrls: ['./json-def-table.component.scss'],\r\n standalone: false\r\n})\r\nexport class JsonDefTableComponent {\r\n /** Data in form of JSON string or TableData interface */\r\n data = model<TableData>();\r\n /** Table json file url */\r\n fileUrl = input<string>();\r\n\r\n protected currentSortIndex: number = -1;\r\n\r\n protected cellSort(cell: TableHeaderCell) {\r\n if (cell.sort) {\r\n this.sort(cell);\r\n }\r\n }\r\n\r\n protected sort(cell: TableHeaderCell) {\r\n if (!this.data) {\r\n return;\r\n }\r\n\r\n const data = { ...(this.data()) };\r\n\r\n if (data.body && data.header) {\r\n this.currentSortIndex = data.header[0].cells.findIndex(searchElement => searchElement.value === cell.value);\r\n\r\n cell.sort.direction = (cell.sort.direction === 'ASC' && 'DESC') || 'ASC';\r\n if (cell.sort.type === 'number') {\r\n data.body = data.body.sort((a, b) => (a.cells[this.currentSortIndex].value || '').localeCompare(b.cells[this.currentSortIndex].value || ''));\r\n } else {\r\n data.body = data.body.sort((a, b) => (a.cells[this.currentSortIndex].value || '').localeCompare(b.cells[this.currentSortIndex].value || ''));\r\n }\r\n if (cell.sort.direction === 'DESC') {\r\n data.body = data.body.reverse();\r\n }\r\n\r\n this.data.set(data);\r\n }\r\n }\r\n\r\n protected headerClass(cell: TableHeaderCell) {\r\n return { ...(cell.class && { [cell.class]: true } || {}), sort: !!cell.sort }\r\n }\r\n\r\n constructor(private readonly file: OblFileService) {\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n if (changes.fileUrl && this.fileUrl()) {\r\n const data = await this.file.loadJsonFile(this.fileUrl() as string);\r\n if (data) {\r\n this.data.set(data);\r\n }\r\n }\r\n }\r\n}\r\n","<table cellspacing=\"0\">\r\n @if (data()?.caption) {\r\n <caption>\r\n @if (data()?.caption?.name) {\r\n <ng-content [select]=\"data()?.caption?.name\"></ng-content>\r\n } @else {\r\n {{ data()?.caption?.value }}\r\n }\r\n </caption>\r\n }\r\n\r\n @if (data()?.header) {\r\n <thead>\r\n @for (row of data()?.header; track $index) {\r\n <tr>\r\n @for (cell of row.cells; track $index) {\r\n <th\r\n [style.width]=\"cell.width\"\r\n [colSpan]=\"cell.mergeX || 1\"\r\n [rowSpan]=\"cell.mergeY || 1\"\r\n [class.sort]=\"cell?.sort\"\r\n (click)=\"cellSort(cell)\"\r\n >\r\n <div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n (cell?.name && cellContent) || cellValue;\r\n context: { $implicit: cell, className: headerClass(cell) }\r\n \"\r\n ></ng-container>\r\n @if (cell?.sort && $index === currentSortIndex) {\r\n <span class=\"sort\">\r\n {{ (cell.sort.direction === 'ASC' && '↑') || '↓' }}\r\n </span>\r\n }\r\n </div>\r\n </th>\r\n }\r\n </tr>\r\n }\r\n </thead>\r\n }\r\n\r\n @if (data()?.body) {\r\n <tbody>\r\n @for (row of data()?.body; track $index) {\r\n <tr>\r\n @for (cell of row.cells; track $index) {\r\n <td\r\n [class]=\"cell?.class\"\r\n [colSpan]=\"cell.mergeX || 1\"\r\n [rowSpan]=\"cell.mergeY || 1\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n (cell?.name && cellContent) || cellValue;\r\n context: { $implicit: cell }\r\n \"\r\n ></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tbody>\r\n }\r\n\r\n @if (data()?.foot) {\r\n <tfoot>\r\n @for (row of data()?.foot; track $index) {\r\n <tr>\r\n @for (cell of row.cells; track $index) {\r\n <td\r\n [class]=\"cell?.class\"\r\n [colSpan]=\"cell.mergeX || 1\"\r\n [rowSpan]=\"cell.mergeY || 1\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n (cell?.name && cellContent) || cellValue;\r\n context: { $implicit: cell }\r\n \"\r\n ></ng-container>\r\n </td>\r\n }\r\n </tr>\r\n }\r\n </tfoot>\r\n }\r\n</table>\r\n\r\n<ng-template let-cell let-className=\"className\" #cellValue>\r\n <div [innerHTML]=\"cell.value | safe : 'html'\" [class]=\"className\"></div>\r\n</ng-template>\r\n\r\n<ng-template let-cell #cellContent>\r\n @if (cell?.name) {\r\n <ng-content [select]=\"cell.name\"></ng-content>\r\n }\r\n</ng-template>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { JsonDefTableComponent } from './components/json-def-table/json-def-table.component';\r\nimport { SafePipeDirective } from './directives/safe-pipe/safe-pipe.directive';\r\n\r\n@NgModule({\r\n declarations: [\r\n JsonDefTableComponent,\r\n SafePipeDirective\r\n ],\r\n imports: [\r\n CommonModule\r\n ],\r\n exports: [\r\n JsonDefTableComponent,\r\n SafePipeDirective\r\n ]\r\n})\r\nexport class JsonDefTableModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.SafePipeDirective"],"mappings":";;;;;;;MAOa,iBAAiB,CAAA;AACN,IAAA,SAAA;AAAtB,IAAA,WAAA,CAAsB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS;;IAExB,SAAS,CAAC,KAAU,EAAE,IAAyD,EAAA;QACpF,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC;AACtD,YAAA,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,KAAK,CAAC;AACvD,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,KAAK,CAAC;AACxD,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,KAAK,CAAC;AACrD,YAAA,KAAK,aAAa;gBAChB,OAAO,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC;;;uGAdtD,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA;qGAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,MAAM;AACZ,oBAAA,UAAU,EAAE;AACf,iBAAA;;;MCMY,qBAAqB,CAAA;AA0CH,IAAA,IAAA;;IAxC7B,IAAI,GAAG,KAAK,EAAa;;IAEzB,OAAO,GAAG,KAAK,EAAU;IAEf,gBAAgB,GAAW,CAAC,CAAC;AAE7B,IAAA,QAAQ,CAAC,IAAqB,EAAA;AACtC,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;;AAIT,IAAA,IAAI,CAAC,IAAqB,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd;;QAGF,MAAM,IAAI,GAAG,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;QAEjC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC;AAE3G,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,IAAI,MAAM,KAAK,KAAK;YACxE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;;iBACvI;gBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;;YAE9I,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;gBAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;;AAGjC,YAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;;AAIb,IAAA,WAAW,CAAC,IAAqB,EAAA;AACzC,QAAA,OAAO,EAAE,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE;;AAG/E,IAAA,WAAA,CAA6B,IAAoB,EAAA;QAApB,IAAI,CAAA,IAAA,GAAJ,IAAI;;IAGjC,MAAM,WAAW,CAAC,OAAsB,EAAA;QACtC,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;AACrC,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAY,CAAC;YACnE,IAAI,IAAI,EAAE;AACR,gBAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;;;;uGAjDd,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAArB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oYCZlC,u+FAmGA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA;;2FDvFa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,cAGlB,KAAK,EAAA,QAAA,EAAA,u+FAAA,EAAA,MAAA,EAAA,CAAA,qzBAAA,CAAA,EAAA;;;MEQR,kBAAkB,CAAA;uGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA;AAAlB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAX3B,qBAAqB;YACrB,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAGjB,YAAY,CAAA,EAAA,OAAA,EAAA,CAGZ,qBAAqB;YACrB,iBAAiB,CAAA,EAAA,CAAA;AAGR,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAP3B,YAAY,CAAA,EAAA,CAAA;;2FAOH,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,qBAAqB;wBACrB;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP;AACD,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,qBAAqB;wBACrB;AACD;AACF,iBAAA;;;ACjBD;;AAEG;;;;"}