Merge branch 'master' of github.com:ksjdragon/hourglass

This commit is contained in:
Yaman Qalieh 2016-11-02 23:03:31 -04:00
commit 4a9c117814
7 changed files with 251 additions and 333 deletions

View File

@ -391,6 +391,14 @@ a
display: table-cell; display: table-cell;
} }
.sidebarDesc {
font-size: 1.8vh;
margin-left: 5%;
width: 90%;
text-align: center;
}
#classesMode { #classesMode {
height: 94vh; height: 94vh;
@ -403,7 +411,7 @@ a
width: 100%; width: 100%;
} }
#filterHead, #filterWrapper .sectionTitle { .openable {
font-weight: 200; font-weight: 200;
padding: 0; padding: 0;
@ -415,24 +423,31 @@ a
transition: background-color 0.4s ease; transition: background-color 0.4s ease;
} }
#filterHead:hover, #filterWrapper .sectionTitle:hover { .openable:hover {
background-color: rgba(255,255,255,0.2); background-color: rgba(255,255,255,0.2);
} }
#filterHead h3:first-child, #filterWrapper .sectionTitle h3:first-child { .openable h3:first-child {
font-weight: 200; font-weight: 200;
padding: 5%; padding: 5%;
display: inline-block; display: inline-block;
pointer-events: none; pointer-events: none;
} }
#filterHead .fa, #filterWrapper .sectionTitle .fa { .openable .fa {
padding: 5%; padding: 5%;
float: right; float: right;
display: inline-block; display: inline-block;
pointer-events: none; pointer-events: none;
} }
#filterHead h3:first-child, #filterWrapper .sectionTitle h3:first-child {
font-weight: 200;
padding: 5%;
display: inline-block;
pointer-events: none;
}
#disableFilter { #disableFilter {
font-weight: 200; font-weight: 200;
font-size: 90%; font-size: 90%;
@ -489,7 +504,7 @@ a
cursor: pointer; cursor: pointer;
} }
.sectionTitle.option { .sectionTitle.downOffset {
margin-top: 6vh; margin-top: 6vh;
} }
@ -1053,65 +1068,6 @@ textarea.clickModify {
display: inline-block; display: inline-block;
} }
#calCreWork {
margin-left: 0 !important;
color: #fff;
-webkit-animation: neonglow 1.5s ease-in-out infinite alternate;
-moz-animation: neonglow 1.5s ease-in-out infinite alternate;
animation: neonglow 1.5s ease-in-out infinite alternate;
}
@-webkit-keyframes neonglow {
from {
text-shadow:
0 0 10px #fff,
0 0 20px #fff,
0 0 30px #fff,
0 0 40px #228DFF,
0 0 70px #228DFF,
0 0 80px #228DFF,
0 0 100px #228DFF,
0 0 150px #228DFF;
}
to {
text-shadow:
0 0 5px #fff,
0 0 10px #fff,
0 0 15px #fff,
0 0 20px #228DFF,
0 0 35px #228DFF,
0 0 40px #228DFF,
0 0 50px #228DFF,
0 0 75px #228DFF;
}
}
@keyframes neonglow {
from {
text-shadow:
0 0 10px #fff,
0 0 20px #fff,
0 0 30px #fff,
0 0 40px #228DFF,
0 0 70px #228DFF,
0 0 80px #228DFF,
0 0 100px #228DFF,
0 0 150px #228DFF;
}
to {
text-shadow:
0 0 5px #fff,
0 0 10px #fff,
0 0 15px #fff,
0 0 20px #228DFF,
0 0 35px #228DFF,
0 0 40px #228DFF,
0 0 50px #228DFF,
0 0 75px #228DFF;
}
}
.fc-past { .fc-past {
background-color: rgba(0,0,0,0.2); background-color: rgba(0,0,0,0.2);
} }
@ -1416,14 +1372,6 @@ textarea.clickModify {
display: inline-block; display: inline-block;
} }
#requestDesc {
font-size: 1.8vh;
margin-left: 5%;
width: 90%;
text-align: center;
}
#requestArea { #requestArea {
font-size: 1.8vh; font-size: 1.8vh;
width: 85%; width: 85%;

