about summary refs log tree commit diff
path: root/laravel/resources/js/page.js
diff options
context:
space:
mode:
authorZach DeCook <zachdecook@gmail.com>2019-05-27 10:29:20 -0400
committerZach DeCook <zachdecook@gmail.com>2019-05-27 10:56:57 -0400
commit2943b2bc419b9180884018fea053021a11c1bd2f (patch)
treede16217c3b35f2bcc848369563e17edcdab6971f /laravel/resources/js/page.js
parentc1f80761734d634ba7d83af4768eaf22be6c0c7c (diff)
downloadprosongsa-2943b2bc419b9180884018fea053021a11c1bd2f.tar.gz
* Move more files out of public/js
Diffstat (limited to 'laravel/resources/js/page.js')
-rw-r--r--laravel/resources/js/page.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/laravel/resources/js/page.js b/laravel/resources/js/page.js
new file mode 100644
index 0000000..b7a89f7
--- /dev/null
+++ b/laravel/resources/js/page.js
@@ -0,0 +1,112 @@
+/**
+ * @brief page.js tries to improve pageload speeds
+ * by processing client-side.
+ * @author Zach DeCook (zjd7calvin)
+ * @date 12, February 2017
+ * requires jQuery
+ */
+
+/**
+ * @brief zj_transpose2 transposes a line
+ */
+function zj_transpose2( line, transp )
+{
+	var newchords = zj_transparray( transp );
+	var newline = '';
+	var space = 0; ///@< Spaces that need to be added or removed.
+	for(var i = 0; i < line.length; i++)
+	{
+		var chari = line[i];
+		var nchar = line[i+1];
+		var upchar = line[i].toUpperCase();
+		var cval = upchar.charCodeAt(0);
+		// A-G
+		if( cval <= 71 && cval >=65 )
+		{
+			// Exception for Cmaj7
+			if( upchar == 'A' && nchar == 'j' )
+			{
+				newline += chari;
+			}
+			else if( nchar == 'b' || nchar =='#')
+			{
+				i++; //We have read an extra character now.
+				var newchord = newchords[upchar + nchar];
+				if( newchord.length == 1 )
+				{
+					// Need to insert an extra space.
+					space += 1;
+				}
+				newline += newchord;
+			}
+			else
+			{
+				var newchord = newchords[upchar];
+				if( newchord.length == 2 )
+				{
+					// Need to remove an extra space.
+					space -= 1;
+				}
+				newline += newchord;
+			}
+		}
+		else if ( chari == ' ' )
+		{
+			if( space >= 0)
+			{
+				for (var j = 0; j <= space; j++)
+				{
+					newline += ' ';
+				}
+				space = 0;
+			}
+			else
+			{
+				// Only balance negative spaces if one will be left remaining
+				if( nchar == ' ' )
+				{
+					i++;
+					space += 1;
+				}
+				newline += ' ';
+			}
+		}
+		else
+		{
+			newline += chari;
+		}
+	}
+	return newline;
+}
+
+function zj_transparray( transp )
+{
+	var chords = 
+		["C","C#","D","D#","E","F","F#","G","G#","A","Bb","B" ];
+	var newchords = [];
+	// Create array to map old chords to new ones
+	for (var i=0; i < 12; i++)
+	{ 
+		newchords[chords[i]] = chords[(i+transp+12)%12];
+	}
+	newchords["Db"] = newchords["C#"];
+	newchords["Eb"] = newchords["D#"];
+	newchords["Gb"] = newchords["F#"];
+	newchords["Ab"] = newchords["G#"];
+	newchords["A#"] = newchords["Bb"];
+	return newchords;
+}
+
+function transpadd( fromkey, integer )
+{
+	var chords = {C:0, Db:1, D:2, Eb:3, E:4, F:5, Gb:6, G:7, Ab:8, A:9, Bb:10, B:11};
+	chords["C#"] = chords["Db"];
+	chords["D#"] = chords["Eb"];
+	chords["F#"] = chords["Gb"];
+	chords["G#"] = chords["Ab"];
+	chords["A#"] = chords["Bb"];
+	var ochords = [ "C","Db","D","Eb","E","F","Gb","G","Ab","A","Bb","B" ];
+
+	var val = ochords[(parseInt(chords[fromkey]) + integer + 24)%12];
+	return val;
+}