Merge pull request #4333 from MaximilianKrambach/amendmentFix2
Create amendment fix
This commit is contained in:
commit
2e385228b6
@ -100,8 +100,7 @@ export class HttpService {
|
|||||||
*/
|
*/
|
||||||
private handleError(e: any): string {
|
private handleError(e: any): string {
|
||||||
let error = this.translate.instant('Error') + ': ';
|
let error = this.translate.instant('Error') + ': ';
|
||||||
|
// If the error is a string already, return it.
|
||||||
// If the rror is a string already, return it.
|
|
||||||
if (typeof e === 'string') {
|
if (typeof e === 'string') {
|
||||||
return error + e;
|
return error + e;
|
||||||
}
|
}
|
||||||
@ -117,7 +116,7 @@ export class HttpService {
|
|||||||
error += this.translate.instant("The server didn't respond.");
|
error += this.translate.instant("The server didn't respond.");
|
||||||
} else if (typeof e.error === 'object') {
|
} else if (typeof e.error === 'object') {
|
||||||
if (e.error.detail) {
|
if (e.error.detail) {
|
||||||
error += this.processErrorTexts(this.translate.instant(e.error.detail));
|
error += this.translate.instant(this.processErrorTexts(e.error.detail));
|
||||||
} else {
|
} else {
|
||||||
error = Object.keys(e.error)
|
error = Object.keys(e.error)
|
||||||
.map(key => {
|
.map(key => {
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<section
|
<section
|
||||||
*ngFor="let paragraph of paragraphs"
|
*ngFor="let paragraph of paragraphs"
|
||||||
class="paragraph-row"
|
class="paragraph-row"
|
||||||
[class.active]="selectedParagraph === paragraph.paragraphNo"
|
[class.active]="contentForm.value.selectedParagraph === paragraph.paragraphNo"
|
||||||
(click)="selectParagraph(paragraph)"
|
(click)="selectParagraph(paragraph)"
|
||||||
>
|
>
|
||||||
<mat-radio-button
|
<mat-radio-button
|
||||||
|
@ -94,7 +94,7 @@ export class MotionBlockListComponent extends ListViewBaseComponent<ViewMotionBl
|
|||||||
this.createBlockForm = this.formBuilder.group({
|
this.createBlockForm = this.formBuilder.group({
|
||||||
title: ['', Validators.required],
|
title: ['', Validators.required],
|
||||||
agenda_type: ['', Validators.required],
|
agenda_type: ['', Validators.required],
|
||||||
agenda_parent_id: ['']
|
agenda_parent_id: []
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,8 @@
|
|||||||
<span> </span> <span *ngIf="!editMotion">{{ motion.identifier }}</span>
|
<span> </span> <span *ngIf="!editMotion">{{ motion.identifier }}</span>
|
||||||
<span *ngIf="editMotion">{{ contentForm.get('identifier').value }}</span>
|
<span *ngIf="editMotion">{{ contentForm.get('identifier').value }}</span>
|
||||||
</h2>
|
</h2>
|
||||||
<h2 *ngIf="newMotion" translate>New motion</h2>
|
<h2 *ngIf="newMotion && !amendmentEdit" translate>New motion</h2>
|
||||||
|
<h2 *ngIf="amendmentEdit" translate>New amendment</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Back and forth buttons -->
|
<!-- Back and forth buttons -->
|
||||||
|
@ -73,6 +73,11 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
public editMotion = false;
|
public editMotion = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determine if the motion is a new (unsent) amendment to another motion
|
||||||
|
*/
|
||||||
|
public amendmentEdit = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine if the motion is new
|
* Determine if the motion is new
|
||||||
*/
|
*/
|
||||||
@ -512,10 +517,33 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
|
|||||||
this.newMotion = true;
|
this.newMotion = true;
|
||||||
this.editMotion = true;
|
this.editMotion = true;
|
||||||
// prevent 'undefined' to appear in the ui
|
// prevent 'undefined' to appear in the ui
|
||||||
const defaultMotion = {
|
const defaultMotion: Partial<CreateMotion> = {
|
||||||
title: '',
|
title: '',
|
||||||
origin: ''
|
origin: '',
|
||||||
|
identifier: ''
|
||||||
};
|
};
|
||||||
|
if (this.route.snapshot.queryParams.parent) {
|
||||||
|
this.amendmentEdit = true;
|
||||||
|
const parentMotion = this.repo.getViewModel(this.route.snapshot.queryParams.parent);
|
||||||
|
const defaultTitle = `${this.translate.instant('Amendment to')} ${parentMotion.identifierOrTitle}`;
|
||||||
|
const mode = this.configService.instant<string>('motions_amendments_text_mode');
|
||||||
|
if (mode === 'freestyle' || mode === 'fulltext') {
|
||||||
|
defaultMotion.title = defaultTitle;
|
||||||
|
defaultMotion.parent_id = parentMotion.id;
|
||||||
|
defaultMotion.category_id = parentMotion.category_id;
|
||||||
|
defaultMotion.motion_block_id = parentMotion.motion_block_id;
|
||||||
|
this.contentForm.patchValue({
|
||||||
|
title: defaultTitle,
|
||||||
|
category_id: parentMotion.category_id,
|
||||||
|
motion_block_id: parentMotion.motion_block_id,
|
||||||
|
parent_id: parentMotion.id
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (mode === 'fulltext') {
|
||||||
|
defaultMotion.text = parentMotion.text;
|
||||||
|
this.contentForm.patchValue({ text: parentMotion.text });
|
||||||
|
}
|
||||||
|
}
|
||||||
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
this.motion = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
||||||
this.motionCopy = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
this.motionCopy = new ViewCreateMotion(new CreateMotion(defaultMotion));
|
||||||
} else {
|
} else {
|
||||||
@ -595,7 +623,9 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
|
|||||||
workflow_id: [],
|
workflow_id: [],
|
||||||
origin: [''],
|
origin: [''],
|
||||||
statute_amendment: [''], // Internal value for the checkbox, not saved to the model
|
statute_amendment: [''], // Internal value for the checkbox, not saved to the model
|
||||||
statute_paragraph_id: ['']
|
statute_paragraph_id: [''],
|
||||||
|
motion_block_id: [],
|
||||||
|
parent_id: []
|
||||||
});
|
});
|
||||||
this.updateWorkflowIdForCreateForm();
|
this.updateWorkflowIdForCreateForm();
|
||||||
|
|
||||||
@ -684,7 +714,10 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
|
|||||||
*/
|
*/
|
||||||
private updateMotionFromForm(): void {
|
private updateMotionFromForm(): void {
|
||||||
const newMotionValues = { ...this.contentForm.value };
|
const newMotionValues = { ...this.contentForm.value };
|
||||||
this.updateMotion(newMotionValues, this.motionCopy).then(() => (this.editMotion = false), this.raiseError);
|
this.updateMotion(newMotionValues, this.motionCopy).then(() => {
|
||||||
|
this.editMotion = false;
|
||||||
|
this.amendmentEdit = false;
|
||||||
|
}, this.raiseError);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async updateMotion(newMotionValues: Partial<Motion>, motion: ViewMotion): Promise<void> {
|
private async updateMotion(newMotionValues: Partial<Motion>, motion: ViewMotion): Promise<void> {
|
||||||
@ -884,7 +917,15 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit {
|
|||||||
* Goes to the amendment creation wizard. Executed via click.
|
* Goes to the amendment creation wizard. Executed via click.
|
||||||
*/
|
*/
|
||||||
public createAmendment(): void {
|
public createAmendment(): void {
|
||||||
this.router.navigate(['./create-amendment'], { relativeTo: this.route });
|
const mode = this.configService.instant<string>('motions_amendments_text_mode');
|
||||||
|
if (mode === 'paragraph') {
|
||||||
|
this.router.navigate(['./create-amendment'], { relativeTo: this.route });
|
||||||
|
} else {
|
||||||
|
this.router.navigate(['./motions/new'], {
|
||||||
|
relativeTo: this.route.snapshot.params.relativeTo,
|
||||||
|
queryParams: { parent: this.motion.id || null }
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user