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 { 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';
|
import { ViewUnifiedChange } from '../../shared/models/motions/view-unified-change';
|
||||||
|
|
||||||
const ELEMENT_NODE = 1;
|
const ELEMENT_NODE = 1;
|
||||||
@ -2149,11 +2149,24 @@ export class DiffService {
|
|||||||
paragraphNo: number,
|
paragraphNo: number,
|
||||||
origText: string,
|
origText: string,
|
||||||
newText: string,
|
newText: string,
|
||||||
lineLength: number
|
lineLength: number,
|
||||||
|
changeRecos?: ViewUnifiedChange[]
|
||||||
): DiffLinesInParagraph {
|
): DiffLinesInParagraph {
|
||||||
const paragraph_line_range = this.lineNumberingService.getLineNumberRange(origText),
|
const paragraph_line_range: LineNumberRange = this.lineNumberingService.getLineNumberRange(origText);
|
||||||
diff = this.diff(origText, newText),
|
let diff = this.diff(origText, newText);
|
||||||
affected_lines = this.detectAffectedLineRange(diff);
|
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) {
|
if (affected_lines === null) {
|
||||||
return null;
|
return null;
|
||||||
|
@ -68,7 +68,6 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -78,7 +77,8 @@
|
|||||||
<span
|
<span
|
||||||
*ngIf="isStatuteAmendment() || isParagraphBasedAmendment() || !!getFormattedText()"
|
*ngIf="isStatuteAmendment() || isParagraphBasedAmendment() || !!getFormattedText()"
|
||||||
class="text-prefix-label"
|
class="text-prefix-label"
|
||||||
>{{ preamble | translate }}</span
|
>
|
||||||
|
{{ preamble | translate }}</span
|
||||||
>
|
>
|
||||||
|
|
||||||
<!-- Regular motions or traditional amendments -->
|
<!-- 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();
|
this.recalcUnifiedChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -410,26 +413,28 @@ export class MotionSlideComponent extends BaseMotionSlideComponent<MotionSlideDa
|
|||||||
* @returns {DiffLinesInParagraph[]}
|
* @returns {DiffLinesInParagraph[]}
|
||||||
*/
|
*/
|
||||||
public getAmendedParagraphs(): DiffLinesInParagraph[] {
|
public getAmendedParagraphs(): DiffLinesInParagraph[] {
|
||||||
let baseHtml = this.data.data.base_motion.text;
|
const motion = this.data.data;
|
||||||
baseHtml = this.lineNumbering.insertLineNumbers(baseHtml, this.lineLength);
|
const baseHtml = this.lineNumbering.insertLineNumbers(motion.base_motion?.text, this.lineLength);
|
||||||
const baseParagraphs = this.lineNumbering.splitToParagraphs(baseHtml);
|
const baseParagraphs = this.lineNumbering.splitToParagraphs(baseHtml);
|
||||||
|
|
||||||
return this.data.data.amendment_paragraphs
|
const amendmentParagraphs = motion.amendment_paragraphs
|
||||||
.map(
|
.map(
|
||||||
(newText: string, paraNo: number): DiffLinesInParagraph => {
|
(amendmentText: string, paraNo: number): DiffLinesInParagraph => {
|
||||||
if (newText === null) {
|
if (amendmentText === null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// Hint: can be either DiffLinesInParagraph or null, if no changes are made
|
|
||||||
return this.diff.getAmendmentParagraphsLines(
|
return this.diff.getAmendmentParagraphsLines(
|
||||||
paraNo,
|
paraNo,
|
||||||
baseParagraphs[paraNo],
|
baseParagraphs[paraNo],
|
||||||
newText,
|
amendmentText,
|
||||||
this.lineLength
|
this.lineLength,
|
||||||
|
this.crMode === ChangeRecoMode.Diff ? this.getAllTextChangingObjects() : undefined
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
.filter((para: DiffLinesInParagraph) => para !== null);
|
.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")
|
motions_preamble = await get_config(all_data_provider, "motions_preamble")
|
||||||
|
|
||||||
# Query all change-recommendation and amendment related things.
|
# Query all change-recommendation and amendment related things.
|
||||||
change_recommendations = [] # type: ignore
|
|
||||||
amendments = [] # type: ignore
|
amendments = [] # type: ignore
|
||||||
base_motion = None
|
base_motion = None
|
||||||
base_statute = None
|
base_statute = None
|
||||||
@ -201,6 +200,9 @@ async def motion_slide(
|
|||||||
elif motion["parent_id"] is not None and motion["amendment_paragraphs"]:
|
elif motion["parent_id"] is not None and motion["amendment_paragraphs"]:
|
||||||
base_motion = await get_amendment_base_motion(motion, all_data_provider)
|
base_motion = await get_amendment_base_motion(motion, all_data_provider)
|
||||||
else:
|
else:
|
||||||
|
amendments = await get_amendments_for_motion(motion, all_data_provider)
|
||||||
|
|
||||||
|
change_recommendations = [] # type: ignore
|
||||||
for change_recommendation_id in motion["change_recommendations_id"]:
|
for change_recommendation_id in motion["change_recommendations_id"]:
|
||||||
cr = await get_model(
|
cr = await get_model(
|
||||||
all_data_provider,
|
all_data_provider,
|
||||||
@ -209,7 +211,6 @@ async def motion_slide(
|
|||||||
)
|
)
|
||||||
if cr is not None and not cr["internal"]:
|
if cr is not None and not cr["internal"]:
|
||||||
change_recommendations.append(cr)
|
change_recommendations.append(cr)
|
||||||
amendments = await get_amendments_for_motion(motion, all_data_provider)
|
|
||||||
|
|
||||||
# The base return value. More fields will get added below.
|
# The base return value. More fields will get added below.
|
||||||
return_value = {
|
return_value = {
|
||||||
|
@ -108,6 +108,7 @@ def all_data_provider():
|
|||||||
"created": "2019-01-19T18:37:34.741336+01:00",
|
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||||
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||||
"change_recommendations": [],
|
"change_recommendations": [],
|
||||||
|
"change_recommendations_id": [],
|
||||||
"amendments_id": [],
|
"amendments_id": [],
|
||||||
},
|
},
|
||||||
3: {
|
3: {
|
||||||
@ -142,6 +143,7 @@ def all_data_provider():
|
|||||||
"created": "2019-01-19T18:37:34.741336+01:00",
|
"created": "2019-01-19T18:37:34.741336+01:00",
|
||||||
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
"last_modified": "2019-01-19T18:37:34.741368+01:00",
|
||||||
"change_recommendations": [],
|
"change_recommendations": [],
|
||||||
|
"change_recommendations_id": [],
|
||||||
"amendments_id": [],
|
"amendments_id": [],
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user