fixes for print

This commit is contained in:
Mikayla Dobson
2022-12-19 19:28:14 -06:00
parent 5c0128c3ff
commit 4050df23b6
4 changed files with 44 additions and 43 deletions

View File

@@ -3,12 +3,31 @@ import GraphNode from "./lib/Graph/GraphNode";
import Graph from "./lib/Graph/index";
import { ChordQuality, EventData } from "./lib/helpers/index";
// graph node variant with logic specific to handling this data type
class ChordNode<EventData> extends GraphNode<EventData> {
constructor(data: EventData, id = -1, edges?: Edge<EventData>[]) {
super(data, id, edges);
}
override print(excludeOrphans = false) {
if (!excludeOrphans) {
console.log(this.data['root' as keyof EventData], ChordQuality[this.data['quality' as keyof EventData] as number]);
}
if (this.edges.length) {
for (let edge of this.edges) {
console.log(`${this.data['root' as keyof EventData]} ${ChordQuality[this.data['quality' as keyof EventData] as number]} --> ${edge.end.data['root' as keyof EventData]} ${ChordQuality[edge.end.data['quality' as keyof EventData] as number]} ${edge.weight ? '(' + edge.weight + ')' : ''} `);
}
}
}
}
// factory to create data to populate graph
function createChord(root: string, quality: ChordQuality): EventData {
return {
function createChord(root: string, quality: ChordQuality): GraphNode<EventData> {
return new ChordNode<EventData>({
root: root,
quality: quality
}
});
}
// primary usable triads in C major
@@ -30,45 +49,27 @@ const bbmaj = createChord("Bb", ChordQuality.Major);
const bmaj = createChord("B", ChordQuality.Major);
// graph to host music theory logic
class ChordNode<EventData> extends GraphNode<EventData> {
constructor(data: EventData, id = -1, edges?: Edge<EventData>[]) {
super(data, id, edges);
}
override print() {
if (this.edges.length) {
for (let edge of this.edges) {
console.log(this);
console.log(`${this.data.root, ChordQuality[this.data.quality]} --> ${edge.end.data.root, ChordQuality[edge.end.data.quality]}`);
}
}
console.log(this.data.root, ChordQuality[this.data.quality]);
}
}
const chordChart = new Graph<EventData>(true, true);
chordChart.addPoints(
new ChordNode<EventData>(cmaj),
new ChordNode<EventData>(dmin),
new ChordNode<EventData>(emin),
new ChordNode<EventData>(fmaj),
new ChordNode<EventData>(gmaj),
new ChordNode<EventData>(amin),
new ChordNode<EventData>(dmaj),
new ChordNode<EventData>(emaj),
new ChordNode<EventData>(ebmaj),
new ChordNode<EventData>(fmin),
new ChordNode<EventData>(gmin),
new ChordNode<EventData>(abmaj),
new ChordNode<EventData>(bbmaj),
new ChordNode<EventData>(bmaj)
cmaj,
dmin,
emin,
fmaj,
gmaj,
amin,
dmaj,
emaj,
ebmaj,
fmin,
gmin,
abmaj,
bbmaj,
bmaj
);
const cmajnode = chordChart.getPointByData(cmaj) as ChordNode<EventData>;
const dminnode = chordChart.getPointByData(dmin) as ChordNode<EventData>;
chordChart.addEdge(cmajnode, dminnode);
chordChart.addEdge(cmaj, dmin, 15);
chordChart.addEdge(cmaj, gmaj, 50);
chordChart.addEdge(fmaj, gmaj, 50);
export default chordChart;

View File

@@ -23,13 +23,13 @@ export default class GraphNode<T> extends Node<T> {
this.edges.filter((value: Edge<T>) => value.end !== destination)
}
override print() {
override print(excludeOrphans = false) {
if (this.edges.length) {
for (let edge of this.edges) {
console.log(`Event ${this.id} --> Event ${edge.end.id}`);
}
} else {
console.log(`Event ${this.id} -->`);
if (!excludeOrphans) console.log(`Event ${this.id} -->`);
}
}
}

View File

@@ -73,9 +73,9 @@ export default class Graph<T> {
}
}
print() {
print(excludeOrphans = false) {
for (let each of this.points) {
each.print();
each.print(excludeOrphans);
}
}
}

View File

@@ -1,3 +1,3 @@
import chordChart from "./chordChart";
chordChart.print();
chordChart.print(true);