';
list += '';
}
}
}
list += "";
document.getElementById(element).innerHTML = list;
document.getElementById("stats").innerHTML = '
Total items:
' + punchList.length;
document.getElementById("stats").innerHTML += '
Blocked items:
' + countWaiting;
document.getElementById("stats").innerHTML += '
In Progress:
' + countInProgress;
document.getElementById("stats").innerHTML += '
New Items:
' + countNew;
document.getElementById("stats").innerHTML += '
Done Items:
' + countDone + '
';
mkSortable();
enableDrop();
}
var x = setInterval(function() {
punchList = window.punches;
for ( i = 0; i < punchList.length; i++ ) {
if ( punchList[i].progress.toLowerCase() != "done" && punchList[i].startTime != undefined ) {
distance = (new Date().getTime() - new Date(punchList[i].startTime).getTime());
seconds = Math.floor((distance / 1000) % 60);
minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
days = Math.floor(distance / (1000 * 60 * 60 * 24));
if (hours < 10) {
hours = ('0' + hours);
}
if (minutes < 10) {
minutes = ('0' + minutes);
}
if (seconds < 10) {
seconds = ('0' + seconds);
}
document.getElementById("timer-" + punchList[i].uuid).innerHTML = days + "day(s), " + hours + ":" + minutes + ":" + seconds;
}
if ( punchList[i].progress.toLowerCase() != "done" && punchList[i].nDate != "" ) {
var style = "punch-list";
distance = -(new Date().getTime() - new Date(punchList[i].nDate).getTime());
if ( (distance / 1000) <= 0 ) { style = "overdue" }
else if ( (distance / 1000) <= 259200 ) { style = "duesoon" }
seconds = Math.floor((distance / 1000) % 60);
minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
days = Math.floor(distance / (1000 * 60 * 60 * 24));
if (days < 0) { days = (days + 1); }
if (hours < 0) { hours = (-(hours) - 1); }
if (minutes < 0) { minutes = -(minutes); }
if (seconds < 0) { seconds = -(seconds); }
if (hours < 10) { hours = ('0' + hours); }
if (minutes < 10) { minutes = ('0' + minutes); }
if (seconds < 10) { seconds = ('0' + seconds); }
document.getElementById("countdown-" + punchList[i].uuid).innerHTML = days + "day(s), " + hours + ":" + minutes + ":" + seconds;
document.getElementById("countdown-" + punchList[i].uuid).classList.add(style);
}
}
}, 1000);
function mainMenuDrop() {
document.getElementById("mainMenuDropdown").classList.toggle("show");
}
function progressMenuDrop(uuid) {
document.getElementById("progressDropdown-" + uuid).classList.toggle("show");
}
function enableDrop() {
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
}
function mkSortable() {
punchList = window.punches;
$( function() {
$( "#sortable" ).sortable({
cancel: ".portlet-toggle",
placeholder: "portlet-placeholder ui-corner-all",
revert: true,
start: function(event, ui) {
window.sortObjectUUID = punchList[ui.item.index()].uuid;
console.log(`Start Position: ${ui.item.index()}`);
},
stop: function(event, ui) {
setPriority(window.sortObjectUUID, ui.item.index());
console.log(`New Position: ${ui.item.index()}`);
}
});
$( ".portlet" )
.addClass( "ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" )
.find( ".backlog-list-header" )
.addClass( "ui-corner-all" )
.prepend( "
");
$( ".portlet-toggle" ).on( "click", function() {
var icon = $( this );
icon.toggleClass( "ui-icon-minusthick ui-icon-plusthick" );
icon.closest( ".portlet" ).find( ".backlog-list-content" ).toggle();
});
$( "#sortable" ).disableSelection();
} );
// pop-over dialog
$( "#dialog" ).dialog({ autoOpen: false });
$( "#opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
});
}
function setPriority(sortObject, newPosition) {
var punchList = window.punches;
item = findArrayId(sortObject);
for (i = 0; i < punchList.length; i++) {
if (punchList[i].priority < 100 && punchList[i].priority >= newPosition && punchList[i].uuid != punchList[item].uuid) {
punchList[i].priority = i;
}
}
punchList[item].priority = newPosition;
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
function startPunch(uuid) {
var punchList = window.punches;
item = findArrayId(uuid);
if ( punchList[item].startTime === undefined ) {
punchList[item].startTime = new Date().getTime();
}
punchList[item].progress = "In Progress";
punchList[item].priority = 0;
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
function completePunch(uuid) {
var punchList = window.punches;
item = findArrayId(uuid);
if ( punchList[item].doneTime === undefined ) {
punchList[item].doneTime = new Date().getTime();
}
punchList[item].progress = "Done";
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
function waitingPunch(uuid) {
var punchList = window.punches;
item = findArrayId(uuid);
punchList[item].progress = "Waiting";
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
function mkPunchNew(uuid) {
var punchList = window.punches;
item = findArrayId(uuid);
punchList[item].progress = "New";
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
function enablePunchDetail(uuid) {
var punchList = window.punches;
item = findArrayId(uuid);
console.log(`inside enablePunchDetail`);
disableElement("punchListAll");
enableElement("punchDetail");
// html = "";
html = "
subject: " + punchList[item].subject + " Created: " + punchList[item].cDate + " Modified Date: " + punchList[item].mDate + " Priority: " + punchList[item].priority + " Progress: " + punchList[item].progress + "
";
document.getElementById("punchDetail").innerHTML = html;
}
function genEventForm() {
document.getElementById("newSubject").value = "subject";
document.getElementById("newPriority").value = "priority";
document.getElementById("timepickerCreate").value = "date";
document.getElementById("newNotes").value = '';
disableElement('punchListAll');
enableElement('newEvent');
}
function createNewEvent() {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
getJson();
// console.log(`${punchList}`);
// console.log(`${window.punches}`);
// disableElement("punchList");
// disableElement("punchDetail");
punchList = window.punches;
var subjectField = document.getElementById("newSubject").value;
var priorityField = document.getElementById("newPriority").value;
var progressField = document.getElementById("newProgress").value;
var nDateField = document.getElementById("timepickerCreate").value;
var notesField = document.getElementById("newNotes").value;
var newTag = document.getElementById("tagsCreate").value.toLowerCase();
var stripLeadingSpace = newTag.replace(/, /g, ',');
var noSpaces = stripLeadingSpace.replace(/ /g, '_');
var newTags = noSpaces.split(",");
// make sure tags object exists
/*
if (punchList[item].tags === undefined) {
console.log(`Adding tags object to punchList[${item}]`);
punchList[item].tags = [];
}
for ( nt = 0; nt < newTags.length; nt++ ) {
punchList[item].tags.push(newTags[nt]);
console.log(`${punchList[item].tags}`);
}
*/
var newEventJson = { uuid: genUid(), nDate: nDateField, subject: subjectField, priority: priorityField, progress: progressField, tags: newTags, notes: notesField };
punchList.push(newEventJson);
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
disableElement("newEvent");
enableElement("punchListAll");
// document.getElementById("newEventList").innerHTML = jsonStr;
}
function genDaily() {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
getJson();
punchList = window.punches;
var daily = [ "Check Workday", "Check Expenses", "Check Change Cases", "Check TD's", "Check at-mentions" ];
console.log(`${daily[1]}`);
for (x = 0; x < daily.length; x++) {
var newEventJson = { uuid: genUid(), nDate: "EOD", subject: daily[x], priority: "1", progress: "new", notes: "", tags: [ "work", "daily", "today" ] };
punchList.push(newEventJson);
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
}
function genWeekly() {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
getJson();
punchList = window.punches;
var weekly = [ "Update ORB Notes", "Prep Weekly Meeting", "Build out Broadcast Timer" ];
for (x = 0; x < weekly.length; x++) {
var newEventJson = { uuid: genUid(), nDate: "Tuesday", subject: weekly[x], priority: "1", progress: "new", notes: "", tags: [ "work", "weekly" ] };
punchList.push(newEventJson);
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
}
}
function deletePunch(uuid) {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
getJson();
// console.log(`${punchList}`);
// console.log(`${window.punches}`);
punchList = window.punches;
item = findArrayId(uuid);
console.log(`splicing ${item}`);
punchList.splice(item, 1);
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
// document.getElementById("newEventList").innerHTML = jsonStr;
}
function enableElement(element) {
console.log(`enabling ${element}`);
document.getElementById(element).style.display = "block";
}
function disableElement(element) {
console.log(`disabling ${element}`);
document.getElementById(element).style.display = "none";
}
function displayMeta() {
document.getElementById("meta").innerHTML = "Version: " + version ;
}
function toggleShowDone() {
if (showDone === false) {
window.showDone = true;
} else if (showDone === true) {
window.showDone = false;
} else {
window.showDone = false;
}
getJson();
}
function editPunch(uuid) {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
disableElement("punchListAll");
enableElement("editPunch");
punchList = window.punches;
item = findArrayId(uuid);
if ( punchList[item].tags === undefined ) {
punchList[item].tags = [];
}
var id = item;
var subject = punchList[id].subject;
var priority = punchList[id].priority;
var progress = punchList[id].progress;
var nDate = punchList[id].nDate;
var notes = punchList[id].notes;
var tags = punchList[id].tags;
var html = '
';
html += '
';
html += '
';
html += '
Priority:
';
html += '
Need By:
';
html += '
Progress:
';
html += progress;
html += '
';
html += '
Tags:
' + tags + '
';
html += '
Add Tag:
Add Tag
';
html += '
Notes:
';
html += '
Update ';
html += '
Close ';
html += '
';
document.getElementById("editPunch").innerHTML = html;
}
function submitEditPunch(uuid) {
punchList = window.punches;
// var uuid = document.getElementById("editID").value;
var id = findArrayId(uuid);
var subjectField = document.getElementById("editSubject").value;
var priorityField = document.getElementById("editPriority").value;
var progressField = document.getElementById("editProgress").innerHTML;
var nDateField = document.getElementById("timepickerEdit").value;
//var tagsField = document.getElementById("editTags").value.toLowerCase();
var notesField = document.getElementById("editNotes").value;
punchList[id].subject = subjectField;
punchList[id].priority = priorityField;
punchList[id].progress = progressField;
punchList[id].nDate = nDateField;
//punchList[id].tags = tagsField;
punchList[id].notes = notesField;
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
disableElement("editPunch");
}
function addTag(uuid) {
/* Before doing this,
Refresh the array,
So that we don't overwrite data */
var item = findArrayId(uuid);
// var item = document.getElementById("addTag-" + uuid).value;
var newTag = document.getElementById("addTag-" + uuid).value.toLowerCase();
var stripLeadingSpace = newTag.replace(', ', ',');
var noSpaces = stripLeadingSpace.replace(' ', '_');
var newTags = noSpaces.split(",");
// make sure tags object exists
if (punchList[item].tags === undefined) {
console.log(`Adding tags object to punchList[${item}]`);
punchList[item].tags = [];
}
for ( nt = 0; nt < newTags.length; nt++ ) {
punchList[item].tags.push(newTags[nt]);
console.log(`${punchList[item].tags}`);
}
jsonStr = JSON.stringify(punchList);
putJson(jsonStr);
editPunch(uuid);
// disableElement("editPunch");
// enableElement("punchListAll");
disableElement("punchListAll");
}
function clearDefault(a){
if (a.defaultValue === a.value) {
a.value="";
}
}
function genUid() {
function chr4() {
return Math.random().toString(16).slice(-4);
}
return chr4() + chr4() +
'-' + chr4() +
'-' + chr4() +
'-' + chr4() +
'-' + chr4() + chr4() + chr4();
}
//google stuff
function onSignIn(googleUser) {
// var profile = googleUser.getBasicProfile();
// console.log('ID: ' + profile.getId()); // Do not send to your backend! Use an ID token instead.
// console.log('Name: ' + profile.getName());
// console.log('Image URL: ' + profile.getImageUrl());
// console.log('Email: ' + profile.getEmail()); // This is null if the 'email' scope is not present.
// getJson();
}
function signOut() {
var auth2 = gapi.auth2.getAuthInstance();
auth2.signOut().then(function () {
console.log('User signed out.');
});
}
getJson();
$('li').on("click", function(event){
var target = event.target,
index = $(target).index();
console.log(target, index);
document.getElementById("debug1").innerHTML = target + "
" + index;
});