;
let compDe: DebugElement;
- let compEl: any;
let expectedHeader: string;
let expectedData: ResourceFullResponseJson;
@@ -107,7 +106,6 @@ describe('JsonViewerComponent (DONE)', () => {
fixture = TestBed.createComponent(JsonViewerComponent);
component = fixture.componentInstance;
compDe = fixture.debugElement;
- compEl = compDe.nativeElement;
// Test data
expectedHeader = 'Converted JSON response from Salsah-API';
diff --git a/src/app/shared/modal/modal.component.ts b/src/app/shared/modal/modal.component.ts
index cd4d55643b..0c62324a16 100644
--- a/src/app/shared/modal/modal.component.ts
+++ b/src/app/shared/modal/modal.component.ts
@@ -18,21 +18,20 @@ import { ModalDismissReasons, NgbModal } from '@ng-bootstrap/ng-bootstrap';
*/
const MODALCONTENTSNIPPETS = {
OP12_SOURCE_NOT_A:
- 'Die Beschreibung der weiteren Quellenbestandteile von A sowie der Quellen B bis G1 einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.
',
+ 'Die Beschreibung der weiteren Quellenbestandteile von A sowie der Quellen B bis G1 einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.
',
OP12_SHEET_COMING_SOON:
- 'Die edierten Notentexte von Aa:SkI/1, Ab:SkII/1, Ac:SkIII/1 und Ac:SkIII/7 sowie Ae:SkIV/1 erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.',
+ 'Die edierten Notentexte von Aa:SkI/1, Ab:SkII/1, Ac:SkIII/1 und Ac:SkIII/7 sowie Ae:SkIV/1 erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.',
OP12_EDITION_COMING_SOON:
- 'Die Einleitungen, edierten Notentexte und Kritischen Berichte zu
- Werkedition der Druckfassung der Vier Lieder op. 12
Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 1)
Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 2)
Textedition von Nr. IV Gleich und Gleich (Fassung 1)
erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.
',
+ 'Die Einleitungen, edierten Notentexte und Kritischen Berichte zu
- Werkedition der Druckfassung der Vier Lieder op. 12
Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 1)
Textedition von Nr. I „Der Tag ist vergangen“ (Fassung 2)
Textedition von Nr. IV Gleich und Gleich (Fassung 1)
erscheinen im Zusammenhang der vollständigen Edition der Vier Lieder op. 12 in AWG I/5.
',
OP25_SHEET_COMING_SOON:
- 'Die edierten Notentexte weiterer Skizzen der Drei Lieder nach Gedichten von Hildegard Jone op. 25 erscheinen in Kürze (02/2020).',
+ 'Die edierten Notentexte weiterer Skizzen der Drei Lieder nach Gedichten von Hildegard Jone op. 25 erscheinen in Kürze (02/2020).',
OP25_SOURCE_NOT_A:
- 'Die Beschreibung der Quellen B sowie D–E einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.
',
- M198:
- 'Das Fragment „Schien mir’s als ich sah die Sonne“ (M 198) für Chor und Orchester wird in AWG II/3 ediert.
',
+ 'Die Beschreibung der Quellen B sowie D–E einschließlich der darin gegebenenfalls enthaltenen Korrekturen erfolgt im Zusammenhang der vollständigen Edition der Drei Lieder nach Gedichten von Hildegard Jone op. 25 in AWG I/5.
',
+ M198: 'Das Fragment „Schien mir’s als ich sah die Sonne“ (M 198) für Chor und Orchester wird in AWG II/3 ediert.
',
HINT_EDITION_DETAIL:
'\n' +
' Hinweise zur Nutzung:
\n' +
- ' Ausgewählte Skizzentranskriptionen lassen sich durch Klick auf einen markierten Bereich in der Konvolutansicht bzw. über die einzelnen Tabs unter Edierter Notentext aufrufen.
\n' +
+ ' Ausgewählte Skizzentranskriptionen lassen sich durch Klick auf einen markierten Bereich in der Konvolutansicht bzw. über die einzelnen Tabs unter Edierter Notentext aufrufen.
\n' +
' Einen Takt oder eine markierte Stelle innerhalb einer Skizzentranskription anklicken, um die entsprechenden textkritischen Anmerkungen anzuzeigen.
\n' +
' Die größeren Boxen im Notentext markieren die jeweiligen Anschlüsse unmittelbar benachbarter Skizzen und sind ebenfalls verknüpft.
\n' +
' Diese Funktionalität ist noch nicht für alle Skizzenbestandteile vorhanden, wird aber sukzessive ergänzt.\n' +
@@ -40,10 +39,10 @@ const MODALCONTENTSNIPPETS = {
HINT_EDITION_GRAPH:
'
\n' +
' Hinweise zur Nutzung:
\n' +
- ' RDF Triples: Das Resource Description Framework (RDF) stellt grundlegende syntaktische und semantische Elemente zur Beschreibung digitaler Repräsentationen von Objekten (Ressourcen) zur Verfügung. Dabei folgt es einer dreigliedrigen Struktur der Form <SUBJEKT> <PRÄDIKAT> <OBJEKT>, die auch als Triple bezeichnet wird. Eine Menge solcher Triples kann als (gerichteter) Graph verstanden und visualisiert werden. Unter dem Punkt RDF Triples sind die für die vorliegende Graph-Visualisierung zugrundeliegenden RDF-Daten einsehbar und interaktiv lokal bearbeitbar. (Achtung: Änderungen werden von der AWG-APP nicht gespeichert und sollten bei Bedarf lokal gesichert werden.) Weiterführende Informationen zu RDF finden sich unter: https://www.w3.org/RDF/.
\n' +
- ' SPARQL Abfrage: Die SPARQL Protocol And RDF Query Language (SPARQL) stellt u.a. eine Abfragesprache für graph-basierte Datensätze bereit. Sie ermöglicht komplexe Abfragen und Manipulationen von in RDF dargestellten und strukturierten Daten. Dabei wird nach dem Prinzip des graph pattern matching der RDF-Graph nach einer angefragten Triple-Folge durchsucht. Unter dem Punkt SPARQL Abfrage lassen sich die Suchanfragen interaktiv anpassen. Einige Beispielabfragen sind bereits in einem Auswahl-Dropdown-Menü vorformuliert. Weiterführende Informationen zu SPARQL finden sich unter: https://www.w3.org/TR/sparql11-query/.
\n' +
+ ' RDF Triples: Das Resource Description Framework (RDF) stellt grundlegende syntaktische und semantische Elemente zur Beschreibung digitaler Repräsentationen von Objekten (Ressourcen) zur Verfügung. Dabei folgt es einer dreigliedrigen Struktur der Form <SUBJEKT> <PRÄDIKAT> <OBJEKT>, die auch als Triple bezeichnet wird. Eine Menge solcher Triples kann als (gerichteter) Graph verstanden und visualisiert werden. Unter dem Punkt RDF Triples sind die für die vorliegende Graph-Visualisierung zugrundeliegenden RDF-Daten einsehbar und interaktiv lokal bearbeitbar. (Achtung: Änderungen werden von der AWG-APP nicht gespeichert und sollten bei Bedarf lokal gesichert werden.) Weiterführende Informationen zu RDF finden sich unter: https://www.w3.org/RDF/.
\n' +
+ ' SPARQL Abfrage: Die SPARQL Protocol And RDF Query Language (SPARQL) stellt u.a. eine Abfragesprache für graph-basierte Datensätze bereit. Sie ermöglicht komplexe Abfragen und Manipulationen von in RDF dargestellten und strukturierten Daten. Dabei wird nach dem Prinzip des graph pattern matching der RDF-Graph nach einer angefragten Triple-Folge durchsucht. Unter dem Punkt SPARQL Abfrage lassen sich die Suchanfragen interaktiv anpassen. Einige Beispielabfragen sind bereits in einem Auswahl-Dropdown-Menü vorformuliert. Weiterführende Informationen zu SPARQL finden sich unter: https://www.w3.org/TR/sparql11-query/.
\n' +
'\n' +
- ' Resultat: Der durch die SPARQL Abfrage über die RDF Triples zurückgelieferte Datensatz wird unter dem Punkt Resultat als dynamisches Graph-Netzwerk aus bezeichneten Knoten und Kanten mit Hilfe der JavaScript-Bibliothek d3.js visualisiert. Die Darstellung ist zoom- und verschiebbar, die Position einzelner Knoten lässt sich ebenfalls durch "Ziehen" mit der Maus verändern. Die Anzahl der angezeigten Triples lässt sich je nach Größe des Ergebnis-Datensatzes über ein Auswahl-Dropdown-Menü filtern; in der Voreinstellung findet eine Beschränkung auf 50 Triples statt.
\n' +
+ ' Resultat: Der durch die SPARQL Abfrage über die RDF Triples zurückgelieferte Datensatz wird unter dem Punkt Resultat als dynamisches Graph-Netzwerk aus bezeichneten Knoten und Kanten mit Hilfe der JavaScript-Bibliothek d3.js visualisiert. Die Darstellung ist zoom- und verschiebbar, die Position einzelner Knoten lässt sich ebenfalls durch "Ziehen" mit der Maus verändern. Die Anzahl der angezeigten Triples lässt sich je nach Größe des Ergebnis-Datensatzes über ein Auswahl-Dropdown-Menü filtern; in der Voreinstellung findet eine Beschränkung auf 50 Triples statt.
\n' +
'
',
};
diff --git a/src/app/shared/open-street-map/open-street-map.component.html b/src/app/shared/open-street-map/open-street-map.component.html
index 60e403587f..4e5f6024d0 100644
--- a/src/app/shared/open-street-map/open-street-map.component.html
+++ b/src/app/shared/open-street-map/open-street-map.component.html
@@ -1,10 +1,10 @@
diff --git a/src/app/shared/open-street-map/open-street-map.component.spec.ts b/src/app/shared/open-street-map/open-street-map.component.spec.ts
index 3e2353040f..4ee74434c0 100644
--- a/src/app/shared/open-street-map/open-street-map.component.spec.ts
+++ b/src/app/shared/open-street-map/open-street-map.component.spec.ts
@@ -12,12 +12,10 @@ describe('OpenStreetMapComponent (DONE)', () => {
let component: OpenStreetMapComponent;
let fixture: ComponentFixture;
let compDe: DebugElement;
- let compEl: any;
let domSanitizer: DomSanitizer;
let expectedUnsafeOsmEmbedUrl: string;
- let expectedUnsafeOsmLinkUrl: string;
let expectedOsmEmbedUrl: SafeResourceUrl;
let expectedOsmLinkUrl: string;
let expectedOsmLinkLabel: string;
@@ -36,7 +34,6 @@ describe('OpenStreetMapComponent (DONE)', () => {
fixture = TestBed.createComponent(OpenStreetMapComponent);
component = fixture.componentInstance;
compDe = fixture.debugElement;
- compEl = compDe.nativeElement;
domSanitizer = TestBed.inject(DomSanitizer);
@@ -50,11 +47,10 @@ describe('OpenStreetMapComponent (DONE)', () => {
// Unsafe link values for open streets map
expectedUnsafeOsmEmbedUrl = AppConfig.UNSAFE_OSM_EMBED_URL;
- expectedUnsafeOsmLinkUrl = AppConfig.UNSAFE_OSM_LINK_URL;
+ expectedOsmLinkUrl = AppConfig.OSM_LINK_URL;
- // Bypass the unsafe values
+ // Trust the unsafe values
expectedOsmEmbedUrl = domSanitizer.bypassSecurityTrustResourceUrl(expectedUnsafeOsmEmbedUrl);
- expectedOsmLinkUrl = domSanitizer.sanitize(SecurityContext.URL, expectedUnsafeOsmLinkUrl);
});
afterAll(() => {
@@ -144,10 +140,9 @@ describe('OpenStreetMapComponent (DONE)', () => {
// Sanitize the bypassed value
const sanitizedLinkUrl = expectedOsmLinkUrl;
- // Check for the href attribute to contain the sanitized SafeResourceUrl
+ // Check for the href attribute to contain the link url
expect(linkEl.href).toBeDefined();
- expect(linkEl.href).toBe(sanitizedLinkUrl, `should be ${sanitizedLinkUrl}`);
- expect(linkEl.href).toBe(expectedUnsafeOsmLinkUrl, `should be ${expectedUnsafeOsmLinkUrl}`);
+ expect(linkEl.href).toBe(expectedOsmLinkUrl, `should be ${expectedOsmLinkUrl}`);
});
});
});
diff --git a/src/app/shared/router-link-button-group/router-link-button-group.component.html b/src/app/shared/router-link-button-group/router-link-button-group.component.html
index 4339520442..97f89a8d8f 100644
--- a/src/app/shared/router-link-button-group/router-link-button-group.component.html
+++ b/src/app/shared/router-link-button-group/router-link-button-group.component.html
@@ -7,8 +7,7 @@
[queryParamsHandling]="queryParamsHandling"
routerLinkActive="active"
[disabled]="routerLinkButton?.disabled"
- (click)="selectButton(routerLinkButton)"
- >
+ (click)="selectButton(routerLinkButton)">
{{ routerLinkButton?.label }}
diff --git a/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts b/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts
index 58e926a31b..2272b382ab 100644
--- a/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts
+++ b/src/app/shared/router-link-button-group/router-link-button-group.component.spec.ts
@@ -21,7 +21,7 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => {
let component: RouterLinkButtonGroupComponent;
let fixture: ComponentFixture;
let compDe: DebugElement;
- let compEl: any;
+
let linkDes: DebugElement[];
let routerLinks;
@@ -43,7 +43,6 @@ describe('RouterLinkButtonGroupComponent (DONE)', () => {
fixture = TestBed.createComponent(RouterLinkButtonGroupComponent);
component = fixture.componentInstance;
compDe = fixture.debugElement;
- compEl = compDe.nativeElement;
// Test data
expectedRouterLinkButtons = [
diff --git a/src/app/shared/toast/toast.component.html b/src/app/shared/toast/toast.component.html
index ed83e7516a..3e0673a77f 100644
--- a/src/app/shared/toast/toast.component.html
+++ b/src/app/shared/toast/toast.component.html
@@ -4,8 +4,7 @@
[class]="toast?.options?.classname"
[autohide]="true"
[delay]="toast?.options?.delay || 5000"
- (hide)="toastService.remove(toast)"
->
+ (hide)="toastService.remove(toast)">
diff --git a/src/app/shared/toast/toast.component.spec.ts b/src/app/shared/toast/toast.component.spec.ts
index ca47a2fe0c..71b1cbe1e2 100644
--- a/src/app/shared/toast/toast.component.spec.ts
+++ b/src/app/shared/toast/toast.component.spec.ts
@@ -33,7 +33,6 @@ describe('ToastComponent (DONE)', () => {
let component: ToastComponent;
let fixture: ComponentFixture;
let compDe: DebugElement;
- let compEl: any;
let toastService: ToastService;
@@ -52,7 +51,6 @@ describe('ToastComponent (DONE)', () => {
fixture = TestBed.createComponent(ToastComponent);
component = fixture.componentInstance;
compDe = fixture.debugElement;
- compEl = compDe.nativeElement;
// Inject service from root
toastService = TestBed.inject(ToastService);
diff --git a/src/app/shared/toast/toast.component.ts b/src/app/shared/toast/toast.component.ts
index 320d98ad24..c2ae34e777 100644
--- a/src/app/shared/toast/toast.component.ts
+++ b/src/app/shared/toast/toast.component.ts
@@ -1,4 +1,4 @@
-import { Component, OnInit, TemplateRef } from '@angular/core';
+import { Component, TemplateRef } from '@angular/core';
import { Toast, ToastService } from '@awg-core/services/toast-service';
@@ -13,7 +13,7 @@ import { Toast, ToastService } from '@awg-core/services/toast-service';
templateUrl: './toast.component.html',
styleUrls: ['./toast.component.css'],
})
-export class ToastComponent implements OnInit {
+export class ToastComponent {
/**
* Constructor of the ToastComponent.
*
@@ -24,14 +24,6 @@ export class ToastComponent implements OnInit {
*/
constructor(public toastService: ToastService) {}
- /**
- * Angular life cycle hook: ngOnInit.
- *
- * It calls the containing methods
- * when initializing the component.
- */
- ngOnInit(): void {}
-
/**
* Public method: isTemplate.
*
diff --git a/src/app/side-info/contact-info/contact-info.component.spec.ts b/src/app/side-info/contact-info/contact-info.component.spec.ts
index af03029d0d..30a4741f78 100644
--- a/src/app/side-info/contact-info/contact-info.component.spec.ts
+++ b/src/app/side-info/contact-info/contact-info.component.spec.ts
@@ -40,10 +40,9 @@ describe('ContactInfoComponent (DONE)', () => {
let component: ContactInfoComponent;
let fixture: ComponentFixture;
let compDe: DebugElement;
- let compEl;
let provideMetaDataSpy: Spy;
- let sanitizeSpy: Spy;
+ let provideOSMUrlSpy: Spy;
let domSanitizer: DomSanitizer;
@@ -53,7 +52,6 @@ describe('ContactInfoComponent (DONE)', () => {
let expectedContactMetaData: MetaContact;
let expectedUnsafeOsmEmbedUrl: string;
- let expectedUnsafeOsmLinkUrl: string;
let expectedOsmEmbedUrl: SafeResourceUrl;
let expectedOsmLinkUrl: string;
@@ -76,7 +74,6 @@ describe('ContactInfoComponent (DONE)', () => {
fixture = TestBed.createComponent(ContactInfoComponent);
component = fixture.componentInstance;
compDe = fixture.debugElement;
- compEl = compDe.nativeElement;
domSanitizer = TestBed.inject(DomSanitizer);
@@ -84,19 +81,18 @@ describe('ContactInfoComponent (DONE)', () => {
expectedPageMetaData = METADATA[MetaSectionTypes.page];
expectedContactMetaData = METADATA[MetaSectionTypes.contact];
- // Unsafe link values for open streets map
+ // Link values for open streets map
expectedUnsafeOsmEmbedUrl = AppConfig.UNSAFE_OSM_EMBED_URL;
- expectedUnsafeOsmLinkUrl = AppConfig.UNSAFE_OSM_LINK_URL;
+ expectedOsmLinkUrl = AppConfig.OSM_LINK_URL;
- // Bypass the unsafe values
+ // Trust the unsafe values
expectedOsmEmbedUrl = domSanitizer.bypassSecurityTrustResourceUrl(expectedUnsafeOsmEmbedUrl);
- expectedOsmLinkUrl = domSanitizer.sanitize(SecurityContext.URL, expectedUnsafeOsmLinkUrl);
// Spies on component functions
// `.and.callThrough` will track the spy down the nested describes, see
// https://jasmine.github.io/2.0/introduction.html#section-Spies:_%3Ccode%3Eand.callThrough%3C/code%3E
provideMetaDataSpy = spyOn(component, 'provideMetaData').and.callThrough();
- sanitizeSpy = spyOn(component, '_sanitizeUrls').and.callThrough();
+ provideOSMUrlSpy = spyOn(component, 'provideOSMUrls').and.callThrough();
});
afterAll(() => {
@@ -131,9 +127,9 @@ describe('ContactInfoComponent (DONE)', () => {
});
});
- describe('#_sanitizeUrls', () => {
+ describe('#provideOSMUrls', () => {
it('... should not have been called', () => {
- expectSpyCall(sanitizeSpy, 0);
+ expectSpyCall(provideOSMUrlSpy, 0);
});
});
@@ -183,7 +179,7 @@ describe('ContactInfoComponent (DONE)', () => {
describe('AFTER initial data binding', () => {
beforeEach(() => {
- // Mock the call to the DomSanitizer in #_sanitizeUrls
+ // Mock the call to the DomSanitizer in #provideOSMUrls
// It sets the bypassed links (SafeResourceUrl)
component.osmEmbedUrl = expectedOsmEmbedUrl;
component.osmLinkUrl = expectedOsmLinkUrl;
@@ -212,9 +208,9 @@ describe('ContactInfoComponent (DONE)', () => {
});
});
- describe('#_sanitizeUrls', () => {
+ describe('#provideOSMUrls', () => {
it('... should have been called', () => {
- expectSpyCall(sanitizeSpy, 1);
+ expectSpyCall(provideOSMUrlSpy, 1);
});
it('... should return osmEmbedUrl', () => {
diff --git a/src/app/side-info/contact-info/contact-info.component.ts b/src/app/side-info/contact-info/contact-info.component.ts
index 0acfd38da1..fe0a344afd 100644
--- a/src/app/side-info/contact-info/contact-info.component.ts
+++ b/src/app/side-info/contact-info/contact-info.component.ts
@@ -1,4 +1,4 @@
-import { ChangeDetectionStrategy, Component, OnInit, SecurityContext } from '@angular/core';
+import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';
import { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';
import { AppConfig } from '@awg-app/app.config';
@@ -49,7 +49,7 @@ export class ContactInfoComponent implements OnInit {
/**
* Public variable: osmLinkUrl.
*
- * It keeps the sanitized link to the OSM page.
+ * It keeps the link to the OSM page.
*/
osmLinkUrl: string;
@@ -72,7 +72,7 @@ export class ContactInfoComponent implements OnInit {
*/
ngOnInit() {
this.provideMetaData();
- this._sanitizeUrls();
+ this.provideOSMUrls();
}
/**
@@ -89,15 +89,15 @@ export class ContactInfoComponent implements OnInit {
}
/**
- * Private method: _sanitizeUrls.
+ * Public method: provideOSMUrls.
*
- * It sanitizes the URLs and links for the OpenStreetMap
+ * It provides the URLs and links for the OpenStreetMap
* using the Angular DomSanitizer.
*
- * @returns {void} Sanitizes the URLs.
+ * @returns {void} Provides the URLs.
*/
- private _sanitizeUrls(): void {
+ provideOSMUrls(): void {
this.osmEmbedUrl = this.sanitizer.bypassSecurityTrustResourceUrl(AppConfig.UNSAFE_OSM_EMBED_URL);
- this.osmLinkUrl = this.sanitizer.sanitize(SecurityContext.URL, AppConfig.UNSAFE_OSM_LINK_URL);
+ this.osmLinkUrl = AppConfig.OSM_LINK_URL;
}
}
diff --git a/src/app/side-info/edition-info/edition-info.component.html b/src/app/side-info/edition-info/edition-info.component.html
index 25380d09c4..c8df398b5f 100644
--- a/src/app/side-info/edition-info/edition-info.component.html
+++ b/src/app/side-info/edition-info/edition-info.component.html
@@ -10,7 +10,7 @@