fixed corner case on project edits

This commit is contained in:
Timo Bejan 2020-11-06 21:56:42 +02:00
parent a24e84b6fe
commit ce5eb27660
6 changed files with 34 additions and 7 deletions

View File

@ -42,6 +42,16 @@
translate="project-listing.add-edit-dialog.actions.save"
type="submit"
></button>
<button
[disabled]="projectForm.invalid"
(click)="saveProjectAndAddMembers()"
*ngIf="!project?.projectId"
color="primary"
mat-flat-button
translate="project-listing.add-edit-dialog.actions.save-and-add-members"
type="button"
></button>
</div>
</form>

View File

@ -30,8 +30,10 @@ export class AddEditProjectDialogComponent implements OnInit {
async saveProject() {
const project: Project = this._formToObject();
project.projectId = this.project?.projectId;
await this._appStateService.addOrUpdateProject(project);
this.dialogRef.close(true);
const savedProject = await this._appStateService.addOrUpdateProject(project);
if (savedProject) {
this.dialogRef.close(true);
}
}
private _formToObject(): Project {
@ -41,4 +43,13 @@ export class AddEditProjectDialogComponent implements OnInit {
dueDate: this.projectForm.get('dueDate').value
};
}
async saveProjectAndAddMembers() {
const project: Project = this._formToObject();
project.projectId = this.project?.projectId;
const savedProject = await this._appStateService.addOrUpdateProject(project);
if (savedProject) {
this.dialogRef.close({ addMembers: true, project: savedProject });
}
}
}

View File

@ -212,7 +212,7 @@ export class DialogService {
});
ref.afterClosed().subscribe((result) => {
if (result && cb) cb();
if (result && cb) cb(result);
});
return ref;

View File

@ -105,8 +105,11 @@ export class ProjectListingScreenComponent implements OnInit {
}
public openAddProjectDialog(): void {
this._dialogService.openAddProjectDialog(() => {
this._dialogService.openAddProjectDialog((addResponse) => {
this._calculateData();
if (addResponse.addMembers) {
this.openAssignProjectOwnerDialog(null, addResponse.project);
}
});
}

View File

@ -406,15 +406,17 @@ export class AppStateService {
const updatedProject = await this._projectControllerService
.createProjectOrUpdateProject(project)
.toPromise();
const foundProject = this._appState.projects.find(
let foundProject = this._appState.projects.find(
(p) => p.project.projectId === updatedProject.projectId
);
if (foundProject) {
Object.assign(foundProject.project, updatedProject);
} else {
this._appState.projects.push(new ProjectWrapper(updatedProject, []));
foundProject = new ProjectWrapper(updatedProject, []);
this._appState.projects.push(foundProject);
}
this._appState.projects = [...this._appState.projects];
return foundProject.project;
} catch (error) {
this._notificationService.showToastNotification(
this._translateService.instant('projects.add-edit-dialog.errors.save'),

View File

@ -130,7 +130,8 @@
"due-date": "Due Date"
},
"actions": {
"save": "Save Project"
"save": "Save Project",
"save-and-add-members": "Save Project & define Team"
}
},
"header": "Projects",