Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS will be completely phased out by mid-2025. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit 6689ca18 authored by Joze RIHTARSIC's avatar Joze RIHTARSIC
Browse files

[EDELIVERY-13995] [UI] resource edit: groups and domain refresh

parent 59252e35
No related branches found
No related tags found
No related merge requests found
......@@ -29,6 +29,9 @@ import {lastValueFrom} from "rxjs";
import {
SmpTableColDef
} from "../../../common/components/smp-table/smp-table-coldef.model";
import {
EditResourceController
} from "../../edit-resources/edit-resource.controller";
@Component({
selector: 'domain-group-panel',
......@@ -52,6 +55,7 @@ export class DomainGroupComponent implements OnInit, BeforeLeaveGuard {
selectedGroup: GroupRo;
constructor(private editDomainService: EditDomainService,
private editResourceController: EditResourceController,
private alertService: AlertMessageService,
private dialog: MatDialog,
private formBuilder: FormBuilder,
......@@ -216,6 +220,7 @@ export class DomainGroupComponent implements OnInit, BeforeLeaveGuard {
if (result) {
this.alertService.success(await lastValueFrom(this.translateService.get("domain.group.success.delete", {groupName: result.groupName})));
this.onGroupSelected(null);
this.editResourceController.dataChanged = true;
this.refresh()
}
}, (error) => {
......
......@@ -6,6 +6,9 @@ import {AlertMessageService} from "../../../../common/alert-message/alert-messag
import {VisibilityEnum} from "../../../../common/enums/visibility.enum";
import {GroupRo} from "../../../../common/model/group-ro.model";
import {EditDomainService} from "../../edit-domain.service";
import {
EditResourceController
} from "../../../edit-resources/edit-resource.controller";
@Component({
......@@ -29,6 +32,7 @@ export class GroupDialogComponent {
constructor(@Inject(MAT_DIALOG_DATA) public data: any,
private editDomainService: EditDomainService,
private editResourceController: EditResourceController,
public dialogRef: MatDialogRef<GroupDialogComponent>,
private alertService: AlertMessageService,
private formBuilder: FormBuilder
......@@ -112,6 +116,7 @@ export class GroupDialogComponent {
this.editDomainService.createDomainGroupObservable(this._currentDomain.domainId, group).subscribe((group: GroupRo) => {
if (!!group) {
this.editResourceController.dataChanged = true;
this.closeDialog();
}
}, (error) => {
......@@ -126,6 +131,7 @@ export class GroupDialogComponent {
public saveGroup(group: GroupRo) {
this.editDomainService.saveDomainGroupObservable(this._currentDomain.domainId, group).subscribe((group: GroupRo) => {
if (!!group) {
this.editResourceController.dataChanged = true;
this.closeDialog();
}
}, (error) => {
......
......@@ -34,6 +34,9 @@ import {MatTableDataSource} from "@angular/material/table";
import {
SmpTableColDef
} from "../../../common/components/smp-table/smp-table-coldef.model";
import {
EditResourceController
} from "../../edit-resources/edit-resource.controller";
@Component({
selector: 'group-resource-panel',
......@@ -58,6 +61,7 @@ export class GroupResourcePanelComponent implements BeforeLeaveGuard {
columns: SmpTableColDef[];
constructor(private editGroupService: EditGroupService,
private editResourceController: EditResourceController,
private alertService: AlertMessageService,
private dialog: MatDialog,
private translateService: TranslateService) {
......@@ -220,6 +224,7 @@ export class GroupResourcePanelComponent implements BeforeLeaveGuard {
this.editGroupService.deleteResourceFromGroup(resource, this._group, this.domain)
.pipe(
finalize(() => {
this.editResourceController.dataChanged = true;
this.refresh();
this.isLoadingResults = false;
}))
......
......@@ -31,6 +31,9 @@ import {
DomainPropertyRo
} from "../../../../common/model/domain-property-ro.model";
import {Subscription} from "rxjs";
import {
EditResourceController
} from "../../../edit-resources/edit-resource.controller";
@Component({
......@@ -67,6 +70,7 @@ export class ResourceDialogComponent implements OnInit {
public dialogRef: MatDialogRef<ResourceDialogComponent>,
private editGroupService: EditGroupService,
private editResourceService: EditResourceService,
private editResourceController: EditResourceController,
private alertService: AlertMessageService,
private httpErrorHandlerService: HttpErrorHandlerService,
private editDomainService: EditDomainService,
......@@ -224,6 +228,8 @@ export class ResourceDialogComponent implements OnInit {
this.editGroupService.createResourceForGroup(this.resource, this.group, this.domain).subscribe({
next: (result: ResourceRo) => {
if (!!result) {
// refresh the domains/groups/resources for user to see the changes
this.editResourceController.dataChanged = true;
this.closeDialog();
}
this.submitInProgress = false;
......@@ -239,6 +245,8 @@ export class ResourceDialogComponent implements OnInit {
this.editResourceService.updateResourceForGroup(resource, this.group, this.domain).subscribe({
next: (result: ResourceRo): void => {
if (!!result) {
// refresh the domains/groups/resources for user to see the changes
this.editResourceController.dataChanged = true;
this.closeDialog();
}
this.submitInProgress = false;
......
......@@ -47,6 +47,8 @@ export class EditResourceComponent implements OnInit, BeforeLeaveGuard {
ngOnInit() {
console.log("EditResourceComponent: ngOnInit " + this.columns.length);
this.editResourceController.refreshDataOnDataChange();
if (!this.selectedResource) {
this.editResourceController.refreshDomains();
} else {
......
......@@ -28,13 +28,16 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
domainList: DomainRo[] = [];
groupList: GroupRo[] = [];
// data changed indicates the cached data may be outdated and need to be refreshed
_dataChanged: boolean = false;
_isLoadingResults:boolean = false;
_selectedDomain: DomainRo;
_selectedGroup: GroupRo;
_selectedResource: ResourceRo;
_selectedDomainResourceDefs: ResourceDefinitionRo[];
resourcesFilter: any = {};
isLoadingResults = false;
dataLength:number = 0;
pageIndex:number = 0;
......@@ -58,6 +61,29 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
});
}
// this flag is used to trigger data refresh when data is needed.
//The data can be changed for the user when adding/creating new resource in the edit group
@Input() set dataChanged(value: boolean) {
this._dataChanged = value;
}
get dataChanged(): boolean {
return this._dataChanged;
}
// this flag is used to trigger data refresh when data is needed.
//The data can be changed for the user when adding/creating new resource in the edit group
@Input() set isLoadingResults(value: boolean) {
if (!value) {
// data was loaded, and we can reset the flag for data changed
this._dataChanged = value
}
this._isLoadingResults = value;
}
get isLoadingResults(): boolean {
return this._isLoadingResults;
}
private clearSelectedData() {
this.domainList = [];
......@@ -77,7 +103,7 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
@Input() set selectedDomain(domain: DomainRo) {
this._selectedDomain = domain;
if (!!this.selectedDomain) {
if (!!this.selectedDomain || this.dataChanged) {
this.refreshGroups();
this.refreshDomainsResourceDefinitions();
} else {
......@@ -93,7 +119,7 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
@Input() set selectedGroup(resource: GroupRo) {
this._selectedGroup = resource;
if (!!this._selectedGroup) {
if (!!this._selectedGroup || this.dataChanged ) {
this.refreshResources();
} else {
this.isLoadingResults = false;
......@@ -123,6 +149,15 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
this._selectedResource = resource;
};
/**
* Method refreshes data when data changed
*/
refreshDataOnDataChange() {
if (this.dataChanged) {
this.refreshDomains();
}
}
refreshDomains() {
this.isLoadingResults = true;
......@@ -140,6 +175,7 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
refreshGroups() {
if (!this.selectedDomain) {
this.updateGroupList([]);
this.isLoadingResults = false;
return;
}
......@@ -191,6 +227,7 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
if (!!this.domainList && this.domainList.length > 0) {
this.selectedDomain = this.domainList[0];
} else {
this._dataChanged = false;
this.isLoadingResults = false;
}
}
......@@ -200,6 +237,7 @@ export class EditResourceController extends MatTableDataSource<ResourceRo> {
if (!!this.groupList && this.groupList.length > 0) {
this.selectedGroup = this.groupList[0];
} else {
this._dataChanged = false;
this.isLoadingResults = false;
}
}
......
......@@ -547,7 +547,7 @@
"edit.resource.placeholder.filter": "Resource filter",
"edit.resource.placeholder.selected.domain": "Select domain",
"edit.resource.placeholder.selected.group": "Select group",
"edit.resource.text": "Edit resource administration panel is a tool for resource administrators to administer the resource",
"edit.resource.text": "Edit resource administration panel is a tool for resource administrators to administer the resource.\nOnly domains and groups where the user is a resource administrator are shown.",
"edit.resource.title": "Edit Resource",
"edit.resource.tooltip.selected.domain": "Select domain.",
"edit.resource.tooltip.selected.group": "Select group.",
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment