From 7578c16188f2c997eda25f73c7773fb74b4c2452 Mon Sep 17 00:00:00 2001 From: smuddyx Date: Sun, 14 Jun 2020 15:22:50 +0200 Subject: [PATCH] bugfixing --- .../modules/songs/services/text-rendering.service.ts | 3 ++- src/app/modules/songs/services/transpose-mode.ts | 4 ++++ src/app/modules/songs/services/transpose.service.ts | 12 ++++-------- .../components/song-text/song-text.component.ts | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 src/app/modules/songs/services/transpose-mode.ts diff --git a/src/app/modules/songs/services/text-rendering.service.ts b/src/app/modules/songs/services/text-rendering.service.ts index dcf1bc4..a2f665d 100644 --- a/src/app/modules/songs/services/text-rendering.service.ts +++ b/src/app/modules/songs/services/text-rendering.service.ts @@ -1,5 +1,6 @@ import {Injectable} from '@angular/core'; -import {TransposeMode, TransposeService} from './transpose.service'; +import {TransposeService} from './transpose.service'; +import {TransposeMode} from './transpose-mode'; export enum SectionType { Verse, diff --git a/src/app/modules/songs/services/transpose-mode.ts b/src/app/modules/songs/services/transpose-mode.ts new file mode 100644 index 0000000..b55a4c9 --- /dev/null +++ b/src/app/modules/songs/services/transpose-mode.ts @@ -0,0 +1,4 @@ +export interface TransposeMode { + baseKey: string; + targetKey: string +} diff --git a/src/app/modules/songs/services/transpose.service.ts b/src/app/modules/songs/services/transpose.service.ts index b84e9f3..78d8602 100644 --- a/src/app/modules/songs/services/transpose.service.ts +++ b/src/app/modules/songs/services/transpose.service.ts @@ -2,11 +2,6 @@ import {Injectable} from '@angular/core'; import {Chord, Line, LineType} from './text-rendering.service'; import {getScaleType, scaleMapping} from './key.helper'; -export interface TransposeMode { - baseKey: string; - targetKey: string -} - @Injectable({ providedIn: 'root' }) @@ -17,7 +12,7 @@ export class TransposeService { const difference = this.getDistance(baseKey, targetKey); const map = this.getMap(baseKey, difference); - const chords = line.chords.map(chord => this.transposeChord(chord, map)); + const chords = difference > 0 ? line.chords.map(chord => this.transposeChord(chord, map)) : line.chords; const renderedLine = this.renderLine(chords); return {...line, text: renderedLine, chords}; @@ -32,14 +27,15 @@ export class TransposeService { public getDistance(baseKey: string, targetKey: string): number { const scale = getScaleType(baseKey); - return ( + return scale ? ( (scale[0].indexOf(targetKey) - scale[0].indexOf(baseKey)) ?? (scale[1].indexOf(targetKey) - scale[1].indexOf(baseKey)) - ) % 12; + ) % 12 : 0; } public getMap(baseKey: string, difference: number) { const scale = getScaleType(baseKey); + if (!scale) return null; const map = {}; for (let i = 0; i < 12; i++) { const source = scale[0][i]; diff --git a/src/app/widget-modules/components/song-text/song-text.component.ts b/src/app/widget-modules/components/song-text/song-text.component.ts index 0637bd4..2295f60 100644 --- a/src/app/widget-modules/components/song-text/song-text.component.ts +++ b/src/app/widget-modules/components/song-text/song-text.component.ts @@ -8,7 +8,7 @@ import { } from '../../../modules/songs/services/text-rendering.service'; import {faGripLines} from '@fortawesome/free-solid-svg-icons/faGripLines'; import {songSwitch} from './animation'; -import {TransposeMode} from '../../../modules/songs/services/transpose.service'; +import {TransposeMode} from '../../../modules/songs/services/transpose-mode'; export type ChordMode = 'show' | 'hide' | 'onlyFirst'