diff --git a/hourglass/.meteor/packages b/hourglass/.meteor/packages index 1c6d907..37010b3 100644 --- a/hourglass/.meteor/packages +++ b/hourglass/.meteor/packages @@ -35,3 +35,5 @@ http@1.2.9 underscore houston:admin ahref:dragula +harrison:papa-parse +pfafman:filesaver diff --git a/hourglass/.meteor/versions b/hourglass/.meteor/versions index 84a81ab..5ea89b7 100644 --- a/hourglass/.meteor/versions +++ b/hourglass/.meteor/versions @@ -42,6 +42,7 @@ fastclick@1.0.12 fortawesome:fontawesome@4.5.0 geojson-utils@1.0.9 google@1.1.14 +harrison:papa-parse@1.1.1 hot-code-push@1.0.4 houston:admin@2.0.7 html-tools@1.0.10 @@ -84,6 +85,7 @@ oauth2@1.1.10 observe-sequence@1.0.12 ongoworks:security@2.0.1 ordered-dict@1.0.8 +pfafman:filesaver@1.3.2 promise@0.8.4 proyk:meteor-cookies@0.0.1 random@1.0.10 diff --git a/hourglass/client/main/main.css b/hourglass/client/main/main.css index 401bd48..c80051b 100644 --- a/hourglass/client/main/main.css +++ b/hourglass/client/main/main.css @@ -285,7 +285,7 @@ input, textarea { transition: box-shadow 0.2s ease; } -.fa-university, .fa-calendar { +.fa-university, .fa-calendar, .fa-download { font-size: 175%; width: 12%; padding: 10%; @@ -302,6 +302,19 @@ input, textarea { filter: drop-shadow(2px 2px 5px #666); } +#exportText { + display: inline; +} + +.fa-download { + padding: 0%; +} + +#exportDiv { + position: absolute; + bottom: 9%; +} + #functions { width: 100%; margin-top: 7%; diff --git a/hourglass/client/main/main.html b/hourglass/client/main/main.html index 7f36012..d47fcb2 100644 --- a/hourglass/client/main/main.html +++ b/hourglass/client/main/main.html @@ -54,9 +54,15 @@ {{/if}} + +
+ +

Export

+

Preferences

+
diff --git a/hourglass/client/main/main.js b/hourglass/client/main/main.js index 3a07e34..6e276b4 100644 --- a/hourglass/client/main/main.js +++ b/hourglass/client/main/main.js @@ -769,6 +769,33 @@ Template.main.events({ text.style.display = "initial"; text.style.color = "#7E7E7E"; }, + 'click #exportDiv' (event) { + var events = []; + var userClasses = Session.get("calendarClasses"); + + for (var i = 0; i < userClasses.length; i++) { + var works = userClasses[i].thisClassWork; + for (var j = 0; j < works.length; j++) { + var work = works[j]; + var workclass = classes.findOne({_id: work.class}); + if (work.description == defaultWork.description) work.description = ""; + if (work.dueDate == defaultWork.dueDate) continue; + if (work.name == defaultWork.name) work.name = ""; + if (workclass === undefined) workclass = {name: "Personal"}; + events.push([ + workclass.name + ": " + work.name, + work.realDate.toLocaleDateString(), + work.description, + "True" + ]); + } + } + + var JSONevents = JSON.stringify(events); + var CSVevents = Papa.unparse({fields: ["Subject", "Start Date", "Description", "All Day Event"], data: JSONevents}); + var eventBlob = new Blob([CSVevents], {type: "data:text/csv;charset=utf-8"}); + saveAs(eventBlob, "hourglass.csv"); + }, 'keydown input' (event) { // Enter to close input. var modifyingInput = Session.get("modifying"); if (event.keyCode == 13 && modifyingInput != "workDesc") { diff --git a/hourglass/public/icons/license/license.pdf b/hourglass/public/icons/license/license.pdf new file mode 100644 index 0000000..a0325ee Binary files /dev/null and b/hourglass/public/icons/license/license.pdf differ diff --git a/hourglass/public/icons/png/animal.png b/hourglass/public/icons/png/animal.png new file mode 100644 index 0000000..8eb971c Binary files /dev/null and b/hourglass/public/icons/png/animal.png differ diff --git a/hourglass/public/icons/png/avatar.png b/hourglass/public/icons/png/avatar.png new file mode 100644 index 0000000..0a365ea Binary files /dev/null and b/hourglass/public/icons/png/avatar.png differ diff --git a/hourglass/public/icons/png/book-1.png b/hourglass/public/icons/png/book-1.png new file mode 100644 index 0000000..824ac4a Binary files /dev/null and b/hourglass/public/icons/png/book-1.png differ diff --git a/hourglass/public/icons/png/book-2.png b/hourglass/public/icons/png/book-2.png new file mode 100644 index 0000000..99755d8 Binary files /dev/null and b/hourglass/public/icons/png/book-2.png differ diff --git a/hourglass/public/icons/png/book-3.png b/hourglass/public/icons/png/book-3.png new file mode 100644 index 0000000..7c7a158 Binary files /dev/null and b/hourglass/public/icons/png/book-3.png differ diff --git a/hourglass/public/icons/png/book-4.png b/hourglass/public/icons/png/book-4.png new file mode 100644 index 0000000..c0801dd Binary files /dev/null and b/hourglass/public/icons/png/book-4.png differ diff --git a/hourglass/public/icons/png/book-5.png b/hourglass/public/icons/png/book-5.png new file mode 100644 index 0000000..d48484e Binary files /dev/null and b/hourglass/public/icons/png/book-5.png differ diff --git a/hourglass/public/icons/png/book-6.png b/hourglass/public/icons/png/book-6.png new file mode 100644 index 0000000..cdc6d38 Binary files /dev/null and b/hourglass/public/icons/png/book-6.png differ diff --git a/hourglass/public/icons/png/book-7.png b/hourglass/public/icons/png/book-7.png new file mode 100644 index 0000000..61b9532 Binary files /dev/null and b/hourglass/public/icons/png/book-7.png differ diff --git a/hourglass/public/icons/png/book-8.png b/hourglass/public/icons/png/book-8.png new file mode 100644 index 0000000..bdbdba9 Binary files /dev/null and b/hourglass/public/icons/png/book-8.png differ diff --git a/hourglass/public/icons/png/book.png b/hourglass/public/icons/png/book.png new file mode 100644 index 0000000..cccb5b9 Binary files /dev/null and b/hourglass/public/icons/png/book.png differ diff --git a/hourglass/public/icons/png/chemistry.png b/hourglass/public/icons/png/chemistry.png new file mode 100644 index 0000000..bdc9019 Binary files /dev/null and b/hourglass/public/icons/png/chemistry.png differ diff --git a/hourglass/public/icons/png/comedy-1.png b/hourglass/public/icons/png/comedy-1.png new file mode 100644 index 0000000..442da8c Binary files /dev/null and b/hourglass/public/icons/png/comedy-1.png differ diff --git a/hourglass/public/icons/png/comedy.png b/hourglass/public/icons/png/comedy.png new file mode 100644 index 0000000..1132126 Binary files /dev/null and b/hourglass/public/icons/png/comedy.png differ diff --git a/hourglass/public/icons/png/construction-1.png b/hourglass/public/icons/png/construction-1.png new file mode 100644 index 0000000..ae23a6b Binary files /dev/null and b/hourglass/public/icons/png/construction-1.png differ diff --git a/hourglass/public/icons/png/construction.png b/hourglass/public/icons/png/construction.png new file mode 100644 index 0000000..d166138 Binary files /dev/null and b/hourglass/public/icons/png/construction.png differ diff --git a/hourglass/public/icons/png/cup.png b/hourglass/public/icons/png/cup.png new file mode 100644 index 0000000..b078512 Binary files /dev/null and b/hourglass/public/icons/png/cup.png differ diff --git a/hourglass/public/icons/png/diploma-1.png b/hourglass/public/icons/png/diploma-1.png new file mode 100644 index 0000000..59db474 Binary files /dev/null and b/hourglass/public/icons/png/diploma-1.png differ diff --git a/hourglass/public/icons/png/diploma.png b/hourglass/public/icons/png/diploma.png new file mode 100644 index 0000000..80e5c8d Binary files /dev/null and b/hourglass/public/icons/png/diploma.png differ diff --git a/hourglass/public/icons/png/draw.png b/hourglass/public/icons/png/draw.png new file mode 100644 index 0000000..55d4345 Binary files /dev/null and b/hourglass/public/icons/png/draw.png differ diff --git a/hourglass/public/icons/png/earth-1.png b/hourglass/public/icons/png/earth-1.png new file mode 100644 index 0000000..0e3d02c Binary files /dev/null and b/hourglass/public/icons/png/earth-1.png differ diff --git a/hourglass/public/icons/png/earth.png b/hourglass/public/icons/png/earth.png new file mode 100644 index 0000000..c933e26 Binary files /dev/null and b/hourglass/public/icons/png/earth.png differ diff --git a/hourglass/public/icons/png/education-1.png b/hourglass/public/icons/png/education-1.png new file mode 100644 index 0000000..df2b006 Binary files /dev/null and b/hourglass/public/icons/png/education-1.png differ diff --git a/hourglass/public/icons/png/education-2.png b/hourglass/public/icons/png/education-2.png new file mode 100644 index 0000000..07896e4 Binary files /dev/null and b/hourglass/public/icons/png/education-2.png differ diff --git a/hourglass/public/icons/png/education.png b/hourglass/public/icons/png/education.png new file mode 100644 index 0000000..91427df Binary files /dev/null and b/hourglass/public/icons/png/education.png differ diff --git a/hourglass/public/icons/png/energy.png b/hourglass/public/icons/png/energy.png new file mode 100644 index 0000000..08572c5 Binary files /dev/null and b/hourglass/public/icons/png/energy.png differ diff --git a/hourglass/public/icons/png/file.png b/hourglass/public/icons/png/file.png new file mode 100644 index 0000000..b996318 Binary files /dev/null and b/hourglass/public/icons/png/file.png differ diff --git a/hourglass/public/icons/png/fruit.png b/hourglass/public/icons/png/fruit.png new file mode 100644 index 0000000..6e8b463 Binary files /dev/null and b/hourglass/public/icons/png/fruit.png differ diff --git a/hourglass/public/icons/png/graduate.png b/hourglass/public/icons/png/graduate.png new file mode 100644 index 0000000..09c9793 Binary files /dev/null and b/hourglass/public/icons/png/graduate.png differ diff --git a/hourglass/public/icons/png/graduation.png b/hourglass/public/icons/png/graduation.png new file mode 100644 index 0000000..a482669 Binary files /dev/null and b/hourglass/public/icons/png/graduation.png differ diff --git a/hourglass/public/icons/png/greek.png b/hourglass/public/icons/png/greek.png new file mode 100644 index 0000000..f5cf5c9 Binary files /dev/null and b/hourglass/public/icons/png/greek.png differ diff --git a/hourglass/public/icons/png/interface-1.png b/hourglass/public/icons/png/interface-1.png new file mode 100644 index 0000000..5f9f4c1 Binary files /dev/null and b/hourglass/public/icons/png/interface-1.png differ diff --git a/hourglass/public/icons/png/interface-2.png b/hourglass/public/icons/png/interface-2.png new file mode 100644 index 0000000..19c394a Binary files /dev/null and b/hourglass/public/icons/png/interface-2.png differ diff --git a/hourglass/public/icons/png/interface.png b/hourglass/public/icons/png/interface.png new file mode 100644 index 0000000..8312085 Binary files /dev/null and b/hourglass/public/icons/png/interface.png differ diff --git a/hourglass/public/icons/png/magnet.png b/hourglass/public/icons/png/magnet.png new file mode 100644 index 0000000..ae5e3f7 Binary files /dev/null and b/hourglass/public/icons/png/magnet.png differ diff --git a/hourglass/public/icons/png/mark.png b/hourglass/public/icons/png/mark.png new file mode 100644 index 0000000..6f7cd99 Binary files /dev/null and b/hourglass/public/icons/png/mark.png differ diff --git a/hourglass/public/icons/png/medical-1.png b/hourglass/public/icons/png/medical-1.png new file mode 100644 index 0000000..7310d9a Binary files /dev/null and b/hourglass/public/icons/png/medical-1.png differ diff --git a/hourglass/public/icons/png/medical-2.png b/hourglass/public/icons/png/medical-2.png new file mode 100644 index 0000000..d70072d Binary files /dev/null and b/hourglass/public/icons/png/medical-2.png differ diff --git a/hourglass/public/icons/png/medical.png b/hourglass/public/icons/png/medical.png new file mode 100644 index 0000000..2a2670d Binary files /dev/null and b/hourglass/public/icons/png/medical.png differ diff --git a/hourglass/public/icons/png/molecule.png b/hourglass/public/icons/png/molecule.png new file mode 100644 index 0000000..4963fb3 Binary files /dev/null and b/hourglass/public/icons/png/molecule.png differ diff --git a/hourglass/public/icons/png/monuments.png b/hourglass/public/icons/png/monuments.png new file mode 100644 index 0000000..e0c9ead Binary files /dev/null and b/hourglass/public/icons/png/monuments.png differ diff --git a/hourglass/public/icons/png/mouse.png b/hourglass/public/icons/png/mouse.png new file mode 100644 index 0000000..6a2918a Binary files /dev/null and b/hourglass/public/icons/png/mouse.png differ diff --git a/hourglass/public/icons/png/people-1.png b/hourglass/public/icons/png/people-1.png new file mode 100644 index 0000000..da1ced7 Binary files /dev/null and b/hourglass/public/icons/png/people-1.png differ diff --git a/hourglass/public/icons/png/people.png b/hourglass/public/icons/png/people.png new file mode 100644 index 0000000..c8aa3a0 Binary files /dev/null and b/hourglass/public/icons/png/people.png differ diff --git a/hourglass/public/icons/png/planet.png b/hourglass/public/icons/png/planet.png new file mode 100644 index 0000000..3f812fc Binary files /dev/null and b/hourglass/public/icons/png/planet.png differ diff --git a/hourglass/public/icons/png/potion.png b/hourglass/public/icons/png/potion.png new file mode 100644 index 0000000..0861e5c Binary files /dev/null and b/hourglass/public/icons/png/potion.png differ diff --git a/hourglass/public/icons/png/reading.png b/hourglass/public/icons/png/reading.png new file mode 100644 index 0000000..a2b1f02 Binary files /dev/null and b/hourglass/public/icons/png/reading.png differ diff --git a/hourglass/public/icons/png/research.png b/hourglass/public/icons/png/research.png new file mode 100644 index 0000000..bc07b98 Binary files /dev/null and b/hourglass/public/icons/png/research.png differ diff --git a/hourglass/public/icons/png/school.png b/hourglass/public/icons/png/school.png new file mode 100644 index 0000000..fbe1909 Binary files /dev/null and b/hourglass/public/icons/png/school.png differ diff --git a/hourglass/public/icons/png/science-1.png b/hourglass/public/icons/png/science-1.png new file mode 100644 index 0000000..ecd76b5 Binary files /dev/null and b/hourglass/public/icons/png/science-1.png differ diff --git a/hourglass/public/icons/png/science-10.png b/hourglass/public/icons/png/science-10.png new file mode 100644 index 0000000..a65e926 Binary files /dev/null and b/hourglass/public/icons/png/science-10.png differ diff --git a/hourglass/public/icons/png/science-2.png b/hourglass/public/icons/png/science-2.png new file mode 100644 index 0000000..af349e4 Binary files /dev/null and b/hourglass/public/icons/png/science-2.png differ diff --git a/hourglass/public/icons/png/science-3.png b/hourglass/public/icons/png/science-3.png new file mode 100644 index 0000000..a53d7e1 Binary files /dev/null and b/hourglass/public/icons/png/science-3.png differ diff --git a/hourglass/public/icons/png/science-4.png b/hourglass/public/icons/png/science-4.png new file mode 100644 index 0000000..94acfba Binary files /dev/null and b/hourglass/public/icons/png/science-4.png differ diff --git a/hourglass/public/icons/png/science-5.png b/hourglass/public/icons/png/science-5.png new file mode 100644 index 0000000..067b0df Binary files /dev/null and b/hourglass/public/icons/png/science-5.png differ diff --git a/hourglass/public/icons/png/science-6.png b/hourglass/public/icons/png/science-6.png new file mode 100644 index 0000000..2291f16 Binary files /dev/null and b/hourglass/public/icons/png/science-6.png differ diff --git a/hourglass/public/icons/png/science-7.png b/hourglass/public/icons/png/science-7.png new file mode 100644 index 0000000..668e649 Binary files /dev/null and b/hourglass/public/icons/png/science-7.png differ diff --git a/hourglass/public/icons/png/science-8.png b/hourglass/public/icons/png/science-8.png new file mode 100644 index 0000000..ac8c0cc Binary files /dev/null and b/hourglass/public/icons/png/science-8.png differ diff --git a/hourglass/public/icons/png/science-9.png b/hourglass/public/icons/png/science-9.png new file mode 100644 index 0000000..1309560 Binary files /dev/null and b/hourglass/public/icons/png/science-9.png differ diff --git a/hourglass/public/icons/png/science.png b/hourglass/public/icons/png/science.png new file mode 100644 index 0000000..f5908dd Binary files /dev/null and b/hourglass/public/icons/png/science.png differ diff --git a/hourglass/public/icons/png/search.png b/hourglass/public/icons/png/search.png new file mode 100644 index 0000000..7167395 Binary files /dev/null and b/hourglass/public/icons/png/search.png differ diff --git a/hourglass/public/icons/png/shapes.png b/hourglass/public/icons/png/shapes.png new file mode 100644 index 0000000..ad929de Binary files /dev/null and b/hourglass/public/icons/png/shapes.png differ diff --git a/hourglass/public/icons/png/space.png b/hourglass/public/icons/png/space.png new file mode 100644 index 0000000..b56ee24 Binary files /dev/null and b/hourglass/public/icons/png/space.png differ diff --git a/hourglass/public/icons/png/speech-balloon-1.png b/hourglass/public/icons/png/speech-balloon-1.png new file mode 100644 index 0000000..738b855 Binary files /dev/null and b/hourglass/public/icons/png/speech-balloon-1.png differ diff --git a/hourglass/public/icons/png/speech-balloon.png b/hourglass/public/icons/png/speech-balloon.png new file mode 100644 index 0000000..b455fa5 Binary files /dev/null and b/hourglass/public/icons/png/speech-balloon.png differ diff --git a/hourglass/public/icons/png/sports.png b/hourglass/public/icons/png/sports.png new file mode 100644 index 0000000..928b511 Binary files /dev/null and b/hourglass/public/icons/png/sports.png differ diff --git a/hourglass/public/icons/png/stars-1.png b/hourglass/public/icons/png/stars-1.png new file mode 100644 index 0000000..6f8fa52 Binary files /dev/null and b/hourglass/public/icons/png/stars-1.png differ diff --git a/hourglass/public/icons/png/stars.png b/hourglass/public/icons/png/stars.png new file mode 100644 index 0000000..e7daa19 Binary files /dev/null and b/hourglass/public/icons/png/stars.png differ diff --git a/hourglass/public/icons/png/technology.png b/hourglass/public/icons/png/technology.png new file mode 100644 index 0000000..afeeff2 Binary files /dev/null and b/hourglass/public/icons/png/technology.png differ diff --git a/hourglass/public/icons/png/tool.png b/hourglass/public/icons/png/tool.png new file mode 100644 index 0000000..65adf5a Binary files /dev/null and b/hourglass/public/icons/png/tool.png differ diff --git a/hourglass/public/icons/png/transfer.png b/hourglass/public/icons/png/transfer.png new file mode 100644 index 0000000..6d9e168 Binary files /dev/null and b/hourglass/public/icons/png/transfer.png differ diff --git a/hourglass/public/icons/png/write-1.png b/hourglass/public/icons/png/write-1.png new file mode 100644 index 0000000..e24a4d9 Binary files /dev/null and b/hourglass/public/icons/png/write-1.png differ diff --git a/hourglass/public/icons/png/write-2.png b/hourglass/public/icons/png/write-2.png new file mode 100644 index 0000000..affe666 Binary files /dev/null and b/hourglass/public/icons/png/write-2.png differ diff --git a/hourglass/public/icons/png/write.png b/hourglass/public/icons/png/write.png new file mode 100644 index 0000000..de5e7f0 Binary files /dev/null and b/hourglass/public/icons/png/write.png differ diff --git a/hourglass/public/icons/png/writing.png b/hourglass/public/icons/png/writing.png new file mode 100644 index 0000000..8b0ca97 Binary files /dev/null and b/hourglass/public/icons/png/writing.png differ diff --git a/hourglass/server/main.js b/hourglass/server/main.js index 18d3698..e0e5abe 100644 --- a/hourglass/server/main.js +++ b/hourglass/server/main.js @@ -28,7 +28,9 @@ for (var i = 0; i < superadmins.length; i++) { }); if (superadmin !== undefined && !(Roles.userIsInRole(superadmin._id, 'superadmin'))) { Roles.addUsersToRoles(superadmin._id, 'superadmin'); - Houston._admins.insert({user_id: superadmin._id}); + Houston._admins.insert({ + user_id: superadmin._id + }); } } @@ -359,7 +361,7 @@ Meteor.methods({ $set: change }); } else if ((currentwork.class === Meteor.userId() || - _.contains(currentclass.moderators.concat(currentclass.admin), Meteor.userId()) || + _.contains(currentclass.moderators.concat(currentclass.admin), Meteor.userId()) || Meteor.userId() === currentwork.creator) && change.name.length <= 50 && change.description.length <= 150 && change.dueDate instanceof Date && change.dueDate.getTime() >= ref && @@ -390,8 +392,8 @@ Meteor.methods({ var user = Meteor.userId(); if (typeof comment === "string" && comment.length <= 200 && (workobject.class === Meteor.userId() || - (_.contains(currentclass.subscribers, Meteor.userId()) && - !_.contains(currentclass.banned, Meteor.userId())))) { + (_.contains(currentclass.subscribers, Meteor.userId()) && + !_.contains(currentclass.banned, Meteor.userId())))) { var commentInfo = { "comment": input[0], "user": user, @@ -441,7 +443,7 @@ Meteor.methods({ } }, 'deleteWork': function(workId) { - var currentwork = wokr.findOne({ + var currentwork = work.findOne({ _id: workId }); var currentclass = classes.findOne({ @@ -484,8 +486,8 @@ Meteor.methods({ }, 'reorderClasses': function(newOrder) { var current = Meteor.user().profile; - if(newOrder.every(elem => _.contains(current.classes, elem)) && - newOrder.length === current.classes.length) { + if (newOrder.every(elem => _.contains(current.classes, elem)) && + newOrder.length === current.classes.length) { current.classes = newOrder; Meteor.users.update({ _id: Meteor.userId()