diff --git a/hourglass/.meteor/packages b/hourglass/.meteor/packages
index 1f20f56..166d07e 100644
--- a/hourglass/.meteor/packages
+++ b/hourglass/.meteor/packages
@@ -28,7 +28,6 @@ mizzao:autocomplete
alanning:roles
rzymek:fullcalendar
momentjs:moment
-eternicode:bootstrap-datepicker
shell-server@0.2.1
http@1.2.9_1
underscore@1.0.9
@@ -41,7 +40,8 @@ aldeed:collection2
dburles:collection-helpers
yogiben:admin-edit
mfactory:admin-lte
-mrt:jquery-ui
standard-minifier-css@1.2.0_1
rochal:slimscroll
meteorhacks:sikka
+mrt:jquery-ui
+rajit:bootstrap3-datepicker
diff --git a/hourglass/.meteor/versions b/hourglass/.meteor/versions
index 9ca9c50..59cd3ce 100644
--- a/hourglass/.meteor/versions
+++ b/hourglass/.meteor/versions
@@ -41,7 +41,6 @@ ecmascript-runtime@0.3.14_1
ejson@1.0.12
email@1.0.16
es5-shim@4.6.14_1
-eternicode:bootstrap-datepicker@1.6.0_3
fastclick@1.0.12
fortawesome:fontawesome@4.5.0
geojson-utils@1.0.9
@@ -98,6 +97,7 @@ pfafman:filesaver@1.3.2
promise@0.8.7
proyk:meteor-cookies@0.0.1
raix:handlebar-helpers@0.2.5
+rajit:bootstrap3-datepicker@1.5.1
random@1.0.10
rate-limit@1.0.5
reactive-dict@1.1.8
diff --git a/hourglass/client/main/main.css b/hourglass/client/main/main.css
index e900539..32d5db0 100644
--- a/hourglass/client/main/main.css
+++ b/hourglass/client/main/main.css
@@ -166,7 +166,7 @@ a
resize: none;
}
-.fa-bars, .fa-cog {
+.fa-bars, .fa-cog, .fa-question {
font-size: 3.5vh;
width: 6vh;
height: calc(6vh - 1px);
@@ -185,7 +185,7 @@ a
transition: color 0.5s ease, background-color 0.5s ease;
}
-.fa-bars:hover, .fa-cog:hover {
+.fa-bars:hover, .fa-cog:hover, .fa-question:hover {
background-color: rgba(0,0,0,0.2);
}
@@ -253,6 +253,7 @@ a
}
.menuWrapper {
+ height: 94vh;
display: none;
}
@@ -337,6 +338,10 @@ a
overflow-y: auto;
}
+#classFilterHolder {
+ width: 100%;
+}
+
.sideClass, .sideFilter {
width: 100%;
@@ -394,6 +399,10 @@ a
white-space: nowrap;
}
+#filterWrapper {
+ width: 100%;
+}
+
#filterHead, #filterWrapper .sectionTitle {
font-weight: 200;
padding: 0;
@@ -418,7 +427,6 @@ a
}
#filterHead .fa, #filterWrapper .sectionTitle .fa {
- font-size: 120%;
padding: 5%;
float: right;
display: inline-block;
@@ -676,6 +684,10 @@ textarea.clickModify {
position: relative;
}
+.prefWrapper {
+ position: relative;
+}
+
.prefText {
padding: 4%;
background-color: rgba(255,255,255,0.15);
@@ -1404,83 +1416,36 @@ textarea.clickModify {
display: inline-block;
}
-#requests {
- width: 300px;
- height: 170px;
- padding: 30px;
+#requestDesc {
+ font-size: 1.8vh;
+ margin-left: 5%;
+ width: 90%;
- border-top: 5px solid #852E6D;
- box-shadow: -2px 0px 5px 1px #444;
-
- position: absolute;
- right: 5vw;
- bottom: 0;
-
- z-index: 30;
-
- -webkit-transition: bottom 0.4s ease;
- -moz-transition: bottom 0.4s ease;
- -ms-transition: bottom 0.4s ease;
- transition: bottom 0.4s ease;
-}
-
-#requestTab {
- width: 70px;
- height: 50px;
-
- border-top: 5px solid #852E6D;
- box-shadow: -2px -4px 5px 0px #444;
-
- position: absolute;
- right: 0;
- top: -55px;
-
- cursor: pointer;
- z-index: 15;
-}
-
-.fa-question {
- font-size: 36px;
- width: 50px;
- padding: 5px 10px 1px 10px;
text-align: center;
-
- -webkit-transition: background-color 0.4s ease;
- -moz-transition: background-color 0.4s ease;
- -ms-transition: background-color 0.4s ease;
- transition: background-color 0.4s ease;
}
-.fa-question:hover {
- background-color: rgba(0,0,0,0.1);
+#requestArea {
+ font-size: 1.8vh;
+ width: 85%;
+ height: 35%;
+ margin-left: calc(7.5% - 6px);
+ margin-bottom: 5px;
+
+ outline: none;
}
-#requests p {
- font-size: 80%;
- font-weight: 400;
- margin: 0;
- margin-bottom: 1vh;
-}
-
-#requests textarea {
- width: 96%;
- height: 100px;
- margin-bottom: 10px;
-}
-
-#requestCont{
- width: 100%;
+#requestRes {
+ margin-left: 7.5%;
}
#requestSubmit {
font-weight: 200;
- font-size: 20px;
- margin-right: 2%;
- padding: 2%;
+ font-size: 2vh;
+ width: 80%;
+ margin: 5px auto 0 auto;
+ padding: 3%;
background-color: rgba(0,0,0,0.25);
- float: right;
-
text-align: center;
cursor: pointer;
@@ -1494,6 +1459,10 @@ textarea.clickModify {
background-color: rgba(0,0,0,0.15);
}
+#requestSubmit span {
+ margin-right: 5%;
+}
+
.scaled {
-webkit-transform: scale(1.12);
-ms-transform: scale(1.12);
diff --git a/hourglass/client/main/main.html b/hourglass/client/main/main.html
index e00c5b2..6672e99 100644
--- a/hourglass/client/main/main.html
+++ b/hourglass/client/main/main.html
@@ -11,125 +11,19 @@
@@ -254,19 +148,120 @@
+ {{> loginButtons}}
+
+
-
-
-
+
+
+
+
+
Filters
+ {{#if filterOn}}
+ Disable All
+ {{/if}}
+
+
+
+
+
By Type
+
-
Send an help request, feature, or bug report.
-
-
-
{{restrict 'requestArea'}}
-
Send
+
+ {{#each types}}
+ {{> sideTypeFilter}}
+ {{/each}}
+
+
+
By Class
+
+
+
+ {{#each myClasses}}
+ {{> sidebarClasses}}
+ {{/each}}
- {{> loginButtons}}
+
+
+
+
Export
+
+
+
+
+ Preferences
+
+
+
Theme:
+
+ {{pref 'theme'}}
+
+
+ {{> selectOptionMenu optionName="theme"}}
+
+
+
Default Mode:
+
+ {{pref 'mode'}}
+
+
+ {{> selectOptionMenu optionName="mode"}}
+
+
+
Hide Homework:
+
+ {{pref 'timeHide'}}
+
+
+ {{> selectOptionMenu optionName="timeHide"}}
+
+
+
Hide Done:
+
+ {{pref 'done'}}
+
+
+ {{> selectOptionMenu optionName="done"}}
+
+
+
Hide Reported:
+
+ {{pref 'hideReport'}}
+
+
+ {{> selectOptionMenu optionName="hideReport"}}
+
+
+
+
+
+ Requests
+ Ask for help, submit a bug, or request a feature! We won't bite.
+
+ {{restrict 'requestArea'}}
+ .
+
+ Send
+ Request sent!
+
@@ -368,7 +363,7 @@
Description:
- {{work 'description'}}
+ {{work 'description'}}
Type:
@@ -421,3 +416,11 @@
-->
+
+
+
+ {{#each selectOptions optionName}}
+ {{> option}}
+ {{/each}}
+
+
diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js
index 924a025..0f4cf20 100644
--- a/hourglass/client/main/main.js
+++ b/hourglass/client/main/main.js
@@ -9,9 +9,11 @@ var load = true;
var calWorkOpen = null;
var calWorkDate = null;
modifyingInput = null;
-dropOpen = null;
+var clickDisabled = false;
var filterOpen = [false,true,true];
var sidebarMode = [null,null];
+var optionOpen = false;
+
var openValues = {
"requests": "-235px"
@@ -37,7 +39,7 @@ var defaultWork = {
Session.set("user", {}); // Stores user preferences.
Session.set("calendarClasses", []); // Stores calendar classes.
Session.set("requests", false); // Status of requests.
-Session.set("sidebarMode", [null,null]); // Status of sidebars.
+Session.set("sidebarMode", ""); // Status of sidebars.
Session.set("newWork", null); // If user creating new work.
Session.set("currentWork",null); // Current stored work.
Session.set("noclass", null); // If user does not have classes.
@@ -57,26 +59,21 @@ Template.login.rendered = function() {
Template.main.rendered = function() {
Accounts._loginButtonsSession.set('dropdownVisible', true);
setTimeout(startDragula, 300);
- $(".optionText").hover(
- function() {
- $(this).addClass("selectedOption");
- },
- function() {
- $(this).removeClass("selectedOption");
- }
- );
$("#menuContainer").toggle();
- $("#classListHolder").slimScroll({
+ /*$("#classListHolder").slimScroll({
height: '30vh',
size: '5px',
railVisible: true,
railColor: '#222',
railOpacity: 0.1,
- });
+ });*/
};
Template.profile.rendered = function() {
Accounts._loginButtonsSession.set('dropdownVisible', true);
+};
+
+Template.selectOptionMenu.rendered = function() {
$(".optionText").hover(
function() {
$(this).addClass("selectedOption");
@@ -84,8 +81,26 @@ Template.profile.rendered = function() {
function() {
$(this).removeClass("selectedOption");
}
- );
-};
+ );
+}
+
+Template.sidebarMenuPlate.rendered = function() {
+ $(".menuWrapper").slideDown(300);
+}
+
+Template.sidebarMenuPlate.helpers({
+ modeStatus(status) { // Color status of display modes.
+ return (Session.equals("mode", status)) ? Session.get("user").preferences.theme.modeHighlight : "rgba(0,0,0,0)";
+ }
+});
+
+Template.sidebarOptionPlate.rendered = function() {
+ $(".menuWrapper").slideDown(300);
+}
+
+Template.sidebarRequestPlate.rendered = function() {
+ $(".menuWrapper").slideDown(300);
+}
Template.registerHelper('adminPage', () => {
return window.location.pathname.includes("/");
@@ -259,6 +274,7 @@ Template.registerHelper('selectOptions', (val) => {
var year = (new Date()).getFullYear() + i;
grade.push( { "val": year, "alias": year.toString() } );
}
+ grade.push( { "val": 0, "alias": "Faculty" } );
return grade;
} else if(val === "school") {
var school = [];
@@ -314,15 +330,15 @@ Template.main.helpers({
},
iconStatus(icon) {
var sidebar = Session.get("sidebarMode");
- return (sidebar[0] === icon && sidebar[1]) ? Session.get("user").preferences.theme.iconHighlight + ";background-color:rgba(0,0,0,0.2)" : "";
+ return (sidebar === icon) ? Session.get("user").preferences.theme.iconHighlight + ";background-color:rgba(0,0,0,0.2)" : "";
+ },
+ sidebarStatus(sidebar) {
+ return sidebar === Session.get("sidebarMode");
},
requestStatus() {
if (Session.get("requests")) return "0px";
return openValues.requests;
},
- modeStatus(status) { // Color status of display modes.
- return (Session.equals("mode", status)) ? Session.get("user").preferences.theme.modeHighlight : "rgba(0,0,0,0)";
- },
currMode(name) { // Status of display mode.
return Session.equals("mode", name);
},
@@ -484,6 +500,7 @@ Template.main.events({
if (!(e.includes("optionHolder") || e.includes("optionText"))) {
if(document.getElementById(modifyingInput).className.includes("dropdown")) {
$(".optionHolder").fadeOut(100);
+ optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption");
} else {
@@ -495,58 +512,37 @@ Template.main.events({
if (!e.includes("fa-cog") && // Sidebar closing.
!e.includes("fa-bars") &&
+ !e.includes("fa-question") &&
!document.getElementById("menuContainer").contains(event.target) &&
!document.getElementById("menuBar").contains(event.target)) {
if (Session.get("calCreWork")) {
if (!calWorkOpen) {
Session.set("calCreWork", false);
- Session.set("sidebar", null);
}
calWorkOpen = false;
} else {
- Session.set("sidebarMode", Session.get("sidebarMode")[0], false);
- toggleSidebar(false);
- Session.set("sidebarMode", [null,null]);
+ toggleToSidebar(false);
}
}
if (e === "overlay") { // Overlay closing.
closeDivFade(document.getElementsByClassName("overlay")[0]);
- Session.set("newWork",false);
if (!Session.get("newWork")) {
document.getElementById("workComment").value = "";
}
}
if (!document.getElementById("userDropdown").contains(event.target)) closeDivFade(document.getElementById("userDropdown"));
- if (!document.getElementById("requests").contains(event.target)) Session.set("requests", false);
},
// MAIN MENU BUTTONS
'click .fa-bars' (event) { // Click menu button.
- var sidebar = Session.get("sidebarMode");
- if(sidebar[0] === "menu" && sidebar[1]) {
- Session.set("sidebarMode", ["menu",false]);
- toggleSidebar(false);
- } else {
- Session.set("sidebarMode", ["menu",true]);
-
- $(".menuWrapper.option").fadeOut(200);
- toggleSidebar(true);
- $(".menuWrapper.menu").slideDown(350);
- }
+ toggleToSidebar("menu");
},
'click .fa-cog' (event) { // Click settings button.
- var sidebar = Session.get("sidebarMode");
- if(sidebar[0] === "option" && sidebar[1]) {
- Session.set("sidebarMode", ["option",false]);
- toggleSidebar(false);
- } else {
- Session.set("sidebarMode", ["option",true]);
-
- $(".menuWrapper.menu").slideUp(200);
- toggleSidebar(true);
- $(".menuWrapper.option").slideDown(350);
- }
+ toggleToSidebar("option");
+ },
+ 'click .fa-question' (event) {
+ toggleToSidebar("requests");
},
'click #filterHead' (event) {
if(event.target.id === "disableFilter") return;
@@ -586,7 +582,7 @@ Template.main.events({
}, 300);
setTimeout(startDragula, 500);
Session.set("sidebarMode", Session.get("sidebarMode")[0], false); // Closes all sidebars.
- toggleSidebar(false);
+ toggleToSidebar(false);
Session.set("sidebarMode", [null,null]);
Session.set("calCreWork", null);
},
@@ -599,7 +595,7 @@ Template.main.events({
openDivFade(modeHolder);
}, 300);
Session.set("sidebarMode", Session.get("sidebarMode")[0], false); // Closes all sidebars.
- toggleSidebar(false);
+ toggleToSidebar(false);
Session.set("sidebarMode", [null,null]);
Session.set("calCreWork", null);
},
@@ -653,11 +649,15 @@ Template.main.events({
"userClasses": Session.get("calendarClasses")
};
Meteor.call("createRequest", array, function(err, result) {
- area.value = "Request sent!";
+ area.value = "";
+ Session.set("restrictText", {});
+ $("#requestSubmit span:first-child").fadeOut(200, function() {
+ $("#requestSubmit span:nth-child(2)").fadeIn(200);
+ })
setTimeout(function() {
- document.getElementById("requests").style.marginBottom = "-15.5vw";
- area.value = "";
- Session.set("commentRestrict", null);
+ $("#requestSubmit span:nth-child(2)").fadeOut(200, function() {
+ $("#requestSubmit span:first-child").fadeIn(200);
+ })
}, 750);
});
},
@@ -703,7 +703,7 @@ Template.main.events({
// HANDLING INPUT CHANGING
'focus .clickModify' (event) {
$(".optionHolder")
- .fadeOut(100);
+ .fadeOut(100);
if(modifyingInput !== null) {
if(!$("#"+modifyingInput)[0].className.includes("dropdown")) closeInput(modifyingInput);
@@ -750,18 +750,18 @@ Template.main.events({
}
} else if (event.keyCode === 13) {
lastSel[0].click();
+ $("#"+modifyingInput)[0].focus();
}
},
- 'focus .dropdown' (event) {
- $(".selectedOption").removeClass("selectedOption");
-
- $("#" + modifyingInput).next()
- .css('opacity',0)
- .slideDown(300)
- .animate(
- { opacity: 1 },
- { queue: false, duration: 100 }
- );
+ 'click .dropdown, focus .dropdown' (event) {
+ if(clickDisabled) return;
+ clickDisabled = true;
+ if(event.target.id === optionOpen[0] && optionOpen[1]) {
+ toggleOptionMenu(false, event.target.id);
+ } else {
+ toggleOptionMenu(true, event.target.id);
+ }
+ setTimeout(function(){clickDisabled = false;},130); // Prevents spamming and handles extra click events.
},
'click .optionText' (event) { // Click each preferences setting.
var option = event.target.childNodes[0].nodeValue;
@@ -772,7 +772,8 @@ Template.main.events({
serverData = Session.get("currentWork");
$("#" + modifyingInput).next()
- .fadeOut(100);
+ .fadeOut(100);
+ optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption");
if(Session.get("newWork")) return;
if(checkMissing()) return;
@@ -791,7 +792,8 @@ Template.main.events({
}
$("#" + modifyingInput).next()
- .fadeOut(100);
+ .fadeOut(100);
+ optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption");
},
@@ -931,13 +933,37 @@ Template.main.events({
// Other Functions
-function toggleSidebar(open) {
- if(open) {
+function toggleToSidebar(sidebar) {
+ if(Session.get("sidebarMode") === sidebar || !sidebar) {
+ $("#menuContainer").hide("slide", {direction: "left"}, 250);
+ $("#divCenter").stop().animate({left: '6vh'}, 250, function() {
+ Session.set("sidebarMode", "");
+ });
+ } else {
$("#menuContainer").show("slide", {direction: "left"}, 250);
$("#divCenter").stop().animate({left: '36vh'}, 250);
+ $(".menuWrapper").fadeOut(200, function() {
+ Session.set("sidebarMode", sidebar);
+ });
+ }
+}
+
+function toggleOptionMenu(toggle, menu) {
+ if(toggle) {
+ $(".selectedOption").removeClass("selectedOption");
+ $("#" + menu).next()
+ .css('opacity', 0)
+ .slideDown(300)
+ .animate(
+ { opacity: 1 },
+ { queue: false, duration: 100 }
+ );
+ optionOpen = [menu, toggle];
} else {
- $("#menuContainer").hide("slide", {direction: "left"}, 250);
- $("#divCenter").stop().animate({left: '6vh'}, 250);
+ $("#" + menu).next().slideUp(100, function() {
+ $(this).css("opacity", 0);
+ });
+ optionOpen = [null, toggle];
}
}
diff --git a/hourglass/client/profile/profile.js b/hourglass/client/profile/profile.js
index dd41558..c1a6a29 100644
--- a/hourglass/client/profile/profile.js
+++ b/hourglass/client/profile/profile.js
@@ -106,7 +106,9 @@ Template.profile.helpers({
return "Click here to edit...";
},
grade() { // Returns the current user's grade
- if (Session.get("user").grade !== undefined && Session.get("user").grade !== null && Session.get("user").grade !== "") return Session.get("user").grade;
+ if (Session.get("user").grade !== undefined &&
+ Session.get("user").grade !== null &&
+ Session.get("user").grade !== "") return (Session.get("user").grade === 0) ? "Faculty" : Session.get("user").grade;
return "Click here to edit...";
},
classes() { // Loads all of the possible classes ( Limit of twenty shown ) ( Sorts by class size ) ( Only your school)