diff --git a/css/_materialFullCalendar.css b/css/_materialFullCalendar.css index 8a91f6ef..3f5ef991 100644 --- a/css/_materialFullCalendar.css +++ b/css/_materialFullCalendar.css @@ -114,6 +114,57 @@ Colors: Use the following - https://www.google.com/design/spec/style/color.html# /* Material design button */ +.matbut { + border: none; + outline: none; + cursor: pointer; + color: white; + margin: 10px 10px 10px 0px; + padding: 10px 10px; + border-radius: 10px; + font-size: medium; + font-style: bold; + box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.4); +} + +.matbut { + position: relative; + overflow: hidden; +} + +.matbut:after { + content: ""; + position: absolute; + top: 50%; + left: 50%; + width: 5px; + height: 5px; + background: rgba(255, 255, 255, 0.5); + opacity: 0; + border-radius: 100%; + transform: scale(1, 1) translate(-50%); + transform-origin: 50% 50%; +} + +@keyframes ripple { + 0% { + transform: scale(0, 0); + opacity: 1; + } + 20% { + transform: scale(25, 25); + opacity: 1; + } + 100% { + opacity: 0; + transform: scale(40, 40); + } +} + +.matbut:focus:not(:active)::after { + animation: ripple 1s ease-out; +} + .fc-button { display: inline-block; position: relative; @@ -171,4 +222,60 @@ Colors: Use the following - https://www.google.com/design/spec/style/color.html# .fc-state-default { box-shadow: None; +} + +.modal { + display: none; + position: fixed; + z-index: 1; + padding-top: 300px; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgb(0, 0, 0); + background-color: rgba(0, 0, 0, 0.4); +} + +.modal-content { + background-color: #fefefe; + margin: auto; + max-height: 85%; + overflow-y: auto; + padding: 20px; + border: 1px solid #888; + width: 20%; +} + +/* The Close Button */ + +.close { + color: #aaaaaa; + float: right; + padding: 5px; + font-size: 28px; + font-weight: bold; +} + +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; +} + +.card { + transition: 0.3s; + margin-bottom: 10px; + box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); +} + +.card:hover { + box-shadow: 0 4px 10px 0 rgba(0, 0, 0, 0.2), 0 4px 20px 0 rgba(0, 0, 0, 0.19); +} + +.cardcontainer { + padding: 2px 16px; + display: flex; + transition: width 300ms ease-in-out, height 300ms ease-in-out; } \ No newline at end of file diff --git a/js/calendar.js b/js/calendar.js index a4b0cef8..b2ed4b5a 100644 --- a/js/calendar.js +++ b/js/calendar.js @@ -11,12 +11,16 @@ $(function () { ["TH", "Thursday"], ["F", "Friday"] ]); - + const fadetime = 150; + const butdelay = 75; + $("#calendar").prepend(''); // Counter to iterate through material colors to avoid duplicates var colorCounter = 0; // Each schedule needs to store 'TITLE - START TIME - END TIME - COLOR' var classSchedules = []; var savedCourses = []; + var currLink = ""; + var currunique = ""; chrome.storage.sync.get("savedCourses", function (data) { // Iterate through each saved course and add to 'event' savedCourses = data.savedCourses; @@ -48,16 +52,43 @@ $(function () { $(element).css("margin-bottom", "5px"); }, - eventClick: function (calEvent, jsEvent, view) { - console.log(calEvent); - // $(this).css('background-color', 'green'); - alert('Event: ' + savedCourses[0].coursename); - // change the border color just for fun + eventClick: function (data, event, view) { + $("#myModal").fadeIn(fadetime); + currunique = data.unique; + currLink = data.courseLink; + $("#unique").text(`Unique : ${data.unique}`); + // When the user clicks on (x), close the modal + + } }); }); + + $(".close").click(() => { + $("#myModal").fadeOut(fadetime); + }); + $("#info").click(() => { + setTimeout(() => { + window.open(currLink); + }, butdelay); + }); + /*Close Modal when hit escape*/ + $(document).keydown((e) => { + if (e.keyCode == 27) { + $("#myModal").fadeOut(fadetime); + } + $("#snackbar").attr("class", ""); + }); + // When the user clicks anywhere outside of the modal, close it + window.onclick = (event) => { + var modal = document.getElementById("myModal"); + if (event.target == modal) { + $("#myModal").fadeOut(fadetime); + } + } + // Iterate through each saved course and add to 'event' function setAllEvents(savedCourses) { colorCounter = 0; @@ -68,17 +99,18 @@ $(function () { var course_nbr = classInfo.coursename.substring(classInfo.coursename.search(/\d/), classInfo.coursename.indexOf(" ", classInfo.coursename.search(/\d/))); var uncapProf = classInfo.profname; uncapProf = uncapProf.charAt(0) + uncapProf.substring(1).toLowerCase(); - + var uniquenum = classInfo.unique; + var link = classInfo.link; for (let j = 0; j < classInfo.datetimearr.length; j++) { let session = classInfo.datetimearr[j]; // One single session for a class - setEventForSection(session, colorCounter, department, course_nbr, uncapProf); + setEventForSection(session, colorCounter, department, course_nbr, uncapProf, uniquenum, link); } colorCounter++; } } //create the event object for every section - function setEventForSection(session, colorCounter, department, course_nbr, uncapProf) { + function setEventForSection(session, colorCounter, department, course_nbr, uncapProf, uniquenum, link) { var fullday = days.get(session[0]); classSchedules.push({ title: `${department}-${course_nbr} with ${uncapProf}`, @@ -99,6 +131,8 @@ $(function () { session[1][1] + ":00", color: materialColors[colorCounter], + unique: uniquenum, + courseLink: link, allday: false }); } diff --git a/js/content.js b/js/content.js index c809cb9c..096feb33 100644 --- a/js/content.js +++ b/js/content.js @@ -21,7 +21,7 @@ const days = new Map([ ["F", "Friday"] ]); const fadetime = 150; -const butdelay = 100; +const butdelay = 75; //This extension may be super lit, but you know what's even more lit? //Matthew Tran's twitter and insta: @MATTHEWTRANN and @matthew.trann $(function () {