Skip to content

Commit 19b9c1b

Browse files
author
Salma Alam-Naylor
committed
Allow isTheoreticalScale to be calculated with a modeMap input to remove the need to pass around a scale [] of strings
1 parent d88ac05 commit 19b9c1b

16 files changed

+26
-68
lines changed

apps/fretonator-web/src/app/common/fretonator/fretonator.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ <h4 class="fretonator__playCta">
6464
<div class="infoContainer">
6565
<app-scale-map [mode]="mode"
6666
[modeMap]="modeMap"
67-
[isTheoretical]="scale | isTheoreticalScale"
67+
[isTheoretical]="modeMap | isTheoreticalScale"
6868
[modeDisplayString]="modeDisplayString"
6969
[note]="note"
7070
[noteExtenderString]="noteExtenderString"></app-scale-map>

apps/fretonator-web/src/app/common/fretonator/fretonator.component.spec.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,14 @@ describe('FretonatorComponent', () => {
88
@Component({
99
selector: 'app-fretonator-spec',
1010
template: `
11-
<app-fretonator [scale]="['C', 'D', 'E']"
11+
<app-fretonator [modeMap]="[{
12+
name: 'f',
13+
sharp: false,
14+
flat: false,
15+
doubleFlat: false,
16+
doubleSharp: false,
17+
displayName: 'F'
18+
}]"
1219
[fretMap]="[
1320
{ string: 'A', fret: 0, displayName: 'A', degree: 'dominant' },
1421
{ string: 'A', fret: 2, displayName: 'B', degree: 'submediant' }]">

apps/fretonator-web/src/app/common/fretonator/fretonator.component.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, Input } from '@angular/core';
2-
import { ChordMap, FretMap, Mode, ModeMap, Scale } from '../../util/types';
2+
import { ChordMap, FretMap, Mode, ModeMap } from '../../util/types';
33
import { NotePlaybackService } from '../playback/note-playback.service';
44

55
@Component({
@@ -10,7 +10,6 @@ import { NotePlaybackService } from '../playback/note-playback.service';
1010
export class FretonatorComponent {
1111
@Input() fretMap: FretMap;
1212
@Input() modeMap: ModeMap;
13-
@Input() scale: Scale;
1413
@Input() intervalMap: [];
1514
@Input() chordMap: ChordMap;
1615
@Input() mode: Mode;

apps/fretonator-web/src/app/common/fretonator/is-theoretical-scale.pipe.spec.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
11
import { IsTheoreticalScalePipe } from './is-theoretical-scale.pipe';
2+
import {
3+
aSharpPentatonicMajor,
4+
fMinorPentatonic,
5+
gFlatMinorPentatonic
6+
} from '../fret-map/fret-map.service.testConstants';
27

38
describe('IsTheoreticalScalePipe', () => {
49
let pipe: IsTheoreticalScalePipe;
@@ -11,14 +16,14 @@ describe('IsTheoreticalScalePipe', () => {
1116
});
1217

1318
it('returns true for a scale with a double flat in', () => {
14-
expect(pipe.transform(['C', 'D𝄫'])).toBe(true);
19+
expect(pipe.transform(gFlatMinorPentatonic)).toBe(true);
1520
});
1621

1722
it('returns true for a scale with a double sharp in', () => {
18-
expect(pipe.transform(['Cx', 'D'])).toBe(true);
23+
expect(pipe.transform(aSharpPentatonicMajor)).toBe(true);
1924
});
2025

2126
it('returns false for scales without double flat or double sharp', () => {
22-
expect(pipe.transform(['C', 'D'])).toBe(false);
27+
expect(pipe.transform(fMinorPentatonic)).toBe(false);
2328
});
2429
});

apps/fretonator-web/src/app/common/fretonator/is-theoretical-scale.pipe.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { Pipe, PipeTransform } from '@angular/core';
2-
import { Scale } from '../../util/types';
2+
import { ModeMap } from '../../util/types';
33

44
@Pipe({
55
name: 'isTheoreticalScale'
66
})
77
export class IsTheoreticalScalePipe implements PipeTransform {
88

9-
transform(scale: Scale): boolean {
10-
for (const note of scale) {
11-
if(note.indexOf('x') !== -1 || note.indexOf('𝄫') !== -1) {
9+
transform(modeMap: ModeMap): boolean {
10+
for (const note of modeMap) {
11+
if(note.displayName.indexOf('x') !== -1 || note.displayName.indexOf('𝄫') !== -1) {
1212
return true;
1313
}
1414
}

apps/fretonator-web/src/app/common/fretonator/scale-map/get-enharmonic-router-link.pipe.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { Pipe, PipeTransform } from '@angular/core';
2-
import { RouterLink } from '@angular/router';
32
import { Enharmonics } from '../../../util/constants';
43

54
@Pipe({

apps/fretonator-web/src/app/common/svgs/cross/cross.module.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { CommonModule } from '@angular/common';
33
import { CrossComponent } from './cross.component';
44

55

6-
76
@NgModule({
87
declarations: [CrossComponent],
98
exports: [

apps/fretonator-web/src/app/common/svgs/speaker/speaker.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, OnInit } from '@angular/core';
1+
import { Component } from '@angular/core';
22

33
@Component({
44
selector: 'app-speaker-svg',

apps/fretonator-web/src/app/common/svgs/speaker/speaker.module.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { CommonModule } from '@angular/common';
33
import { SpeakerComponent } from './speaker.component';
44

55

6-
76
@NgModule({
87
declarations: [SpeakerComponent],
98
exports: [

apps/fretonator-web/src/app/pages/home/home-index/generate-mode-map.pipe.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { TestBed } from '@angular/core/testing';
22

33
import { GenerateModeMapPipe } from './generate-mode-map.pipe';
4-
import { Mode, ModeMap } from '../../../util/types';
4+
import { Mode } from '../../../util/types';
55
import { FretMapService } from '../../../common/fret-map/fret-map.service';
6-
import { GenerateFretMapPipe } from './generate-fret-map.pipe';
76

87
describe('GenerateModeMapPipe', () => {
98
let pipe: GenerateModeMapPipe;

0 commit comments

Comments
 (0)