Code development platform for open source projects from the European Union institutions

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

Pull request #174: [EDELIVERY-13995] [UI] resource edit: groups and domain refresh

Merge in EDELIVERY/smp from bugfix/EDELIVERY-13995-edit-resource-adding-a-new-group-is-not-appearing-the-the-edit-resource to development

* commit 'c44a5124':
  [EDELIVERY-13995] [UI] resource edit: groups and domain refresh
  [EDELIVERY-13995] [UI] resource edit: groups and domain refresh
parents 59252e35 c44a5124
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.<br /><b>Note:</b>Only 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