Added toggling work

This commit is contained in:
Kenneth Jao 2016-08-28 18:41:35 -04:00
parent f6449ffe0c
commit 5f186e55fc
5 changed files with 155 additions and 20 deletions

View File

@ -808,7 +808,7 @@ input, textarea {
#commentSubmit {
padding: 2%;
background-color: rgba(255,255,255,0.1);
display: inline;
float: right;
cursor: pointer;
@ -821,4 +821,50 @@ input, textarea {
#commentSubmit:hover {
background-color: rgba(255,255,255,0.05);
}
#done {
height: 60%;
}
#toggleButtons {
font-size: 150%;
height: 40%;
bottom: 0;
}
#toggleButtons i {
margin-right: 12%;
-webkit-transition: color 0.4s ease;
-moz-transition: color 0.4s ease;
-ms-transition: color 0.4s ease;
transition: color 0.4s ease;
}
#markDone p {
font-size: 70%;
}
#markDone i {
margin-right: 5%;
}
#markDone p, #markConfirm p, #markReport p {
margin: 0;
display: inline;
}
#markDone, #markConfirm, #markReport {
padding: 5%;
background-color: rgba(0,0,0,0.1);
-webkit-transition: box-shadow 0.4s ease, background-color 0.4s ease;
-moz-transition: box-shadow 0.4s ease, background-color 0.4s ease;
-ms-transition: box-shadow 0.4s ease, background-color 0.4s ease;
transition: box-shadow 0.4s ease, background-color 0.4s ease;
}
#markDone:hover, #markConfirm:hover, #markReport:hover {
box-shadow: inset 0 0 0 99999px rgba(0,0,0,0.15);
}

View File

