UNPKG

@obliczeniowo/elementary

Version:
1 lines 11.3 kB
{"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';\nimport { DomSanitizer, SafeHtml, SafeResourceUrl, SafeScript, SafeStyle, SafeUrl } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safe',\n standalone: false\n})\nexport class SafePipeDirective implements PipeTransform {\n constructor(protected sanitizer: DomSanitizer) { }\n\n public transform(value: any, type: 'html' | 'style' | 'script' | 'url' | 'resourceUrl'): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl {\n switch (type) {\n case 'html':\n return this.sanitizer.bypassSecurityTrustHtml(value);\n case 'style':\n return this.sanitizer.bypassSecurityTrustStyle(value);\n case 'script':\n return this.sanitizer.bypassSecurityTrustScript(value);\n case 'url':\n return this.sanitizer.bypassSecurityTrustUrl(value);\n case 'resourceUrl':\n return this.sanitizer.bypassSecurityTrustResourceUrl(value);\n }\n }\n}\n","import { OblFileService } from '@obliczeniowo/elementary/files';\nimport { TableHeaderCell } from './../../interfaces/table-data';\nimport { Component, input, model, SimpleChanges } from '@angular/core';\n\nimport { TableData } from '../../interfaces/table-data';\n\n@Component({\n selector: 'obl-json-def-table',\n templateUrl: './json-def-table.component.html',\n styleUrls: ['./json-def-table.component.scss'],\n standalone: false\n})\nexport class JsonDefTableComponent {\n /** Data in form of JSON string or TableData interface */\n data = model<TableData>();\n /** Table json file url */\n fileUrl = input<string>();\n\n protected currentSortIndex: number = -1;\n\n protected cellSort(cell: TableHeaderCell) {\n if (cell.sort) {\n this.sort(cell);\n }\n }\n\n protected sort(cell: TableHeaderCell) {\n if (!this.data) {\n return;\n }\n\n const data = { ...(this.data()) };\n\n if (data.body && data.header) {\n this.currentSortIndex = data.header[0].cells.findIndex(searchElement => searchElement.value === cell.value);\n\n cell.sort.direction = (cell.sort.direction === 'ASC' && 'DESC') || 'ASC';\n if (cell.sort.type === 'number') {\n data.body = data.body.sort((a, b) => (a.cells[this.currentSortIndex].value || '').localeCompare(b.cells[this.currentSortIndex].value || ''));\n } else {\n data.body = data.body.sort((a, b) => (a.cells[this.currentSortIndex].value || '').localeCompare(b.cells[this.currentSortIndex].value || ''));\n }\n if (cell.sort.direction === 'DESC') {\n data.body = data.body.reverse();\n }\n\n this.data.set(data);\n }\n }\n\n protected headerClass(cell: TableHeaderCell) {\n return { ...(cell.class && { [cell.class]: true } || {}), sort: !!cell.sort }\n }\n\n constructor(private readonly file: OblFileService) {\n }\n\n async ngOnChanges(changes: SimpleChanges) {\n if (changes.fileUrl && this.fileUrl()) {\n const data = await this.file.loadJsonFile(this.fileUrl() as string);\n if (data) {\n this.data.set(data);\n }\n }\n }\n}\n","<table cellspacing=\"0\">\n @if (data()?.caption) {\n <caption>\n @if (data()?.caption?.name) {\n <ng-content [select]=\"data()?.caption?.name\"></ng-content>\n } @else {\n {{ data()?.caption?.value }}\n }\n </caption>\n }\n\n @if (data()?.header) {\n <thead>\n @for (row of data()?.header; track $index) {\n <tr>\n @for (cell of row.cells; track $index) {\n <th\n [style.width]=\"cell.width\"\n [colSpan]=\"cell.mergeX || 1\"\n [rowSpan]=\"cell.mergeY || 1\"\n [class.sort]=\"cell?.sort\"\n (click)=\"cellSort(cell)\"\n >\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n (cell?.name && cellContent) || cellValue;\n context: { $implicit: cell, className: headerClass(cell) }\n \"\n ></ng-container>\n @if (cell?.sort && $index === currentSortIndex) {\n <span class=\"sort\">\n {{ (cell.sort.direction === 'ASC' && '↑') || '↓' }}\n </span>\n }\n </div>\n </th>\n }\n </tr>\n }\n </thead>\n }\n\n @if (data()?.body) {\n <tbody>\n @for (row of data()?.body; track $index) {\n <tr>\n @for (cell of row.cells; track $index) {\n <td\n [class]=\"cell?.class\"\n [colSpan]=\"cell.mergeX || 1\"\n [rowSpan]=\"cell.mergeY || 1\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (cell?.name && cellContent) || cellValue;\n context: { $implicit: cell }\n \"\n ></ng-container>\n </td>\n }\n </tr>\n }\n </tbody>\n }\n\n @if (data()?.foot) {\n <tfoot>\n @for (row of data()?.foot; track $index) {\n <tr>\n @for (cell of row.cells; track $index) {\n <td\n [class]=\"cell?.class\"\n [colSpan]=\"cell.mergeX || 1\"\n [rowSpan]=\"cell.mergeY || 1\"\n >\n <ng-container\n *ngTemplateOutlet=\"\n (cell?.name && cellContent) || cellValue;\n context: { $implicit: cell }\n \"\n ></ng-container>\n </td>\n }\n </tr>\n }\n </tfoot>\n }\n</table>\n\n<ng-template let-cell let-className=\"className\" #cellValue>\n <div [innerHTML]=\"cell.value | safe : 'html'\" [class]=\"className\"></div>\n</ng-template>\n\n<ng-template let-cell #cellContent>\n @if (cell?.name) {\n <ng-content [select]=\"cell.name\"></ng-content>\n }\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { JsonDefTableComponent } from './components/json-def-table/json-def-table.component';\nimport { SafePipeDirective } from './directives/safe-pipe/safe-pipe.directive';\n\n@NgModule({\n declarations: [\n JsonDefTableComponent,\n SafePipeDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n JsonDefTableComponent,\n SafePipeDirective\n ]\n})\nexport class JsonDefTableModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i3.SafePipeDirective"],"mappings":"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"}