From 872406c4157e735a46e6f7475858e7869c844e7a Mon Sep 17 00:00:00 2001 From: Faustin Date: Wed, 6 Nov 2024 15:44:37 +0100 Subject: [PATCH 1/5] fix: auto refresh on dashboard load --- .../dashboard/components/lines/applications-line.component.ts | 1 + .../dashboard/components/lines/partitions-line.component.ts | 1 + src/app/dashboard/components/lines/results-line.component.ts | 3 +++ src/app/dashboard/components/lines/sessions-line.component.ts | 1 + src/app/dashboard/components/lines/tasks-line.component.ts | 1 + src/app/types/components/dashboard-line-table.ts | 1 - 6 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/dashboard/components/lines/applications-line.component.ts b/src/app/dashboard/components/lines/applications-line.component.ts index 15b87535c..e3d9dfeee 100644 --- a/src/app/dashboard/components/lines/applications-line.component.ts +++ b/src/app/dashboard/components/lines/applications-line.component.ts @@ -55,6 +55,7 @@ export class ApplicationsLineComponent extends DashboardLineTableComponent Date: Mon, 18 Nov 2024 10:56:38 +0100 Subject: [PATCH 2/5] fix: correct dates order for task inspection component (#1250) Co-authored-by: ngruelaneo <100275739+ngruelaneo@users.noreply.github.com> --- src/app/tasks/services/tasks-inspection.service.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/app/tasks/services/tasks-inspection.service.ts b/src/app/tasks/services/tasks-inspection.service.ts index 9ed6e4777..f34608856 100644 --- a/src/app/tasks/services/tasks-inspection.service.ts +++ b/src/app/tasks/services/tasks-inspection.service.ts @@ -36,6 +36,11 @@ export class TasksInspectionService extends InspectionService { }, { key: 'createdBy', + link: 'tasks', + }, + { + key: 'payloadId', + link: 'results', }, { key: 'createdAt', @@ -46,7 +51,7 @@ export class TasksInspectionService extends InspectionService { type: 'date' }, { - key: 'fetchedAt', + key: 'receivedAt', type: 'date' }, { @@ -54,7 +59,7 @@ export class TasksInspectionService extends InspectionService { type: 'date' }, { - key: 'receivedAt', + key: 'fetchedAt', type: 'date' }, { From fc901fd52a808c322ff88120698e1634c8a2ec4a Mon Sep 17 00:00:00 2001 From: Faustin Dewas <117363666+fdewas-aneo@users.noreply.github.com> Date: Mon, 18 Nov 2024 10:58:53 +0100 Subject: [PATCH 3/5] chore(ux): inspection page list better display (#1251) --- src/app/components/inspect-list.component.css | 35 +++++++++++++ .../components/inspect-list.component.html | 16 +++--- .../components/inspect-list.component.spec.ts | 32 +++++++++++- src/app/components/inspect-list.component.ts | 51 ++++++++----------- 4 files changed, 96 insertions(+), 38 deletions(-) create mode 100644 src/app/components/inspect-list.component.css diff --git a/src/app/components/inspect-list.component.css b/src/app/components/inspect-list.component.css new file mode 100644 index 000000000..58c18f4c1 --- /dev/null +++ b/src/app/components/inspect-list.component.css @@ -0,0 +1,35 @@ +.header { + display: flex; + align-items: center; + justify-content: space-between; +} + +.no-data { + text-align: center; + margin: 1rem; + font-style: italic; +} + +button { + width: fit-content; +} + +.item { + display: flex; + justify-content: space-between; + align-items: center; + margin: 0.5rem; +} + +mat-divider { + margin-right: 0.5rem; +} + +mat-toolbar { + padding: 1rem; +} + +mat-card { + max-height: 25vh; + overflow-y: auto; +} \ No newline at end of file diff --git a/src/app/components/inspect-list.component.html b/src/app/components/inspect-list.component.html index ad81f9c4a..f7ac7bdb7 100644 --- a/src/app/components/inspect-list.component.html +++ b/src/app/components/inspect-list.component.html @@ -10,13 +10,17 @@ } @else { @for(item of list; track item) {
- @if(redirectLink) { - - } @else { - {{item}} - } + @if(redirectLink) { + + } +
@if(!$last) { diff --git a/src/app/components/inspect-list.component.spec.ts b/src/app/components/inspect-list.component.spec.ts index 762e822c9..7491ce57b 100644 --- a/src/app/components/inspect-list.component.spec.ts +++ b/src/app/components/inspect-list.component.spec.ts @@ -1,4 +1,7 @@ +import { Clipboard } from '@angular/cdk/clipboard'; import { TestBed } from '@angular/core/testing'; +import { IconsService } from '@services/icons.service'; +import { NotificationService } from '@services/notification.service'; import { InspectListComponent } from './inspect-list.component'; describe('InspectListComponent', () => { @@ -11,10 +14,21 @@ describe('InspectListComponent', () => { '2-root-1-0': list[2] }; + const mockClipboard = { + copy: jest.fn() + }; + + const mockNotificationService = { + success: jest.fn(), + }; + beforeEach(() => { component = TestBed.configureTestingModule({ providers: [ - InspectListComponent + InspectListComponent, + IconsService, + { provide: Clipboard, useValue: mockClipboard }, + { provide: NotificationService, useValue: mockNotificationService }, ] }).inject(InspectListComponent); component.list = list; @@ -60,4 +74,20 @@ describe('InspectListComponent', () => { }); }); }); + + describe('copy', () => { + const id = 'id'; + + beforeEach(() => { + component.copy(id); + }); + + it('should copy the provided Id', () => { + expect(mockClipboard.copy).toHaveBeenCalledWith(id); + }); + + it('should notify on copy', () => { + expect(mockNotificationService.success).toHaveBeenCalled(); + }); + }); }); \ No newline at end of file diff --git a/src/app/components/inspect-list.component.ts b/src/app/components/inspect-list.component.ts index dcc6c4513..804d3b570 100644 --- a/src/app/components/inspect-list.component.ts +++ b/src/app/components/inspect-list.component.ts @@ -1,9 +1,13 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { Clipboard } from '@angular/cdk/clipboard'; +import { ChangeDetectionStrategy, Component, Input, inject } from '@angular/core'; import { MatButtonModule } from '@angular/material/button'; import { MatCardModule } from '@angular/material/card'; import { MatDivider } from '@angular/material/divider'; +import { MatIconModule } from '@angular/material/icon'; import { MatToolbarModule } from '@angular/material/toolbar'; import { Params, RouterModule } from '@angular/router'; +import { IconsService } from '@services/icons.service'; +import { NotificationService } from '@services/notification.service'; /** * The inspect list component provide a way to display lists inside a Mat-Card. @@ -21,42 +25,18 @@ import { Params, RouterModule } from '@angular/router'; MatButtonModule, RouterModule, MatDivider, + MatIconModule, ], - styles: [` - .header { - display: flex; - align-items: center; - justify-content: space-between; - } - - .no-data { - text-align: center; - margin: 1rem; - font-style: italic; - } - - button { - width: fit-content; - } - - .item { - width: 100%; - margin: 0.5rem; - } - - mat-divider { - margin-right: 0.5rem; - } - - mat-toolbar { - padding: 1rem; - } - `] + styleUrl: 'inspect-list.component.css', }) export class InspectListComponent { private _list: string[] = []; private _queryParams: Params; + private readonly iconsService = inject(IconsService); + private readonly notificationService = inject(NotificationService); + readonly clipboard = inject(Clipboard); + @Input({ required: true }) set list(entries: string[] | undefined) { if (entries) { this._list = entries; @@ -83,4 +63,13 @@ export class InspectListComponent { get queryParams(): Params { return this._queryParams; } + + getIcon(name: string) { + return this.iconsService.getIcon(name); + } + + copy(value: string) { + this.clipboard.copy(value); + this.notificationService.success('Id copied'); + } } \ No newline at end of file From 298260c376a2313049e86fec3b81121f4936e70a Mon Sep 17 00:00:00 2001 From: Faustin Dewas <117363666+fdewas-aneo@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:01:14 +0100 Subject: [PATCH 4/5] chore(ux): inspection pages option better location (#1252) --- .../inspection/inspection-card.component.html | 5 +++++ .../inspection/inspection-card.component.ts | 4 +++- .../components/inspection/inspection.component.html | 13 ++++--------- .../components/inspection/inspection.component.ts | 2 ++ src/app/components/show-page.component.css | 5 +++++ src/app/components/show-page.component.html | 13 ++++++++----- src/app/components/show-page.component.ts | 10 +--------- src/inspections.css | 2 -- 8 files changed, 28 insertions(+), 26 deletions(-) create mode 100644 src/app/components/show-page.component.css diff --git a/src/app/components/inspection/inspection-card.component.html b/src/app/components/inspection/inspection-card.component.html index 714b1c4d0..a4bb4f56e 100644 --- a/src/app/components/inspection/inspection-card.component.html +++ b/src/app/components/inspection/inspection-card.component.html @@ -1,3 +1,8 @@ +@if (optionsFields && !fields) { + + Options + +} \ No newline at end of file diff --git a/src/app/components/inspection/inspection-card.component.ts b/src/app/components/inspection/inspection-card.component.ts index ab0981e43..a0f7367dd 100644 --- a/src/app/components/inspection/inspection-card.component.ts +++ b/src/app/components/inspection/inspection-card.component.ts @@ -1,5 +1,6 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatCardModule } from '@angular/material/card'; +import { MatToolbarModule } from '@angular/material/toolbar'; import { TaskOptions } from '@app/tasks/types'; import { Field } from '@app/types/column.type'; import { DataRaw, Status } from '@app/types/data'; @@ -11,7 +12,8 @@ import { InspectionComponent } from './inspection.component'; standalone: true, imports: [ MatCardModule, - InspectionComponent + InspectionComponent, + MatToolbarModule, ], styleUrl: '../../../inspections.css', changeDetection: ChangeDetectionStrategy.OnPush diff --git a/src/app/components/inspection/inspection.component.html b/src/app/components/inspection/inspection.component.html index b42f72c44..2341e21a9 100644 --- a/src/app/components/inspection/inspection.component.html +++ b/src/app/components/inspection/inspection.component.html @@ -1,11 +1,6 @@ - +@if (fields) { + +} @if(optionsFields) { - - - - Options - - - - + } \ No newline at end of file diff --git a/src/app/components/inspection/inspection.component.ts b/src/app/components/inspection/inspection.component.ts index 82820482a..23706f4b7 100644 --- a/src/app/components/inspection/inspection.component.ts +++ b/src/app/components/inspection/inspection.component.ts @@ -1,5 +1,6 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatExpansionModule } from '@angular/material/expansion'; +import { MatToolbarModule } from '@angular/material/toolbar'; import { TaskOptions } from '@app/tasks/types'; import { Field } from '@app/types/column.type'; import { DataRaw, Status } from '@app/types/data'; @@ -12,6 +13,7 @@ import { InspectionObjectComponent } from './inspection-object.component'; imports: [ InspectionObjectComponent, MatExpansionModule, + MatToolbarModule, ], changeDetection: ChangeDetectionStrategy.OnPush, styleUrl: '../../../inspections.css', diff --git a/src/app/components/show-page.component.css b/src/app/components/show-page.component.css new file mode 100644 index 000000000..9a240258e --- /dev/null +++ b/src/app/components/show-page.component.css @@ -0,0 +1,5 @@ +section { + display: flex; + flex-direction: column; + gap: 1rem; +} \ No newline at end of file diff --git a/src/app/components/show-page.component.html b/src/app/components/show-page.component.html index 7002a3e48..3f5f71134 100644 --- a/src/app/components/show-page.component.html +++ b/src/app/components/show-page.component.html @@ -7,8 +7,11 @@ -@if (data) { - - - -} +
+ @if (data) { + + + + + } +
\ No newline at end of file diff --git a/src/app/components/show-page.component.ts b/src/app/components/show-page.component.ts index 9d392b7bf..1a1a53845 100644 --- a/src/app/components/show-page.component.ts +++ b/src/app/components/show-page.component.ts @@ -8,21 +8,13 @@ import { InspectionJsonComponent } from './inspection/inspection-json.component' import { InspectionListGridComponent } from './inspection/inspection-list-grid.component'; import { InspectionHeaderComponent } from './inspection-header.component'; import { InspectionToolbarComponent } from './inspection-toolbar.component'; -import { ShowActionsComponent } from './show-actions.component'; -import { ShowCardComponent } from './show-card.component'; @Component({ selector: 'app-show-page', templateUrl: './show-page.component.html', - styles: [` -span { - font-style: italic; -} - `], + styleUrl: 'show-page.component.css', standalone: true, imports: [ - ShowCardComponent, - ShowActionsComponent, InspectionCardComponent, InspectionHeaderComponent, InspectionListGridComponent, diff --git a/src/inspections.css b/src/inspections.css index 271f1d793..ffb6b0640 100644 --- a/src/inspections.css +++ b/src/inspections.css @@ -21,8 +21,6 @@ .arrays { display: grid; grid-template-columns: repeat(3, 1fr); - margin-top: 1rem; - margin-bottom: 1rem; gap: 1rem; } From 438764dcf43c20aa0599591080c79cf6ae8acd46 Mon Sep 17 00:00:00 2001 From: Faustin Dewas <117363666+fdewas-aneo@users.noreply.github.com> Date: Mon, 18 Nov 2024 11:22:48 +0100 Subject: [PATCH 5/5] chore(ux): messages display in inspection page (#1253) --- .../inspection-object.component.html | 4 ++ .../inspection-object.component.spec.ts | 34 +++++++++-- .../inspection/inspection-object.component.ts | 12 +++- .../inspection/message.component.css | 13 +++++ .../inspection/message.component.html | 9 +++ .../inspection/message.component.spec.ts | 58 +++++++++++++++++++ .../inspection/message.component.ts | 47 +++++++++++++++ .../services/results-inspection.service.ts | 1 + .../services/tasks-inspection.service.ts | 4 +- src/app/types/column.type.ts | 2 +- src/app/types/data.ts | 7 ++- src/inspections.css | 2 +- 12 files changed, 181 insertions(+), 12 deletions(-) create mode 100644 src/app/components/inspection/message.component.css create mode 100644 src/app/components/inspection/message.component.html create mode 100644 src/app/components/inspection/message.component.spec.ts create mode 100644 src/app/components/inspection/message.component.ts diff --git a/src/app/components/inspection/inspection-object.component.html b/src/app/components/inspection/inspection-object.component.html index fa42e4c7e..9cd7f06fd 100644 --- a/src/app/components/inspection/inspection-object.component.html +++ b/src/app/components/inspection/inspection-object.component.html @@ -10,6 +10,10 @@ + } @else if (field.type === 'output') { + + } @else if(field.type === 'message') { + } @else { } diff --git a/src/app/components/inspection/inspection-object.component.spec.ts b/src/app/components/inspection/inspection-object.component.spec.ts index 5db1319bd..786143c61 100644 --- a/src/app/components/inspection/inspection-object.component.spec.ts +++ b/src/app/components/inspection/inspection-object.component.spec.ts @@ -1,8 +1,13 @@ import { TaskStatus } from '@aneoconsultingfr/armonik.api.angular'; import { TaskRaw } from '@app/tasks/types'; import { Field } from '@app/types/column.type'; +import { DataRaw } from '@app/types/data'; import { InspectionObjectComponent } from './inspection-object.component'; +function findField(key: string, fields: Field[]) { + return fields.find(field => field.key === key); +} + describe('InspectionObjectComponent', () => { const component = new InspectionObjectComponent(); @@ -10,6 +15,11 @@ describe('InspectionObjectComponent', () => { id: 'taskId', options: { applicationName: 'string', + }, + statusMessage: 'some message', + output: { + error: 'error message', + success: false, } } as TaskRaw; @@ -24,14 +34,18 @@ describe('InspectionObjectComponent', () => { type: 'link', link: 'sessions' }, + { + key: 'output', + type: 'output' + }, + { + key: 'statusMessage', + type: 'message' + }, { key: 'options', type: 'object' }, - { - key: 'createdAt', - type: 'date' - } ]; const statuses: Record = { @@ -65,11 +79,19 @@ describe('InspectionObjectComponent', () => { it('should set data keys as fields if none are provided', () => { component.fields = []; component.data = data; - expect(component.fields).toEqual([{ key: 'id' }, { key: 'options' }]); + expect(component.fields).toEqual([{ key: 'id' }, { key: 'options' }, { key: 'output' }, { key: 'statusMessage' }]); }); }); it('should get an object', () => { - expect(component.getObject(fields[2])).toEqual(data.options); + expect(component.getObject(findField('options', fields)!)).toEqual(data.options); + }); + + it('should get the output error', () => { + expect(component.getError(findField('output', fields)!)).toEqual(data.output?.error); + }); + + it('should get the message', () => { + expect(component.getMessage(findField('statusMessage', fields)!)).toEqual(data.statusMessage); }); }); \ No newline at end of file diff --git a/src/app/components/inspection/inspection-object.component.ts b/src/app/components/inspection/inspection-object.component.ts index 8fc59e2bb..1be0817aa 100644 --- a/src/app/components/inspection/inspection-object.component.ts +++ b/src/app/components/inspection/inspection-object.component.ts @@ -2,9 +2,10 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; import { MatExpansionModule } from '@angular/material/expansion'; import { TaskOptions } from '@app/tasks/types'; import { Field } from '@app/types/column.type'; -import { DataRaw, Status } from '@app/types/data'; +import { DataRaw, Status, TaskOutput } from '@app/types/data'; import { PrettyPipe } from '@pipes/pretty.pipe'; import { FieldContentComponent } from './field-content.component'; +import { MessageComponent } from './message.component'; @Component({ selector: 'app-inspection-object', @@ -14,6 +15,7 @@ import { FieldContentComponent } from './field-content.component'; MatExpansionModule, PrettyPipe, FieldContentComponent, + MessageComponent ], styleUrl: '../../../inspections.css', changeDetection: ChangeDetectionStrategy.OnPush @@ -50,6 +52,14 @@ export class InspectionObjectComponent | Field): string { + return ((this.data as T)[field.key as keyof T] as TaskOutput).error; + } + + getMessage(field: Field | Field): string { + return (this.data as T)[field.key as keyof T] as string; + } + getObject(field: Field | Field): T { return (this.data as T | NonNullable)[field.key as keyof (T | O)] as T; } diff --git a/src/app/components/inspection/message.component.css b/src/app/components/inspection/message.component.css new file mode 100644 index 000000000..e5e460aac --- /dev/null +++ b/src/app/components/inspection/message.component.css @@ -0,0 +1,13 @@ +mat-card { + padding: 1rem; +} + +#message-header { + display: flex; + align-items: center; + gap: 0.5rem; +} + +h2 { + margin: 0px; +} \ No newline at end of file diff --git a/src/app/components/inspection/message.component.html b/src/app/components/inspection/message.component.html new file mode 100644 index 000000000..f6618324f --- /dev/null +++ b/src/app/components/inspection/message.component.html @@ -0,0 +1,9 @@ +@if (message) { +
+

{{ label | pretty }}

+ +
+ {{ message }} +} \ No newline at end of file diff --git a/src/app/components/inspection/message.component.spec.ts b/src/app/components/inspection/message.component.spec.ts new file mode 100644 index 000000000..bfbe852a1 --- /dev/null +++ b/src/app/components/inspection/message.component.spec.ts @@ -0,0 +1,58 @@ +import { Clipboard } from '@angular/cdk/clipboard'; +import { TestBed } from '@angular/core/testing'; +import { NotificationService } from '@services/notification.service'; +import { MessageComponent } from './message.component'; + +describe('MessageComponent', () => { + let component: MessageComponent; + + const label = 'Output'; + const error = 'Error message'; + + const mockNotificationService = { + success: jest.fn(), + }; + + const mockClipboard = { + copy: jest.fn() + }; + + beforeEach(() => { + component = TestBed.configureTestingModule({ + providers: [ + MessageComponent, + { provide: NotificationService, useValue: mockNotificationService }, + { provide: Clipboard, useValue: mockClipboard }, + ] + }).inject(MessageComponent); + + component.label = label; + component.message = error; + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); + + it('should set label', () => { + expect(component.label).toEqual(label); + }); + + it('should set the message', () => { + expect(component.message).toEqual(error); + }); + + describe('copy', () => { + beforeEach(() => { + component.copy(); + }); + + it('should copy the message', () => { + expect(mockClipboard.copy).toHaveBeenCalledWith(error); + }); + + it('should notify the user', () => { + expect(mockNotificationService.success).toHaveBeenCalled(); + }); + }); +}); \ No newline at end of file diff --git a/src/app/components/inspection/message.component.ts b/src/app/components/inspection/message.component.ts new file mode 100644 index 000000000..47e60a5b1 --- /dev/null +++ b/src/app/components/inspection/message.component.ts @@ -0,0 +1,47 @@ +import { Clipboard } from '@angular/cdk/clipboard'; +import { Component, Input, inject } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatCardModule } from '@angular/material/card'; +import { MatIconModule } from '@angular/material/icon'; +import { PrettyPipe } from '@pipes/pretty.pipe'; +import { NotificationService } from '@services/notification.service'; + +@Component({ + selector: 'app-message', + templateUrl: 'message.component.html', + styleUrl: 'message.component.css', + standalone: true, + imports: [ + MatCardModule, + MatButtonModule, + MatIconModule, + PrettyPipe, + ] +}) +export class MessageComponent { + @Input({ required: true }) message: string | undefined; + + @Input({ required: false }) set label(entry: string | number | symbol | undefined) { + if (entry) { + this._label = entry.toString(); + } + } + + private _label = $localize`Message`; + + get label(): string { + return this._label; + } + + readonly copyIcon = 'content_copy'; + + private readonly clipboard = inject(Clipboard); + private readonly notificationService = inject(NotificationService); + + copy() { + if (this.message) { + this.clipboard.copy(this.message); + this.notificationService.success('Message copied'); + } + } +} \ No newline at end of file diff --git a/src/app/results/services/results-inspection.service.ts b/src/app/results/services/results-inspection.service.ts index 29f170190..d6cd673b6 100644 --- a/src/app/results/services/results-inspection.service.ts +++ b/src/app/results/services/results-inspection.service.ts @@ -21,6 +21,7 @@ export class ResultsInspectionService extends InspectionService { }, { key: 'createdBy', + link: 'task', }, { key: 'completedAt', diff --git a/src/app/tasks/services/tasks-inspection.service.ts b/src/app/tasks/services/tasks-inspection.service.ts index f34608856..1066570bf 100644 --- a/src/app/tasks/services/tasks-inspection.service.ts +++ b/src/app/tasks/services/tasks-inspection.service.ts @@ -76,11 +76,11 @@ export class TasksInspectionService extends InspectionService { }, { key: 'statusMessage', - type: 'object' + type: 'message' }, { key: 'output', - type: 'object' + type: 'output' }, ]; diff --git a/src/app/types/column.type.ts b/src/app/types/column.type.ts index e354acef4..38e1e5c26 100644 --- a/src/app/types/column.type.ts +++ b/src/app/types/column.type.ts @@ -1,7 +1,7 @@ import { TaskOptions } from '@app/tasks/types'; import { ColumnKey, DataRaw } from '@app/types/data'; -export type DataType = 'raw' | 'link' | 'object' | 'date' | 'duration' | 'status' | 'array'; +export type DataType = 'raw' | 'link' | 'object' | 'date' | 'duration' | 'status' | 'array' | 'output' | 'message'; export type ColumnType = DataType | 'count' | 'actions' | 'select'; export type Field = { diff --git a/src/app/types/data.ts b/src/app/types/data.ts index e7019ec6c..6296c67fa 100644 --- a/src/app/types/data.ts +++ b/src/app/types/data.ts @@ -45,4 +45,9 @@ export interface ResultData extends ArmonikData { export type Status = TaskStatus | SessionStatus | ResultStatus; -export type GrpcResponse = ListApplicationsResponse | ListTasksResponse | ListSessionsResponse | ListPartitionsResponse | ListResultsResponse; \ No newline at end of file +export type GrpcResponse = ListApplicationsResponse | ListTasksResponse | ListSessionsResponse | ListPartitionsResponse | ListResultsResponse; + +export type TaskOutput = { + error: string; + success: boolean; +} \ No newline at end of file diff --git a/src/inspections.css b/src/inspections.css index ffb6b0640..9180ab67c 100644 --- a/src/inspections.css +++ b/src/inspections.css @@ -31,7 +31,7 @@ row-gap: 0.5rem; } -mat-accordion { +mat-accordion, app-message { grid-column: 1 / 4; }