diff --git a/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.html b/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.html index 1ec7bb3aa..f641f8402 100644 --- a/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.html +++ b/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.html @@ -24,7 +24,7 @@
- +
@@ -39,7 +39,7 @@ diff --git a/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.ts b/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.ts index 582065b82..a4789a714 100644 --- a/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.ts +++ b/src/app/shared/tabs/entity-datatable-tab/datatable-multi-row/datatable-multi-row.component.ts @@ -41,6 +41,7 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges /** Row Selection Data */ selection: SelectionModel; isSelected = false; + isLoading = false; /** Data Table Reference */ @ViewChild('dataTable') dataTableRef: MatTable; @@ -78,9 +79,7 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges } ngOnDestroy(): void { - this.datatableName = null; - this.datatableColumns = null; - this.datatableData = null; + this.resetData(); } ngOnChanges(changes: SimpleChanges): void { @@ -102,6 +101,25 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges } } + resetData() { + this.datatableName = null; + this.datatableColumns = null; + this.datatableData = null; + } + + getData() { + this.isLoading = true; + this.systemService.getEntityDatatable(this.entityId, this.datatableName).subscribe((dataObject: any) => { + this.dataObject.data = dataObject.data; + this.showDeleteBotton = false; + if (this.dataTableRef) { + this.setData(); + } + this.isSelected = false; + this.isLoading = false; + }); + } + /** * Adds a new row to the given multi row data table. */ @@ -121,13 +139,8 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges response.data.value[column] = this.dateUtils.formatDate(response.data.value[column], dataTableEntryObject.dateFormat); }); dataTableEntryObject = { ...response.data.value, ...dataTableEntryObject }; - this.systemService.addEntityDatatableEntry(this.entityId, this.datatableName, dataTableEntryObject).subscribe(() => { - this.systemService.getEntityDatatable(this.entityId, this.datatableName).subscribe((dataObject: any) => { - this.datatableData = dataObject.data; - if (this.dataTableRef) { - this.dataTableRef.renderRows(); - } - }); + this.systemService.addEntityDatatableEntry(this.entityId, this.datatableName, dataTableEntryObject).subscribe((result: any) => { + this.getData(); }); } }); @@ -143,13 +156,7 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges deleteDataTableDialogRef.afterClosed().subscribe((response: any) => { if (response.delete) { this.systemService.deleteDatatableContent(this.entityId, this.datatableName).subscribe(() => { - this.systemService.getEntityDatatable(this.entityId, this.datatableName).subscribe((dataObject: any) => { - this.datatableData = dataObject.data; - this.showDeleteBotton = false; - if (this.dataTableRef) { - this.dataTableRef.renderRows(); - } - }); + this.getData(); }); } }); @@ -164,33 +171,47 @@ export class DatatableMultiRowComponent implements OnInit, OnDestroy, OnChanges }); deleteDataTableDialogRef.afterClosed().subscribe((response: any) => { if (response.delete) { + this.isSelected = false; this.selection.selected.forEach((data) => { - this.systemService.deleteDatatableEntry(this.entityId, data.row[1], this.datatableName).subscribe(() => { + this.systemService.deleteDatatableEntry(this.entityId, data.row[0], this.datatableName).subscribe(() => { this.datatableData.forEach((item: any, index: any) => { - if (item.row[1] === data.row[1]) { - delete this.datatableData[index]; + if (item.row[0] === data.row[0]) { + this.datatableData.splice(index, 1); + this.dataTableRef.renderRows(); + this.selection = new SelectionModel(true, []); + this.isSelected = (this.selection.selected.length > 0); } }); }); }); + } else { + this.selection = new SelectionModel(true, []); + this.isSelected = (this.selection.selected.length > 0); } }); } - formatValue(index: number, value: any): any { - if (this.dataObject.columnHeaders && this.dataObject.columnHeaders[index]) { - const columnDisplayType = this.dataObject.columnHeaders[index].columnDisplayType; - if (columnDisplayType === 'DATE') { - return this.dateFormat.transform(value); - } else if (columnDisplayType === 'DATETIME') { - return this.dateTimeFormat.transform(value); - } else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') { - if (typeof value === 'number') { - return this.numberFormat.transform(value); - } else { - return value; + formatValue(data: any, columnName: string): any { + let value: any = ''; + if (this.dataObject.columnHeaders) { + let idx = 0; + this.dataObject.columnHeaders.some((columnHeader: any) => { + if (columnHeader.columnName === columnName) { + const columnDisplayType = columnHeader.columnDisplayType; + value = data.row[idx]; + if (columnDisplayType === 'DATE') { + value = this.dateFormat.transform(value); + } else if (columnDisplayType === 'DATETIME') { + value = this.dateTimeFormat.transform(value); + } else if (columnDisplayType === 'INTEGER' || columnDisplayType === 'DECIMAL') { + if (typeof value === 'number') { + value = this.numberFormat.transform(value); + } + } + return true; } - } + idx += 1; + }); } return value; }
{{datatableColumn}} - {{ formatValue(i, data.row[i - 1]) }} + {{ formatValue(data, datatableColumn) }}