From 96bf90a9c830f9ed8f30d3d625c1a292c56e8f4b Mon Sep 17 00:00:00 2001 From: Nancy Date: Wed, 7 Nov 2018 10:22:52 -0700 Subject: [PATCH 1/8] added random (but not repeated) album art on splash --- index.html | 11 ----- playlist.html | 40 ++++++++++++++++++ script.js | 36 ++++++++++++++++ splash.html | 38 +++++++++++++++++ .../style.scssc | Bin 0 -> 5175 bytes style/css/style.css | 22 ++++++++++ style/css/style.css.map | 7 +++ style/scss/style.scss | 23 ++++++++++ 8 files changed, 166 insertions(+), 11 deletions(-) delete mode 100644 index.html create mode 100644 playlist.html create mode 100644 script.js create mode 100644 splash.html create mode 100644 style/.sass-cache/208a20bc46f6bb470820bfd01bde55c05dcdc82f/style.scssc create mode 100644 style/css/style.css create mode 100644 style/css/style.css.map create mode 100644 style/scss/style.scss diff --git a/index.html b/index.html deleted file mode 100644 index 8e0abfd..0000000 --- a/index.html +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/playlist.html b/playlist.html new file mode 100644 index 0000000..0c720f7 --- /dev/null +++ b/playlist.html @@ -0,0 +1,40 @@ + + + + + playlist + + + + + + + + + + + + + + +
+
+

pick an album to add its tracks to the bin

+
+
+ +
+
+ +
+
+ + +
+ + +
+ + diff --git a/script.js b/script.js new file mode 100644 index 0000000..60f509c --- /dev/null +++ b/script.js @@ -0,0 +1,36 @@ +//generate 3 random numbers between 0 and 5 to decide which albums to display +var randomIndexArr = []; +var randomIndex = (Math.floor(Math.random() * 5)) +randomIndexArr.push(randomIndex) +while(randomIndex == randomIndexArr[0]){ + randomIndex = (Math.floor(Math.random() * 5)) +} +randomIndexArr.push(randomIndex) +while(randomIndex == randomIndexArr[0]||randomIndex == randomIndexArr[1]){ + randomIndex = (Math.floor(Math.random() * 5)) +} +randomIndexArr.push(randomIndex) + +//get array of album objects +fetch("https://lit-fortress-6467.herokuapp.com/object") + .then((resource)=>resource.json()) + .then(function(data){ + var albumArr = data.results + var albumPreviewsEl = document.querySelector("#albumPreviews") + //run for loop 3 times to get 3 image elements + for(var i = 0; i < 4; i++){ + var imgEl = document.createElement("img") + //pick album using indexes from randomIndexArr + imgEl.setAttribute("src", `images/${albumArr[randomIndexArr[i]].cover_art}`) + imgEl.setAttribute("id", albumArr[randomIndexArr[i]].artist) + imgEl.classList.add("albumArt") + albumPreviewsEl.appendChild(imgEl) + } + + + + + + + + }) diff --git a/splash.html b/splash.html new file mode 100644 index 0000000..b8dc84c --- /dev/null +++ b/splash.html @@ -0,0 +1,38 @@ + + + + + splash + + + + + + + + + + + + + + + + +
+
+
+

track bin