View File

@ -24,11 +24,14 @@
{{#if sidebarStatus 'requests'}} {{#if sidebarStatus 'requests'}}
{{> sidebarRequestPlate}} {{> sidebarRequestPlate}}
{{/if}} {{/if}}
{{#if sidebarStatus 'create'}}
{{> sidebarCreatePlate}}
{{/if}}
</div> </div>
</div> </div>
</div> </div>
<div id="divCenter"> <div id="divCenter">
<header id="mainHeader" style="background-color:{{divColor 'mainColor'}}{{textColor}}{{defaultMode}}{{refetchEvents}}"> <header id="mainHeader" style="background-color:{{divColor 'mainColor'}}{{refetchEvents}}">
<h1>Hourglass</h1><h2>{{schoolName}}</h2> <h1>Hourglass</h1><h2>{{schoolName}}</h2>
<div id="dropdown"> <div id="dropdown">
<img src="{{avatar}}"> <img src="{{avatar}}">
@ -152,124 +155,9 @@
</div> </div>
</template> </template>
<template name="sidebarMenuPlate">
<div id="modes">
<h3 class="sectionTitle">Main</h3>
<div class="mode classes">
<div class="status" style="background-color:{{modeStatus 'classes'}}"></div>
<i class="fa fa-university" aria-hidden="true"></i>
<h4>Classes</h4>
</div>
<div class="mode calendar">
<div class="status" style="background-color:{{modeStatus 'calendar'}}"></div>
<i class="fa fa-calendar" aria-hidden="true"></i>
<h4>Calendar</h4>
</div>
<div class="mode manageClass" onclick="window.location='/profile'">
<div class="status"></div>
<i class="fa fa-tasks" aria-hidden="true"></i>
<h4>Manage Classes</h4>
</div>
</div>
<div id="filters">
<div id="filterHead" class="sectionTitle">
<h3>Filters</h3>
{{#if filterOn}}
<h3 id="disableFilter">Disable All</h3>
{{/if}}
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="filterWrapper">
<div id="typeFilterWrapper" class="sectionTitle">
<h3>By Type</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="classFilterHolder">
{{#each types}}
{{> sideTypeFilter}}
{{/each}}
</div>
<div id="classFilterWrapper" class="sectionTitle">
<h3>By Class</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="classListHolder">
{{#each myClasses}}
{{> sidebarClasses}}
{{/each}}
</div>
</div>
</div>
<div id="exportDiv" class="mode">
<i class="fa fa-download" aria-hidden="true"></i>
<h4>Export</h4>
</div>
</template>
<template name="sidebarOptionPlate">
<h3 class="sectionTitle option">Preferences</h3>
<div id="prefCont">
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Theme:</h3>
<div id="theme" class="clickModify dropdown" tabindex="1">
<span>{{pref 'theme'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="theme"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Default Mode:</h3>
<div id="mode" class="clickModify dropdown" tabindex="2">
<span>{{pref 'mode'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="mode"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Homework:</h3>
<div id="timeHide" class="clickModify dropdown" tabindex="3">
<span>{{pref 'timeHide'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="timeHide"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Done:</h3>
<div id="done" class="clickModify dropdown" tabindex="4">
<span>{{pref 'done'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="done"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Reported:</h3>
<div id="hideReport" class="clickModify dropdown" tabindex="5">
<span>{{pref 'hideReport'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="hideReport"}}
</div>
</div>
</template>
<template name="sidebarRequestPlate">
<h3 class="sectionTitle option">Requests</h3>
<p id="requestDesc">Ask for help, submit a bug, or request a feature! We won't bite.</p>
<textarea id="requestArea" class="restrict" rows="4" cols="50" maxlength="500" placeholder="Enter request here..."></textarea><br>
<span id="requestRes" class="resText">{{restrict 'requestArea'}}</span>
<span style="opacity:0">.</span>
<div id="requestSubmit">
<span>Send</span>
<span style="display:none">Request sent!</span>
<i class="fa fa-paper-plane" aria-hidden="true"></i>
</div>
</template>
<template name="sidebarClasses"> <template name="sidebarClasses">
<div class="sideClass" classid="{{_id}}"> <div class="sideClass" classid="{{_id}}">
{{#unless calCreWork}} <div class="status" style="background-color:{{selected}}"></div>
<div class="status" style="background-color:{{selected}}"></div>
{{/unless}}
<span class="sideClassName">{{name}}</span> <span class="sideClassName">{{name}}</span>
<span class="sideClassHour">{{hour}}</span> <span class="sideClassHour">{{hour}}</span>
</div> </div>

View File

@ -10,24 +10,8 @@ var calWorkOpen = null;
var calWorkDate = null; var calWorkDate = null;
modifyingInput = null; modifyingInput = null;
var clickDisabled = false; var clickDisabled = false;
var filterOpen = [false,true,true];
var sidebarMode = [null,null];
var optionOpen = false; var optionOpen = false;
var openValues = {
"requests": "-235px"
};
// Sets colors for different assignment statuses
var workColors = {
"normal": "#2E4F74",
"quiz": "#409333",
"test": "#AD3C44",
"project": "#D8831A",
"other": "#852E6D"
};
var defaultWork = { var defaultWork = {
name: "Name | Click here to edit...", name: "Name | Click here to edit...",
dueDate: "Click here to edit...", dueDate: "Click here to edit...",
@ -42,8 +26,6 @@ Session.set("requests", false); // Status of requests.
Session.set("sidebarMode", ""); // Status of sidebars. Session.set("sidebarMode", ""); // Status of sidebars.
Session.set("newWork", null); // If user creating new work. Session.set("newWork", null); // If user creating new work.
Session.set("currentWork",null); // Current stored work. Session.set("currentWork",null); // Current stored work.
Session.set("noclass", null); // If user does not have classes.
Session.set("calCreWork", null); // If user is creating a work from calendar.
Session.set("classDisp", []); // Stores current filter for classes. Session.set("classDisp", []); // Stores current filter for classes.
Session.set("typeFilter", []); // Stores type filters for classes. Session.set("typeFilter", []); // Stores type filters for classes.
Session.set("typeFilterHover", null); // Stores current hovered type filter. Session.set("typeFilterHover", null); // Stores current hovered type filter.
@ -51,11 +33,16 @@ Session.set("classDispHover", null); // Stores current hovered class filter.
Session.set("refetchEvents", null); // Stores whether to get calendar events again. Session.set("refetchEvents", null); // Stores whether to get calendar events again.
Session.set("restrictText", {}); // Stores text for comment character restriction. Session.set("restrictText", {}); // Stores text for comment character restriction.
// On render actions
Template.login.rendered = function() { Template.login.rendered = function() {
Accounts._loginButtonsSession.set('dropdownVisible', true); Accounts._loginButtonsSession.set('dropdownVisible', true);
}; };
Template.main.created = function() {
Session.set("mode", Session.get("user").preferences.mode);
}
Template.main.rendered = function() { Template.main.rendered = function() {
Accounts._loginButtonsSession.set('dropdownVisible', true); Accounts._loginButtonsSession.set('dropdownVisible', true);
setTimeout(startDragula, 300); setTimeout(startDragula, 300);
@ -67,10 +54,12 @@ Template.main.rendered = function() {
railColor: '#222', railColor: '#222',
railOpacity: 0.1, railOpacity: 0.1,
});*/ });*/
document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor;
}; };
Template.profile.rendered = function() { Template.profile.rendered = function() {
Accounts._loginButtonsSession.set('dropdownVisible', true); Accounts._loginButtonsSession.set('dropdownVisible', true);
document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor;
}; };
Template.selectOptionMenu.rendered = function() { Template.selectOptionMenu.rendered = function() {
@ -84,23 +73,7 @@ Template.selectOptionMenu.rendered = function() {
); );
} }
Template.sidebarMenuPlate.rendered = function() { // Global Helpers
$(".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', () => { Template.registerHelper('adminPage', () => {
return window.location.pathname.includes("/"); return window.location.pathname.includes("/");
@ -116,11 +89,6 @@ Template.registerHelper('divColor', (div) => { // Reactive color changing based
return Session.get("user").preferences.theme[div]; return Session.get("user").preferences.theme[div];
}); });
Template.registerHelper('textColor', () => { // Reactive color for text.
document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor;
return;
});
Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay container. Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay container.
var dim = [window.innerWidth * 0.25, window.innerHeight * 0.2]; var dim = [window.innerWidth * 0.25, window.innerHeight * 0.2];
var width = "width:" + dim[0].toString() + "px;"; var width = "width:" + dim[0].toString() + "px;";
@ -132,7 +100,6 @@ Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay co
Template.registerHelper('myClasses', () => { // Gets all classes and respective works. Template.registerHelper('myClasses', () => { // Gets all classes and respective works.
if (Session.get("user").classes.length === 0) { // Null checking. if (Session.get("user").classes.length === 0) { // Null checking.
Session.set("noclass", true); // Makes sure to display nothing.
return []; return [];
} else { } else {
var array = []; var array = [];
@ -245,7 +212,6 @@ Template.registerHelper('myClasses', () => { // Gets all classes and respective
return Date.parse(a.realDate) - Date.parse(b.realDate); return Date.parse(a.realDate) - Date.parse(b.realDate);
}); });
} }
Session.set("noclass", false);
Session.set("calendarClasses", array); Session.set("calendarClasses", array);
Session.set("refetchEvents", refetch); Session.set("refetchEvents", refetch);
return array; return array;
@ -298,6 +264,8 @@ Template.registerHelper('work', (value) => {// Returns the specified work value.
} }
}); });
// Main template helpers and events
Template.main.helpers({ Template.main.helpers({
/*themeName() { /*themeName() {
var vals = _.values(themeColors); var vals = _.values(themeColors);
@ -320,11 +288,6 @@ Template.main.helpers({
username() { // Returns user name. username() { // Returns user name.
return Session.get("user").name; return Session.get("user").name;
}, },
defaultMode() { //Loads the default display mode for user.
if (load) Session.set("mode", Session.get("user").preferences.mode);
load = false;
return;
},
bgSrc() { // Returns background. bgSrc() { // Returns background.
return "Backgrounds/" + Session.get("user").preferences.theme.background; return "Backgrounds/" + Session.get("user").preferences.theme.background;
}, },
@ -410,12 +373,12 @@ Template.main.helpers({
this.style.boxShadow = ""; this.style.boxShadow = "";
}, },
dayClick: function(date, jsEvent, view) { // On-click for each day. dayClick: function(date, jsEvent, view) { // On-click for each day.
if (jsEvent.target.className.includes("fc-past") || Session.get("noclass")) return; if (jsEvent.target.className.includes("fc-past")) return;
Session.set("calCreWork", true); var realDate = date.format();
calWorkDate = date.format(); realDate = new Date(realDate[0], parseInt(realDate[1]) - 1, realDate[2], 11, 59, 59);
calWorkOpen = true;
Session.set("newWork", true); Session.set("newWork", true);
Session.set("sidebar", "menuContainer"); Session.set("currentWork", {dueDate: realDate});
if(!Session.equals("sidebarMode", "create")) toggleToSidebar("create");
} }
}; };
}, },
@ -423,9 +386,6 @@ Template.main.helpers({
var width = window.innerWidth * 0.85; var width = window.innerWidth * 0.85;
return "width:" + width.toString() + "px;margin-left:" + (0.5 * window.innerWidth - 0.5 * width).toString() + "px;"; return "width:" + width.toString() + "px;margin-left:" + (0.5 * window.innerWidth - 0.5 * width).toString() + "px;";
}, },
calCreWork() { // Display instructions for creating a work.
return Session.get("calCreWork");
},
filterOn() { filterOn() {
return Session.get("classDisp").length !== 0 || Session.get("typeFilter").length !== 0; return Session.get("classDisp").length !== 0 || Session.get("typeFilter").length !== 0;
}, },
@ -450,18 +410,6 @@ Template.main.helpers({
newWork() { // If user is creating a new work. newWork() { // If user is creating a new work.
return Session.get("newWork"); return Session.get("newWork");
}, },
types() {
var types = Object.keys(workColors);
var array = [];
for (var i = 0; i < types.length; i++) {
array.push({
"type": types[i],
"typeName": types[i][0].toUpperCase() + types[i].slice(1),
"selected": (_.contains(Session.get("typeFilter"), types[i])) ? Session.get("user").preferences.theme.modeHighlight : "rgba(0,0,0,0)"
});
}
return array;
},
inRole() { // Checks correct permissions. inRole() { // Checks correct permissions.
if(Session.equals("currentWork",null)) return; if(Session.equals("currentWork",null)) return;
var thisWork = work.findOne({ var thisWork = work.findOne({
@ -499,10 +447,7 @@ Template.main.events({
if(modifyingInput !== null && event.target !== document.getElementById(modifyingInput)) { if(modifyingInput !== null && event.target !== document.getElementById(modifyingInput)) {
if (!(e.includes("optionHolder") || e.includes("optionText"))) { if (!(e.includes("optionHolder") || e.includes("optionText"))) {
if(document.getElementById(modifyingInput).className.includes("dropdown")) { if(document.getElementById(modifyingInput).className.includes("dropdown")) {
$(".optionHolder").fadeOut(100); toggleOptionMenu(false, modifyingInput);
optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption");
} else { } else {
closeInput(modifyingInput); closeInput(modifyingInput);
} }
@ -515,14 +460,10 @@ Template.main.events({
!e.includes("fa-question") && !e.includes("fa-question") &&
!document.getElementById("menuContainer").contains(event.target) && !document.getElementById("menuContainer").contains(event.target) &&
!document.getElementById("menuBar").contains(event.target)) { !document.getElementById("menuBar").contains(event.target)) {
if (Session.get("calCreWork")) { if(!(e.includes("fc-day") && !e.includes("fc-past"))) {
if (!calWorkOpen) { toggleToSidebar(false);
Session.set("calCreWork", false);
} }
calWorkOpen = false;
} else {
toggleToSidebar(false);
}
} }
if (e === "overlay") { // Overlay closing. if (e === "overlay") { // Overlay closing.
@ -541,63 +482,19 @@ Template.main.events({
'click .fa-cog' (event) { // Click settings button. 'click .fa-cog' (event) { // Click settings button.
toggleToSidebar("option"); toggleToSidebar("option");
}, },
'click .fa-question' (event) { 'click .fa-question' (event) { // Click requests button.
toggleToSidebar("requests"); toggleToSidebar("requests");
}, },
'click #filterHead' (event) {
if(event.target.id === "disableFilter") return;
if(!filterOpen[0]) {
$("#filterWrapper").slideDown(300);
} else {
$("#filterWrapper").slideUp(300);
}
filterOpen[0] = !filterOpen[0];
},
'click #typeFilterWrapper' () {
if(!filterOpen[1]) {
$("#classFilterHolder").slideDown(300);
} else {
$("#classFilterHolder").slideUp(300);
}
filterOpen[1] = !filterOpen[1];
},
'click #classFilterWrapper' () {
if(!filterOpen[2]) {
$("#classListHolder").slideDown(300);
} else {
$("#classListHolder").slideUp(300);
}
filterOpen[2] = !filterOpen[2];
},
'click #requests .fa-question' () {
Session.set("requests", !Session.get("requests"));
},
'click .classes' () { // Click classes mode button. 'click .classes' () { // Click classes mode button.
if (Session.equals("mode", "classes")) return; if (Session.equals("mode", "classes")) return;
var modeHolder = document.getElementById("mainBody"); toggleToMode("classes")
closeDivFade(modeHolder);
setTimeout(function() {
Session.set("mode", "classes");
openDivFade(modeHolder);
}, 300);
setTimeout(startDragula, 500); setTimeout(startDragula, 500);
Session.set("sidebarMode", Session.get("sidebarMode")[0], false); // Closes all sidebars.
toggleToSidebar(false); toggleToSidebar(false);
Session.set("sidebarMode", [null,null]);
Session.set("calCreWork", null);
}, },
'click .calendar' () { // Click calendar mode button. 'click .calendar' () { // Click calendar mode button.
if (Session.equals("mode", "calendar")) return; if (Session.equals("mode", "calendar")) return;
var modeHolder = document.getElementById("mainBody"); toggleToMode("calendar");
closeDivFade(modeHolder);
setTimeout(function() {
Session.set("mode", "calendar");
openDivFade(modeHolder);
}, 300);
Session.set("sidebarMode", Session.get("sidebarMode")[0], false); // Closes all sidebars.
toggleToSidebar(false); toggleToSidebar(false);
Session.set("sidebarMode", [null,null]);
Session.set("calCreWork", null);
}, },
'click .creWork' (event) { // Cick add work button. 'click .creWork' (event) { // Cick add work button.
var attr; var attr;
@ -658,7 +555,7 @@ Template.main.events({
$("#requestSubmit span:nth-child(2)").fadeOut(200, function() { $("#requestSubmit span:nth-child(2)").fadeOut(200, function() {
$("#requestSubmit span:first-child").fadeIn(200); $("#requestSubmit span:first-child").fadeIn(200);
}) })
}, 750); }, 1250);
}); });
}, },
'click #exportDiv' (event) { 'click #exportDiv' (event) {
@ -771,10 +668,7 @@ Template.main.events({
Session.set("currentWork", newSetting); Session.set("currentWork", newSetting);
serverData = Session.get("currentWork"); serverData = Session.get("currentWork");
$("#" + modifyingInput).next() toggleOptionMenu(false, modifyingInput);
.fadeOut(100);
optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption");
if(Session.get("newWork")) return; if(Session.get("newWork")) return;
if(checkMissing()) return; if(checkMissing()) return;
sendData("editWork"); sendData("editWork");
@ -791,9 +685,7 @@ Template.main.events({
sendData("editProfile"); sendData("editProfile");
} }
$("#" + modifyingInput).next() toggleOptionMenu(false, modifyingInput);
.fadeOut(100);
optionOpen = [null,false];
$(".selectedOption").removeClass("selectedOption"); $(".selectedOption").removeClass("selectedOption");
}, },
@ -857,14 +749,10 @@ Template.main.events({
while (div.getAttribute("classid") === null) div = div.parentNode; while (div.getAttribute("classid") === null) div = div.parentNode;
var classid = div.getAttribute("classid"); var classid = div.getAttribute("classid");
if (Session.get("calCreWork")) { // If creating work from calendar. if (Session.equals("sidebarMode","create")) { // If creating work from calendar.
Session.get("calCreWork", null); var newSetting = Session.get("currentWork");
Session.set("sidebar", null); newSetting.class = classid;
Session.set("currentWork", newSetting);
var date = calWorkDate.split("-");
date = new Date(date[0], parseInt(date[1]) - 1, date[2], 11, 59, 59);
Session.set("newWork", true);
Session.set("currentWork", {class: classid, dueDate: date});
openDivFade(document.getElementsByClassName("overlay")[0]); openDivFade(document.getElementsByClassName("overlay")[0]);
} else { // Normal clicking turns on filter. } else { // Normal clicking turns on filter.
var array = Session.get("classDisp"); var array = Session.get("classDisp");
@ -934,7 +822,7 @@ Template.main.events({
// Other Functions // Other Functions
function toggleToSidebar(sidebar) { function toggleToSidebar(sidebar) {
if(Session.get("sidebarMode") === sidebar || !sidebar) { if(Session.equals("sidebarMode", sidebar) || !sidebar) {
$("#menuContainer").hide("slide", {direction: "left"}, 250); $("#menuContainer").hide("slide", {direction: "left"}, 250);
$("#divCenter").stop().animate({left: '6vh'}, 250, function() { $("#divCenter").stop().animate({left: '6vh'}, 250, function() {
Session.set("sidebarMode", ""); Session.set("sidebarMode", "");
@ -967,6 +855,13 @@ function toggleOptionMenu(toggle, menu) {
} }
} }
function toggleToMode(mode) {
$("#mainBody").fadeOut(250, function() {
Session.set("mode",mode);
$("#mainBody").fadeIn(250);
});
}
function openDivFade(div) { function openDivFade(div) {
div.style.display = "block"; div.style.display = "block";
div.style.opacity = "0"; div.style.opacity = "0";

View File

@ -0,0 +1,123 @@
<template name="sidebarMenuPlate">
<div id="modes">
<h3 class="sectionTitle">Main</h3>
<div class="mode classes">
<div class="status" style="background-color:{{modeStatus 'classes'}}"></div>
<i class="fa fa-university" aria-hidden="true"></i>
<h4>Classes</h4>
</div>
<div class="mode calendar">
<div class="status" style="background-color:{{modeStatus 'calendar'}}"></div>
<i class="fa fa-calendar" aria-hidden="true"></i>
<h4>Calendar</h4>
</div>
<div class="mode manageClass" onclick="window.location='/profile'">
<div class="status"></div>
<i class="fa fa-tasks" aria-hidden="true"></i>
<h4>Manage Classes</h4>
</div>
</div>
<div id="filters">
<div id="filterHead" class="sectionTitle openable">
<h3>Filters</h3>
{{#if filterOn}}
<h3 id="disableFilter">Disable All</h3>
{{/if}}
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="filterWrapper">
<div id="typeFilterWrapper" class="sectionTitle openable">
<h3>By Type</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="classFilterHolder">
{{#each types}}
{{> sideTypeFilter}}
{{/each}}
</div>
<div id="classFilterWrapper" class="sectionTitle openable">
<h3>By Class</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="classListHolder">
{{#each myClasses}}
{{> sidebarClasses}}
{{/each}}
</div>
</div>
</div>
<div id="exportDiv" class="mode">
<i class="fa fa-download" aria-hidden="true"></i>
<h4>Export</h4>
</div>
</template>
<template name="sidebarOptionPlate">
<div id="preferencesWrapper" class="sectionTitle openable downOffset">
<h3>Preferences</h3>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
<div id="prefCont">
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Theme:</h3>
<div id="theme" class="clickModify dropdown" tabindex="1">
<span>{{pref 'theme'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="theme"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Default Mode:</h3>
<div id="mode" class="clickModify dropdown" tabindex="2">
<span>{{pref 'mode'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="mode"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Homework:</h3>
<div id="timeHide" class="clickModify dropdown" tabindex="3">
<span>{{pref 'timeHide'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="timeHide"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Done:</h3>
<div id="done" class="clickModify dropdown" tabindex="4">
<span>{{pref 'done'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="done"}}
</div>
<div class="prefWrapper">
<h3 class="sectionTitle prefText">Hide Reported:</h3>
<div id="hideReport" class="clickModify dropdown" tabindex="5">
<span>{{pref 'hideReport'}}</span>
<i class="fa fa-angle-down" aria-hidden="true"></i>
</div>
{{> selectOptionMenu optionName="hideReport"}}
</div>
</div>
</template>
<template name="sidebarRequestPlate">
<h3 class="sectionTitle downOffset">Requests</h3>
<p class="sidebarDesc">Ask for help, submit a bug, or request a feature! We won't bite.</p>
<textarea id="requestArea" class="restrict" rows="4" cols="50" maxlength="500" placeholder="Enter request here..."></textarea><br>
<span id="requestRes" class="resText">{{restrict 'requestArea'}}</span>
<span style="opacity:0">.</span>
<div id="requestSubmit">
<span>Send</span>
<span style="display:none">Request sent!</span>
<i class="fa fa-paper-plane" aria-hidden="true"></i>
</div>
</template>
<template name="sidebarCreatePlate">
<h3 class="sectionTitle downOffset">Classes</h3>
<p class="sidebarDesc">Pick a class to create work for.</p>
{{#each myClasses}}
{{> sidebarClasses}}
{{/each}}
</template>

View File

@ -0,0 +1,57 @@
var filterOpen = [false,true,true];
var sidebarMode = [null,null];
Template.sidebarMenuPlate.rendered = function(){$(".menuWrapper").slideDown(300);}
Template.sidebarOptionPlate.rendered = function(){$(".menuWrapper").slideDown(300);}
Template.sidebarRequestPlate.rendered = function(){$(".menuWrapper").slideDown(300);}
Template.sidebarCreatePlate.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)";
},
types() {
var types = Object.keys(workColors);
var array = [];
for (var i = 0; i < types.length; i++) {
array.push({
"type": types[i],
"typeName": types[i][0].toUpperCase() + types[i].slice(1),
"selected": (_.contains(Session.get("typeFilter"), types[i])) ? Session.get("user").preferences.theme.modeHighlight : "rgba(0,0,0,0)"
});
}
return array;
}
});
Template.sidebarMenuPlate.events({
'click #filterHead' (event) {
if(event.target.id === "disableFilter") return;
if(!filterOpen[0]) {
$("#filterWrapper").slideDown(300);
} else {
$("#filterWrapper").slideUp(300);
}
filterOpen[0] = !filterOpen[0];
},
'click #typeFilterWrapper' () {
if(!filterOpen[1]) {
$("#classFilterHolder").slideDown(300);
} else {
$("#classFilterHolder").slideUp(300);
}
filterOpen[1] = !filterOpen[1];
},
'click #classFilterWrapper' () {
if(!filterOpen[2]) {
$("#classListHolder").slideDown(300);
} else {
$("#classListHolder").slideUp(300);
}
filterOpen[2] = !filterOpen[2];
}
});
Template.sidebarOptionPlate.events({
});

View File

@ -67,6 +67,14 @@ themeColors = {
} }
}; };
workColors = {
"normal": "#2E4F74",
"quiz": "#409333",
"test": "#AD3C44",
"project": "#D8831A",
"other": "#852E6D"
};
options = { options = {
"theme": [ "theme": [
{"val": "lux", "alias": "Lux"}, {"val": "lux", "alias": "Lux"},

View File

@ -14,7 +14,6 @@ Router.route('/', {
}, },
action: function() { action: function() {
if(_.contains([null, undefined, ""], Meteor.user().profile.school)) { if(_.contains([null, undefined, ""], Meteor.user().profile.school)) {
Session.set("user", Meteor.user().profile);
this.redirect('/login'); this.redirect('/login');
} else { } else {
Session.set("user", Meteor.user().profile); Session.set("user", Meteor.user().profile);