From 336f7f038212451c4f8403df68de8a236f388b3d Mon Sep 17 00:00:00 2001 From: Kenneth Jao Date: Sat, 16 Sep 2017 22:50:25 -0400 Subject: [PATCH] Added demonstration page --- hourglass/client/login/login.css | 14 +- hourglass/client/login/login.html | 4 +- hourglass/client/main/main.js | 360 ++++++++++++++++++++++++------ hourglass/client/menus/menus.js | 42 +++- hourglass/lib/router.js | 32 +++ 5 files changed, 376 insertions(+), 76 deletions(-) diff --git a/hourglass/client/login/login.css b/hourglass/client/login/login.css index 8fb61f7..97b799f 100644 --- a/hourglass/client/login/login.css +++ b/hourglass/client/login/login.css @@ -88,10 +88,10 @@ font-size: 3.5vh; width: 12vw; margin-top: 4vh; - /* margin-left: 16vw; */ + margin-left: 5vw; padding: 1vh; + background-color: #27A127; - border: 1px solid #FCF0F0; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; @@ -106,7 +106,7 @@ } .loginButtons:hover { - background-color: rgba(0,0,0,0.2); + background-color: #239023; } #loginContainer { @@ -114,7 +114,13 @@ } #demoButton { - margin-left: 11vw; + border: 1px solid #FCF0F0; + background-color: rgba(0,0,0,0); + margin-left: 4vw; +} + +#demoButton:hover { + background-color: rgba(255,255,255,0.1); } #version { diff --git a/hourglass/client/login/login.html b/hourglass/client/login/login.html index 1f5d5dc..145d550 100644 --- a/hourglass/client/login/login.html +++ b/hourglass/client/login/login.html @@ -18,9 +18,9 @@

Everything in

One Place.

