Merge pull request #4570 from tsiegleauq/amendments-in-main-motion

Motion Amendments into PDF
This commit is contained in:
Emanuel Schütze 2019-04-04 22:40:44 +02:00 committed by GitHub
commit 74713d78b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 1 deletions

View File

@ -429,6 +429,15 @@ export class MotionRepositoryService extends BaseAgendaContentObjectRepository<V
);
}
/**
* Returns the amendments to a given motion
*
* @param motionId the motion ID to get the amendments to
*/
public getAmendmentsInstantly(motionId: number): ViewMotion[] {
return this.getViewModelList().filter(motion => motion.parent_id === motionId);
}
/**
* Format the motion text using the line numbering and change
* reco algorithm.

View File

@ -515,9 +515,11 @@ export class MotionDetailComponent extends BaseViewComponent implements OnInit,
* Merges amendments and change recommendations and sorts them by the line numbers.
* Called each time one of these arrays changes.
*
* TODO: 1. Having logic in a service is bad practice
* TODO: 1. Having logic outside of a service is bad practice
* 2. Manipulating class parameters without an subscription should
* be avoided. It's safer and simpler to return values than to manipulate the scope
* 3. This have been used three times so far. Here, in the projector and in the PDF. Find an own
* service to put the logic into.
*/
private recalcUnifiedChanges(): void {
if (!this.lineLength) {

View File

@ -504,6 +504,18 @@ export class MotionPdfService {
[],
this.changeRecoRepo.getChangeRecoOfMotion(motion.id)
);
// TODO: Cleanup, everything change reco and amendment based needs a unified structure.
const amendments = this.motionRepo.getAmendmentsInstantly(motion.id);
if (amendments) {
for (const amendment of amendments) {
const changedParagraphs = this.motionRepo.getAmendmentAmendedParagraphs(amendment, lineLength);
for (const change of changedParagraphs) {
changes.push(change as ViewUnifiedChange);
}
}
}
// changes need to be sorted, by "line from".
// otherwise, formatMotion will make unexpected results by messing up the
// order of changes applied to the motion