datatable-single-row now supports json object

This commit is contained in:
Dániel Gyenizse
2023-11-20 10:24:05 +01:00
committed by Adam Saghy
parent df71736fd6
commit 3f4e44af49
6 changed files with 56 additions and 5 deletions
+4 -3
View File
@@ -11,13 +11,14 @@ import { DatetimeFormatPipe } from './datetime-format.pipe';
import { ExternalIdentifierPipe } from './external-identifier.pipe';
import { FormatNumberPipe } from './format-number.pipe';
import { YesnoPipe } from './yesno.pipe';
import { PrettyPrintPipe } from './pretty-print.pipe';
@NgModule({
imports: [
CommonModule
],
declarations: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe ],
providers: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe ],
exports: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe ]
declarations: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe, PrettyPrintPipe ],
providers: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe, PrettyPrintPipe ],
exports: [StatusLookupPipe, AccountsFilterPipe, ChargesFilterPipe, ChargesPenaltyFilterPipe, FindPipe, UrlToStringPipe, DateFormatPipe, DatetimeFormatPipe, ExternalIdentifierPipe, FormatNumberPipe, YesnoPipe, PrettyPrintPipe ]
})
export class PipesModule { }
+19
View File
@@ -0,0 +1,19 @@
import {Pipe, PipeTransform} from '@angular/core';
import * as vkbeautify from 'vkbeautify';
@Pipe({
name: 'prettyPrint'
})
export class PrettyPrintPipe implements PipeTransform {
transform(value: any) {
if (value.charAt(0) === '{' && value.charAt(value.length - 1) === '}') {
try {
return vkbeautify.json(value);
} catch(error) {
return value;
}
}
return value;
}
}
@@ -1,5 +1,5 @@
.container {
max-width: 37rem;
max-width: 50rem;
.content {
div {
margin: 1rem 0;
@@ -22,7 +22,7 @@
{{ getInputName(columnHeader.columnName) }}
</div>
<div fxFlex="68%" [ngSwitch]="columnHeader.columnDisplayType" class="right">
<div fxFlex="68%" [ngSwitch]="getColumnType(columnHeader.columnDisplayType, columnHeader.columnType)" class="right">
<span *ngSwitchCase="'DATE'">
{{dataObject.data[0].row[i] | dateFormat}}
</span>
@@ -35,6 +35,8 @@
<span *ngSwitchCase="'TEXT'" class="long-text">
{{dataObject.data[0].row[i]}}
</span>
<textarea *ngSwitchCase="'JSON'" cdkTextareaAutosize="true" cdkAutosizeMaxRows="20" cdkAutosizeMinRows="1" style="width: 100%; height: 100%" [innerHTML]="dataObject.data[0].row[i].value | prettyPrint">
</textarea>
<span *ngSwitchDefault>
<span class="m-r-5" *ngIf="isValidUrl(dataObject.data[0].row[i])">
<button mat-icon-button matTooltip="{{ 'tooltips.View Link' | translate }}" (click)="openSite(dataObject.data[0].row[i])"
@@ -129,6 +129,33 @@ export class DatatableSingleRowComponent implements OnInit {
return 'table-data';
}
getColumnType(columnDisplayType: string, columnType: string) {
switch (columnDisplayType) {
case 'DATE': {
return columnDisplayType;
}
case 'DATETIME': {
return columnDisplayType;
}
case 'INTEGER': {
return columnDisplayType;
}
case 'DECIMAL': {
return columnDisplayType;
}
case 'TEXT': {
if (columnType == 'JSON') {
return 'JSON';
} else {
return columnDisplayType;
}
}
default: {
return columnDisplayType;
}
}
}
getInputName(attr: string): string {
return this.datatables.getName(attr);
}