We handle the organization, you handle the work.
-
+
Sign in!
-
Demo
+
Demo
diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js index 235ff1d..aed368a 100644 --- a/hourglass/client/main/main.js +++ b/hourglass/client/main/main.js @@ -33,10 +33,12 @@ Session.set("confirmText", ""); // Stores text for confirmations. // On render actions Meteor.autorun(function () { // Disconnect checking + if (Session.get("demo")) return; if (Meteor.status().status !== "connected" && Meteor.status().status !== "connecting" && !disconnect) { disconnect = true; var div = document.createElement("div"); div.id = "disconnect"; + div.style.color = "#FFF"; var h = document.createElement("h3"); h.appendChild(document.createTextNode("Uh Oh. We can't reach you right now!")); var h2 = document.createElement("h4"); @@ -75,10 +77,98 @@ Template.login.rendered = function() { Accounts._loginButtonsSession.set('dropdownVisible', true); }; +function randInt(min,max) { + return Math.floor(Math.random() * (max - min + 1)) + min; +} + Template.main.created = function() { Session.set("mode", Session.get("user").preferences.mode); Session.set("myWork", []); Session.set("filterWork", []); + if(Session.get("demo")) { + var classes = ["Biology", "Math", "Literature", "History"]; + var names = ["Worksheet", "Problems", "Notes"]; + var counter = 0; + for(var i = 0; i < classes.length; i++) { + for(var j = 0; j < randInt(1,3); j++) { + var nameInt = randInt(0,2); + var item = { + _id: counter.toString(), + class: classes[i], + dueDate: moment().endOf('day').add(randInt(1,5), "day").subtract(12, "hours").toDate(), + type: "normal", + name: names[nameInt] + ((nameInt === 0) ? " #"+randInt(1,8) : (nameInt === 1) ? " #"+randInt(1,9) + "-" + randInt(20,34) : " pg. "+randInt(90,120)+"-"+randInt(130,140)), + confirmationLength: randInt(1,10), + reportLength: randInt(0,6), + done: [] + }; + updateWork(counter.toString(), item, "added"); + counter++; + } + } + updateWork(counter.toString(), { + _id: counter.toString(), + class: "Math", + dueDate: moment().endOf('day').add(randInt(1,5), "day").subtract(12, "hours").toDate(), + type: "test", + name: "Math Test 3.1", + confirmationLength: randInt(1,10), + reportLength: randInt(0,6), + done: [] + }, "added"); + updateWork((counter+1).toString(), { + _id: (counter+1).toString(), + class: "Literature", + dueDate: moment().endOf('day').add(randInt(1,5), "day").subtract(12, "hours").toDate(), + type: "project", + name: "Poem Commentary", + confirmationLength: randInt(1,10), + reportLength: randInt(0,6), + done: [] + }, "added"); + updateWork((counter+2).toString(), { + _id: (counter+2).toString(), + class: "Biology", + dueDate: moment().endOf('day').add(randInt(1,5), "day").subtract(12, "hours").toDate(), + type: "quiz", + name: "Cell Respiration", + confirmationLength: randInt(1,10), + reportLength: randInt(0,6), + done: [] + }, "added"); + updateWork((counter+3).toString(), { + _id: (counter+3).toString(), + class: "Personal", + dueDate: moment().endOf('day').add(randInt(1,5), "day").subtract(12, "hours").toDate(), + type: "other", + name: "Clean Room", + confirmationLength: 1, + reportLength: 0, + done: [] + }, "added"); + + var array = []; + var classes = ["Personal", "History", "Math", "Biology", "Literature"]; + var prefix = ["Mr.", "Dr.", "Ms.", "Mrs."]; + for(var i = 0; i < classes.length; i++) { + array.push({ + box: " owned", + hour: (i === 0) ? "" : "A"+(i).toString(), + mine: false, + name: classes[i], + status: true, + category: (i === 0) ? "Personal" : "class", + selected: "rgba(0,0,0,0)", + subscribers: randInt(7,20), + _id: classes[i], + teacher: prefix[randInt(0,3)] + " Bot", + teachershort: "Bot" + }); + } + Session.set("myClasses", array); + filterWork(); + } + Session.set("classInfo", null); $(document).on('keyup', (e) => { if(event.keyCode === 27 && $(".overlay").css("display") !== "none") { @@ -86,7 +176,6 @@ Template.main.created = function() { Session.set("currentWork", null); } }); - work.find().observeChanges({ added: function (id, fields) { updateWork(id, fields, "added"); @@ -117,6 +206,8 @@ Template.main.rendered = function() { }); document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor; + + }; Template.classesMode.rendered = function() { @@ -187,7 +278,7 @@ Template.registerHelper('overlayDim', (part) => { // Gets size of the overlay co Template.registerHelper('myClasses', () => { // Gets all classes and respective works. var myClasses = Session.get("user").classes; - getClasses(myClasses); + if(!Session.get("demo")) getClasses(myClasses); return Session.get("myClasses"); }); @@ -236,6 +327,7 @@ Template.registerHelper('work', (value) => {// Returns the specified work value. if(Session.get("newWork")) { switch(value) { case "class": + if(Session.get("demo")) return thisWork["class"]; var id = thisWork["class"]; if(!id) return; return (id === Meteor.userId()) ? "Personal" : classes.findOne({_id: id}).name; @@ -258,6 +350,7 @@ Template.registerHelper('work', (value) => {// Returns the specified work value. case "name": return input.name; case "class": + if(Session.get("demo")) return thisWork["class"]; var id = input["class"]; return (id === Meteor.userId()) ? "Personal" : classes.findOne({_id: id}).name; case "dueDate": @@ -304,35 +397,53 @@ Template.registerHelper('work', (value) => {// Returns the specified work value. return input.done; case "doneCol": if (Session.get("newWork")) return ""; - if (!_.contains(input.done, Meteor.userId())) return ""; + if (Session.get("demo")) { + if (input.done.length === 0) return ""; + } else { + if (!_.contains(input.done, Meteor.userId())) return ""; + } return "#27A127"; case "doneText": if (Session.get("newWork")) return ""; - if (!_.contains(input.done, Meteor.userId())) return "Mark done"; + if (Session.get("demo")) { + if(input.done.length === 0) return "Mark done"; + } else { + if (!_.contains(input.done, Meteor.userId())) return "Mark done"; + } return "Done!"; case "doneIcon": if (Session.get("newWork")) return ""; - if (!_.contains(input.done, Meteor.userId())) return "fa-square-o"; + if(Session.get("demo")) { + if(input.done.length === 0) return "fa-square-o"; + } else { + if (!_.contains(input.done, Meteor.userId())) return "fa-square-o"; + } return "fa-check-square-o"; case "userConfirm": + if(Session.get("demo")) return "#27A127"; if (!_.contains(input.confirmations, Meteor.userId())) return (Meteor.Device.isPhone() || Meteor.Device.isTablet()) ? "rgb(101,101,101)" : ""; return "#27A127"; case "confirmations": + if(Session.get("demo")) return input.confirmationLength; return input.confirmations.length; case "userReport": + if(Session.get("demo")) return ""; if (!_.contains(input.reports, Meteor.userId())) return (Meteor.Device.isPhone() || Meteor.Device.isTablet()) ? "rgb(101,101,101)" : ""; return "#FF1A1A"; case "reports": + if(Session.get("demo")) return input.reportLength; return input.reports.length; case "email": return Meteor.users.findOne({ _id: input.creator }).services.google.email; case "avatar": + if(Session.get("demo")) return "Logos/ColoredLogo.png"; return Meteor.users.findOne({ _id: input.creator }).services.google.picture; case "creator": + if(Session.get("demo")) return "A. Robot"; return Meteor.users.findOne({ _id: input.creator }).profile.name; @@ -363,6 +474,7 @@ Template.main.helpers({ return " - " + Session.get("user").school; }, avatar() { // Returns avatar. + if(Session.get("demo")) return "Logos/ColoredLogo.png"; try { return Meteor.user().services.google.picture; } catch(err) {} @@ -403,9 +515,15 @@ Template.main.helpers({ eventLimit: 3, events: Session.get("calendarEvents"), eventDrop: function(event, delta, revertFunc) { // When user drops from click-dragging. - var current = work.findOne({ - _id: event.id - }); + if(Session.get("demo")) { + var current = Session.get("myWork").filter(function(obj) { + return obj._id === event.id; + })[0]; + } else { + var current = work.findOne({ + _id: event.id + }); + } var date = event.start.format().split("-"); current.dueDate = new Date(date[0], parseInt(date[1]) - 1, date[2], 11, 59, 59); if(Date.parse(new Date()) > Date.parse(current.dueDate)) { @@ -417,7 +535,13 @@ Template.main.helpers({ }, eventClick: function(event, jsEvent, view) { // On-click for work. Session.set("newWork", false); - Session.set("currentWork", work.findOne({_id: event.id})); + if(Session.get("demo")) { + Session.set("currentWork", Session.get("myWork").filter(function(obj) { + return obj._id === event.id; + })[0]); + } else { + Session.set("currentWork", work.findOne({_id: event.id})); + } $(".overlay").velocity("fadeIn", 150); $("#comment").slimScroll({ width: '100%', @@ -426,8 +550,15 @@ Template.main.helpers({ }); }, eventMouseover: function(event, jsEvent, view) { - var classid = work.findOne({_id: event.id})["class"]; - var className = (classid === Meteor.userId()) ? "Personal" : classes.findOne({_id: classid}).name; + if(Session.get("demo")) { + var className = Session.get("myWork").filter(function(obj) { + return obj._id === event.id; + })[0].class; + } else { + var classid = work.findOne({_id: event.id})["class"]; + var className = (classid === Meteor.userId()) ? "Personal" : classes.findOne({_id: classid}).name; + } + var span = this.children[0].children[0]; $(span).velocity("stop"); $(span).velocity({opacity:0}, 50, function() { @@ -437,7 +568,13 @@ Template.main.helpers({ this.style.boxShadow = "inset 0 0 0 99999px rgba(255,255,255,0.2)"; }, eventMouseout: function(event, jsEvent, view) { - var workName = work.findOne({_id: event.id}).name; + if(Session.get("demo")) { + var workName = Session.get("myWork").filter(function(obj) { + return obj._id === event.id; + })[0].name; + } else { + var workName = work.findOne({_id: event.id}).name; + } var span = this.children[0].children[0]; $(span).velocity("stop"); $(span).velocity({opacity:0}, 50, function() { @@ -483,6 +620,7 @@ Template.main.helpers({ return Session.get("newWork"); }, inRole() { // Checks correct permissions. + if(Session.get("demo")) return true; if(Session.equals("currentWork",null)) return; try { var thisWork = work.findOne({ @@ -558,6 +696,14 @@ Template.main.events({ toggleToSidebar("option"); }, 'click .fa-question' (event) { // Click requests button. + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } toggleToSidebar("requests"); }, 'click .creWork' (event) { // Cick add work button. @@ -596,9 +742,15 @@ Template.main.events({ 'click .workCard' (event) { // Display work information on work card click. if(event.target.className.indexOf("fa") !== -1) return; var workid = event.target.getAttribute("workid"); - var thisWork = work.findOne({ - _id: workid - }); + if(Session.get("demo")) { + var thisWork = Session.get("myWork").filter(function(obj) { + return obj._id === workid; + })[0]; + } else { + var thisWork = work.findOne({ + _id: workid + }); + } Session.set("newWork", false); Session.set("currentWork", thisWork); @@ -842,24 +994,46 @@ Template.main.events({ sendData("toggleWork"); }, 'click #markConfirm' () { // Click confirm button. + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } serverData = [Session.get("currentWork")._id, "confirmations"]; sendData("toggleWork"); }, 'click #markReport' () { // Click report button. + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } serverData = [Session.get("currentWork")._id, "reports"]; sendData("toggleWork"); }, 'click .cWorkBottom .fa-thumbs-up' (event) { + if (Session.get("demo")) return; serverData = [event.target.parentNode.parentNode.parentNode.parentNode.getAttribute("workid"), "confirmations"] sendData("toggleWork"); }, 'click .cWorkBottom .fa-exclamation-triangle' (event) { + if (Session.get("demo")) return; serverData = [event.target.parentNode.parentNode.parentNode.parentNode.getAttribute("workid"), "reports"] sendData("toggleWork"); }, 'click #signout' () { $(".noScroll").velocity("fadeOut", 50); Session.set('sidebarMode',''); + if (Session.get("demo")) { + Session.set("demo", false); + return; + } document.getElementById('login-buttons-logout').click(); } }); @@ -895,35 +1069,62 @@ toggleOptionMenu = function(toggle, menu) { } sendData = function(funcName) { // Call Meteor function, and do actions after function is completed depending on function. - if(funcName === "editWork" || funcName === "createWork") { - for(var key in serverData) { - if(serverData[key] === true) serverData[key] = ""; - } - - } - if(funcName === "editWork") workChanger = true; - if(funcName === "editProfile") filterWork(); - Meteor.call(funcName, serverData, function(error, result) { - if(funcName === "createWork") Session.set("currentWork", null); - serverData = null; - if (error !== undefined) { - console.log(funcName); - console.log(error); - sAlert.error(error.error[1] || error.message, { - effect: 'stackslide', - position: 'top' - }); - } else { - if(funcName === "createClass") { - var inputs = document.getElementsByClassName("creInput"); - for(var i = 0; i < inputs.length; i++) { - inputs[i].value = ""; - } - toggleToMode("manageClass"); + if(Session.get("demo")) { + var allWork = Session.get("myWork").concat(Session.get("filterWork")); + if(funcName === "editProfile") { + Session.set("user", serverData); + } else if(funcName === "editWork") { + updateWork(serverData._id, serverData, "changed"); + } else if(funcName === "createWork") { + serverData._id = allWork.length; + serverData.done = []; + serverData.confirmationLength = 1; + serverData.reportLength = 0; + updateWork(serverData._id, serverData, "added"); + } else if(funcName === "toggleWork") { + var toggle = allWork.filter(function(obj) { + return serverData[0] === obj._id; + })[0]; + if(toggle.done.length === 0) { + toggle.done = ["yes"]; + } else { + toggle.done = []; } + updateWork(serverData[0], toggle, "changed"); + } else if(funcName === "deleteWork") { + updateWork(serverData, null, "remove") } - document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor; - }); + filterWork(); + } else { + if(funcName === "editWork" || funcName === "createWork") { + for(var key in serverData) { + if(serverData[key] === true) serverData[key] = ""; + } + } + if(funcName === "editWork") workChanger = true; + if(funcName === "editProfile") filterWork(); + Meteor.call(funcName, serverData, function(error, result) { + if(funcName === "createWork") Session.set("currentWork", null); + serverData = null; + if (error !== undefined) { + console.log(funcName); + console.log(error); + sAlert.error(error.error[1] || error.message, { + effect: 'stackslide', + position: 'top' + }); + } else { + if(funcName === "createClass") { + var inputs = document.getElementsByClassName("creInput"); + for(var i = 0; i < inputs.length; i++) { + inputs[i].value = ""; + } + toggleToMode("manageClass"); + } + } + }); + } + document.getElementsByTagName("body")[0].style.color = Session.get("user").preferences.theme.textColor; } function closeInput() { // Close a changeable input and change it back to span. @@ -1076,21 +1277,30 @@ updateWork = function(id, fields, type) { } var workObj; - - if(type === "added") { - workObj = Object.assign({}, fields, {_id: id}) - } else if(type === "changed") { - workObj = work.findOne({_id: id}); + if(Session.get("demo")) { + workObj = fields; + } else { + if(type === "added") { + workObj = Object.assign({}, fields, {_id: id}); + } else if(type === "changed") { + workObj = work.findOne({_id: id}); + } } - if(Meteor.users.findOne({_id: workObj.creator}) === undefined) return; - if(Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) && !_.contains(Session.get("user").classes, workObj["class"])) return; - + if(!Session.get("demo")) { + if(Meteor.users.findOne({_id: workObj.creator}) === undefined) return; + if(Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) && !_.contains(Session.get("user").classes, workObj["class"])) return; + } + workObj.classid = workObj.class; workObj.shortname = (workObj.name.length <= 20) ? workObj.name : workObj.name.substring(0,20) + "..."; - workObj.className = (workObj.classid === Meteor.userId()) ? "Personal" : classes.findOne({_id: workObj.classid}).name; - + if(Session.get("demo")) { + workObj.className = workObj.class; + } else { + workObj.className = (workObj.classid === Meteor.userId()) ? "Personal" : classes.findOne({_id: workObj.classid}).name; + } + workObj.dateWord = (!(Meteor.Device.isPhone() || Meteor.Device.isTablet())) ? moment(workObj.dueDate).calendar(null, { sameDay: '[Today]', @@ -1117,17 +1327,26 @@ updateWork = function(id, fields, type) { workObj.cardDate = "400"; } - workObj.confirmationLength = workObj.confirmations.length; // Counts the number of confirmations and reports for a particular work. - workObj.reportLength = workObj.reports.length; - workObj.confirmed = (_.contains(workObj.confirmations, Meteor.userId())) ? "#27A127" : ""; - workObj.reported = (_.contains(workObj.reports, Meteor.userId())) ? "#FF1A1A" : ""; + if(Session.get("demo")) { + workObj.confirmed = "#27A127"; + workObj.reported = ""; + } else { + workObj.confirmationLength = workObj.confirmations.length; // Counts the number of confirmations and reports for a particular work. + workObj.reportLength = workObj.reports.length; + workObj.confirmed = (_.contains(workObj.confirmations, Meteor.userId())) ? "#27A127" : ""; + workObj.reported = (_.contains(workObj.reports, Meteor.userId())) ? "#FF1A1A" : ""; + } workObj.typeColor = workColors[workObj.type]; - - workObj.creatorname = Meteor.users.findOne({ - _id: workObj.creator - }).profile.name; - + + if(Session.get("demo")) { + workObj.creatorname = "A. Robot"; + } else { + workObj.creatorname = Meteor.users.findOne({ + _id: workObj.creator + }).profile.name; + } + var normalColor = Session.get("user").preferences.theme.text; // Ratio color handling /*var conf = workObj.confirmations.length; @@ -1170,7 +1389,6 @@ updateWork = function(id, fields, type) { }*/ } } - Session.set("myWork", myWork); } @@ -1187,7 +1405,11 @@ filterWork = function() { var notInClassFilter = classDisp.length !== 0 && !_.contains(classDisp, workObj.classid); var notInTypeFilter = typeFilter.length !== 0 && !_.contains(typeFilter, workObj.type); var pastHideDate = hideTime !== 0 && (moment().subtract(hideTime, 'days'))._d > (moment(workObj.dueDate))._d; - var markedDone = Session.get("user").preferences.done && !(Meteor.Device.isPhone() || Meteor.Device.isTablet()) && _.contains(workObj.done, Meteor.userId()); + if(Session.get("demo")) { + var markedDone = Session.get("user").preferences.done && workObj.done.length !== 0; + } else { + var markedDone = Session.get("user").preferences.done && !(Meteor.Device.isPhone() || Meteor.Device.isTablet()) && _.contains(workObj.done, Meteor.userId()); + } var reported = false; // Temp, working on reporting. //var reported = (workObj.reportLength / (workObj.reportLength + workObj.confirmationLength)) > 0.7; // Over 70% are reports @@ -1197,6 +1419,7 @@ filterWork = function() { displayWork.push(workObj); } }); + Session.set("myWork", displayWork.sort(function(a,b) { // Display work. if(Date.parse(a.dueDate) === Date.parse(b.dueDate)) { var x = a.name.toLowerCase(); @@ -1217,10 +1440,17 @@ function calendarEvents() { var myWork = Session.get("myWork"); for(var i = 0; i < myWork.length; i++) { var work = myWork[i]; - var currClass = classes.findOne({ _id: work.classid}); + if(Session.get("demo")) { + var currClass = Session.get("myClasses").filter(function(obj) { + return obj.name === work.class; + })[0]; + } else { + var currClass = classes.findOne({ _id: work.classid}); + } var inRole = false; - if (work.class === Meteor.userId() || + if (Session.get("demo") || + work.class === Meteor.userId() || Meteor.userId() === work.creator || Roles.userIsInRole(Meteor.userId(), ['superadmin', 'admin']) || currClass.moderators.indexOf(Meteor.userId()) !== -1 || diff --git a/hourglass/client/menus/menus.js b/hourglass/client/menus/menus.js index faee58e..f5fb0dc 100644 --- a/hourglass/client/menus/menus.js +++ b/hourglass/client/menus/menus.js @@ -168,10 +168,26 @@ Template.sidebarOptionPlate.events({ }, 'click .addClass' () { // Click classes mode button. if (Session.equals("settingMode", "addClass")) return; + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } toggleToMode("addClass"); }, 'click .createClass' () { // Click classes mode button. if (Session.equals("settingMode", "createClass")) return; + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } toggleToMode("createClass"); }, 'click #settingMode' () { @@ -204,11 +220,18 @@ Template.sidebarCreatePlate.events({ }); Template.registerHelper("classInfo", (info) => { - var thisClass = classes.findOne({ - _id: Session.get("classInfo") - }); - if (thisClass === undefined) return; - var isYou = Session.equals("classInfo", Meteor.userId()); + if(Session.get("demo")) { + if(Session.equals("classInfo", "Personal")) var isYou = true; + var thisClass = Session.get("myClasses").filter(function(obj) { + return obj.name === Session.get("classInfo"); + })[0]; + } else { + var thisClass = classes.findOne({ + _id: Session.get("classInfo") + }); + if (thisClass === undefined) return; + var isYou = Session.equals("classInfo", Meteor.userId()); + } switch (info) { case "name": return (isYou) ? "Personal" : thisClass.name; @@ -221,6 +244,7 @@ Template.registerHelper("classInfo", (info) => { case "privacy": return (isYou) ? true : thisClass.privacy; case "admin": + if(Session.get("demo")) return "A. Robot"; return Meteor.users.findOne({ _id: (isYou) ? Meteor.userId() : thisClass.admin }); @@ -300,6 +324,14 @@ Template.manageClass.events({ }, 'click #classInfoModeWrapper span:last-child' () { if (Session.equals("classInfoMode", "users")) return; + if (Session.get("demo")) { + sAlert.error("Not available in demo!", { + effect: 'stackslide', + position: 'top', + timeout: 2000 + }); + return; + } toggleToClassInfoMode("users"); }, 'click .infoCard .fa-pencil-square-o' () { diff --git a/hourglass/lib/router.js b/hourglass/lib/router.js index 1972deb..ea972e0 100644 --- a/hourglass/lib/router.js +++ b/hourglass/lib/router.js @@ -10,6 +10,8 @@ Router.route('/', { waitOn: function() { if(!Meteor.userId()) { return; + } else if(Session.get("demo")) { + return ["HIIII"]; } return [ Meteor.subscribe('classes', this.params._id), @@ -22,6 +24,33 @@ Router.route('/', { ]; }, action: function() { + if(Session.get("demo")) { + Session.set("user", { + "school":"Robot Academy", + "grade":"2018", + "classes": ["History", "Math", "Biology", "Literature"], + "preferences": { + "theme": { + "background":"NeonBlue.jpg", + "mainColor":"#1D1C23", + "secondaryColor":"#1F212F", + "sidebarColor":"#312E32", + "userDropdownColor":"#2E312B", + "iconHighlight":"#70E6E6", + "modeHighlight":"#70E6E6", + "classCardColor":"#32363C", + "textColor":"#FCF0F0" + }, + "mode": "classes", + "timeHide":0, + "done": true, + "hideReport": true}, + "name": "A. Robot", + "complete": true + }); + this.render("main"); + return; + } if (!Meteor.userId() || !completeProfile()) { this.redirect('/login'); } else { @@ -42,6 +71,9 @@ Router.route('/', { Router.route('/login', { action: function() { + if(Session.get("demo")) { + this.redirect('/'); + } if (!Meteor.userId()) { if(Meteor.Device.isPhone()) { this.render("mLogin");