From 6a443ef3e8b95acb82a4b2ba0807562b480f2f67 Mon Sep 17 00:00:00 2001 From: musicEnfanthen Date: Thu, 16 May 2024 09:34:13 +0200 Subject: [PATCH 01/50] build(app): add nx/cache to gitignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index db9aa8cb5f..4db35f9a08 100644 --- a/.gitignore +++ b/.gitignore @@ -46,6 +46,7 @@ speed-measure-plugin*.json # Miscellaneous /.angular/cache /.cache/ +/.nx/cache .sass-cache /connect.lock /coverage From a93aac9b1fa73377264c32f18378f86e09658783 Mon Sep 17 00:00:00 2001 From: musicEnfanthen Date: Thu, 16 May 2024 12:48:19 +0200 Subject: [PATCH 02/50] fix(edition): use correct string for source evaluation --- .../textcritics-list.component.html | 2 +- .../textcritics-list.component.spec.ts | 80 +++++++++++++++++-- .../textcritics-list.component.ts | 14 +++- .../edition-svg-sheet-footer.component.html | 2 +- ...edition-svg-sheet-footer.component.spec.ts | 74 ++++++++++++++++- .../edition-svg-sheet-footer.component.ts | 12 +++ .../series/1/section/5/op12/textcritics.json | 2 +- .../series/1/section/5/op25/textcritics.json | 2 +- .../series/2/section/2a/m30/textcritics.json | 2 +- .../series/2/section/2a/m31/textcritics.json | 2 +- .../series/2/section/2a/m34/textcritics.json | 2 +- .../2/section/2a/m35_42/textcritics.json | 2 +- .../series/2/section/2a/m37/textcritics.json | 2 +- 13 files changed, 180 insertions(+), 18 deletions(-) diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html index aca5e80120..efd73d437a 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html @@ -18,7 +18,7 @@ @if (utils.isNotEmptyArray(textcritic.description)) {
-

Skizzenkommentar:

+

{{ getEvaluationString(textcritic) }}