+ +
+
+
+
+
+
+ +
+ + diff --git a/style/.sass-cache/208a20bc46f6bb470820bfd01bde55c05dcdc82f/style.scssc b/style/.sass-cache/208a20bc46f6bb470820bfd01bde55c05dcdc82f/style.scssc new file mode 100644 index 0000000000000000000000000000000000000000..c7a5725e16066d859860a29126c0ff72189f413b GIT binary patch literal 5175 zcmb7I+in{-5Ved}me!Un%Xd2$!9gxAdw<(?p6ou`+k3Y6+}+)O z?z+2s+=ZX^Gq3&9ed+Q2{TH3R_Wp|(-1(#uk+mZ)NeDTPIVa@XC`!MHI(&xAvUX4S zotTI3ol&8I&rxWOI4p+$@5=|9)m|F-Wm0}~Od723#R>1Ua4(6-W_H05_jx;wVnSX= zLEs(n9|k;Z^9rf4fCnc$PTrRza(h%*$xYE2+`l)rFM__$mDF@5b!$}Wjn4xfrd6;w z^a8HzrPX6HC!ZvJugzW9_C?4=8Qkv*pQEe`1}1}(@4UBDY$x7oPHntmZbzhY(qOT7}z^)Qi(rKLQmSw#Z?Wh*U)36m5V7Gc4+M6Q07~ z8slL{9-$j@lim^zT#Y8WU@C+lic=oDc#tk+KiOZh!IC`iEz3T-R;BBa(O0IohgJ@~ zbFjIXw3B2fNiTiAjepA!E_yd2&CKkB{8k{(S71nTnWQ|ZfLSq+=wS2lPA>}hPUwa0 z%bm9(?F~+j(m}Vo)AzkgUnFU!8I?j*V($5^n;%?d2|(0BoLc8z9E$KXiRf~ft{@~1 zOTCjsOwck?$0GV+9QBdIby`RIPWQMt?WNL~X?EuM17NlG^r#(+eyVchYXPD5{0ebN=xQ{K+7z&$u2I9)BE7@b>0P!#?~4gC&-&nGE4d6)?}Ai9ehzV% zKze-69$lfYQml`x$RsIX5Zks+%qk1WY8J(UBRS1-^VyC%Vk|2wPuZ&0UPjIHqZL_)PNL4GB&rk9>541|w3ZbQI-8XTI#;E2fJTeXV|c50|DsEmG=G#8 zLwPZlB`&?I52KD;Pt!uG3bvb*xYC{=Qj(tZK~BZFK!jU{j`SfAkv>AU(a&s3NgN;3 zFX$GU;Eb5-NJ6Nj#?`6{pS*ON?$~@NQegOCD{wRa*gK66?l<%WPb~j)Q`mQUUz4z^ ztY&YuDmy^CL+H-m3p^3NjvzfknXL3`l*!6y6FBHp5cm41j)s`IIriXdj=emLI&wWW z_A?L{gFUWHl*X_hDnsMAJ5Wl_dXn3iz#90P3SrLE8r)&(0bjIVZADv4;$C7-yCpyp^#?hWv zam&%3hie)-g1EXS&5INmv~2|n?b0vS4RsBt4R>w}EB&ejjK4D-kznU9cDLH~`Ng=i zjS*)X;NHA81y|QlyGVg?)>fdM{mr^zPWdvz?c5et`dtYaXBW_&t&V_xjxE2~=jnFj z4}t=S7e>5Zkf5qcj;lNB%Hm31q`-J>E6`s5p}j_dWqpGUac&DM{iy_u*LBYqr{NZi zM?sdMA-YcoD(oE_Y3O4@(4YaC0vRg zxLUDp9BXk!3LK5Ttw7OZ^3#$fF|V(%`H>sLCd(x)q1)V&vYeIv(c0_~?H(iY*-TzH z;y-I~yORvJ#o2Ay;$Fqq4nyms!_aFVUi)R6tXVo5V(sQcgc_N5NO>4_Q)5H~a=Ma`vo;haG#=L>V=zk!CiPQFxY*Go*>F9v|2(pER@Xjypqb5gyA9 zh>vCK_yB*J&AcX}m3^t~BN(D{8)bAZkfx+PDllx(4?jAxuHv^J`(pvtbCY@5N_{NY GJ^mM`FSV!u literal 0 HcmV?d00001 diff --git a/style/css/style.css b/style/css/style.css new file mode 100644 index 0000000..4cf117d --- /dev/null +++ b/style/css/style.css @@ -0,0 +1,22 @@ +html { + height: 100%; } + +body { + min-height: 100%; } + +#mainContent { + height: 100vh; } + +#albumPreviews { + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; } + #albumPreviews img { + padding: 10px; } + +.albumArt { + max-width: 300px; + max-height: 300px; } + +/*# sourceMappingURL=style.css.map */ diff --git a/style/css/style.css.map b/style/css/style.css.map new file mode 100644 index 0000000..dc4b6b4 --- /dev/null +++ b/style/css/style.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": "AAAA,IAAI;EACF,MAAM,EAAE,IAAI;;AAEd,IAAI;EACF,UAAU,EAAE,IAAI;;AAElB,YAAY;EACV,MAAM,EAAE,KAAK;;AAGf,cAAc;EACZ,QAAQ,EAAE,MAAM;EAChB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;EACtB,WAAW,EAAE,MAAM;EACnB,kBAAK;IACH,OAAO,EAAE,IAAI;;AAGjB,SAAS;EACP,SAAS,EAAE,KAAK;EAChB,UAAU,EAAE,KAAK", +"sources": ["../scss/style.scss"], +"names": [], +"file": "style.css" +} \ No newline at end of file diff --git a/style/scss/style.scss b/style/scss/style.scss new file mode 100644 index 0000000..3978927 --- /dev/null +++ b/style/scss/style.scss @@ -0,0 +1,23 @@ +html{ + height: 100%; +} +body{ + min-height: 100%; +} +#mainContent{ + height: 100vh; +} + +#albumPreviews{ + overflow: hidden; + display: flex; + flex-direction: column; + align-items: center; + & img{ + padding: 10px; + } +} +.albumArt{ + max-width: 300px; + max-height: 300px; +} From b7dcd668467ccc1106352e0b7e6903d4dee4231d Mon Sep 17 00:00:00 2001 From: Nancy Date: Wed, 7 Nov 2018 15:21:26 -0700 Subject: [PATCH 2/8] added individual album track viewer --- playlist.html | 32 +++- playlistScript.js | 170 ++++++++++++++++++ splash.html | 12 +- script.js => splashScript.js | 5 +- .../style.scssc | Bin 5175 -> 15209 bytes style/css/style.css | 60 ++++++- style/css/style.css.map | 2 +- style/scss/style.scss | 61 ++++++- 8 files changed, 312 insertions(+), 30 deletions(-) create mode 100644 playlistScript.js rename script.js => splashScript.js (93%) diff --git a/playlist.html b/playlist.html index 0c720f7..35f5077 100644 --- a/playlist.html +++ b/playlist.html @@ -10,22 +10,40 @@ - + + + - + -
-
+
+ -
+
-
- +
+
+