@ -78,6 +78,16 @@
<p class="prefOptionText">Never</p>
</div>
</div>
<div>
<div class="inputRadioPref">
<p class="prefTitle">Hide Done:</p>
<span class="change radio" re="readonly" id="prefDone">{{pref 'done'}}</span>
</div>
<div class="prefOptions" style="background-color:{{divColor 'header'}}">
<p class="prefOptionText">Yes</p>
<p class="prefOptionText">No</p>
</div>
</div>
</div>
</div>
<img id="bg" src={{bgSrc}}>
@ -137,7 +147,7 @@
{{#unless newWork}}
<div id="workComments">
<h3>Comments</h3>
<div id="comment" style="height:{{commentDim}}">
<div id="comment" style="max-height:{{commentDim}}">
{{#each work 'comments'}}
{{> comment}}
{{/each}}
@ -154,7 +164,22 @@
</div>
</div>
<div id="workToggle">
<div id="done">
</div>
<div id="toggleButtons">
<div id="markDone" style="background-color:{{work 'done'}}">
<i class="fa fa-check-square-o" aria-hidden="true"></i>
<p>{{work 'doneText'}}</p>
</div>
<div id="markConfirm" style="color:{{work 'userConfirm'}}">
<i class="fa fa-thumbs-up" aria-hidden="true"></i>
<p>{{work 'confirmations'}}</p>
</div>
<div id="markReport" style="color:{{work 'userReport'}}">
<i class="fa fa-thumbs-down" aria-hidden="true"></i>
<p>{{work 'reports'}}</p>
</div>
</div>
</div>
{{#if newWork}}
{{#if inRole}}

View File

@ -50,7 +50,8 @@ var workColors = {
var defaults = {
"theme":"light",
"mode":"classes",
"timeHide":"1 Day"
"timeHide":"1 Day",
"done":true
};
var ref = {
@ -61,6 +62,11 @@ var ref = {
"Never":0
};
var dref = {
"Yes":true,
"No":false
}
// Reactive variables.
Session.set("calendarclasses", null);
Session.set("sidebar", null);
@ -80,7 +86,7 @@ Template.registerHelper('divColor', (div) => {
return Session.get("themeColors")[Meteor.user().profile.preferences.theme][div];
});
Template.registerHelper("textColor", () => {
Template.registerHelper('textColor', () => {
document.getElementsByTagName("body")[0].style.color = Session.get("themeColors")[Meteor.user().profile.preferences.theme].text;
return;
});
@ -130,9 +136,11 @@ Template.registerHelper('myClasses', () => {
j = 0;
}
}
if(thisWork[j] !== "no" && thisWork[j].done.indexOf(Meteor.userId()) !== -1) {
thisWork[j] = "no";
j = 0;
if(thisWork[j] !== "no" && dref[Meteor.user().profile.preferences.done]) {
if(thisWork[j].done.indexOf(Meteor.userId()) !== -1) {
thisWork[j] = "no";
j = 0;
}
}
}
while(thisWork.indexOf("no") !== -1) thisWork.splice(thisWork.indexOf("no"),1);
@ -146,12 +154,14 @@ Template.registerHelper('myClasses', () => {
lastWeek: '[Last] dddd',
sameElse: 'MMMM Do'
});
if(thisWork[j].dueDate === "Today") {
thisWork[j].cardDate = "600";
} else if(thisWork[j].dueDate === "Tomorrow") {
thisWork[j].cardDate = "400";
}
thisWork[j].typeColor = workColors[thisWork[j].type];
var hoverHighlight = Session.get("classDispHover");
if(hoverHighlight !== null && hoverHighlight === found._id) {
thisWork[j].scale = "-ms-transform: scale(1.12)-webkit-transform: scale(1.12);transform: scale(1.12)";
@ -173,11 +183,11 @@ Template.registerHelper('pref', (val) => {
array.preferences = defaults;
Session.set("serverData",array);
sendData("editProfile");
if(val === 'timeHide') return defaults[val];
if(val === 'timeHide' || val === 'done') return defaults[val];
return defaults[val].charAt(0).toUpperCase() + defaults[val].slice(1);
} else {
var preferences = Meteor.user().profile.preferences;
if(val === 'timeHide') return preferences[val];
if(val === 'timeHide' || val === 'done') return preferences[val];
return preferences[val].charAt(0).toUpperCase() + preferences[val].slice(1);
}
});
@ -377,10 +387,9 @@ Template.main.helpers({
return "width:"+w.toString()+"px;height:"+h.toString()+"px;margin-left:"+-0.5*w.toString()+"px;margin-top:"+-0.5*h.toString()+"px";
},
commentDim() {
if(Session.get("newWork") || Session.get("newWork") === null) return;
var work = Session.get("currentWork");
if(work === null) return;
if(work.comments.length <= 3) return;
if(Session.get("newWork") === null || work === null) return;
if(Session.get("newWork") || work.comments.length <= 3) return;
return 0.23*window.innerHeight.toString() + "px";
},
work(value) {
@ -471,7 +480,7 @@ Template.main.events({
!event.target.parentNode.className.includes("prefOptions")) {
closeInput(sessval);
}
if (e !== Session.get("sidebar") &&
!e.includes("fa-cog") &&
!e.includes("fa-bars") &&
@ -789,8 +798,19 @@ Template.main.events({
if(chars === 200) {
document.getElementById("commentRestrict").style.color = "#FF1A1A";
}
Session.set("commentRestrict", "Characters left: " + (200-chars).toString());
Session.set("commentRestrict", "Characters left: " + (200-chars).toString());
},
'click #markDone' () {
Session.set("serverData", [Session.get("currentWork")._id, "done"])
sendData("toggleWork");
},
'click #markConfirm' () {
Session.set("serverData", [Session.get("currentWork")._id, "confirmations"])
sendData("toggleWork");
},
'click #markReport' () {
Session.set("serverData", [Session.get("currentWork")._id, "reports"])
sendData("toggleWork");
}
});
@ -813,7 +833,15 @@ function sendData(funcName) {
Meteor.call(funcName, Session.get("serverData") , function(err,result) {
if((funcName === "editWork" || funcName === "createWork") && Session.get("mode") === "calendar") {
$("#fullcalendar").fullCalendar( 'refetchEvents' );
}
} else if(funcName === "toggleWork") {
var workId = Session.get("currentWork")._id;
var thisWork = work.findOne({_id:workId});
Session.set("currentWork",thisWork);
var thisReadWork = formReadable(thisWork);
Session.set("currentReadableWork",thisReadWork);
} else if(funcName === "editProfile") {
$("#fullcalendar").fullCalendar( 'refetchEvents' );
}
});
}
@ -884,7 +912,8 @@ function getPreferencesData() {
var options = {
"theme":document.getElementById("prefTheme").childNodes[0].nodeValue.toLowerCase(),
"mode":document.getElementById("prefMode").childNodes[0].nodeValue.toLowerCase(),
"timeHide":document.getElementById("prefHide").childNodes[0].nodeValue
"timeHide":document.getElementById("prefHide").childNodes[0].nodeValue,
"done":document.getElementById("prefDone").childNodes[0].nodeValue
};
profile.preferences = options;
return profile;
@ -908,6 +937,30 @@ function toDate(date) {
function formReadable(input) {
input.dueDate = getReadableDate(input.dueDate);
input.type = input.type[0].toUpperCase() + input.type.slice(1);
if(input.done.indexOf(Meteor.userId()) !== -1) {
input.done = "#27A127";
input.doneText = "Done!";
} else {
input.done = "";
input.doneText = "Mark done";
}
if(input.confirmations.indexOf(Meteor.userId()) !== -1) {
input.userConfirm = "#27A127";
} else {
input.userConfirm = "";
}
if(input.reports.indexOf(Meteor.userId()) !== -1) {
input.userReport = "#FF1A1A";
} else {
input.userReport = "";
}
input.confirmations = input.confirmations.length;
input.reports = input.reports.length;
var comments = input.comments;
var resort = [];
if(!Session.get("newWork")) {

View File

@ -177,6 +177,17 @@
<p class="profOptionText">Never</p>
</div>
</div>
<br>
<div>
<div class="inputRadio">
<p class="profTitle">Hide Done:</p>
<span class="change radio" re="readonly" id="prefDone">{{pref 'done'}}</span>
</div>
<div class="profOptions" style="background-color:{{divColor 'header'}}">
<p class="profOptionText">Yes</p>
<p class="profOptionText">No</p>
</div>
</div>
</div>
</div>
</div>

View File

@ -464,10 +464,10 @@ Meteor.methods({
if (userindex === -1) {
workobject[input[1]] = workobject[input[1]].concat(Meteor.userId());
} else {
workobject[input[1]] = workobject[input[1]].splice(userindex, 1);
workobject[input[1]].splice(userindex, 1);
}
work.update({
_id: input[1]
_id: input[0]
}, {
$set: workobject
});