{ getAndExpectDebugElementByCss(bodyDes[0], 'div', 0, 0); }); - it('... should contain item body with div, paragraph and EditionTkaDescriptionComponent if description array is not empty', () => { + it('... should contain item body with div, and small caps paragraph and EditionTkaDescriptionComponent if description array is not empty', () => { const textcritics = expectedTextcriticsData.textcritics[1]; const bodyDes = getAndExpectDebugElementByCss( compDe, @@ -447,15 +447,54 @@ describe('TextcriticsListComponent (DONE)', () => { ); const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:first-child', 1, 1); - const pDes = getAndExpectDebugElementByCss(divDes[0], 'p', 1, 1); - const pEl0 = pDes[0].nativeElement; - - expectToBe(pEl0.textContent, 'Skizzenkommentar:'); + getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); // EditionTkaDescriptionStubComponent getAndExpectDebugElementByDirective(divDes[0], EditionTkaDescriptionStubComponent, 1, 1); }); + it('... should display evaluationString `Quellenbewertung:` in paragraph if no sketch id is given', () => { + component.textcriticsData.textcritics[1].id = 'test-2'; + const textcritics = component.textcriticsData.textcritics[1]; + + detectChangesOnPush(fixture); + + const bodyDes = getAndExpectDebugElementByCss( + compDe, + `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, + 1, + 1, + 'open' + ); + + const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:first-child', 1, 1); + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); + const pEl = pDes[0].nativeElement; + + expectToBe(pEl.textContent, 'Quellenbewertung:'); + }); + + it('... should display evaluationString `Skizzenkommentar:` in paragraph if sketch id is given', () => { + component.textcriticsData.textcritics[1].id = 'test-2_Sk2'; + const textcritics = component.textcriticsData.textcritics[1]; + + detectChangesOnPush(fixture); + + const bodyDes = getAndExpectDebugElementByCss( + compDe, + `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, + 1, + 1, + 'open' + ); + + const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:first-child', 1, 1); + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); + const pEl = pDes[0].nativeElement; + + expectToBe(pEl.textContent, 'Skizzenkommentar:'); + }); + it('... should contain item body with div, paragraph and EditionTkaTableComponent if comments array is not empty', () => { const textcritics = expectedTextcriticsData.textcritics[1]; const bodyDes = getAndExpectDebugElementByCss( @@ -513,6 +552,37 @@ describe('TextcriticsListComponent (DONE)', () => { }); }); + describe('#getEvaluationString()', () => { + it('... should have a method `getEvaluationString`', () => { + expect(component.getEvaluationString).toBeDefined(); + }); + + it('... should return `Quellenbewertung:` when given textcritics is undefined', () => { + const result = component.getEvaluationString(undefined); + const expected = 'Quellenbewertung:'; + + expectToBe(result, expected); + }); + + it('... should return `Quellenbewertung:` when selectedTextcritics id does not include `_Sk`', () => { + expectedTextcriticsData.textcritics[0].id = 'test-1'; + + const result = component.getEvaluationString(expectedTextcriticsData.textcritics[0]); + const expected = 'Quellenbewertung:'; + + expectToBe(result, expected); + }); + + it('... should return `Skizzenkommentar:` when selectedTextcritics id includes `_Sk`', () => { + expectedTextcriticsData.textcritics[0].id = 'test-1_Sk1'; + + const result = component.getEvaluationString(expectedTextcriticsData.textcritics[0]); + const expected = 'Skizzenkommentar:'; + + expectToBe(result, expected); + }); + }); + describe('#navigateToReportFragment()', () => { it('... should have a method `navigateToReportFragment`', () => { expect(component.navigateToReportFragment).toBeDefined(); diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts index 64d64ea3bb..e141e2fd82 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts @@ -1,7 +1,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core'; import { UtilityService } from '@awg-core/services'; -import { TextcriticsList } from '@awg-views/edition-view/models'; +import { Textcritics, TextcriticsList } from '@awg-views/edition-view/models'; /** * The TextcriticsList component. @@ -67,6 +67,18 @@ export class TextcriticsListComponent { this.ref = this; } + /** + * Public method: evaluationString. + * + * It returns the evaluation string for the textcritics + * depending on wether the selected textcritics id refers to a sketch or not. + * + * @returns {string} The evaluation string. + */ + getEvaluationString(selectedTextcritics: Textcritics): string { + return `${selectedTextcritics?.id.includes('_Sk') ? 'Skizzenkommentar' : 'Quellenbewertung'}:`; + } + /** * Public method: navigateToReportFragment. * diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html index 59c7a8872b..48b95afd5d 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html @@ -7,7 +7,7 @@   } - Skizzenkommentar: + {{ getEvaluationString(selectedTextcritics) }} @if (selectedTextcritics.description && !utils.isNotEmptyArray(selectedTextcritics.description)) {  --- } diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.spec.ts b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.spec.ts index 60c383a9d7..1482265652 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.spec.ts +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.spec.ts @@ -100,7 +100,7 @@ describe('EditionSvgSheetFooterComponent (DONE)', () => { expectedModalSnippet = JSON.parse(JSON.stringify(mockEditionData.mockModalSnippet)); expectedSvgSheet = JSON.parse(JSON.stringify(mockEditionData.mockSvgSheet_Sk1)); expectedNextSvgSheet = JSON.parse(JSON.stringify(mockEditionData.mockSvgSheet_Sk2)); - expectedSelectedTextcritics = mockEditionData.mockTextcriticsData.textcritics.at(1); + expectedSelectedTextcritics = JSON.parse(JSON.stringify(mockEditionData.mockTextcriticsData.textcritics.at(1))); expectedSelectedTextcriticalComments = expectedSelectedTextcritics.comments; expectedShowTka = true; @@ -236,7 +236,42 @@ describe('EditionSvgSheetFooterComponent (DONE)', () => { expect(iconDes[0].children[0].classes['fa-chevron-up']).toBeTrue(); }); - it('... should contain a span.smallcaps in p with heading for Skizzenkommentar', () => { + it('... should contain a span.smallcaps in p with heading for evaluationString', () => { + const divDes = getAndExpectDebugElementByCss( + compDe, + 'div.awg-edition-svg-sheet-footer-evaluation', + 1, + 1 + ); + + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p', 1, 1); + getAndExpectDebugElementByCss(pDes[0], 'span.smallcaps', 1, 1); + }); + + it('... should display evaluationString `Quellenbewertung:` if no sketch id is given', () => { + component.selectedTextcritics.id = 'test-1'; + + detectChangesOnPush(fixture); + + const divDes = getAndExpectDebugElementByCss( + compDe, + 'div.awg-edition-svg-sheet-footer-evaluation', + 1, + 1 + ); + + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p', 1, 1); + const spanDes = getAndExpectDebugElementByCss(pDes[0], 'span.smallcaps', 1, 1); + const spanEl = spanDes[0].nativeElement; + + expectToBe(spanEl.textContent, 'Quellenbewertung:'); + }); + + it('... should display evaluationString `Skizzenkommentar:` if sketch id is given', () => { + component.selectedTextcritics.id = 'test-1_Sk1'; + + detectChangesOnPush(fixture); + const divDes = getAndExpectDebugElementByCss( compDe, 'div.awg-edition-svg-sheet-footer-evaluation', @@ -251,7 +286,7 @@ describe('EditionSvgSheetFooterComponent (DONE)', () => { expectToBe(spanEl.textContent, 'Skizzenkommentar:'); }); - it('... should contain a second span in p with "---" if selectedTextcritics.description is empty', () => { + it('... should contain a second span in p with `---` if selectedTextcritics.description is empty', () => { component.selectedTextcritics = mockEditionData.mockTextcriticsData.textcritics[0]; detectChangesOnPush(fixture); @@ -352,6 +387,39 @@ describe('EditionSvgSheetFooterComponent (DONE)', () => { }); }); + describe('#getEvaluationString()', () => { + it('... should have a method `getEvaluationString`', () => { + expect(component.getEvaluationString).toBeDefined(); + }); + + it('... should return `Quellenbewertung:` when selectedTextcritics is undefined', () => { + const result = component.getEvaluationString(undefined); + const expected = 'Quellenbewertung:'; + + expectToBe(result, expected); + }); + + it('... should return `Quellenbewertung:` when selectedTextcritics id does not include `_Sk`', () => { + const textcritics = expectedSelectedTextcritics; + textcritics.id = 'test-1'; + + const result = component.getEvaluationString(expectedSelectedTextcritics); + const expected = 'Quellenbewertung:'; + + expectToBe(result, expected); + }); + + it('... should return `Skizzenkommentar:` when selectedTextcritics id includes `_Sk`', () => { + const textcritics = expectedSelectedTextcritics; + textcritics.id = 'test-1_Sk1'; + + const result = component.getEvaluationString(expectedSelectedTextcritics); + const expected = 'Skizzenkommentar:'; + + expectToBe(result, expected); + }); + }); + describe('#navigateToReportFragment()', () => { it('... should have a method `navigateToReportFragment`', () => { expect(component.navigateToReportFragment).toBeDefined(); diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.ts b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.ts index 9b291dcb91..8507f8bfbe 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.ts @@ -106,6 +106,18 @@ export class EditionSvgSheetFooterComponent { this.ref = this; } + /** + * Public method: evaluationString. + * + * It returns the evaluation string for the textcritics + * depending on wether the selected textcritics id refers to a sketch or not. + * + * @returns {string} The evaluation string. + */ + getEvaluationString(selectedTextcritics: Textcritics): string { + return `${selectedTextcritics?.id.includes('_Sk') ? 'Skizzenkommentar' : 'Quellenbewertung'}:`; + } + /** * Public method: navigateToReportFragment. * diff --git a/src/assets/data/edition/series/1/section/5/op12/textcritics.json b/src/assets/data/edition/series/1/section/5/op12/textcritics.json index d30a127551..440055ef34 100644 --- a/src/assets/data/edition/series/1/section/5/op12/textcritics.json +++ b/src/assets/data/edition/series/1/section/5/op12/textcritics.json @@ -4,7 +4,7 @@ "id": "M_212_TF1", "label": "M 212 Textfassung 1", "description": [ - "##Quellenbewertung:## Für die Edition von „Der Tag ist vergangen“ M 212 Textfassung 1 ist B einzige relevante Quelle.
Die Korrekturen in B betreffen Textfassung 2.
Hauptquelle für die Textedition von „Der Tag ist vergangen“ M 212 Textfassung 1 ist B ante correcturam." + "Für die Edition von „Der Tag ist vergangen“ M 212 Textfassung 1 ist B einzige relevante Quelle.
Die Korrekturen in B betreffen Textfassung 2.
Hauptquelle für die Textedition von „Der Tag ist vergangen“ M 212 Textfassung 1 ist B ante correcturam." ], "comments": [ { diff --git a/src/assets/data/edition/series/1/section/5/op25/textcritics.json b/src/assets/data/edition/series/1/section/5/op25/textcritics.json index b88c1427b5..0ababf4aa2 100644 --- a/src/assets/data/edition/series/1/section/5/op25/textcritics.json +++ b/src/assets/data/edition/series/1/section/5/op25/textcritics.json @@ -4,7 +4,7 @@ "id": "M_317_TF1", "label": "M 317 Textfassung 1", "description": [ - "##Quellenbewertung:## Für die Edition von „Wie bin ich froh!“ M 317 Textfassung 1 sind B und E relevante Quellen.
Korrekturschicht 1 in E etabliert Textfassung 1, wobei dese Überarbeitung vor oder gleichzeitig mit der Niederschrift von B stattgefunden haben dürfte. Korrekturschicht 2 in E betrifft Textfassung 2. Der Zustand von E vor Korrekturschicht 2 lässt sich nicht immer eindeutig entziffern.
Hauptquelle der Textedition von „Wie bin ich froh!“ M 317 Textfassung 1 ist B." + "Für die Edition von „Wie bin ich froh!“ M 317 Textfassung 1 sind B und E relevante Quellen.
Korrekturschicht 1 in E etabliert Textfassung 1, wobei dese Überarbeitung vor oder gleichzeitig mit der Niederschrift von B stattgefunden haben dürfte. Korrekturschicht 2 in E betrifft Textfassung 2. Der Zustand von E vor Korrekturschicht 2 lässt sich nicht immer eindeutig entziffern.
Hauptquelle der Textedition von „Wie bin ich froh!“ M 317 Textfassung 1 ist B." ], "comments": [ { diff --git a/src/assets/data/edition/series/2/section/2a/m30/textcritics.json b/src/assets/data/edition/series/2/section/2a/m30/textcritics.json index edc2ac60e9..e1c72a9041 100644 --- a/src/assets/data/edition/series/2/section/2a/m30/textcritics.json +++ b/src/assets/data/edition/series/2/section/2a/m30/textcritics.json @@ -4,7 +4,7 @@ "id": "M_30_TF1", "label": "M 30 einzige Textfassung", "description": [ - "##Quellenbewertung:## Für die Textedition der Studienkomposition für Klavier M 30 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 30 ist B nach Korrekturen 1." + "Für die Textedition der Studienkomposition für Klavier M 30 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 30 ist B nach Korrekturen 1." ], "comments": [ { diff --git a/src/assets/data/edition/series/2/section/2a/m31/textcritics.json b/src/assets/data/edition/series/2/section/2a/m31/textcritics.json index 284f4c75d2..74d510d234 100644 --- a/src/assets/data/edition/series/2/section/2a/m31/textcritics.json +++ b/src/assets/data/edition/series/2/section/2a/m31/textcritics.json @@ -4,7 +4,7 @@ "id": "M_31_TF1", "label": "M 31 einzige Textfassung", "description": [ - "##Quellenbewertung:## Für die Textedition der Studienkomposition für Klavier M 31 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 31 ist B nach Korrekturen 1." + "Für die Textedition der Studienkomposition für Klavier M 31 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 31 ist B nach Korrekturen 1." ], "comments": [ { diff --git a/src/assets/data/edition/series/2/section/2a/m34/textcritics.json b/src/assets/data/edition/series/2/section/2a/m34/textcritics.json index d2596521cd..f905aa4ccd 100644 --- a/src/assets/data/edition/series/2/section/2a/m34/textcritics.json +++ b/src/assets/data/edition/series/2/section/2a/m34/textcritics.json @@ -4,7 +4,7 @@ "id": "M_34_TF1", "label": "M 34 einzige Textfassung", "description": [ - "##Quellenbewertung:## Für die Textedition der Studienkomposition für Klavier M 34 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 34 ist B nach Korrekturen 1." + "Für die Textedition der Studienkomposition für Klavier M 34 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 34 ist B nach Korrekturen 1." ], "comments": [ { diff --git a/src/assets/data/edition/series/2/section/2a/m35_42/textcritics.json b/src/assets/data/edition/series/2/section/2a/m35_42/textcritics.json index 8243b3dbdc..ed2dc27341 100644 --- a/src/assets/data/edition/series/2/section/2a/m35_42/textcritics.json +++ b/src/assets/data/edition/series/2/section/2a/m35_42/textcritics.json @@ -4,7 +4,7 @@ "id": "M_35_42_TF1", "label": "M 35/42 einzige Textfassung", "description": [ - "##Quellenbewertung:## Für die Textedition der Studienkomposition für Klavier M 35/42 sind C und D relevante Quellen. A und B enthalten Skizzen.
C weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. D weist eine Korrekturschicht mit Tinte auf. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern. Die Tintenniederschrift in D stellt die Fortsetzung (ab T. 10) der früher entstandenen Tintenniederschrift in C dar und komplettiert mit dem kontrastierenden B-Teil sowie dem wiederkehrenden A-Teil das in C vorgestellte Thema zur dreiteiligen ABAʼ-Form.
Hauptquellen für die Textedition der Studienkomposition für Klavier M 35/42 sind C und D nach Korrekturen 1." + "Für die Textedition der Studienkomposition für Klavier M 35/42 sind C und D relevante Quellen. A und B enthalten Skizzen.
C weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. D weist eine Korrekturschicht mit Tinte auf. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern. Die Tintenniederschrift in D stellt die Fortsetzung (ab T. 10) der früher entstandenen Tintenniederschrift in C dar und komplettiert mit dem kontrastierenden B-Teil sowie dem wiederkehrenden A-Teil das in C vorgestellte Thema zur dreiteiligen ABAʼ-Form.
Hauptquellen für die Textedition der Studienkomposition für Klavier M 35/42 sind C und D nach Korrekturen 1." ], "comments": [ { diff --git a/src/assets/data/edition/series/2/section/2a/m37/textcritics.json b/src/assets/data/edition/series/2/section/2a/m37/textcritics.json index 12806a6a05..9a70cfee32 100644 --- a/src/assets/data/edition/series/2/section/2a/m37/textcritics.json +++ b/src/assets/data/edition/series/2/section/2a/m37/textcritics.json @@ -4,7 +4,7 @@ "id": "M_37_TF1", "label": "M 37 einzige Textfassung", "description": [ - "##Quellenbewertung:## Für die Textedition der Studienkomposition für Klavier M 37 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 37 ist B nach Korrekturen 1." + "Für die Textedition der Studienkomposition für Klavier M 37 ist B relevante Quelle. A enthält Skizzen.
B weist zwei unterscheidbare Korrekturschichten auf: Korrekturen 1 mit Tinte sowie die später entstandenen Korrekturen 2 mit Bleistift. Der Zustand vor Korrekturen 1 ist nicht immer zu entziffern.
Hauptquelle für die Textedition der Studienkomposition für Klavier M 37 ist B nach Korrekturen 1." ], "comments": [ { From 71182dd5486f8ea1dae6ae9a4bd6a86cb289b0a3 Mon Sep 17 00:00:00 2001 From: musicEnfanthen Date: Thu, 16 May 2024 13:28:28 +0200 Subject: [PATCH 03/50] fix(edition): use correct string for textcritical comments --- .../textcritics-list.component.html | 2 +- .../textcritics-list.component.spec.ts | 86 +++++++++++++++++-- .../textcritics-list.component.ts | 12 +++ .../edition-svg-sheet-footer.component.html | 2 +- ...edition-svg-sheet-footer.component.spec.ts | 71 ++++++++++++++- .../edition-svg-sheet-footer.component.ts | 12 +++ 6 files changed, 170 insertions(+), 15 deletions(-) diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html index efd73d437a..b4b398de3b 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.html @@ -28,7 +28,7 @@ } @if (utils.isNotEmptyArray(textcritic.comments)) {
-

Textkritischer Kommentar:

+

{{ getCommentString(textcritic) }}

= new EventEmitter(); } -describe('TextcriticsListComponent (DONE)', () => { +fdescribe('TextcriticsListComponent (DONE)', () => { let component: TextcriticsListComponent; let fixture: ComponentFixture; let compDe: DebugElement; @@ -436,8 +436,9 @@ describe('TextcriticsListComponent (DONE)', () => { getAndExpectDebugElementByCss(bodyDes[0], 'div', 0, 0); }); - it('... should contain item body with div, and small caps paragraph and EditionTkaDescriptionComponent if description array is not empty', () => { + it('... should contain item body with div, small caps paragraph and EditionTkaDescriptionComponent if description array is not empty', () => { const textcritics = expectedTextcriticsData.textcritics[1]; + const bodyDes = getAndExpectDebugElementByCss( compDe, `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, @@ -445,7 +446,6 @@ describe('TextcriticsListComponent (DONE)', () => { 1, 'open' ); - const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:first-child', 1, 1); getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); @@ -495,8 +495,9 @@ describe('TextcriticsListComponent (DONE)', () => { expectToBe(pEl.textContent, 'Skizzenkommentar:'); }); - it('... should contain item body with div, paragraph and EditionTkaTableComponent if comments array is not empty', () => { + it('... should contain item body with div, small caps paragraph and EditionTkaTableComponent if comments array is not empty', () => { const textcritics = expectedTextcriticsData.textcritics[1]; + const bodyDes = getAndExpectDebugElementByCss( compDe, `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, @@ -504,17 +505,53 @@ describe('TextcriticsListComponent (DONE)', () => { 1, 'open' ); - const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:not(:first-child)', 1, 1); - const pDes = getAndExpectDebugElementByCss(divDes[0], 'p', 1, 1); - const pEl0 = pDes[0].nativeElement; - - expectToBe(pEl0.textContent, 'Textkritischer Kommentar:'); + getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); // EditionTkaTableStubComponent getAndExpectDebugElementByDirective(bodyDes[0], EditionTkaTableStubComponent, 1, 1); }); + it('... should display commentString `Textkritische Anmerkungen:` in paragraph if no sketch id is given', () => { + component.textcriticsData.textcritics[1].id = 'test-2'; + const textcritics = component.textcriticsData.textcritics[1]; + + detectChangesOnPush(fixture); + + const bodyDes = getAndExpectDebugElementByCss( + compDe, + `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, + 1, + 1, + 'open' + ); + const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:not(:first-child)', 1, 1); + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); + const pEl = pDes[0].nativeElement; + + expectToBe(pEl.textContent, 'Textkritische Anmerkungen:'); + }); + + it('... should display commentString `Textkritischer Kommentar:` in paragraph if sketch id is given', () => { + component.textcriticsData.textcritics[1].id = 'test-2_Sk2'; + const textcritics = component.textcriticsData.textcritics[1]; + + detectChangesOnPush(fixture); + + const bodyDes = getAndExpectDebugElementByCss( + compDe, + `div#${textcritics.id} > div.accordion-collapse > div.accordion-body`, + 1, + 1, + 'open' + ); + const divDes = getAndExpectDebugElementByCss(bodyDes[0], 'div:not(:first-child)', 1, 1); + const pDes = getAndExpectDebugElementByCss(divDes[0], 'p.smallcaps', 1, 1); + const pEl = pDes[0].nativeElement; + + expectToBe(pEl.textContent, 'Textkritischer Kommentar:'); + }); + it('... should pass down `description` data to EditionTkaDescriptionComponent (stubbed)', () => { const editionTkaDescriptionDes = getAndExpectDebugElementByDirective( compDe, @@ -552,6 +589,37 @@ describe('TextcriticsListComponent (DONE)', () => { }); }); + describe('#getCommentString()', () => { + it('... should have a method `getCommentString`', () => { + expect(component.getCommentString).toBeDefined(); + }); + + it('... should return `Textkritische Anmerkungen:` when given textcritics is undefined', () => { + const result = component.getCommentString(undefined); + const expected = 'Textkritische Anmerkungen:'; + + expectToBe(result, expected); + }); + + it('... should return `Textkritische Anmerkungen:` when selectedTextcritics id does not include `_Sk`', () => { + expectedTextcriticsData.textcritics[0].id = 'test-1'; + + const result = component.getCommentString(expectedTextcriticsData.textcritics[0]); + const expected = 'Textkritische Anmerkungen:'; + + expectToBe(result, expected); + }); + + it('... should return `Textkritischer Kommentar:` when selectedTextcritics id includes `_Sk`', () => { + expectedTextcriticsData.textcritics[0].id = 'test-1_Sk1'; + + const result = component.getCommentString(expectedTextcriticsData.textcritics[0]); + const expected = 'Textkritischer Kommentar:'; + + expectToBe(result, expected); + }); + }); + describe('#getEvaluationString()', () => { it('... should have a method `getEvaluationString`', () => { expect(component.getEvaluationString).toBeDefined(); diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts index e141e2fd82..daa15795a7 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-report/textcritics-list/textcritics-list.component.ts @@ -67,6 +67,18 @@ export class TextcriticsListComponent { this.ref = this; } + /** + * Public method: getCommentString. + * + * It returns the comment string for the textcritics + * depending on wether the selected textcritics id refers to a sketch or not. + * + * @returns {string} The comment string. + */ + getCommentString(selectedTextcritics: Textcritics): string { + return `${selectedTextcritics?.id.includes('_Sk') ? 'Textkritischer Kommentar' : 'Textkritische Anmerkungen'}:`; + } + /** * Public method: evaluationString. * diff --git a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html index 48b95afd5d..6ea7188ab1 100644 --- a/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html +++ b/src/app/views/edition-view/edition-outlets/edition-complex/edition-detail/edition-sheets/edition-accolade/edition-svg-sheet-footer/edition-svg-sheet-footer.component.html @@ -25,7 +25,7 @@
@if (showTkA) {