Add tracks from:

+
+ Ghost in the Machine
+ The Police + +
+
+
+ available tracks: +
+
+
+ playlist: +
+ runtime: +
diff --git a/playlistScript.js b/playlistScript.js new file mode 100644 index 0000000..7332bb9 --- /dev/null +++ b/playlistScript.js @@ -0,0 +1,170 @@ +var albumShelfEl = document.querySelector("#albumShelf") +var allTracksEl = document.querySelector("#allTracks") + +var adeleTracks = [ + {name: "Rolling in the Deep", + length: "3:49",}, + {name: "Rumour Has It", + length: "3:44",}, + {name: "Turning Tables", + length: "4:11",}, + {name: "Dont You Remember", + length: "4:04",}, + {name: "Set Fire to the Rain", + length: "4:02",}, + {name: "He Wont Go", + length: "4:38",}, + {name: "Take it All", + length: "3:49",}, + {name: "I'll Be Waiting", + length: "4:02",}, + {name: "One and Only", + length: "5:39",}, + {name: "Lovesong", + length: "5:17",}, + {name: "Someone Like You", + length: "4:44",}, + {name: "I found a Boy", + length: "3:37",} +] +var policeTracks = [ + {name: "Spirits in the Material World", + length: "2:59",}, + {name: "Every Little Thing She Does is Magic", + length: "4:22",}, + {name: "Invisible Sun", + length: "3:44",}, + {name: "Hungry for You", + length: "2:53",}, + {name: "Demolition Man", + length: "5:57",}, + {name: "Too Much Information", + length: "3:43",}, + {name: "Rehumanize Yourself", + length: "3:10",}, + {name: "One World (Not Three)", + length: "4:47",}, + {name: "Omega Man", + length: "2:48",}, + {name: "Secret Journey", + length: "3:34",}, + {name: "Darkness", + length: "3:14",} +] +var pinkFloydTracks = [ + {name: "Cluster One", + length: "5:56"}, + {name: 'What Do You Want from Me', + length: "4:21"}, + {name: "Poles Apart", + length: "7:03"}, + {name: "Marooned", + length: "5:29"}, + {name: "A Great Day for Freedom", + length: "4:17"}, + {name: "Wearing the Inside Out", + length: "6:49"}, + {name: "Take it Back", + length: "6:12"}, + {name: "Coming Back to Life", + length: "6:19"}, + {name: "Keep Talking", + length: "6:10"}, + {name: "Lost for Words", + length: "5:13"}, + {name: "High Hopes", + length: "8:34"} +] +var blackUhuruTracks = [ + {name: "Youth of Eglington", + length: "5:00"}, + {name: "Sponji Reggae", + length: "4:56"}, + {name: "Sistren", + length: "4:34"}, + {name: "Journey", + length: "5:21"}, + {name: "Utterance", + length: "3:42"}, + {name: "Puff She Puff", + length: "5:08"}, + {name: "Rockstone", + length: "4:38"}, + {name: "Carbine", + length: "6:05"}, +] +var mjTracks = [ + {name: "Wanna Be Startin' Somethin'", + length: "6:03"}, + {name: "Baby Be Mine", + length: "4:20"}, + {name: "The Girl is Mine", + length: "3:42"}, + {name: "Thriller", + length: "5:57"}, + {name: "Beat It", + length: "4:18"}, + {name: "Billie Jean", + length: "4:54"}, + {name: "Human Nature", + length: "4:06"}, + {name: "P.Y.T.(Pretty Young Thing)", + length: "3:59"}, + {name: "The Lady in My Life", + length: "5:00"}, +] + + +//get array of album objects +fetch("https://lit-fortress-6467.herokuapp.com/object") + .then((resource)=>resource.json()) + .then(function(data){ + var albumArr = data.results + for(var i = 0; i < albumArr.length; i++){ + //add appropriate tracks for each album + switch(albumArr[i].title){ + case "Ghost in the Machine": + albumArr[i].tracks = policeTracks; + break; + case "Red": + albumArr[i].tracks = blackUhuruTracks; + break; + case "The Division Bell": + albumArr[i].tracks = pinkFloydTracks + break; + case "Thriller": + albumArr[i].tracks = mjTracks + break; + case "21": + albumArr[i].tracks = adeleTracks + } + //make elements for each album cover + var albumEl = document.createElement("img") + albumEl.setAttribute("src", `images/${albumArr[i].cover_art}`) + albumEl.setAttribute("alt", `album art for ${albumArr[i].title}`) + albumEl.setAttribute("id", albumArr[i].title) + albumShelfEl.appendChild(albumEl) + + //add event listeners for each album object + albumEl.addEventListener("click", function(){ + //get associated object + var albumName = this.id + var albumObj = albumArr.find(function(obj){ + return obj.title == albumName + }) + document.querySelector("#selectedAlbumInfo").innerHTML = ` + ${albumObj.title}
+ ${albumObj.artist}
+ + ` + var trackList = document.createElement("ol") + for(var i = 0; i < albumObj.tracks.length; i++){ + var indivTrack = document.createElement("li") + indivTrack.innerHTML = `${albumObj.tracks[i].name}: ${albumObj.tracks[i].length}` + trackList.appendChild(indivTrack) + } + allTracksEl.appendChild(trackList) + + }) + } + }) diff --git a/splash.html b/splash.html index b8dc84c..12388df 100644 --- a/splash.html +++ b/splash.html @@ -15,19 +15,17 @@ - +
-
-
+
+

track bin

- + choose tracks
-
-
-
+
available tracks: -
+
+
    +
+
playlist: -
- runtime: +
+
    +
+
+ runtime:
diff --git a/playlistScript.js b/playlistScript.js index 7332bb9..5e49644 100644 --- a/playlistScript.js +++ b/playlistScript.js @@ -1,5 +1,7 @@ var albumShelfEl = document.querySelector("#albumShelf") var allTracksEl = document.querySelector("#allTracks") +var allTracksListEl = document.querySelector("#allTracksList") +var chosenTracksListEl = document.querySelector("#chosenTrackList") var adeleTracks = [ {name: "Rolling in the Deep", @@ -114,6 +116,21 @@ var mjTracks = [ length: "5:00"}, ] +/* format of playlist willbe: +[ + {album: + track: + length:}, + {album: + track: + length: + } + ..etc +] +*/ +var playlist = [] +//runtime in seconds +var totalRuntime = 0; //get array of album objects fetch("https://lit-fortress-6467.herokuapp.com/object") @@ -145,26 +162,59 @@ fetch("https://lit-fortress-6467.herokuapp.com/object") albumEl.setAttribute("id", albumArr[i].title) albumShelfEl.appendChild(albumEl) - //add event listeners for each album object + //add event listeners for each album cover albumEl.addEventListener("click", function(){ + //if there's already something in the bin, remove it + while(allTracksListEl.childNodes[0]){ + allTracksListEl.removeChild(allTracksListEl.childNodes[0]) + } //get associated object var albumName = this.id var albumObj = albumArr.find(function(obj){ return obj.title == albumName }) + + //change left-hand album info area and update runtime document.querySelector("#selectedAlbumInfo").innerHTML = ` ${albumObj.title}
${albumObj.artist}
` - var trackList = document.createElement("ol") + //make a list element to store tracks in album bin + allTrackListEl = document.createElement("ol") for(var i = 0; i < albumObj.tracks.length; i++){ - var indivTrack = document.createElement("li") - indivTrack.innerHTML = `${albumObj.tracks[i].name}: ${albumObj.tracks[i].length}` - trackList.appendChild(indivTrack) - } - allTracksEl.appendChild(trackList) + //makeli's of tracks and runtime + var indivTrackEl = document.createElement("li") + //attach the length of song as class to use for total runtime later + indivTrackEl.classList.add(`${albumObj.tracks[i].length}`) + indivTrackEl.innerHTML = `${albumObj.tracks[i].name}: ${albumObj.tracks[i].length}` + + //add individual li's to ol of album tracks + allTracksListEl.appendChild(indivTrackEl) + + //add event listener for each track to add it to other bin when user selects it + indivTrackEl.addEventListener("click", function(){ + var chosenIndivTrackEl = this .cloneNode(true) + chosenTracksListEl.appendChild(chosenIndivTrackEl) + //get runtime of track from class, convert to seconds, add to total runtime + var runtime = this.classList[0] + //runtime is in format mm:ss convert to seconds and add to totalRuntime + var mins = runtime.slice(0, runtime.indexOf(":")) + var secs = runtime.slice(runtime.indexOf(":")+1, runtime.length) + totalRuntime += parseInt(mins*60)+parseInt(secs) + + //convert total to mm:ss and change totalruntime in html to match + var totalRuntimeMin = `${Math.floor(totalRuntime/60)}:${(totalRuntime%60)}` + document.querySelector("#runtimeSpan").innerHTML = `runtime: ${totalRuntimeMin}` + + }) + + + + + + } }) } }) diff --git a/style/.sass-cache/208a20bc46f6bb470820bfd01bde55c05dcdc82f/style.scssc b/style/.sass-cache/208a20bc46f6bb470820bfd01bde55c05dcdc82f/style.scssc index bca19bae9483f23781d3328ec0776225f3ab130e..aec22e7586f1e11dd1db86153917c86ba8fd4c45 100644 GIT binary patch delta 2908 zcmb7GTW=dh6vmt2G;23@64#02#@^U%6S=j$j&Jc!DI3u?Els1QO`SllYkS?SaJ-Q( zEfwnJg%<=Z=)8c0DEtAW(kBoS>LXGgDj^|2LX^h>68``(Gv3{a9an+}OEbxLzH{a~ z-<;X!*T1=EizQ>3n8=rt1+lEC>0G9enl2~Pxnv?YlgpM8rE)o!QwvJAm`LYxnU7+V zHs8bim$5gb!&j7gU6Ph+swzpZ={q}WwXvX=R41BTwVw~g5VrayU#&zWHLqpnGbXbd`fINnR zvLAZluiNI}sdF0c#`(k?8Wu5Rj{fjc(2=hnjTw=1IFj*@oeQ2u$KboZadqZFCD z&jM-57I=C|M_EH$Z#+UoR4Xb`y>4lUW{`dLC8A1;_kwlAiI$od+B6|MkC_0Ti>vTS z>J03rM&XNu2d|I9FNsn3F(pE1`b}6)dt6MPi#Rq&^ns7lp^3Z zFLOV`8=fs&o>(F+5Djy1nC};v`1+6MN9KDFK%+ZVRBpR^u z_?GE4m`#q%)YK9^1nK>8bOJ>Q<7LYNEeBl294;$6*$t5{p6P~TE~mKtJs$6EV>$?n z&XGGt2AK==S`n5b7tL~HZh!@ogJBU`mmKYNdM+NR={MS@hu+vGBcx7eh*BvucZA)V zdRX!2N3x@;db`8J+B^rV-9 z%N@CvF@`yP8D5rOx@bYNj+gx{8yr3qp1=GqsNTT<8FKnOtG5y4!5b)>H+aO&)^V6N5to z)}QDN8q(Ix-Y3>tySqmv!oa z515+kbP^gwGIy^R-t)`_H#!n+;6!Y~Y=F%Z>WX2BHXw1x>wLfxZNTFreuqIMbD#IZ z+StsggXN0)c2uo)nKPRmHEiMx>zlG1m zswX=){l@Tx!_W+PgGz@g3Py}tswnWQH`Eow@4*B{yzbwa0EEIz2dzOSbI&XhNU^P_ zf6L4)b5B_?tEe*+S10ACLd1&pr553b-(M z@8=7AEzPg+9gjD8NZ;WFJo)kSCJFd$L;NisNB+;}0D6&_+8_3UQN!<<4KCz`Z*w8h j^gP1Vn9d@V3BnG3;%z*^wQ delta 920 zcmZuvJ#W)c6jhuwO-)3gHffu0l9p5z@ptUFuM#gH2ggb(Ayq7>5^;bwqL2ZEgb))8 z6B68^Ol*uGD#QWxQg!Ym(fN%si%p7LiN@U}Xco$X7x( z?A6v{_Ry&f_m#7xH4qnJUzx8Qwh5*G91p-Id^7+X66$8DdBk*c%(PeKJ=66`I2wYF z3pNcx*r#5aUI^@n9W$Td(+US?G$ZdES->HZe2|?3{ZervhKf7zrj(3-qgoF9Hq+XO z2s7U&1a2RyV&(%Kv_YsY!0p<3c&RMG)v4pKrOd)FWf`*OCD>8j_|CU~8#XR?aa7jwH?ggiL6J#DUbCCcY zTu+OdIiO}*@UFhd{0YDPT6e=4q1)f7+__cJ9 Date: Thu, 8 Nov 2018 10:10:51 -0700 Subject: [PATCH 4/8] added remove track and clear all track functionality --- playlist.html | 2 +- playlistScript.js | 54 ++++++++++++------ .../style.scssc | Bin 18234 -> 18907 bytes style/css/style.css | 3 + style/css/style.css.map | 2 +- style/scss/style.scss | 4 ++ 6 files changed, 46 insertions(+), 19 deletions(-) diff --git a/playlist.html b/playlist.html index c8581dc..fd8573f 100644 --- a/playlist.html +++ b/playlist.html @@ -52,7 +52,7 @@

pick an album to add its tracks to the bin

- +
- +