Always include CRs in motion slide
Show Amendment CR in Projector Shows the amendment CR in the projector if the projected slide is in diff version. Only shows direct Change recos to amended paragraphs
This commit is contained in:
parent
fb27f8ce8a
commit
d893f3dbe5
@ -1,6 +1,6 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
import { LineNumberedString, LinenumberingService } from './linenumbering.service';
|
||||
import { LineNumberedString, LinenumberingService, LineNumberRange } from './linenumbering.service';
|
||||
import { ViewUnifiedChange } from '../../shared/models/motions/view-unified-change';
|
||||
|
||||
const ELEMENT_NODE = 1;
|
||||
@ -2149,11 +2149,24 @@ export class DiffService {
|
||||
paragraphNo: number,
|
||||
origText: string,
|
||||
newText: string,
|
||||
lineLength: number
|
||||
lineLength: number,
|
||||
changeRecos?: ViewUnifiedChange[]
|
||||
): DiffLinesInParagraph {
|
||||
const paragraph_line_range = this.lineNumberingService.getLineNumberRange(origText),
|
||||
diff = this.diff(origText, newText),
|
||||
affected_lines = this.detectAffectedLineRange(diff);
|
||||
const paragraph_line_range: LineNumberRange = this.lineNumberingService.getLineNumberRange(origText);
|
||||
let diff = this.diff(origText, newText);
|
||||
const affected_lines = this.detectAffectedLineRange(diff);
|
||||
|
||||
/**
|
||||
* If the affect line has change recos, overwirte the diff with the change reco
|
||||
*/
|
||||
if (changeRecos && changeRecos.length) {
|
||||
const recoToThisLine = changeRecos.find(reco => {
|
||||
return reco.getLineFrom() === affected_lines.from;
|
||||
});
|
||||
if (recoToThisLine) {
|
||||
diff = this.diff(origText, recoToThisLine.getChangeNewText());
|
||||
}
|
||||
}
|
||||
|
||||
if (affected_lines === null) {
|
||||
return null;
|
||||
|
@ -68,7 +68,6 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -78,7 +77,8 @@
|
||||
<span
|
||||
*ngIf="isStatuteAmendment() || isParagraphBasedAmendment() || !!getFormattedText()"
|
||||
class="text-prefix-label"
|
||||
>{{ preamble | translate }}</span
|
||||
>
|
||||
{{ preamble | translate }}</span
|
||||
>
|
||||
|
||||
<!-- Regular motions or traditional amendments -->
|
||||
|
@ -78,6 +78,9 @@ export class MotionSlideComponent extends BaseMotionSlideComponent<MotionSlideDa
|
||||
);
|
||||
}
|
||||
|
||||
console.log('cr mode? ', this.crMode);
|
||||
console.log('the data: ', this._data);
|
||||
|
||||
this.recalcUnifiedChanges();
|
||||
}
|
||||
|
||||
@ -410,26 +413,28 @@ export class MotionSlideComponent extends BaseMotionSlideComponent<MotionSlideDa
|
||||
* @returns {DiffLinesInParagraph[]}
|
||||
*/
|
||||
public getAmendedParagraphs(): DiffLinesInParagraph[] {
|
||||
let baseHtml = this.data.data.base_motion.text;
|
||||
baseHtml = this.lineNumbering.insertLineNumbers(baseHtml, this.lineLength);
|
||||
const motion = this.data.data;
|
||||
const baseHtml = this.lineNumbering.insertLineNumbers(motion.base_motion?.text, this.lineLength);
|
||||
const baseParagraphs = this.lineNumbering.splitToParagraphs(baseHtml);
|
||||
|
||||
return this.data.data.amendment_paragraphs
|
||||
const amendmentParagraphs = motion.amendment_paragraphs
|
||||
.map(
|
||||
(newText: string, paraNo: number): DiffLinesInParagraph => {
|
||||
if (newText === null) {
|
||||
(amendmentText: string, paraNo: number): DiffLinesInParagraph => {
|
||||
if (amendmentText === null) {
|
||||
return null;
|
||||
}
|
||||
// Hint: can be either DiffLinesInParagraph or null, if no changes are made
|
||||
return this.diff.getAmendmentParagraphsLines(
|
||||
paraNo,
|
||||
baseParagraphs[paraNo],
|
||||
newText,
|
||||
this.lineLength
|
||||
amendmentText,
|
||||
this.lineLength,
|
||||
this.crMode === ChangeRecoMode.Diff ? this.getAllTextChangingObjects() : undefined
|
||||
);
|
||||
}
|
||||
)
|
||||
.filter((para: DiffLinesInParagraph) => para !== null);
|
||||
|
||||
return amendmentParagraphs;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -192,7 +192,6 @@ async def motion_slide(
|
||||
motions_preamble = await get_config(all_data_provider, "motions_preamble")
|
||||
|
||||
# Query all change-recommendation and amendment related things.
|
||||
change_recommendations = [] # type: ignore
|
||||
amendments = [] # type: ignore
|
||||
base_motion = None
|
||||
base_statute = None
|
||||
@ -201,16 +200,18 @@ async def motion_slide(
|
||||
elif motion["parent_id"] is not None and motion["amendment_paragraphs"]:
|
||||
base_motion = await get_amendment_base_motion(motion, all_data_provider)
|
||||
else:
|
||||
for change_recommendation_id in motion["change_recommendations_id"]:
|
||||
cr = await get_model(
|
||||
all_data_provider,
|
||||
"motions/motion-change-recommendation",
|
||||
change_recommendation_id,
|
||||
)
|
||||
if cr is not None and not cr["internal"]:
|
||||
change_recommendations.append(cr)
|
||||
amendments = await get_amendments_for_motion(motion, all_data_provider)
|
||||
|
||||
change_recommendations = [] # type: ignore
|
||||
for change_recommendation_id in motion["change_recommendations_id"]:
|
||||
cr = await get_model(
|
||||
all_data_provider,
|
||||
"motions/motion-change-recommendation",
|
||||
change_recommendation_id,
|
||||
)
|
||||
if cr is not None and not cr["internal"]:
|
||||
change_recommendations.append(cr)
|
||||
|
||||
# The base return value. More fields will get added below.
|
||||
return_value = {
|
||||
"identifier": motion["identifier"],
|
||||
|
@ -108,6 +108,7 @@ def all_data_provider():
|
||||
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||
"change_recommendations": [],
|
||||
"change_recommendations_id": [],
|
||||
"amendments_id": [],
|
||||
},
|
||||
3: {
|
||||
@ -142,6 +143,7 @@ def all_data_provider():
|
||||
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||
"change_recommendations": [],
|
||||
"change_recommendations_id": [],
|
||||
"amendments_id": [],
|
||||
},
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user