var config = { apiKey: "AIzaSyA4De5itV56yaOBfBW6Cnk3fS7skPmDCHM", authDomain: "punchlist-1561043639952.firebaseapp.com", databaseURL: "https://punchlist-1561043639952.firebaseio.com", projectId: "punchlist-1561043639952", storageBucket: "", messagingSenderId: "999467953896", appId: "1:999467953896:web:a4ded59b12ccb9ff" }; //firebase.initializeApp(firebaseConfig); if (!firebase.apps.length) { firebase.initializeApp(config); } function initApp() { console.log("function: initApp()"); // Auth state changes. // [START authstatelistener] firebase.auth().onAuthStateChanged(function(user){ console.log(`in onAuthStateChanged`); if (user) { console.log(`${user.displayName}`); // User is signed in. var displayName = user.displayName; var email = user.email; var emailVerified = user.emailVerified; var photoURL = user.photoURL; var isAnonymous = user.isAnonymous; var uid = user.uid; window.uid = uid; var providerData = user.providerData; writeUserData(uid, displayName, email, photoURL); //newPunch(uid); loadPunches(uid); document.getElementById('whoami').innerHTML = email; // [START_EXCLUDE] //document.getElementById('quickstart-sign-in-status').textContent = 'Signed in'; //document.getElementById('signout').disabled = false; //document.getElementById('quickstart-account-details').textContent = JSON.stringify(user, null, ' '); // [END_EXCLUDE] } else { // User is signed out. // [START_EXCLUDE] //document.getElementById('quickstart-sign-in-status').textContent = 'Signed out'; //document.getElementById('signout').disabled = true; //document.getElementById('quickstart-account-details').textContent = 'null'; // [END_EXCLUDE] } }); // [END authstatelistener] //document.getElementById('signout').addEventListener('click', handleSignOut, true); } // AUTH // // [START googlecallback] function onSignIn(googleUser) { console.log('Google Auth Response', googleUser); // We need to register an Observer on Firebase Auth to make sure auth is initialized. var unsubscribe = firebase.auth().onAuthStateChanged(function(firebaseUser) { unsubscribe(); // Check if we are already signed-in Firebase with the correct user. if (!isUserEqual(googleUser, firebaseUser)) { // Build Firebase credential with the Google ID token. // [START googlecredential] var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token); // [END googlecredential] // Sign in with credential from the Google user. // [START authwithcred] firebase.auth().signInWithCredential(credential).catch(function(error) { // Handle Errors here. var errorCode = error.code; var errorMessage = error.message; // The email of the user's account used. var email = error.email; // The firebase.auth.AuthCredential type that was used. var credential = error.credential; // [START_EXCLUDE] if (errorCode === 'auth/account-exists-with-different-credential') { alert('You have already signed up with a different auth provider for that email.'); // If you are using multiple auth providers on your app you should handle linking // the user's accounts here. } else { console.error(error); } // [END_EXCLUDE] }); // [END authwithcred] } else { var user = googleUser; console.log('User already signed-in Firebase.'); var displayName = user.displayName; var email = user.email; var emailVerified = user.emailVerified; var photoURL = user.photoURL; var isAnonymous = user.isAnonymous; var uid = user.uid; var providerData = user.providerData; // [START_EXCLUDE] //document.getElementById('quickstart-sign-in-status').textContent = 'Signed in'; //document.getElementById('signout').disabled = false; //document.getElementById('quickstart-account-details').textContent = JSON.stringify(user, null, ' '); // [END_EXCLUDE] } }); } // [END googlecallback] /** * Check that the given Google user is equals to the given Firebase user. */ // [START checksameuser] function isUserEqual(googleUser, firebaseUser) { if (firebaseUser) { var providerData = firebaseUser.providerData; for (var i = 0; i < providerData.length; i++) { if (providerData[i].providerId === firebase.auth.GoogleAuthProvider.PROVIDER_ID && providerData[i].uid === googleUser.getBasicProfile().getId()) { // We don't need to reauth the Firebase connection. return true; } } } return false; } // [END checksameuser] /** * Handle the sign out button press. */ function handleSignOut() { var googleAuth = gapi.auth2.getAuthInstance(); googleAuth.signOut().then(function() { firebase.auth().signOut(); }); } function writeUserData(userId, name, email, imageUrl) { console.log("function: writeUserData(" + userId + ", " + name + ", " + email + ", " + imageUrl + ")"); firebase.database().ref('users/' + userId).update({ username: name, email: email, profile_picture : imageUrl }); } //var punchesRef = firebase.database().ref('users/' + userId + '/punches'); //punchesRef.on('value', function(snapshot) { // updateStarCount(postElement, snapshot.val()); //}); function newPunch(uid, subject, priority, progress, needBy, notes, tags) { console.log("function: newPunch(" + uid + ", " + subject + ", " + priority + ", " + progress + ", " + needBy + ", " + notes + ", " + tags + ")"); var punchData = { uid: uid, subject: subject, priority: priority, progress: progress, needByDate: needBy, notes: notes, tags: tags }; //Get a key for a new post var newPunchKey = firebase.database().ref().child('users/' + window.uid + '/punches').push().key; // Write the new punch data var updates = {}; updates['users/' + uid + '/punches/' + newPunchKey] = punchData; return firebase.database().ref().update(updates); } function genDaily() { console.log("function: genDaily()"); var daily = [ "Check Workday", "Check Expenses", "Check Change Cases", "Check TD's", "Check at-mentions" ]; console.log(`${daily[1]}`); priority = parseInt("3"); var d = new Date(); var needBy = d.setHours(17,0,0); var newTag = "work,daily"; var stripLeadingSpace = newTag.replace(/, /g, ','); var noSpaces = stripLeadingSpace.replace(/ /g, '_'); var newTags = noSpaces.split(","); for (x = 0; x < daily.length; x++) { newPunch(window.uid, daily[x], priority, "new", needBy, "", newTags); } } function genWeekly() { console.log("function: genWeekly()"); //get next monday: // var d = new Date(); // d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7); // console.log(d) // }; var weekly = [ "Update ORB Notes", "Prep Weekly Meeting", "Build out Broadcast Timer" ]; var priority = parseInt("5"); var newTag = "work,weekly"; var stripLeadingSpace = newTag.replace(/, /g, ','); var noSpaces = stripLeadingSpace.replace(/ /g, '_'); var newTags = noSpaces.split(","); var needBy = ''; for (x = 0; x < weekly.length; x++) { newPunch(window.uid, weekly[x], priority, "new", needBy, "", newTags); } } // Read the punches via listener // standard functions function setPriority(sortObject, newPosition) { console.log("function: setPriority(" + sortObject + ", " + newPosition + ")"); var priority = {}; priority['users/' + window.uid + '/punches/' + sortObject + '/priority' ] = parseInt(newPosition); firebase.database().ref().update(priority); // loadPunches(window.uid); } function startPunch(reference) { console.log("function: startPunch(" + reference + ")"); var start = new Date().getTime(); // Write the new punch data var progress = {}; var startTime = {}; progress['users/' + window.uid + '/punches/' + reference + '/progress'] = "in progress"; startTime['users/' + window.uid + '/punches/' + reference + '/startTime'] = start; firebase.database().ref().update(progress); firebase.database().ref().update(startTime); $( "#" + reference ) .removeClass("waiting") .addClass( "inProgress" ); $( "#progress" + reference ).addClass( "inProgress" ); // loadPunches(window.uid); } function completePunch(reference) { console.log("function: completePunch(" + reference + ")"); var end = new Date().getTime(); // Write the new punch data var progress = {}; var endTime = {}; progress['users/' + window.uid + '/punches/' + reference + '/progress'] = "done"; endTime['users/' + window.uid + '/punches/' + reference + '/endTime'] = end; firebase.database().ref().update(progress); firebase.database().ref().update(endTime); deletePunchElement(reference); // loadPunches(window.uid); } function waitingPunch(reference) { console.log("function: waitingPunch(" + reference + ")"); var progress = {}; progress['users/' + window.uid + '/punches/' + reference + '/progress'] = "waiting"; firebase.database().ref().update(progress); $( "#" + reference ) .removeClass( "inProgress" ) .addClass( "waiting" ); // loadPunches(window.uid); } function mkPunchNew(reference) { console.log("function: mkPunchNew(" + reference + ")"); var progress = {}; progress['users/' + window.uid + '/punches/' + reference + '/progress'] = "new"; firebase.database().ref().update(progress); // loadPunches(window.uid); } function clearDefault(a){ if (a.defaultValue === a.value) { a.value=""; } } function mkSortable(){ console.log("function: mkSortable()"); $( function() { $( "#sortable" ).sortable({ cancel: ".portlet-toggle", placeholder: "portlet-placeholder ui-corner-all", revert: true, distance: 50, start: function(event, ui) { //console.log($( this ).( "li" )); console.log(ui.item.context.id); console.log(`Start Position: ${ui.item.index()}`); }, stop: function(event, ui) { // setPriority(window.sortObjectUUID, ui.item.index()); console.log(event, ui); setPriority(ui.item.context.id, ui.item.index()); console.log(`New Position: ${ui.item.index()}`); } }); }); } function enableDetail(){ console.log("function: enableDetail()"); $(function() { $( ".portlet" ) .addClass( "ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" ) .find( ".details-container" ) .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" ); }); } // some element functions... 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"; } // menus function mainMenuDrop() { document.getElementById("mainMenuDropdown").classList.toggle("show"); } function progressMenuDrop(uuid) { document.getElementById("progressDropdown" + uuid).classList.toggle("show"); } function toggleElement(element) { document.getElementById(element).classList.toggle("show"); } 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'); } } } } // end menus // // edit punch function editPunch(uuid) { disableElement("punchListAll"); enableElement("editPunch"); var punchRef = firebase.database().ref('users/' + uid + '/punches/' + uuid); punchRef.once('value').then(function(snapshot) { var data = snapshot.val(); console.log(data); var nDate = new Date(data.needByDate); var notes = data.notes; var priority = data.priority; var progress = data.progress; var subject = data.subject; var tags = data.tags; var html = '
'; html += ''; html += '
Subject:
'; html += '
Priority:
'; html += '
Need By:
'; html += '
Progress:
'; html += progress; html += '
'; html += '
Add Tag:
'; html += '
Notes:
'; html += ''; html += ''; html += '
'; document.getElementById("editPunch").innerHTML = html; }); } function submitEditPunch(uuid) { var punchRef = firebase.database().ref('users/' + window.uid + '/punches/' + uuid); // var uuid = document.getElementById("editID").value; var subjectField = document.getElementById("editSubject").value; var priorityField = parseInt(document.getElementById("editPriority").value); var progressField = document.getElementById("editProgress").innerHTML; var nDateField = document.getElementById("timepickerEdit").value; var tagsField = document.getElementById("editTags").value.toLowerCase(); var stripLeadingSpace = tagsField.replace(/, /g, ','); var noSpaces = stripLeadingSpace.replace(/ /g, '_'); var tagField = noSpaces.split(","); var notesField = document.getElementById("editNotes").value; var punchData = { subject: subjectField, priority: priorityField, progress: progressField, needByDate: nDateField, notes: notesField, tags: tagField }; var updates = {}; updates['users/' + uid + '/punches/' + uuid] = punchData; firebase.database().ref().update(updates); disableElement('editPunch'); enableElement('punchListAll'); } function createTimer(element,timeTo) { if (timeTo != null && timeTo != undefined && new Date(timeTo).getTime() != 'Invalid Date') { var x = setInterval(function() { distance = (new Date().getTime() - new Date(timeTo).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 (days < 0) { days = -(days + 1); seconds = (seconds + 1); } if (hours < 0) { hours = (-(hours) - 1); } if (hours < 10) { hours = ('0' + hours); } if (minutes < 0) { minutes = -(minutes); } if (minutes < 10) { minutes = ('0' + minutes); } seconds = (seconds -1); //really effing dumb. if (seconds < 0) { seconds = -(seconds); } if (seconds < 10) { seconds = ('0' + seconds); } //console.log("Setting Timer on element:" + element); var exists = document.getElementById(element); if (exists != null) { document.getElementById(element).innerHTML = days + "day(s), " + hours + ":" + minutes + ":" + seconds; } else { console.log("Could not update: " + element + ", because: " + exists); } }, 1000); } } function formatDate(d) { d = new Date(d); var minutes = d.getMinutes(); var hours = d.getHours(); if (minutes < 10) { minutes = ('0' + minutes); } if (hours === 0) { hours = ('0' + hours); } var s = d.getFullYear() + '/' + d.getMonth() + '/' + d.getDate() + ' ' + hours + ':' + minutes; return s; } // load punches function genPunchListItem(elementData, element) { $( elementData ).appendTo( element ); } function updateElementData(element, d) { var exists = document.getElementById(element); if ( exists != null || exists != undefined ) { var e = document.getElementById(element).innerHTML; if ( d != e ) { console.log("updating: " + element + ", with: " + d + ", was: " + e); document.getElementById(element).innerHTML = d; } else if ( d === e ) { console.log("Not Updating: " + element + ", because: " + d + " === " + e); } else { console.log("Not updating: " + element + ", because: Something weird happened with: " + d + " & " + e); } } else { console.log("add new element"); } } function updatePunchElement(childKey, childData) { updateElementData("priority" + childKey, childData.priority); updateElementData("subject" + childKey, childData.subject); updateElementData("progress" + childKey, childData.progress); updateElementData("neededBy" + childKey, childData.needByDate); //tags } function addPunchElement(childKey, childData) { if (childData.progress.toLowerCase() === "in progress") { var style = "inProgress"; } else if (childData.progress.toLowerCase() === "waiting") { var style = "waiting"; } else if (childData.progress.toLowerCase() === "new") { var style = "punch-default"; } else { style = "punch-default"; } if (childData.progress.toLowerCase() != "done") { genPunchListItem('
  • ', '#sortable'); genPunchListItem('
    ', '#' + childKey); genPunchListItem('
    ', '#div-portlet' + childKey); genPunchListItem('
    ', '#div-portlet' + childKey); genPunchListItem('
    ' + childData.priority + '
    ', '#priority-container' + childKey); genPunchListItem('
    ' + childData.subject + '
    details
    ', '#details-container' + childKey); genPunchListItem('
    ', '#details-container' + childKey); genPunchListItem('
    ' + childData.progress + '
    ', '#details-col-one' + childKey); genPunchListItem('
    ', '#details-col-one' + childKey); // status dropdown genPunchListItem('', '#details-container' + childKey); genPunchListItem('', '#dropdown-wrapper' + childKey); genPunchListItem('', '#dropdown-wrapper' + childKey); genPunchListItem('New', '#progressDropdown' + childKey); genPunchListItem('Start', '#progressDropdown' + childKey); genPunchListItem('Waiting', '#progressDropdown' + childKey); genPunchListItem('Finish', '#progressDropdown' + childKey); genPunchListItem('
    ', '#details-container' + childKey); genPunchListItem('
    ', '#details-container' + childKey); if ( childData.needByDate != null && childData.needByDate != undefined && childData.needByDate != '' ) { genPunchListItem('
    ', '#details-col-three' + childKey); genPunchListItem('
    ' + formatDate(childData.needByDate) + '
    ', '#neededBy' + childKey); genPunchListItem('
    ', '#neededBy' + childKey); createTimer('needby-date-timer' + childKey, childData.needByDate); genPunchListItem('
    ', '#details-col-three' + childKey); if ( (new Date(childData.needByDate).getTime() - new Date().getTime()) <= 0 ) { $( '#needby-data' + childKey ).addClass( "overdue" ); } else if ( ((new Date(childData.needByDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) { $( '#needby-data' + childKey ).addClass( "duesoon" ); } } genPunchListItem('
    ', '#div-portlet' + childKey) ; if ( childData.startTime != undefined ) { genPunchListItem('
    ' + formatDate(childData.startTime) + '
    ', '#punch-list-backlog-details' + childKey); var time = new Date(childData.startTime).getTime(); createTimer("timer" + childKey, time); } if ( childData.tags != undefined ) { var tags = childData.tags; genPunchListItem('
    ', '#details-col-five' + childKey); genPunchListItem('
    ', '#punch-list-backlog-details' + childKey); genPunchListItem('
    Tags:
    ', '#tags-container' + childKey); genPunchListItem('
    ', '#tags-container' + childKey); var i; for (i=0; i' + tagData + comma + '', '#tags-container-summary' + childKey); genPunchListItem('' + tagData + comma + '', '#tags-column' + childKey); } } if ( childData.notes != "" ) { genPunchListItem('
    ', '#punch-list-backlog-details' + childKey); } genPunchListItem('', '#punch-list-backlog-details' + childKey); } } function deletePunchElement(childKey) { $('#' + childKey).remove(); } function loadPunches(uid) { console.log("Loading Punches..."); //document.getElementById("sortable").innerHTML = ''; var punchesRef = firebase.database().ref('users/' + uid + '/punches').orderByChild('priority'); var itemStyle = "punches"; // list = '
      '; punchesRef.on('child_added', function(data) { console.log("child Added"); addPunchElement(data.key, data.val()); }); mkSortable(); //enableDetail(); } function sortList() { console.log('function: sortList()'); var items = $('li'); items.sort(function(a, b){ console.log($(a).data('priority')); return +$(a).data('priority') - +$(b).data('priority'); }); items.appendTo('#sortable'); } var looper = setInterval(function() { var uid = window.uid; var punchesRef = firebase.database().ref('users/' + uid + '/punches').orderByChild('priority'); punchesRef.on('child_changed', function(data) { console.log("Child Changed"); updatePunchElement(data.key, data.val()); // deletePunchElement(data.key); // addPunchElement(data.key, data.val()); }); punchesRef.on('child_removed', function(data) { console.log("child Removed"); deletePunchElement(data.key); }); }, 1000); // create new punch function genEventForm() { document.getElementById("newSubject").value = "subject"; document.getElementById("newPriority").value = "priority"; document.getElementById("timepickerCreate").value = "date"; document.getElementById("newNotes").value = ''; document.getElementById("tagsCreate").value = 'tag1,tag2, tag3'; disableElement('punchListAll'); enableElement('newEvent'); } function createNewEvent() { disableElement("punchListAll"); enableElement("newEvent"); var subjectField = document.getElementById("newSubject").value; var priorityField = parseInt(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(","); newPunch(window.uid, subjectField, priorityField, progressField, nDateField, notesField, newTags) disableElement("newEvent"); enableElement("punchListAll"); // loadPunches(window.uid); // document.getElementById("newEventList").innerHTML = jsonStr; } // load everything up! window.onload = function() { initApp(); }; // // // // old script // // // /* function tagFilter(tagItem) { console.log(`In tagFilter function`); window.tagFilterItem = tagItem; getJson(); } function clearTagFilter() { console.log(`Clear Tags`); window.tagFilterItem = undefined; getJson(); } function getStatus(punchList, statusFilter) { return punchList.filter(function(punch) { return punch.progress.toLowerCase() != statusFilter; }); } window.punches = ''; 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() { 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 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 deletePunch(uuid) { 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) { disableElement("punchListAll"); enableElement("editPunch"); punchList = window.punches; item = findArrayId(uuid); if ( punchList[item].tags === undefined ) { punchList[item].tags = []; } var id = item; var subject = punchRef.subject; var priority = punchRef.priority; var progress = punchRef.progress; var nDate = punchRef.nDate; var notes = punchRef.notes; var tags = punchRef.tags; var html = '
      '; html += ''; html += '
      Subject:
      '; html += '
      Priority:
      '; html += '
      Need By:
      '; html += '
      Progress:
      '; html += progress; html += '
      '; html += '
      Tags:
      ' + tags + ' 
      '; html += '
      Add Tag:
      '; html += '
      Notes:
      '; html += ''; html += ''; 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; punchRef.subject = subjectField; punchRef.priority = priorityField; punchRef.progress = progressField; punchRef.nDate = nDateField; //punchRef.tags = tagsField; punchRef.notes = notesField; jsonStr = JSON.stringify(punchList); putJson(jsonStr); disableElement("editPunch"); } function addTag(uuid) { 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.'); }); } $('li').on("click", function(event){ var target = event.target, index = $(target).index(); console.log(target, index); document.getElementById("debug1").innerHTML = target + "
      " + index; }); */