javascript
This commit is contained in:
parent
c931d5a914
commit
b6647cfc52
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,46 @@
|
|||
const firebaseConfig = {
|
||||
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);
|
||||
|
||||
|
||||
//var defaultProject = firebase.initializeApp(firebaseConfig);
|
||||
|
||||
//console.log(defaultProject.name);
|
||||
|
||||
var database = firebase.database();
|
||||
|
||||
function test() {
|
||||
var item = database().ref('punch-items');
|
||||
// item.orderByChild("priority")
|
||||
console.log(item);
|
||||
}
|
||||
|
||||
test();
|
||||
|
||||
// AUTH //
|
||||
|
||||
firebase.auth().signInWithPopup(provider).then(function(result) {
|
||||
// This gives you a Google Access Token. You can use it to access the Google API.
|
||||
var token = result.credential.accessToken;
|
||||
// The signed-in user info.
|
||||
var user = result.user;
|
||||
// ...
|
||||
}).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;
|
||||
// ...
|
||||
});
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['cs'] = {
|
||||
days: ['Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'],
|
||||
daysShort: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
|
||||
daysMin: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'],
|
||||
months: ['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'],
|
||||
monthsShort: ['Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čvn', 'Čvc', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'],
|
||||
today: 'Dnes',
|
||||
clear: 'Vymazat',
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['da'] = {
|
||||
days: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'],
|
||||
daysShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'],
|
||||
daysMin: ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'],
|
||||
months: ['Januar','Februar','Marts','April','Maj','Juni', 'Juli','August','September','Oktober','November','December'],
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
|
||||
today: 'I dag',
|
||||
clear: 'Nulstil',
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,13 @@
|
|||
;(function ($) { $.fn.datepicker.language['de'] = {
|
||||
days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'],
|
||||
daysShort: ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'],
|
||||
daysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'],
|
||||
months: ['Januar','Februar','März','April','Mai','Juni', 'Juli','August','September','Oktober','November','Dezember'],
|
||||
monthsShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'],
|
||||
today: 'Heute',
|
||||
clear: 'Aufräumen',
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
};
|
||||
})(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['en'] = {
|
||||
days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
||||
daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],
|
||||
daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
||||
months: ['January','February','March','April','May','June', 'July','August','September','October','November','December'],
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
|
||||
today: 'Today',
|
||||
clear: 'Clear',
|
||||
dateFormat: 'MM dd, yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 0
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['es'] = {
|
||||
days: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
|
||||
daysShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'],
|
||||
daysMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
|
||||
months: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Augosto','Septiembre','Octubre','Noviembre','Diciembre'],
|
||||
monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
|
||||
today: 'Hoy',
|
||||
clear: 'Limpiar',
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
timeFormat: 'hh:ii aa',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,13 @@
|
|||
;(function ($) { $.fn.datepicker.language['fi'] = {
|
||||
days: ['Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai'],
|
||||
daysShort: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],
|
||||
daysMin: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'],
|
||||
months: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'],
|
||||
monthsShort: ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko', 'Kesä', 'Heinä', 'Elo', 'Syys', 'Loka', 'Marras', 'Joulu'],
|
||||
today: 'Tänään',
|
||||
clear: 'Tyhjennä',
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
};
|
||||
})(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['fr'] = {
|
||||
days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
|
||||
daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
|
||||
daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
|
||||
months: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Decembre'],
|
||||
monthsShort: ['Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Dec'],
|
||||
today: "Aujourd'hui",
|
||||
clear: 'Effacer',
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { ;(function ($) { $.fn.datepicker.language['hu'] = {
|
||||
days: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'],
|
||||
daysShort: ['Va', 'Hé', 'Ke', 'Sze', 'Cs', 'Pé', 'Szo'],
|
||||
daysMin: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'],
|
||||
months: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'],
|
||||
monthsShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'],
|
||||
today: 'Ma',
|
||||
clear: 'Törlés',
|
||||
dateFormat: 'yyyy-mm-dd',
|
||||
timeFormat: 'hh:ii aa',
|
||||
firstDay: 1
|
||||
}; })(jQuery); })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['nl'] = {
|
||||
days: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'],
|
||||
daysShort: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
|
||||
daysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'],
|
||||
months: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'],
|
||||
monthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
|
||||
today: 'Vandaag',
|
||||
clear: 'Legen',
|
||||
dateFormat: 'dd-MM-yy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 0
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,13 @@
|
|||
;(function ($) { $.fn.datepicker.language['pl'] = {
|
||||
days: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'],
|
||||
daysShort: ['Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'],
|
||||
daysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So'],
|
||||
months: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'],
|
||||
monthsShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'],
|
||||
today: 'Dzisiaj',
|
||||
clear: 'Wyczyść',
|
||||
dateFormat: 'yyyy-mm-dd',
|
||||
timeFormat: 'hh:ii:aa',
|
||||
firstDay: 1
|
||||
};
|
||||
})(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['pt-BR'] = {
|
||||
days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
|
||||
daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
|
||||
daysMin: ['Do', 'Se', 'Te', 'Qu', 'Qu', 'Se', 'Sa'],
|
||||
months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
|
||||
monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
|
||||
today: 'Hoje',
|
||||
clear: 'Limpar',
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 0
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['pt'] = {
|
||||
days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'],
|
||||
daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'],
|
||||
daysMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Sx', 'Sa'],
|
||||
months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'],
|
||||
monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'],
|
||||
today: 'Hoje',
|
||||
clear: 'Limpar',
|
||||
dateFormat: 'dd/mm/yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,13 @@
|
|||
;(function ($) { $.fn.datepicker.language['ro'] = {
|
||||
days: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'],
|
||||
daysShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'],
|
||||
daysMin: ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'],
|
||||
months: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'],
|
||||
monthsShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'],
|
||||
today: 'Azi',
|
||||
clear: 'Şterge',
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
};
|
||||
})(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['sk'] = {
|
||||
days: ['Nedeľa', 'Pondelok', 'Utorok', 'Streda', 'Štvrtok', 'Piatok', 'Sobota'],
|
||||
daysShort: ['Ned', 'Pon', 'Uto', 'Str', 'Štv', 'Pia', 'Sob'],
|
||||
daysMin: ['Ne', 'Po', 'Ut', 'St', 'Št', 'Pi', 'So'],
|
||||
months: ['Január','Február','Marec','Apríl','Máj','Jún', 'Júl','August','September','Október','November','December'],
|
||||
monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Máj', 'Jún', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'],
|
||||
today: 'Dnes',
|
||||
clear: 'Vymazať',
|
||||
dateFormat: 'dd.mm.yyyy',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,12 @@
|
|||
;(function ($) { $.fn.datepicker.language['zh'] = {
|
||||
days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'],
|
||||
daysShort: ['日', '一', '二', '三', '四', '五', '六'],
|
||||
daysMin: ['日', '一', '二', '三', '四', '五', '六'],
|
||||
months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
|
||||
monthsShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
|
||||
today: '今天',
|
||||
clear: '清除',
|
||||
dateFormat: 'yyyy-mm-dd',
|
||||
timeFormat: 'hh:ii',
|
||||
firstDay: 1
|
||||
}; })(jQuery);
|
|
@ -0,0 +1,344 @@
|
|||
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() {
|
||||
// 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) {
|
||||
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) {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
// Read the punches via listener
|
||||
|
||||
// standard functions
|
||||
function clearDefault(a){
|
||||
if (a.defaultValue === a.value) {
|
||||
a.value="";
|
||||
}
|
||||
}
|
||||
|
||||
// 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";
|
||||
}
|
||||
|
||||
// menu
|
||||
function mainMenuDrop() {
|
||||
document.getElementById("mainMenuDropdown").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');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// load punches
|
||||
|
||||
function genPunchListItem(elementData, element) {
|
||||
$( elementData ).appendTo( element );
|
||||
}
|
||||
|
||||
function loadPunches(uid) {
|
||||
var punchesRef = firebase.database().ref('users/' + uid + '/punches');
|
||||
var itemStyle = "punches";
|
||||
// list = '<ol id="sortable">';
|
||||
|
||||
punchesRef.once('value', function(snapshot) {
|
||||
snapshot.forEach(function(childSnapshot) {
|
||||
var childKey = childSnapshot.key;
|
||||
var childData = childSnapshot.val();
|
||||
console.log("Child Key: " + childKey);
|
||||
|
||||
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" }
|
||||
|
||||
var list = '';
|
||||
if (childData.progress.toLowerCase() != "done") {
|
||||
genPunchListItem('<li id="li' + childKey + '" class="' + style + '"></li>', '#sortable');
|
||||
genPunchListItem('<div id="div-portlet' + childKey +'" class="portlet"></div>', '#li' + childKey);
|
||||
genPunchListItem('<div id="div-backlog-list-header' + childKey +'" class="backlog-list-header"></div>', '#div-portlet' + childKey);
|
||||
genPunchListItem('<div class="one column">' + childData.priority + '</div>', '#div-backlog-list-header' + childKey);
|
||||
genPunchListItem('<div class="ten columns subject">' + childData.subject + '</div>', '#div-backlog-list-header' + childKey);
|
||||
genPunchListItem('<div class="three columns"><div class="twelve columns ' + style + '">' + childData.progress + '</div><div class="twelve columns punch-default" style="color: lime" id="timer-' + childKey + '"></div></div>', '#div-backlog-list-header' + childKey);
|
||||
// status dropdown
|
||||
genPunchListItem('<div id="dropdown-wrapper' + childKey + '" class="dropdown one column"></div>', '#div-backlog-list-header' + childKey);
|
||||
genPunchListItem('<img class="top dropbtn" onclick=progressMenuDrop("' + childKey + '") src="images/down-carrot.png">', '#dropdown-wrapper' + childKey);
|
||||
genPunchListItem('<div id="progressDropdown-' + childKey + '" class="dropdown-content punch-default"></div>', '#dropdown-wrapper' + childKey);
|
||||
genPunchListItem('<a href="#" onClick=mkPunchNew("' + childKey + '")>New</a>', '#progressDropdown-' + childKey);
|
||||
genPunchListItem('<a href="#" onClick=startPunch("' + childKey + '")>Start</a>', '#progressDropdown-' + childKey);
|
||||
genPunchListItem('<a href="#" onClick=waitingPunch("' + childKey + '")>Waiting</a>', '#progressDropdown-' + childKey);
|
||||
genPunchListItem('<a href="#" onClick=completePunch("' + childKey + '")>Finish</a>', '#progressDropdown-' + childKey);
|
||||
|
||||
if ( childData.needByDate != null && childData.needByDate != undefined && childData.needByDate != '' ) {
|
||||
genPunchListItem('<div id="div-needby-wrapper' + childKey + '" class="three columns punch-default"></div>', '#div-backlog-list-header' + childKey);
|
||||
genPunchListItem('<div id="neededBy' + childKey + '" class="twelve columns punch-default"></div>', '#div-needby-wrapper' + childKey);
|
||||
genPunchListItem('<div>' + childData.needByDate + '</div>', '#neededBy' + childKey);
|
||||
genPunchListItem('<div id="countdown-' + childKey + '" class="twelve columns punch-default"></div>', '#div-needby-wrapper' + childKey);
|
||||
} else {
|
||||
genPunchListItem('<div class="three columns punch-default"> </div>', '#div-backlog-list-header' + childKey);
|
||||
}
|
||||
if ( (new Date(childData.needByDate).getTime() - new Date().getTime()) <= 0 ) {
|
||||
genPunchListItem('<div id="neededBy-status' + childKey + '" class="two columns punch-default overdue">OVER DUE</div>', '#div-backlog-list-header' + childKey);
|
||||
} else if ( ((new Date(childData.needByDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) {
|
||||
genPunchListItem('<div id="neededBy-status' + childKey +'" class="two columns punch-default duesoon">DUE SOON</div>', '#div-backlog-list-header' + childKey);
|
||||
} else {
|
||||
genPunchListItem('<div id="neededBy-status' + childKey +'" class="two columns punch-default"> </div>', '#div-backlog-list-header' + childKey);
|
||||
}
|
||||
|
||||
if ( childData.tags != undefined ) {
|
||||
var tags = childData.tags;
|
||||
console.log("tags" + tags);
|
||||
genPunchListItem('<div id="tags-wrapper' + childKey + '" class="four columns punch-default"></div>', '#div-backlog-list-header' + childKey);
|
||||
var i;
|
||||
for (i=0; i<tags.length; i++) {
|
||||
tagData = tags[i];
|
||||
genPunchListItem('<a class="punch-default" href="#" onClick=tagFilter("' + tagData + '")>' + tagData + '</a>', '#tags-wrapper' + childKey);
|
||||
if ( (i + 1) < tags.length ) {
|
||||
genPunchListItem("<span>, </span>", '#tags-wrapper' + childKey);;
|
||||
}
|
||||
}
|
||||
}
|
||||
//genPunchListItem('<div class="backlog-list-content"><div style="punch-list-backlog-details">';
|
||||
//if ( childData.startTime != undefined ) {
|
||||
// genPunchListItem('<div class="three columns punch-default">';
|
||||
// genPunchListItem(new Date(childData.startTime);
|
||||
// genPunchListItem('</div>';
|
||||
//}
|
||||
//if ( childData.notes != "" ) {
|
||||
// genPunchListItem('<textarea class="edit-text-box" readonly>' + childData.notes + '</textarea><br />';
|
||||
//}
|
||||
//genPunchListItem('<button class="button" onClick=editPunch("' + childKey + '")>edit</button>';
|
||||
//genPunchListItem('</div></div></div></div></li>';
|
||||
|
||||
// genPunchListItem(list, '#sortable');
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// genPunchListItem('</ol>';
|
||||
// document.getElementById("punchListBacklog").innerHTML = list;
|
||||
|
||||
}
|
||||
|
||||
// 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 = 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");
|
||||
// document.getElementById("newEventList").innerHTML = jsonStr;
|
||||
}
|
||||
|
||||
// load everything up!
|
||||
window.onload = function() {
|
||||
initApp();
|
||||
};
|
||||
|
||||
function append() {
|
||||
$( "<p>Hello There!</p>" ).appendTo( ".punchListBacklog" );
|
||||
}
|
||||
|
||||
// old script
|
||||
|
|
@ -0,0 +1,716 @@
|
|||
var punches, punchList, listLength, object;
|
||||
|
||||
function isItArray(object) {
|
||||
console.log(`is ${object} Array = ${Array.isArray(object)}`);
|
||||
// return Array.isArray(object);
|
||||
}
|
||||
|
||||
function putJson(data) {
|
||||
let req = new XMLHttpRequest();
|
||||
|
||||
req.onreadystatechange = () => {
|
||||
if (req.readyState == XMLHttpRequest.DONE) {
|
||||
//document.getElementById("result").innerHTML = new Date().getTime() + " - " + req.status;
|
||||
getJson();
|
||||
}
|
||||
};
|
||||
|
||||
req.open("PUT", jsonUrl, true);
|
||||
req.setRequestHeader("Content-type", "application/json");
|
||||
req.send(data);
|
||||
}
|
||||
|
||||
function getJson() {
|
||||
|
||||
// var GoogleAuth = gapi.auth2.init();
|
||||
// if (GoogleAuth.isSignedIn.get() === true) {
|
||||
//displayMeta();
|
||||
console.log(`getJson`);
|
||||
let req = new XMLHttpRequest();
|
||||
req.onreadystatechange = () => {
|
||||
if (req.readyState == XMLHttpRequest.DONE) {
|
||||
window.punches = JSON.parse(req.responseText);
|
||||
window.punches.sort(function(a, b){return a.priority - b.priority});
|
||||
//callback(window.punches);
|
||||
genStatuses(window.punches);
|
||||
}
|
||||
};
|
||||
|
||||
req.open("GET", jsonUrl, true);
|
||||
req.send();
|
||||
// } else {
|
||||
// console.log('not logged in');
|
||||
// }
|
||||
}
|
||||
|
||||
function findArrayId(uid) {
|
||||
var length = window.punches.length;
|
||||
|
||||
for (x = 0; x < length; x++) {
|
||||
if (window.punches[x].uuid === uid) {
|
||||
return x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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; });
|
||||
}
|
||||
|
||||
function genStatuses(punchList) {
|
||||
// genList(getStatus(punchList, "in progress"), "punchListInProgress");
|
||||
// genList(getStatus(punchList, "new"), "punchListNew");
|
||||
genList(getStatus(punchList, ""), "punchListBacklog");
|
||||
}
|
||||
|
||||
function genBacklog(punchList) {
|
||||
genList(punchList, "punchListBacklog");
|
||||
}
|
||||
|
||||
function genList(punchList, element) {
|
||||
document.getElementById("versionInfo").innerHTML = '<div class="u-pull-right">' + version + '</div>';
|
||||
enableElement("punchListAll");
|
||||
var itemStyle = "punches";
|
||||
// isItArray(punchList);
|
||||
|
||||
// punchList.sort(function(a, b){return new Date(a.date).getTime() - new Date(b.date).getTime()});
|
||||
listLength = punchList.length;
|
||||
|
||||
var list = '<ol id="sortable">';
|
||||
|
||||
var countInProgress = 0;
|
||||
var countWaiting = 0;
|
||||
var countNew = 0;
|
||||
var countDone = 0;
|
||||
for (i = 0; i < listLength; i++) {
|
||||
if (punchList[i].progress.toLowerCase() === "in progress") { var style = "inProgress"; countInProgress++; }
|
||||
else if (punchList[i].progress.toLowerCase() === "waiting") { var style = "waiting"; countWaiting++;}
|
||||
else if (punchList[i].progress.toLowerCase() === "new") { var style = "punch-default"; countNew++;}
|
||||
else { var style = "punch-default"; countDone++ }
|
||||
|
||||
if (window.tagFilterItem != undefined) {
|
||||
console.log('in tags filter');
|
||||
if (punchList[i].tags != undefined && punchList[i].tags.includes(window.tagFilterItem)) {
|
||||
if (punchList[i].progress.toLowerCase() === "in progress") { var style = "inProgress" } else { var style = "punch-default" }
|
||||
if (punchList[i].progress.toLowerCase() === "done" && punchList[i].priority != 99999) {
|
||||
setPriority(punchList[i].uuid, 99999);
|
||||
} else if (punchList[i].progress.toLowerCase() != "done"){
|
||||
list += '<li class="' + style + '">';
|
||||
list += '<div class="portlet">';
|
||||
list += '<div class="backlog-list-header">';
|
||||
list += '<div class="one column">' +punchList[i].priority + '</div><div class="ten columns subject">' + punchList[i].subject + '</div>';
|
||||
list += '<div class="three columns"><div class="twelve columns ' + style + '">' + punchList[i].progress + '</div><div class="twelve columns punch-default" style="color: lime" id="timer-' + punchList[i].uuid + '"></div></div>';
|
||||
// status dropdown
|
||||
list += '<div class="dropdown one column">';
|
||||
list += '<img class="top dropbtn" onclick=progressMenuDrop("' + punchList[i].uuid + '") src="images/down-carrot.png">';
|
||||
list += '<div id="progressDropdown-' + punchList[i].uuid + '" class="dropdown-content punch-default">';
|
||||
list += '<a href="#" onClick=mkPunchNew("' + punchList[i].uuid + '")>New</a>';
|
||||
list += '<a href="#" onClick=startPunch("' + punchList[i].uuid + '")>Start</a>';
|
||||
list += '<a href="#" onClick=waitingPunch("' + punchList[i].uuid + '")>Waiting</a>';
|
||||
list += '<a href="#" onClick=completePunch("' + punchList[i].uuid + '")>Finish</a>';
|
||||
list += '</div>';
|
||||
list += '</div>';
|
||||
/*
|
||||
if (style === "inProgress") {
|
||||
list += '<div class="two columns ' + style + '"><a class="punch-default" href="#" onClick=completePunch("' + punchList[i].uuid + '")>Finish</a></div>';
|
||||
} else if (style === "punch-default") {
|
||||
list += '<div class="two columns ' + style + '"><a class="punch-default" href="#" onClick=startPunch("' + punchList[i].uuid + '")>Start</a></div>';
|
||||
}
|
||||
*/
|
||||
if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) {
|
||||
list += '<div class="three columns punch-default"><div id="neededBy" class="twelve columns punch-default">' + punchList[i].nDate + '</div><div class="twelve columns punch-default" id="countdown-' + punchList[i].uuid + '"></div></div>';
|
||||
} else {
|
||||
list += '<div class="three columns punch-default"> </div>';
|
||||
}
|
||||
if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) {
|
||||
console.log('overdue');
|
||||
list += '<div id="neededBy" class="two columns punch-default overdue">OVER DUE</div>';
|
||||
} else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) {
|
||||
console.log('due soon');
|
||||
list += '<div id="neededBy" class="two columns punch-default duesoon">DUE SOON</div>';
|
||||
} else {
|
||||
list += '<div id="neededBy" class="two columns punch-default"> </div>';
|
||||
}
|
||||
if ( punchList[i].tags != undefined ) {
|
||||
list += '<div class="four columns punch-default">';
|
||||
for (t = 0; t < punchList[i].tags.length; t++) {
|
||||
list += '<a class="punch-default" href="#" onClick=tagFilter("' + punchList[i].tags[t] + '")>' + punchList[i].tags[t] + '</a>';
|
||||
if ( (t + 1) < punchList[i].tags.length ) {
|
||||
list += ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
list += '</div>';
|
||||
list += '<div class="backlog-list-content"><div style="punch-list-backlog-details">';
|
||||
if ( punchList[i].startTime != undefined ) {
|
||||
list += '<div class="three columns punch-default">';
|
||||
list += new Date(punchList[i].startTime);
|
||||
list += '</div>';
|
||||
}
|
||||
if ( punchList[i].notes != "" ) {
|
||||
list += '<textarea class="edit-text-box" readonly>' + punchList[i].notes + '</textarea><br />';
|
||||
}
|
||||
list += '<button class="button" onClick=editPunch("' + punchList[i].uuid + '")>edit</button>';
|
||||
list += '</div></div></div></li>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
console.log('in no tags filter');
|
||||
|
||||
if (punchList[i].progress.toLowerCase() === "done" && punchList[i].priority != 99999) {
|
||||
setPriority(punchList[i].uuid, 99999);
|
||||
} else if (punchList[i].progress.toLowerCase() != "done"){
|
||||
list += '<li class="' + style + '">';
|
||||
list += '<div class="portlet">';
|
||||
list += '<div class="backlog-list-header">';
|
||||
list += '<div class="one column">' + punchList[i].priority + '</div><div class=subject>' + punchList[i].subject + '</div>';
|
||||
list += '<div class="three columns"><div class="twelve columns ' + style + '">' + punchList[i].progress + '</div><div class="twelve columns punch-default" style="color: lime" id="timer-' + punchList[i].uuid + '"></div></div>';
|
||||
// status dropdown
|
||||
list += '<div class="dropdown two columns">';
|
||||
list += '<img class="top dropbtn" onclick=progressMenuDrop("' + punchList[i].uuid + '") src="images/down-carrot.png">';
|
||||
list += '<div id="progressDropdown-' + punchList[i].uuid + '" class="dropdown-content punch-default">';
|
||||
list += '<a href="#" onClick=mkPunchNew("' + punchList[i].uuid + '")>New</a>';
|
||||
list += '<a href="#" onClick=startPunch("' + punchList[i].uuid + '")>Start</a>';
|
||||
list += '<a href="#" onClick=waitingPunch("' + punchList[i].uuid + '")>Waiting</a>';
|
||||
list += '<a href="#" onClick=completePunch("' + punchList[i].uuid + '")>Finish</a>';
|
||||
list += '</div>';
|
||||
list += '</div>';
|
||||
/*
|
||||
if (style === "inProgress") {
|
||||
list += '<div class="two columns ' + style + '"><a class="punch-default" href="#" onClick=completePunch("' + punchList[i].uuid + '")>Finish</a></div>';
|
||||
} else if (style === "punch-default") {
|
||||
list += '<div class="two columns ' + style + '"><a class="punch-default" href="#" onClick=startPunch("' + punchList[i].uuid + '")>Start</a></div>';
|
||||
}
|
||||
*/
|
||||
if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) {
|
||||
list += '<div class="three columns punch-default"><div id="neededBy" class="twelve columns punch-default">' + punchList[i].nDate + '</div><div class="twelve columns punch-default" id="countdown-' + punchList[i].uuid + '"></div></div>';
|
||||
} else {
|
||||
list += '<div class="three columns punch-default"> </div>';
|
||||
}
|
||||
if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) {
|
||||
console.log('overdue');
|
||||
list += '<div id="neededBy" class="two columns punch-default overdue">OVER DUE</div>';
|
||||
} else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) {
|
||||
console.log('due soon');
|
||||
list += '<div id="neededBy" class="two columns punch-default duesoon">DUE SOON</div>';
|
||||
} else {
|
||||
list += '<div id="neededBy" class="two columns punch-default"> </div>';
|
||||
}
|
||||
if ( punchList[i].tags != undefined ) {
|
||||
list += '<div class="four columns punch-default">';
|
||||
for (t = 0; t < punchList[i].tags.length; t++) {
|
||||
list += '<a class="punch-default" href="#" onClick=tagFilter("' + punchList[i].tags[t] + '")>' + punchList[i].tags[t] + '</a>';
|
||||
if ( (t + 1) < punchList[i].tags.length ) {
|
||||
list += ", ";
|
||||
}
|
||||
}
|
||||
}
|
||||
list += '</div>';
|
||||
list += '<div class="backlog-list-content"><div style="punch-list-backlog-details">';
|
||||
if ( punchList[i].startTime != undefined ) {
|
||||
list += '<div class="twelve columns punch-default" style="padding-left: 30px; padding-top: 10px; padding-bottom: 10px;">Started: ';
|
||||
list += new Date(punchList[i].startTime);
|
||||
list += '</div>';
|
||||
}
|
||||
if ( punchList[i].notes != "" ) {
|
||||
list += '<div class="twelve columns">';
|
||||
list += '<textarea class="edit-text-box" readonly>' + punchList[i].notes + '</textarea><br />';
|
||||
list += '</div>';
|
||||
}
|
||||
list += '<button class="button" onClick=editPunch("' + punchList[i].uuid + '")>edit</button>';
|
||||
list += '</div></div></div></li>';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list += "</ol>";
|
||||
document.getElementById(element).innerHTML = list;
|
||||
document.getElementById("stats").innerHTML = '<div class="ten columns punch-default">Total items:</div><div class="one column punch-default">' + punchList.length;
|
||||
document.getElementById("stats").innerHTML += '</div><div class="ten columns punch-default">Blocked items:</div><div class="one column punch-default">' + countWaiting;
|
||||
document.getElementById("stats").innerHTML += '</div><div class="ten columns punch-default">In Progress:</div><div class="one column punch-default">' + countInProgress;
|
||||
document.getElementById("stats").innerHTML += '</div><div class="ten columns punch-default">New Items:</div><div class="one column punch-default">' + countNew;
|
||||
document.getElementById("stats").innerHTML += '</div><div class="ten columns punch-default">Done Items:</div><div class="one column punch-default">' + countDone + '</div>';
|
||||
|
||||
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,
|
||||
distance: 50,
|
||||
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( "<span class='ui-icon ui-icon-minusthick portlet-toggle'></span>");
|
||||
|
||||
$( ".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 = "<p>subject: " + punchList[item].subject + "<br />Created: " + punchList[item].cDate + "<br />Modified Date: " + punchList[item].mDate + "<br />Priority: " + punchList[item].priority + "<br />Progress: " + punchList[item].progress + "<br /><textarea>" + punchList[item].notes + "</textarea><br /><input onfocus='clearDefault(this)' type='text' id='tag' value='Add tag'><input onClick='addTag()' type=button value='Add' /></p><input type=button value=close onClick=getJson()>";
|
||||
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 = '<div class="container listWrapper">';
|
||||
html += '<input type=hidden id="editID" value="' + uuid + '">';
|
||||
html += '<div class="edit-row"><div class="three columns">Subject:</div><div class="nine columns"><input class="twelve columns" type=text id="editSubject" value="' + subject + '"></div></div>';
|
||||
html += '<div class="three columns">Priority:</div><div class="nine columns"><input type=text id="editPriority" value="' + priority + '"></div>';
|
||||
html += '<div class="three columns">Need By:</div><div class="nine columns"><input type=text id="timepickerEdit" value="' + nDate + '"></div>';
|
||||
html += '<div class="three columns">Progress:</div><div id="editProgress" class="nine columns">';
|
||||
html += progress;
|
||||
html += '</div>';
|
||||
html += '<div class="three columns">Tags:</div><div class="nine columns">' + tags + ' </div>';
|
||||
html += '<div class="three columns">Add Tag:</div><div class="nine columns"><input type="text" id="addTag-' + uuid + '"><button onClick=addTag("' + uuid + '")>Add Tag</button></div>';
|
||||
html += '<div class="three columns">Notes: </div><div class="nine columns"><textarea class="edit-text-box" id="editNotes">' + notes + '</textarea></div>';
|
||||
html += '<button onClick=submitEditPunch("' + uuid + '")>Update</button>';
|
||||
html += '<button onClick=\'disableElement("editPunch"),enableElement("punchListAll")\'>Close</button>';
|
||||
html += '</div>';
|
||||
|
||||
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 + "<br />" + index;
|
||||
});
|
Loading…
Reference in New Issue