fixed corner case on project edits
This commit is contained in:
parent
a24e84b6fe
commit
ce5eb27660
@ -42,6 +42,16 @@
|
|||||||
translate="project-listing.add-edit-dialog.actions.save"
|
translate="project-listing.add-edit-dialog.actions.save"
|
||||||
type="submit"
|
type="submit"
|
||||||
></button>
|
></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>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@ -30,8 +30,10 @@ export class AddEditProjectDialogComponent implements OnInit {
|
|||||||
async saveProject() {
|
async saveProject() {
|
||||||
const project: Project = this._formToObject();
|
const project: Project = this._formToObject();
|
||||||
project.projectId = this.project?.projectId;
|
project.projectId = this.project?.projectId;
|
||||||
await this._appStateService.addOrUpdateProject(project);
|
const savedProject = await this._appStateService.addOrUpdateProject(project);
|
||||||
this.dialogRef.close(true);
|
if (savedProject) {
|
||||||
|
this.dialogRef.close(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _formToObject(): Project {
|
private _formToObject(): Project {
|
||||||
@ -41,4 +43,13 @@ export class AddEditProjectDialogComponent implements OnInit {
|
|||||||
dueDate: this.projectForm.get('dueDate').value
|
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 });
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -212,7 +212,7 @@ export class DialogService {
|
|||||||
});
|
});
|
||||||
|
|
||||||
ref.afterClosed().subscribe((result) => {
|
ref.afterClosed().subscribe((result) => {
|
||||||
if (result && cb) cb();
|
if (result && cb) cb(result);
|
||||||
});
|
});
|
||||||
|
|
||||||
return ref;
|
return ref;
|
||||||
|
|||||||
@ -105,8 +105,11 @@ export class ProjectListingScreenComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public openAddProjectDialog(): void {
|
public openAddProjectDialog(): void {
|
||||||
this._dialogService.openAddProjectDialog(() => {
|
this._dialogService.openAddProjectDialog((addResponse) => {
|
||||||
this._calculateData();
|
this._calculateData();
|
||||||
|
if (addResponse.addMembers) {
|
||||||
|
this.openAssignProjectOwnerDialog(null, addResponse.project);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -406,15 +406,17 @@ export class AppStateService {
|
|||||||
const updatedProject = await this._projectControllerService
|
const updatedProject = await this._projectControllerService
|
||||||
.createProjectOrUpdateProject(project)
|
.createProjectOrUpdateProject(project)
|
||||||
.toPromise();
|
.toPromise();
|
||||||
const foundProject = this._appState.projects.find(
|
let foundProject = this._appState.projects.find(
|
||||||
(p) => p.project.projectId === updatedProject.projectId
|
(p) => p.project.projectId === updatedProject.projectId
|
||||||
);
|
);
|
||||||
if (foundProject) {
|
if (foundProject) {
|
||||||
Object.assign(foundProject.project, updatedProject);
|
Object.assign(foundProject.project, updatedProject);
|
||||||
} else {
|
} else {
|
||||||
this._appState.projects.push(new ProjectWrapper(updatedProject, []));
|
foundProject = new ProjectWrapper(updatedProject, []);
|
||||||
|
this._appState.projects.push(foundProject);
|
||||||
}
|
}
|
||||||
this._appState.projects = [...this._appState.projects];
|
this._appState.projects = [...this._appState.projects];
|
||||||
|
return foundProject.project;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
this._notificationService.showToastNotification(
|
this._notificationService.showToastNotification(
|
||||||
this._translateService.instant('projects.add-edit-dialog.errors.save'),
|
this._translateService.instant('projects.add-edit-dialog.errors.save'),
|
||||||
|
|||||||
@ -130,7 +130,8 @@
|
|||||||
"due-date": "Due Date"
|
"due-date": "Due Date"
|
||||||
},
|
},
|
||||||
"actions": {
|
"actions": {
|
||||||
"save": "Save Project"
|
"save": "Save Project",
|
||||||
|
"save-and-add-members": "Save Project & define Team"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"header": "Projects",
|
"header": "Projects",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user