-
{{ group.name }}
+
{{ group.name() }}
Total:
diff --git a/src/app/components/table/group/group-row/group.component.ts b/src/app/components/table/group/group-row/group.component.ts
index e70741915..a69a4c5db 100644
--- a/src/app/components/table/group/group-row/group.component.ts
+++ b/src/app/components/table/group/group-row/group.component.ts
@@ -81,6 +81,6 @@ export class TableGroupComponent {
private readonly dialogRef: MatDialogRef, ManageGroupsDialogResult> = inject(MatDialogRef);
- constructor(@Inject(MAT_DIALOG_DATA) private readonly dialogData: ManageGroupsDialogInput) {
+ constructor(@Inject(MAT_DIALOG_DATA) dialogData: ManageGroupsDialogInput) {
this.groups = structuredClone(dialogData.groups);
if (dialogData.selected !== undefined) {
- this.selectedGroup = this.groups.find(group => group.name === dialogData.selected);
+ const group = this.groups.find(group => group.name === dialogData.selected);
+ if (group) {
+ this.selectGroup(group, true);
+ }
}
}
diff --git a/src/app/sessions/components/table.component.ts b/src/app/sessions/components/table.component.ts
index 41ab79184..8b1f0399c 100644
--- a/src/app/sessions/components/table.component.ts
+++ b/src/app/sessions/components/table.component.ts
@@ -171,12 +171,18 @@ export class SessionsTableComponent extends AbstractTaskByStatusTableComponent, ManageGroupsDialogInput>(ManageGroupsDialogComponent, {
+ const dialogRef = this.dialog.open, ManageGroupsDialogInput>(ManageGroupsDialogComponent, {
data: {
groups: this.tableDataService.groupsConditions,
selected: groupName,
},
viewContainerRef: this.viewContainerRef
});
+
+ dialogRef.afterClosed().subscribe((result) => {
+ if (result) {
+ this.tableDataService.manageGroupDialogResult(result);
+ }
+ });
}
}
diff --git a/src/app/sessions/services/sessions-data.service.ts b/src/app/sessions/services/sessions-data.service.ts
index 3a5dd42c7..919414137 100644
--- a/src/app/sessions/services/sessions-data.service.ts
+++ b/src/app/sessions/services/sessions-data.service.ts
@@ -1,5 +1,5 @@
import { FilterDateOperator, FilterStringOperator, ListSessionsResponse, ResultRawEnumField, SessionRawEnumField, TaskOptionEnumField, TaskSummaryEnumField } from '@aneoconsultingfr/armonik.api.angular';
-import { Injectable, OnDestroy, inject } from '@angular/core';
+import { Injectable, OnDestroy, inject, signal } from '@angular/core';
import { Params } from '@angular/router';
import { TaskOptions, TaskSummaryFilters } from '@app/tasks/types';
import { Scope } from '@app/types/config';
@@ -11,7 +11,7 @@ import { AbstractTableDataService } from '@app/types/services/table-data.service
import { ManageGroupsDialogResult } from '@components/table/group/manage-groups-dialog/manage-groups-dialog.component';
import { Duration, Timestamp } from '@ngx-grpc/well-known-types';
import { InvertFilterService } from '@services/invert-filter.service';
-import { Subject, map, merge, mergeAll, switchMap } from 'rxjs';
+import { Subject, map, merge, mergeAll, of, switchMap } from 'rxjs';
import { SessionsGrpcService } from './sessions-grpc.service';
import { SessionRaw } from '../types';
@@ -51,7 +51,7 @@ export class SessionsDataService extends AbstractTableDataService) {
+ setGroup(groupName: string) {
const groupRefresh$ = new Subject();
const group: Group = {
- name: groupCondition.name,
+ name: signal(groupName),
opened: false,
total: 0,
page: 0,
refresh$: groupRefresh$,
data: merge(this.refresh$, groupRefresh$).pipe(
- switchMap(() => this.grpcService.list$({pageSize: 100, pageIndex: group.page, sort: this.options.sort}, groupCondition.conditions)),
+ switchMap(() => {
+ const options = {
+ pageSize: 100,
+ pageIndex: group.page,
+ sort: this.options.sort
+ };
+ const groupConditions = this.groupsConditions.find((condition) => condition.name === group.name());
+ if (groupConditions) {
+ return this.grpcService.list$(options, groupConditions.conditions);
+ }
+ return of(undefined);
+ }),
map((data) => {
- group.total = data.total;
- return this.computeGrpcData(data);
+ if (data) {
+ group.total = data.total;
+ return this.computeGrpcData(data);
+ }
+ return undefined;
}),
map((data) => {
if (data) {
@@ -247,35 +261,37 @@ export class SessionsDataService extends AbstractTableDataService group.name === key);
- if (groupIndex) {
- this.groupsConditions[groupIndex].name = dialogResult.editedGroups[key].name;
+ const groupIndex = this.groups.findIndex((group) => group.name() === key);
+ if (groupIndex !== -1) {
+ this.groups[groupIndex].name.set(dialogResult.editedGroups[key].name);
}
});
dialogResult.addedGroups.forEach((group) => (this.addGroup(group)));
dialogResult.deletedGroups.forEach((groupName) => (this.removeGroup(groupName)));
+
+ this.refresh$.next();
}
- setGroups() {
- this.groupsConditions.forEach((g) => this.initGroup(g));
+ initGroups() {
+ this.groupsConditions.forEach((g) => this.setGroup(g.name));
}
addGroup(groupCondition: GroupConditions) {
this.groupsConditions.push(groupCondition);
- this.initGroup(groupCondition);
+ this.setGroup(groupCondition.name);
}
refreshGroup(groupName: string) {
- const group = this.groups.find((group) => group.name === groupName);
+ const group = this.groups.find((group) => group.name() === groupName);
if (group) {
group.refresh$.next();
}
}
removeGroup(groupName: string) {
- const index = this.groups.findIndex((group) => group.name === groupName);
+ const index = this.groups.findIndex((group) => group.name() === groupName);
if (index !== -1) {
this.groups.splice(index, 1);
}
diff --git a/src/app/types/groups.ts b/src/app/types/groups.ts
index 8b37135cf..b0feeac4a 100644
--- a/src/app/types/groups.ts
+++ b/src/app/types/groups.ts
@@ -1,3 +1,4 @@
+import { WritableSignal } from '@angular/core';
import { TaskOptions } from '@app/tasks/types';
import { Observable, Subject } from 'rxjs';
import { ArmonikData, DataRaw } from './data';
@@ -9,7 +10,7 @@ export type GroupConditions = {
- name: string;
+ name: WritableSignal;
opened: boolean;
total: number;
page: number;
From 4cd68a844db9bafd0f5da2fa625ecb9455919faf Mon Sep 17 00:00:00 2001
From: Faustin
Date: Wed, 12 Feb 2025 11:09:02 +0100
Subject: [PATCH 16/47] feat: added groups everywhere
---
src/app/applications/index.component.html | 1 +
.../components/columns-button.component.ts | 1 -
.../table-actions-toolbar.component.html | 5 +
.../table-actions-toolbar.component.ts | 5 +
...e-dashboard-actions-toolbar.component.html | 1 +
...ble-dashboard-actions-toolbar.component.ts | 5 +
...table-index-actions-toolbar.component.html | 1 +
.../table-index-actions-toolbar.component.ts | 5 +
.../manage-groups-dialog.component.ts | 10 +-
.../lines/applications-line.component.html | 1 +
.../lines/partitions-line.component.html | 1 +
.../lines/results-line.component.html | 1 +
.../lines/sessions-line.component.html | 1 +
.../lines/tasks-line.component.html | 1 +
src/app/dashboard/index.component.ts | 15 +--
src/app/dashboard/types.ts | 2 +
src/app/partitions/index.component.html | 1 +
src/app/results/index.component.html | 1 +
src/app/services/default-config.service.ts | 5 +
src/app/services/table.service.ts | 24 +++-
.../sessions/components/table.component.html | 10 +-
.../sessions/components/table.component.ts | 24 +---
src/app/sessions/index.component.html | 5 +-
src/app/sessions/index.component.ts | 19 +--
.../services/sessions-data.service.ts | 116 +-----------------
src/app/tasks/index.component.html | 1 +
.../types/components/dashboard-line-table.ts | 29 ++++-
src/app/types/components/index.ts | 28 ++++-
src/app/types/components/table.ts | 28 ++++-
src/app/types/config.ts | 3 +-
src/app/types/services/data-filter.service.ts | 15 ++-
src/app/types/services/table-data.service.ts | 90 +++++++++++++-
32 files changed, 266 insertions(+), 189 deletions(-)
diff --git a/src/app/applications/index.component.html b/src/app/applications/index.component.html
index 33d861f3b..3d1fd39e5 100644
--- a/src/app/applications/index.component.html
+++ b/src/app/applications/index.component.html
@@ -20,6 +20,7 @@
(resetFilters)="onFiltersReset()"
(lockColumnsChange)="onLockColumnsChange()"
(addToDashboard)="onAddToDashboard()"
+ (groupSettings)="openGroupsSettings()"
>
diff --git a/src/app/components/columns-button.component.ts b/src/app/components/columns-button.component.ts
index 62f1c13ed..8c17165f4 100644
--- a/src/app/components/columns-button.component.ts
+++ b/src/app/components/columns-button.component.ts
@@ -20,7 +20,6 @@ import { ColumnsModifyDialogComponent } from './columns-modify-dialog.component'
`],
standalone: true,
imports: [
- ColumnsModifyDialogComponent,
MatDialogModule,
MatButtonModule,
MatIconModule
diff --git a/src/app/components/table-actions-toolbar.component.html b/src/app/components/table-actions-toolbar.component.html
index fbe6deb0a..aee9c9c7d 100644
--- a/src/app/components/table-actions-toolbar.component.html
+++ b/src/app/components/table-actions-toolbar.component.html
@@ -9,6 +9,11 @@
+
+
= new EventEmitter();
@Output() resetFilters: EventEmitter = new EventEmitter();
@Output() lockColumnsChange = new EventEmitter();
+ @Output() groupSettings = new EventEmitter();
getIcon(name: string): string {
return this.iconsService.getIcon(name);
@@ -78,4 +79,8 @@ export class TableActionsToolbarComponent
diff --git a/src/app/components/table-dashboard-actions-toolbar.component.ts b/src/app/components/table-dashboard-actions-toolbar.component.ts
index 2004f76f0..67e966b1e 100644
--- a/src/app/components/table-dashboard-actions-toolbar.component.ts
+++ b/src/app/components/table-dashboard-actions-toolbar.component.ts
@@ -35,6 +35,7 @@ export class TableDashboardActionsToolbarComponent();
@Output() editNameLine = new EventEmitter();
@Output() deleteLine = new EventEmitter();
+ @Output() groupSettings = new EventEmitter();
getIcon(name: string): string {
return this.iconsService.getIcon(name);
@@ -71,4 +72,8 @@ export class TableDashboardActionsToolbarComponent
diff --git a/src/app/components/table-index-actions-toolbar.component.ts b/src/app/components/table-index-actions-toolbar.component.ts
index 37a7a1b5c..6da3e9a69 100644
--- a/src/app/components/table-index-actions-toolbar.component.ts
+++ b/src/app/components/table-index-actions-toolbar.component.ts
@@ -35,6 +35,7 @@ export class TableIndexActionsToolbarComponent = new EventEmitter();
@Output() lockColumnsChange = new EventEmitter();
@Output() addToDashboard = new EventEmitter();
+ @Output() groupSettings = new EventEmitter();
getIcon(value: string): string {
return this.iconsService.getIcon(value);
@@ -67,4 +68,8 @@ export class TableIndexActionsToolbarComponent = {
+export type ManageGroupsTableDialogInput = {
groups: GroupConditions[];
selected?: string;
}
-export type ManageGroupsDialogResult = {
+export type ManageGroupsTableDialogResult = {
addedGroups: GroupConditions[];
editedGroups: Record>;
deletedGroups: string[];
@@ -40,9 +40,9 @@ export type ManageGroupsDialogResult {
- private readonly dialogRef: MatDialogRef, ManageGroupsDialogResult> = inject(MatDialogRef);
- constructor(@Inject(MAT_DIALOG_DATA) dialogData: ManageGroupsDialogInput) {
+export class ManageTableGroupsDialogComponent {
+ private readonly dialogRef: MatDialogRef, ManageGroupsTableDialogResult> = inject(MatDialogRef);
+ constructor(@Inject(MAT_DIALOG_DATA) dialogData: ManageGroupsTableDialogInput) {
this.groups = structuredClone(dialogData.groups);
if (dialogData.selected !== undefined) {
const group = this.groups.find(group => group.name === dialogData.selected);
diff --git a/src/app/dashboard/components/lines/applications-line.component.html b/src/app/dashboard/components/lines/applications-line.component.html
index a4b26d040..822e99dca 100644
--- a/src/app/dashboard/components/lines/applications-line.component.html
+++ b/src/app/dashboard/components/lines/applications-line.component.html
@@ -16,6 +16,7 @@
(lockColumnsChange)="onLockColumnsChange()"
(deleteLine)="onDeleteLine()"
(editNameLine)="onEditNameLine()"
+ (groupSettings)="openGroupsSettings()"
>
diff --git a/src/app/dashboard/components/lines/partitions-line.component.html b/src/app/dashboard/components/lines/partitions-line.component.html
index 402b611be..d5f15d323 100644
--- a/src/app/dashboard/components/lines/partitions-line.component.html
+++ b/src/app/dashboard/components/lines/partitions-line.component.html
@@ -16,6 +16,7 @@
(lockColumnsChange)="onLockColumnsChange()"
(deleteLine)="onDeleteLine()"
(editNameLine)="onEditNameLine()"
+ (groupSettings)="openGroupsSettings()"
>
diff --git a/src/app/dashboard/components/lines/results-line.component.html b/src/app/dashboard/components/lines/results-line.component.html
index 3754cc45d..35740959d 100644
--- a/src/app/dashboard/components/lines/results-line.component.html
+++ b/src/app/dashboard/components/lines/results-line.component.html
@@ -16,6 +16,7 @@
(lockColumnsChange)="onLockColumnsChange()"
(deleteLine)="onDeleteLine()"
(editNameLine)="onEditNameLine()"
+ (groupSettings)="openGroupsSettings()"
>
diff --git a/src/app/dashboard/components/lines/sessions-line.component.html b/src/app/dashboard/components/lines/sessions-line.component.html
index 0f628f8b5..7c2fef4c6 100644
--- a/src/app/dashboard/components/lines/sessions-line.component.html
+++ b/src/app/dashboard/components/lines/sessions-line.component.html
@@ -16,6 +16,7 @@
(lockColumnsChange)="onLockColumnsChange()"
(deleteLine)="onDeleteLine()"
(editNameLine)="onEditNameLine()"
+ (groupSettings)="openGroupsSettings()"
>