From 2d5c247e6a61b3a5c64cbb3a66687ab4bf0f9889 Mon Sep 17 00:00:00 2001 From: Kameron Kenny Date: Mon, 22 Jul 2019 10:18:02 -0400 Subject: [PATCH] move to own repo --- punch_list/.firebaserc | 6 - punch_list/.gitignore | 65 - punch_list/api_code.html | 127 - punch_list/backlogManage.js | 717 ------ punch_list/clock.js | 54 - punch_list/css/custom.css | 408 --- punch_list/css/datepicker.css | 622 ----- punch_list/css/datepicker.min.css | 1 - punch_list/css/normalize.css | 427 ---- punch_list/css/skeleton.css | 418 --- punch_list/database.rules.json | 13 - punch_list/eventManage.js | 428 ---- punch_list/eventsList.js | 218 -- punch_list/firebase.json | 17 - punch_list/firestore.indexes.json | 4 - punch_list/firestore.rules | 8 - punch_list/functions/.gitignore | 1 - punch_list/functions/index.js | 8 - punch_list/functions/package-lock.json | 2022 --------------- punch_list/functions/package.json | 22 - punch_list/images/down-carrot.png | Bin 5520 -> 0 bytes punch_list/index.html | 99 - punch_list/index_old.html | 93 - punch_list/js/datepicker.js | 2236 ----------------- punch_list/js/datepicker.min.js | 2 - punch_list/js/firebase.js | 46 - punch_list/js/i18n/datepicker.cs.js | 12 - punch_list/js/i18n/datepicker.da.js | 12 - punch_list/js/i18n/datepicker.de.js | 13 - punch_list/js/i18n/datepicker.en.js | 12 - punch_list/js/i18n/datepicker.es.js | 12 - punch_list/js/i18n/datepicker.fi.js | 13 - punch_list/js/i18n/datepicker.fr.js | 12 - punch_list/js/i18n/datepicker.hu.js | 12 - punch_list/js/i18n/datepicker.nl.js | 12 - punch_list/js/i18n/datepicker.pl.js | 13 - punch_list/js/i18n/datepicker.pt-BR.js | 12 - punch_list/js/i18n/datepicker.pt.js | 12 - punch_list/js/i18n/datepicker.ro.js | 13 - punch_list/js/i18n/datepicker.sk.js | 12 - punch_list/js/i18n/datepicker.zh.js | 12 - punch_list/metadata.js | 24 - punch_list/public/404.html | 33 - punch_list/public/css/custom-large.css | 82 - punch_list/public/css/custom-medium.css | 53 - punch_list/public/css/custom.css | 291 --- punch_list/public/css/datepicker.css | 622 ----- punch_list/public/css/datepicker.min.css | 1 - punch_list/public/css/normalize.css | 427 ---- punch_list/public/css/skeleton.css | 418 --- punch_list/public/images/down-carrot.png | Bin 5520 -> 0 bytes punch_list/public/index.html | 126 - punch_list/public/index1.html | 96 - punch_list/public/indexTest.html | 142 -- punch_list/public/index_old.html | 99 - punch_list/public/js/datepicker.js | 2236 ----------------- punch_list/public/js/datepicker.min.js | 2 - punch_list/public/js/firebase.js | 46 - punch_list/public/js/i18n/datepicker.cs.js | 12 - punch_list/public/js/i18n/datepicker.da.js | 12 - punch_list/public/js/i18n/datepicker.de.js | 13 - punch_list/public/js/i18n/datepicker.en.js | 12 - punch_list/public/js/i18n/datepicker.es.js | 12 - punch_list/public/js/i18n/datepicker.fi.js | 13 - punch_list/public/js/i18n/datepicker.fr.js | 12 - punch_list/public/js/i18n/datepicker.hu.js | 12 - punch_list/public/js/i18n/datepicker.nl.js | 12 - punch_list/public/js/i18n/datepicker.pl.js | 13 - punch_list/public/js/i18n/datepicker.pt-BR.js | 12 - punch_list/public/js/i18n/datepicker.pt.js | 12 - punch_list/public/js/i18n/datepicker.ro.js | 13 - punch_list/public/js/i18n/datepicker.sk.js | 12 - punch_list/public/js/i18n/datepicker.zh.js | 12 - punch_list/public/js/myFirebase.js | 800 ------ punch_list/public/js/punch.js | 716 ------ punch_list/style.css | 184 -- punch_list/test.sh | 34 - punch_list/timePicker.js | 79 - 78 files changed, 14941 deletions(-) delete mode 100644 punch_list/.firebaserc delete mode 100644 punch_list/.gitignore delete mode 100644 punch_list/api_code.html delete mode 100644 punch_list/backlogManage.js delete mode 100755 punch_list/clock.js delete mode 100644 punch_list/css/custom.css delete mode 100644 punch_list/css/datepicker.css delete mode 100644 punch_list/css/datepicker.min.css delete mode 100644 punch_list/css/normalize.css delete mode 100644 punch_list/css/skeleton.css delete mode 100644 punch_list/database.rules.json delete mode 100644 punch_list/eventManage.js delete mode 100644 punch_list/eventsList.js delete mode 100644 punch_list/firebase.json delete mode 100644 punch_list/firestore.indexes.json delete mode 100644 punch_list/firestore.rules delete mode 100644 punch_list/functions/.gitignore delete mode 100644 punch_list/functions/index.js delete mode 100644 punch_list/functions/package-lock.json delete mode 100644 punch_list/functions/package.json delete mode 100644 punch_list/images/down-carrot.png delete mode 100644 punch_list/index.html delete mode 100644 punch_list/index_old.html delete mode 100644 punch_list/js/datepicker.js delete mode 100644 punch_list/js/datepicker.min.js delete mode 100644 punch_list/js/firebase.js delete mode 100644 punch_list/js/i18n/datepicker.cs.js delete mode 100644 punch_list/js/i18n/datepicker.da.js delete mode 100644 punch_list/js/i18n/datepicker.de.js delete mode 100644 punch_list/js/i18n/datepicker.en.js delete mode 100644 punch_list/js/i18n/datepicker.es.js delete mode 100644 punch_list/js/i18n/datepicker.fi.js delete mode 100644 punch_list/js/i18n/datepicker.fr.js delete mode 100644 punch_list/js/i18n/datepicker.hu.js delete mode 100644 punch_list/js/i18n/datepicker.nl.js delete mode 100644 punch_list/js/i18n/datepicker.pl.js delete mode 100644 punch_list/js/i18n/datepicker.pt-BR.js delete mode 100644 punch_list/js/i18n/datepicker.pt.js delete mode 100644 punch_list/js/i18n/datepicker.ro.js delete mode 100644 punch_list/js/i18n/datepicker.sk.js delete mode 100644 punch_list/js/i18n/datepicker.zh.js delete mode 100644 punch_list/metadata.js delete mode 100644 punch_list/public/404.html delete mode 100644 punch_list/public/css/custom-large.css delete mode 100644 punch_list/public/css/custom-medium.css delete mode 100644 punch_list/public/css/custom.css delete mode 100644 punch_list/public/css/datepicker.css delete mode 100644 punch_list/public/css/datepicker.min.css delete mode 100644 punch_list/public/css/normalize.css delete mode 100644 punch_list/public/css/skeleton.css delete mode 100644 punch_list/public/images/down-carrot.png delete mode 100644 punch_list/public/index.html delete mode 100644 punch_list/public/index1.html delete mode 100644 punch_list/public/indexTest.html delete mode 100644 punch_list/public/index_old.html delete mode 100644 punch_list/public/js/datepicker.js delete mode 100644 punch_list/public/js/datepicker.min.js delete mode 100644 punch_list/public/js/firebase.js delete mode 100644 punch_list/public/js/i18n/datepicker.cs.js delete mode 100644 punch_list/public/js/i18n/datepicker.da.js delete mode 100644 punch_list/public/js/i18n/datepicker.de.js delete mode 100644 punch_list/public/js/i18n/datepicker.en.js delete mode 100644 punch_list/public/js/i18n/datepicker.es.js delete mode 100644 punch_list/public/js/i18n/datepicker.fi.js delete mode 100644 punch_list/public/js/i18n/datepicker.fr.js delete mode 100644 punch_list/public/js/i18n/datepicker.hu.js delete mode 100644 punch_list/public/js/i18n/datepicker.nl.js delete mode 100644 punch_list/public/js/i18n/datepicker.pl.js delete mode 100644 punch_list/public/js/i18n/datepicker.pt-BR.js delete mode 100644 punch_list/public/js/i18n/datepicker.pt.js delete mode 100644 punch_list/public/js/i18n/datepicker.ro.js delete mode 100644 punch_list/public/js/i18n/datepicker.sk.js delete mode 100644 punch_list/public/js/i18n/datepicker.zh.js delete mode 100644 punch_list/public/js/myFirebase.js delete mode 100644 punch_list/public/js/punch.js delete mode 100644 punch_list/style.css delete mode 100644 punch_list/test.sh delete mode 100644 punch_list/timePicker.js diff --git a/punch_list/.firebaserc b/punch_list/.firebaserc deleted file mode 100644 index 72f1b4d..0000000 --- a/punch_list/.firebaserc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "projects": { - "default": "punchlist-1561043639952", - "staging": "punchlist-1561043639952" - } -} \ No newline at end of file diff --git a/punch_list/.gitignore b/punch_list/.gitignore deleted file mode 100644 index f626852..0000000 --- a/punch_list/.gitignore +++ /dev/null @@ -1,65 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -firebase-debug.log* - -# Firebase cache -.firebase/ - -# Firebase config - -# Uncomment this if you'd like others to create their own Firebase project. -# For a team working on the same Firebase project(s), it is recommended to leave -# it commented so all members can deploy to the same project(s) in .firebaserc. -# .firebaserc - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (http://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env diff --git a/punch_list/api_code.html b/punch_list/api_code.html deleted file mode 100644 index 9889ef7..0000000 --- a/punch_list/api_code.html +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - -
- - - -
-

- - - - diff --git a/punch_list/backlogManage.js b/punch_list/backlogManage.js deleted file mode 100644 index 8a4830c..0000000 --- a/punch_list/backlogManage.js +++ /dev/null @@ -1,717 +0,0 @@ -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 = '
' + version + '
'; - 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 = '
    '; - - 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 += '
  1. '; - list += '
    '; - list += '
    '; - list += '
    ' +punchList[i].priority + '
    ' + punchList[i].subject + '
    '; - list += '
    ' + punchList[i].progress + '
    '; - // status dropdown - list += ''; -/* - if (style === "inProgress") { - list += ''; - } else if (style === "punch-default") { - list += ''; - } -*/ - if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) { - list += '
    ' + punchList[i].nDate + '
    '; - } else { - list += '
     
    '; - } - if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) { - //console.log('overdue'); - list += '
    OVER DUE
    '; - } else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) { - //console.log('due soon'); - list += '
    DUE SOON
    '; - } else { - list += '
     
    '; - } - if ( punchList[i].tags != undefined ) { - list += '
    '; - for (t = 0; t < punchList[i].tags.length; t++) { - list += '' + punchList[i].tags[t] + ''; - if ( (t + 1) < punchList[i].tags.length ) { - list += ", "; - } - } - } - list += '
    '; - list += '
    '; - if ( punchList[i].startTime != undefined ) { - list += '
    '; - list += new Date(punchList[i].startTime); - list += '
    '; - } - if ( punchList[i].notes != "" ) { - list += '
    '; - } - list += ''; - list += '
  2. '; - } - } - } 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 += '
  3. '; - list += '
    '; - list += '
    '; - list += '
    ' + punchList[i].priority + '
    ' + punchList[i].subject + '
    '; - list += '
    ' + punchList[i].progress + '
    '; - // status dropdown - list += ''; -/* - if (style === "inProgress") { - list += ''; - } else if (style === "punch-default") { - list += ''; - } -*/ - if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) { - list += '
    ' + punchList[i].nDate + '
    '; - } else { - list += '
     
    '; - } - if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) { - //console.log('overdue'); - list += '
    OVER DUE
    '; - } else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) { - //console.log('due soon'); - list += '
    DUE SOON
    '; - } else { - list += '
     
    '; - } - if ( punchList[i].tags != undefined ) { - list += '
    '; - for (t = 0; t < punchList[i].tags.length; t++) { - list += '' + punchList[i].tags[t] + ''; - if ( (t + 1) < punchList[i].tags.length ) { - list += ", "; - } - } - } - list += '
    '; - list += '
    '; - if ( punchList[i].startTime != undefined ) { - list += '
    Started: '; - list += new Date(punchList[i].startTime); - list += '
    '; - } - if ( punchList[i].notes != "" ) { - list += '
    '; - list += '
    '; - list += '
    '; - } - list += ''; - list += '
  4. '; - } - } - } - - 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() { - //console.log("Inside interval, window.punches = " + window.punches); - 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( ""); - - $( ".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 += '
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; - - 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; -}); diff --git a/punch_list/clock.js b/punch_list/clock.js deleted file mode 100755 index 11f57a0..0000000 --- a/punch_list/clock.js +++ /dev/null @@ -1,54 +0,0 @@ - -function clock_cal_date() { - var d = new Date(); - var r = d.getFullYear() + "/" + d.getMonth() + "/" + d.getDate(); - return r -} - -function clock_date() { - -// A regular clock - - var d = new Date(); - var hour = d.getHours(); - var minute = d.getMinutes(); - var second = d.getSeconds(); - - if (hour < 10 && hour >= 0) { - hour = ('0' + hour); - } - - if (minute < 10 && minute >= 0) { - minute = ('0' + minute); - } - - if (second < 10 && second >= 0) { - second = ('0' + second); - } - - var r = hour + ":" + minute + ":" + second; - return r; -} - -function clock_dateUTC() { -// Same for UTC - var d = new Date(); - var hourUTC = d.getUTCHours(); - var minuteUTC = d.getUTCMinutes(); - var secondUTC = d.getUTCSeconds(); - - if (hourUTC < 10) { - hourUTC = ('0' + hourUTC); - } - - if (minuteUTC < 10) { - minuteUTC = ('0' + minuteUTC); - } - - if (secondUTC < 10) { - secondUTC = ('0' + secondUTC); - } - - var r = hourUTC + ":" + minuteUTC + ":" + secondUTC; - return r -} diff --git a/punch_list/css/custom.css b/punch_list/css/custom.css deleted file mode 100644 index f09cc05..0000000 --- a/punch_list/css/custom.css +++ /dev/null @@ -1,408 +0,0 @@ -#neededBy { display: none; } -.subject { - overflow: hidden; - width: 89%; - float: left; - color: #FFF; - font-size: 1.5rem; - font-weight: 900; } -.column-left { display: none; } -.column-right { display: none; } -.column-middle { width: 100%; overflow: auto; float: left;} -#mainMenuWrapper:after { content: ""; clear: both; } -#sortable { list-style-type: none; margin: 0; padding: 0; width: 100%; } -#sortable li { font-size: 1.4em; color: #AAA;} -#sortable li span { position: absolute; margin-left: -1.3em; } - .portlet { - padding: 0.3em; - } - .backlog-list-header { - padding: 0.2em 0.3em; - padding-bottom: 0.9em; - position: relative; - } - .portlet-toggle { - position: absolute; - top: 50%; - right: 0; - margin-top: -8px; - } - .backlog-list-content { - display: none; - padding: 0.4em; - } - .portlet-placeholder { - border: 1px dotted black; - margin: 0 1em 1em 0; - height: 50px; - } -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("https://code.jquery.com/ui/1.12.1/themes/base/images/ui-icons_ffffff_256x240.png"); -} -.ui-widget-content { background: #000; color: #aaa;} -.ui-widget-header { background: #333; color: #aaa;} -a.punch-default { color: #00BFFF; font-size: 12px; text-decoration: none;} -a.punch-default:hover { color: #00FFFF; text-shadow: 0px 0px 23px #FFF; } -.punch-default { border: 0px solid #AAA; color: #aaa; font-size: 12px; font-family: Arial, Helvetica, sans-serif;} - .inProgress { color: orange; font-size: 12px; } -.waiting { color: red; font-size: 12px; } -.overdue { color: red; font-size: 12px; } -.duesoon { color: yellow; font-size: 12px;} -.hide { display: none; } -i { - border: solid black; - border-width: 0 3px 3px 0; - display: inline-block; - padding: 3px; -} -.down { - transform: rotate(45deg); - -webkit-transform: rotate(45deg); -} -.punch-list-backlog-details { - font-size: 18px; - color: #aaa; -} -.edit-row { padding-top: 5px; } -.edit-text-box { width: 100%; min-height: 200px; font-size: 12px; } -.ui-widget textarea { font-size: 12px; } -body { - width: 90%; - margin-left: auto; - margin-right: auto; - background: #222; - color: #AAA; } -textarea { - font-size: 12px; - background: #111; - width:80%; - height:50%; - color: lime; - border: 1px solid #999; } -.listWrapper:after { - content: ""; - clear: both; } -.listWrapper { - margin: 5px; - background: #333; - margin-bottom: 10px; - border: 0px solid #999; } -.punchListHeader { - color: #00bfff; - padding: 4px; - font-size: 2rem; - font-weight: 999; } - .one.column, - .one.columns { width: 4.66666666667%; } - .two.columns { width: 13.3333333333%; } - .three.columns { width: 22%; } - .four.columns { width: 30.6666666667%; } - .five.columns { width: 39.3333333333%; } - .six.columns { width: 48%; } - .seven.columns { width: 56.6666666667%; } - .eight.columns { width: 65.3333333333%; } - .nine.columns { width: 74.0%; } - .ten.columns { width: 82.6666666667%; } - .eleven.columns { width: 91.3333333333%; } - .twelve.columns { width: 100%; margin-left: 0; } -#newEvent { - display: none;} -#editPunch { - display: none; } -.punchlist { - position: relative; - width: 100%; - display: table; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; } -.punchlist::after { - content: ""; - clear: both; } -.top-bottom-border { - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; } -.navbar { - overflow: hidden; - background-color: #333; - font-family: Arial, Helvetica, sans-serif; -} - -.navbar a { - float: left; - font-size: 16px; - color: white; - text-align: center; - padding: 14px 16px; - text-decoration: none; -} - -.top { vertical-align: top; padding: 0px; margin: 0px; } - -/* Dropdown Button */ -.dropbtn { - height: 15px; -/* background-image: url("../images/down-carrot.png"); */ - vertical-align: top; - background-color: #3498DB; - color: white; - padding: 6px; - font-size: 10px; - cursor: pointer; - border: 0px; -} - -/* Dropdown button on hover & focus */ -.dropbtn:hover, .dropbtn:focus { - background-color: #2980B9; -} - -/* The container
- needed to position the dropdown content */ -.dropdown { - position: relative; - display: inline-block; - height: 20px; -} - -/* Dropdown Content (Hidden by Default) */ -.dropdown-content { - display: none; - position: relative; - background-color: #f1f1f1; - min-width: 160px; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 1; -} - -/* Links inside the dropdown */ -.dropdown-content a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; -} - -/* Change color of dropdown links on hover */ -.dropdown-content a:hover {background-color: #ddd} - -/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ -.show {display:block;} - -.warn { color: yellow; } -.green { color: lime; } -.over { color: red; } -.current { color: orange; } -.punches-current { - background: #555; } -.countdown { - float: right; - font-size: 2rem; - font-weight: 900; } -.punches { - /* display: block; */ - /*width: 99%; */ - text-align: left; } -.notes { - background: #000; - margin-top: 10px; - font-size: 1.8rem; - color: #fff; - max-width: 100%; } -.debug { - background: #000; - color: lime; - margin-top: 15px; - border: 1px solid lime; } -.clock { - display: none; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } -.centerMiddle { - padding:0px; - text-align: center; - vertical-align: middle; } -.button { - display: block; - padding: 0px; - text-align: center; - text-decoration: none; - font-size: 1.5rem; - vertical-align: middle; - border: 1px solid #333; - background-color: #4CAF50; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: auto; - width: 98%; - height: 50px;} -.nav-button { - vertical-align: middle; - float: right } -.container { - width: 99%; - max-width: 99%; - padding: 0 5px; } -.header { - background-color: #666; - margin-top: 6rem; - text-align: center; } -.header.columns { - background: #666; } -.navbar { - font-size: 3rem; - font-weight: 600; - background: #222; - /*display: none;*/ } -.punches { - text-align: left; } - -/* Larger than phone */ -@media (min-width: 550px) { -#neededBy { display: block; } -.subject { - overflow: hidden; - width: 89%; - float: left; - color: #FFF; - font-size: 2rem; - font-weight: 900; } - .button { - padding: 0px; - text-align: center; - text-decoration: none; - font-size: 1rem; - vertical-align: middle; - border: 1px solid #333; - background-color: #4CAF50; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: auto; - width: 20%; - height: 40px; - float: right;} - .nav-button { - vertical-align: middle; - float: right } - .two-thirds.column { width: 68.8%; } - .column, - .columns { - background: transparent; - margin-left: 3px; } - .clock-wrapper { - display: block; - min-width: 50px; - } - .clock { - display: block; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } - .header { - background-color: #666; - text-align: center; - margin-top: 6rem; } - .punches { - text-align: left; } -} - -/* Larger than tablet */ -@media (min-width: 750px) { - #neededBy { display: block; } -.subject { - overflow: hidden; - width: 89%; - float: left; - color: #FFF; - font-size: 2rem; - font-weight: 900; } - body { margin-left: auto; - margin-right: auto; - width: 90%; } - .column-left { - display: block; - margin-top: 100px; - margin-left: auto; - width: 30%; - height: 99%; - background-color: #000; - overflow: hidden; - float: left; - border-right: 3px solid #000; - } - .column-right { display: block; width: 10%; overflow: hidden; float: left;} - .column-middle { display: block; width: 55%; overflow: hidden; float: left;} - /* Navbar */ - .clock-wrapper { - display: block; - min-width: 50px; } - .clock { - display: block; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } - .navbar, - .navbar-spacer { - display: block; - width: 100%; - height: 6.5rem; - background: #222; - z-index: 99; - border-top: 0px solid #eee; - border-bottom: 1px solid #eee; } - .navbar-spacer { - display: none; } - .navbar > .container { - width: 100%; } - .navbar-list { - list-style: none; - margin-bottom: 0; } - .navbar-item { - position: relative; - float: left; - margin-bottom: 0; } - .navbar-link { - text-transform: uppercase; - font-size: 11px; - font-weight: 600; - letter-spacing: .2rem; - margin-right: 35px; - text-decoration: none; - line-height: 6.5rem; - color: #222; } - .navbar-link.active { - color: #33C3F0; } - .has-docked-nav .navbar { - position: fixed; - top: 0; - left: 0; } - .has-docked-nav .navbar-spacer { - display: block; } - /* Re-overiding the width 100% declaration to match size of % based container */ - .has-docked-nav .navbar > .container { - width: 80%; } -} -@media (min-width: 1500px) { - .column-left { - display: block; - margin-top: 100px; - margin-left: auto; - width: 20%; - height: 99%; - background-color: #000; - overflow: hidden; - float: left; - border-right: 3px solid #000; - } - .column-middle { display: block; width: 50%; overflow: hidden; float: left;} - .column-right { display: block; width: 25%; overflow: hidden; float: left; padding-top: 100px;} - #events-list { background-color: #000; } -} diff --git a/punch_list/css/datepicker.css b/punch_list/css/datepicker.css deleted file mode 100644 index a803fda..0000000 --- a/punch_list/css/datepicker.css +++ /dev/null @@ -1,622 +0,0 @@ -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Datepicker cells - ------------------------------------------------- */ -.datepicker--cells { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; } - -.datepicker--cell { - border-radius: 4px; - box-sizing: border-box; - cursor: pointer; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - position: relative; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - height: 32px; - z-index: 1; } - .datepicker--cell.-focus- { - background: #f0f0f0; } - .datepicker--cell.-current- { - color: #4EB5E6; } - .datepicker--cell.-current-.-focus- { - color: #4a4a4a; } - .datepicker--cell.-current-.-in-range- { - color: #4EB5E6; } - .datepicker--cell.-in-range- { - background: rgba(92, 196, 239, 0.1); - color: #4a4a4a; - border-radius: 0; } - .datepicker--cell.-in-range-.-focus- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell.-disabled- { - cursor: default; - color: #aeaeae; } - .datepicker--cell.-disabled-.-focus- { - color: #aeaeae; } - .datepicker--cell.-disabled-.-in-range- { - color: #a1a1a1; } - .datepicker--cell.-disabled-.-current-.-focus- { - color: #aeaeae; } - .datepicker--cell.-range-from- { - border: 1px solid rgba(92, 196, 239, 0.5); - background-color: rgba(92, 196, 239, 0.1); - border-radius: 4px 0 0 4px; } - .datepicker--cell.-range-to- { - border: 1px solid rgba(92, 196, 239, 0.5); - background-color: rgba(92, 196, 239, 0.1); - border-radius: 0 4px 4px 0; } - .datepicker--cell.-range-from-.-range-to- { - border-radius: 4px; } - .datepicker--cell.-selected- { - color: #fff; - border: none; - background: #5cc4ef; } - .datepicker--cell.-selected-.-current- { - color: #fff; - background: #5cc4ef; } - .datepicker--cell.-selected-.-focus- { - background: #45bced; } - .datepicker--cell:empty { - cursor: default; } - -.datepicker--days-names { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin: 8px 0 3px; } - -.datepicker--day-name { - color: #FF9A19; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - text-align: center; - text-transform: uppercase; - font-size: .8em; } - -.datepicker--cell-day { - width: 14.28571%; } - -.datepicker--cells-months { - height: 170px; } - -.datepicker--cell-month { - width: 33.33%; - height: 25%; } - -.datepicker--years { - height: 170px; } - -.datepicker--cells-years { - height: 170px; } - -.datepicker--cell-year { - width: 25%; - height: 33.33%; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Datepicker - ------------------------------------------------- */ -.datepickers-container { - position: absolute; - left: 0; - top: 0; } - @media print { - .datepickers-container { - display: none; } } - -.datepicker { - background: #fff; - border: 1px solid #dbdbdb; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - border-radius: 4px; - box-sizing: content-box; - font-family: Tahoma, sans-serif; - font-size: 14px; - color: #4a4a4a; - width: 250px; - position: absolute; - left: -100000px; - opacity: 0; - transition: opacity 0.3s ease, left 0s 0.3s, -webkit-transform 0.3s ease; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0.3s; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0.3s, -webkit-transform 0.3s ease; - z-index: 100; } - .datepicker.-from-top- { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); } - .datepicker.-from-right- { - -webkit-transform: translateX(8px); - transform: translateX(8px); } - .datepicker.-from-bottom- { - -webkit-transform: translateY(8px); - transform: translateY(8px); } - .datepicker.-from-left- { - -webkit-transform: translateX(-8px); - transform: translateX(-8px); } - .datepicker.active { - opacity: 1; - -webkit-transform: translate(0); - transform: translate(0); - transition: opacity 0.3s ease, left 0s 0s, -webkit-transform 0.3s ease; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0s; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0s, -webkit-transform 0.3s ease; } - -.datepicker-inline .datepicker { - border-color: #d7d7d7; - box-shadow: none; - position: static; - left: auto; - right: auto; - opacity: 1; - -webkit-transform: none; - transform: none; } - -.datepicker-inline .datepicker--pointer { - display: none; } - -.datepicker--content { - box-sizing: content-box; - padding: 4px; } - .-only-timepicker- .datepicker--content { - display: none; } - -.datepicker--pointer { - position: absolute; - background: #fff; - border-top: 1px solid #dbdbdb; - border-right: 1px solid #dbdbdb; - width: 10px; - height: 10px; - z-index: -1; } - .-top-left- .datepicker--pointer, .-top-center- .datepicker--pointer, .-top-right- .datepicker--pointer { - top: calc(100% - 4px); - -webkit-transform: rotate(135deg); - transform: rotate(135deg); } - .-right-top- .datepicker--pointer, .-right-center- .datepicker--pointer, .-right-bottom- .datepicker--pointer { - right: calc(100% - 4px); - -webkit-transform: rotate(225deg); - transform: rotate(225deg); } - .-bottom-left- .datepicker--pointer, .-bottom-center- .datepicker--pointer, .-bottom-right- .datepicker--pointer { - bottom: calc(100% - 4px); - -webkit-transform: rotate(315deg); - transform: rotate(315deg); } - .-left-top- .datepicker--pointer, .-left-center- .datepicker--pointer, .-left-bottom- .datepicker--pointer { - left: calc(100% - 4px); - -webkit-transform: rotate(45deg); - transform: rotate(45deg); } - .-top-left- .datepicker--pointer, .-bottom-left- .datepicker--pointer { - left: 10px; } - .-top-right- .datepicker--pointer, .-bottom-right- .datepicker--pointer { - right: 10px; } - .-top-center- .datepicker--pointer, .-bottom-center- .datepicker--pointer { - left: calc(50% - 10px / 2); } - .-left-top- .datepicker--pointer, .-right-top- .datepicker--pointer { - top: 10px; } - .-left-bottom- .datepicker--pointer, .-right-bottom- .datepicker--pointer { - bottom: 10px; } - .-left-center- .datepicker--pointer, .-right-center- .datepicker--pointer { - top: calc(50% - 10px / 2); } - -.datepicker--body { - display: none; } - .datepicker--body.active { - display: block; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Navigation - ------------------------------------------------- */ -.datepicker--nav { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - border-bottom: 1px solid #efefef; - min-height: 32px; - padding: 4px; } - .-only-timepicker- .datepicker--nav { - display: none; } - -.datepicker--nav-title, -.datepicker--nav-action { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - cursor: pointer; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; } - -.datepicker--nav-action { - width: 32px; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .datepicker--nav-action:hover { - background: #f0f0f0; } - .datepicker--nav-action.-disabled- { - visibility: hidden; } - .datepicker--nav-action svg { - width: 32px; - height: 32px; } - .datepicker--nav-action path { - fill: none; - stroke: #9c9c9c; - stroke-width: 2px; } - -.datepicker--nav-title { - border-radius: 4px; - padding: 0 8px; } - .datepicker--nav-title i { - font-style: normal; - color: #9c9c9c; - margin-left: 5px; } - .datepicker--nav-title:hover { - background: #f0f0f0; } - .datepicker--nav-title.-disabled- { - cursor: default; - background: none; } - -.datepicker--buttons { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 4px; - border-top: 1px solid #efefef; } - -.datepicker--button { - color: #4EB5E6; - cursor: pointer; - border-radius: 4px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - height: 32px; } - .datepicker--button:hover { - color: #4a4a4a; - background: #f0f0f0; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Timepicker - ------------------------------------------------- */ -.datepicker--time { - border-top: 1px solid #efefef; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 4px; - position: relative; } - .datepicker--time.-am-pm- .datepicker--time-sliders { - -webkit-flex: 0 1 138px; - -ms-flex: 0 1 138px; - flex: 0 1 138px; - max-width: 138px; } - .-only-timepicker- .datepicker--time { - border-top: none; } - -.datepicker--time-sliders { - -webkit-flex: 0 1 153px; - -ms-flex: 0 1 153px; - flex: 0 1 153px; - margin-right: 10px; - max-width: 153px; } - -.datepicker--time-label { - display: none; - font-size: 12px; } - -.datepicker--time-current { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - font-size: 14px; - text-align: center; - margin: 0 0 0 10px; } - -.datepicker--time-current-colon { - margin: 0 2px 3px; - line-height: 1; } - -.datepicker--time-current-hours, -.datepicker--time-current-minutes { - line-height: 1; - font-size: 19px; - font-family: "Century Gothic", CenturyGothic, AppleGothic, sans-serif; - position: relative; - z-index: 1; } - .datepicker--time-current-hours:after, - .datepicker--time-current-minutes:after { - content: ''; - background: #f0f0f0; - border-radius: 4px; - position: absolute; - left: -2px; - top: -3px; - right: -2px; - bottom: -2px; - z-index: -1; - opacity: 0; } - .datepicker--time-current-hours.-focus-:after, - .datepicker--time-current-minutes.-focus-:after { - opacity: 1; } - -.datepicker--time-current-ampm { - text-transform: uppercase; - -webkit-align-self: flex-end; - -ms-flex-item-align: end; - align-self: flex-end; - color: #9c9c9c; - margin-left: 6px; - font-size: 11px; - margin-bottom: 1px; } - -.datepicker--time-row { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - font-size: 11px; - height: 17px; - background: linear-gradient(to right, #dedede, #dedede) left 50%/100% 1px no-repeat; } - .datepicker--time-row:first-child { - margin-bottom: 4px; } - .datepicker--time-row input[type='range'] { - background: none; - cursor: pointer; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - height: 100%; - padding: 0; - margin: 0; - -webkit-appearance: none; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - -webkit-appearance: none; } - .datepicker--time-row input[type='range']::-ms-tooltip { - display: none; } - .datepicker--time-row input[type='range']:hover::-webkit-slider-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:hover::-moz-range-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:hover::-ms-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:focus { - outline: none; } - .datepicker--time-row input[type='range']:focus::-webkit-slider-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']:focus::-moz-range-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']:focus::-ms-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-moz-range-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-ms-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - margin-top: -6px; } - .datepicker--time-row input[type='range']::-webkit-slider-runnable-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-moz-range-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-ms-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-ms-fill-lower { - background: transparent; } - .datepicker--time-row input[type='range']::-ms-fill-upper { - background: transparent; } - .datepicker--time-row span { - padding: 0 12px; } - -.datepicker--time-icon { - color: #9c9c9c; - border: 1px solid; - border-radius: 50%; - font-size: 16px; - position: relative; - margin: 0 5px -1px 0; - width: 1em; - height: 1em; } - .datepicker--time-icon:after, .datepicker--time-icon:before { - content: ''; - background: currentColor; - position: absolute; } - .datepicker--time-icon:after { - height: .4em; - width: 1px; - left: calc(50% - 1px); - top: calc(50% + 1px); - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - .datepicker--time-icon:before { - width: .4em; - height: 1px; - top: calc(50% + 1px); - left: calc(50% - 1px); } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } diff --git a/punch_list/css/datepicker.min.css b/punch_list/css/datepicker.min.css deleted file mode 100644 index bc3cd6c..0000000 --- a/punch_list/css/datepicker.min.css +++ /dev/null @@ -1 +0,0 @@ -.datepicker--cells{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.datepicker--cell{border-radius:4px;box-sizing:border-box;cursor:pointer;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:32px;z-index:1}.datepicker--cell.-focus-{background:#f0f0f0}.datepicker--cell.-current-{color:#4EB5E6}.datepicker--cell.-current-.-focus-{color:#4a4a4a}.datepicker--cell.-current-.-in-range-{color:#4EB5E6}.datepicker--cell.-in-range-{background:rgba(92,196,239,.1);color:#4a4a4a;border-radius:0}.datepicker--cell.-in-range-.-focus-{background-color:rgba(92,196,239,.2)}.datepicker--cell.-disabled-{cursor:default;color:#aeaeae}.datepicker--cell.-disabled-.-focus-{color:#aeaeae}.datepicker--cell.-disabled-.-in-range-{color:#a1a1a1}.datepicker--cell.-disabled-.-current-.-focus-{color:#aeaeae}.datepicker--cell.-range-from-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:4px 0 0 4px}.datepicker--cell.-range-to-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:0 4px 4px 0}.datepicker--cell.-selected-,.datepicker--cell.-selected-.-current-{color:#fff;background:#5cc4ef}.datepicker--cell.-range-from-.-range-to-{border-radius:4px}.datepicker--cell.-selected-{border:none}.datepicker--cell.-selected-.-focus-{background:#45bced}.datepicker--cell:empty{cursor:default}.datepicker--days-names{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:8px 0 3px}.datepicker--day-name{color:#FF9A19;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex:1;-ms-flex:1;flex:1;text-align:center;text-transform:uppercase;font-size:.8em}.-only-timepicker- .datepicker--content,.datepicker--body,.datepicker-inline .datepicker--pointer{display:none}.datepicker--cell-day{width:14.28571%}.datepicker--cells-months{height:170px}.datepicker--cell-month{width:33.33%;height:25%}.datepicker--cells-years,.datepicker--years{height:170px}.datepicker--cell-year{width:25%;height:33.33%}.datepickers-container{position:absolute;left:0;top:0}@media print{.datepickers-container{display:none}}.datepicker{background:#fff;border:1px solid #dbdbdb;box-shadow:0 4px 12px rgba(0,0,0,.15);border-radius:4px;box-sizing:content-box;font-family:Tahoma,sans-serif;font-size:14px;color:#4a4a4a;width:250px;position:absolute;left:-100000px;opacity:0;transition:opacity .3s ease,left 0s .3s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s .3s;transition:opacity .3s ease,transform .3s ease,left 0s .3s,-webkit-transform .3s ease;z-index:100}.datepicker.-from-top-{-webkit-transform:translateY(-8px);transform:translateY(-8px)}.datepicker.-from-right-{-webkit-transform:translateX(8px);transform:translateX(8px)}.datepicker.-from-bottom-{-webkit-transform:translateY(8px);transform:translateY(8px)}.datepicker.-from-left-{-webkit-transform:translateX(-8px);transform:translateX(-8px)}.datepicker.active{opacity:1;-webkit-transform:translate(0);transform:translate(0);transition:opacity .3s ease,left 0s 0s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s 0s;transition:opacity .3s ease,transform .3s ease,left 0s 0s,-webkit-transform .3s ease}.datepicker-inline .datepicker{border-color:#d7d7d7;box-shadow:none;position:static;left:auto;right:auto;opacity:1;-webkit-transform:none;transform:none}.datepicker--content{box-sizing:content-box;padding:4px}.datepicker--pointer{position:absolute;background:#fff;border-top:1px solid #dbdbdb;border-right:1px solid #dbdbdb;width:10px;height:10px;z-index:-1}.datepicker--nav-action:hover,.datepicker--nav-title:hover{background:#f0f0f0}.-top-center- .datepicker--pointer,.-top-left- .datepicker--pointer,.-top-right- .datepicker--pointer{top:calc(100% - 4px);-webkit-transform:rotate(135deg);transform:rotate(135deg)}.-right-bottom- .datepicker--pointer,.-right-center- .datepicker--pointer,.-right-top- .datepicker--pointer{right:calc(100% - 4px);-webkit-transform:rotate(225deg);transform:rotate(225deg)}.-bottom-center- .datepicker--pointer,.-bottom-left- .datepicker--pointer,.-bottom-right- .datepicker--pointer{bottom:calc(100% - 4px);-webkit-transform:rotate(315deg);transform:rotate(315deg)}.-left-bottom- .datepicker--pointer,.-left-center- .datepicker--pointer,.-left-top- .datepicker--pointer{left:calc(100% - 4px);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.-bottom-left- .datepicker--pointer,.-top-left- .datepicker--pointer{left:10px}.-bottom-right- .datepicker--pointer,.-top-right- .datepicker--pointer{right:10px}.-bottom-center- .datepicker--pointer,.-top-center- .datepicker--pointer{left:calc(50% - 10px / 2)}.-left-top- .datepicker--pointer,.-right-top- .datepicker--pointer{top:10px}.-left-bottom- .datepicker--pointer,.-right-bottom- .datepicker--pointer{bottom:10px}.-left-center- .datepicker--pointer,.-right-center- .datepicker--pointer{top:calc(50% - 10px / 2)}.datepicker--body.active{display:block}.datepicker--nav{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #efefef;min-height:32px;padding:4px}.-only-timepicker- .datepicker--nav{display:none}.datepicker--nav-action,.datepicker--nav-title{display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.datepicker--nav-action{width:32px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker--nav-action.-disabled-{visibility:hidden}.datepicker--nav-action svg{width:32px;height:32px}.datepicker--nav-action path{fill:none;stroke:#9c9c9c;stroke-width:2px}.datepicker--nav-title{border-radius:4px;padding:0 8px}.datepicker--buttons,.datepicker--time{border-top:1px solid #efefef;padding:4px}.datepicker--nav-title i{font-style:normal;color:#9c9c9c;margin-left:5px}.datepicker--nav-title.-disabled-{cursor:default;background:0 0}.datepicker--buttons{display:-webkit-flex;display:-ms-flexbox;display:flex}.datepicker--button{color:#4EB5E6;cursor:pointer;border-radius:4px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:32px}.datepicker--button:hover{color:#4a4a4a;background:#f0f0f0}.datepicker--time{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;position:relative}.datepicker--time.-am-pm- .datepicker--time-sliders{-webkit-flex:0 1 138px;-ms-flex:0 1 138px;flex:0 1 138px;max-width:138px}.-only-timepicker- .datepicker--time{border-top:none}.datepicker--time-sliders{-webkit-flex:0 1 153px;-ms-flex:0 1 153px;flex:0 1 153px;margin-right:10px;max-width:153px}.datepicker--time-label{display:none;font-size:12px}.datepicker--time-current{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;font-size:14px;text-align:center;margin:0 0 0 10px}.datepicker--time-current-colon{margin:0 2px 3px;line-height:1}.datepicker--time-current-hours,.datepicker--time-current-minutes{line-height:1;font-size:19px;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.datepicker--time-current-hours:after,.datepicker--time-current-minutes:after{content:'';background:#f0f0f0;border-radius:4px;position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.datepicker--time-current-hours.-focus-:after,.datepicker--time-current-minutes.-focus-:after{opacity:1}.datepicker--time-current-ampm{text-transform:uppercase;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;color:#9c9c9c;margin-left:6px;font-size:11px;margin-bottom:1px}.datepicker--time-row{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right,#dedede,#dedede) left 50%/100% 1px no-repeat}.datepicker--time-row:first-child{margin-bottom:4px}.datepicker--time-row input[type=range]{background:0 0;cursor:pointer;-webkit-flex:1;-ms-flex:1;flex:1;height:100%;padding:0;margin:0;-webkit-appearance:none}.datepicker--time-row input[type=range]::-ms-tooltip{display:none}.datepicker--time-row input[type=range]:hover::-webkit-slider-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-moz-range-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-ms-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:focus{outline:0}.datepicker--time-row input[type=range]:focus::-webkit-slider-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-moz-range-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-ms-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s;margin-top:-6px}.datepicker--time-row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-webkit-slider-runnable-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-moz-range-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-fill-lower{background:0 0}.datepicker--time-row input[type=range]::-ms-fill-upper{background:0 0}.datepicker--time-row span{padding:0 12px}.datepicker--time-icon{color:#9c9c9c;border:1px solid;border-radius:50%;font-size:16px;position:relative;margin:0 5px -1px 0;width:1em;height:1em}.datepicker--time-icon:after,.datepicker--time-icon:before{content:'';background:currentColor;position:absolute}.datepicker--time-icon:after{height:.4em;width:1px;left:calc(50% - 1px);top:calc(50% + 1px);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.datepicker--time-icon:before{width:.4em;height:1px;top:calc(50% + 1px);left:calc(50% - 1px)}.datepicker--cell-day.-other-month-,.datepicker--cell-year.-other-decade-{color:#dedede}.datepicker--cell-day.-other-month-:hover,.datepicker--cell-year.-other-decade-:hover{color:#c5c5c5}.-disabled-.-focus-.datepicker--cell-day.-other-month-,.-disabled-.-focus-.datepicker--cell-year.-other-decade-{color:#dedede}.-selected-.datepicker--cell-day.-other-month-,.-selected-.datepicker--cell-year.-other-decade-{color:#fff;background:#a2ddf6}.-selected-.-focus-.datepicker--cell-day.-other-month-,.-selected-.-focus-.datepicker--cell-year.-other-decade-{background:#8ad5f4}.-in-range-.datepicker--cell-day.-other-month-,.-in-range-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.1);color:#ccc}.-in-range-.-focus-.datepicker--cell-day.-other-month-,.-in-range-.-focus-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.2)}.datepicker--cell-day.-other-month-:empty,.datepicker--cell-year.-other-decade-:empty{background:0 0;border:none} \ No newline at end of file diff --git a/punch_list/css/normalize.css b/punch_list/css/normalize.css deleted file mode 100644 index 81c6f31..0000000 --- a/punch_list/css/normalize.css +++ /dev/null @@ -1,427 +0,0 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} \ No newline at end of file diff --git a/punch_list/css/skeleton.css b/punch_list/css/skeleton.css deleted file mode 100644 index f28bf6c..0000000 --- a/punch_list/css/skeleton.css +++ /dev/null @@ -1,418 +0,0 @@ -/* -* Skeleton V2.0.4 -* Copyright 2014, Dave Gamache -* www.getskeleton.com -* Free to use under the MIT license. -* http://www.opensource.org/licenses/mit-license.php -* 12/29/2014 -*/ - - -/* Table of contents -–––––––––––––––––––––––––––––––––––––––––––––––––– -- Grid -- Base Styles -- Typography -- Links -- Buttons -- Forms -- Lists -- Code -- Tables -- Spacing -- Utilities -- Clearing -- Media Queries -*/ - - -/* Grid -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.container { - position: relative; - width: 100%; - max-width: 960px; - margin: 0 auto; - padding: 0 20px; - box-sizing: border-box; } -.column, -.columns { - width: 100%; - float: left; - box-sizing: border-box; } - -/* For devices larger than 400px */ -@media (min-width: 400px) { - .container { - width: 85%; - padding: 0; } -} - -/* For devices larger than 550px */ -@media (min-width: 550px) { - .container { - width: 80%; } - .column, - .columns { - margin-left: 4%; } - .column:first-child, - .columns:first-child { - margin-left: 0; } - - .one.column, - .one.columns { width: 4.66666666667%; } - .two.columns { width: 13.3333333333%; } - .three.columns { width: 22%; } - .four.columns { width: 30.6666666667%; } - .five.columns { width: 39.3333333333%; } - .six.columns { width: 48%; } - .seven.columns { width: 56.6666666667%; } - .eight.columns { width: 65.3333333333%; } - .nine.columns { width: 74.0%; } - .ten.columns { width: 82.6666666667%; } - .eleven.columns { width: 91.3333333333%; } - .twelve.columns { width: 100%; margin-left: 0; } - - .one-third.column { width: 30.6666666667%; } - .two-thirds.column { width: 65.3333333333%; } - - .one-half.column { width: 48%; } - - /* Offsets */ - .offset-by-one.column, - .offset-by-one.columns { margin-left: 8.66666666667%; } - .offset-by-two.column, - .offset-by-two.columns { margin-left: 17.3333333333%; } - .offset-by-three.column, - .offset-by-three.columns { margin-left: 26%; } - .offset-by-four.column, - .offset-by-four.columns { margin-left: 34.6666666667%; } - .offset-by-five.column, - .offset-by-five.columns { margin-left: 43.3333333333%; } - .offset-by-six.column, - .offset-by-six.columns { margin-left: 52%; } - .offset-by-seven.column, - .offset-by-seven.columns { margin-left: 60.6666666667%; } - .offset-by-eight.column, - .offset-by-eight.columns { margin-left: 69.3333333333%; } - .offset-by-nine.column, - .offset-by-nine.columns { margin-left: 78.0%; } - .offset-by-ten.column, - .offset-by-ten.columns { margin-left: 86.6666666667%; } - .offset-by-eleven.column, - .offset-by-eleven.columns { margin-left: 95.3333333333%; } - - .offset-by-one-third.column, - .offset-by-one-third.columns { margin-left: 34.6666666667%; } - .offset-by-two-thirds.column, - .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } - - .offset-by-one-half.column, - .offset-by-one-half.columns { margin-left: 52%; } - -} - - -/* Base Styles -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -/* NOTE -html is set to 62.5% so that all the REM measurements throughout Skeleton -are based on 10px sizing. So basically 1.5rem = 15px :) */ -html { - font-size: 62.5%; } -body { - font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ - line-height: 1.6; - font-weight: 400; - font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #222; } - - -/* Typography -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 2rem; - font-weight: 300; } -h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} -h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } -h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } -h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } -h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } -h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } - -/* Larger than phablet */ -@media (min-width: 550px) { - h1 { font-size: 5.0rem; } - h2 { font-size: 4.2rem; } - h3 { font-size: 3.6rem; } - h4 { font-size: 3.0rem; } - h5 { font-size: 2.4rem; } - h6 { font-size: 1.5rem; } -} - -p { - margin-top: 0; } - - -/* Links -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -a { - color: #1EAEDB; } -a:hover { - color: #0FA0CE; } - - -/* Buttons -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.button, -button, -input[type="submit"], -input[type="reset"], -input[type="button"] { - display: inline-block; - height: 38px; - padding: 0 30px; - color: #555; - text-align: center; - font-size: 11px; - font-weight: 600; - line-height: 38px; - letter-spacing: .1rem; - text-transform: uppercase; - text-decoration: none; - white-space: nowrap; - background-color: transparent; - border-radius: 4px; - border: 1px solid #bbb; - cursor: pointer; - box-sizing: border-box; } -.button:hover, -button:hover, -input[type="submit"]:hover, -input[type="reset"]:hover, -input[type="button"]:hover, -.button:focus, -button:focus, -input[type="submit"]:focus, -input[type="reset"]:focus, -input[type="button"]:focus { - color: #333; - border-color: #888; - outline: 0; } -.button.button-primary, -button.button-primary, -input[type="submit"].button-primary, -input[type="reset"].button-primary, -input[type="button"].button-primary { - color: #FFF; - background-color: #33C3F0; - border-color: #33C3F0; } -.button.button-primary:hover, -button.button-primary:hover, -input[type="submit"].button-primary:hover, -input[type="reset"].button-primary:hover, -input[type="button"].button-primary:hover, -.button.button-primary:focus, -button.button-primary:focus, -input[type="submit"].button-primary:focus, -input[type="reset"].button-primary:focus, -input[type="button"].button-primary:focus { - color: #FFF; - background-color: #1EAEDB; - border-color: #1EAEDB; } - - -/* Forms -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -input[type="email"], -input[type="number"], -input[type="search"], -input[type="text"], -input[type="tel"], -input[type="url"], -input[type="password"], -textarea, -select { - height: 38px; - padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ - background-color: #fff; - border: 1px solid #D1D1D1; - border-radius: 4px; - box-shadow: none; - box-sizing: border-box; } -/* Removes awkward default styles on some inputs for iOS */ -input[type="email"], -input[type="number"], -input[type="search"], -input[type="text"], -input[type="tel"], -input[type="url"], -input[type="password"], -textarea { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; } -textarea { - min-height: 65px; - padding-top: 6px; - padding-bottom: 6px; } -input[type="email"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="text"]:focus, -input[type="tel"]:focus, -input[type="url"]:focus, -input[type="password"]:focus, -textarea:focus, -select:focus { - border: 1px solid #33C3F0; - outline: 0; } -label, -legend { - display: block; - margin-bottom: .5rem; - font-weight: 600; } -fieldset { - padding: 0; - border-width: 0; } -input[type="checkbox"], -input[type="radio"] { - display: inline; } -label > .label-body { - display: inline-block; - margin-left: .5rem; - font-weight: normal; } - - -/* Lists -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -ul { - list-style: circle inside; } -ol { - list-style: decimal inside; } -ol, ul { - padding-left: 0; - margin-top: 0; } -ul ul, -ul ol, -ol ol, -ol ul { - margin: 1.5rem 0 1.5rem 3rem; - font-size: 90%; } -li { - margin-bottom: 1rem; } - - -/* Code -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -code { - padding: .2rem .5rem; - margin: 0 .2rem; - font-size: 90%; - white-space: nowrap; - background: #F1F1F1; - border: 1px solid #E1E1E1; - border-radius: 4px; } -pre > code { - display: block; - padding: 1rem 1.5rem; - white-space: pre; } - - -/* Tables -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -th, -td { - padding: 12px 15px; - text-align: left; - border-bottom: 1px solid #E1E1E1; } -th:first-child, -td:first-child { - padding-left: 0; } -th:last-child, -td:last-child { - padding-right: 0; } - - -/* Spacing -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -button, -.button { - margin-bottom: 1rem; } -input, -textarea, -select, -fieldset { - margin-bottom: 1.5rem; } -pre, -blockquote, -dl, -figure, -table, -p, -ul, -ol, -form { - margin-bottom: 2.5rem; } - - -/* Utilities -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.u-full-width { - width: 100%; - box-sizing: border-box; } -.u-max-full-width { - max-width: 100%; - box-sizing: border-box; } -.u-pull-right { - float: right; } -.u-pull-left { - float: left; } - - -/* Misc -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -hr { - margin-top: 3rem; - margin-bottom: 3.5rem; - border-width: 0; - border-top: 1px solid #E1E1E1; } - - -/* Clearing -–––––––––––––––––––––––––––––––––––––––––––––––––– */ - -/* Self Clearing Goodness */ -.container:after, -.row:after, -.u-cf { - content: ""; - display: table; - clear: both; } - - -/* Media Queries -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -/* -Note: The best way to structure the use of media queries is to create the queries -near the relevant code. For example, if you wanted to change the styles for buttons -on small devices, paste the mobile query code up in the buttons section and style it -there. -*/ - - -/* Larger than mobile */ -@media (min-width: 400px) {} - -/* Larger than phablet (also point when grid becomes active) */ -@media (min-width: 550px) {} - -/* Larger than tablet */ -@media (min-width: 750px) {} - -/* Larger than desktop */ -@media (min-width: 1000px) {} - -/* Larger than Desktop HD */ -@media (min-width: 1200px) {} diff --git a/punch_list/database.rules.json b/punch_list/database.rules.json deleted file mode 100644 index 773daec..0000000 --- a/punch_list/database.rules.json +++ /dev/null @@ -1,13 +0,0 @@ -// These rules grant access to a node matching the authenticated -// user's ID from the Firebase auth token -{ - "rules": { - "users": { - "$uid": { - ".read": "$uid === auth.uid", - ".write": "$uid === auth.uid" - } - } - } -} - diff --git a/punch_list/eventManage.js b/punch_list/eventManage.js deleted file mode 100644 index a75e0e7..0000000 --- a/punch_list/eventManage.js +++ /dev/null @@ -1,428 +0,0 @@ -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, "done"), "punchListDone"); -} - -function genList(punchList, element) { - document.getElementById("showDone").innerHTML = "Show Done: " + showDone + ""; - console.log(`current tag = ${window.tagFilterItem}`); - - disableElement("punchDetail"); - 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 = ''; - - for (i = 0; i < listLength; i++) { - if (window.tagFilterItem != undefined) { - if (punchList[i].tags != undefined && punchList[i].tags.includes(window.tagFilterItem)) { - console.log(`in tagFilterIf`); - list += "
"; // - list += "
"; // - list += "
"; - list += "
" + punchList[i].subject + "
"; // - list += "
Status: " + punchList[i].progress + "
"; - list += "
Priority: " + punchList[i].priority + "
"; - list += "
Need By: " + punchList[i].nDate + "
"; - - if (punchList[i].tags != undefined) { - list += "
Tags: "; - for (t = 0; t < punchList[i].tags.length; t++) { - list += "" + punchList[i].tags[t] + ", "; - } - list += "
"; - } - list += "
"; - list += "
"; - list += "
"; - } - } else { - console.log(`in tagFilterElse`); - list += "
"; // - list += "
"; // - list += "
"; - list += "
" + punchList[i].subject + "
"; // - list += "
Status: " + punchList[i].progress + "
"; - list += "
Priority: " + punchList[i].priority + "
"; - list += "
Need By: " + punchList[i].nDate + "
"; - - if (punchList[i].tags != undefined) { - list += "
Tags: "; - for (t = 0; t < punchList[i].tags.length; t++) { - list += "" + punchList[i].tags[t] + ", "; - } - list += "
"; - } - list += "
"; - list += "
"; - list += "
"; - } - } - - document.getElementById(element).innerHTML = list; - - if (showDone === false) { - disableElement("punchListDoneWrapper"); - } else { - enableElement("punchListDoneWrapper"); - } - -} - -function startPunch(uuid) { - var punchList = window.punches; - item = findArrayId(uuid); - punchList[item].progress = "In Progress"; - - jsonStr = JSON.stringify(punchList); - putJson(jsonStr); -} - -function completePunch(uuid) { - var punchList = window.punches; - item = findArrayId(uuid); - punchList[item].progress = "Done"; - - 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 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 newEventJson = { uuid: genUid(), nDate: nDateField, subject: subjectField, priority: priorityField, progress: progressField, 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 ; -} - -/* When the user clicks on the button, -toggle between hiding and showing the dropdown content */ -function dropMenu(item) { - window.dropId = "myDropdown" + item; - document.getElementById(window.dropId).classList.toggle("show"); -} - -// Close the dropdown if the user clicks outside of it -window.onclick = function(e) { - if (!e.target.matches('.dropbtn')) { - var myDropdown = document.getElementById(window.dropId); - if (myDropdown.classList.contains('show')) { - myDropdown.classList.remove('show'); - } - } -} - -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 */ -getJson(); - - disableElement("newEvent"); - disableElement("punchListAll"); - enableElement("editPunch"); - - punchList = window.punches; - item = findArrayId(uuid); - - 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; - - document.getElementById("editID").value = id; - document.getElementById("editSubject").value = subject; - document.getElementById("timepickerEdit").value = nDate; - document.getElementById("editNotes").value = notes; - document.getElementById("editProgress").value = progress; - document.getElementById("editPriority").value = priority; -} - -function submitEditPunch() { - punchList = window.punches; - - var id = document.getElementById("editID").value; - var subjectField = document.getElementById("editSubject").value; - var priorityField = document.getElementById("editPriority").value; - var progressField = document.getElementById("editProgress").value; - var nDateField = document.getElementById("timepickerEdit").value; - var notesField = document.getElementById("editNotes").value; - - punchList[id].subject = subjectField; - punchList[id].priority = priorityField; - punchList[id].progress = progressField; - punchList[id].nDate = nDateField; - punchList[id].notes = notesField; - - jsonStr = JSON.stringify(punchList); - putJson(jsonStr); - disableElement("editPunch"); -} - -function addTag() { - /* Before doing this, - Refresh the array, - So that we don't overwrite data */ -getJson(); - - var item = document.getElementById("editID").value; - var newTag = document.getElementById("tag").value.toLowerCase(); - - console.log(`Item: ${item}`); - console.log(`New Tag: ${newTag}`); - // make sure tags object exists - if (punchList[item].tags === undefined) { - console.log(`Adding tags object to punchList[${item}]`); - punchList[item].tags = []; - } - - punchList[item].tags.push(newTag); - console.log(`${punchList[item].tags}`); - - jsonStr = JSON.stringify(punchList); - putJson(jsonStr); - disableElement("editPunch"); - enableElement("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.'); - }); -} - - diff --git a/punch_list/eventsList.js b/punch_list/eventsList.js deleted file mode 100644 index e20707d..0000000 --- a/punch_list/eventsList.js +++ /dev/null @@ -1,218 +0,0 @@ -var initialized = false; - -function getEvents() { - let req = new XMLHttpRequest(); - - req.onreadystatechange = () => { - console.log(`${req.readyState}`); - console.log(`${XMLHttpRequest.DONE}`); - if (req.readyState == XMLHttpRequest.DONE) { - console.log(`request done`); - let dataLoad = true; - window.eventsList = JSON.parse(req.responseText); - window.eventsLength = eventsList.length; - main(window.eventsList, dataLoad, window.eventsLength); - } - }; - req.open("GET", btJsonUrl , true); - req.send(); -} - -//sleep function -function sleep(delay) { - var start = new Date().getTime(); - while (new Date().getTime() < start + delay); -} - -function selectEvent(id) { - var events = window.eventsList; - console.log(`inside selectEvent()`); - - currentObject = id; - array_counter = id; - currentDate = events[currentObject].date; - currentSubject = events[currentObject].subject; - currentStart = currentDate; - currentEnd = nextDate; - nextObject = array_counter + 1; - if (nextObject >= window.eventsLength) { - nextStart = ""; - nextEnd = ""; - nextDate = ""; - nextSubject = "End"; - notes = ""; - } else { - nextStart = nextDate; - nextEnd = events[nextObject].date; - nextDate = events[nextObject].date; - nextSubject = events[nextObject].subject; - notes = events[currentObject].notes; - } - - countDownDate = new Date(nextDate).getTime(); - currentTimer = new Date(currentDate).getTime(); -} - -function incArray() { - var events = window.eventsList; - console.log("inside incArray"); - console.log(`array_counter = ${array_counter}`); - console.log(`window.eventsLength = ${window.eventsLength}`); - console.log(`events = ${events}`); - if (array_counter < window.eventsLength) { - array_counter++; - } - selectEvent(array_counter); -} - -function decArray() { - var events = window.eventsList; - console.log("inside decArray"); - console.log(`array_counter = ${array_counter}`); - console.log(`window.eventsLength = ${window.eventsLength}`); - console.log(`events = ${events}`); - - if (array_counter > 0) { - array_counter--; - } - selectEvent(array_counter); -} - -function genEventList() { - list = ""; - - var events = window.eventsList; - - if (window.eventsLength > 30) { - var listLength = 30; - var page = true; - } else { - var listLength = window.eventsLength; - } - - var count_to_end = window.eventsLength - array_counter; - - for (i = 0; i < listLength; i++) { - if (i === array_counter) { - eventStyle = "events-current"; - cdFunction = countdown(events[i].date, events[i + 1], "current"); - } else { - eventStyle = "events"; - cdFunction = countdown(events[i].date, "", "next"); - } - - counter_diff = i - array_counter; - - if (counter_diff < -2) { - list += ''; - if (listLength < window.eventsLength) { - listLength++; - } - } else { - list += ""; - } - } - - list += "
EventTimeTime Until
" + events[i].subject + "" + events[i].date + "" + cdFunction + "
"; - - return list; -} - -function main(array, dataLoad, aLen) { - var x = setInterval(function() { - document.getElementById("events-list").innerHTML = genEventList(); - }, 1000); -} - -var style = "green"; // reset style - -function countdown(targetDate, nextDate, current) { - var countDownDate = new Date(targetDate).getTime(); - var now = new Date().getTime(); - var distance = countDownDate - now; - - if (current === "current") { - var nextCountDownDate = new Date(nextDate).getTime(); - var nextDistance = nextCountDownDate - now; - var nextDays = Math.floor(nextDistance / (1000 * 60 * 60 * 24)); - var nextHours = Math.floor((nextDistance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); - var nextMinutes = Math.floor((nextDistance % (1000 * 60 * 60)) / (1000 * 60)); - var nextSeconds = Math.floor((nextDistance % (1000 * 60)) / 1000); - } - - var days = Math.floor(distance / (1000 * 60 * 60 * 24)); - var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); - var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); - var seconds = Math.floor((distance % (1000 * 60)) / 1000); - -// set style for countdown based on remaining time - style = "green"; // reset style - - if (current === "current") { - style = 'current'; - } else { - if (days < 1 && hours < 1) { - if (minutes < 0) { - style = 'over'; - } else if (minutes < 15) { - style = 'warn'; - } else { - style = 'green'; - } - } - } - - if (days < 0) { - days = (-days); - days--; - } - -// Day or Days? - if (days > 0) { - if (days === 1){ - rDays = (days + ' Day '); - } else { - rDays = (days + ' Days '); - } - } else { - rDays = ''; - } - -// pad single digits with a '0' prefix -// when time is out, start counting up by inverting - if (hours < 0) { - hours = (-hours); - hours--; - } - if (hours < 10 && hours >= 0) { - hours = ('0' + hours); - } - - if (minutes < 0) { - minutes = (-minutes); - minutes--; - } - if (minutes < 10 && minutes >= 0) { - minutes = ('0' + minutes); - } - - if (seconds < 0) { - seconds = (-seconds); - seconds--; - } - if (seconds < 10 && seconds >= 0) { - seconds = ('0' + seconds); - } - - if (initialized === false && distance < 0) { - incArray(); - } else if (initialized === false) { - initialized = true; - decArray(); - } - - var r = "
" + rDays + hours + ":" + minutes + ":" + seconds + "
"; - return r; -} - - diff --git a/punch_list/firebase.json b/punch_list/firebase.json deleted file mode 100644 index 9357019..0000000 --- a/punch_list/firebase.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "database": { - "rules": "database.rules.json" - }, - "firestore": { - "rules": "firestore.rules", - "indexes": "firestore.indexes.json" - }, - "hosting": { - "public": "public", - "ignore": [ - "firebase.json", - "**/.*", - "**/node_modules/**" - ] - } -} diff --git a/punch_list/firestore.indexes.json b/punch_list/firestore.indexes.json deleted file mode 100644 index 415027e..0000000 --- a/punch_list/firestore.indexes.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "indexes": [], - "fieldOverrides": [] -} diff --git a/punch_list/firestore.rules b/punch_list/firestore.rules deleted file mode 100644 index 341425d..0000000 --- a/punch_list/firestore.rules +++ /dev/null @@ -1,8 +0,0 @@ -rules_version = '2'; -service cloud.firestore { - match /databases/{database}/documents { - match /{document=**} { - allow read, write; - } - } -} \ No newline at end of file diff --git a/punch_list/functions/.gitignore b/punch_list/functions/.gitignore deleted file mode 100644 index 40b878d..0000000 --- a/punch_list/functions/.gitignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/punch_list/functions/index.js b/punch_list/functions/index.js deleted file mode 100644 index bd698a2..0000000 --- a/punch_list/functions/index.js +++ /dev/null @@ -1,8 +0,0 @@ -const functions = require('firebase-functions'); - -// // Create and Deploy Your First Cloud Functions -// // https://firebase.google.com/docs/functions/write-firebase-functions -// -// exports.helloWorld = functions.https.onRequest((request, response) => { -// response.send("Hello from Firebase!"); -// }); diff --git a/punch_list/functions/package-lock.json b/punch_list/functions/package-lock.json deleted file mode 100644 index 77f3fbc..0000000 --- a/punch_list/functions/package-lock.json +++ /dev/null @@ -1,2022 +0,0 @@ -{ - "name": "functions", - "requires": true, - "lockfileVersion": 1, - "dependencies": { - "@firebase/app": { - "version": "0.4.9", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.4.9.tgz", - "integrity": "sha512-M1An/Id2ozNWbEeanLmczqgu7nS7Qq62u8yjdGOuePhJNie61/10zwPNETGKW/M+sYD6JaZYIsIhP2bQF9ZoDQ==", - "requires": { - "@firebase/app-types": "0.4.0", - "@firebase/logger": "0.1.17", - "@firebase/util": "0.2.20", - "dom-storage": "2.1.0", - "tslib": "1.9.3", - "xmlhttprequest": "1.8.0" - } - }, - "@firebase/app-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.4.0.tgz", - "integrity": "sha512-8erNMHc0V26gA6Nj4W9laVrQrXHsj9K2TEM7eL2IQogGSHLL4vet3UNekYfcGQ2cjfvwUjMzd+BNS/8S7GnfiA==" - }, - "@firebase/database": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.4.6.tgz", - "integrity": "sha512-EpH5JUybuebVzUK1Z1wQ33Hjs8ZJbM6pyAlHDgWcqe4c7hNsHK8QNIxbQXHVfjCtu+EBneFM3MlYF5cWka5Kzw==", - "requires": { - "@firebase/database-types": "0.4.0", - "@firebase/logger": "0.1.17", - "@firebase/util": "0.2.20", - "faye-websocket": "0.11.3", - "tslib": "1.9.3" - } - }, - "@firebase/database-types": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.0.tgz", - "integrity": "sha512-2piRYW7t+2s/P1NPpcI/3+8Y5l2WnJhm9KACoXW5zmoAPlya8R1aEaR2dNHLNePTMHdg04miEDD9fEz4xUqzZA==" - }, - "@firebase/logger": { - "version": "0.1.17", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.17.tgz", - "integrity": "sha512-vCuurlKhvEjN5SGbIGfHhVhMsRM6RknAjbEKbT6CgmD6fUnNH2oE1MwbafBK3nLc7i9sQFwZUU/fi4P0Nu/McQ==" - }, - "@firebase/util": { - "version": "0.2.20", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.20.tgz", - "integrity": "sha512-Cu5T7RFV54eZdToPXcRKwn7rB0hImbkvLdAmno6mKkoV5s0xDgo9K0PBvftqp8Gg2aDR/B5p+ZjR6xDiSQ42sA==", - "requires": { - "tslib": "1.9.3" - } - }, - "@google-cloud/common": { - "version": "0.32.1", - "resolved": "https://registry.npmjs.org/@google-cloud/common/-/common-0.32.1.tgz", - "integrity": "sha512-bLdPzFvvBMtVkwsoBtygE9oUm3yrNmPa71gvOgucYI/GqvNP2tb6RYsDHPq98kvignhcgHGDI5wyNgxaCo8bKQ==", - "optional": true, - "requires": { - "@google-cloud/projectify": "^0.3.3", - "@google-cloud/promisify": "^0.4.0", - "@types/request": "^2.48.1", - "arrify": "^2.0.0", - "duplexify": "^3.6.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "google-auth-library": "^3.1.1", - "pify": "^4.0.1", - "retry-request": "^4.0.0", - "teeny-request": "^3.11.3" - }, - "dependencies": { - "gaxios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz", - "integrity": "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==", - "optional": true, - "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.3.0" - } - }, - "gcp-metadata": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", - "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", - "optional": true, - "requires": { - "gaxios": "^1.0.2", - "json-bigint": "^0.3.0" - } - }, - "google-auth-library": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", - "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", - "optional": true, - "requires": { - "base64-js": "^1.3.0", - "fast-text-encoding": "^1.0.0", - "gaxios": "^1.2.1", - "gcp-metadata": "^1.0.0", - "gtoken": "^2.3.2", - "https-proxy-agent": "^2.2.1", - "jws": "^3.1.5", - "lru-cache": "^5.0.0", - "semver": "^5.5.0" - } - }, - "google-p12-pem": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", - "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", - "optional": true, - "requires": { - "node-forge": "^0.8.0", - "pify": "^4.0.0" - } - }, - "gtoken": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", - "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", - "optional": true, - "requires": { - "gaxios": "^1.0.4", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.5", - "mime": "^2.2.0", - "pify": "^4.0.0" - } - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "optional": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "optional": true - } - } - }, - "@google-cloud/firestore": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@google-cloud/firestore/-/firestore-2.2.3.tgz", - "integrity": "sha512-OAaF/2hivinynY0Q0bp2+6rVLzRzMIgNuDEMblZiRYFIos1aBJ1xXZ33RyCecyy+ktm/ARYAVCu+5ZdURitDuw==", - "optional": true, - "requires": { - "bun": "^0.0.12", - "deep-equal": "^1.0.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^1.1.2", - "through2": "^3.0.0" - } - }, - "@google-cloud/paginator": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@google-cloud/paginator/-/paginator-0.2.0.tgz", - "integrity": "sha512-2ZSARojHDhkLvQ+CS32K+iUhBsWg3AEw+uxtqblA7xoCABDyhpj99FPp35xy6A+XlzMhOSrHHaxFE+t6ZTQq0w==", - "optional": true, - "requires": { - "arrify": "^1.0.1", - "extend": "^3.0.1", - "split-array-stream": "^2.0.0", - "stream-events": "^1.0.4" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "optional": true - } - } - }, - "@google-cloud/projectify": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@google-cloud/projectify/-/projectify-0.3.3.tgz", - "integrity": "sha512-7522YHQ4IhaafgSunsFF15nG0TGVmxgXidy9cITMe+256RgqfcrfWphiMufW+Ou4kqagW/u3yxwbzVEW3dk2Uw==", - "optional": true - }, - "@google-cloud/promisify": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@google-cloud/promisify/-/promisify-0.4.0.tgz", - "integrity": "sha512-4yAHDC52TEMCNcMzVC8WlqnKKKq+Ssi2lXoUg9zWWkZ6U6tq9ZBRYLHHCRdfU+EU9YJsVmivwGcKYCjRGjnf4Q==", - "optional": true - }, - "@google-cloud/storage": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@google-cloud/storage/-/storage-2.5.0.tgz", - "integrity": "sha512-q1mwB6RUebIahbA3eriRs8DbG2Ij81Ynb9k8hMqTPkmbd8/S6Z0d6hVvfPmnyvX9Ej13IcmEYIbymuq/RBLghA==", - "optional": true, - "requires": { - "@google-cloud/common": "^0.32.0", - "@google-cloud/paginator": "^0.2.0", - "@google-cloud/promisify": "^0.4.0", - "arrify": "^1.0.0", - "async": "^2.0.1", - "compressible": "^2.0.12", - "concat-stream": "^2.0.0", - "date-and-time": "^0.6.3", - "duplexify": "^3.5.0", - "extend": "^3.0.0", - "gcs-resumable-upload": "^1.0.0", - "hash-stream-validation": "^0.2.1", - "mime": "^2.2.0", - "mime-types": "^2.0.8", - "onetime": "^5.1.0", - "pumpify": "^1.5.1", - "snakeize": "^0.1.0", - "stream-events": "^1.0.1", - "teeny-request": "^3.11.3", - "through2": "^3.0.0", - "xdg-basedir": "^3.0.0" - }, - "dependencies": { - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "optional": true - } - } - }, - "@grpc/grpc-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-0.4.3.tgz", - "integrity": "sha512-09qiFMBh90YZ4P5RFzvpSUvBi9DmftvTaP+mmmTzigps0It5YxuwQNqDAo9pI7SWom/6A5ybxv2CUGNk86+FCg==", - "optional": true, - "requires": { - "semver": "^6.0.0" - } - }, - "@grpc/proto-loader": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.1.tgz", - "integrity": "sha512-3y0FhacYAwWvyXshH18eDkUI40wT/uGio7MAegzY8lO5+wVsc19+1A7T0pPptae4kl7bdITL+0cHpnAPmryBjQ==", - "optional": true, - "requires": { - "lodash.camelcase": "^4.3.0", - "protobufjs": "^6.8.6" - } - }, - "@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=", - "optional": true - }, - "@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "optional": true - }, - "@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "optional": true - }, - "@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=", - "optional": true - }, - "@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", - "optional": true, - "requires": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=", - "optional": true - }, - "@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=", - "optional": true - }, - "@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=", - "optional": true - }, - "@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=", - "optional": true - }, - "@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=", - "optional": true - }, - "@types/body-parser": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.17.0.tgz", - "integrity": "sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w==", - "requires": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "@types/caseless": { - "version": "0.12.2", - "resolved": "https://registry.npmjs.org/@types/caseless/-/caseless-0.12.2.tgz", - "integrity": "sha512-6ckxMjBBD8URvjB6J3NcnuAn5Pkl7t3TizAg+xdlzzQGSPSmBcXf8KoIH0ua/i+tio+ZRUHEXp0HEmvaR4kt0w==", - "optional": true - }, - "@types/connect": { - "version": "3.4.32", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.32.tgz", - "integrity": "sha512-4r8qa0quOvh7lGD0pre62CAb1oni1OO6ecJLGCezTmhQ8Fz50Arx9RUszryR8KlgK6avuSXvviL6yWyViQABOg==", - "requires": { - "@types/node": "*" - } - }, - "@types/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-GmK8AKu8i+s+EChK/uZ5IbrXPcPaQKWaNSGevDT/7o3gFObwSUQwqb1jMqxuo+YPvj0ckGzINI+EO7EHcmJjKg==", - "requires": { - "@types/express": "*" - } - }, - "@types/express": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.0.tgz", - "integrity": "sha512-CjaMu57cjgjuZbh9DpkloeGxV45CnMGlVd+XpG7Gm9QgVrd7KFq+X4HY0vM+2v0bczS48Wg7bvnMY5TN+Xmcfw==", - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.16.7", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.16.7.tgz", - "integrity": "sha512-847KvL8Q1y3TtFLRTXcVakErLJQgdpFSaq+k043xefz9raEf0C7HalpSY7OW5PyjCnY8P7bPW5t/Co9qqp+USg==", - "requires": { - "@types/node": "*", - "@types/range-parser": "*" - } - }, - "@types/form-data": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-2.2.1.tgz", - "integrity": "sha512-JAMFhOaHIciYVh8fb5/83nmuO/AHwmto+Hq7a9y8FzLDcC1KCU344XDOMEmahnrTFlHjgh4L0WJFczNIX2GxnQ==", - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/jsonwebtoken": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.3.2.tgz", - "integrity": "sha512-Mkjljd9DTpkPlrmGfTJvcP4aBU7yO2QmW7wNVhV4/6AEUxYoacqU7FJU/N0yFEHTsIrE4da3rUrjrR5ejicFmA==", - "requires": { - "@types/node": "*" - } - }, - "@types/lodash": { - "version": "4.14.135", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.135.tgz", - "integrity": "sha512-Ed+tSZ9qM1oYpi5kzdsBuOzcAIn1wDW+e8TFJ50IMJMlSopGdJgKAbhHzN6h1E1OfjlGOr2JepzEWtg9NIfoNg==" - }, - "@types/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz", - "integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q==", - "optional": true - }, - "@types/mime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.1.tgz", - "integrity": "sha512-FwI9gX75FgVBJ7ywgnq/P7tw+/o1GUbtP0KzbtusLigAOgIgNISRK0ZPl4qertvXSIE8YbsVJueQ90cDt9YYyw==" - }, - "@types/node": { - "version": "8.10.50", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.50.tgz", - "integrity": "sha512-+ZbcUwJdaBgOZpwXeT0v+gHC/jQbEfzoc9s4d0rN0JIKeQbuTrT+A2n1aQY6LpZjrLXJT7avVUqiCecCJeeZxA==" - }, - "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" - }, - "@types/request": { - "version": "2.48.1", - "resolved": "https://registry.npmjs.org/@types/request/-/request-2.48.1.tgz", - "integrity": "sha512-ZgEZ1TiD+KGA9LiAAPPJL68Id2UWfeSO62ijSXZjFJArVV+2pKcsVHmrcu+1oiE3q6eDGiFiSolRc4JHoerBBg==", - "optional": true, - "requires": { - "@types/caseless": "*", - "@types/form-data": "*", - "@types/node": "*", - "@types/tough-cookie": "*" - } - }, - "@types/serve-static": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.2.tgz", - "integrity": "sha512-/BZ4QRLpH/bNYgZgwhKEh+5AsboDBcUdlBYgzoLX0fpj3Y2gp6EApyOlM3bK53wQS/OE1SrdSYBAbux2D1528Q==", - "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" - } - }, - "@types/tough-cookie": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-2.3.5.tgz", - "integrity": "sha512-SCcK7mvGi3+ZNz833RRjFIxrn4gI1PPR3NtuIS+6vMkvmsGjosqTJwRt5bAEFLRz+wtJMWv8+uOnZf2hi2QXTg==", - "optional": true - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "accepts": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "optional": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" - }, - "arrify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", - "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==", - "optional": true - }, - "async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", - "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", - "optional": true, - "requires": { - "lodash": "^4.17.11" - } - }, - "base64-js": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", - "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==", - "optional": true - }, - "bignumber.js": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz", - "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==", - "optional": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=" - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "optional": true - }, - "bun": { - "version": "0.0.12", - "resolved": "https://registry.npmjs.org/bun/-/bun-0.0.12.tgz", - "integrity": "sha512-Toms18J9DqnT+IfWkwxVTB2EaBprHvjlMWrTIsfX4xbu3ZBqVBwrERU0em1IgtRe04wT+wJxMlKHZok24hrcSQ==", - "optional": true, - "requires": { - "readable-stream": "~1.0.32" - } - }, - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" - }, - "compressible": { - "version": "2.0.17", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz", - "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==", - "optional": true, - "requires": { - "mime-db": ">= 1.40.0 < 2" - } - }, - "concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "optional": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "optional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "configstore": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-4.0.0.tgz", - "integrity": "sha512-CmquAXFBocrzaSM8mtGPMM/HiWmyIpr4CcJl/rgY2uCObZ/S7cKU0silxslqJejl+t/T9HS8E0PUNQD81JGUEQ==", - "optional": true, - "requires": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - } - }, - "content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", - "requires": { - "safe-buffer": "5.1.2" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" - }, - "cookie": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", - "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "optional": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "crypto-random-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", - "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=", - "optional": true - }, - "date-and-time": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/date-and-time/-/date-and-time-0.6.3.tgz", - "integrity": "sha512-lcWy3AXDRJOD7MplwZMmNSRM//kZtJaLz4n6D1P5z9wEmZGBKhJRBIr1Xs9KNQJmdXPblvgffynYji4iylUTcA==", - "optional": true - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha1-9dJgKStmDghO/0zbyfCK0yR0SLU=", - "optional": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" - }, - "destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" - }, - "dicer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/dicer/-/dicer-0.3.0.tgz", - "integrity": "sha512-MdceRRWqltEG2dZqO769g27N/3PXfcKl04VhYnBlo2YhH7zPi88VebsjTKclaOyiuMaGU72hTfw3VkUitGcVCA==", - "requires": { - "streamsearch": "0.1.2" - } - }, - "dom-storage": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz", - "integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q==" - }, - "dot-prop": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", - "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", - "optional": true, - "requires": { - "is-obj": "^1.0.0" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "optional": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" - }, - "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", - "optional": true, - "requires": { - "once": "^1.4.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "optional": true - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "optional": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "optional": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "optional": true - }, - "express": { - "version": "4.17.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", - "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", - "requires": { - "accepts": "~1.3.7", - "array-flatten": "1.1.1", - "body-parser": "1.19.0", - "content-disposition": "0.5.3", - "content-type": "~1.0.4", - "cookie": "0.4.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "~1.1.2", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "~1.1.2", - "fresh": "0.5.2", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.5", - "qs": "6.7.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.1.2", - "send": "0.17.1", - "serve-static": "1.14.1", - "setprototypeof": "1.1.1", - "statuses": "~1.5.0", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "optional": true - }, - "fast-text-encoding": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz", - "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==", - "optional": true - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "firebase-admin": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/firebase-admin/-/firebase-admin-8.2.0.tgz", - "integrity": "sha512-SiF4ivEknRWvwtFLgUxfxN7kR6/3bcoNd7pXVKPcszW6lHcMXe5qY58MwKIfDTN1JlayBiwkZjealnGZ2G8/Yg==", - "requires": { - "@firebase/app": "^0.4.4", - "@firebase/database": "^0.4.4", - "@google-cloud/firestore": "^2.0.0", - "@google-cloud/storage": "^2.5.0", - "@types/node": "^8.0.53", - "dicer": "^0.3.0", - "jsonwebtoken": "8.1.0", - "node-forge": "0.7.4" - } - }, - "firebase-functions": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/firebase-functions/-/firebase-functions-3.0.2.tgz", - "integrity": "sha512-FEC2UVNGuMTj4buq4z3zjzClaMR/h5vTnb1sSwNEaoPOP6Dr3IOxoyVNlC/qHY5qj9lVPL/YwnV8tPQ6xGmbaA==", - "requires": { - "@types/cors": "^2.8.5", - "@types/express": "^4.11.1", - "@types/jsonwebtoken": "^8.3.2", - "@types/lodash": "^4.14.133", - "cors": "^2.8.4", - "express": "^4.17.1", - "jsonwebtoken": "^8.3.2", - "lodash": "^4.6.1" - }, - "dependencies": { - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - } - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - } - } - }, - "firebase-functions-test": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/firebase-functions-test/-/firebase-functions-test-0.1.6.tgz", - "integrity": "sha512-sITLbQunI75gL690qFOq4mqxUEcdETEbY4HcLFawWVJC3PmlSFt81mhfZjJe45GJTt1+7xeowaHQx3jpnoPNpA==", - "dev": true, - "requires": { - "@types/lodash": "^4.14.104", - "lodash": "^4.17.5" - } - }, - "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "optional": true - }, - "gaxios": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.0.1.tgz", - "integrity": "sha512-c1NXovTxkgRJTIgB2FrFmOFg4YIV6N/bAa4f/FZ4jIw13Ql9ya/82x69CswvotJhbV3DiGnlTZwoq2NVXk2Irg==", - "optional": true, - "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.3.0" - } - }, - "gcp-metadata": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-2.0.1.tgz", - "integrity": "sha512-nrbLj5O1MurvpLC/doFwzdTfKnmYGDYXlY/v7eQ4tJNVIvQXbOK672J9UFbradbtmuTkyHzjpzD8HD0Djz0LWw==", - "optional": true, - "requires": { - "gaxios": "^2.0.0", - "json-bigint": "^0.3.0" - } - }, - "gcs-resumable-upload": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/gcs-resumable-upload/-/gcs-resumable-upload-1.1.0.tgz", - "integrity": "sha512-uBz7uHqp44xjSDzG3kLbOYZDjxxR/UAGbB47A0cC907W6yd2LkcyFDTHg+bjivkHMwiJlKv4guVWcjPCk2zScg==", - "optional": true, - "requires": { - "abort-controller": "^2.0.2", - "configstore": "^4.0.0", - "gaxios": "^1.5.0", - "google-auth-library": "^3.0.0", - "pumpify": "^1.5.1", - "stream-events": "^1.0.4" - }, - "dependencies": { - "abort-controller": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-2.0.3.tgz", - "integrity": "sha512-EPSq5wr2aFyAZ1PejJB32IX9Qd4Nwus+adnp7STYFM5/23nLPBazqZ1oor6ZqbH+4otaaGXTlC8RN5hq3C8w9Q==", - "optional": true, - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "gaxios": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-1.8.4.tgz", - "integrity": "sha512-BoENMnu1Gav18HcpV9IleMPZ9exM+AvUjrAOV4Mzs/vfz2Lu/ABv451iEXByKiMPn2M140uul1txXCg83sAENw==", - "optional": true, - "requires": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.3.0" - }, - "dependencies": { - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "optional": true, - "requires": { - "event-target-shim": "^5.0.0" - } - } - } - }, - "gcp-metadata": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-1.0.0.tgz", - "integrity": "sha512-Q6HrgfrCQeEircnNP3rCcEgiDv7eF9+1B+1MMgpE190+/+0mjQR8PxeOaRgxZWmdDAF9EIryHB9g1moPiw1SbQ==", - "optional": true, - "requires": { - "gaxios": "^1.0.2", - "json-bigint": "^0.3.0" - } - }, - "google-auth-library": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-3.1.2.tgz", - "integrity": "sha512-cDQMzTotwyWMrg5jRO7q0A4TL/3GWBgO7I7q5xGKNiiFf9SmGY/OJ1YsLMgI2MVHHsEGyrqYnbnmV1AE+Z6DnQ==", - "optional": true, - "requires": { - "base64-js": "^1.3.0", - "fast-text-encoding": "^1.0.0", - "gaxios": "^1.2.1", - "gcp-metadata": "^1.0.0", - "gtoken": "^2.3.2", - "https-proxy-agent": "^2.2.1", - "jws": "^3.1.5", - "lru-cache": "^5.0.0", - "semver": "^5.5.0" - } - }, - "google-p12-pem": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-1.0.4.tgz", - "integrity": "sha512-SwLAUJqUfTB2iS+wFfSS/G9p7bt4eWcc2LyfvmUXe7cWp6p3mpxDo6LLI29MXdU6wvPcQ/up298X7GMC5ylAlA==", - "optional": true, - "requires": { - "node-forge": "^0.8.0", - "pify": "^4.0.0" - } - }, - "gtoken": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-2.3.3.tgz", - "integrity": "sha512-EaB49bu/TCoNeQjhCYKI/CurooBKkGxIqFHsWABW0b25fobBYVTMe84A8EBVVZhl8emiUdNypil9huMOTmyAnw==", - "optional": true, - "requires": { - "gaxios": "^1.0.4", - "google-p12-pem": "^1.0.0", - "jws": "^3.1.5", - "mime": "^2.2.0", - "pify": "^4.0.0" - } - }, - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "optional": true - }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "optional": true - } - } - }, - "google-auth-library": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-4.2.5.tgz", - "integrity": "sha512-Vfsr82M1KTdT0H0wjawwp0LHsT6mPKSolRp21ZpJ7Ydq63zRe8DbGKjRCCrhsRZHg+p17DuuSCMEznwk3CJRdw==", - "optional": true, - "requires": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "fast-text-encoding": "^1.0.0", - "gaxios": "^2.0.0", - "gcp-metadata": "^2.0.0", - "gtoken": "^3.0.0", - "jws": "^3.1.5", - "lru-cache": "^5.0.0" - } - }, - "google-gax": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-1.1.4.tgz", - "integrity": "sha512-Us35ZD3T+MKvSpCN6lO+VBH1tDbNwhyOihNnPaCBerVIdkmEhHBk+onPnU84YvhCd6SRRHYt1B2vWZEH5t1SdQ==", - "optional": true, - "requires": { - "@grpc/grpc-js": "^0.4.0", - "@grpc/proto-loader": "^0.5.1", - "duplexify": "^3.6.0", - "google-auth-library": "^4.0.0", - "is-stream-ended": "^0.1.4", - "lodash.at": "^4.6.0", - "lodash.has": "^4.5.2", - "protobufjs": "^6.8.8", - "retry-request": "^4.0.0", - "semver": "^6.0.0", - "walkdir": "^0.4.0" - } - }, - "google-p12-pem": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.1.tgz", - "integrity": "sha512-6h6x+eBX3k+IDSe/c8dVYmn8Mzr1mUcmKC9MdUSwaBkFAXlqBEnwFWmSFgGC+tcqtsLn73BDP/vUNWEehf1Rww==", - "optional": true, - "requires": { - "node-forge": "^0.8.0" - }, - "dependencies": { - "node-forge": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", - "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==", - "optional": true - } - } - }, - "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", - "optional": true - }, - "gtoken": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-3.0.2.tgz", - "integrity": "sha512-BOBi6Zz31JfxhSHRZBIDdbwIbOPyux10WxJHdx8wz/FMP1zyN1xFrsAWsgcLe5ww5v/OZu/MePUEZAjgJXSauA==", - "optional": true, - "requires": { - "gaxios": "^2.0.0", - "google-p12-pem": "^2.0.0", - "jws": "^3.1.5", - "mime": "^2.2.0" - } - }, - "hash-stream-validation": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/hash-stream-validation/-/hash-stream-validation-0.2.1.tgz", - "integrity": "sha1-7Mm5l7IYvluzEphii7gHhptz3NE=", - "optional": true, - "requires": { - "through2": "^2.0.0" - }, - "dependencies": { - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "optional": true - }, - "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "optional": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - } - } - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - } - } - }, - "http-parser-js": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", - "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=" - }, - "https-proxy-agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz", - "integrity": "sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg==", - "optional": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - } - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "optional": true - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "optional": true - }, - "ipaddr.js": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz", - "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==" - }, - "is-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", - "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", - "optional": true - }, - "is-stream-ended": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-stream-ended/-/is-stream-ended-0.1.4.tgz", - "integrity": "sha512-xj0XPvmr7bQFTvirqnFr50o0hQIh6ZItDqloxt5aJrR4NQsYeSsyFQERYGCAzfindAcnKjINnwEEgLx4IqVzQw==", - "optional": true - }, - "isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=", - "optional": true - }, - "json-bigint": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz", - "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=", - "optional": true, - "requires": { - "bignumber.js": "^7.0.0" - } - }, - "jsonwebtoken": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.1.0.tgz", - "integrity": "sha1-xjl80uX9WD1lwAeoPce7eOaYK4M=", - "requires": { - "jws": "^3.1.4", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.0.0", - "xtend": "^4.0.1" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "lodash": { - "version": "4.17.11", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" - }, - "lodash.at": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.at/-/lodash.at-4.6.0.tgz", - "integrity": "sha1-k83OZk8KGZTqM9181A4jr9EbD/g=", - "optional": true - }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "optional": true - }, - "lodash.has": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/lodash.has/-/lodash.has-4.5.2.tgz", - "integrity": "sha1-0Z9NwQlQWMzL4rDN9O4P5Ko3yGI=", - "optional": true - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8=" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY=" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M=" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w=" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w=" - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "optional": true - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "optional": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "make-dir": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", - "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", - "optional": true, - "requires": { - "pify": "^3.0.0" - }, - "dependencies": { - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "optional": true - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" - }, - "mime": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", - "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", - "optional": true - }, - "mime-db": { - "version": "1.40.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", - "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==" - }, - "mime-types": { - "version": "2.1.24", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", - "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", - "requires": { - "mime-db": "1.40.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "optional": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" - }, - "node-fetch": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz", - "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==", - "optional": true - }, - "node-forge": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.7.4.tgz", - "integrity": "sha512-8Df0906+tq/omxuCZD6PqhPaQDYuyJ1d+VITgxoIA8zvQd1ru+nMJcDChHH324MWitIgbVkAkQoGEEVJNpn/PA==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "requires": { - "ee-first": "1.1.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", - "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", - "optional": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "optional": true - }, - "protobufjs": { - "version": "6.8.8", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz", - "integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==", - "optional": true, - "requires": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.0", - "@types/node": "^10.1.0", - "long": "^4.0.0" - }, - "dependencies": { - "@types/node": { - "version": "10.14.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz", - "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==", - "optional": true - } - } - }, - "proxy-addr": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.5.tgz", - "integrity": "sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ==", - "requires": { - "forwarded": "~0.1.2", - "ipaddr.js": "1.9.0" - } - }, - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "optional": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "optional": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "retry-request": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/retry-request/-/retry-request-4.1.1.tgz", - "integrity": "sha512-BINDzVtLI2BDukjWmjAIRZ0oglnCAkpP2vQjM3jdLhmT62h0xnQgciPwBRDAvHqpkPT2Wo1XuUyLyn6nbGrZQQ==", - "optional": true, - "requires": { - "debug": "^4.1.1", - "through2": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", - "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", - "optional": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "safe-buffer": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", - "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, - "semver": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.2.0.tgz", - "integrity": "sha512-jdFC1VdUGT/2Scgbimf7FSx9iJLXoqfglSF+gJeuNWVpiE37OIbc1jywR/GJyFdz3mnkz2/id0L0J/cr0izR5A==", - "optional": true - }, - "send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", - "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", - "requires": { - "debug": "2.6.9", - "depd": "~1.1.2", - "destroy": "~1.0.4", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "fresh": "0.5.2", - "http-errors": "~1.7.2", - "mime": "1.6.0", - "ms": "2.1.1", - "on-finished": "~2.3.0", - "range-parser": "~1.2.1", - "statuses": "~1.5.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "requires": { - "ms": "2.0.0" - }, - "dependencies": { - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" - } - } - }, - "serve-static": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", - "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", - "requires": { - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "parseurl": "~1.3.3", - "send": "0.17.1" - } - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" - }, - "signal-exit": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "optional": true - }, - "snakeize": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/snakeize/-/snakeize-0.1.0.tgz", - "integrity": "sha1-EMCI2LWOsHazIpu1oE4jLOEmQi0=", - "optional": true - }, - "split-array-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/split-array-stream/-/split-array-stream-2.0.0.tgz", - "integrity": "sha512-hmMswlVY91WvGMxs0k8MRgq8zb2mSen4FmDNc5AFiTWtrBpdZN6nwD6kROVe4vNL+ywrvbCKsWVCnEd4riELIg==", - "optional": true, - "requires": { - "is-stream-ended": "^0.1.4" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" - }, - "stream-events": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/stream-events/-/stream-events-1.0.5.tgz", - "integrity": "sha512-E1GUzBSgvct8Jsb3v2X15pjzN1tYebtbLaMg+eBOUOAxgbLoSbT2NS91ckc5lJD1KfLjId+jXJRgo0qnV5Nerg==", - "optional": true, - "requires": { - "stubs": "^3.0.0" - } - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=", - "optional": true - }, - "streamsearch": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", - "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" - }, - "string_decoder": { - "version": "0.10.31", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", - "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", - "optional": true - }, - "stubs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stubs/-/stubs-3.0.0.tgz", - "integrity": "sha1-6NK6H6nJBXAwPAMLaQD31fiavls=", - "optional": true - }, - "teeny-request": { - "version": "3.11.3", - "resolved": "https://registry.npmjs.org/teeny-request/-/teeny-request-3.11.3.tgz", - "integrity": "sha512-CKncqSF7sH6p4rzCgkb/z/Pcos5efl0DmolzvlqRQUNcpRIruOhY9+T1FsIlyEbfWd7MsFpodROOwHYh2BaXzw==", - "optional": true, - "requires": { - "https-proxy-agent": "^2.2.1", - "node-fetch": "^2.2.0", - "uuid": "^3.3.2" - } - }, - "through2": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.1.tgz", - "integrity": "sha512-M96dvTalPT3YbYLaKaCuwu+j06D/8Jfib0o/PxbVt6Amhv3dUAtW6rTV1jPgJSBG83I/e04Y6xkVdVhSRhi0ww==", - "optional": true, - "requires": { - "readable-stream": "2 || 3" - }, - "dependencies": { - "readable-stream": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", - "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", - "optional": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "optional": true - }, - "string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" - }, - "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "optional": true - }, - "unique-string": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", - "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", - "optional": true, - "requires": { - "crypto-random-string": "^1.0.0" - } - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "optional": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" - }, - "uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "optional": true - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" - }, - "walkdir": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/walkdir/-/walkdir-0.4.0.tgz", - "integrity": "sha512-Ps0LSr9doEPbF4kEQi6sk5RgzIGLz9+OroGj1y2osIVnufjNQWSLEGIbZwW5V+j/jK8lCj/+8HSWs+6Q/rnViA==", - "optional": true - }, - "websocket-driver": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", - "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", - "requires": { - "http-parser-js": ">=0.4.0 <0.4.11", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", - "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "optional": true - }, - "write-file-atomic": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", - "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "xdg-basedir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", - "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=", - "optional": true - }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" - }, - "yallist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", - "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", - "optional": true - } - } -} diff --git a/punch_list/functions/package.json b/punch_list/functions/package.json deleted file mode 100644 index 5f51182..0000000 --- a/punch_list/functions/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "functions", - "description": "Cloud Functions for Firebase", - "scripts": { - "serve": "firebase serve --only functions", - "shell": "firebase functions:shell", - "start": "npm run shell", - "deploy": "firebase deploy --only functions", - "logs": "firebase functions:log" - }, - "engines": { - "node": "8" - }, - "dependencies": { - "firebase-admin": "^8.0.0", - "firebase-functions": "^3.0.0" - }, - "devDependencies": { - "firebase-functions-test": "^0.1.6" - }, - "private": true -} diff --git a/punch_list/images/down-carrot.png b/punch_list/images/down-carrot.png deleted file mode 100644 index 4864847d0cd70bd49073c0764f1d5a663eeae9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5520 zcmdT|c~Dc?(vK0uh=Ll$QIsGfVMag{*#(IRBxC~t6+}P<#f2q`EQ)Z68wx7p0vHld zL2y)*0J6&J3bI5IA;=aN%phSGLITNs=K?eJ>Z|Y7H}CuB)uU4M=|0`R{`Ki|Q+;#M ziB4QFZ^b+m3bnw2Wb2GVp}`W3nmZea=b3A&fs*V*b+rSktu5hie&}?%g9D97b|8_- z4ipNBOm&!AOs#>1My67cHH8A)z@LMI16WTPfgRa$AXC791c5{%5{bwb0HIK$qoW;= zSmZ+>5XfX2SO9Ja6oqPFphrO#;6nzGNL~u!KysjL-3pw^NGwQ4p#s3E5DI`tn2@PN zqWxca?d@%6$dIW>3J^l0k*Ek^5 zsn!FAz=2F5PIn5lo~IR3s?g?X}XWohk&#gIY!Ecq!s<( z2DBe{rn{hKp=T>7&QY3+nWsEoMRl2l*D>bBxN~RYPMr|wb*-YllsMy>$V5K>uoK*=C@_dY(KjzDo?Hy9fUuADR1mwRT8yXkrCZsYqP)TQQn>ejp{y^mYb!A-2yJt#=2FZ05W? z9q*>67I$?^j-WPOPa{6bt~%PSnfIl;yL)Kv@`bfh$t7E@4L{q=d665H`up#{lWeP_ zZ!R16Iex&9#aUi2-M|V|yLee#aI?+(Gp6=wWTbpJ8q?xR|S{2ZWal3B8=U>q2af3O~1RT z87><)Hl*i-bL8*bPKq{p8||=%8G77raj*WsC7-(zqX+S_Ha1xHih>_JkO|UD9%N>o z&uYpl2pr=S3sYYm(c%f~*cE#|rQLD4M^CXZz9G|O+lO{amg$vq$K^?So;!G~r*FO| z>3cd;;RTmz^_=3itm6AQcSv%NT}i>^i}}ONiCW`99y!-W5}xgN?6&levNOp ztW6Tnmjo62>I-$_JWsY-#NpTQ6*6CmE23r#b>jovtnb4jJYzSk-e&H7F)Q-R8o55Z z5@g7rHkaOCNZX_D_iNIJ)F^CGbl#0RHBKP58iJp>_w^Vv*=Cd;|MxvcOm&IO(eg<7 zsqZww$;a>#?v;9%0JKLDoPOFfCoq;K(B@>QgmyP2SAJ-RcRp)=oJz*>UyWEB``5cR zoZZO?JjsuplofJerx!a4zIL2_ax5^}?MS&?oe$sNSF1kk|7?Z1sb|&(9-ezK`2EY| z;UnlIF1+(qa`u~tnB8xR5BcmAeo$EVrTt0Hk>NvV;fLVBk8Z;J6GqGtbJIxwqZ%{; zx`Bp!x-K5iSS`$q*RM;*d>zFt$+a7!3G^ChKeP9DD5O>uAMy=;#ID?EZhG1ON(eSw zO_+JLz910I`_^uhYtf4zTnSts<_Fq5Ff+YeR|q8VMC2)8A9=*qycPVu`cyBzP6+%D z_u}6oa_x*<@h{|``!oKAT_uu!2GXOl^l#Owi^E%O>?c!v}6-Zm|PH!$m+ifGm}KH5Q#!ar5R4k zTmV0}mal-w3w8e&oBzS}zmZ&>1V8A5%bs{K%6h%PwDb6TnrSB^a_|l_GWTI=7T88BUN3_G5X zy-yN<()*!-M3_}e6STaWjOa8a%guWkSboPGVb{a~$NOD=s{+xzgJ7qSEZYor#sdg& zXV~<*NbzljxWl=EXVI>pB^8(N{4REnVOKtimX{5v=3wf$IFwWzRgGudkj(|2J|@g` zNQ$`)dj$Dm&Bn%m|k;X5uIM4_C(*f}; zNqi>{|8`Fsu5t+0WLK`t3Q~%NV=PXjRPN4#bkD;vo5E8n+x`92Ps7BMz&gZVhl1k+ zzl5M)`*}*mXTwG;m{@MA)koPtcL-X?H*(YQiLREKUIluc6!%^PK}y+Jv*nu@PTBC* zvQoO>t4JeXt{Md51Na8{{g{DoA?QbLJdG5&c-VrOsK;1)yBaR1d+EGQ9Mu)Q5Qhy~ zFvtAAx)QEV#qZhdpJWKf6b@N1B{}OnBc444oGjgW8nmhS6M5yYN5{KbdZMADVwI@R z4*GI&SdqZHv+Rs&d&YD4j+f4)a%tFLw(GccY5f9t@xZF~jJ=NIQN&3~X&6J`O2~qh zJckU1JFC*~q4&wGT?b+zmRLo@eCfho_*1Cgq;gr2x}qsUX<)Gke&@aE ztGB4^%+s&^80+q9P>xuo|HQ5bupejGK-^iy+pO~*9vP)emYo_9=xAV1I9>=XoTQY8 z4WchoHNi zR&XQWU9tTNoZhD*T?P#ZQUaVOgL*=bMtx2uoatNq8RjboHaPCa9^`ga^RXI?_Z5}+ z^>qamzf{4u)8*PG%)MixFZ~m|T_`hSYbNb>6?z#qqzP(9S3Z(B_@fsT@M*Ma6WPbXn-RxU+;Hr488vx`)-iN{c`S~82F2x;ht>6QAX=u@R>mn3`5#`J# zoEZ%Yc@HsW2|iE0Fk#MVD}G}KS1CqcAGzM9utHR*B2`_7YUkV%06=kZp^l}X1bPP^ ztpMnwF?^k7UF%R-;V+ueRUk;M z6X;1B<+GJhNiB|zAb&`4u8yVVvx-T;?BrO{C&=kMqzE#M_A#npKDu&9wow8KmwG2h z!9L2U7O~?}Bj%h4iQxDI&I47nS$8Se^Utg(ZCBy=r73@x{PqWPB2}aDli6L=0 z*CudFzIs!@F;uxQohNXfs0%j}t^r4%d+3ZY>k`y&8+7#nh~bR7&`{SHsB~%^{7y0Y zhI`K;^n%c17Gr0X&PrOEK)t-w#tGbwZ{FJhWMp>YN9e#T%|E(gGXZ3_mHRH3r5Jrz zOx_MKR95O`z;$RslV8STgqgt|L~9Py-j5_m40H@9q(LE|T17|2*j~u#E))rr%PI4g zw7}J9LNZXNc)c98&P6R0dhZ1{<&z8ZvlQo!svgPC0X@H%HUX5mKeCYvP_qy8{K9B< z9%g=CsuF_u7|H;MW%At{WU2-zU+K<|psg2m;)GE6EX}5hX28lIdu<~8Nin*q`1b%% zX&Ol$vkY}im{x!QeimU=tH-j70AP*_(?*J0((fG%>SiH|wX;Ec#Ww)){2uz;59orLRurvE(LJv=i0FvP6F=;fY9cx$APyjkbf{mZh7#z zVd$>c8E6#5dqvz|FOM&HIGA05+$J?27jZ>~M+_7VGU?0{!2F}y@Z?k}xvfIG_8%D#a3h?j5RvY?(Hs(e6`#E6 zm~8Pdgt{tZs{{keT?)yfF~~?h;tiMgS;KuV#wXHDnS=AoF}8mG=&I#x0^=2aAtwi; z@c&f7#5FxD?FCrKtaSCCc*Uxz{iGT*m0(*($T&-MX^ZeS<| zhGO7hQd@$d-g;f!;}d7ui{}o5VISx5hr1~=VHqP(%184`Fj>3n!1jn$FMfUGUMped zW;RXy8YF?y1QLin(ck|DnzDGVOW}dtGzs8XTP3@}jtBA59_=Prup}!qsN- zvh&>>Hol;AbrL+3OyG@_?r5N4kJR@-rTDiamf8EYg_$vrPU$4U;Fj}7EQ1t*UdFD4 z$7#2PCsGT)Ycup%GTzt``yr!y7-Y4i8p5aR? z3Y_hCpXoWo?14Vx*XQYQ%Tw}h@GMN&a-BnHV#_6UwmGFo1mV67TDxP-q^z8ac{dt1 zzv+f@@eGl9J}1LJlun1Q8#9?gJ%OHfp7ODYTUnU-^3udSSMfmC7&Ux6=RPZMiBvX_ zZZj@UOA2EoYPCQ(wO3Hdv5}>m>`K|K`g6nH?#2CY@;TXD87#K`g##aN@+dn$vNS|4 z_S(Ni7Li)GPg|&a?$IgJfFA38eO)8FcC}(+_tbiH<@^9u-Rw1=dKu21dKq4QxED&p zGdRNCA*04AoZ>tf4r*=GRvYLJr3s2EgdbnF=BYu5N&SyvMv+zwf%?TQ~YmK z{XBnk%@e~mu>3VI5M6WJZ~`nhv9mC1TzF=xQlaG^P&lNSLXQ!jt#Qp0$*Nq}F73qP zUFvgrO4n+9!yRu@jcYA%bXQl`HCny|y`njn>PTxA-?7?j*sb?g!TvM&E#xod&F7(T z_i>@`8{}6GwYZo2?ieWgO5ML{FS=--eswU(#t=0Iy?U7Zlo`775cu&5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
 
-
STATS
-
 
-
-
- -
-
-
-
- Parking Lot -
-
-
- -
- - - - - - Notes:
- - - -
- - -
- -
-
-
- - -
- - diff --git a/punch_list/index_old.html b/punch_list/index_old.html deleted file mode 100644 index ead4f8a..0000000 --- a/punch_list/index_old.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- -
- - - - - Time Boxer -
- -
- - -
-
-
-
- - - - -
-
-
- - - - - - -
-
- -
-
- In Progress -
-
- -
- New -
-
- -
- Done -
-
-
- -
- - - -

-
-

-
- - diff --git a/punch_list/js/datepicker.js b/punch_list/js/datepicker.js deleted file mode 100644 index ad69b4f..0000000 --- a/punch_list/js/datepicker.js +++ /dev/null @@ -1,2236 +0,0 @@ -;(function (window, $, undefined) { ;(function () { - var VERSION = '2.2.3', - pluginName = 'datepicker', - autoInitSelector = '.datepicker-here', - $body, $datepickersContainer, - containerBuilt = false, - baseTemplate = '' + - '
' + - '' + - '' + - '
' + - '
', - defaults = { - classes: '', - inline: false, - language: 'ru', - startDate: new Date(), - firstDay: '', - weekends: [6, 0], - dateFormat: '', - altField: '', - altFieldDateFormat: '@', - toggleSelected: true, - keyboardNav: true, - - position: 'bottom left', - offset: 12, - - view: 'days', - minView: 'days', - - showOtherMonths: true, - selectOtherMonths: true, - moveToOtherMonthsOnSelect: true, - - showOtherYears: true, - selectOtherYears: true, - moveToOtherYearsOnSelect: true, - - minDate: '', - maxDate: '', - disableNavWhenOutOfRange: true, - - multipleDates: false, // Boolean or Number - multipleDatesSeparator: ',', - range: false, - - todayButton: false, - clearButton: false, - - showEvent: 'focus', - autoClose: false, - - // navigation - monthsField: 'monthsShort', - prevHtml: '', - nextHtml: '', - navTitles: { - days: 'MM, yyyy', - months: 'yyyy', - years: 'yyyy1 - yyyy2' - }, - - // timepicker - timepicker: false, - onlyTimepicker: false, - dateTimeSeparator: ' ', - timeFormat: '', - minHours: 0, - maxHours: 24, - minMinutes: 0, - maxMinutes: 59, - hoursStep: 1, - minutesStep: 1, - - // events - onSelect: '', - onShow: '', - onHide: '', - onChangeMonth: '', - onChangeYear: '', - onChangeDecade: '', - onChangeView: '', - onRenderCell: '' - }, - hotKeys = { - 'ctrlRight': [17, 39], - 'ctrlUp': [17, 38], - 'ctrlLeft': [17, 37], - 'ctrlDown': [17, 40], - 'shiftRight': [16, 39], - 'shiftUp': [16, 38], - 'shiftLeft': [16, 37], - 'shiftDown': [16, 40], - 'altUp': [18, 38], - 'altRight': [18, 39], - 'altLeft': [18, 37], - 'altDown': [18, 40], - 'ctrlShiftUp': [16, 17, 38] - }, - datepicker; - - var Datepicker = function (el, options) { - this.el = el; - this.$el = $(el); - - this.opts = $.extend(true, {}, defaults, options, this.$el.data()); - - if ($body == undefined) { - $body = $('body'); - } - - if (!this.opts.startDate) { - this.opts.startDate = new Date(); - } - - if (this.el.nodeName == 'INPUT') { - this.elIsInput = true; - } - - if (this.opts.altField) { - this.$altField = typeof this.opts.altField == 'string' ? $(this.opts.altField) : this.opts.altField; - } - - this.inited = false; - this.visible = false; - this.silent = false; // Need to prevent unnecessary rendering - - this.currentDate = this.opts.startDate; - this.currentView = this.opts.view; - this._createShortCuts(); - this.selectedDates = []; - this.views = {}; - this.keys = []; - this.minRange = ''; - this.maxRange = ''; - this._prevOnSelectValue = ''; - - this.init() - }; - - datepicker = Datepicker; - - datepicker.prototype = { - VERSION: VERSION, - viewIndexes: ['days', 'months', 'years'], - - init: function () { - if (!containerBuilt && !this.opts.inline && this.elIsInput) { - this._buildDatepickersContainer(); - } - this._buildBaseHtml(); - this._defineLocale(this.opts.language); - this._syncWithMinMaxDates(); - - if (this.elIsInput) { - if (!this.opts.inline) { - // Set extra classes for proper transitions - this._setPositionClasses(this.opts.position); - this._bindEvents() - } - if (this.opts.keyboardNav && !this.opts.onlyTimepicker) { - this._bindKeyboardEvents(); - } - this.$datepicker.on('mousedown', this._onMouseDownDatepicker.bind(this)); - this.$datepicker.on('mouseup', this._onMouseUpDatepicker.bind(this)); - } - - if (this.opts.classes) { - this.$datepicker.addClass(this.opts.classes) - } - - if (this.opts.timepicker) { - this.timepicker = new $.fn.datepicker.Timepicker(this, this.opts); - this._bindTimepickerEvents(); - } - - if (this.opts.onlyTimepicker) { - this.$datepicker.addClass('-only-timepicker-'); - } - - this.views[this.currentView] = new $.fn.datepicker.Body(this, this.currentView, this.opts); - this.views[this.currentView].show(); - this.nav = new $.fn.datepicker.Navigation(this, this.opts); - this.view = this.currentView; - - this.$el.on('clickCell.adp', this._onClickCell.bind(this)); - this.$datepicker.on('mouseenter', '.datepicker--cell', this._onMouseEnterCell.bind(this)); - this.$datepicker.on('mouseleave', '.datepicker--cell', this._onMouseLeaveCell.bind(this)); - - this.inited = true; - }, - - _createShortCuts: function () { - this.minDate = this.opts.minDate ? this.opts.minDate : new Date(-8639999913600000); - this.maxDate = this.opts.maxDate ? this.opts.maxDate : new Date(8639999913600000); - }, - - _bindEvents : function () { - this.$el.on(this.opts.showEvent + '.adp', this._onShowEvent.bind(this)); - this.$el.on('mouseup.adp', this._onMouseUpEl.bind(this)); - this.$el.on('blur.adp', this._onBlur.bind(this)); - this.$el.on('keyup.adp', this._onKeyUpGeneral.bind(this)); - $(window).on('resize.adp', this._onResize.bind(this)); - $('body').on('mouseup.adp', this._onMouseUpBody.bind(this)); - }, - - _bindKeyboardEvents: function () { - this.$el.on('keydown.adp', this._onKeyDown.bind(this)); - this.$el.on('keyup.adp', this._onKeyUp.bind(this)); - this.$el.on('hotKey.adp', this._onHotKey.bind(this)); - }, - - _bindTimepickerEvents: function () { - this.$el.on('timeChange.adp', this._onTimeChange.bind(this)); - }, - - isWeekend: function (day) { - return this.opts.weekends.indexOf(day) !== -1; - }, - - _defineLocale: function (lang) { - if (typeof lang == 'string') { - this.loc = $.fn.datepicker.language[lang]; - if (!this.loc) { - console.warn('Can\'t find language "' + lang + '" in Datepicker.language, will use "ru" instead'); - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru) - } - - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, $.fn.datepicker.language[lang]) - } else { - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, lang) - } - - if (this.opts.dateFormat) { - this.loc.dateFormat = this.opts.dateFormat - } - - if (this.opts.timeFormat) { - this.loc.timeFormat = this.opts.timeFormat - } - - if (this.opts.firstDay !== '') { - this.loc.firstDay = this.opts.firstDay - } - - if (this.opts.timepicker) { - this.loc.dateFormat = [this.loc.dateFormat, this.loc.timeFormat].join(this.opts.dateTimeSeparator); - } - - if (this.opts.onlyTimepicker) { - this.loc.dateFormat = this.loc.timeFormat; - } - - var boundary = this._getWordBoundaryRegExp; - if (this.loc.timeFormat.match(boundary('aa')) || - this.loc.timeFormat.match(boundary('AA')) - ) { - this.ampm = true; - } - }, - - _buildDatepickersContainer: function () { - containerBuilt = true; - $body.append('
'); - $datepickersContainer = $('#datepickers-container'); - }, - - _buildBaseHtml: function () { - var $appendTarget, - $inline = $('
'); - - if(this.el.nodeName == 'INPUT') { - if (!this.opts.inline) { - $appendTarget = $datepickersContainer; - } else { - $appendTarget = $inline.insertAfter(this.$el) - } - } else { - $appendTarget = $inline.appendTo(this.$el) - } - - this.$datepicker = $(baseTemplate).appendTo($appendTarget); - this.$content = $('.datepicker--content', this.$datepicker); - this.$nav = $('.datepicker--nav', this.$datepicker); - }, - - _triggerOnChange: function () { - if (!this.selectedDates.length) { - // Prevent from triggering multiple onSelect callback with same argument (empty string) in IE10-11 - if (this._prevOnSelectValue === '') return; - this._prevOnSelectValue = ''; - return this.opts.onSelect('', '', this); - } - - var selectedDates = this.selectedDates, - parsedSelected = datepicker.getParsedDate(selectedDates[0]), - formattedDates, - _this = this, - dates = new Date( - parsedSelected.year, - parsedSelected.month, - parsedSelected.date, - parsedSelected.hours, - parsedSelected.minutes - ); - - formattedDates = selectedDates.map(function (date) { - return _this.formatDate(_this.loc.dateFormat, date) - }).join(this.opts.multipleDatesSeparator); - - // Create new dates array, to separate it from original selectedDates - if (this.opts.multipleDates || this.opts.range) { - dates = selectedDates.map(function(date) { - var parsedDate = datepicker.getParsedDate(date); - return new Date( - parsedDate.year, - parsedDate.month, - parsedDate.date, - parsedDate.hours, - parsedDate.minutes - ); - }) - } - - this._prevOnSelectValue = formattedDates; - this.opts.onSelect(formattedDates, dates, this); - }, - - next: function () { - var d = this.parsedDate, - o = this.opts; - switch (this.view) { - case 'days': - this.date = new Date(d.year, d.month + 1, 1); - if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year); - break; - case 'months': - this.date = new Date(d.year + 1, d.month, 1); - if (o.onChangeYear) o.onChangeYear(this.parsedDate.year); - break; - case 'years': - this.date = new Date(d.year + 10, 0, 1); - if (o.onChangeDecade) o.onChangeDecade(this.curDecade); - break; - } - }, - - prev: function () { - var d = this.parsedDate, - o = this.opts; - switch (this.view) { - case 'days': - this.date = new Date(d.year, d.month - 1, 1); - if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year); - break; - case 'months': - this.date = new Date(d.year - 1, d.month, 1); - if (o.onChangeYear) o.onChangeYear(this.parsedDate.year); - break; - case 'years': - this.date = new Date(d.year - 10, 0, 1); - if (o.onChangeDecade) o.onChangeDecade(this.curDecade); - break; - } - }, - - formatDate: function (string, date) { - date = date || this.date; - var result = string, - boundary = this._getWordBoundaryRegExp, - locale = this.loc, - leadingZero = datepicker.getLeadingZeroNum, - decade = datepicker.getDecade(date), - d = datepicker.getParsedDate(date), - fullHours = d.fullHours, - hours = d.hours, - ampm = string.match(boundary('aa')) || string.match(boundary('AA')), - dayPeriod = 'am', - replacer = this._replacer, - validHours; - - if (this.opts.timepicker && this.timepicker && ampm) { - validHours = this.timepicker._getValidHoursFromDate(date, ampm); - fullHours = leadingZero(validHours.hours); - hours = validHours.hours; - dayPeriod = validHours.dayPeriod; - } - - switch (true) { - case /@/.test(result): - result = result.replace(/@/, date.getTime()); - case /aa/.test(result): - result = replacer(result, boundary('aa'), dayPeriod); - case /AA/.test(result): - result = replacer(result, boundary('AA'), dayPeriod.toUpperCase()); - case /dd/.test(result): - result = replacer(result, boundary('dd'), d.fullDate); - case /d/.test(result): - result = replacer(result, boundary('d'), d.date); - case /DD/.test(result): - result = replacer(result, boundary('DD'), locale.days[d.day]); - case /D/.test(result): - result = replacer(result, boundary('D'), locale.daysShort[d.day]); - case /mm/.test(result): - result = replacer(result, boundary('mm'), d.fullMonth); - case /m/.test(result): - result = replacer(result, boundary('m'), d.month + 1); - case /MM/.test(result): - result = replacer(result, boundary('MM'), this.loc.months[d.month]); - case /M/.test(result): - result = replacer(result, boundary('M'), locale.monthsShort[d.month]); - case /ii/.test(result): - result = replacer(result, boundary('ii'), d.fullMinutes); - case /i/.test(result): - result = replacer(result, boundary('i'), d.minutes); - case /hh/.test(result): - result = replacer(result, boundary('hh'), fullHours); - case /h/.test(result): - result = replacer(result, boundary('h'), hours); - case /yyyy/.test(result): - result = replacer(result, boundary('yyyy'), d.year); - case /yyyy1/.test(result): - result = replacer(result, boundary('yyyy1'), decade[0]); - case /yyyy2/.test(result): - result = replacer(result, boundary('yyyy2'), decade[1]); - case /yy/.test(result): - result = replacer(result, boundary('yy'), d.year.toString().slice(-2)); - } - - return result; - }, - - _replacer: function (str, reg, data) { - return str.replace(reg, function (match, p1,p2,p3) { - return p1 + data + p3; - }) - }, - - _getWordBoundaryRegExp: function (sign) { - var symbols = '\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;'; - - return new RegExp('(^|>|' + symbols + ')(' + sign + ')($|<|' + symbols + ')', 'g'); - }, - - - selectDate: function (date) { - var _this = this, - opts = _this.opts, - d = _this.parsedDate, - selectedDates = _this.selectedDates, - len = selectedDates.length, - newDate = ''; - - if (Array.isArray(date)) { - date.forEach(function (d) { - _this.selectDate(d) - }); - return; - } - - if (!(date instanceof Date)) return; - - this.lastSelectedDate = date; - - // Set new time values from Date - if (this.timepicker) { - this.timepicker._setTime(date); - } - - // On this step timepicker will set valid values in it's instance - _this._trigger('selectDate', date); - - // Set correct time values after timepicker's validation - // Prevent from setting hours or minutes which values are lesser then `min` value or - // greater then `max` value - if (this.timepicker) { - date.setHours(this.timepicker.hours); - date.setMinutes(this.timepicker.minutes) - } - - if (_this.view == 'days') { - if (date.getMonth() != d.month && opts.moveToOtherMonthsOnSelect) { - newDate = new Date(date.getFullYear(), date.getMonth(), 1); - } - } - - if (_this.view == 'years') { - if (date.getFullYear() != d.year && opts.moveToOtherYearsOnSelect) { - newDate = new Date(date.getFullYear(), 0, 1); - } - } - - if (newDate) { - _this.silent = true; - _this.date = newDate; - _this.silent = false; - _this.nav._render() - } - - if (opts.multipleDates && !opts.range) { // Set priority to range functionality - if (len === opts.multipleDates) return; - if (!_this._isSelected(date)) { - _this.selectedDates.push(date); - } - } else if (opts.range) { - if (len == 2) { - _this.selectedDates = [date]; - _this.minRange = date; - _this.maxRange = ''; - } else if (len == 1) { - _this.selectedDates.push(date); - if (!_this.maxRange){ - _this.maxRange = date; - } else { - _this.minRange = date; - } - // Swap dates if they were selected via dp.selectDate() and second date was smaller then first - if (datepicker.bigger(_this.maxRange, _this.minRange)) { - _this.maxRange = _this.minRange; - _this.minRange = date; - } - _this.selectedDates = [_this.minRange, _this.maxRange] - - } else { - _this.selectedDates = [date]; - _this.minRange = date; - } - } else { - _this.selectedDates = [date]; - } - - _this._setInputValue(); - - if (opts.onSelect) { - _this._triggerOnChange(); - } - - if (opts.autoClose && !this.timepickerIsActive) { - if (!opts.multipleDates && !opts.range) { - _this.hide(); - } else if (opts.range && _this.selectedDates.length == 2) { - _this.hide(); - } - } - - _this.views[this.currentView]._render() - }, - - removeDate: function (date) { - var selected = this.selectedDates, - _this = this; - - if (!(date instanceof Date)) return; - - return selected.some(function (curDate, i) { - if (datepicker.isSame(curDate, date)) { - selected.splice(i, 1); - - if (!_this.selectedDates.length) { - _this.minRange = ''; - _this.maxRange = ''; - _this.lastSelectedDate = ''; - } else { - _this.lastSelectedDate = _this.selectedDates[_this.selectedDates.length - 1]; - } - - _this.views[_this.currentView]._render(); - _this._setInputValue(); - - if (_this.opts.onSelect) { - _this._triggerOnChange(); - } - - return true - } - }) - }, - - today: function () { - this.silent = true; - this.view = this.opts.minView; - this.silent = false; - this.date = new Date(); - - if (this.opts.todayButton instanceof Date) { - this.selectDate(this.opts.todayButton) - } - }, - - clear: function () { - this.selectedDates = []; - this.minRange = ''; - this.maxRange = ''; - this.views[this.currentView]._render(); - this._setInputValue(); - if (this.opts.onSelect) { - this._triggerOnChange() - } - }, - - /** - * Updates datepicker options - * @param {String|Object} param - parameter's name to update. If object then it will extend current options - * @param {String|Number|Object} [value] - new param value - */ - update: function (param, value) { - var len = arguments.length, - lastSelectedDate = this.lastSelectedDate; - - if (len == 2) { - this.opts[param] = value; - } else if (len == 1 && typeof param == 'object') { - this.opts = $.extend(true, this.opts, param) - } - - this._createShortCuts(); - this._syncWithMinMaxDates(); - this._defineLocale(this.opts.language); - this.nav._addButtonsIfNeed(); - if (!this.opts.onlyTimepicker) this.nav._render(); - this.views[this.currentView]._render(); - - if (this.elIsInput && !this.opts.inline) { - this._setPositionClasses(this.opts.position); - if (this.visible) { - this.setPosition(this.opts.position) - } - } - - if (this.opts.classes) { - this.$datepicker.addClass(this.opts.classes) - } - - if (this.opts.onlyTimepicker) { - this.$datepicker.addClass('-only-timepicker-'); - } - - if (this.opts.timepicker) { - if (lastSelectedDate) this.timepicker._handleDate(lastSelectedDate); - this.timepicker._updateRanges(); - this.timepicker._updateCurrentTime(); - // Change hours and minutes if it's values have been changed through min/max hours/minutes - if (lastSelectedDate) { - lastSelectedDate.setHours(this.timepicker.hours); - lastSelectedDate.setMinutes(this.timepicker.minutes); - } - } - - this._setInputValue(); - - return this; - }, - - _syncWithMinMaxDates: function () { - var curTime = this.date.getTime(); - this.silent = true; - if (this.minTime > curTime) { - this.date = this.minDate; - } - - if (this.maxTime < curTime) { - this.date = this.maxDate; - } - this.silent = false; - }, - - _isSelected: function (checkDate, cellType) { - var res = false; - this.selectedDates.some(function (date) { - if (datepicker.isSame(date, checkDate, cellType)) { - res = date; - return true; - } - }); - return res; - }, - - _setInputValue: function () { - var _this = this, - opts = _this.opts, - format = _this.loc.dateFormat, - altFormat = opts.altFieldDateFormat, - value = _this.selectedDates.map(function (date) { - return _this.formatDate(format, date) - }), - altValues; - - if (opts.altField && _this.$altField.length) { - altValues = this.selectedDates.map(function (date) { - return _this.formatDate(altFormat, date) - }); - altValues = altValues.join(this.opts.multipleDatesSeparator); - this.$altField.val(altValues); - } - - value = value.join(this.opts.multipleDatesSeparator); - - this.$el.val(value) - }, - - /** - * Check if date is between minDate and maxDate - * @param date {object} - date object - * @param type {string} - cell type - * @returns {boolean} - * @private - */ - _isInRange: function (date, type) { - var time = date.getTime(), - d = datepicker.getParsedDate(date), - min = datepicker.getParsedDate(this.minDate), - max = datepicker.getParsedDate(this.maxDate), - dMinTime = new Date(d.year, d.month, min.date).getTime(), - dMaxTime = new Date(d.year, d.month, max.date).getTime(), - types = { - day: time >= this.minTime && time <= this.maxTime, - month: dMinTime >= this.minTime && dMaxTime <= this.maxTime, - year: d.year >= min.year && d.year <= max.year - }; - return type ? types[type] : types.day - }, - - _getDimensions: function ($el) { - var offset = $el.offset(); - - return { - width: $el.outerWidth(), - height: $el.outerHeight(), - left: offset.left, - top: offset.top - } - }, - - _getDateFromCell: function (cell) { - var curDate = this.parsedDate, - year = cell.data('year') || curDate.year, - month = cell.data('month') == undefined ? curDate.month : cell.data('month'), - date = cell.data('date') || 1; - - return new Date(year, month, date); - }, - - _setPositionClasses: function (pos) { - pos = pos.split(' '); - var main = pos[0], - sec = pos[1], - classes = 'datepicker -' + main + '-' + sec + '- -from-' + main + '-'; - - if (this.visible) classes += ' active'; - - this.$datepicker - .removeAttr('class') - .addClass(classes); - }, - - setPosition: function (position) { - position = position || this.opts.position; - - var dims = this._getDimensions(this.$el), - selfDims = this._getDimensions(this.$datepicker), - pos = position.split(' '), - top, left, - offset = this.opts.offset, - main = pos[0], - secondary = pos[1]; - - switch (main) { - case 'top': - top = dims.top - selfDims.height - offset; - break; - case 'right': - left = dims.left + dims.width + offset; - break; - case 'bottom': - top = dims.top + dims.height + offset; - break; - case 'left': - left = dims.left - selfDims.width - offset; - break; - } - - switch(secondary) { - case 'top': - top = dims.top; - break; - case 'right': - left = dims.left + dims.width - selfDims.width; - break; - case 'bottom': - top = dims.top + dims.height - selfDims.height; - break; - case 'left': - left = dims.left; - break; - case 'center': - if (/left|right/.test(main)) { - top = dims.top + dims.height/2 - selfDims.height/2; - } else { - left = dims.left + dims.width/2 - selfDims.width/2; - } - } - - this.$datepicker - .css({ - left: left, - top: top - }) - }, - - show: function () { - var onShow = this.opts.onShow; - - this.setPosition(this.opts.position); - this.$datepicker.addClass('active'); - this.visible = true; - - if (onShow) { - this._bindVisionEvents(onShow) - } - }, - - hide: function () { - var onHide = this.opts.onHide; - - this.$datepicker - .removeClass('active') - .css({ - left: '-100000px' - }); - - this.focused = ''; - this.keys = []; - - this.inFocus = false; - this.visible = false; - this.$el.blur(); - - if (onHide) { - this._bindVisionEvents(onHide) - } - }, - - down: function (date) { - this._changeView(date, 'down'); - }, - - up: function (date) { - this._changeView(date, 'up'); - }, - - _bindVisionEvents: function (event) { - this.$datepicker.off('transitionend.dp'); - event(this, false); - this.$datepicker.one('transitionend.dp', event.bind(this, this, true)) - }, - - _changeView: function (date, dir) { - date = date || this.focused || this.date; - - var nextView = dir == 'up' ? this.viewIndex + 1 : this.viewIndex - 1; - if (nextView > 2) nextView = 2; - if (nextView < 0) nextView = 0; - - this.silent = true; - this.date = new Date(date.getFullYear(), date.getMonth(), 1); - this.silent = false; - this.view = this.viewIndexes[nextView]; - - }, - - _handleHotKey: function (key) { - var date = datepicker.getParsedDate(this._getFocusedDate()), - focusedParsed, - o = this.opts, - newDate, - totalDaysInNextMonth, - monthChanged = false, - yearChanged = false, - decadeChanged = false, - y = date.year, - m = date.month, - d = date.date; - - switch (key) { - case 'ctrlRight': - case 'ctrlUp': - m += 1; - monthChanged = true; - break; - case 'ctrlLeft': - case 'ctrlDown': - m -= 1; - monthChanged = true; - break; - case 'shiftRight': - case 'shiftUp': - yearChanged = true; - y += 1; - break; - case 'shiftLeft': - case 'shiftDown': - yearChanged = true; - y -= 1; - break; - case 'altRight': - case 'altUp': - decadeChanged = true; - y += 10; - break; - case 'altLeft': - case 'altDown': - decadeChanged = true; - y -= 10; - break; - case 'ctrlShiftUp': - this.up(); - break; - } - - totalDaysInNextMonth = datepicker.getDaysCount(new Date(y,m)); - newDate = new Date(y,m,d); - - // If next month has less days than current, set date to total days in that month - if (totalDaysInNextMonth < d) d = totalDaysInNextMonth; - - // Check if newDate is in valid range - if (newDate.getTime() < this.minTime) { - newDate = this.minDate; - } else if (newDate.getTime() > this.maxTime) { - newDate = this.maxDate; - } - - this.focused = newDate; - - focusedParsed = datepicker.getParsedDate(newDate); - if (monthChanged && o.onChangeMonth) { - o.onChangeMonth(focusedParsed.month, focusedParsed.year) - } - if (yearChanged && o.onChangeYear) { - o.onChangeYear(focusedParsed.year) - } - if (decadeChanged && o.onChangeDecade) { - o.onChangeDecade(this.curDecade) - } - }, - - _registerKey: function (key) { - var exists = this.keys.some(function (curKey) { - return curKey == key; - }); - - if (!exists) { - this.keys.push(key) - } - }, - - _unRegisterKey: function (key) { - var index = this.keys.indexOf(key); - - this.keys.splice(index, 1); - }, - - _isHotKeyPressed: function () { - var currentHotKey, - found = false, - _this = this, - pressedKeys = this.keys.sort(); - - for (var hotKey in hotKeys) { - currentHotKey = hotKeys[hotKey]; - if (pressedKeys.length != currentHotKey.length) continue; - - if (currentHotKey.every(function (key, i) { return key == pressedKeys[i]})) { - _this._trigger('hotKey', hotKey); - found = true; - } - } - - return found; - }, - - _trigger: function (event, args) { - this.$el.trigger(event, args) - }, - - _focusNextCell: function (keyCode, type) { - type = type || this.cellType; - - var date = datepicker.getParsedDate(this._getFocusedDate()), - y = date.year, - m = date.month, - d = date.date; - - if (this._isHotKeyPressed()){ - return; - } - - switch(keyCode) { - case 37: // left - type == 'day' ? (d -= 1) : ''; - type == 'month' ? (m -= 1) : ''; - type == 'year' ? (y -= 1) : ''; - break; - case 38: // up - type == 'day' ? (d -= 7) : ''; - type == 'month' ? (m -= 3) : ''; - type == 'year' ? (y -= 4) : ''; - break; - case 39: // right - type == 'day' ? (d += 1) : ''; - type == 'month' ? (m += 1) : ''; - type == 'year' ? (y += 1) : ''; - break; - case 40: // down - type == 'day' ? (d += 7) : ''; - type == 'month' ? (m += 3) : ''; - type == 'year' ? (y += 4) : ''; - break; - } - - var nd = new Date(y,m,d); - if (nd.getTime() < this.minTime) { - nd = this.minDate; - } else if (nd.getTime() > this.maxTime) { - nd = this.maxDate; - } - - this.focused = nd; - - }, - - _getFocusedDate: function () { - var focused = this.focused || this.selectedDates[this.selectedDates.length - 1], - d = this.parsedDate; - - if (!focused) { - switch (this.view) { - case 'days': - focused = new Date(d.year, d.month, new Date().getDate()); - break; - case 'months': - focused = new Date(d.year, d.month, 1); - break; - case 'years': - focused = new Date(d.year, 0, 1); - break; - } - } - - return focused; - }, - - _getCell: function (date, type) { - type = type || this.cellType; - - var d = datepicker.getParsedDate(date), - selector = '.datepicker--cell[data-year="' + d.year + '"]', - $cell; - - switch (type) { - case 'month': - selector = '[data-month="' + d.month + '"]'; - break; - case 'day': - selector += '[data-month="' + d.month + '"][data-date="' + d.date + '"]'; - break; - } - $cell = this.views[this.currentView].$el.find(selector); - - return $cell.length ? $cell : $(''); - }, - - destroy: function () { - var _this = this; - _this.$el - .off('.adp') - .data('datepicker', ''); - - _this.selectedDates = []; - _this.focused = ''; - _this.views = {}; - _this.keys = []; - _this.minRange = ''; - _this.maxRange = ''; - - if (_this.opts.inline || !_this.elIsInput) { - _this.$datepicker.closest('.datepicker-inline').remove(); - } else { - _this.$datepicker.remove(); - } - }, - - _handleAlreadySelectedDates: function (alreadySelected, selectedDate) { - if (this.opts.range) { - if (!this.opts.toggleSelected) { - // Add possibility to select same date when range is true - if (this.selectedDates.length != 2) { - this._trigger('clickCell', selectedDate); - } - } else { - this.removeDate(selectedDate); - } - } else if (this.opts.toggleSelected){ - this.removeDate(selectedDate); - } - - // Change last selected date to be able to change time when clicking on this cell - if (!this.opts.toggleSelected) { - this.lastSelectedDate = alreadySelected; - if (this.opts.timepicker) { - this.timepicker._setTime(alreadySelected); - this.timepicker.update(); - } - } - }, - - _onShowEvent: function (e) { - if (!this.visible) { - this.show(); - } - }, - - _onBlur: function () { - if (!this.inFocus && this.visible) { - this.hide(); - } - }, - - _onMouseDownDatepicker: function (e) { - this.inFocus = true; - }, - - _onMouseUpDatepicker: function (e) { - this.inFocus = false; - e.originalEvent.inFocus = true; - if (!e.originalEvent.timepickerFocus) this.$el.focus(); - }, - - _onKeyUpGeneral: function (e) { - var val = this.$el.val(); - - if (!val) { - this.clear(); - } - }, - - _onResize: function () { - if (this.visible) { - this.setPosition(); - } - }, - - _onMouseUpBody: function (e) { - if (e.originalEvent.inFocus) return; - - if (this.visible && !this.inFocus) { - this.hide(); - } - }, - - _onMouseUpEl: function (e) { - e.originalEvent.inFocus = true; - setTimeout(this._onKeyUpGeneral.bind(this),4); - }, - - _onKeyDown: function (e) { - var code = e.which; - this._registerKey(code); - - // Arrows - if (code >= 37 && code <= 40) { - e.preventDefault(); - this._focusNextCell(code); - } - - // Enter - if (code == 13) { - if (this.focused) { - if (this._getCell(this.focused).hasClass('-disabled-')) return; - if (this.view != this.opts.minView) { - this.down() - } else { - var alreadySelected = this._isSelected(this.focused, this.cellType); - - if (!alreadySelected) { - if (this.timepicker) { - this.focused.setHours(this.timepicker.hours); - this.focused.setMinutes(this.timepicker.minutes); - } - this.selectDate(this.focused); - return; - } - this._handleAlreadySelectedDates(alreadySelected, this.focused) - } - } - } - - // Esc - if (code == 27) { - this.hide(); - } - }, - - _onKeyUp: function (e) { - var code = e.which; - this._unRegisterKey(code); - }, - - _onHotKey: function (e, hotKey) { - this._handleHotKey(hotKey); - }, - - _onMouseEnterCell: function (e) { - var $cell = $(e.target).closest('.datepicker--cell'), - date = this._getDateFromCell($cell); - - // Prevent from unnecessary rendering and setting new currentDate - this.silent = true; - - if (this.focused) { - this.focused = '' - } - - $cell.addClass('-focus-'); - - this.focused = date; - this.silent = false; - - if (this.opts.range && this.selectedDates.length == 1) { - this.minRange = this.selectedDates[0]; - this.maxRange = ''; - if (datepicker.less(this.minRange, this.focused)) { - this.maxRange = this.minRange; - this.minRange = ''; - } - this.views[this.currentView]._update(); - } - }, - - _onMouseLeaveCell: function (e) { - var $cell = $(e.target).closest('.datepicker--cell'); - - $cell.removeClass('-focus-'); - - this.silent = true; - this.focused = ''; - this.silent = false; - }, - - _onTimeChange: function (e, h, m) { - var date = new Date(), - selectedDates = this.selectedDates, - selected = false; - - if (selectedDates.length) { - selected = true; - date = this.lastSelectedDate; - } - - date.setHours(h); - date.setMinutes(m); - - if (!selected && !this._getCell(date).hasClass('-disabled-')) { - this.selectDate(date); - } else { - this._setInputValue(); - if (this.opts.onSelect) { - this._triggerOnChange(); - } - } - }, - - _onClickCell: function (e, date) { - if (this.timepicker) { - date.setHours(this.timepicker.hours); - date.setMinutes(this.timepicker.minutes); - } - this.selectDate(date); - }, - - set focused(val) { - if (!val && this.focused) { - var $cell = this._getCell(this.focused); - - if ($cell.length) { - $cell.removeClass('-focus-') - } - } - this._focused = val; - if (this.opts.range && this.selectedDates.length == 1) { - this.minRange = this.selectedDates[0]; - this.maxRange = ''; - if (datepicker.less(this.minRange, this._focused)) { - this.maxRange = this.minRange; - this.minRange = ''; - } - } - if (this.silent) return; - this.date = val; - }, - - get focused() { - return this._focused; - }, - - get parsedDate() { - return datepicker.getParsedDate(this.date); - }, - - set date (val) { - if (!(val instanceof Date)) return; - - this.currentDate = val; - - if (this.inited && !this.silent) { - this.views[this.view]._render(); - this.nav._render(); - if (this.visible && this.elIsInput) { - this.setPosition(); - } - } - return val; - }, - - get date () { - return this.currentDate - }, - - set view (val) { - this.viewIndex = this.viewIndexes.indexOf(val); - - if (this.viewIndex < 0) { - return; - } - - this.prevView = this.currentView; - this.currentView = val; - - if (this.inited) { - if (!this.views[val]) { - this.views[val] = new $.fn.datepicker.Body(this, val, this.opts) - } else { - this.views[val]._render(); - } - - this.views[this.prevView].hide(); - this.views[val].show(); - this.nav._render(); - - if (this.opts.onChangeView) { - this.opts.onChangeView(val) - } - if (this.elIsInput && this.visible) this.setPosition(); - } - - return val - }, - - get view() { - return this.currentView; - }, - - get cellType() { - return this.view.substring(0, this.view.length - 1) - }, - - get minTime() { - var min = datepicker.getParsedDate(this.minDate); - return new Date(min.year, min.month, min.date).getTime() - }, - - get maxTime() { - var max = datepicker.getParsedDate(this.maxDate); - return new Date(max.year, max.month, max.date).getTime() - }, - - get curDecade() { - return datepicker.getDecade(this.date) - } - }; - - // Utils - // ------------------------------------------------- - - datepicker.getDaysCount = function (date) { - return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); - }; - - datepicker.getParsedDate = function (date) { - return { - year: date.getFullYear(), - month: date.getMonth(), - fullMonth: (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1, // One based - date: date.getDate(), - fullDate: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(), - day: date.getDay(), - hours: date.getHours(), - fullHours: date.getHours() < 10 ? '0' + date.getHours() : date.getHours() , - minutes: date.getMinutes(), - fullMinutes: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() - } - }; - - datepicker.getDecade = function (date) { - var firstYear = Math.floor(date.getFullYear() / 10) * 10; - - return [firstYear, firstYear + 9]; - }; - - datepicker.template = function (str, data) { - return str.replace(/#\{([\w]+)\}/g, function (source, match) { - if (data[match] || data[match] === 0) { - return data[match] - } - }); - }; - - datepicker.isSame = function (date1, date2, type) { - if (!date1 || !date2) return false; - var d1 = datepicker.getParsedDate(date1), - d2 = datepicker.getParsedDate(date2), - _type = type ? type : 'day', - - conditions = { - day: d1.date == d2.date && d1.month == d2.month && d1.year == d2.year, - month: d1.month == d2.month && d1.year == d2.year, - year: d1.year == d2.year - }; - - return conditions[_type]; - }; - - datepicker.less = function (dateCompareTo, date, type) { - if (!dateCompareTo || !date) return false; - return date.getTime() < dateCompareTo.getTime(); - }; - - datepicker.bigger = function (dateCompareTo, date, type) { - if (!dateCompareTo || !date) return false; - return date.getTime() > dateCompareTo.getTime(); - }; - - datepicker.getLeadingZeroNum = function (num) { - return parseInt(num) < 10 ? '0' + num : num; - }; - - /** - * Returns copy of date with hours and minutes equals to 0 - * @param date {Date} - */ - datepicker.resetTime = function (date) { - if (typeof date != 'object') return; - date = datepicker.getParsedDate(date); - return new Date(date.year, date.month, date.date) - }; - - $.fn.datepicker = function ( options ) { - return this.each(function () { - if (!$.data(this, pluginName)) { - $.data(this, pluginName, - new Datepicker( this, options )); - } else { - var _this = $.data(this, pluginName); - - _this.opts = $.extend(true, _this.opts, options); - _this.update(); - } - }); - }; - - $.fn.datepicker.Constructor = Datepicker; - - $.fn.datepicker.language = { - ru: { - days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'], - daysShort: ['Вос','Пон','Вто','Сре','Чет','Пят','Суб'], - daysMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], - months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'], - monthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - today: 'Сегодня', - clear: 'Очистить', - dateFormat: 'dd.mm.yyyy', - timeFormat: 'hh:ii', - firstDay: 1 - } - }; - - $(function () { - $(autoInitSelector).datepicker(); - }) - -})(); - -;(function () { - var templates = { - days:'' + - '
' + - '
' + - '
' + - '
', - months: '' + - '
' + - '
' + - '
', - years: '' + - '
' + - '
' + - '
' - }, - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Body = function (d, type, opts) { - this.d = d; - this.type = type; - this.opts = opts; - this.$el = $(''); - - if (this.opts.onlyTimepicker) return; - this.init(); - }; - - datepicker.Body.prototype = { - init: function () { - this._buildBaseHtml(); - this._render(); - - this._bindEvents(); - }, - - _bindEvents: function () { - this.$el.on('click', '.datepicker--cell', $.proxy(this._onClickCell, this)); - }, - - _buildBaseHtml: function () { - this.$el = $(templates[this.type]).appendTo(this.d.$content); - this.$names = $('.datepicker--days-names', this.$el); - this.$cells = $('.datepicker--cells', this.$el); - }, - - _getDayNamesHtml: function (firstDay, curDay, html, i) { - curDay = curDay != undefined ? curDay : firstDay; - html = html ? html : ''; - i = i != undefined ? i : 0; - - if (i > 7) return html; - if (curDay == 7) return this._getDayNamesHtml(firstDay, 0, html, ++i); - - html += '
' + this.d.loc.daysMin[curDay] + '
'; - - return this._getDayNamesHtml(firstDay, ++curDay, html, ++i); - }, - - _getCellContents: function (date, type) { - var classes = "datepicker--cell datepicker--cell-" + type, - currentDate = new Date(), - parent = this.d, - minRange = dp.resetTime(parent.minRange), - maxRange = dp.resetTime(parent.maxRange), - opts = parent.opts, - d = dp.getParsedDate(date), - render = {}, - html = d.date; - - switch (type) { - case 'day': - if (parent.isWeekend(d.day)) classes += " -weekend-"; - if (d.month != this.d.parsedDate.month) { - classes += " -other-month-"; - if (!opts.selectOtherMonths) { - classes += " -disabled-"; - } - if (!opts.showOtherMonths) html = ''; - } - break; - case 'month': - html = parent.loc[parent.opts.monthsField][d.month]; - break; - case 'year': - var decade = parent.curDecade; - html = d.year; - if (d.year < decade[0] || d.year > decade[1]) { - classes += ' -other-decade-'; - if (!opts.selectOtherYears) { - classes += " -disabled-"; - } - if (!opts.showOtherYears) html = ''; - } - break; - } - - if (opts.onRenderCell) { - render = opts.onRenderCell(date, type) || {}; - html = render.html ? render.html : html; - classes += render.classes ? ' ' + render.classes : ''; - } - - if (opts.range) { - if (dp.isSame(minRange, date, type)) classes += ' -range-from-'; - if (dp.isSame(maxRange, date, type)) classes += ' -range-to-'; - - if (parent.selectedDates.length == 1 && parent.focused) { - if ( - (dp.bigger(minRange, date) && dp.less(parent.focused, date)) || - (dp.less(maxRange, date) && dp.bigger(parent.focused, date))) - { - classes += ' -in-range-' - } - - if (dp.less(maxRange, date) && dp.isSame(parent.focused, date)) { - classes += ' -range-from-' - } - if (dp.bigger(minRange, date) && dp.isSame(parent.focused, date)) { - classes += ' -range-to-' - } - - } else if (parent.selectedDates.length == 2) { - if (dp.bigger(minRange, date) && dp.less(maxRange, date)) { - classes += ' -in-range-' - } - } - } - - - if (dp.isSame(currentDate, date, type)) classes += ' -current-'; - if (parent.focused && dp.isSame(date, parent.focused, type)) classes += ' -focus-'; - if (parent._isSelected(date, type)) classes += ' -selected-'; - if (!parent._isInRange(date, type) || render.disabled) classes += ' -disabled-'; - - return { - html: html, - classes: classes - } - }, - - /** - * Calculates days number to render. Generates days html and returns it. - * @param {object} date - Date object - * @returns {string} - * @private - */ - _getDaysHtml: function (date) { - var totalMonthDays = dp.getDaysCount(date), - firstMonthDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(), - lastMonthDay = new Date(date.getFullYear(), date.getMonth(), totalMonthDays).getDay(), - daysFromPevMonth = firstMonthDay - this.d.loc.firstDay, - daysFromNextMonth = 6 - lastMonthDay + this.d.loc.firstDay; - - daysFromPevMonth = daysFromPevMonth < 0 ? daysFromPevMonth + 7 : daysFromPevMonth; - daysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth; - - var startDayIndex = -daysFromPevMonth + 1, - m, y, - html = ''; - - for (var i = startDayIndex, max = totalMonthDays + daysFromNextMonth; i <= max; i++) { - y = date.getFullYear(); - m = date.getMonth(); - - html += this._getDayHtml(new Date(y, m, i)) - } - - return html; - }, - - _getDayHtml: function (date) { - var content = this._getCellContents(date, 'day'); - - return '
' + content.html + '
'; - }, - - /** - * Generates months html - * @param {object} date - date instance - * @returns {string} - * @private - */ - _getMonthsHtml: function (date) { - var html = '', - d = dp.getParsedDate(date), - i = 0; - - while(i < 12) { - html += this._getMonthHtml(new Date(d.year, i)); - i++ - } - - return html; - }, - - _getMonthHtml: function (date) { - var content = this._getCellContents(date, 'month'); - - return '
' + content.html + '
' - }, - - _getYearsHtml: function (date) { - var d = dp.getParsedDate(date), - decade = dp.getDecade(date), - firstYear = decade[0] - 1, - html = '', - i = firstYear; - - for (i; i <= decade[1] + 1; i++) { - html += this._getYearHtml(new Date(i , 0)); - } - - return html; - }, - - _getYearHtml: function (date) { - var content = this._getCellContents(date, 'year'); - - return '
' + content.html + '
' - }, - - _renderTypes: { - days: function () { - var dayNames = this._getDayNamesHtml(this.d.loc.firstDay), - days = this._getDaysHtml(this.d.currentDate); - - this.$cells.html(days); - this.$names.html(dayNames) - }, - months: function () { - var html = this._getMonthsHtml(this.d.currentDate); - - this.$cells.html(html) - }, - years: function () { - var html = this._getYearsHtml(this.d.currentDate); - - this.$cells.html(html) - } - }, - - _render: function () { - if (this.opts.onlyTimepicker) return; - this._renderTypes[this.type].bind(this)(); - }, - - _update: function () { - var $cells = $('.datepicker--cell', this.$cells), - _this = this, - classes, - $cell, - date; - $cells.each(function (cell, i) { - $cell = $(this); - date = _this.d._getDateFromCell($(this)); - classes = _this._getCellContents(date, _this.d.cellType); - $cell.attr('class',classes.classes) - }); - }, - - show: function () { - if (this.opts.onlyTimepicker) return; - this.$el.addClass('active'); - this.acitve = true; - }, - - hide: function () { - this.$el.removeClass('active'); - this.active = false; - }, - - // Events - // ------------------------------------------------- - - _handleClick: function (el) { - var date = el.data('date') || 1, - month = el.data('month') || 0, - year = el.data('year') || this.d.parsedDate.year, - dp = this.d; - // Change view if min view does not reach yet - if (dp.view != this.opts.minView) { - dp.down(new Date(year, month, date)); - return; - } - // Select date if min view is reached - var selectedDate = new Date(year, month, date), - alreadySelected = this.d._isSelected(selectedDate, this.d.cellType); - - if (!alreadySelected) { - dp._trigger('clickCell', selectedDate); - return; - } - - dp._handleAlreadySelectedDates.bind(dp, alreadySelected, selectedDate)(); - - }, - - _onClickCell: function (e) { - var $el = $(e.target).closest('.datepicker--cell'); - - if ($el.hasClass('-disabled-')) return; - - this._handleClick.bind(this)($el); - } - }; -})(); - -;(function () { - var template = '' + - '
#{prevHtml}
' + - '
#{title}
' + - '
#{nextHtml}
', - buttonsContainerTemplate = '
', - button = '#{label}', - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Navigation = function (d, opts) { - this.d = d; - this.opts = opts; - - this.$buttonsContainer = ''; - - this.init(); - }; - - datepicker.Navigation.prototype = { - init: function () { - this._buildBaseHtml(); - this._bindEvents(); - }, - - _bindEvents: function () { - this.d.$nav.on('click', '.datepicker--nav-action', $.proxy(this._onClickNavButton, this)); - this.d.$nav.on('click', '.datepicker--nav-title', $.proxy(this._onClickNavTitle, this)); - this.d.$datepicker.on('click', '.datepicker--button', $.proxy(this._onClickNavButton, this)); - }, - - _buildBaseHtml: function () { - if (!this.opts.onlyTimepicker) { - this._render(); - } - this._addButtonsIfNeed(); - }, - - _addButtonsIfNeed: function () { - if (this.opts.todayButton) { - this._addButton('today') - } - if (this.opts.clearButton) { - this._addButton('clear') - } - }, - - _render: function () { - var title = this._getTitle(this.d.currentDate), - html = dp.template(template, $.extend({title: title}, this.opts)); - this.d.$nav.html(html); - if (this.d.view == 'years') { - $('.datepicker--nav-title', this.d.$nav).addClass('-disabled-'); - } - this.setNavStatus(); - }, - - _getTitle: function (date) { - return this.d.formatDate(this.opts.navTitles[this.d.view], date) - }, - - _addButton: function (type) { - if (!this.$buttonsContainer.length) { - this._addButtonsContainer(); - } - - var data = { - action: type, - label: this.d.loc[type] - }, - html = dp.template(button, data); - - if ($('[data-action=' + type + ']', this.$buttonsContainer).length) return; - this.$buttonsContainer.append(html); - }, - - _addButtonsContainer: function () { - this.d.$datepicker.append(buttonsContainerTemplate); - this.$buttonsContainer = $('.datepicker--buttons', this.d.$datepicker); - }, - - setNavStatus: function () { - if (!(this.opts.minDate || this.opts.maxDate) || !this.opts.disableNavWhenOutOfRange) return; - - var date = this.d.parsedDate, - m = date.month, - y = date.year, - d = date.date; - - switch (this.d.view) { - case 'days': - if (!this.d._isInRange(new Date(y, m-1, 1), 'month')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(y, m+1, 1), 'month')) { - this._disableNav('next') - } - break; - case 'months': - if (!this.d._isInRange(new Date(y-1, m, d), 'year')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(y+1, m, d), 'year')) { - this._disableNav('next') - } - break; - case 'years': - var decade = dp.getDecade(this.d.date); - if (!this.d._isInRange(new Date(decade[0] - 1, 0, 1), 'year')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(decade[1] + 1, 0, 1), 'year')) { - this._disableNav('next') - } - break; - } - }, - - _disableNav: function (nav) { - $('[data-action="' + nav + '"]', this.d.$nav).addClass('-disabled-') - }, - - _activateNav: function (nav) { - $('[data-action="' + nav + '"]', this.d.$nav).removeClass('-disabled-') - }, - - _onClickNavButton: function (e) { - var $el = $(e.target).closest('[data-action]'), - action = $el.data('action'); - - this.d[action](); - }, - - _onClickNavTitle: function (e) { - if ($(e.target).hasClass('-disabled-')) return; - - if (this.d.view == 'days') { - return this.d.view = 'months' - } - - this.d.view = 'years'; - } - } - -})(); - -;(function () { - var template = '
' + - '
' + - ' #{hourVisible}' + - ' :' + - ' #{minValue}' + - '
' + - '
' + - '
' + - ' ' + - '
' + - '
' + - ' ' + - '
' + - '
' + - '
', - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Timepicker = function (inst, opts) { - this.d = inst; - this.opts = opts; - - this.init(); - }; - - datepicker.Timepicker.prototype = { - init: function () { - var input = 'input'; - this._setTime(this.d.date); - this._buildHTML(); - - if (navigator.userAgent.match(/trident/gi)) { - input = 'change'; - } - - this.d.$el.on('selectDate', this._onSelectDate.bind(this)); - this.$ranges.on(input, this._onChangeRange.bind(this)); - this.$ranges.on('mouseup', this._onMouseUpRange.bind(this)); - this.$ranges.on('mousemove focus ', this._onMouseEnterRange.bind(this)); - this.$ranges.on('mouseout blur', this._onMouseOutRange.bind(this)); - }, - - _setTime: function (date) { - var _date = dp.getParsedDate(date); - - this._handleDate(date); - this.hours = _date.hours < this.minHours ? this.minHours : _date.hours; - this.minutes = _date.minutes < this.minMinutes ? this.minMinutes : _date.minutes; - }, - - /** - * Sets minHours and minMinutes from date (usually it's a minDate) - * Also changes minMinutes if current hours are bigger then @date hours - * @param date {Date} - * @private - */ - _setMinTimeFromDate: function (date) { - this.minHours = date.getHours(); - this.minMinutes = date.getMinutes(); - - // If, for example, min hours are 10, and current hours are 12, - // update minMinutes to default value, to be able to choose whole range of values - if (this.d.lastSelectedDate) { - if (this.d.lastSelectedDate.getHours() > date.getHours()) { - this.minMinutes = this.opts.minMinutes; - } - } - }, - - _setMaxTimeFromDate: function (date) { - this.maxHours = date.getHours(); - this.maxMinutes = date.getMinutes(); - - if (this.d.lastSelectedDate) { - if (this.d.lastSelectedDate.getHours() < date.getHours()) { - this.maxMinutes = this.opts.maxMinutes; - } - } - }, - - _setDefaultMinMaxTime: function () { - var maxHours = 23, - maxMinutes = 59, - opts = this.opts; - - this.minHours = opts.minHours < 0 || opts.minHours > maxHours ? 0 : opts.minHours; - this.minMinutes = opts.minMinutes < 0 || opts.minMinutes > maxMinutes ? 0 : opts.minMinutes; - this.maxHours = opts.maxHours < 0 || opts.maxHours > maxHours ? maxHours : opts.maxHours; - this.maxMinutes = opts.maxMinutes < 0 || opts.maxMinutes > maxMinutes ? maxMinutes : opts.maxMinutes; - }, - - /** - * Looks for min/max hours/minutes and if current values - * are out of range sets valid values. - * @private - */ - _validateHoursMinutes: function (date) { - if (this.hours < this.minHours) { - this.hours = this.minHours; - } else if (this.hours > this.maxHours) { - this.hours = this.maxHours; - } - - if (this.minutes < this.minMinutes) { - this.minutes = this.minMinutes; - } else if (this.minutes > this.maxMinutes) { - this.minutes = this.maxMinutes; - } - }, - - _buildHTML: function () { - var lz = dp.getLeadingZeroNum, - data = { - hourMin: this.minHours, - hourMax: lz(this.maxHours), - hourStep: this.opts.hoursStep, - hourValue: this.hours, - hourVisible: lz(this.displayHours), - minMin: this.minMinutes, - minMax: lz(this.maxMinutes), - minStep: this.opts.minutesStep, - minValue: lz(this.minutes) - }, - _template = dp.template(template, data); - - this.$timepicker = $(_template).appendTo(this.d.$datepicker); - this.$ranges = $('[type="range"]', this.$timepicker); - this.$hours = $('[name="hours"]', this.$timepicker); - this.$minutes = $('[name="minutes"]', this.$timepicker); - this.$hoursText = $('.datepicker--time-current-hours', this.$timepicker); - this.$minutesText = $('.datepicker--time-current-minutes', this.$timepicker); - - if (this.d.ampm) { - this.$ampm = $('') - .appendTo($('.datepicker--time-current', this.$timepicker)) - .html(this.dayPeriod); - - this.$timepicker.addClass('-am-pm-'); - } - }, - - _updateCurrentTime: function () { - var h = dp.getLeadingZeroNum(this.displayHours), - m = dp.getLeadingZeroNum(this.minutes); - - this.$hoursText.html(h); - this.$minutesText.html(m); - - if (this.d.ampm) { - this.$ampm.html(this.dayPeriod); - } - }, - - _updateRanges: function () { - this.$hours.attr({ - min: this.minHours, - max: this.maxHours - }).val(this.hours); - - this.$minutes.attr({ - min: this.minMinutes, - max: this.maxMinutes - }).val(this.minutes) - }, - - /** - * Sets minHours, minMinutes etc. from date. If date is not passed, than sets - * values from options - * @param [date] {object} - Date object, to get values from - * @private - */ - _handleDate: function (date) { - this._setDefaultMinMaxTime(); - if (date) { - if (dp.isSame(date, this.d.opts.minDate)) { - this._setMinTimeFromDate(this.d.opts.minDate); - } else if (dp.isSame(date, this.d.opts.maxDate)) { - this._setMaxTimeFromDate(this.d.opts.maxDate); - } - } - - this._validateHoursMinutes(date); - }, - - update: function () { - this._updateRanges(); - this._updateCurrentTime(); - }, - - /** - * Calculates valid hour value to display in text input and datepicker's body. - * @param date {Date|Number} - date or hours - * @param [ampm] {Boolean} - 12 hours mode - * @returns {{hours: *, dayPeriod: string}} - * @private - */ - _getValidHoursFromDate: function (date, ampm) { - var d = date, - hours = date; - - if (date instanceof Date) { - d = dp.getParsedDate(date); - hours = d.hours; - } - - var _ampm = ampm || this.d.ampm, - dayPeriod = 'am'; - - if (_ampm) { - switch(true) { - case hours == 0: - hours = 12; - break; - case hours == 12: - dayPeriod = 'pm'; - break; - case hours > 11: - hours = hours - 12; - dayPeriod = 'pm'; - break; - default: - break; - } - } - - return { - hours: hours, - dayPeriod: dayPeriod - } - }, - - set hours (val) { - this._hours = val; - - var displayHours = this._getValidHoursFromDate(val); - - this.displayHours = displayHours.hours; - this.dayPeriod = displayHours.dayPeriod; - }, - - get hours() { - return this._hours; - }, - - // Events - // ------------------------------------------------- - - _onChangeRange: function (e) { - var $target = $(e.target), - name = $target.attr('name'); - - this.d.timepickerIsActive = true; - - this[name] = $target.val(); - this._updateCurrentTime(); - this.d._trigger('timeChange', [this.hours, this.minutes]); - - this._handleDate(this.d.lastSelectedDate); - this.update() - }, - - _onSelectDate: function (e, data) { - this._handleDate(data); - this.update(); - }, - - _onMouseEnterRange: function (e) { - var name = $(e.target).attr('name'); - $('.datepicker--time-current-' + name, this.$timepicker).addClass('-focus-'); - }, - - _onMouseOutRange: function (e) { - var name = $(e.target).attr('name'); - if (this.d.inFocus) return; // Prevent removing focus when mouse out of range slider - $('.datepicker--time-current-' + name, this.$timepicker).removeClass('-focus-'); - }, - - _onMouseUpRange: function (e) { - this.d.timepickerIsActive = false; - } - }; -})(); - })(window, jQuery); \ No newline at end of file diff --git a/punch_list/js/datepicker.min.js b/punch_list/js/datepicker.min.js deleted file mode 100644 index 31537f1..0000000 --- a/punch_list/js/datepicker.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e,i){!function(){var s,a,n,h="2.2.3",o="datepicker",r=".datepicker-here",c=!1,d='
',l={classes:"",inline:!1,language:"ru",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"@",toggleSelected:!0,keyboardNav:!0,position:"bottom left",offset:12,view:"days",minView:"days",showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:",",range:!1,todayButton:!1,clearButton:!1,showEvent:"focus",autoClose:!1,monthsField:"monthsShort",prevHtml:'',nextHtml:'',navTitles:{days:"MM, yyyy",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:"",onShow:"",onHide:"",onChangeMonth:"",onChangeYear:"",onChangeDecade:"",onChangeView:"",onRenderCell:""},u={ctrlRight:[17,39],ctrlUp:[17,38],ctrlLeft:[17,37],ctrlDown:[17,40],shiftRight:[16,39],shiftUp:[16,38],shiftLeft:[16,37],shiftDown:[16,40],altUp:[18,38],altRight:[18,39],altLeft:[18,37],altDown:[18,40],ctrlShiftUp:[16,17,38]},m=function(t,a){this.el=t,this.$el=e(t),this.opts=e.extend(!0,{},l,a,this.$el.data()),s==i&&(s=e("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&(this.$altField="string"==typeof this.opts.altField?e(this.opts.altField):this.opts.altField),this.inited=!1,this.visible=!1,this.silent=!1,this.currentDate=this.opts.startDate,this.currentView=this.opts.view,this._createShortCuts(),this.selectedDates=[],this.views={},this.keys=[],this.minRange="",this.maxRange="",this._prevOnSelectValue="",this.init()};n=m,n.prototype={VERSION:h,viewIndexes:["days","months","years"],init:function(){c||this.opts.inline||!this.elIsInput||this._buildDatepickersContainer(),this._buildBaseHtml(),this._defineLocale(this.opts.language),this._syncWithMinMaxDates(),this.elIsInput&&(this.opts.inline||(this._setPositionClasses(this.opts.position),this._bindEvents()),this.opts.keyboardNav&&!this.opts.onlyTimepicker&&this._bindKeyboardEvents(),this.$datepicker.on("mousedown",this._onMouseDownDatepicker.bind(this)),this.$datepicker.on("mouseup",this._onMouseUpDatepicker.bind(this))),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new e.fn.datepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.views[this.currentView]=new e.fn.datepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new e.fn.datepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$datepicker.on("mouseenter",".datepicker--cell",this._onMouseEnterCell.bind(this)),this.$datepicker.on("mouseleave",".datepicker--cell",this._onMouseLeaveCell.bind(this)),this.inited=!0},_createShortCuts:function(){this.minDate=this.opts.minDate?this.opts.minDate:new Date(-86399999136e5),this.maxDate=this.opts.maxDate?this.opts.maxDate:new Date(86399999136e5)},_bindEvents:function(){this.$el.on(this.opts.showEvent+".adp",this._onShowEvent.bind(this)),this.$el.on("mouseup.adp",this._onMouseUpEl.bind(this)),this.$el.on("blur.adp",this._onBlur.bind(this)),this.$el.on("keyup.adp",this._onKeyUpGeneral.bind(this)),e(t).on("resize.adp",this._onResize.bind(this)),e("body").on("mouseup.adp",this._onMouseUpBody.bind(this))},_bindKeyboardEvents:function(){this.$el.on("keydown.adp",this._onKeyDown.bind(this)),this.$el.on("keyup.adp",this._onKeyUp.bind(this)),this.$el.on("hotKey.adp",this._onHotKey.bind(this))},_bindTimepickerEvents:function(){this.$el.on("timeChange.adp",this._onTimeChange.bind(this))},isWeekend:function(t){return-1!==this.opts.weekends.indexOf(t)},_defineLocale:function(t){"string"==typeof t?(this.loc=e.fn.datepicker.language[t],this.loc||(console.warn("Can't find language \""+t+'" in Datepicker.language, will use "ru" instead'),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru)),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,e.fn.datepicker.language[t])):this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,t),this.opts.dateFormat&&(this.loc.dateFormat=this.opts.dateFormat),this.opts.timeFormat&&(this.loc.timeFormat=this.opts.timeFormat),""!==this.opts.firstDay&&(this.loc.firstDay=this.opts.firstDay),this.opts.timepicker&&(this.loc.dateFormat=[this.loc.dateFormat,this.loc.timeFormat].join(this.opts.dateTimeSeparator)),this.opts.onlyTimepicker&&(this.loc.dateFormat=this.loc.timeFormat);var i=this._getWordBoundaryRegExp;(this.loc.timeFormat.match(i("aa"))||this.loc.timeFormat.match(i("AA")))&&(this.ampm=!0)},_buildDatepickersContainer:function(){c=!0,s.append('
'),a=e("#datepickers-container")},_buildBaseHtml:function(){var t,i=e('
');t="INPUT"==this.el.nodeName?this.opts.inline?i.insertAfter(this.$el):a:i.appendTo(this.$el),this.$datepicker=e(d).appendTo(t),this.$content=e(".datepicker--content",this.$datepicker),this.$nav=e(".datepicker--nav",this.$datepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var t,e=this.selectedDates,i=n.getParsedDate(e[0]),s=this,a=new Date(i.year,i.month,i.date,i.hours,i.minutes);t=e.map(function(t){return s.formatDate(s.loc.dateFormat,t)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=e.map(function(t){var e=n.getParsedDate(t);return new Date(e.year,e.month,e.date,e.hours,e.minutes)})),this._prevOnSelectValue=t,this.opts.onSelect(t,a,this)},next:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month+1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year+1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year+10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},prev:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month-1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year-1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year-10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},formatDate:function(t,e){e=e||this.date;var i,s=t,a=this._getWordBoundaryRegExp,h=this.loc,o=n.getLeadingZeroNum,r=n.getDecade(e),c=n.getParsedDate(e),d=c.fullHours,l=c.hours,u=t.match(a("aa"))||t.match(a("AA")),m="am",p=this._replacer;switch(this.opts.timepicker&&this.timepicker&&u&&(i=this.timepicker._getValidHoursFromDate(e,u),d=o(i.hours),l=i.hours,m=i.dayPeriod),!0){case/@/.test(s):s=s.replace(/@/,e.getTime());case/aa/.test(s):s=p(s,a("aa"),m);case/AA/.test(s):s=p(s,a("AA"),m.toUpperCase());case/dd/.test(s):s=p(s,a("dd"),c.fullDate);case/d/.test(s):s=p(s,a("d"),c.date);case/DD/.test(s):s=p(s,a("DD"),h.days[c.day]);case/D/.test(s):s=p(s,a("D"),h.daysShort[c.day]);case/mm/.test(s):s=p(s,a("mm"),c.fullMonth);case/m/.test(s):s=p(s,a("m"),c.month+1);case/MM/.test(s):s=p(s,a("MM"),this.loc.months[c.month]);case/M/.test(s):s=p(s,a("M"),h.monthsShort[c.month]);case/ii/.test(s):s=p(s,a("ii"),c.fullMinutes);case/i/.test(s):s=p(s,a("i"),c.minutes);case/hh/.test(s):s=p(s,a("hh"),d);case/h/.test(s):s=p(s,a("h"),l);case/yyyy/.test(s):s=p(s,a("yyyy"),c.year);case/yyyy1/.test(s):s=p(s,a("yyyy1"),r[0]);case/yyyy2/.test(s):s=p(s,a("yyyy2"),r[1]);case/yy/.test(s):s=p(s,a("yy"),c.year.toString().slice(-2))}return s},_replacer:function(t,e,i){return t.replace(e,function(t,e,s,a){return e+i+a})},_getWordBoundaryRegExp:function(t){var e="\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";return new RegExp("(^|>|"+e+")("+t+")($|<|"+e+")","g")},selectDate:function(t){var e=this,i=e.opts,s=e.parsedDate,a=e.selectedDates,h=a.length,o="";if(Array.isArray(t))return void t.forEach(function(t){e.selectDate(t)});if(t instanceof Date){if(this.lastSelectedDate=t,this.timepicker&&this.timepicker._setTime(t),e._trigger("selectDate",t),this.timepicker&&(t.setHours(this.timepicker.hours),t.setMinutes(this.timepicker.minutes)),"days"==e.view&&t.getMonth()!=s.month&&i.moveToOtherMonthsOnSelect&&(o=new Date(t.getFullYear(),t.getMonth(),1)),"years"==e.view&&t.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(o=new Date(t.getFullYear(),0,1)),o&&(e.silent=!0,e.date=o,e.silent=!1,e.nav._render()),i.multipleDates&&!i.range){if(h===i.multipleDates)return;e._isSelected(t)||e.selectedDates.push(t)}else i.range?2==h?(e.selectedDates=[t],e.minRange=t,e.maxRange=""):1==h?(e.selectedDates.push(t),e.maxRange?e.minRange=t:e.maxRange=t,n.bigger(e.maxRange,e.minRange)&&(e.maxRange=e.minRange,e.minRange=t),e.selectedDates=[e.minRange,e.maxRange]):(e.selectedDates=[t],e.minRange=t):e.selectedDates=[t];e._setInputValue(),i.onSelect&&e._triggerOnChange(),i.autoClose&&!this.timepickerIsActive&&(i.multipleDates||i.range?i.range&&2==e.selectedDates.length&&e.hide():e.hide()),e.views[this.currentView]._render()}},removeDate:function(t){var e=this.selectedDates,i=this;if(t instanceof Date)return e.some(function(s,a){return n.isSame(s,t)?(e.splice(a,1),i.selectedDates.length?i.lastSelectedDate=i.selectedDates[i.selectedDates.length-1]:(i.minRange="",i.maxRange="",i.lastSelectedDate=""),i.views[i.currentView]._render(),i._setInputValue(),i.opts.onSelect&&i._triggerOnChange(),!0):void 0})},today:function(){this.silent=!0,this.view=this.opts.minView,this.silent=!1,this.date=new Date,this.opts.todayButton instanceof Date&&this.selectDate(this.opts.todayButton)},clear:function(){this.selectedDates=[],this.minRange="",this.maxRange="",this.views[this.currentView]._render(),this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()},update:function(t,i){var s=arguments.length,a=this.lastSelectedDate;return 2==s?this.opts[t]=i:1==s&&"object"==typeof t&&(this.opts=e.extend(!0,this.opts,t)),this._createShortCuts(),this._syncWithMinMaxDates(),this._defineLocale(this.opts.language),this.nav._addButtonsIfNeed(),this.opts.onlyTimepicker||this.nav._render(),this.views[this.currentView]._render(),this.elIsInput&&!this.opts.inline&&(this._setPositionClasses(this.opts.position),this.visible&&this.setPosition(this.opts.position)),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.opts.timepicker&&(a&&this.timepicker._handleDate(a),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),a&&(a.setHours(this.timepicker.hours),a.setMinutes(this.timepicker.minutes))),this._setInputValue(),this},_syncWithMinMaxDates:function(){var t=this.date.getTime();this.silent=!0,this.minTime>t&&(this.date=this.minDate),this.maxTime=this.minTime&&i<=this.maxTime,month:o>=this.minTime&&r<=this.maxTime,year:s.year>=a.year&&s.year<=h.year};return e?c[e]:c.day},_getDimensions:function(t){var e=t.offset();return{width:t.outerWidth(),height:t.outerHeight(),left:e.left,top:e.top}},_getDateFromCell:function(t){var e=this.parsedDate,s=t.data("year")||e.year,a=t.data("month")==i?e.month:t.data("month"),n=t.data("date")||1;return new Date(s,a,n)},_setPositionClasses:function(t){t=t.split(" ");var e=t[0],i=t[1],s="datepicker -"+e+"-"+i+"- -from-"+e+"-";this.visible&&(s+=" active"),this.$datepicker.removeAttr("class").addClass(s)},setPosition:function(t){t=t||this.opts.position;var e,i,s=this._getDimensions(this.$el),a=this._getDimensions(this.$datepicker),n=t.split(" "),h=this.opts.offset,o=n[0],r=n[1];switch(o){case"top":e=s.top-a.height-h;break;case"right":i=s.left+s.width+h;break;case"bottom":e=s.top+s.height+h;break;case"left":i=s.left-a.width-h}switch(r){case"top":e=s.top;break;case"right":i=s.left+s.width-a.width;break;case"bottom":e=s.top+s.height-a.height;break;case"left":i=s.left;break;case"center":/left|right/.test(o)?e=s.top+s.height/2-a.height/2:i=s.left+s.width/2-a.width/2}this.$datepicker.css({left:i,top:e})},show:function(){var t=this.opts.onShow;this.setPosition(this.opts.position),this.$datepicker.addClass("active"),this.visible=!0,t&&this._bindVisionEvents(t)},hide:function(){var t=this.opts.onHide;this.$datepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.blur(),t&&this._bindVisionEvents(t)},down:function(t){this._changeView(t,"down")},up:function(t){this._changeView(t,"up")},_bindVisionEvents:function(t){this.$datepicker.off("transitionend.dp"),t(this,!1),this.$datepicker.one("transitionend.dp",t.bind(this,this,!0))},_changeView:function(t,e){t=t||this.focused||this.date;var i="up"==e?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),0>i&&(i=0),this.silent=!0,this.date=new Date(t.getFullYear(),t.getMonth(),1),this.silent=!1,this.view=this.viewIndexes[i]},_handleHotKey:function(t){var e,i,s,a=n.getParsedDate(this._getFocusedDate()),h=this.opts,o=!1,r=!1,c=!1,d=a.year,l=a.month,u=a.date;switch(t){case"ctrlRight":case"ctrlUp":l+=1,o=!0;break;case"ctrlLeft":case"ctrlDown":l-=1,o=!0;break;case"shiftRight":case"shiftUp":r=!0,d+=1;break;case"shiftLeft":case"shiftDown":r=!0,d-=1;break;case"altRight":case"altUp":c=!0,d+=10;break;case"altLeft":case"altDown":c=!0,d-=10;break;case"ctrlShiftUp":this.up()}s=n.getDaysCount(new Date(d,l)),i=new Date(d,l,u),u>s&&(u=s),i.getTime()this.maxTime&&(i=this.maxDate),this.focused=i,e=n.getParsedDate(i),o&&h.onChangeMonth&&h.onChangeMonth(e.month,e.year),r&&h.onChangeYear&&h.onChangeYear(e.year),c&&h.onChangeDecade&&h.onChangeDecade(this.curDecade)},_registerKey:function(t){var e=this.keys.some(function(e){return e==t});e||this.keys.push(t)},_unRegisterKey:function(t){var e=this.keys.indexOf(t);this.keys.splice(e,1)},_isHotKeyPressed:function(){var t,e=!1,i=this,s=this.keys.sort();for(var a in u)t=u[a],s.length==t.length&&t.every(function(t,e){return t==s[e]})&&(i._trigger("hotKey",a),e=!0);return e},_trigger:function(t,e){this.$el.trigger(t,e)},_focusNextCell:function(t,e){e=e||this.cellType;var i=n.getParsedDate(this._getFocusedDate()),s=i.year,a=i.month,h=i.date;if(!this._isHotKeyPressed()){switch(t){case 37:"day"==e?h-=1:"","month"==e?a-=1:"","year"==e?s-=1:"";break;case 38:"day"==e?h-=7:"","month"==e?a-=3:"","year"==e?s-=4:"";break;case 39:"day"==e?h+=1:"","month"==e?a+=1:"","year"==e?s+=1:"";break;case 40:"day"==e?h+=7:"","month"==e?a+=3:"","year"==e?s+=4:""}var o=new Date(s,a,h);o.getTime()this.maxTime&&(o=this.maxDate),this.focused=o}},_getFocusedDate:function(){var t=this.focused||this.selectedDates[this.selectedDates.length-1],e=this.parsedDate;if(!t)switch(this.view){case"days":t=new Date(e.year,e.month,(new Date).getDate());break;case"months":t=new Date(e.year,e.month,1);break;case"years":t=new Date(e.year,0,1)}return t},_getCell:function(t,i){i=i||this.cellType;var s,a=n.getParsedDate(t),h='.datepicker--cell[data-year="'+a.year+'"]';switch(i){case"month":h='[data-month="'+a.month+'"]';break;case"day":h+='[data-month="'+a.month+'"][data-date="'+a.date+'"]'}return s=this.views[this.currentView].$el.find(h),s.length?s:e("")},destroy:function(){var t=this;t.$el.off(".adp").data("datepicker",""),t.selectedDates=[],t.focused="",t.views={},t.keys=[],t.minRange="",t.maxRange="",t.opts.inline||!t.elIsInput?t.$datepicker.closest(".datepicker-inline").remove():t.$datepicker.remove()},_handleAlreadySelectedDates:function(t,e){this.opts.range?this.opts.toggleSelected?this.removeDate(e):2!=this.selectedDates.length&&this._trigger("clickCell",e):this.opts.toggleSelected&&this.removeDate(e),this.opts.toggleSelected||(this.lastSelectedDate=t,this.opts.timepicker&&(this.timepicker._setTime(t),this.timepicker.update()))},_onShowEvent:function(t){this.visible||this.show()},_onBlur:function(){!this.inFocus&&this.visible&&this.hide()},_onMouseDownDatepicker:function(t){this.inFocus=!0},_onMouseUpDatepicker:function(t){this.inFocus=!1,t.originalEvent.inFocus=!0,t.originalEvent.timepickerFocus||this.$el.focus()},_onKeyUpGeneral:function(t){var e=this.$el.val();e||this.clear()},_onResize:function(){this.visible&&this.setPosition()},_onMouseUpBody:function(t){t.originalEvent.inFocus||this.visible&&!this.inFocus&&this.hide()},_onMouseUpEl:function(t){t.originalEvent.inFocus=!0,setTimeout(this._onKeyUpGeneral.bind(this),4)},_onKeyDown:function(t){var e=t.which;if(this._registerKey(e),e>=37&&40>=e&&(t.preventDefault(),this._focusNextCell(e)),13==e&&this.focused){if(this._getCell(this.focused).hasClass("-disabled-"))return;if(this.view!=this.opts.minView)this.down();else{var i=this._isSelected(this.focused,this.cellType);if(!i)return this.timepicker&&(this.focused.setHours(this.timepicker.hours),this.focused.setMinutes(this.timepicker.minutes)),void this.selectDate(this.focused);this._handleAlreadySelectedDates(i,this.focused)}}27==e&&this.hide()},_onKeyUp:function(t){var e=t.which;this._unRegisterKey(e)},_onHotKey:function(t,e){this._handleHotKey(e)},_onMouseEnterCell:function(t){var i=e(t.target).closest(".datepicker--cell"),s=this._getDateFromCell(i);this.silent=!0,this.focused&&(this.focused=""),i.addClass("-focus-"),this.focused=s,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(t,e,i){var s=new Date,a=this.selectedDates,n=!1;a.length&&(n=!0,s=this.lastSelectedDate),s.setHours(e),s.setMinutes(i),n||this._getCell(s).hasClass("-disabled-")?(this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()):this.selectDate(s)},_onClickCell:function(t,e){this.timepicker&&(e.setHours(this.timepicker.hours),e.setMinutes(this.timepicker.minutes)),this.selectDate(e)},set focused(t){if(!t&&this.focused){var e=this._getCell(this.focused);e.length&&e.removeClass("-focus-")}this._focused=t,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=t)},get focused(){return this._focused},get parsedDate(){return n.getParsedDate(this.date)},set date(t){return t instanceof Date?(this.currentDate=t,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),t):void 0},get date(){return this.currentDate},set view(t){return this.viewIndex=this.viewIndexes.indexOf(t),this.viewIndex<0?void 0:(this.prevView=this.currentView,this.currentView=t,this.inited&&(this.views[t]?this.views[t]._render():this.views[t]=new e.fn.datepicker.Body(this,t,this.opts),this.views[this.prevView].hide(),this.views[t].show(),this.nav._render(),this.opts.onChangeView&&this.opts.onChangeView(t),this.elIsInput&&this.visible&&this.setPosition()),t)},get view(){return this.currentView},get cellType(){return this.view.substring(0,this.view.length-1)},get minTime(){var t=n.getParsedDate(this.minDate);return new Date(t.year,t.month,t.date).getTime()},get maxTime(){var t=n.getParsedDate(this.maxDate);return new Date(t.year,t.month,t.date).getTime()},get curDecade(){return n.getDecade(this.date)}},n.getDaysCount=function(t){return new Date(t.getFullYear(),t.getMonth()+1,0).getDate()},n.getParsedDate=function(t){return{year:t.getFullYear(),month:t.getMonth(),fullMonth:t.getMonth()+1<10?"0"+(t.getMonth()+1):t.getMonth()+1,date:t.getDate(),fullDate:t.getDate()<10?"0"+t.getDate():t.getDate(),day:t.getDay(),hours:t.getHours(),fullHours:t.getHours()<10?"0"+t.getHours():t.getHours(),minutes:t.getMinutes(),fullMinutes:t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes()}},n.getDecade=function(t){var e=10*Math.floor(t.getFullYear()/10);return[e,e+9]},n.template=function(t,e){return t.replace(/#\{([\w]+)\}/g,function(t,i){return e[i]||0===e[i]?e[i]:void 0})},n.isSame=function(t,e,i){if(!t||!e)return!1;var s=n.getParsedDate(t),a=n.getParsedDate(e),h=i?i:"day",o={day:s.date==a.date&&s.month==a.month&&s.year==a.year,month:s.month==a.month&&s.year==a.year,year:s.year==a.year};return o[h]},n.less=function(t,e,i){return t&&e?e.getTime()t.getTime():!1},n.getLeadingZeroNum=function(t){return parseInt(t)<10?"0"+t:t},n.resetTime=function(t){return"object"==typeof t?(t=n.getParsedDate(t),new Date(t.year,t.month,t.date)):void 0},e.fn.datepicker=function(t){return this.each(function(){if(e.data(this,o)){var i=e.data(this,o);i.opts=e.extend(!0,i.opts,t),i.update()}else e.data(this,o,new m(this,t))})},e.fn.datepicker.Constructor=m,e.fn.datepicker.language={ru:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.mm.yyyy",timeFormat:"hh:ii",firstDay:1}},e(function(){e(r).datepicker()})}(),function(){var t={days:'
',months:'
',years:'
'},s=e.fn.datepicker,a=s.Constructor;s.Body=function(t,i,s){this.d=t,this.type=i,this.opts=s,this.$el=e(""),this.opts.onlyTimepicker||this.init()},s.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".datepicker--cell",e.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=e(t[this.type]).appendTo(this.d.$content),this.$names=e(".datepicker--days-names",this.$el),this.$cells=e(".datepicker--cells",this.$el)},_getDayNamesHtml:function(t,e,s,a){return e=e!=i?e:t,s=s?s:"",a=a!=i?a:0,a>7?s:7==e?this._getDayNamesHtml(t,0,s,++a):(s+='
'+this.d.loc.daysMin[e]+"
",this._getDayNamesHtml(t,++e,s,++a))},_getCellContents:function(t,e){var i="datepicker--cell datepicker--cell-"+e,s=new Date,n=this.d,h=a.resetTime(n.minRange),o=a.resetTime(n.maxRange),r=n.opts,c=a.getParsedDate(t),d={},l=c.date;switch(e){case"day":n.isWeekend(c.day)&&(i+=" -weekend-"),c.month!=this.d.parsedDate.month&&(i+=" -other-month-",r.selectOtherMonths||(i+=" -disabled-"),r.showOtherMonths||(l=""));break;case"month":l=n.loc[n.opts.monthsField][c.month];break;case"year":var u=n.curDecade;l=c.year,(c.yearu[1])&&(i+=" -other-decade-",r.selectOtherYears||(i+=" -disabled-"),r.showOtherYears||(l=""))}return r.onRenderCell&&(d=r.onRenderCell(t,e)||{},l=d.html?d.html:l,i+=d.classes?" "+d.classes:""),r.range&&(a.isSame(h,t,e)&&(i+=" -range-from-"),a.isSame(o,t,e)&&(i+=" -range-to-"),1==n.selectedDates.length&&n.focused?((a.bigger(h,t)&&a.less(n.focused,t)||a.less(o,t)&&a.bigger(n.focused,t))&&(i+=" -in-range-"),a.less(o,t)&&a.isSame(n.focused,t)&&(i+=" -range-from-"),a.bigger(h,t)&&a.isSame(n.focused,t)&&(i+=" -range-to-")):2==n.selectedDates.length&&a.bigger(h,t)&&a.less(o,t)&&(i+=" -in-range-")),a.isSame(s,t,e)&&(i+=" -current-"),n.focused&&a.isSame(t,n.focused,e)&&(i+=" -focus-"),n._isSelected(t,e)&&(i+=" -selected-"),(!n._isInRange(t,e)||d.disabled)&&(i+=" -disabled-"),{html:l,classes:i}},_getDaysHtml:function(t){var e=a.getDaysCount(t),i=new Date(t.getFullYear(),t.getMonth(),1).getDay(),s=new Date(t.getFullYear(),t.getMonth(),e).getDay(),n=i-this.d.loc.firstDay,h=6-s+this.d.loc.firstDay;n=0>n?n+7:n,h=h>6?h-7:h;for(var o,r,c=-n+1,d="",l=c,u=e+h;u>=l;l++)r=t.getFullYear(),o=t.getMonth(),d+=this._getDayHtml(new Date(r,o,l));return d},_getDayHtml:function(t){var e=this._getCellContents(t,"day");return'
'+e.html+"
"},_getMonthsHtml:function(t){for(var e="",i=a.getParsedDate(t),s=0;12>s;)e+=this._getMonthHtml(new Date(i.year,s)),s++;return e},_getMonthHtml:function(t){var e=this._getCellContents(t,"month");return'
'+e.html+"
"},_getYearsHtml:function(t){var e=(a.getParsedDate(t),a.getDecade(t)),i=e[0]-1,s="",n=i;for(n;n<=e[1]+1;n++)s+=this._getYearHtml(new Date(n,0));return s},_getYearHtml:function(t){var e=this._getCellContents(t,"year");return'
'+e.html+"
"},_renderTypes:{days:function(){var t=this._getDayNamesHtml(this.d.loc.firstDay),e=this._getDaysHtml(this.d.currentDate);this.$cells.html(e),this.$names.html(t)},months:function(){var t=this._getMonthsHtml(this.d.currentDate);this.$cells.html(t)},years:function(){var t=this._getYearsHtml(this.d.currentDate);this.$cells.html(t)}},_render:function(){this.opts.onlyTimepicker||this._renderTypes[this.type].bind(this)()},_update:function(){var t,i,s,a=e(".datepicker--cell",this.$cells),n=this;a.each(function(a,h){i=e(this),s=n.d._getDateFromCell(e(this)),t=n._getCellContents(s,n.d.cellType),i.attr("class",t.classes)})},show:function(){this.opts.onlyTimepicker||(this.$el.addClass("active"),this.acitve=!0)},hide:function(){this.$el.removeClass("active"),this.active=!1},_handleClick:function(t){var e=t.data("date")||1,i=t.data("month")||0,s=t.data("year")||this.d.parsedDate.year,a=this.d;if(a.view!=this.opts.minView)return void a.down(new Date(s,i,e));var n=new Date(s,i,e),h=this.d._isSelected(n,this.d.cellType);return h?void a._handleAlreadySelectedDates.bind(a,h,n)():void a._trigger("clickCell",n)},_onClickCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.hasClass("-disabled-")||this._handleClick.bind(this)(i)}}}(),function(){var t='
#{prevHtml}
#{title}
#{nextHtml}
',i='
',s='#{label}',a=e.fn.datepicker,n=a.Constructor;a.Navigation=function(t,e){this.d=t,this.opts=e,this.$buttonsContainer="",this.init()},a.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".datepicker--nav-action",e.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".datepicker--nav-title",e.proxy(this._onClickNavTitle,this)),this.d.$datepicker.on("click",".datepicker--button",e.proxy(this._onClickNavButton,this))},_buildBaseHtml:function(){this.opts.onlyTimepicker||this._render(),this._addButtonsIfNeed()},_addButtonsIfNeed:function(){this.opts.todayButton&&this._addButton("today"),this.opts.clearButton&&this._addButton("clear")},_render:function(){var i=this._getTitle(this.d.currentDate),s=n.template(t,e.extend({title:i},this.opts));this.d.$nav.html(s),"years"==this.d.view&&e(".datepicker--nav-title",this.d.$nav).addClass("-disabled-"),this.setNavStatus()},_getTitle:function(t){return this.d.formatDate(this.opts.navTitles[this.d.view],t)},_addButton:function(t){this.$buttonsContainer.length||this._addButtonsContainer();var i={action:t,label:this.d.loc[t]},a=n.template(s,i);e("[data-action="+t+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(a)},_addButtonsContainer:function(){this.d.$datepicker.append(i),this.$buttonsContainer=e(".datepicker--buttons",this.d.$datepicker)},setNavStatus:function(){if((this.opts.minDate||this.opts.maxDate)&&this.opts.disableNavWhenOutOfRange){var t=this.d.parsedDate,e=t.month,i=t.year,s=t.date;switch(this.d.view){case"days":this.d._isInRange(new Date(i,e-1,1),"month")||this._disableNav("prev"),this.d._isInRange(new Date(i,e+1,1),"month")||this._disableNav("next");break;case"months":this.d._isInRange(new Date(i-1,e,s),"year")||this._disableNav("prev"),this.d._isInRange(new Date(i+1,e,s),"year")||this._disableNav("next");break;case"years":var a=n.getDecade(this.d.date);this.d._isInRange(new Date(a[0]-1,0,1),"year")||this._disableNav("prev"),this.d._isInRange(new Date(a[1]+1,0,1),"year")||this._disableNav("next")}}},_disableNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(t){var i=e(t.target).closest("[data-action]"),s=i.data("action");this.d[s]()},_onClickNavTitle:function(t){return e(t.target).hasClass("-disabled-")?void 0:"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}}(),function(){var t='
#{hourVisible} : #{minValue}
',i=e.fn.datepicker,s=i.Constructor;i.Timepicker=function(t,e){this.d=t,this.opts=e,this.init()},i.Timepicker.prototype={init:function(){var t="input";this._setTime(this.d.date),this._buildHTML(),navigator.userAgent.match(/trident/gi)&&(t="change"),this.d.$el.on("selectDate",this._onSelectDate.bind(this)),this.$ranges.on(t,this._onChangeRange.bind(this)),this.$ranges.on("mouseup",this._onMouseUpRange.bind(this)),this.$ranges.on("mousemove focus ",this._onMouseEnterRange.bind(this)),this.$ranges.on("mouseout blur",this._onMouseOutRange.bind(this))},_setTime:function(t){var e=s.getParsedDate(t);this._handleDate(t),this.hours=e.hourst.getHours()&&(this.minMinutes=this.opts.minMinutes)},_setMaxTimeFromDate:function(t){ -this.maxHours=t.getHours(),this.maxMinutes=t.getMinutes(),this.d.lastSelectedDate&&this.d.lastSelectedDate.getHours()t?0:i.minHours,this.minMinutes=i.minMinutes<0||i.minMinutes>e?0:i.minMinutes,this.maxHours=i.maxHours<0||i.maxHours>t?t:i.maxHours,this.maxMinutes=i.maxMinutes<0||i.maxMinutes>e?e:i.maxMinutes},_validateHoursMinutes:function(t){this.hoursthis.maxHours&&(this.hours=this.maxHours),this.minutesthis.maxMinutes&&(this.minutes=this.maxMinutes)},_buildHTML:function(){var i=s.getLeadingZeroNum,a={hourMin:this.minHours,hourMax:i(this.maxHours),hourStep:this.opts.hoursStep,hourValue:this.hours,hourVisible:i(this.displayHours),minMin:this.minMinutes,minMax:i(this.maxMinutes),minStep:this.opts.minutesStep,minValue:i(this.minutes)},n=s.template(t,a);this.$timepicker=e(n).appendTo(this.d.$datepicker),this.$ranges=e('[type="range"]',this.$timepicker),this.$hours=e('[name="hours"]',this.$timepicker),this.$minutes=e('[name="minutes"]',this.$timepicker),this.$hoursText=e(".datepicker--time-current-hours",this.$timepicker),this.$minutesText=e(".datepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=e('').appendTo(e(".datepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var t=s.getLeadingZeroNum(this.displayHours),e=s.getLeadingZeroNum(this.minutes);this.$hoursText.html(t),this.$minutesText.html(e),this.d.ampm&&this.$ampm.html(this.dayPeriod)},_updateRanges:function(){this.$hours.attr({min:this.minHours,max:this.maxHours}).val(this.hours),this.$minutes.attr({min:this.minMinutes,max:this.maxMinutes}).val(this.minutes)},_handleDate:function(t){this._setDefaultMinMaxTime(),t&&(s.isSame(t,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):s.isSame(t,this.d.opts.maxDate)&&this._setMaxTimeFromDate(this.d.opts.maxDate)),this._validateHoursMinutes(t)},update:function(){this._updateRanges(),this._updateCurrentTime()},_getValidHoursFromDate:function(t,e){var i=t,a=t;t instanceof Date&&(i=s.getParsedDate(t),a=i.hours);var n=e||this.d.ampm,h="am";if(n)switch(!0){case 0==a:a=12;break;case 12==a:h="pm";break;case a>11:a-=12,h="pm"}return{hours:a,dayPeriod:h}},set hours(t){this._hours=t;var e=this._getValidHoursFromDate(t);this.displayHours=e.hours,this.dayPeriod=e.dayPeriod},get hours(){return this._hours},_onChangeRange:function(t){var i=e(t.target),s=i.attr("name");this.d.timepickerIsActive=!0,this[s]=i.val(),this._updateCurrentTime(),this.d._trigger("timeChange",[this.hours,this.minutes]),this._handleDate(this.d.lastSelectedDate),this.update()},_onSelectDate:function(t,e){this._handleDate(e),this.update()},_onMouseEnterRange:function(t){var i=e(t.target).attr("name");e(".datepicker--time-current-"+i,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(t){var i=e(t.target).attr("name");this.d.inFocus||e(".datepicker--time-current-"+i,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(t){this.d.timepickerIsActive=!1}}}()}(window,jQuery); \ No newline at end of file diff --git a/punch_list/js/firebase.js b/punch_list/js/firebase.js deleted file mode 100644 index de00f33..0000000 --- a/punch_list/js/firebase.js +++ /dev/null @@ -1,46 +0,0 @@ -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; - // ... -}); - diff --git a/punch_list/js/i18n/datepicker.cs.js b/punch_list/js/i18n/datepicker.cs.js deleted file mode 100644 index a89db7c..0000000 --- a/punch_list/js/i18n/datepicker.cs.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.da.js b/punch_list/js/i18n/datepicker.da.js deleted file mode 100644 index f34456e..0000000 --- a/punch_list/js/i18n/datepicker.da.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.de.js b/punch_list/js/i18n/datepicker.de.js deleted file mode 100644 index fd9f8ff..0000000 --- a/punch_list/js/i18n/datepicker.de.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.en.js b/punch_list/js/i18n/datepicker.en.js deleted file mode 100644 index a5b2437..0000000 --- a/punch_list/js/i18n/datepicker.en.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); diff --git a/punch_list/js/i18n/datepicker.es.js b/punch_list/js/i18n/datepicker.es.js deleted file mode 100644 index a8b6af5..0000000 --- a/punch_list/js/i18n/datepicker.es.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.fi.js b/punch_list/js/i18n/datepicker.fi.js deleted file mode 100644 index 9619705..0000000 --- a/punch_list/js/i18n/datepicker.fi.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.fr.js b/punch_list/js/i18n/datepicker.fr.js deleted file mode 100644 index 0d083b2..0000000 --- a/punch_list/js/i18n/datepicker.fr.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.hu.js b/punch_list/js/i18n/datepicker.hu.js deleted file mode 100644 index 7d144b3..0000000 --- a/punch_list/js/i18n/datepicker.hu.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.nl.js b/punch_list/js/i18n/datepicker.nl.js deleted file mode 100644 index 8d29a5a..0000000 --- a/punch_list/js/i18n/datepicker.nl.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.pl.js b/punch_list/js/i18n/datepicker.pl.js deleted file mode 100644 index 3c0f565..0000000 --- a/punch_list/js/i18n/datepicker.pl.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.pt-BR.js b/punch_list/js/i18n/datepicker.pt-BR.js deleted file mode 100644 index 13a79f5..0000000 --- a/punch_list/js/i18n/datepicker.pt-BR.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.pt.js b/punch_list/js/i18n/datepicker.pt.js deleted file mode 100644 index 92a3a08..0000000 --- a/punch_list/js/i18n/datepicker.pt.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.ro.js b/punch_list/js/i18n/datepicker.ro.js deleted file mode 100644 index 0034204..0000000 --- a/punch_list/js/i18n/datepicker.ro.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.sk.js b/punch_list/js/i18n/datepicker.sk.js deleted file mode 100644 index 3312386..0000000 --- a/punch_list/js/i18n/datepicker.sk.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/js/i18n/datepicker.zh.js b/punch_list/js/i18n/datepicker.zh.js deleted file mode 100644 index 08633cc..0000000 --- a/punch_list/js/i18n/datepicker.zh.js +++ /dev/null @@ -1,12 +0,0 @@ -;(function ($) { $.fn.datepicker.language['zh'] = { - days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - daysShort: ['日', '一', '二', '三', '四', '五', '六'], - daysMin: ['日', '一', '二', '三', '四', '五', '六'], - months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - monthsShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - today: '今天', - clear: '清除', - dateFormat: 'yyyy-mm-dd', - timeFormat: 'hh:ii', - firstDay: 1 -}; })(jQuery); \ No newline at end of file diff --git a/punch_list/metadata.js b/punch_list/metadata.js deleted file mode 100644 index 39b108a..0000000 --- a/punch_list/metadata.js +++ /dev/null @@ -1,24 +0,0 @@ -var version = "0.10.001", - debug = false, - jsonUrl = "https://api.myjson.com/bins/1dodsj", -// jsonUrl = 'https://punchlist-1561043639952.firebaseio.com/', - btJsonUrl = "https://api.myjson.com/bins/k0abr", - showDone = false, - items, - item, - notes, - cDate, - array_counter = 0; - -var events, list, counter_diff, eventLength, isEventsArray; -var currentObject, nextObject, notes; -var currentDate, nextDate, currentStart, currentEnd; -var nextStart, nextEnd, currentSubject, nextSubject; - -var dataLoad = false; -var dataRequested = false; -var initialized = false; -var style = 'green'; -var eventStyle = "events"; -var array_counter = 0; - diff --git a/punch_list/public/404.html b/punch_list/public/404.html deleted file mode 100644 index 829eda8..0000000 --- a/punch_list/public/404.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - Page Not Found - - - - -
-

404

-

Page Not Found

-

The specified file was not found on this website. Please check the URL for mistakes and try again.

-

Why am I seeing this?

-

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

-
- - diff --git a/punch_list/public/css/custom-large.css b/punch_list/public/css/custom-large.css deleted file mode 100644 index 679bcbe..0000000 --- a/punch_list/public/css/custom-large.css +++ /dev/null @@ -1,82 +0,0 @@ -/* Larger than tablet */ -@media (min-width: 750px) { -.progress-wrapper { width: 20%; float:left; text-align:left;} -#neededBy { display: block; } -#whoami { width: 100%; } -.needby-container { width: 22%; float: left; text-align: center; } -.tags-summary { display: block; font-size: 1em; margin-left: 10px; } -a.tags-summary { color: #00BFFF; text-decoration: none; float:left;} -a.tags-summary:hover { color: #00FFFF; text-shadow: 0px 0px 23px #FFF; } -.tags-details { display: none; } -.subject { - overflow: hidden; - width: 70%; - float: left; - color: #FFF; - font-size: 2rem; - font-weight: 900; } -.column-left { - display: none; - margin-top: 100px; - margin-left: auto; - width: 30%; - height: 99%; - background-color: #000; - overflow: hidden; - float: left; - border-right: 3px solid #000; -} -.column-right { display: none; width: 10%; overflow: hidden; float: left;} -.column-middle { display: block; width: 55%; overflow: visible; margin-left:auto; margin-right:auto;} -/* Navbar */ -.clock-wrapper { - display: block; - min-width: 50px; } -.clock { - display: block; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } -.navbar, -.navbar-spacer { - display: block; - width: 100%; - height: 6.5rem; - background: #222; - z-index: 99; - border-top: 0px solid #eee; - border-bottom: 1px solid #eee; } -.navbar-spacer { - display: none; } -.navbar > .container { - width: 100%; } -.navbar-list { - list-style: none; - margin-bottom: 0; } -.navbar-item { - position: relative; - float: left; - margin-bottom: 0; } -.navbar-link { - text-transform: uppercase; - font-size: 11px; - font-weight: 600; - letter-spacing: .2rem; - margin-right: 35px; - text-decoration: none; - line-height: 6.5rem; - color: #222; } -.navbar-link.active { - color: #33C3F0; } -.has-docked-nav .navbar { - position: fixed; - top: 0; - left: 0; } -.has-docked-nav .navbar-spacer { - display: block; } -/* Re-overiding the width 100% declaration to match size of % based container */ -.has-docked-nav .navbar > .container { - width: 80%; } -} diff --git a/punch_list/public/css/custom-medium.css b/punch_list/public/css/custom-medium.css deleted file mode 100644 index f525f48..0000000 --- a/punch_list/public/css/custom-medium.css +++ /dev/null @@ -1,53 +0,0 @@ -/* Larger than phone */ -@media (min-width: 600px) { -.progress-wrapper { width: 20%; float:left; text-align:left;} -#neededBy { display: block; } -.subject { - overflow: hidden; - width: 70%; - float: left; - color: #FFF; - font-size: 2rem; - font-weight: 900; } - .button { - padding: 0px; - text-align: center; - text-decoration: none; - font-size: 1rem; - vertical-align: middle; - border: 1px solid #333; - background-color: #4CAF50; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: auto; - width: 20%; - height: 40px; - float: right;} - .nav-button { - vertical-align: middle; - float: right } - .two-thirds.column { width: 68.8%; } - .column, - .columns { - background: transparent; - margin-left: 3px; } - .clock-wrapper { - display: block; - min-width: 50px; - } - .clock { - display: block; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } - .header { - background-color: #666; - text-align: center; - margin-top: 6rem; } - .punches { - text-align: left; } -} - diff --git a/punch_list/public/css/custom.css b/punch_list/public/css/custom.css deleted file mode 100644 index 2cfd383..0000000 --- a/punch_list/public/css/custom.css +++ /dev/null @@ -1,291 +0,0 @@ -/* Mobile first */ -/* and generic stuff */ -.progress-wrapper { width: 40%; float: left; text-align: left; } -#neededBy { display: none; } -#whoami { width: 100%; } -.needby-container { width: 35%; float: left; text-align: center; } -.button:hover { color: #ddd; } -button:hover { color: #ddd; } -.dropdown.menu { float:right; margin-right: 15px;} -.details-container { width: 70%; } -.priority-container { width: 20%; float:left; width:10%;} -.priority { min-width:50px; color:steel; font-size: 35px; font-weight: 900; } -li.inProgress { border: 4px solid lime; } -.inProgress { color:orange; font-size: 12px; } -.tags-summary { display: none; } -.tags-details { font-size: 1em; margin-left: 10px; } -a.tags-details { color: #00BFFF; text-decoration: none;} -a.tags-details:hover { color: #00FFFF; text-shadow: 0px 0px 23px #FFF; } -.subject { - overflow: hidden; - min-width: 80%; - float: left; - color: #FFF; - font-size: 1.5rem; - font-weight: 900; } -body { - width: 90%; - margin-left: auto; - margin-right: auto; - background: #222; - color: #AAA; } -.column-left { display: none; } -.column-right { display: none; } -.column-middle { width: 100%; overflow: auto; background: #333; padding-bottom: 200px; margin-left: auto; margin-right: auto;} -#mainMenuWrapper:after { content: ""; clear: both; } -#sortable { list-style-type: none; margin: 0; padding: 0; width: 100%; } -#sortable li { font-size: 1.4em; color: #AAA;} -#sortable li span { position: absolute; margin-left: -1.3em; } - .portlet { - padding: 0.3em; - } - .backlog-list-header { - padding: 0.2em 0.3em; - padding-bottom: 0.9em; - position: relative; - } - .portlet-toggle { - position: absolute; - top: 50%; - right: 0; - margin-top: -8px; - } - .backlog-list-content { - float: left; - width: 96%; - border-top: 2px solid #DDD; - display: none; - padding: 0.4em; - } - .portlet-placeholder { - border: 1px dotted black; - margin: 0 1em 1em 0; - height: 50px; - } -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("https://code.jquery.com/ui/1.12.1/themes/base/images/ui-icons_ffffff_256x240.png"); -} -.ui-widget-content { background: #000; color: #aaa;} -.ui-widget-header { background: #333; color: #aaa;} -a.punch-default { color: #00BFFF; font-size: 12px; text-decoration: none;} -a.punch-default:hover { color: #00FFFF; text-shadow: 0px 0px 23px #FFF; } -.punch-default { border: 0px solid #AAA; color: #aaa; font-size: 12px; font-family: Arial, Helvetica, sans-serif;} -.inprogress { color: orange; font-size: 12px; } -.waiting { color: red; font-size: 12px; } -li.waiting { border: 4px solid red ; } -.overdue { color: red; font-size: 12px; border: 1px solid red; padding:3px;} -.duesoon { color: yellow; font-size: 12px; border: 1px solid yellow; padding:3px;} -.hide { display: none; } -i { - border: solid black; - border-width: 0 3px 3px 0; - display: inline-block; - padding: 3px; -} -.down { - transform: rotate(45deg); - -webkit-transform: rotate(45deg); -} -.punch-list-backlog-details { - font-size: 18px; - color: #aaa; -} -.edit-row { padding-top: 5px; } -.edit-text-box { width: 100%; min-height: 200px; font-size: 12px; } -.ui-widget textarea { font-size: 12px; } -textarea { - font-size: 12px; - background: #111; - width:80%; - height:50%; - color: lime; - border: 1px solid #999; } -.listWrapper:after { - content: ""; - /*clear: both;*/ } -.listWrapper { - margin: 5px; - background: #333; - margin-bottom: 10px; - border: 0px solid #999; } -.punchListHeader { - color: #00bfff; - padding: 4px; - font-size: 2rem; - font-weight: 999; } - .one.column, - .one.columns { width: 4.66666666667%; } - .two.columns { width: 13.3333333333%; } - .three.columns { width: 22%; } - .four.columns { width: 30.6666666667%; } - .five.columns { width: 39.3333333333%; } - .six.columns { width: 48%; } - .seven.columns { width: 56.6666666667%; } - .eight.columns { width: 65.3333333333%; } - .nine.columns { width: 74.0%; } - .ten.columns { width: 82.6666666667%; } - .eleven.columns { width: 91.3333333333%; } - .twelve.columns { width: 100%; margin-left: 0; } -#newEvent { - display: none;} -#editPunch { - display: none; } -.punchlist { - position: relative; - width: 100%; - display: table; - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; } -.punchlist::after { - content: ""; - clear: both; } -.top-bottom-border { - border-top: 1px solid #eee; - border-bottom: 1px solid #eee; } -.navbar { - overflow: hidden; - background-color: #333; - font-family: Arial, Helvetica, sans-serif; -} - -.navbar a { - float: left; - font-size: 16px; - color: white; - text-align: center; - padding: 14px 16px; - text-decoration: none; -} - -.top { vertical-align: top; padding: 0px; margin: 0px; } - -/* Dropdown Button */ -.dropbtn { - height: 15px; -/* background-image: url("../images/down-carrot.png"); */ - vertical-align: top; - background-color: #3498DB; - color: white; - padding: 6px; - font-size: 10px; - cursor: pointer; - border: 0px; - z-index: 1000; -} - -/* Dropdown button on hover & focus */ -.dropbtn:hover, .dropbtn:focus { - background-color: #2980B9; -} - -/* The container
- needed to position the dropdown content */ -.dropdown { - min-width: 20px; - position: relative; - display: inline-block; - height: 20px; - float: left; - width: 35px; -} - -/* Dropdown Content (Hidden by Default) */ -.dropdown-content { - display: none; - position: relative; - background-color: #f1f1f1; - min-width: 160px; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 1000; - float:right; -} - -/* Links inside the dropdown */ -.dropdown-content a { - color: black; - padding: 12px 16px; - text-decoration: none; - display: block; - z-index: 1000; -} - -/* Change color of dropdown links on hover */ -.dropdown-content a:hover {background-color: #aaa;} - -/* Show the dropdown menu (use JS to add this class to the .dropdown-content container when the user clicks on the dropdown button) */ -.show {display:block;} -.hide {display:none;} - -.warn { color: yellow; } -.green { color: lime; } -.over { color: red; } -.current { color: orange; } -.punches-current { - background: #555; } -.countdown { - float: right; - font-size: 2rem; - font-weight: 900; } -.punches { - /* display: block; */ - /*width: 99%; */ - text-align: left; } -.notes { - background: #000; - margin-top: 10px; - font-size: 1.8rem; - color: #fff; - max-width: 100%; } -.debug { - background: #000; - color: lime; - margin-top: 15px; - border: 1px solid lime; } -.clock { - display: none; - font-size: 1.8rem; - font-weight: 600; - color: #AAA; - padding: 5px; - margin-bottom: 0px; } -.centerMiddle { - padding:0px; - text-align: center; - vertical-align: middle; } -.button { - display: block; - padding: 0px; - text-align: center; - text-decoration: none; - font-size: 1.5rem; - vertical-align: middle; - border: 1px solid #333; - background-color: #4CAF50; - margin-top: auto; - margin-bottom: auto; - margin-left: auto; - margin-right: auto; - width: 98%; - height: 50px;} -.nav-button { - vertical-align: middle; - float: right } -.container { - width: 99%; - max-width: 99%; - padding: 0 5px; } - -.header { - background-color: #666; - margin-top: 6rem; - text-align: center; } -.header.columns { - background: #666; } -.navbar { - font-size: 3rem; - font-weight: 600; - background: #222; - /*display: none;*/ } -.punches { - text-align: left; } - diff --git a/punch_list/public/css/datepicker.css b/punch_list/public/css/datepicker.css deleted file mode 100644 index a803fda..0000000 --- a/punch_list/public/css/datepicker.css +++ /dev/null @@ -1,622 +0,0 @@ -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Datepicker cells - ------------------------------------------------- */ -.datepicker--cells { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; } - -.datepicker--cell { - border-radius: 4px; - box-sizing: border-box; - cursor: pointer; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - position: relative; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - height: 32px; - z-index: 1; } - .datepicker--cell.-focus- { - background: #f0f0f0; } - .datepicker--cell.-current- { - color: #4EB5E6; } - .datepicker--cell.-current-.-focus- { - color: #4a4a4a; } - .datepicker--cell.-current-.-in-range- { - color: #4EB5E6; } - .datepicker--cell.-in-range- { - background: rgba(92, 196, 239, 0.1); - color: #4a4a4a; - border-radius: 0; } - .datepicker--cell.-in-range-.-focus- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell.-disabled- { - cursor: default; - color: #aeaeae; } - .datepicker--cell.-disabled-.-focus- { - color: #aeaeae; } - .datepicker--cell.-disabled-.-in-range- { - color: #a1a1a1; } - .datepicker--cell.-disabled-.-current-.-focus- { - color: #aeaeae; } - .datepicker--cell.-range-from- { - border: 1px solid rgba(92, 196, 239, 0.5); - background-color: rgba(92, 196, 239, 0.1); - border-radius: 4px 0 0 4px; } - .datepicker--cell.-range-to- { - border: 1px solid rgba(92, 196, 239, 0.5); - background-color: rgba(92, 196, 239, 0.1); - border-radius: 0 4px 4px 0; } - .datepicker--cell.-range-from-.-range-to- { - border-radius: 4px; } - .datepicker--cell.-selected- { - color: #fff; - border: none; - background: #5cc4ef; } - .datepicker--cell.-selected-.-current- { - color: #fff; - background: #5cc4ef; } - .datepicker--cell.-selected-.-focus- { - background: #45bced; } - .datepicker--cell:empty { - cursor: default; } - -.datepicker--days-names { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - margin: 8px 0 3px; } - -.datepicker--day-name { - color: #FF9A19; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - text-align: center; - text-transform: uppercase; - font-size: .8em; } - -.datepicker--cell-day { - width: 14.28571%; } - -.datepicker--cells-months { - height: 170px; } - -.datepicker--cell-month { - width: 33.33%; - height: 25%; } - -.datepicker--years { - height: 170px; } - -.datepicker--cells-years { - height: 170px; } - -.datepicker--cell-year { - width: 25%; - height: 33.33%; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Datepicker - ------------------------------------------------- */ -.datepickers-container { - position: absolute; - left: 0; - top: 0; } - @media print { - .datepickers-container { - display: none; } } - -.datepicker { - background: #fff; - border: 1px solid #dbdbdb; - box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); - border-radius: 4px; - box-sizing: content-box; - font-family: Tahoma, sans-serif; - font-size: 14px; - color: #4a4a4a; - width: 250px; - position: absolute; - left: -100000px; - opacity: 0; - transition: opacity 0.3s ease, left 0s 0.3s, -webkit-transform 0.3s ease; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0.3s; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0.3s, -webkit-transform 0.3s ease; - z-index: 100; } - .datepicker.-from-top- { - -webkit-transform: translateY(-8px); - transform: translateY(-8px); } - .datepicker.-from-right- { - -webkit-transform: translateX(8px); - transform: translateX(8px); } - .datepicker.-from-bottom- { - -webkit-transform: translateY(8px); - transform: translateY(8px); } - .datepicker.-from-left- { - -webkit-transform: translateX(-8px); - transform: translateX(-8px); } - .datepicker.active { - opacity: 1; - -webkit-transform: translate(0); - transform: translate(0); - transition: opacity 0.3s ease, left 0s 0s, -webkit-transform 0.3s ease; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0s; - transition: opacity 0.3s ease, transform 0.3s ease, left 0s 0s, -webkit-transform 0.3s ease; } - -.datepicker-inline .datepicker { - border-color: #d7d7d7; - box-shadow: none; - position: static; - left: auto; - right: auto; - opacity: 1; - -webkit-transform: none; - transform: none; } - -.datepicker-inline .datepicker--pointer { - display: none; } - -.datepicker--content { - box-sizing: content-box; - padding: 4px; } - .-only-timepicker- .datepicker--content { - display: none; } - -.datepicker--pointer { - position: absolute; - background: #fff; - border-top: 1px solid #dbdbdb; - border-right: 1px solid #dbdbdb; - width: 10px; - height: 10px; - z-index: -1; } - .-top-left- .datepicker--pointer, .-top-center- .datepicker--pointer, .-top-right- .datepicker--pointer { - top: calc(100% - 4px); - -webkit-transform: rotate(135deg); - transform: rotate(135deg); } - .-right-top- .datepicker--pointer, .-right-center- .datepicker--pointer, .-right-bottom- .datepicker--pointer { - right: calc(100% - 4px); - -webkit-transform: rotate(225deg); - transform: rotate(225deg); } - .-bottom-left- .datepicker--pointer, .-bottom-center- .datepicker--pointer, .-bottom-right- .datepicker--pointer { - bottom: calc(100% - 4px); - -webkit-transform: rotate(315deg); - transform: rotate(315deg); } - .-left-top- .datepicker--pointer, .-left-center- .datepicker--pointer, .-left-bottom- .datepicker--pointer { - left: calc(100% - 4px); - -webkit-transform: rotate(45deg); - transform: rotate(45deg); } - .-top-left- .datepicker--pointer, .-bottom-left- .datepicker--pointer { - left: 10px; } - .-top-right- .datepicker--pointer, .-bottom-right- .datepicker--pointer { - right: 10px; } - .-top-center- .datepicker--pointer, .-bottom-center- .datepicker--pointer { - left: calc(50% - 10px / 2); } - .-left-top- .datepicker--pointer, .-right-top- .datepicker--pointer { - top: 10px; } - .-left-bottom- .datepicker--pointer, .-right-bottom- .datepicker--pointer { - bottom: 10px; } - .-left-center- .datepicker--pointer, .-right-center- .datepicker--pointer { - top: calc(50% - 10px / 2); } - -.datepicker--body { - display: none; } - .datepicker--body.active { - display: block; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Navigation - ------------------------------------------------- */ -.datepicker--nav { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-justify-content: space-between; - -ms-flex-pack: justify; - justify-content: space-between; - border-bottom: 1px solid #efefef; - min-height: 32px; - padding: 4px; } - .-only-timepicker- .datepicker--nav { - display: none; } - -.datepicker--nav-title, -.datepicker--nav-action { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - cursor: pointer; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; } - -.datepicker--nav-action { - width: 32px; - border-radius: 4px; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; } - .datepicker--nav-action:hover { - background: #f0f0f0; } - .datepicker--nav-action.-disabled- { - visibility: hidden; } - .datepicker--nav-action svg { - width: 32px; - height: 32px; } - .datepicker--nav-action path { - fill: none; - stroke: #9c9c9c; - stroke-width: 2px; } - -.datepicker--nav-title { - border-radius: 4px; - padding: 0 8px; } - .datepicker--nav-title i { - font-style: normal; - color: #9c9c9c; - margin-left: 5px; } - .datepicker--nav-title:hover { - background: #f0f0f0; } - .datepicker--nav-title.-disabled- { - cursor: default; - background: none; } - -.datepicker--buttons { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - padding: 4px; - border-top: 1px solid #efefef; } - -.datepicker--button { - color: #4EB5E6; - cursor: pointer; - border-radius: 4px; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - display: -webkit-inline-flex; - display: -ms-inline-flexbox; - display: inline-flex; - -webkit-justify-content: center; - -ms-flex-pack: center; - justify-content: center; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - height: 32px; } - .datepicker--button:hover { - color: #4a4a4a; - background: #f0f0f0; } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } - -/* ------------------------------------------------- - Timepicker - ------------------------------------------------- */ -.datepicker--time { - border-top: 1px solid #efefef; - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - padding: 4px; - position: relative; } - .datepicker--time.-am-pm- .datepicker--time-sliders { - -webkit-flex: 0 1 138px; - -ms-flex: 0 1 138px; - flex: 0 1 138px; - max-width: 138px; } - .-only-timepicker- .datepicker--time { - border-top: none; } - -.datepicker--time-sliders { - -webkit-flex: 0 1 153px; - -ms-flex: 0 1 153px; - flex: 0 1 153px; - margin-right: 10px; - max-width: 153px; } - -.datepicker--time-label { - display: none; - font-size: 12px; } - -.datepicker--time-current { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - font-size: 14px; - text-align: center; - margin: 0 0 0 10px; } - -.datepicker--time-current-colon { - margin: 0 2px 3px; - line-height: 1; } - -.datepicker--time-current-hours, -.datepicker--time-current-minutes { - line-height: 1; - font-size: 19px; - font-family: "Century Gothic", CenturyGothic, AppleGothic, sans-serif; - position: relative; - z-index: 1; } - .datepicker--time-current-hours:after, - .datepicker--time-current-minutes:after { - content: ''; - background: #f0f0f0; - border-radius: 4px; - position: absolute; - left: -2px; - top: -3px; - right: -2px; - bottom: -2px; - z-index: -1; - opacity: 0; } - .datepicker--time-current-hours.-focus-:after, - .datepicker--time-current-minutes.-focus-:after { - opacity: 1; } - -.datepicker--time-current-ampm { - text-transform: uppercase; - -webkit-align-self: flex-end; - -ms-flex-item-align: end; - align-self: flex-end; - color: #9c9c9c; - margin-left: 6px; - font-size: 11px; - margin-bottom: 1px; } - -.datepicker--time-row { - display: -webkit-flex; - display: -ms-flexbox; - display: flex; - -webkit-align-items: center; - -ms-flex-align: center; - align-items: center; - font-size: 11px; - height: 17px; - background: linear-gradient(to right, #dedede, #dedede) left 50%/100% 1px no-repeat; } - .datepicker--time-row:first-child { - margin-bottom: 4px; } - .datepicker--time-row input[type='range'] { - background: none; - cursor: pointer; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - height: 100%; - padding: 0; - margin: 0; - -webkit-appearance: none; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - -webkit-appearance: none; } - .datepicker--time-row input[type='range']::-ms-tooltip { - display: none; } - .datepicker--time-row input[type='range']:hover::-webkit-slider-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:hover::-moz-range-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:hover::-ms-thumb { - border-color: #b8b8b8; } - .datepicker--time-row input[type='range']:focus { - outline: none; } - .datepicker--time-row input[type='range']:focus::-webkit-slider-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']:focus::-moz-range-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']:focus::-ms-thumb { - background: #5cc4ef; - border-color: #5cc4ef; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-moz-range-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-ms-thumb { - box-sizing: border-box; - height: 12px; - width: 12px; - border-radius: 3px; - border: 1px solid #dedede; - background: #fff; - cursor: pointer; - transition: background .2s; } - .datepicker--time-row input[type='range']::-webkit-slider-thumb { - margin-top: -6px; } - .datepicker--time-row input[type='range']::-webkit-slider-runnable-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-moz-range-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-ms-track { - border: none; - height: 1px; - cursor: pointer; - color: transparent; - background: transparent; } - .datepicker--time-row input[type='range']::-ms-fill-lower { - background: transparent; } - .datepicker--time-row input[type='range']::-ms-fill-upper { - background: transparent; } - .datepicker--time-row span { - padding: 0 12px; } - -.datepicker--time-icon { - color: #9c9c9c; - border: 1px solid; - border-radius: 50%; - font-size: 16px; - position: relative; - margin: 0 5px -1px 0; - width: 1em; - height: 1em; } - .datepicker--time-icon:after, .datepicker--time-icon:before { - content: ''; - background: currentColor; - position: absolute; } - .datepicker--time-icon:after { - height: .4em; - width: 1px; - left: calc(50% - 1px); - top: calc(50% + 1px); - -webkit-transform: translateY(-100%); - transform: translateY(-100%); } - .datepicker--time-icon:before { - width: .4em; - height: 1px; - top: calc(50% + 1px); - left: calc(50% - 1px); } - -.datepicker--cell-day.-other-month-, .datepicker--cell-year.-other-decade- { - color: #dedede; } - .datepicker--cell-day.-other-month-:hover, .datepicker--cell-year.-other-decade-:hover { - color: #c5c5c5; } - .-disabled-.-focus-.datepicker--cell-day.-other-month-, .-disabled-.-focus-.datepicker--cell-year.-other-decade- { - color: #dedede; } - .-selected-.datepicker--cell-day.-other-month-, .-selected-.datepicker--cell-year.-other-decade- { - color: #fff; - background: #a2ddf6; } - .-selected-.-focus-.datepicker--cell-day.-other-month-, .-selected-.-focus-.datepicker--cell-year.-other-decade- { - background: #8ad5f4; } - .-in-range-.datepicker--cell-day.-other-month-, .-in-range-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.1); - color: #cccccc; } - .-in-range-.-focus-.datepicker--cell-day.-other-month-, .-in-range-.-focus-.datepicker--cell-year.-other-decade- { - background-color: rgba(92, 196, 239, 0.2); } - .datepicker--cell-day.-other-month-:empty, .datepicker--cell-year.-other-decade-:empty { - background: none; - border: none; } diff --git a/punch_list/public/css/datepicker.min.css b/punch_list/public/css/datepicker.min.css deleted file mode 100644 index bc3cd6c..0000000 --- a/punch_list/public/css/datepicker.min.css +++ /dev/null @@ -1 +0,0 @@ -.datepicker--cells{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.datepicker--cell{border-radius:4px;box-sizing:border-box;cursor:pointer;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:32px;z-index:1}.datepicker--cell.-focus-{background:#f0f0f0}.datepicker--cell.-current-{color:#4EB5E6}.datepicker--cell.-current-.-focus-{color:#4a4a4a}.datepicker--cell.-current-.-in-range-{color:#4EB5E6}.datepicker--cell.-in-range-{background:rgba(92,196,239,.1);color:#4a4a4a;border-radius:0}.datepicker--cell.-in-range-.-focus-{background-color:rgba(92,196,239,.2)}.datepicker--cell.-disabled-{cursor:default;color:#aeaeae}.datepicker--cell.-disabled-.-focus-{color:#aeaeae}.datepicker--cell.-disabled-.-in-range-{color:#a1a1a1}.datepicker--cell.-disabled-.-current-.-focus-{color:#aeaeae}.datepicker--cell.-range-from-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:4px 0 0 4px}.datepicker--cell.-range-to-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:0 4px 4px 0}.datepicker--cell.-selected-,.datepicker--cell.-selected-.-current-{color:#fff;background:#5cc4ef}.datepicker--cell.-range-from-.-range-to-{border-radius:4px}.datepicker--cell.-selected-{border:none}.datepicker--cell.-selected-.-focus-{background:#45bced}.datepicker--cell:empty{cursor:default}.datepicker--days-names{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:8px 0 3px}.datepicker--day-name{color:#FF9A19;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex:1;-ms-flex:1;flex:1;text-align:center;text-transform:uppercase;font-size:.8em}.-only-timepicker- .datepicker--content,.datepicker--body,.datepicker-inline .datepicker--pointer{display:none}.datepicker--cell-day{width:14.28571%}.datepicker--cells-months{height:170px}.datepicker--cell-month{width:33.33%;height:25%}.datepicker--cells-years,.datepicker--years{height:170px}.datepicker--cell-year{width:25%;height:33.33%}.datepickers-container{position:absolute;left:0;top:0}@media print{.datepickers-container{display:none}}.datepicker{background:#fff;border:1px solid #dbdbdb;box-shadow:0 4px 12px rgba(0,0,0,.15);border-radius:4px;box-sizing:content-box;font-family:Tahoma,sans-serif;font-size:14px;color:#4a4a4a;width:250px;position:absolute;left:-100000px;opacity:0;transition:opacity .3s ease,left 0s .3s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s .3s;transition:opacity .3s ease,transform .3s ease,left 0s .3s,-webkit-transform .3s ease;z-index:100}.datepicker.-from-top-{-webkit-transform:translateY(-8px);transform:translateY(-8px)}.datepicker.-from-right-{-webkit-transform:translateX(8px);transform:translateX(8px)}.datepicker.-from-bottom-{-webkit-transform:translateY(8px);transform:translateY(8px)}.datepicker.-from-left-{-webkit-transform:translateX(-8px);transform:translateX(-8px)}.datepicker.active{opacity:1;-webkit-transform:translate(0);transform:translate(0);transition:opacity .3s ease,left 0s 0s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s 0s;transition:opacity .3s ease,transform .3s ease,left 0s 0s,-webkit-transform .3s ease}.datepicker-inline .datepicker{border-color:#d7d7d7;box-shadow:none;position:static;left:auto;right:auto;opacity:1;-webkit-transform:none;transform:none}.datepicker--content{box-sizing:content-box;padding:4px}.datepicker--pointer{position:absolute;background:#fff;border-top:1px solid #dbdbdb;border-right:1px solid #dbdbdb;width:10px;height:10px;z-index:-1}.datepicker--nav-action:hover,.datepicker--nav-title:hover{background:#f0f0f0}.-top-center- .datepicker--pointer,.-top-left- .datepicker--pointer,.-top-right- .datepicker--pointer{top:calc(100% - 4px);-webkit-transform:rotate(135deg);transform:rotate(135deg)}.-right-bottom- .datepicker--pointer,.-right-center- .datepicker--pointer,.-right-top- .datepicker--pointer{right:calc(100% - 4px);-webkit-transform:rotate(225deg);transform:rotate(225deg)}.-bottom-center- .datepicker--pointer,.-bottom-left- .datepicker--pointer,.-bottom-right- .datepicker--pointer{bottom:calc(100% - 4px);-webkit-transform:rotate(315deg);transform:rotate(315deg)}.-left-bottom- .datepicker--pointer,.-left-center- .datepicker--pointer,.-left-top- .datepicker--pointer{left:calc(100% - 4px);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.-bottom-left- .datepicker--pointer,.-top-left- .datepicker--pointer{left:10px}.-bottom-right- .datepicker--pointer,.-top-right- .datepicker--pointer{right:10px}.-bottom-center- .datepicker--pointer,.-top-center- .datepicker--pointer{left:calc(50% - 10px / 2)}.-left-top- .datepicker--pointer,.-right-top- .datepicker--pointer{top:10px}.-left-bottom- .datepicker--pointer,.-right-bottom- .datepicker--pointer{bottom:10px}.-left-center- .datepicker--pointer,.-right-center- .datepicker--pointer{top:calc(50% - 10px / 2)}.datepicker--body.active{display:block}.datepicker--nav{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #efefef;min-height:32px;padding:4px}.-only-timepicker- .datepicker--nav{display:none}.datepicker--nav-action,.datepicker--nav-title{display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.datepicker--nav-action{width:32px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker--nav-action.-disabled-{visibility:hidden}.datepicker--nav-action svg{width:32px;height:32px}.datepicker--nav-action path{fill:none;stroke:#9c9c9c;stroke-width:2px}.datepicker--nav-title{border-radius:4px;padding:0 8px}.datepicker--buttons,.datepicker--time{border-top:1px solid #efefef;padding:4px}.datepicker--nav-title i{font-style:normal;color:#9c9c9c;margin-left:5px}.datepicker--nav-title.-disabled-{cursor:default;background:0 0}.datepicker--buttons{display:-webkit-flex;display:-ms-flexbox;display:flex}.datepicker--button{color:#4EB5E6;cursor:pointer;border-radius:4px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:32px}.datepicker--button:hover{color:#4a4a4a;background:#f0f0f0}.datepicker--time{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;position:relative}.datepicker--time.-am-pm- .datepicker--time-sliders{-webkit-flex:0 1 138px;-ms-flex:0 1 138px;flex:0 1 138px;max-width:138px}.-only-timepicker- .datepicker--time{border-top:none}.datepicker--time-sliders{-webkit-flex:0 1 153px;-ms-flex:0 1 153px;flex:0 1 153px;margin-right:10px;max-width:153px}.datepicker--time-label{display:none;font-size:12px}.datepicker--time-current{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;font-size:14px;text-align:center;margin:0 0 0 10px}.datepicker--time-current-colon{margin:0 2px 3px;line-height:1}.datepicker--time-current-hours,.datepicker--time-current-minutes{line-height:1;font-size:19px;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.datepicker--time-current-hours:after,.datepicker--time-current-minutes:after{content:'';background:#f0f0f0;border-radius:4px;position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.datepicker--time-current-hours.-focus-:after,.datepicker--time-current-minutes.-focus-:after{opacity:1}.datepicker--time-current-ampm{text-transform:uppercase;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;color:#9c9c9c;margin-left:6px;font-size:11px;margin-bottom:1px}.datepicker--time-row{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right,#dedede,#dedede) left 50%/100% 1px no-repeat}.datepicker--time-row:first-child{margin-bottom:4px}.datepicker--time-row input[type=range]{background:0 0;cursor:pointer;-webkit-flex:1;-ms-flex:1;flex:1;height:100%;padding:0;margin:0;-webkit-appearance:none}.datepicker--time-row input[type=range]::-ms-tooltip{display:none}.datepicker--time-row input[type=range]:hover::-webkit-slider-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-moz-range-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-ms-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:focus{outline:0}.datepicker--time-row input[type=range]:focus::-webkit-slider-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-moz-range-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-ms-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s;margin-top:-6px}.datepicker--time-row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-webkit-slider-runnable-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-moz-range-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-fill-lower{background:0 0}.datepicker--time-row input[type=range]::-ms-fill-upper{background:0 0}.datepicker--time-row span{padding:0 12px}.datepicker--time-icon{color:#9c9c9c;border:1px solid;border-radius:50%;font-size:16px;position:relative;margin:0 5px -1px 0;width:1em;height:1em}.datepicker--time-icon:after,.datepicker--time-icon:before{content:'';background:currentColor;position:absolute}.datepicker--time-icon:after{height:.4em;width:1px;left:calc(50% - 1px);top:calc(50% + 1px);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.datepicker--time-icon:before{width:.4em;height:1px;top:calc(50% + 1px);left:calc(50% - 1px)}.datepicker--cell-day.-other-month-,.datepicker--cell-year.-other-decade-{color:#dedede}.datepicker--cell-day.-other-month-:hover,.datepicker--cell-year.-other-decade-:hover{color:#c5c5c5}.-disabled-.-focus-.datepicker--cell-day.-other-month-,.-disabled-.-focus-.datepicker--cell-year.-other-decade-{color:#dedede}.-selected-.datepicker--cell-day.-other-month-,.-selected-.datepicker--cell-year.-other-decade-{color:#fff;background:#a2ddf6}.-selected-.-focus-.datepicker--cell-day.-other-month-,.-selected-.-focus-.datepicker--cell-year.-other-decade-{background:#8ad5f4}.-in-range-.datepicker--cell-day.-other-month-,.-in-range-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.1);color:#ccc}.-in-range-.-focus-.datepicker--cell-day.-other-month-,.-in-range-.-focus-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.2)}.datepicker--cell-day.-other-month-:empty,.datepicker--cell-year.-other-decade-:empty{background:0 0;border:none} \ No newline at end of file diff --git a/punch_list/public/css/normalize.css b/punch_list/public/css/normalize.css deleted file mode 100644 index 81c6f31..0000000 --- a/punch_list/public/css/normalize.css +++ /dev/null @@ -1,427 +0,0 @@ -/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ - -/** - * 1. Set default font family to sans-serif. - * 2. Prevent iOS text size adjust after orientation change, without disabling - * user zoom. - */ - -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** - * Remove default margin. - */ - -body { - margin: 0; -} - -/* HTML5 display definitions - ========================================================================== */ - -/** - * Correct `block` display not defined for any HTML5 element in IE 8/9. - * Correct `block` display not defined for `details` or `summary` in IE 10/11 - * and Firefox. - * Correct `block` display not defined for `main` in IE 11. - */ - -article, -aside, -details, -figcaption, -figure, -footer, -header, -hgroup, -main, -menu, -nav, -section, -summary { - display: block; -} - -/** - * 1. Correct `inline-block` display not defined in IE 8/9. - * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. - */ - -audio, -canvas, -progress, -video { - display: inline-block; /* 1 */ - vertical-align: baseline; /* 2 */ -} - -/** - * Prevent modern browsers from displaying `audio` without controls. - * Remove excess height in iOS 5 devices. - */ - -audio:not([controls]) { - display: none; - height: 0; -} - -/** - * Address `[hidden]` styling not present in IE 8/9/10. - * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. - */ - -[hidden], -template { - display: none; -} - -/* Links - ========================================================================== */ - -/** - * Remove the gray background color from active links in IE 10. - */ - -a { - background-color: transparent; -} - -/** - * Improve readability when focused and also mouse hovered in all browsers. - */ - -a:active, -a:hover { - outline: 0; -} - -/* Text-level semantics - ========================================================================== */ - -/** - * Address styling not present in IE 8/9/10/11, Safari, and Chrome. - */ - -abbr[title] { - border-bottom: 1px dotted; -} - -/** - * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. - */ - -b, -strong { - font-weight: bold; -} - -/** - * Address styling not present in Safari and Chrome. - */ - -dfn { - font-style: italic; -} - -/** - * Address variable `h1` font-size and margin within `section` and `article` - * contexts in Firefox 4+, Safari, and Chrome. - */ - -h1 { - font-size: 2em; - margin: 0.67em 0; -} - -/** - * Address styling not present in IE 8/9. - */ - -mark { - background: #ff0; - color: #000; -} - -/** - * Address inconsistent and variable font size in all browsers. - */ - -small { - font-size: 80%; -} - -/** - * Prevent `sub` and `sup` affecting `line-height` in all browsers. - */ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* Embedded content - ========================================================================== */ - -/** - * Remove border when inside `a` element in IE 8/9/10. - */ - -img { - border: 0; -} - -/** - * Correct overflow not hidden in IE 9/10/11. - */ - -svg:not(:root) { - overflow: hidden; -} - -/* Grouping content - ========================================================================== */ - -/** - * Address margin not present in IE 8/9 and Safari. - */ - -figure { - margin: 1em 40px; -} - -/** - * Address differences between Firefox and other browsers. - */ - -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** - * Contain overflow in all browsers. - */ - -pre { - overflow: auto; -} - -/** - * Address odd `em`-unit font size rendering in all browsers. - */ - -code, -kbd, -pre, -samp { - font-family: monospace, monospace; - font-size: 1em; -} - -/* Forms - ========================================================================== */ - -/** - * Known limitation: by default, Chrome and Safari on OS X allow very limited - * styling of `select`, unless a `border` property is set. - */ - -/** - * 1. Correct color not being inherited. - * Known issue: affects color of disabled elements. - * 2. Correct font properties not being inherited. - * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. - */ - -button, -input, -optgroup, -select, -textarea { - color: inherit; /* 1 */ - font: inherit; /* 2 */ - margin: 0; /* 3 */ -} - -/** - * Address `overflow` set to `hidden` in IE 8/9/10/11. - */ - -button { - overflow: visible; -} - -/** - * Address inconsistent `text-transform` inheritance for `button` and `select`. - * All other form control elements do not inherit `text-transform` values. - * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. - * Correct `select` style inheritance in Firefox. - */ - -button, -select { - text-transform: none; -} - -/** - * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` - * and `video` controls. - * 2. Correct inability to style clickable `input` types in iOS. - * 3. Improve usability and consistency of cursor style between image-type - * `input` and others. - */ - -button, -html input[type="button"], /* 1 */ -input[type="reset"], -input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** - * Re-set default cursor for disabled elements. - */ - -button[disabled], -html input[disabled] { - cursor: default; -} - -/** - * Remove inner padding and border in Firefox 4+. - */ - -button::-moz-focus-inner, -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** - * Address Firefox 4+ setting `line-height` on `input` using `!important` in - * the UA stylesheet. - */ - -input { - line-height: normal; -} - -/** - * It's recommended that you don't attempt to style these elements. - * Firefox's implementation doesn't respect box-sizing, padding, or width. - * - * 1. Address box sizing set to `content-box` in IE 8/9/10. - * 2. Remove excess padding in IE 8/9/10. - */ - -input[type="checkbox"], -input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Fix the cursor style for Chrome's increment/decrement buttons. For certain - * `font-size` values of the `input`, it causes the cursor style of the - * decrement button to change from `default` to `text`. - */ - -input[type="number"]::-webkit-inner-spin-button, -input[type="number"]::-webkit-outer-spin-button { - height: auto; -} - -/** - * 1. Address `appearance` set to `searchfield` in Safari and Chrome. - * 2. Address `box-sizing` set to `border-box` in Safari and Chrome - * (include `-moz` to future-proof). - */ - -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** - * Remove inner padding and search cancel button in Safari and Chrome on OS X. - * Safari (but not Chrome) clips the cancel button when the search input has - * padding (and `textfield` appearance). - */ - -input[type="search"]::-webkit-search-cancel-button, -input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** - * Define consistent border, margin, and padding. - */ - -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** - * 1. Correct `color` not being inherited in IE 8/9/10/11. - * 2. Remove padding so people aren't caught out if they zero out fieldsets. - */ - -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** - * Remove default vertical scrollbar in IE 8/9/10/11. - */ - -textarea { - overflow: auto; -} - -/** - * Don't inherit the `font-weight` (applied by a rule above). - * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. - */ - -optgroup { - font-weight: bold; -} - -/* Tables - ========================================================================== */ - -/** - * Remove most spacing between table cells. - */ - -table { - border-collapse: collapse; - border-spacing: 0; -} - -td, -th { - padding: 0; -} \ No newline at end of file diff --git a/punch_list/public/css/skeleton.css b/punch_list/public/css/skeleton.css deleted file mode 100644 index f28bf6c..0000000 --- a/punch_list/public/css/skeleton.css +++ /dev/null @@ -1,418 +0,0 @@ -/* -* Skeleton V2.0.4 -* Copyright 2014, Dave Gamache -* www.getskeleton.com -* Free to use under the MIT license. -* http://www.opensource.org/licenses/mit-license.php -* 12/29/2014 -*/ - - -/* Table of contents -–––––––––––––––––––––––––––––––––––––––––––––––––– -- Grid -- Base Styles -- Typography -- Links -- Buttons -- Forms -- Lists -- Code -- Tables -- Spacing -- Utilities -- Clearing -- Media Queries -*/ - - -/* Grid -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.container { - position: relative; - width: 100%; - max-width: 960px; - margin: 0 auto; - padding: 0 20px; - box-sizing: border-box; } -.column, -.columns { - width: 100%; - float: left; - box-sizing: border-box; } - -/* For devices larger than 400px */ -@media (min-width: 400px) { - .container { - width: 85%; - padding: 0; } -} - -/* For devices larger than 550px */ -@media (min-width: 550px) { - .container { - width: 80%; } - .column, - .columns { - margin-left: 4%; } - .column:first-child, - .columns:first-child { - margin-left: 0; } - - .one.column, - .one.columns { width: 4.66666666667%; } - .two.columns { width: 13.3333333333%; } - .three.columns { width: 22%; } - .four.columns { width: 30.6666666667%; } - .five.columns { width: 39.3333333333%; } - .six.columns { width: 48%; } - .seven.columns { width: 56.6666666667%; } - .eight.columns { width: 65.3333333333%; } - .nine.columns { width: 74.0%; } - .ten.columns { width: 82.6666666667%; } - .eleven.columns { width: 91.3333333333%; } - .twelve.columns { width: 100%; margin-left: 0; } - - .one-third.column { width: 30.6666666667%; } - .two-thirds.column { width: 65.3333333333%; } - - .one-half.column { width: 48%; } - - /* Offsets */ - .offset-by-one.column, - .offset-by-one.columns { margin-left: 8.66666666667%; } - .offset-by-two.column, - .offset-by-two.columns { margin-left: 17.3333333333%; } - .offset-by-three.column, - .offset-by-three.columns { margin-left: 26%; } - .offset-by-four.column, - .offset-by-four.columns { margin-left: 34.6666666667%; } - .offset-by-five.column, - .offset-by-five.columns { margin-left: 43.3333333333%; } - .offset-by-six.column, - .offset-by-six.columns { margin-left: 52%; } - .offset-by-seven.column, - .offset-by-seven.columns { margin-left: 60.6666666667%; } - .offset-by-eight.column, - .offset-by-eight.columns { margin-left: 69.3333333333%; } - .offset-by-nine.column, - .offset-by-nine.columns { margin-left: 78.0%; } - .offset-by-ten.column, - .offset-by-ten.columns { margin-left: 86.6666666667%; } - .offset-by-eleven.column, - .offset-by-eleven.columns { margin-left: 95.3333333333%; } - - .offset-by-one-third.column, - .offset-by-one-third.columns { margin-left: 34.6666666667%; } - .offset-by-two-thirds.column, - .offset-by-two-thirds.columns { margin-left: 69.3333333333%; } - - .offset-by-one-half.column, - .offset-by-one-half.columns { margin-left: 52%; } - -} - - -/* Base Styles -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -/* NOTE -html is set to 62.5% so that all the REM measurements throughout Skeleton -are based on 10px sizing. So basically 1.5rem = 15px :) */ -html { - font-size: 62.5%; } -body { - font-size: 1.5em; /* currently ems cause chrome bug misinterpreting rems on body element */ - line-height: 1.6; - font-weight: 400; - font-family: "Raleway", "HelveticaNeue", "Helvetica Neue", Helvetica, Arial, sans-serif; - color: #222; } - - -/* Typography -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -h1, h2, h3, h4, h5, h6 { - margin-top: 0; - margin-bottom: 2rem; - font-weight: 300; } -h1 { font-size: 4.0rem; line-height: 1.2; letter-spacing: -.1rem;} -h2 { font-size: 3.6rem; line-height: 1.25; letter-spacing: -.1rem; } -h3 { font-size: 3.0rem; line-height: 1.3; letter-spacing: -.1rem; } -h4 { font-size: 2.4rem; line-height: 1.35; letter-spacing: -.08rem; } -h5 { font-size: 1.8rem; line-height: 1.5; letter-spacing: -.05rem; } -h6 { font-size: 1.5rem; line-height: 1.6; letter-spacing: 0; } - -/* Larger than phablet */ -@media (min-width: 550px) { - h1 { font-size: 5.0rem; } - h2 { font-size: 4.2rem; } - h3 { font-size: 3.6rem; } - h4 { font-size: 3.0rem; } - h5 { font-size: 2.4rem; } - h6 { font-size: 1.5rem; } -} - -p { - margin-top: 0; } - - -/* Links -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -a { - color: #1EAEDB; } -a:hover { - color: #0FA0CE; } - - -/* Buttons -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.button, -button, -input[type="submit"], -input[type="reset"], -input[type="button"] { - display: inline-block; - height: 38px; - padding: 0 30px; - color: #555; - text-align: center; - font-size: 11px; - font-weight: 600; - line-height: 38px; - letter-spacing: .1rem; - text-transform: uppercase; - text-decoration: none; - white-space: nowrap; - background-color: transparent; - border-radius: 4px; - border: 1px solid #bbb; - cursor: pointer; - box-sizing: border-box; } -.button:hover, -button:hover, -input[type="submit"]:hover, -input[type="reset"]:hover, -input[type="button"]:hover, -.button:focus, -button:focus, -input[type="submit"]:focus, -input[type="reset"]:focus, -input[type="button"]:focus { - color: #333; - border-color: #888; - outline: 0; } -.button.button-primary, -button.button-primary, -input[type="submit"].button-primary, -input[type="reset"].button-primary, -input[type="button"].button-primary { - color: #FFF; - background-color: #33C3F0; - border-color: #33C3F0; } -.button.button-primary:hover, -button.button-primary:hover, -input[type="submit"].button-primary:hover, -input[type="reset"].button-primary:hover, -input[type="button"].button-primary:hover, -.button.button-primary:focus, -button.button-primary:focus, -input[type="submit"].button-primary:focus, -input[type="reset"].button-primary:focus, -input[type="button"].button-primary:focus { - color: #FFF; - background-color: #1EAEDB; - border-color: #1EAEDB; } - - -/* Forms -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -input[type="email"], -input[type="number"], -input[type="search"], -input[type="text"], -input[type="tel"], -input[type="url"], -input[type="password"], -textarea, -select { - height: 38px; - padding: 6px 10px; /* The 6px vertically centers text on FF, ignored by Webkit */ - background-color: #fff; - border: 1px solid #D1D1D1; - border-radius: 4px; - box-shadow: none; - box-sizing: border-box; } -/* Removes awkward default styles on some inputs for iOS */ -input[type="email"], -input[type="number"], -input[type="search"], -input[type="text"], -input[type="tel"], -input[type="url"], -input[type="password"], -textarea { - -webkit-appearance: none; - -moz-appearance: none; - appearance: none; } -textarea { - min-height: 65px; - padding-top: 6px; - padding-bottom: 6px; } -input[type="email"]:focus, -input[type="number"]:focus, -input[type="search"]:focus, -input[type="text"]:focus, -input[type="tel"]:focus, -input[type="url"]:focus, -input[type="password"]:focus, -textarea:focus, -select:focus { - border: 1px solid #33C3F0; - outline: 0; } -label, -legend { - display: block; - margin-bottom: .5rem; - font-weight: 600; } -fieldset { - padding: 0; - border-width: 0; } -input[type="checkbox"], -input[type="radio"] { - display: inline; } -label > .label-body { - display: inline-block; - margin-left: .5rem; - font-weight: normal; } - - -/* Lists -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -ul { - list-style: circle inside; } -ol { - list-style: decimal inside; } -ol, ul { - padding-left: 0; - margin-top: 0; } -ul ul, -ul ol, -ol ol, -ol ul { - margin: 1.5rem 0 1.5rem 3rem; - font-size: 90%; } -li { - margin-bottom: 1rem; } - - -/* Code -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -code { - padding: .2rem .5rem; - margin: 0 .2rem; - font-size: 90%; - white-space: nowrap; - background: #F1F1F1; - border: 1px solid #E1E1E1; - border-radius: 4px; } -pre > code { - display: block; - padding: 1rem 1.5rem; - white-space: pre; } - - -/* Tables -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -th, -td { - padding: 12px 15px; - text-align: left; - border-bottom: 1px solid #E1E1E1; } -th:first-child, -td:first-child { - padding-left: 0; } -th:last-child, -td:last-child { - padding-right: 0; } - - -/* Spacing -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -button, -.button { - margin-bottom: 1rem; } -input, -textarea, -select, -fieldset { - margin-bottom: 1.5rem; } -pre, -blockquote, -dl, -figure, -table, -p, -ul, -ol, -form { - margin-bottom: 2.5rem; } - - -/* Utilities -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -.u-full-width { - width: 100%; - box-sizing: border-box; } -.u-max-full-width { - max-width: 100%; - box-sizing: border-box; } -.u-pull-right { - float: right; } -.u-pull-left { - float: left; } - - -/* Misc -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -hr { - margin-top: 3rem; - margin-bottom: 3.5rem; - border-width: 0; - border-top: 1px solid #E1E1E1; } - - -/* Clearing -–––––––––––––––––––––––––––––––––––––––––––––––––– */ - -/* Self Clearing Goodness */ -.container:after, -.row:after, -.u-cf { - content: ""; - display: table; - clear: both; } - - -/* Media Queries -–––––––––––––––––––––––––––––––––––––––––––––––––– */ -/* -Note: The best way to structure the use of media queries is to create the queries -near the relevant code. For example, if you wanted to change the styles for buttons -on small devices, paste the mobile query code up in the buttons section and style it -there. -*/ - - -/* Larger than mobile */ -@media (min-width: 400px) {} - -/* Larger than phablet (also point when grid becomes active) */ -@media (min-width: 550px) {} - -/* Larger than tablet */ -@media (min-width: 750px) {} - -/* Larger than desktop */ -@media (min-width: 1000px) {} - -/* Larger than Desktop HD */ -@media (min-width: 1200px) {} diff --git a/punch_list/public/images/down-carrot.png b/punch_list/public/images/down-carrot.png deleted file mode 100644 index 4864847d0cd70bd49073c0764f1d5a663eeae9e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5520 zcmdT|c~Dc?(vK0uh=Ll$QIsGfVMag{*#(IRBxC~t6+}P<#f2q`EQ)Z68wx7p0vHld zL2y)*0J6&J3bI5IA;=aN%phSGLITNs=K?eJ>Z|Y7H}CuB)uU4M=|0`R{`Ki|Q+;#M ziB4QFZ^b+m3bnw2Wb2GVp}`W3nmZea=b3A&fs*V*b+rSktu5hie&}?%g9D97b|8_- z4ipNBOm&!AOs#>1My67cHH8A)z@LMI16WTPfgRa$AXC791c5{%5{bwb0HIK$qoW;= zSmZ+>5XfX2SO9Ja6oqPFphrO#;6nzGNL~u!KysjL-3pw^NGwQ4p#s3E5DI`tn2@PN zqWxca?d@%6$dIW>3J^l0k*Ek^5 zsn!FAz=2F5PIn5lo~IR3s?g?X}XWohk&#gIY!Ecq!s<( z2DBe{rn{hKp=T>7&QY3+nWsEoMRl2l*D>bBxN~RYPMr|wb*-YllsMy>$V5K>uoK*=C@_dY(KjzDo?Hy9fUuADR1mwRT8yXkrCZsYqP)TQQn>ejp{y^mYb!A-2yJt#=2FZ05W? z9q*>67I$?^j-WPOPa{6bt~%PSnfIl;yL)Kv@`bfh$t7E@4L{q=d665H`up#{lWeP_ zZ!R16Iex&9#aUi2-M|V|yLee#aI?+(Gp6=wWTbpJ8q?xR|S{2ZWal3B8=U>q2af3O~1RT z87><)Hl*i-bL8*bPKq{p8||=%8G77raj*WsC7-(zqX+S_Ha1xHih>_JkO|UD9%N>o z&uYpl2pr=S3sYYm(c%f~*cE#|rQLD4M^CXZz9G|O+lO{amg$vq$K^?So;!G~r*FO| z>3cd;;RTmz^_=3itm6AQcSv%NT}i>^i}}ONiCW`99y!-W5}xgN?6&levNOp ztW6Tnmjo62>I-$_JWsY-#NpTQ6*6CmE23r#b>jovtnb4jJYzSk-e&H7F)Q-R8o55Z z5@g7rHkaOCNZX_D_iNIJ)F^CGbl#0RHBKP58iJp>_w^Vv*=Cd;|MxvcOm&IO(eg<7 zsqZww$;a>#?v;9%0JKLDoPOFfCoq;K(B@>QgmyP2SAJ-RcRp)=oJz*>UyWEB``5cR zoZZO?JjsuplofJerx!a4zIL2_ax5^}?MS&?oe$sNSF1kk|7?Z1sb|&(9-ezK`2EY| z;UnlIF1+(qa`u~tnB8xR5BcmAeo$EVrTt0Hk>NvV;fLVBk8Z;J6GqGtbJIxwqZ%{; zx`Bp!x-K5iSS`$q*RM;*d>zFt$+a7!3G^ChKeP9DD5O>uAMy=;#ID?EZhG1ON(eSw zO_+JLz910I`_^uhYtf4zTnSts<_Fq5Ff+YeR|q8VMC2)8A9=*qycPVu`cyBzP6+%D z_u}6oa_x*<@h{|``!oKAT_uu!2GXOl^l#Owi^E%O>?c!v}6-Zm|PH!$m+ifGm}KH5Q#!ar5R4k zTmV0}mal-w3w8e&oBzS}zmZ&>1V8A5%bs{K%6h%PwDb6TnrSB^a_|l_GWTI=7T88BUN3_G5X zy-yN<()*!-M3_}e6STaWjOa8a%guWkSboPGVb{a~$NOD=s{+xzgJ7qSEZYor#sdg& zXV~<*NbzljxWl=EXVI>pB^8(N{4REnVOKtimX{5v=3wf$IFwWzRgGudkj(|2J|@g` zNQ$`)dj$Dm&Bn%m|k;X5uIM4_C(*f}; zNqi>{|8`Fsu5t+0WLK`t3Q~%NV=PXjRPN4#bkD;vo5E8n+x`92Ps7BMz&gZVhl1k+ zzl5M)`*}*mXTwG;m{@MA)koPtcL-X?H*(YQiLREKUIluc6!%^PK}y+Jv*nu@PTBC* zvQoO>t4JeXt{Md51Na8{{g{DoA?QbLJdG5&c-VrOsK;1)yBaR1d+EGQ9Mu)Q5Qhy~ zFvtAAx)QEV#qZhdpJWKf6b@N1B{}OnBc444oGjgW8nmhS6M5yYN5{KbdZMADVwI@R z4*GI&SdqZHv+Rs&d&YD4j+f4)a%tFLw(GccY5f9t@xZF~jJ=NIQN&3~X&6J`O2~qh zJckU1JFC*~q4&wGT?b+zmRLo@eCfho_*1Cgq;gr2x}qsUX<)Gke&@aE ztGB4^%+s&^80+q9P>xuo|HQ5bupejGK-^iy+pO~*9vP)emYo_9=xAV1I9>=XoTQY8 z4WchoHNi zR&XQWU9tTNoZhD*T?P#ZQUaVOgL*=bMtx2uoatNq8RjboHaPCa9^`ga^RXI?_Z5}+ z^>qamzf{4u)8*PG%)MixFZ~m|T_`hSYbNb>6?z#qqzP(9S3Z(B_@fsT@M*Ma6WPbXn-RxU+;Hr488vx`)-iN{c`S~82F2x;ht>6QAX=u@R>mn3`5#`J# zoEZ%Yc@HsW2|iE0Fk#MVD}G}KS1CqcAGzM9utHR*B2`_7YUkV%06=kZp^l}X1bPP^ ztpMnwF?^k7UF%R-;V+ueRUk;M z6X;1B<+GJhNiB|zAb&`4u8yVVvx-T;?BrO{C&=kMqzE#M_A#npKDu&9wow8KmwG2h z!9L2U7O~?}Bj%h4iQxDI&I47nS$8Se^Utg(ZCBy=r73@x{PqWPB2}aDli6L=0 z*CudFzIs!@F;uxQohNXfs0%j}t^r4%d+3ZY>k`y&8+7#nh~bR7&`{SHsB~%^{7y0Y zhI`K;^n%c17Gr0X&PrOEK)t-w#tGbwZ{FJhWMp>YN9e#T%|E(gGXZ3_mHRH3r5Jrz zOx_MKR95O`z;$RslV8STgqgt|L~9Py-j5_m40H@9q(LE|T17|2*j~u#E))rr%PI4g zw7}J9LNZXNc)c98&P6R0dhZ1{<&z8ZvlQo!svgPC0X@H%HUX5mKeCYvP_qy8{K9B< z9%g=CsuF_u7|H;MW%At{WU2-zU+K<|psg2m;)GE6EX}5hX28lIdu<~8Nin*q`1b%% zX&Ol$vkY}im{x!QeimU=tH-j70AP*_(?*J0((fG%>SiH|wX;Ec#Ww)){2uz;59orLRurvE(LJv=i0FvP6F=;fY9cx$APyjkbf{mZh7#z zVd$>c8E6#5dqvz|FOM&HIGA05+$J?27jZ>~M+_7VGU?0{!2F}y@Z?k}xvfIG_8%D#a3h?j5RvY?(Hs(e6`#E6 zm~8Pdgt{tZs{{keT?)yfF~~?h;tiMgS;KuV#wXHDnS=AoF}8mG=&I#x0^=2aAtwi; z@c&f7#5FxD?FCrKtaSCCc*Uxz{iGT*m0(*($T&-MX^ZeS<| zhGO7hQd@$d-g;f!;}d7ui{}o5VISx5hr1~=VHqP(%184`Fj>3n!1jn$FMfUGUMped zW;RXy8YF?y1QLin(ck|DnzDGVOW}dtGzs8XTP3@}jtBA59_=Prup}!qsN- zvh&>>Hol;AbrL+3OyG@_?r5N4kJR@-rTDiamf8EYg_$vrPU$4U;Fj}7EQ1t*UdFD4 z$7#2PCsGT)Ycup%GTzt``yr!y7-Y4i8p5aR? z3Y_hCpXoWo?14Vx*XQYQ%Tw}h@GMN&a-BnHV#_6UwmGFo1mV67TDxP-q^z8ac{dt1 zzv+f@@eGl9J}1LJlun1Q8#9?gJ%OHfp7ODYTUnU-^3udSSMfmC7&Ux6=RPZMiBvX_ zZZj@UOA2EoYPCQ(wO3Hdv5}>m>`K|K`g6nH?#2CY@;TXD87#K`g##aN@+dn$vNS|4 z_S(Ni7Li)GPg|&a?$IgJfFA38eO)8FcC}(+_tbiH<@^9u-Rw1=dKu21dKq4QxED&p zGdRNCA*04AoZ>tf4r*=GRvYLJr3s2EgdbnF=BYu5N&SyvMv+zwf%?TQ~YmK z{XBnk%@e~mu>3VI5M6WJZ~`nhv9mC1TzF=xQlaG^P&lNSLXQ!jt#Qp0$*Nq}F73qP zUFvgrO4n+9!yRu@jcYA%bXQl`HCny|y`njn>PTxA-?7?j*sb?g!TvM&E#xod&F7(T z_i>@`8{}6GwYZo2?ieWgO5ML{FS=--eswU(#t=0Iy?U7Zlo`775cu&5 - - - - - - - - - - - Punch List - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
-
-
 
-
STATS
-
 
-
-
- -
- -
-
-
- - Punches -
-
    -
    - -
    -
    - -
    - - - - - - Notes:
    - - - -
    - - -
    - -
    -
    -
    -
    -
    - - -
    - - diff --git a/punch_list/public/index1.html b/punch_list/public/index1.html deleted file mode 100644 index f3078bd..0000000 --- a/punch_list/public/index1.html +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - - - - - - - - - Google Sign In Example - - - - - - - - - - - - - - - - - - - - - -
    - - -
    - -
    - -
    -
    - - -
    -
    -

    Google Authentication with OAuth Credentials

    -
    -
    -

    Sign in with your Google account below.

    - -
    - -
    - - -
    - Firebase sign-in status: Unknown -
    Firebase auth currentUser object value:
    -
    null
    -
    -
    -
    - -
    -
    -
    - - diff --git a/punch_list/public/indexTest.html b/punch_list/public/indexTest.html deleted file mode 100644 index 0a5b3b0..0000000 --- a/punch_list/public/indexTest.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - Punch List - - - - - - - - - - - - - - - - - - -
    -
    -
    -
    -
    - - - - - - - - - -
    -
    - - - Signed in - -
    -
    -
    -
    - - - -
    -
    -
     
    -
    STATS
    -
     
    -
    -
    - - -
    -
    -
    -
    - - Parking Lot -
    -
      -
    1. -
      -
      -
      1
      -
      -
      -
      test
      -
      -
      new
      -
      -
      - -
      -
      -
      July 11, 2019 17:30
      -
      -
      -
      -
      DUE SOON
      -
      - foo - , - bar -
      -
      -
      -
      -
      -
      -
    2. -
    -
    - -
    -
    -
    - -
    - - - - diff --git a/punch_list/public/index_old.html b/punch_list/public/index_old.html deleted file mode 100644 index 65f7eb8..0000000 --- a/punch_list/public/index_old.html +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    -
     
    -
    STATS
    -
     
    -
    -
    - -
    -
    -
    -
    - Parking Lot -
    -
    -
    - -
    - - - - - - Notes:
    - - - -
    - - -
    - -
    -
    -
    - - -
    - - diff --git a/punch_list/public/js/datepicker.js b/punch_list/public/js/datepicker.js deleted file mode 100644 index ad69b4f..0000000 --- a/punch_list/public/js/datepicker.js +++ /dev/null @@ -1,2236 +0,0 @@ -;(function (window, $, undefined) { ;(function () { - var VERSION = '2.2.3', - pluginName = 'datepicker', - autoInitSelector = '.datepicker-here', - $body, $datepickersContainer, - containerBuilt = false, - baseTemplate = '' + - '
    ' + - '' + - '' + - '
    ' + - '
    ', - defaults = { - classes: '', - inline: false, - language: 'ru', - startDate: new Date(), - firstDay: '', - weekends: [6, 0], - dateFormat: '', - altField: '', - altFieldDateFormat: '@', - toggleSelected: true, - keyboardNav: true, - - position: 'bottom left', - offset: 12, - - view: 'days', - minView: 'days', - - showOtherMonths: true, - selectOtherMonths: true, - moveToOtherMonthsOnSelect: true, - - showOtherYears: true, - selectOtherYears: true, - moveToOtherYearsOnSelect: true, - - minDate: '', - maxDate: '', - disableNavWhenOutOfRange: true, - - multipleDates: false, // Boolean or Number - multipleDatesSeparator: ',', - range: false, - - todayButton: false, - clearButton: false, - - showEvent: 'focus', - autoClose: false, - - // navigation - monthsField: 'monthsShort', - prevHtml: '', - nextHtml: '', - navTitles: { - days: 'MM, yyyy', - months: 'yyyy', - years: 'yyyy1 - yyyy2' - }, - - // timepicker - timepicker: false, - onlyTimepicker: false, - dateTimeSeparator: ' ', - timeFormat: '', - minHours: 0, - maxHours: 24, - minMinutes: 0, - maxMinutes: 59, - hoursStep: 1, - minutesStep: 1, - - // events - onSelect: '', - onShow: '', - onHide: '', - onChangeMonth: '', - onChangeYear: '', - onChangeDecade: '', - onChangeView: '', - onRenderCell: '' - }, - hotKeys = { - 'ctrlRight': [17, 39], - 'ctrlUp': [17, 38], - 'ctrlLeft': [17, 37], - 'ctrlDown': [17, 40], - 'shiftRight': [16, 39], - 'shiftUp': [16, 38], - 'shiftLeft': [16, 37], - 'shiftDown': [16, 40], - 'altUp': [18, 38], - 'altRight': [18, 39], - 'altLeft': [18, 37], - 'altDown': [18, 40], - 'ctrlShiftUp': [16, 17, 38] - }, - datepicker; - - var Datepicker = function (el, options) { - this.el = el; - this.$el = $(el); - - this.opts = $.extend(true, {}, defaults, options, this.$el.data()); - - if ($body == undefined) { - $body = $('body'); - } - - if (!this.opts.startDate) { - this.opts.startDate = new Date(); - } - - if (this.el.nodeName == 'INPUT') { - this.elIsInput = true; - } - - if (this.opts.altField) { - this.$altField = typeof this.opts.altField == 'string' ? $(this.opts.altField) : this.opts.altField; - } - - this.inited = false; - this.visible = false; - this.silent = false; // Need to prevent unnecessary rendering - - this.currentDate = this.opts.startDate; - this.currentView = this.opts.view; - this._createShortCuts(); - this.selectedDates = []; - this.views = {}; - this.keys = []; - this.minRange = ''; - this.maxRange = ''; - this._prevOnSelectValue = ''; - - this.init() - }; - - datepicker = Datepicker; - - datepicker.prototype = { - VERSION: VERSION, - viewIndexes: ['days', 'months', 'years'], - - init: function () { - if (!containerBuilt && !this.opts.inline && this.elIsInput) { - this._buildDatepickersContainer(); - } - this._buildBaseHtml(); - this._defineLocale(this.opts.language); - this._syncWithMinMaxDates(); - - if (this.elIsInput) { - if (!this.opts.inline) { - // Set extra classes for proper transitions - this._setPositionClasses(this.opts.position); - this._bindEvents() - } - if (this.opts.keyboardNav && !this.opts.onlyTimepicker) { - this._bindKeyboardEvents(); - } - this.$datepicker.on('mousedown', this._onMouseDownDatepicker.bind(this)); - this.$datepicker.on('mouseup', this._onMouseUpDatepicker.bind(this)); - } - - if (this.opts.classes) { - this.$datepicker.addClass(this.opts.classes) - } - - if (this.opts.timepicker) { - this.timepicker = new $.fn.datepicker.Timepicker(this, this.opts); - this._bindTimepickerEvents(); - } - - if (this.opts.onlyTimepicker) { - this.$datepicker.addClass('-only-timepicker-'); - } - - this.views[this.currentView] = new $.fn.datepicker.Body(this, this.currentView, this.opts); - this.views[this.currentView].show(); - this.nav = new $.fn.datepicker.Navigation(this, this.opts); - this.view = this.currentView; - - this.$el.on('clickCell.adp', this._onClickCell.bind(this)); - this.$datepicker.on('mouseenter', '.datepicker--cell', this._onMouseEnterCell.bind(this)); - this.$datepicker.on('mouseleave', '.datepicker--cell', this._onMouseLeaveCell.bind(this)); - - this.inited = true; - }, - - _createShortCuts: function () { - this.minDate = this.opts.minDate ? this.opts.minDate : new Date(-8639999913600000); - this.maxDate = this.opts.maxDate ? this.opts.maxDate : new Date(8639999913600000); - }, - - _bindEvents : function () { - this.$el.on(this.opts.showEvent + '.adp', this._onShowEvent.bind(this)); - this.$el.on('mouseup.adp', this._onMouseUpEl.bind(this)); - this.$el.on('blur.adp', this._onBlur.bind(this)); - this.$el.on('keyup.adp', this._onKeyUpGeneral.bind(this)); - $(window).on('resize.adp', this._onResize.bind(this)); - $('body').on('mouseup.adp', this._onMouseUpBody.bind(this)); - }, - - _bindKeyboardEvents: function () { - this.$el.on('keydown.adp', this._onKeyDown.bind(this)); - this.$el.on('keyup.adp', this._onKeyUp.bind(this)); - this.$el.on('hotKey.adp', this._onHotKey.bind(this)); - }, - - _bindTimepickerEvents: function () { - this.$el.on('timeChange.adp', this._onTimeChange.bind(this)); - }, - - isWeekend: function (day) { - return this.opts.weekends.indexOf(day) !== -1; - }, - - _defineLocale: function (lang) { - if (typeof lang == 'string') { - this.loc = $.fn.datepicker.language[lang]; - if (!this.loc) { - console.warn('Can\'t find language "' + lang + '" in Datepicker.language, will use "ru" instead'); - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru) - } - - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, $.fn.datepicker.language[lang]) - } else { - this.loc = $.extend(true, {}, $.fn.datepicker.language.ru, lang) - } - - if (this.opts.dateFormat) { - this.loc.dateFormat = this.opts.dateFormat - } - - if (this.opts.timeFormat) { - this.loc.timeFormat = this.opts.timeFormat - } - - if (this.opts.firstDay !== '') { - this.loc.firstDay = this.opts.firstDay - } - - if (this.opts.timepicker) { - this.loc.dateFormat = [this.loc.dateFormat, this.loc.timeFormat].join(this.opts.dateTimeSeparator); - } - - if (this.opts.onlyTimepicker) { - this.loc.dateFormat = this.loc.timeFormat; - } - - var boundary = this._getWordBoundaryRegExp; - if (this.loc.timeFormat.match(boundary('aa')) || - this.loc.timeFormat.match(boundary('AA')) - ) { - this.ampm = true; - } - }, - - _buildDatepickersContainer: function () { - containerBuilt = true; - $body.append('
    '); - $datepickersContainer = $('#datepickers-container'); - }, - - _buildBaseHtml: function () { - var $appendTarget, - $inline = $('
    '); - - if(this.el.nodeName == 'INPUT') { - if (!this.opts.inline) { - $appendTarget = $datepickersContainer; - } else { - $appendTarget = $inline.insertAfter(this.$el) - } - } else { - $appendTarget = $inline.appendTo(this.$el) - } - - this.$datepicker = $(baseTemplate).appendTo($appendTarget); - this.$content = $('.datepicker--content', this.$datepicker); - this.$nav = $('.datepicker--nav', this.$datepicker); - }, - - _triggerOnChange: function () { - if (!this.selectedDates.length) { - // Prevent from triggering multiple onSelect callback with same argument (empty string) in IE10-11 - if (this._prevOnSelectValue === '') return; - this._prevOnSelectValue = ''; - return this.opts.onSelect('', '', this); - } - - var selectedDates = this.selectedDates, - parsedSelected = datepicker.getParsedDate(selectedDates[0]), - formattedDates, - _this = this, - dates = new Date( - parsedSelected.year, - parsedSelected.month, - parsedSelected.date, - parsedSelected.hours, - parsedSelected.minutes - ); - - formattedDates = selectedDates.map(function (date) { - return _this.formatDate(_this.loc.dateFormat, date) - }).join(this.opts.multipleDatesSeparator); - - // Create new dates array, to separate it from original selectedDates - if (this.opts.multipleDates || this.opts.range) { - dates = selectedDates.map(function(date) { - var parsedDate = datepicker.getParsedDate(date); - return new Date( - parsedDate.year, - parsedDate.month, - parsedDate.date, - parsedDate.hours, - parsedDate.minutes - ); - }) - } - - this._prevOnSelectValue = formattedDates; - this.opts.onSelect(formattedDates, dates, this); - }, - - next: function () { - var d = this.parsedDate, - o = this.opts; - switch (this.view) { - case 'days': - this.date = new Date(d.year, d.month + 1, 1); - if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year); - break; - case 'months': - this.date = new Date(d.year + 1, d.month, 1); - if (o.onChangeYear) o.onChangeYear(this.parsedDate.year); - break; - case 'years': - this.date = new Date(d.year + 10, 0, 1); - if (o.onChangeDecade) o.onChangeDecade(this.curDecade); - break; - } - }, - - prev: function () { - var d = this.parsedDate, - o = this.opts; - switch (this.view) { - case 'days': - this.date = new Date(d.year, d.month - 1, 1); - if (o.onChangeMonth) o.onChangeMonth(this.parsedDate.month, this.parsedDate.year); - break; - case 'months': - this.date = new Date(d.year - 1, d.month, 1); - if (o.onChangeYear) o.onChangeYear(this.parsedDate.year); - break; - case 'years': - this.date = new Date(d.year - 10, 0, 1); - if (o.onChangeDecade) o.onChangeDecade(this.curDecade); - break; - } - }, - - formatDate: function (string, date) { - date = date || this.date; - var result = string, - boundary = this._getWordBoundaryRegExp, - locale = this.loc, - leadingZero = datepicker.getLeadingZeroNum, - decade = datepicker.getDecade(date), - d = datepicker.getParsedDate(date), - fullHours = d.fullHours, - hours = d.hours, - ampm = string.match(boundary('aa')) || string.match(boundary('AA')), - dayPeriod = 'am', - replacer = this._replacer, - validHours; - - if (this.opts.timepicker && this.timepicker && ampm) { - validHours = this.timepicker._getValidHoursFromDate(date, ampm); - fullHours = leadingZero(validHours.hours); - hours = validHours.hours; - dayPeriod = validHours.dayPeriod; - } - - switch (true) { - case /@/.test(result): - result = result.replace(/@/, date.getTime()); - case /aa/.test(result): - result = replacer(result, boundary('aa'), dayPeriod); - case /AA/.test(result): - result = replacer(result, boundary('AA'), dayPeriod.toUpperCase()); - case /dd/.test(result): - result = replacer(result, boundary('dd'), d.fullDate); - case /d/.test(result): - result = replacer(result, boundary('d'), d.date); - case /DD/.test(result): - result = replacer(result, boundary('DD'), locale.days[d.day]); - case /D/.test(result): - result = replacer(result, boundary('D'), locale.daysShort[d.day]); - case /mm/.test(result): - result = replacer(result, boundary('mm'), d.fullMonth); - case /m/.test(result): - result = replacer(result, boundary('m'), d.month + 1); - case /MM/.test(result): - result = replacer(result, boundary('MM'), this.loc.months[d.month]); - case /M/.test(result): - result = replacer(result, boundary('M'), locale.monthsShort[d.month]); - case /ii/.test(result): - result = replacer(result, boundary('ii'), d.fullMinutes); - case /i/.test(result): - result = replacer(result, boundary('i'), d.minutes); - case /hh/.test(result): - result = replacer(result, boundary('hh'), fullHours); - case /h/.test(result): - result = replacer(result, boundary('h'), hours); - case /yyyy/.test(result): - result = replacer(result, boundary('yyyy'), d.year); - case /yyyy1/.test(result): - result = replacer(result, boundary('yyyy1'), decade[0]); - case /yyyy2/.test(result): - result = replacer(result, boundary('yyyy2'), decade[1]); - case /yy/.test(result): - result = replacer(result, boundary('yy'), d.year.toString().slice(-2)); - } - - return result; - }, - - _replacer: function (str, reg, data) { - return str.replace(reg, function (match, p1,p2,p3) { - return p1 + data + p3; - }) - }, - - _getWordBoundaryRegExp: function (sign) { - var symbols = '\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;'; - - return new RegExp('(^|>|' + symbols + ')(' + sign + ')($|<|' + symbols + ')', 'g'); - }, - - - selectDate: function (date) { - var _this = this, - opts = _this.opts, - d = _this.parsedDate, - selectedDates = _this.selectedDates, - len = selectedDates.length, - newDate = ''; - - if (Array.isArray(date)) { - date.forEach(function (d) { - _this.selectDate(d) - }); - return; - } - - if (!(date instanceof Date)) return; - - this.lastSelectedDate = date; - - // Set new time values from Date - if (this.timepicker) { - this.timepicker._setTime(date); - } - - // On this step timepicker will set valid values in it's instance - _this._trigger('selectDate', date); - - // Set correct time values after timepicker's validation - // Prevent from setting hours or minutes which values are lesser then `min` value or - // greater then `max` value - if (this.timepicker) { - date.setHours(this.timepicker.hours); - date.setMinutes(this.timepicker.minutes) - } - - if (_this.view == 'days') { - if (date.getMonth() != d.month && opts.moveToOtherMonthsOnSelect) { - newDate = new Date(date.getFullYear(), date.getMonth(), 1); - } - } - - if (_this.view == 'years') { - if (date.getFullYear() != d.year && opts.moveToOtherYearsOnSelect) { - newDate = new Date(date.getFullYear(), 0, 1); - } - } - - if (newDate) { - _this.silent = true; - _this.date = newDate; - _this.silent = false; - _this.nav._render() - } - - if (opts.multipleDates && !opts.range) { // Set priority to range functionality - if (len === opts.multipleDates) return; - if (!_this._isSelected(date)) { - _this.selectedDates.push(date); - } - } else if (opts.range) { - if (len == 2) { - _this.selectedDates = [date]; - _this.minRange = date; - _this.maxRange = ''; - } else if (len == 1) { - _this.selectedDates.push(date); - if (!_this.maxRange){ - _this.maxRange = date; - } else { - _this.minRange = date; - } - // Swap dates if they were selected via dp.selectDate() and second date was smaller then first - if (datepicker.bigger(_this.maxRange, _this.minRange)) { - _this.maxRange = _this.minRange; - _this.minRange = date; - } - _this.selectedDates = [_this.minRange, _this.maxRange] - - } else { - _this.selectedDates = [date]; - _this.minRange = date; - } - } else { - _this.selectedDates = [date]; - } - - _this._setInputValue(); - - if (opts.onSelect) { - _this._triggerOnChange(); - } - - if (opts.autoClose && !this.timepickerIsActive) { - if (!opts.multipleDates && !opts.range) { - _this.hide(); - } else if (opts.range && _this.selectedDates.length == 2) { - _this.hide(); - } - } - - _this.views[this.currentView]._render() - }, - - removeDate: function (date) { - var selected = this.selectedDates, - _this = this; - - if (!(date instanceof Date)) return; - - return selected.some(function (curDate, i) { - if (datepicker.isSame(curDate, date)) { - selected.splice(i, 1); - - if (!_this.selectedDates.length) { - _this.minRange = ''; - _this.maxRange = ''; - _this.lastSelectedDate = ''; - } else { - _this.lastSelectedDate = _this.selectedDates[_this.selectedDates.length - 1]; - } - - _this.views[_this.currentView]._render(); - _this._setInputValue(); - - if (_this.opts.onSelect) { - _this._triggerOnChange(); - } - - return true - } - }) - }, - - today: function () { - this.silent = true; - this.view = this.opts.minView; - this.silent = false; - this.date = new Date(); - - if (this.opts.todayButton instanceof Date) { - this.selectDate(this.opts.todayButton) - } - }, - - clear: function () { - this.selectedDates = []; - this.minRange = ''; - this.maxRange = ''; - this.views[this.currentView]._render(); - this._setInputValue(); - if (this.opts.onSelect) { - this._triggerOnChange() - } - }, - - /** - * Updates datepicker options - * @param {String|Object} param - parameter's name to update. If object then it will extend current options - * @param {String|Number|Object} [value] - new param value - */ - update: function (param, value) { - var len = arguments.length, - lastSelectedDate = this.lastSelectedDate; - - if (len == 2) { - this.opts[param] = value; - } else if (len == 1 && typeof param == 'object') { - this.opts = $.extend(true, this.opts, param) - } - - this._createShortCuts(); - this._syncWithMinMaxDates(); - this._defineLocale(this.opts.language); - this.nav._addButtonsIfNeed(); - if (!this.opts.onlyTimepicker) this.nav._render(); - this.views[this.currentView]._render(); - - if (this.elIsInput && !this.opts.inline) { - this._setPositionClasses(this.opts.position); - if (this.visible) { - this.setPosition(this.opts.position) - } - } - - if (this.opts.classes) { - this.$datepicker.addClass(this.opts.classes) - } - - if (this.opts.onlyTimepicker) { - this.$datepicker.addClass('-only-timepicker-'); - } - - if (this.opts.timepicker) { - if (lastSelectedDate) this.timepicker._handleDate(lastSelectedDate); - this.timepicker._updateRanges(); - this.timepicker._updateCurrentTime(); - // Change hours and minutes if it's values have been changed through min/max hours/minutes - if (lastSelectedDate) { - lastSelectedDate.setHours(this.timepicker.hours); - lastSelectedDate.setMinutes(this.timepicker.minutes); - } - } - - this._setInputValue(); - - return this; - }, - - _syncWithMinMaxDates: function () { - var curTime = this.date.getTime(); - this.silent = true; - if (this.minTime > curTime) { - this.date = this.minDate; - } - - if (this.maxTime < curTime) { - this.date = this.maxDate; - } - this.silent = false; - }, - - _isSelected: function (checkDate, cellType) { - var res = false; - this.selectedDates.some(function (date) { - if (datepicker.isSame(date, checkDate, cellType)) { - res = date; - return true; - } - }); - return res; - }, - - _setInputValue: function () { - var _this = this, - opts = _this.opts, - format = _this.loc.dateFormat, - altFormat = opts.altFieldDateFormat, - value = _this.selectedDates.map(function (date) { - return _this.formatDate(format, date) - }), - altValues; - - if (opts.altField && _this.$altField.length) { - altValues = this.selectedDates.map(function (date) { - return _this.formatDate(altFormat, date) - }); - altValues = altValues.join(this.opts.multipleDatesSeparator); - this.$altField.val(altValues); - } - - value = value.join(this.opts.multipleDatesSeparator); - - this.$el.val(value) - }, - - /** - * Check if date is between minDate and maxDate - * @param date {object} - date object - * @param type {string} - cell type - * @returns {boolean} - * @private - */ - _isInRange: function (date, type) { - var time = date.getTime(), - d = datepicker.getParsedDate(date), - min = datepicker.getParsedDate(this.minDate), - max = datepicker.getParsedDate(this.maxDate), - dMinTime = new Date(d.year, d.month, min.date).getTime(), - dMaxTime = new Date(d.year, d.month, max.date).getTime(), - types = { - day: time >= this.minTime && time <= this.maxTime, - month: dMinTime >= this.minTime && dMaxTime <= this.maxTime, - year: d.year >= min.year && d.year <= max.year - }; - return type ? types[type] : types.day - }, - - _getDimensions: function ($el) { - var offset = $el.offset(); - - return { - width: $el.outerWidth(), - height: $el.outerHeight(), - left: offset.left, - top: offset.top - } - }, - - _getDateFromCell: function (cell) { - var curDate = this.parsedDate, - year = cell.data('year') || curDate.year, - month = cell.data('month') == undefined ? curDate.month : cell.data('month'), - date = cell.data('date') || 1; - - return new Date(year, month, date); - }, - - _setPositionClasses: function (pos) { - pos = pos.split(' '); - var main = pos[0], - sec = pos[1], - classes = 'datepicker -' + main + '-' + sec + '- -from-' + main + '-'; - - if (this.visible) classes += ' active'; - - this.$datepicker - .removeAttr('class') - .addClass(classes); - }, - - setPosition: function (position) { - position = position || this.opts.position; - - var dims = this._getDimensions(this.$el), - selfDims = this._getDimensions(this.$datepicker), - pos = position.split(' '), - top, left, - offset = this.opts.offset, - main = pos[0], - secondary = pos[1]; - - switch (main) { - case 'top': - top = dims.top - selfDims.height - offset; - break; - case 'right': - left = dims.left + dims.width + offset; - break; - case 'bottom': - top = dims.top + dims.height + offset; - break; - case 'left': - left = dims.left - selfDims.width - offset; - break; - } - - switch(secondary) { - case 'top': - top = dims.top; - break; - case 'right': - left = dims.left + dims.width - selfDims.width; - break; - case 'bottom': - top = dims.top + dims.height - selfDims.height; - break; - case 'left': - left = dims.left; - break; - case 'center': - if (/left|right/.test(main)) { - top = dims.top + dims.height/2 - selfDims.height/2; - } else { - left = dims.left + dims.width/2 - selfDims.width/2; - } - } - - this.$datepicker - .css({ - left: left, - top: top - }) - }, - - show: function () { - var onShow = this.opts.onShow; - - this.setPosition(this.opts.position); - this.$datepicker.addClass('active'); - this.visible = true; - - if (onShow) { - this._bindVisionEvents(onShow) - } - }, - - hide: function () { - var onHide = this.opts.onHide; - - this.$datepicker - .removeClass('active') - .css({ - left: '-100000px' - }); - - this.focused = ''; - this.keys = []; - - this.inFocus = false; - this.visible = false; - this.$el.blur(); - - if (onHide) { - this._bindVisionEvents(onHide) - } - }, - - down: function (date) { - this._changeView(date, 'down'); - }, - - up: function (date) { - this._changeView(date, 'up'); - }, - - _bindVisionEvents: function (event) { - this.$datepicker.off('transitionend.dp'); - event(this, false); - this.$datepicker.one('transitionend.dp', event.bind(this, this, true)) - }, - - _changeView: function (date, dir) { - date = date || this.focused || this.date; - - var nextView = dir == 'up' ? this.viewIndex + 1 : this.viewIndex - 1; - if (nextView > 2) nextView = 2; - if (nextView < 0) nextView = 0; - - this.silent = true; - this.date = new Date(date.getFullYear(), date.getMonth(), 1); - this.silent = false; - this.view = this.viewIndexes[nextView]; - - }, - - _handleHotKey: function (key) { - var date = datepicker.getParsedDate(this._getFocusedDate()), - focusedParsed, - o = this.opts, - newDate, - totalDaysInNextMonth, - monthChanged = false, - yearChanged = false, - decadeChanged = false, - y = date.year, - m = date.month, - d = date.date; - - switch (key) { - case 'ctrlRight': - case 'ctrlUp': - m += 1; - monthChanged = true; - break; - case 'ctrlLeft': - case 'ctrlDown': - m -= 1; - monthChanged = true; - break; - case 'shiftRight': - case 'shiftUp': - yearChanged = true; - y += 1; - break; - case 'shiftLeft': - case 'shiftDown': - yearChanged = true; - y -= 1; - break; - case 'altRight': - case 'altUp': - decadeChanged = true; - y += 10; - break; - case 'altLeft': - case 'altDown': - decadeChanged = true; - y -= 10; - break; - case 'ctrlShiftUp': - this.up(); - break; - } - - totalDaysInNextMonth = datepicker.getDaysCount(new Date(y,m)); - newDate = new Date(y,m,d); - - // If next month has less days than current, set date to total days in that month - if (totalDaysInNextMonth < d) d = totalDaysInNextMonth; - - // Check if newDate is in valid range - if (newDate.getTime() < this.minTime) { - newDate = this.minDate; - } else if (newDate.getTime() > this.maxTime) { - newDate = this.maxDate; - } - - this.focused = newDate; - - focusedParsed = datepicker.getParsedDate(newDate); - if (monthChanged && o.onChangeMonth) { - o.onChangeMonth(focusedParsed.month, focusedParsed.year) - } - if (yearChanged && o.onChangeYear) { - o.onChangeYear(focusedParsed.year) - } - if (decadeChanged && o.onChangeDecade) { - o.onChangeDecade(this.curDecade) - } - }, - - _registerKey: function (key) { - var exists = this.keys.some(function (curKey) { - return curKey == key; - }); - - if (!exists) { - this.keys.push(key) - } - }, - - _unRegisterKey: function (key) { - var index = this.keys.indexOf(key); - - this.keys.splice(index, 1); - }, - - _isHotKeyPressed: function () { - var currentHotKey, - found = false, - _this = this, - pressedKeys = this.keys.sort(); - - for (var hotKey in hotKeys) { - currentHotKey = hotKeys[hotKey]; - if (pressedKeys.length != currentHotKey.length) continue; - - if (currentHotKey.every(function (key, i) { return key == pressedKeys[i]})) { - _this._trigger('hotKey', hotKey); - found = true; - } - } - - return found; - }, - - _trigger: function (event, args) { - this.$el.trigger(event, args) - }, - - _focusNextCell: function (keyCode, type) { - type = type || this.cellType; - - var date = datepicker.getParsedDate(this._getFocusedDate()), - y = date.year, - m = date.month, - d = date.date; - - if (this._isHotKeyPressed()){ - return; - } - - switch(keyCode) { - case 37: // left - type == 'day' ? (d -= 1) : ''; - type == 'month' ? (m -= 1) : ''; - type == 'year' ? (y -= 1) : ''; - break; - case 38: // up - type == 'day' ? (d -= 7) : ''; - type == 'month' ? (m -= 3) : ''; - type == 'year' ? (y -= 4) : ''; - break; - case 39: // right - type == 'day' ? (d += 1) : ''; - type == 'month' ? (m += 1) : ''; - type == 'year' ? (y += 1) : ''; - break; - case 40: // down - type == 'day' ? (d += 7) : ''; - type == 'month' ? (m += 3) : ''; - type == 'year' ? (y += 4) : ''; - break; - } - - var nd = new Date(y,m,d); - if (nd.getTime() < this.minTime) { - nd = this.minDate; - } else if (nd.getTime() > this.maxTime) { - nd = this.maxDate; - } - - this.focused = nd; - - }, - - _getFocusedDate: function () { - var focused = this.focused || this.selectedDates[this.selectedDates.length - 1], - d = this.parsedDate; - - if (!focused) { - switch (this.view) { - case 'days': - focused = new Date(d.year, d.month, new Date().getDate()); - break; - case 'months': - focused = new Date(d.year, d.month, 1); - break; - case 'years': - focused = new Date(d.year, 0, 1); - break; - } - } - - return focused; - }, - - _getCell: function (date, type) { - type = type || this.cellType; - - var d = datepicker.getParsedDate(date), - selector = '.datepicker--cell[data-year="' + d.year + '"]', - $cell; - - switch (type) { - case 'month': - selector = '[data-month="' + d.month + '"]'; - break; - case 'day': - selector += '[data-month="' + d.month + '"][data-date="' + d.date + '"]'; - break; - } - $cell = this.views[this.currentView].$el.find(selector); - - return $cell.length ? $cell : $(''); - }, - - destroy: function () { - var _this = this; - _this.$el - .off('.adp') - .data('datepicker', ''); - - _this.selectedDates = []; - _this.focused = ''; - _this.views = {}; - _this.keys = []; - _this.minRange = ''; - _this.maxRange = ''; - - if (_this.opts.inline || !_this.elIsInput) { - _this.$datepicker.closest('.datepicker-inline').remove(); - } else { - _this.$datepicker.remove(); - } - }, - - _handleAlreadySelectedDates: function (alreadySelected, selectedDate) { - if (this.opts.range) { - if (!this.opts.toggleSelected) { - // Add possibility to select same date when range is true - if (this.selectedDates.length != 2) { - this._trigger('clickCell', selectedDate); - } - } else { - this.removeDate(selectedDate); - } - } else if (this.opts.toggleSelected){ - this.removeDate(selectedDate); - } - - // Change last selected date to be able to change time when clicking on this cell - if (!this.opts.toggleSelected) { - this.lastSelectedDate = alreadySelected; - if (this.opts.timepicker) { - this.timepicker._setTime(alreadySelected); - this.timepicker.update(); - } - } - }, - - _onShowEvent: function (e) { - if (!this.visible) { - this.show(); - } - }, - - _onBlur: function () { - if (!this.inFocus && this.visible) { - this.hide(); - } - }, - - _onMouseDownDatepicker: function (e) { - this.inFocus = true; - }, - - _onMouseUpDatepicker: function (e) { - this.inFocus = false; - e.originalEvent.inFocus = true; - if (!e.originalEvent.timepickerFocus) this.$el.focus(); - }, - - _onKeyUpGeneral: function (e) { - var val = this.$el.val(); - - if (!val) { - this.clear(); - } - }, - - _onResize: function () { - if (this.visible) { - this.setPosition(); - } - }, - - _onMouseUpBody: function (e) { - if (e.originalEvent.inFocus) return; - - if (this.visible && !this.inFocus) { - this.hide(); - } - }, - - _onMouseUpEl: function (e) { - e.originalEvent.inFocus = true; - setTimeout(this._onKeyUpGeneral.bind(this),4); - }, - - _onKeyDown: function (e) { - var code = e.which; - this._registerKey(code); - - // Arrows - if (code >= 37 && code <= 40) { - e.preventDefault(); - this._focusNextCell(code); - } - - // Enter - if (code == 13) { - if (this.focused) { - if (this._getCell(this.focused).hasClass('-disabled-')) return; - if (this.view != this.opts.minView) { - this.down() - } else { - var alreadySelected = this._isSelected(this.focused, this.cellType); - - if (!alreadySelected) { - if (this.timepicker) { - this.focused.setHours(this.timepicker.hours); - this.focused.setMinutes(this.timepicker.minutes); - } - this.selectDate(this.focused); - return; - } - this._handleAlreadySelectedDates(alreadySelected, this.focused) - } - } - } - - // Esc - if (code == 27) { - this.hide(); - } - }, - - _onKeyUp: function (e) { - var code = e.which; - this._unRegisterKey(code); - }, - - _onHotKey: function (e, hotKey) { - this._handleHotKey(hotKey); - }, - - _onMouseEnterCell: function (e) { - var $cell = $(e.target).closest('.datepicker--cell'), - date = this._getDateFromCell($cell); - - // Prevent from unnecessary rendering and setting new currentDate - this.silent = true; - - if (this.focused) { - this.focused = '' - } - - $cell.addClass('-focus-'); - - this.focused = date; - this.silent = false; - - if (this.opts.range && this.selectedDates.length == 1) { - this.minRange = this.selectedDates[0]; - this.maxRange = ''; - if (datepicker.less(this.minRange, this.focused)) { - this.maxRange = this.minRange; - this.minRange = ''; - } - this.views[this.currentView]._update(); - } - }, - - _onMouseLeaveCell: function (e) { - var $cell = $(e.target).closest('.datepicker--cell'); - - $cell.removeClass('-focus-'); - - this.silent = true; - this.focused = ''; - this.silent = false; - }, - - _onTimeChange: function (e, h, m) { - var date = new Date(), - selectedDates = this.selectedDates, - selected = false; - - if (selectedDates.length) { - selected = true; - date = this.lastSelectedDate; - } - - date.setHours(h); - date.setMinutes(m); - - if (!selected && !this._getCell(date).hasClass('-disabled-')) { - this.selectDate(date); - } else { - this._setInputValue(); - if (this.opts.onSelect) { - this._triggerOnChange(); - } - } - }, - - _onClickCell: function (e, date) { - if (this.timepicker) { - date.setHours(this.timepicker.hours); - date.setMinutes(this.timepicker.minutes); - } - this.selectDate(date); - }, - - set focused(val) { - if (!val && this.focused) { - var $cell = this._getCell(this.focused); - - if ($cell.length) { - $cell.removeClass('-focus-') - } - } - this._focused = val; - if (this.opts.range && this.selectedDates.length == 1) { - this.minRange = this.selectedDates[0]; - this.maxRange = ''; - if (datepicker.less(this.minRange, this._focused)) { - this.maxRange = this.minRange; - this.minRange = ''; - } - } - if (this.silent) return; - this.date = val; - }, - - get focused() { - return this._focused; - }, - - get parsedDate() { - return datepicker.getParsedDate(this.date); - }, - - set date (val) { - if (!(val instanceof Date)) return; - - this.currentDate = val; - - if (this.inited && !this.silent) { - this.views[this.view]._render(); - this.nav._render(); - if (this.visible && this.elIsInput) { - this.setPosition(); - } - } - return val; - }, - - get date () { - return this.currentDate - }, - - set view (val) { - this.viewIndex = this.viewIndexes.indexOf(val); - - if (this.viewIndex < 0) { - return; - } - - this.prevView = this.currentView; - this.currentView = val; - - if (this.inited) { - if (!this.views[val]) { - this.views[val] = new $.fn.datepicker.Body(this, val, this.opts) - } else { - this.views[val]._render(); - } - - this.views[this.prevView].hide(); - this.views[val].show(); - this.nav._render(); - - if (this.opts.onChangeView) { - this.opts.onChangeView(val) - } - if (this.elIsInput && this.visible) this.setPosition(); - } - - return val - }, - - get view() { - return this.currentView; - }, - - get cellType() { - return this.view.substring(0, this.view.length - 1) - }, - - get minTime() { - var min = datepicker.getParsedDate(this.minDate); - return new Date(min.year, min.month, min.date).getTime() - }, - - get maxTime() { - var max = datepicker.getParsedDate(this.maxDate); - return new Date(max.year, max.month, max.date).getTime() - }, - - get curDecade() { - return datepicker.getDecade(this.date) - } - }; - - // Utils - // ------------------------------------------------- - - datepicker.getDaysCount = function (date) { - return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); - }; - - datepicker.getParsedDate = function (date) { - return { - year: date.getFullYear(), - month: date.getMonth(), - fullMonth: (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1, // One based - date: date.getDate(), - fullDate: date.getDate() < 10 ? '0' + date.getDate() : date.getDate(), - day: date.getDay(), - hours: date.getHours(), - fullHours: date.getHours() < 10 ? '0' + date.getHours() : date.getHours() , - minutes: date.getMinutes(), - fullMinutes: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() - } - }; - - datepicker.getDecade = function (date) { - var firstYear = Math.floor(date.getFullYear() / 10) * 10; - - return [firstYear, firstYear + 9]; - }; - - datepicker.template = function (str, data) { - return str.replace(/#\{([\w]+)\}/g, function (source, match) { - if (data[match] || data[match] === 0) { - return data[match] - } - }); - }; - - datepicker.isSame = function (date1, date2, type) { - if (!date1 || !date2) return false; - var d1 = datepicker.getParsedDate(date1), - d2 = datepicker.getParsedDate(date2), - _type = type ? type : 'day', - - conditions = { - day: d1.date == d2.date && d1.month == d2.month && d1.year == d2.year, - month: d1.month == d2.month && d1.year == d2.year, - year: d1.year == d2.year - }; - - return conditions[_type]; - }; - - datepicker.less = function (dateCompareTo, date, type) { - if (!dateCompareTo || !date) return false; - return date.getTime() < dateCompareTo.getTime(); - }; - - datepicker.bigger = function (dateCompareTo, date, type) { - if (!dateCompareTo || !date) return false; - return date.getTime() > dateCompareTo.getTime(); - }; - - datepicker.getLeadingZeroNum = function (num) { - return parseInt(num) < 10 ? '0' + num : num; - }; - - /** - * Returns copy of date with hours and minutes equals to 0 - * @param date {Date} - */ - datepicker.resetTime = function (date) { - if (typeof date != 'object') return; - date = datepicker.getParsedDate(date); - return new Date(date.year, date.month, date.date) - }; - - $.fn.datepicker = function ( options ) { - return this.each(function () { - if (!$.data(this, pluginName)) { - $.data(this, pluginName, - new Datepicker( this, options )); - } else { - var _this = $.data(this, pluginName); - - _this.opts = $.extend(true, _this.opts, options); - _this.update(); - } - }); - }; - - $.fn.datepicker.Constructor = Datepicker; - - $.fn.datepicker.language = { - ru: { - days: ['Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота'], - daysShort: ['Вос','Пон','Вто','Сре','Чет','Пят','Суб'], - daysMin: ['Вс','Пн','Вт','Ср','Чт','Пт','Сб'], - months: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'], - monthsShort: ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек'], - today: 'Сегодня', - clear: 'Очистить', - dateFormat: 'dd.mm.yyyy', - timeFormat: 'hh:ii', - firstDay: 1 - } - }; - - $(function () { - $(autoInitSelector).datepicker(); - }) - -})(); - -;(function () { - var templates = { - days:'' + - '
    ' + - '
    ' + - '
    ' + - '
    ', - months: '' + - '
    ' + - '
    ' + - '
    ', - years: '' + - '
    ' + - '
    ' + - '
    ' - }, - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Body = function (d, type, opts) { - this.d = d; - this.type = type; - this.opts = opts; - this.$el = $(''); - - if (this.opts.onlyTimepicker) return; - this.init(); - }; - - datepicker.Body.prototype = { - init: function () { - this._buildBaseHtml(); - this._render(); - - this._bindEvents(); - }, - - _bindEvents: function () { - this.$el.on('click', '.datepicker--cell', $.proxy(this._onClickCell, this)); - }, - - _buildBaseHtml: function () { - this.$el = $(templates[this.type]).appendTo(this.d.$content); - this.$names = $('.datepicker--days-names', this.$el); - this.$cells = $('.datepicker--cells', this.$el); - }, - - _getDayNamesHtml: function (firstDay, curDay, html, i) { - curDay = curDay != undefined ? curDay : firstDay; - html = html ? html : ''; - i = i != undefined ? i : 0; - - if (i > 7) return html; - if (curDay == 7) return this._getDayNamesHtml(firstDay, 0, html, ++i); - - html += '
    ' + this.d.loc.daysMin[curDay] + '
    '; - - return this._getDayNamesHtml(firstDay, ++curDay, html, ++i); - }, - - _getCellContents: function (date, type) { - var classes = "datepicker--cell datepicker--cell-" + type, - currentDate = new Date(), - parent = this.d, - minRange = dp.resetTime(parent.minRange), - maxRange = dp.resetTime(parent.maxRange), - opts = parent.opts, - d = dp.getParsedDate(date), - render = {}, - html = d.date; - - switch (type) { - case 'day': - if (parent.isWeekend(d.day)) classes += " -weekend-"; - if (d.month != this.d.parsedDate.month) { - classes += " -other-month-"; - if (!opts.selectOtherMonths) { - classes += " -disabled-"; - } - if (!opts.showOtherMonths) html = ''; - } - break; - case 'month': - html = parent.loc[parent.opts.monthsField][d.month]; - break; - case 'year': - var decade = parent.curDecade; - html = d.year; - if (d.year < decade[0] || d.year > decade[1]) { - classes += ' -other-decade-'; - if (!opts.selectOtherYears) { - classes += " -disabled-"; - } - if (!opts.showOtherYears) html = ''; - } - break; - } - - if (opts.onRenderCell) { - render = opts.onRenderCell(date, type) || {}; - html = render.html ? render.html : html; - classes += render.classes ? ' ' + render.classes : ''; - } - - if (opts.range) { - if (dp.isSame(minRange, date, type)) classes += ' -range-from-'; - if (dp.isSame(maxRange, date, type)) classes += ' -range-to-'; - - if (parent.selectedDates.length == 1 && parent.focused) { - if ( - (dp.bigger(minRange, date) && dp.less(parent.focused, date)) || - (dp.less(maxRange, date) && dp.bigger(parent.focused, date))) - { - classes += ' -in-range-' - } - - if (dp.less(maxRange, date) && dp.isSame(parent.focused, date)) { - classes += ' -range-from-' - } - if (dp.bigger(minRange, date) && dp.isSame(parent.focused, date)) { - classes += ' -range-to-' - } - - } else if (parent.selectedDates.length == 2) { - if (dp.bigger(minRange, date) && dp.less(maxRange, date)) { - classes += ' -in-range-' - } - } - } - - - if (dp.isSame(currentDate, date, type)) classes += ' -current-'; - if (parent.focused && dp.isSame(date, parent.focused, type)) classes += ' -focus-'; - if (parent._isSelected(date, type)) classes += ' -selected-'; - if (!parent._isInRange(date, type) || render.disabled) classes += ' -disabled-'; - - return { - html: html, - classes: classes - } - }, - - /** - * Calculates days number to render. Generates days html and returns it. - * @param {object} date - Date object - * @returns {string} - * @private - */ - _getDaysHtml: function (date) { - var totalMonthDays = dp.getDaysCount(date), - firstMonthDay = new Date(date.getFullYear(), date.getMonth(), 1).getDay(), - lastMonthDay = new Date(date.getFullYear(), date.getMonth(), totalMonthDays).getDay(), - daysFromPevMonth = firstMonthDay - this.d.loc.firstDay, - daysFromNextMonth = 6 - lastMonthDay + this.d.loc.firstDay; - - daysFromPevMonth = daysFromPevMonth < 0 ? daysFromPevMonth + 7 : daysFromPevMonth; - daysFromNextMonth = daysFromNextMonth > 6 ? daysFromNextMonth - 7 : daysFromNextMonth; - - var startDayIndex = -daysFromPevMonth + 1, - m, y, - html = ''; - - for (var i = startDayIndex, max = totalMonthDays + daysFromNextMonth; i <= max; i++) { - y = date.getFullYear(); - m = date.getMonth(); - - html += this._getDayHtml(new Date(y, m, i)) - } - - return html; - }, - - _getDayHtml: function (date) { - var content = this._getCellContents(date, 'day'); - - return '
    ' + content.html + '
    '; - }, - - /** - * Generates months html - * @param {object} date - date instance - * @returns {string} - * @private - */ - _getMonthsHtml: function (date) { - var html = '', - d = dp.getParsedDate(date), - i = 0; - - while(i < 12) { - html += this._getMonthHtml(new Date(d.year, i)); - i++ - } - - return html; - }, - - _getMonthHtml: function (date) { - var content = this._getCellContents(date, 'month'); - - return '
    ' + content.html + '
    ' - }, - - _getYearsHtml: function (date) { - var d = dp.getParsedDate(date), - decade = dp.getDecade(date), - firstYear = decade[0] - 1, - html = '', - i = firstYear; - - for (i; i <= decade[1] + 1; i++) { - html += this._getYearHtml(new Date(i , 0)); - } - - return html; - }, - - _getYearHtml: function (date) { - var content = this._getCellContents(date, 'year'); - - return '
    ' + content.html + '
    ' - }, - - _renderTypes: { - days: function () { - var dayNames = this._getDayNamesHtml(this.d.loc.firstDay), - days = this._getDaysHtml(this.d.currentDate); - - this.$cells.html(days); - this.$names.html(dayNames) - }, - months: function () { - var html = this._getMonthsHtml(this.d.currentDate); - - this.$cells.html(html) - }, - years: function () { - var html = this._getYearsHtml(this.d.currentDate); - - this.$cells.html(html) - } - }, - - _render: function () { - if (this.opts.onlyTimepicker) return; - this._renderTypes[this.type].bind(this)(); - }, - - _update: function () { - var $cells = $('.datepicker--cell', this.$cells), - _this = this, - classes, - $cell, - date; - $cells.each(function (cell, i) { - $cell = $(this); - date = _this.d._getDateFromCell($(this)); - classes = _this._getCellContents(date, _this.d.cellType); - $cell.attr('class',classes.classes) - }); - }, - - show: function () { - if (this.opts.onlyTimepicker) return; - this.$el.addClass('active'); - this.acitve = true; - }, - - hide: function () { - this.$el.removeClass('active'); - this.active = false; - }, - - // Events - // ------------------------------------------------- - - _handleClick: function (el) { - var date = el.data('date') || 1, - month = el.data('month') || 0, - year = el.data('year') || this.d.parsedDate.year, - dp = this.d; - // Change view if min view does not reach yet - if (dp.view != this.opts.minView) { - dp.down(new Date(year, month, date)); - return; - } - // Select date if min view is reached - var selectedDate = new Date(year, month, date), - alreadySelected = this.d._isSelected(selectedDate, this.d.cellType); - - if (!alreadySelected) { - dp._trigger('clickCell', selectedDate); - return; - } - - dp._handleAlreadySelectedDates.bind(dp, alreadySelected, selectedDate)(); - - }, - - _onClickCell: function (e) { - var $el = $(e.target).closest('.datepicker--cell'); - - if ($el.hasClass('-disabled-')) return; - - this._handleClick.bind(this)($el); - } - }; -})(); - -;(function () { - var template = '' + - '
    #{prevHtml}
    ' + - '
    #{title}
    ' + - '
    #{nextHtml}
    ', - buttonsContainerTemplate = '
    ', - button = '#{label}', - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Navigation = function (d, opts) { - this.d = d; - this.opts = opts; - - this.$buttonsContainer = ''; - - this.init(); - }; - - datepicker.Navigation.prototype = { - init: function () { - this._buildBaseHtml(); - this._bindEvents(); - }, - - _bindEvents: function () { - this.d.$nav.on('click', '.datepicker--nav-action', $.proxy(this._onClickNavButton, this)); - this.d.$nav.on('click', '.datepicker--nav-title', $.proxy(this._onClickNavTitle, this)); - this.d.$datepicker.on('click', '.datepicker--button', $.proxy(this._onClickNavButton, this)); - }, - - _buildBaseHtml: function () { - if (!this.opts.onlyTimepicker) { - this._render(); - } - this._addButtonsIfNeed(); - }, - - _addButtonsIfNeed: function () { - if (this.opts.todayButton) { - this._addButton('today') - } - if (this.opts.clearButton) { - this._addButton('clear') - } - }, - - _render: function () { - var title = this._getTitle(this.d.currentDate), - html = dp.template(template, $.extend({title: title}, this.opts)); - this.d.$nav.html(html); - if (this.d.view == 'years') { - $('.datepicker--nav-title', this.d.$nav).addClass('-disabled-'); - } - this.setNavStatus(); - }, - - _getTitle: function (date) { - return this.d.formatDate(this.opts.navTitles[this.d.view], date) - }, - - _addButton: function (type) { - if (!this.$buttonsContainer.length) { - this._addButtonsContainer(); - } - - var data = { - action: type, - label: this.d.loc[type] - }, - html = dp.template(button, data); - - if ($('[data-action=' + type + ']', this.$buttonsContainer).length) return; - this.$buttonsContainer.append(html); - }, - - _addButtonsContainer: function () { - this.d.$datepicker.append(buttonsContainerTemplate); - this.$buttonsContainer = $('.datepicker--buttons', this.d.$datepicker); - }, - - setNavStatus: function () { - if (!(this.opts.minDate || this.opts.maxDate) || !this.opts.disableNavWhenOutOfRange) return; - - var date = this.d.parsedDate, - m = date.month, - y = date.year, - d = date.date; - - switch (this.d.view) { - case 'days': - if (!this.d._isInRange(new Date(y, m-1, 1), 'month')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(y, m+1, 1), 'month')) { - this._disableNav('next') - } - break; - case 'months': - if (!this.d._isInRange(new Date(y-1, m, d), 'year')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(y+1, m, d), 'year')) { - this._disableNav('next') - } - break; - case 'years': - var decade = dp.getDecade(this.d.date); - if (!this.d._isInRange(new Date(decade[0] - 1, 0, 1), 'year')) { - this._disableNav('prev') - } - if (!this.d._isInRange(new Date(decade[1] + 1, 0, 1), 'year')) { - this._disableNav('next') - } - break; - } - }, - - _disableNav: function (nav) { - $('[data-action="' + nav + '"]', this.d.$nav).addClass('-disabled-') - }, - - _activateNav: function (nav) { - $('[data-action="' + nav + '"]', this.d.$nav).removeClass('-disabled-') - }, - - _onClickNavButton: function (e) { - var $el = $(e.target).closest('[data-action]'), - action = $el.data('action'); - - this.d[action](); - }, - - _onClickNavTitle: function (e) { - if ($(e.target).hasClass('-disabled-')) return; - - if (this.d.view == 'days') { - return this.d.view = 'months' - } - - this.d.view = 'years'; - } - } - -})(); - -;(function () { - var template = '
    ' + - '
    ' + - ' #{hourVisible}' + - ' :' + - ' #{minValue}' + - '
    ' + - '
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - ' ' + - '
    ' + - '
    ' + - '
    ', - datepicker = $.fn.datepicker, - dp = datepicker.Constructor; - - datepicker.Timepicker = function (inst, opts) { - this.d = inst; - this.opts = opts; - - this.init(); - }; - - datepicker.Timepicker.prototype = { - init: function () { - var input = 'input'; - this._setTime(this.d.date); - this._buildHTML(); - - if (navigator.userAgent.match(/trident/gi)) { - input = 'change'; - } - - this.d.$el.on('selectDate', this._onSelectDate.bind(this)); - this.$ranges.on(input, this._onChangeRange.bind(this)); - this.$ranges.on('mouseup', this._onMouseUpRange.bind(this)); - this.$ranges.on('mousemove focus ', this._onMouseEnterRange.bind(this)); - this.$ranges.on('mouseout blur', this._onMouseOutRange.bind(this)); - }, - - _setTime: function (date) { - var _date = dp.getParsedDate(date); - - this._handleDate(date); - this.hours = _date.hours < this.minHours ? this.minHours : _date.hours; - this.minutes = _date.minutes < this.minMinutes ? this.minMinutes : _date.minutes; - }, - - /** - * Sets minHours and minMinutes from date (usually it's a minDate) - * Also changes minMinutes if current hours are bigger then @date hours - * @param date {Date} - * @private - */ - _setMinTimeFromDate: function (date) { - this.minHours = date.getHours(); - this.minMinutes = date.getMinutes(); - - // If, for example, min hours are 10, and current hours are 12, - // update minMinutes to default value, to be able to choose whole range of values - if (this.d.lastSelectedDate) { - if (this.d.lastSelectedDate.getHours() > date.getHours()) { - this.minMinutes = this.opts.minMinutes; - } - } - }, - - _setMaxTimeFromDate: function (date) { - this.maxHours = date.getHours(); - this.maxMinutes = date.getMinutes(); - - if (this.d.lastSelectedDate) { - if (this.d.lastSelectedDate.getHours() < date.getHours()) { - this.maxMinutes = this.opts.maxMinutes; - } - } - }, - - _setDefaultMinMaxTime: function () { - var maxHours = 23, - maxMinutes = 59, - opts = this.opts; - - this.minHours = opts.minHours < 0 || opts.minHours > maxHours ? 0 : opts.minHours; - this.minMinutes = opts.minMinutes < 0 || opts.minMinutes > maxMinutes ? 0 : opts.minMinutes; - this.maxHours = opts.maxHours < 0 || opts.maxHours > maxHours ? maxHours : opts.maxHours; - this.maxMinutes = opts.maxMinutes < 0 || opts.maxMinutes > maxMinutes ? maxMinutes : opts.maxMinutes; - }, - - /** - * Looks for min/max hours/minutes and if current values - * are out of range sets valid values. - * @private - */ - _validateHoursMinutes: function (date) { - if (this.hours < this.minHours) { - this.hours = this.minHours; - } else if (this.hours > this.maxHours) { - this.hours = this.maxHours; - } - - if (this.minutes < this.minMinutes) { - this.minutes = this.minMinutes; - } else if (this.minutes > this.maxMinutes) { - this.minutes = this.maxMinutes; - } - }, - - _buildHTML: function () { - var lz = dp.getLeadingZeroNum, - data = { - hourMin: this.minHours, - hourMax: lz(this.maxHours), - hourStep: this.opts.hoursStep, - hourValue: this.hours, - hourVisible: lz(this.displayHours), - minMin: this.minMinutes, - minMax: lz(this.maxMinutes), - minStep: this.opts.minutesStep, - minValue: lz(this.minutes) - }, - _template = dp.template(template, data); - - this.$timepicker = $(_template).appendTo(this.d.$datepicker); - this.$ranges = $('[type="range"]', this.$timepicker); - this.$hours = $('[name="hours"]', this.$timepicker); - this.$minutes = $('[name="minutes"]', this.$timepicker); - this.$hoursText = $('.datepicker--time-current-hours', this.$timepicker); - this.$minutesText = $('.datepicker--time-current-minutes', this.$timepicker); - - if (this.d.ampm) { - this.$ampm = $('') - .appendTo($('.datepicker--time-current', this.$timepicker)) - .html(this.dayPeriod); - - this.$timepicker.addClass('-am-pm-'); - } - }, - - _updateCurrentTime: function () { - var h = dp.getLeadingZeroNum(this.displayHours), - m = dp.getLeadingZeroNum(this.minutes); - - this.$hoursText.html(h); - this.$minutesText.html(m); - - if (this.d.ampm) { - this.$ampm.html(this.dayPeriod); - } - }, - - _updateRanges: function () { - this.$hours.attr({ - min: this.minHours, - max: this.maxHours - }).val(this.hours); - - this.$minutes.attr({ - min: this.minMinutes, - max: this.maxMinutes - }).val(this.minutes) - }, - - /** - * Sets minHours, minMinutes etc. from date. If date is not passed, than sets - * values from options - * @param [date] {object} - Date object, to get values from - * @private - */ - _handleDate: function (date) { - this._setDefaultMinMaxTime(); - if (date) { - if (dp.isSame(date, this.d.opts.minDate)) { - this._setMinTimeFromDate(this.d.opts.minDate); - } else if (dp.isSame(date, this.d.opts.maxDate)) { - this._setMaxTimeFromDate(this.d.opts.maxDate); - } - } - - this._validateHoursMinutes(date); - }, - - update: function () { - this._updateRanges(); - this._updateCurrentTime(); - }, - - /** - * Calculates valid hour value to display in text input and datepicker's body. - * @param date {Date|Number} - date or hours - * @param [ampm] {Boolean} - 12 hours mode - * @returns {{hours: *, dayPeriod: string}} - * @private - */ - _getValidHoursFromDate: function (date, ampm) { - var d = date, - hours = date; - - if (date instanceof Date) { - d = dp.getParsedDate(date); - hours = d.hours; - } - - var _ampm = ampm || this.d.ampm, - dayPeriod = 'am'; - - if (_ampm) { - switch(true) { - case hours == 0: - hours = 12; - break; - case hours == 12: - dayPeriod = 'pm'; - break; - case hours > 11: - hours = hours - 12; - dayPeriod = 'pm'; - break; - default: - break; - } - } - - return { - hours: hours, - dayPeriod: dayPeriod - } - }, - - set hours (val) { - this._hours = val; - - var displayHours = this._getValidHoursFromDate(val); - - this.displayHours = displayHours.hours; - this.dayPeriod = displayHours.dayPeriod; - }, - - get hours() { - return this._hours; - }, - - // Events - // ------------------------------------------------- - - _onChangeRange: function (e) { - var $target = $(e.target), - name = $target.attr('name'); - - this.d.timepickerIsActive = true; - - this[name] = $target.val(); - this._updateCurrentTime(); - this.d._trigger('timeChange', [this.hours, this.minutes]); - - this._handleDate(this.d.lastSelectedDate); - this.update() - }, - - _onSelectDate: function (e, data) { - this._handleDate(data); - this.update(); - }, - - _onMouseEnterRange: function (e) { - var name = $(e.target).attr('name'); - $('.datepicker--time-current-' + name, this.$timepicker).addClass('-focus-'); - }, - - _onMouseOutRange: function (e) { - var name = $(e.target).attr('name'); - if (this.d.inFocus) return; // Prevent removing focus when mouse out of range slider - $('.datepicker--time-current-' + name, this.$timepicker).removeClass('-focus-'); - }, - - _onMouseUpRange: function (e) { - this.d.timepickerIsActive = false; - } - }; -})(); - })(window, jQuery); \ No newline at end of file diff --git a/punch_list/public/js/datepicker.min.js b/punch_list/public/js/datepicker.min.js deleted file mode 100644 index 31537f1..0000000 --- a/punch_list/public/js/datepicker.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(t,e,i){!function(){var s,a,n,h="2.2.3",o="datepicker",r=".datepicker-here",c=!1,d='
    ',l={classes:"",inline:!1,language:"ru",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"@",toggleSelected:!0,keyboardNav:!0,position:"bottom left",offset:12,view:"days",minView:"days",showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:",",range:!1,todayButton:!1,clearButton:!1,showEvent:"focus",autoClose:!1,monthsField:"monthsShort",prevHtml:'',nextHtml:'',navTitles:{days:"MM, yyyy",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,onlyTimepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:"",onShow:"",onHide:"",onChangeMonth:"",onChangeYear:"",onChangeDecade:"",onChangeView:"",onRenderCell:""},u={ctrlRight:[17,39],ctrlUp:[17,38],ctrlLeft:[17,37],ctrlDown:[17,40],shiftRight:[16,39],shiftUp:[16,38],shiftLeft:[16,37],shiftDown:[16,40],altUp:[18,38],altRight:[18,39],altLeft:[18,37],altDown:[18,40],ctrlShiftUp:[16,17,38]},m=function(t,a){this.el=t,this.$el=e(t),this.opts=e.extend(!0,{},l,a,this.$el.data()),s==i&&(s=e("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&(this.$altField="string"==typeof this.opts.altField?e(this.opts.altField):this.opts.altField),this.inited=!1,this.visible=!1,this.silent=!1,this.currentDate=this.opts.startDate,this.currentView=this.opts.view,this._createShortCuts(),this.selectedDates=[],this.views={},this.keys=[],this.minRange="",this.maxRange="",this._prevOnSelectValue="",this.init()};n=m,n.prototype={VERSION:h,viewIndexes:["days","months","years"],init:function(){c||this.opts.inline||!this.elIsInput||this._buildDatepickersContainer(),this._buildBaseHtml(),this._defineLocale(this.opts.language),this._syncWithMinMaxDates(),this.elIsInput&&(this.opts.inline||(this._setPositionClasses(this.opts.position),this._bindEvents()),this.opts.keyboardNav&&!this.opts.onlyTimepicker&&this._bindKeyboardEvents(),this.$datepicker.on("mousedown",this._onMouseDownDatepicker.bind(this)),this.$datepicker.on("mouseup",this._onMouseUpDatepicker.bind(this))),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new e.fn.datepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.views[this.currentView]=new e.fn.datepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new e.fn.datepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$datepicker.on("mouseenter",".datepicker--cell",this._onMouseEnterCell.bind(this)),this.$datepicker.on("mouseleave",".datepicker--cell",this._onMouseLeaveCell.bind(this)),this.inited=!0},_createShortCuts:function(){this.minDate=this.opts.minDate?this.opts.minDate:new Date(-86399999136e5),this.maxDate=this.opts.maxDate?this.opts.maxDate:new Date(86399999136e5)},_bindEvents:function(){this.$el.on(this.opts.showEvent+".adp",this._onShowEvent.bind(this)),this.$el.on("mouseup.adp",this._onMouseUpEl.bind(this)),this.$el.on("blur.adp",this._onBlur.bind(this)),this.$el.on("keyup.adp",this._onKeyUpGeneral.bind(this)),e(t).on("resize.adp",this._onResize.bind(this)),e("body").on("mouseup.adp",this._onMouseUpBody.bind(this))},_bindKeyboardEvents:function(){this.$el.on("keydown.adp",this._onKeyDown.bind(this)),this.$el.on("keyup.adp",this._onKeyUp.bind(this)),this.$el.on("hotKey.adp",this._onHotKey.bind(this))},_bindTimepickerEvents:function(){this.$el.on("timeChange.adp",this._onTimeChange.bind(this))},isWeekend:function(t){return-1!==this.opts.weekends.indexOf(t)},_defineLocale:function(t){"string"==typeof t?(this.loc=e.fn.datepicker.language[t],this.loc||(console.warn("Can't find language \""+t+'" in Datepicker.language, will use "ru" instead'),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru)),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,e.fn.datepicker.language[t])):this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,t),this.opts.dateFormat&&(this.loc.dateFormat=this.opts.dateFormat),this.opts.timeFormat&&(this.loc.timeFormat=this.opts.timeFormat),""!==this.opts.firstDay&&(this.loc.firstDay=this.opts.firstDay),this.opts.timepicker&&(this.loc.dateFormat=[this.loc.dateFormat,this.loc.timeFormat].join(this.opts.dateTimeSeparator)),this.opts.onlyTimepicker&&(this.loc.dateFormat=this.loc.timeFormat);var i=this._getWordBoundaryRegExp;(this.loc.timeFormat.match(i("aa"))||this.loc.timeFormat.match(i("AA")))&&(this.ampm=!0)},_buildDatepickersContainer:function(){c=!0,s.append('
    '),a=e("#datepickers-container")},_buildBaseHtml:function(){var t,i=e('
    ');t="INPUT"==this.el.nodeName?this.opts.inline?i.insertAfter(this.$el):a:i.appendTo(this.$el),this.$datepicker=e(d).appendTo(t),this.$content=e(".datepicker--content",this.$datepicker),this.$nav=e(".datepicker--nav",this.$datepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var t,e=this.selectedDates,i=n.getParsedDate(e[0]),s=this,a=new Date(i.year,i.month,i.date,i.hours,i.minutes);t=e.map(function(t){return s.formatDate(s.loc.dateFormat,t)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=e.map(function(t){var e=n.getParsedDate(t);return new Date(e.year,e.month,e.date,e.hours,e.minutes)})),this._prevOnSelectValue=t,this.opts.onSelect(t,a,this)},next:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month+1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year+1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year+10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},prev:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month-1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year-1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year-10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},formatDate:function(t,e){e=e||this.date;var i,s=t,a=this._getWordBoundaryRegExp,h=this.loc,o=n.getLeadingZeroNum,r=n.getDecade(e),c=n.getParsedDate(e),d=c.fullHours,l=c.hours,u=t.match(a("aa"))||t.match(a("AA")),m="am",p=this._replacer;switch(this.opts.timepicker&&this.timepicker&&u&&(i=this.timepicker._getValidHoursFromDate(e,u),d=o(i.hours),l=i.hours,m=i.dayPeriod),!0){case/@/.test(s):s=s.replace(/@/,e.getTime());case/aa/.test(s):s=p(s,a("aa"),m);case/AA/.test(s):s=p(s,a("AA"),m.toUpperCase());case/dd/.test(s):s=p(s,a("dd"),c.fullDate);case/d/.test(s):s=p(s,a("d"),c.date);case/DD/.test(s):s=p(s,a("DD"),h.days[c.day]);case/D/.test(s):s=p(s,a("D"),h.daysShort[c.day]);case/mm/.test(s):s=p(s,a("mm"),c.fullMonth);case/m/.test(s):s=p(s,a("m"),c.month+1);case/MM/.test(s):s=p(s,a("MM"),this.loc.months[c.month]);case/M/.test(s):s=p(s,a("M"),h.monthsShort[c.month]);case/ii/.test(s):s=p(s,a("ii"),c.fullMinutes);case/i/.test(s):s=p(s,a("i"),c.minutes);case/hh/.test(s):s=p(s,a("hh"),d);case/h/.test(s):s=p(s,a("h"),l);case/yyyy/.test(s):s=p(s,a("yyyy"),c.year);case/yyyy1/.test(s):s=p(s,a("yyyy1"),r[0]);case/yyyy2/.test(s):s=p(s,a("yyyy2"),r[1]);case/yy/.test(s):s=p(s,a("yy"),c.year.toString().slice(-2))}return s},_replacer:function(t,e,i){return t.replace(e,function(t,e,s,a){return e+i+a})},_getWordBoundaryRegExp:function(t){var e="\\s|\\.|-|/|\\\\|,|\\$|\\!|\\?|:|;";return new RegExp("(^|>|"+e+")("+t+")($|<|"+e+")","g")},selectDate:function(t){var e=this,i=e.opts,s=e.parsedDate,a=e.selectedDates,h=a.length,o="";if(Array.isArray(t))return void t.forEach(function(t){e.selectDate(t)});if(t instanceof Date){if(this.lastSelectedDate=t,this.timepicker&&this.timepicker._setTime(t),e._trigger("selectDate",t),this.timepicker&&(t.setHours(this.timepicker.hours),t.setMinutes(this.timepicker.minutes)),"days"==e.view&&t.getMonth()!=s.month&&i.moveToOtherMonthsOnSelect&&(o=new Date(t.getFullYear(),t.getMonth(),1)),"years"==e.view&&t.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(o=new Date(t.getFullYear(),0,1)),o&&(e.silent=!0,e.date=o,e.silent=!1,e.nav._render()),i.multipleDates&&!i.range){if(h===i.multipleDates)return;e._isSelected(t)||e.selectedDates.push(t)}else i.range?2==h?(e.selectedDates=[t],e.minRange=t,e.maxRange=""):1==h?(e.selectedDates.push(t),e.maxRange?e.minRange=t:e.maxRange=t,n.bigger(e.maxRange,e.minRange)&&(e.maxRange=e.minRange,e.minRange=t),e.selectedDates=[e.minRange,e.maxRange]):(e.selectedDates=[t],e.minRange=t):e.selectedDates=[t];e._setInputValue(),i.onSelect&&e._triggerOnChange(),i.autoClose&&!this.timepickerIsActive&&(i.multipleDates||i.range?i.range&&2==e.selectedDates.length&&e.hide():e.hide()),e.views[this.currentView]._render()}},removeDate:function(t){var e=this.selectedDates,i=this;if(t instanceof Date)return e.some(function(s,a){return n.isSame(s,t)?(e.splice(a,1),i.selectedDates.length?i.lastSelectedDate=i.selectedDates[i.selectedDates.length-1]:(i.minRange="",i.maxRange="",i.lastSelectedDate=""),i.views[i.currentView]._render(),i._setInputValue(),i.opts.onSelect&&i._triggerOnChange(),!0):void 0})},today:function(){this.silent=!0,this.view=this.opts.minView,this.silent=!1,this.date=new Date,this.opts.todayButton instanceof Date&&this.selectDate(this.opts.todayButton)},clear:function(){this.selectedDates=[],this.minRange="",this.maxRange="",this.views[this.currentView]._render(),this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()},update:function(t,i){var s=arguments.length,a=this.lastSelectedDate;return 2==s?this.opts[t]=i:1==s&&"object"==typeof t&&(this.opts=e.extend(!0,this.opts,t)),this._createShortCuts(),this._syncWithMinMaxDates(),this._defineLocale(this.opts.language),this.nav._addButtonsIfNeed(),this.opts.onlyTimepicker||this.nav._render(),this.views[this.currentView]._render(),this.elIsInput&&!this.opts.inline&&(this._setPositionClasses(this.opts.position),this.visible&&this.setPosition(this.opts.position)),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.onlyTimepicker&&this.$datepicker.addClass("-only-timepicker-"),this.opts.timepicker&&(a&&this.timepicker._handleDate(a),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),a&&(a.setHours(this.timepicker.hours),a.setMinutes(this.timepicker.minutes))),this._setInputValue(),this},_syncWithMinMaxDates:function(){var t=this.date.getTime();this.silent=!0,this.minTime>t&&(this.date=this.minDate),this.maxTime=this.minTime&&i<=this.maxTime,month:o>=this.minTime&&r<=this.maxTime,year:s.year>=a.year&&s.year<=h.year};return e?c[e]:c.day},_getDimensions:function(t){var e=t.offset();return{width:t.outerWidth(),height:t.outerHeight(),left:e.left,top:e.top}},_getDateFromCell:function(t){var e=this.parsedDate,s=t.data("year")||e.year,a=t.data("month")==i?e.month:t.data("month"),n=t.data("date")||1;return new Date(s,a,n)},_setPositionClasses:function(t){t=t.split(" ");var e=t[0],i=t[1],s="datepicker -"+e+"-"+i+"- -from-"+e+"-";this.visible&&(s+=" active"),this.$datepicker.removeAttr("class").addClass(s)},setPosition:function(t){t=t||this.opts.position;var e,i,s=this._getDimensions(this.$el),a=this._getDimensions(this.$datepicker),n=t.split(" "),h=this.opts.offset,o=n[0],r=n[1];switch(o){case"top":e=s.top-a.height-h;break;case"right":i=s.left+s.width+h;break;case"bottom":e=s.top+s.height+h;break;case"left":i=s.left-a.width-h}switch(r){case"top":e=s.top;break;case"right":i=s.left+s.width-a.width;break;case"bottom":e=s.top+s.height-a.height;break;case"left":i=s.left;break;case"center":/left|right/.test(o)?e=s.top+s.height/2-a.height/2:i=s.left+s.width/2-a.width/2}this.$datepicker.css({left:i,top:e})},show:function(){var t=this.opts.onShow;this.setPosition(this.opts.position),this.$datepicker.addClass("active"),this.visible=!0,t&&this._bindVisionEvents(t)},hide:function(){var t=this.opts.onHide;this.$datepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.blur(),t&&this._bindVisionEvents(t)},down:function(t){this._changeView(t,"down")},up:function(t){this._changeView(t,"up")},_bindVisionEvents:function(t){this.$datepicker.off("transitionend.dp"),t(this,!1),this.$datepicker.one("transitionend.dp",t.bind(this,this,!0))},_changeView:function(t,e){t=t||this.focused||this.date;var i="up"==e?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),0>i&&(i=0),this.silent=!0,this.date=new Date(t.getFullYear(),t.getMonth(),1),this.silent=!1,this.view=this.viewIndexes[i]},_handleHotKey:function(t){var e,i,s,a=n.getParsedDate(this._getFocusedDate()),h=this.opts,o=!1,r=!1,c=!1,d=a.year,l=a.month,u=a.date;switch(t){case"ctrlRight":case"ctrlUp":l+=1,o=!0;break;case"ctrlLeft":case"ctrlDown":l-=1,o=!0;break;case"shiftRight":case"shiftUp":r=!0,d+=1;break;case"shiftLeft":case"shiftDown":r=!0,d-=1;break;case"altRight":case"altUp":c=!0,d+=10;break;case"altLeft":case"altDown":c=!0,d-=10;break;case"ctrlShiftUp":this.up()}s=n.getDaysCount(new Date(d,l)),i=new Date(d,l,u),u>s&&(u=s),i.getTime()this.maxTime&&(i=this.maxDate),this.focused=i,e=n.getParsedDate(i),o&&h.onChangeMonth&&h.onChangeMonth(e.month,e.year),r&&h.onChangeYear&&h.onChangeYear(e.year),c&&h.onChangeDecade&&h.onChangeDecade(this.curDecade)},_registerKey:function(t){var e=this.keys.some(function(e){return e==t});e||this.keys.push(t)},_unRegisterKey:function(t){var e=this.keys.indexOf(t);this.keys.splice(e,1)},_isHotKeyPressed:function(){var t,e=!1,i=this,s=this.keys.sort();for(var a in u)t=u[a],s.length==t.length&&t.every(function(t,e){return t==s[e]})&&(i._trigger("hotKey",a),e=!0);return e},_trigger:function(t,e){this.$el.trigger(t,e)},_focusNextCell:function(t,e){e=e||this.cellType;var i=n.getParsedDate(this._getFocusedDate()),s=i.year,a=i.month,h=i.date;if(!this._isHotKeyPressed()){switch(t){case 37:"day"==e?h-=1:"","month"==e?a-=1:"","year"==e?s-=1:"";break;case 38:"day"==e?h-=7:"","month"==e?a-=3:"","year"==e?s-=4:"";break;case 39:"day"==e?h+=1:"","month"==e?a+=1:"","year"==e?s+=1:"";break;case 40:"day"==e?h+=7:"","month"==e?a+=3:"","year"==e?s+=4:""}var o=new Date(s,a,h);o.getTime()this.maxTime&&(o=this.maxDate),this.focused=o}},_getFocusedDate:function(){var t=this.focused||this.selectedDates[this.selectedDates.length-1],e=this.parsedDate;if(!t)switch(this.view){case"days":t=new Date(e.year,e.month,(new Date).getDate());break;case"months":t=new Date(e.year,e.month,1);break;case"years":t=new Date(e.year,0,1)}return t},_getCell:function(t,i){i=i||this.cellType;var s,a=n.getParsedDate(t),h='.datepicker--cell[data-year="'+a.year+'"]';switch(i){case"month":h='[data-month="'+a.month+'"]';break;case"day":h+='[data-month="'+a.month+'"][data-date="'+a.date+'"]'}return s=this.views[this.currentView].$el.find(h),s.length?s:e("")},destroy:function(){var t=this;t.$el.off(".adp").data("datepicker",""),t.selectedDates=[],t.focused="",t.views={},t.keys=[],t.minRange="",t.maxRange="",t.opts.inline||!t.elIsInput?t.$datepicker.closest(".datepicker-inline").remove():t.$datepicker.remove()},_handleAlreadySelectedDates:function(t,e){this.opts.range?this.opts.toggleSelected?this.removeDate(e):2!=this.selectedDates.length&&this._trigger("clickCell",e):this.opts.toggleSelected&&this.removeDate(e),this.opts.toggleSelected||(this.lastSelectedDate=t,this.opts.timepicker&&(this.timepicker._setTime(t),this.timepicker.update()))},_onShowEvent:function(t){this.visible||this.show()},_onBlur:function(){!this.inFocus&&this.visible&&this.hide()},_onMouseDownDatepicker:function(t){this.inFocus=!0},_onMouseUpDatepicker:function(t){this.inFocus=!1,t.originalEvent.inFocus=!0,t.originalEvent.timepickerFocus||this.$el.focus()},_onKeyUpGeneral:function(t){var e=this.$el.val();e||this.clear()},_onResize:function(){this.visible&&this.setPosition()},_onMouseUpBody:function(t){t.originalEvent.inFocus||this.visible&&!this.inFocus&&this.hide()},_onMouseUpEl:function(t){t.originalEvent.inFocus=!0,setTimeout(this._onKeyUpGeneral.bind(this),4)},_onKeyDown:function(t){var e=t.which;if(this._registerKey(e),e>=37&&40>=e&&(t.preventDefault(),this._focusNextCell(e)),13==e&&this.focused){if(this._getCell(this.focused).hasClass("-disabled-"))return;if(this.view!=this.opts.minView)this.down();else{var i=this._isSelected(this.focused,this.cellType);if(!i)return this.timepicker&&(this.focused.setHours(this.timepicker.hours),this.focused.setMinutes(this.timepicker.minutes)),void this.selectDate(this.focused);this._handleAlreadySelectedDates(i,this.focused)}}27==e&&this.hide()},_onKeyUp:function(t){var e=t.which;this._unRegisterKey(e)},_onHotKey:function(t,e){this._handleHotKey(e)},_onMouseEnterCell:function(t){var i=e(t.target).closest(".datepicker--cell"),s=this._getDateFromCell(i);this.silent=!0,this.focused&&(this.focused=""),i.addClass("-focus-"),this.focused=s,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(t,e,i){var s=new Date,a=this.selectedDates,n=!1;a.length&&(n=!0,s=this.lastSelectedDate),s.setHours(e),s.setMinutes(i),n||this._getCell(s).hasClass("-disabled-")?(this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()):this.selectDate(s)},_onClickCell:function(t,e){this.timepicker&&(e.setHours(this.timepicker.hours),e.setMinutes(this.timepicker.minutes)),this.selectDate(e)},set focused(t){if(!t&&this.focused){var e=this._getCell(this.focused);e.length&&e.removeClass("-focus-")}this._focused=t,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=t)},get focused(){return this._focused},get parsedDate(){return n.getParsedDate(this.date)},set date(t){return t instanceof Date?(this.currentDate=t,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),t):void 0},get date(){return this.currentDate},set view(t){return this.viewIndex=this.viewIndexes.indexOf(t),this.viewIndex<0?void 0:(this.prevView=this.currentView,this.currentView=t,this.inited&&(this.views[t]?this.views[t]._render():this.views[t]=new e.fn.datepicker.Body(this,t,this.opts),this.views[this.prevView].hide(),this.views[t].show(),this.nav._render(),this.opts.onChangeView&&this.opts.onChangeView(t),this.elIsInput&&this.visible&&this.setPosition()),t)},get view(){return this.currentView},get cellType(){return this.view.substring(0,this.view.length-1)},get minTime(){var t=n.getParsedDate(this.minDate);return new Date(t.year,t.month,t.date).getTime()},get maxTime(){var t=n.getParsedDate(this.maxDate);return new Date(t.year,t.month,t.date).getTime()},get curDecade(){return n.getDecade(this.date)}},n.getDaysCount=function(t){return new Date(t.getFullYear(),t.getMonth()+1,0).getDate()},n.getParsedDate=function(t){return{year:t.getFullYear(),month:t.getMonth(),fullMonth:t.getMonth()+1<10?"0"+(t.getMonth()+1):t.getMonth()+1,date:t.getDate(),fullDate:t.getDate()<10?"0"+t.getDate():t.getDate(),day:t.getDay(),hours:t.getHours(),fullHours:t.getHours()<10?"0"+t.getHours():t.getHours(),minutes:t.getMinutes(),fullMinutes:t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes()}},n.getDecade=function(t){var e=10*Math.floor(t.getFullYear()/10);return[e,e+9]},n.template=function(t,e){return t.replace(/#\{([\w]+)\}/g,function(t,i){return e[i]||0===e[i]?e[i]:void 0})},n.isSame=function(t,e,i){if(!t||!e)return!1;var s=n.getParsedDate(t),a=n.getParsedDate(e),h=i?i:"day",o={day:s.date==a.date&&s.month==a.month&&s.year==a.year,month:s.month==a.month&&s.year==a.year,year:s.year==a.year};return o[h]},n.less=function(t,e,i){return t&&e?e.getTime()t.getTime():!1},n.getLeadingZeroNum=function(t){return parseInt(t)<10?"0"+t:t},n.resetTime=function(t){return"object"==typeof t?(t=n.getParsedDate(t),new Date(t.year,t.month,t.date)):void 0},e.fn.datepicker=function(t){return this.each(function(){if(e.data(this,o)){var i=e.data(this,o);i.opts=e.extend(!0,i.opts,t),i.update()}else e.data(this,o,new m(this,t))})},e.fn.datepicker.Constructor=m,e.fn.datepicker.language={ru:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.mm.yyyy",timeFormat:"hh:ii",firstDay:1}},e(function(){e(r).datepicker()})}(),function(){var t={days:'
    ',months:'
    ',years:'
    '},s=e.fn.datepicker,a=s.Constructor;s.Body=function(t,i,s){this.d=t,this.type=i,this.opts=s,this.$el=e(""),this.opts.onlyTimepicker||this.init()},s.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".datepicker--cell",e.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=e(t[this.type]).appendTo(this.d.$content),this.$names=e(".datepicker--days-names",this.$el),this.$cells=e(".datepicker--cells",this.$el)},_getDayNamesHtml:function(t,e,s,a){return e=e!=i?e:t,s=s?s:"",a=a!=i?a:0,a>7?s:7==e?this._getDayNamesHtml(t,0,s,++a):(s+='
    '+this.d.loc.daysMin[e]+"
    ",this._getDayNamesHtml(t,++e,s,++a))},_getCellContents:function(t,e){var i="datepicker--cell datepicker--cell-"+e,s=new Date,n=this.d,h=a.resetTime(n.minRange),o=a.resetTime(n.maxRange),r=n.opts,c=a.getParsedDate(t),d={},l=c.date;switch(e){case"day":n.isWeekend(c.day)&&(i+=" -weekend-"),c.month!=this.d.parsedDate.month&&(i+=" -other-month-",r.selectOtherMonths||(i+=" -disabled-"),r.showOtherMonths||(l=""));break;case"month":l=n.loc[n.opts.monthsField][c.month];break;case"year":var u=n.curDecade;l=c.year,(c.yearu[1])&&(i+=" -other-decade-",r.selectOtherYears||(i+=" -disabled-"),r.showOtherYears||(l=""))}return r.onRenderCell&&(d=r.onRenderCell(t,e)||{},l=d.html?d.html:l,i+=d.classes?" "+d.classes:""),r.range&&(a.isSame(h,t,e)&&(i+=" -range-from-"),a.isSame(o,t,e)&&(i+=" -range-to-"),1==n.selectedDates.length&&n.focused?((a.bigger(h,t)&&a.less(n.focused,t)||a.less(o,t)&&a.bigger(n.focused,t))&&(i+=" -in-range-"),a.less(o,t)&&a.isSame(n.focused,t)&&(i+=" -range-from-"),a.bigger(h,t)&&a.isSame(n.focused,t)&&(i+=" -range-to-")):2==n.selectedDates.length&&a.bigger(h,t)&&a.less(o,t)&&(i+=" -in-range-")),a.isSame(s,t,e)&&(i+=" -current-"),n.focused&&a.isSame(t,n.focused,e)&&(i+=" -focus-"),n._isSelected(t,e)&&(i+=" -selected-"),(!n._isInRange(t,e)||d.disabled)&&(i+=" -disabled-"),{html:l,classes:i}},_getDaysHtml:function(t){var e=a.getDaysCount(t),i=new Date(t.getFullYear(),t.getMonth(),1).getDay(),s=new Date(t.getFullYear(),t.getMonth(),e).getDay(),n=i-this.d.loc.firstDay,h=6-s+this.d.loc.firstDay;n=0>n?n+7:n,h=h>6?h-7:h;for(var o,r,c=-n+1,d="",l=c,u=e+h;u>=l;l++)r=t.getFullYear(),o=t.getMonth(),d+=this._getDayHtml(new Date(r,o,l));return d},_getDayHtml:function(t){var e=this._getCellContents(t,"day");return'
    '+e.html+"
    "},_getMonthsHtml:function(t){for(var e="",i=a.getParsedDate(t),s=0;12>s;)e+=this._getMonthHtml(new Date(i.year,s)),s++;return e},_getMonthHtml:function(t){var e=this._getCellContents(t,"month");return'
    '+e.html+"
    "},_getYearsHtml:function(t){var e=(a.getParsedDate(t),a.getDecade(t)),i=e[0]-1,s="",n=i;for(n;n<=e[1]+1;n++)s+=this._getYearHtml(new Date(n,0));return s},_getYearHtml:function(t){var e=this._getCellContents(t,"year");return'
    '+e.html+"
    "},_renderTypes:{days:function(){var t=this._getDayNamesHtml(this.d.loc.firstDay),e=this._getDaysHtml(this.d.currentDate);this.$cells.html(e),this.$names.html(t)},months:function(){var t=this._getMonthsHtml(this.d.currentDate);this.$cells.html(t)},years:function(){var t=this._getYearsHtml(this.d.currentDate);this.$cells.html(t)}},_render:function(){this.opts.onlyTimepicker||this._renderTypes[this.type].bind(this)()},_update:function(){var t,i,s,a=e(".datepicker--cell",this.$cells),n=this;a.each(function(a,h){i=e(this),s=n.d._getDateFromCell(e(this)),t=n._getCellContents(s,n.d.cellType),i.attr("class",t.classes)})},show:function(){this.opts.onlyTimepicker||(this.$el.addClass("active"),this.acitve=!0)},hide:function(){this.$el.removeClass("active"),this.active=!1},_handleClick:function(t){var e=t.data("date")||1,i=t.data("month")||0,s=t.data("year")||this.d.parsedDate.year,a=this.d;if(a.view!=this.opts.minView)return void a.down(new Date(s,i,e));var n=new Date(s,i,e),h=this.d._isSelected(n,this.d.cellType);return h?void a._handleAlreadySelectedDates.bind(a,h,n)():void a._trigger("clickCell",n)},_onClickCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.hasClass("-disabled-")||this._handleClick.bind(this)(i)}}}(),function(){var t='
    #{prevHtml}
    #{title}
    #{nextHtml}
    ',i='
    ',s='#{label}',a=e.fn.datepicker,n=a.Constructor;a.Navigation=function(t,e){this.d=t,this.opts=e,this.$buttonsContainer="",this.init()},a.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".datepicker--nav-action",e.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".datepicker--nav-title",e.proxy(this._onClickNavTitle,this)),this.d.$datepicker.on("click",".datepicker--button",e.proxy(this._onClickNavButton,this))},_buildBaseHtml:function(){this.opts.onlyTimepicker||this._render(),this._addButtonsIfNeed()},_addButtonsIfNeed:function(){this.opts.todayButton&&this._addButton("today"),this.opts.clearButton&&this._addButton("clear")},_render:function(){var i=this._getTitle(this.d.currentDate),s=n.template(t,e.extend({title:i},this.opts));this.d.$nav.html(s),"years"==this.d.view&&e(".datepicker--nav-title",this.d.$nav).addClass("-disabled-"),this.setNavStatus()},_getTitle:function(t){return this.d.formatDate(this.opts.navTitles[this.d.view],t)},_addButton:function(t){this.$buttonsContainer.length||this._addButtonsContainer();var i={action:t,label:this.d.loc[t]},a=n.template(s,i);e("[data-action="+t+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(a)},_addButtonsContainer:function(){this.d.$datepicker.append(i),this.$buttonsContainer=e(".datepicker--buttons",this.d.$datepicker)},setNavStatus:function(){if((this.opts.minDate||this.opts.maxDate)&&this.opts.disableNavWhenOutOfRange){var t=this.d.parsedDate,e=t.month,i=t.year,s=t.date;switch(this.d.view){case"days":this.d._isInRange(new Date(i,e-1,1),"month")||this._disableNav("prev"),this.d._isInRange(new Date(i,e+1,1),"month")||this._disableNav("next");break;case"months":this.d._isInRange(new Date(i-1,e,s),"year")||this._disableNav("prev"),this.d._isInRange(new Date(i+1,e,s),"year")||this._disableNav("next");break;case"years":var a=n.getDecade(this.d.date);this.d._isInRange(new Date(a[0]-1,0,1),"year")||this._disableNav("prev"),this.d._isInRange(new Date(a[1]+1,0,1),"year")||this._disableNav("next")}}},_disableNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(t){var i=e(t.target).closest("[data-action]"),s=i.data("action");this.d[s]()},_onClickNavTitle:function(t){return e(t.target).hasClass("-disabled-")?void 0:"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}}(),function(){var t='
    #{hourVisible} : #{minValue}
    ',i=e.fn.datepicker,s=i.Constructor;i.Timepicker=function(t,e){this.d=t,this.opts=e,this.init()},i.Timepicker.prototype={init:function(){var t="input";this._setTime(this.d.date),this._buildHTML(),navigator.userAgent.match(/trident/gi)&&(t="change"),this.d.$el.on("selectDate",this._onSelectDate.bind(this)),this.$ranges.on(t,this._onChangeRange.bind(this)),this.$ranges.on("mouseup",this._onMouseUpRange.bind(this)),this.$ranges.on("mousemove focus ",this._onMouseEnterRange.bind(this)),this.$ranges.on("mouseout blur",this._onMouseOutRange.bind(this))},_setTime:function(t){var e=s.getParsedDate(t);this._handleDate(t),this.hours=e.hourst.getHours()&&(this.minMinutes=this.opts.minMinutes)},_setMaxTimeFromDate:function(t){ -this.maxHours=t.getHours(),this.maxMinutes=t.getMinutes(),this.d.lastSelectedDate&&this.d.lastSelectedDate.getHours()t?0:i.minHours,this.minMinutes=i.minMinutes<0||i.minMinutes>e?0:i.minMinutes,this.maxHours=i.maxHours<0||i.maxHours>t?t:i.maxHours,this.maxMinutes=i.maxMinutes<0||i.maxMinutes>e?e:i.maxMinutes},_validateHoursMinutes:function(t){this.hoursthis.maxHours&&(this.hours=this.maxHours),this.minutesthis.maxMinutes&&(this.minutes=this.maxMinutes)},_buildHTML:function(){var i=s.getLeadingZeroNum,a={hourMin:this.minHours,hourMax:i(this.maxHours),hourStep:this.opts.hoursStep,hourValue:this.hours,hourVisible:i(this.displayHours),minMin:this.minMinutes,minMax:i(this.maxMinutes),minStep:this.opts.minutesStep,minValue:i(this.minutes)},n=s.template(t,a);this.$timepicker=e(n).appendTo(this.d.$datepicker),this.$ranges=e('[type="range"]',this.$timepicker),this.$hours=e('[name="hours"]',this.$timepicker),this.$minutes=e('[name="minutes"]',this.$timepicker),this.$hoursText=e(".datepicker--time-current-hours",this.$timepicker),this.$minutesText=e(".datepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=e('').appendTo(e(".datepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var t=s.getLeadingZeroNum(this.displayHours),e=s.getLeadingZeroNum(this.minutes);this.$hoursText.html(t),this.$minutesText.html(e),this.d.ampm&&this.$ampm.html(this.dayPeriod)},_updateRanges:function(){this.$hours.attr({min:this.minHours,max:this.maxHours}).val(this.hours),this.$minutes.attr({min:this.minMinutes,max:this.maxMinutes}).val(this.minutes)},_handleDate:function(t){this._setDefaultMinMaxTime(),t&&(s.isSame(t,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):s.isSame(t,this.d.opts.maxDate)&&this._setMaxTimeFromDate(this.d.opts.maxDate)),this._validateHoursMinutes(t)},update:function(){this._updateRanges(),this._updateCurrentTime()},_getValidHoursFromDate:function(t,e){var i=t,a=t;t instanceof Date&&(i=s.getParsedDate(t),a=i.hours);var n=e||this.d.ampm,h="am";if(n)switch(!0){case 0==a:a=12;break;case 12==a:h="pm";break;case a>11:a-=12,h="pm"}return{hours:a,dayPeriod:h}},set hours(t){this._hours=t;var e=this._getValidHoursFromDate(t);this.displayHours=e.hours,this.dayPeriod=e.dayPeriod},get hours(){return this._hours},_onChangeRange:function(t){var i=e(t.target),s=i.attr("name");this.d.timepickerIsActive=!0,this[s]=i.val(),this._updateCurrentTime(),this.d._trigger("timeChange",[this.hours,this.minutes]),this._handleDate(this.d.lastSelectedDate),this.update()},_onSelectDate:function(t,e){this._handleDate(e),this.update()},_onMouseEnterRange:function(t){var i=e(t.target).attr("name");e(".datepicker--time-current-"+i,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(t){var i=e(t.target).attr("name");this.d.inFocus||e(".datepicker--time-current-"+i,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(t){this.d.timepickerIsActive=!1}}}()}(window,jQuery); \ No newline at end of file diff --git a/punch_list/public/js/firebase.js b/punch_list/public/js/firebase.js deleted file mode 100644 index de00f33..0000000 --- a/punch_list/public/js/firebase.js +++ /dev/null @@ -1,46 +0,0 @@ -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; - // ... -}); - diff --git a/punch_list/public/js/i18n/datepicker.cs.js b/punch_list/public/js/i18n/datepicker.cs.js deleted file mode 100644 index a89db7c..0000000 --- a/punch_list/public/js/i18n/datepicker.cs.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.da.js b/punch_list/public/js/i18n/datepicker.da.js deleted file mode 100644 index f34456e..0000000 --- a/punch_list/public/js/i18n/datepicker.da.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.de.js b/punch_list/public/js/i18n/datepicker.de.js deleted file mode 100644 index fd9f8ff..0000000 --- a/punch_list/public/js/i18n/datepicker.de.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.en.js b/punch_list/public/js/i18n/datepicker.en.js deleted file mode 100644 index a5b2437..0000000 --- a/punch_list/public/js/i18n/datepicker.en.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); diff --git a/punch_list/public/js/i18n/datepicker.es.js b/punch_list/public/js/i18n/datepicker.es.js deleted file mode 100644 index a8b6af5..0000000 --- a/punch_list/public/js/i18n/datepicker.es.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.fi.js b/punch_list/public/js/i18n/datepicker.fi.js deleted file mode 100644 index 9619705..0000000 --- a/punch_list/public/js/i18n/datepicker.fi.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.fr.js b/punch_list/public/js/i18n/datepicker.fr.js deleted file mode 100644 index 0d083b2..0000000 --- a/punch_list/public/js/i18n/datepicker.fr.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.hu.js b/punch_list/public/js/i18n/datepicker.hu.js deleted file mode 100644 index 7d144b3..0000000 --- a/punch_list/public/js/i18n/datepicker.hu.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.nl.js b/punch_list/public/js/i18n/datepicker.nl.js deleted file mode 100644 index 8d29a5a..0000000 --- a/punch_list/public/js/i18n/datepicker.nl.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.pl.js b/punch_list/public/js/i18n/datepicker.pl.js deleted file mode 100644 index 3c0f565..0000000 --- a/punch_list/public/js/i18n/datepicker.pl.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.pt-BR.js b/punch_list/public/js/i18n/datepicker.pt-BR.js deleted file mode 100644 index 13a79f5..0000000 --- a/punch_list/public/js/i18n/datepicker.pt-BR.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.pt.js b/punch_list/public/js/i18n/datepicker.pt.js deleted file mode 100644 index 92a3a08..0000000 --- a/punch_list/public/js/i18n/datepicker.pt.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.ro.js b/punch_list/public/js/i18n/datepicker.ro.js deleted file mode 100644 index 0034204..0000000 --- a/punch_list/public/js/i18n/datepicker.ro.js +++ /dev/null @@ -1,13 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.sk.js b/punch_list/public/js/i18n/datepicker.sk.js deleted file mode 100644 index 3312386..0000000 --- a/punch_list/public/js/i18n/datepicker.sk.js +++ /dev/null @@ -1,12 +0,0 @@ -;(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); \ No newline at end of file diff --git a/punch_list/public/js/i18n/datepicker.zh.js b/punch_list/public/js/i18n/datepicker.zh.js deleted file mode 100644 index 08633cc..0000000 --- a/punch_list/public/js/i18n/datepicker.zh.js +++ /dev/null @@ -1,12 +0,0 @@ -;(function ($) { $.fn.datepicker.language['zh'] = { - days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], - daysShort: ['日', '一', '二', '三', '四', '五', '六'], - daysMin: ['日', '一', '二', '三', '四', '五', '六'], - months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - monthsShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], - today: '今天', - clear: '清除', - dateFormat: 'yyyy-mm-dd', - timeFormat: 'hh:ii', - firstDay: 1 -}; })(jQuery); \ No newline at end of file diff --git a/punch_list/public/js/myFirebase.js b/punch_list/public/js/myFirebase.js deleted file mode 100644 index 1f1485c..0000000 --- a/punch_list/public/js/myFirebase.js +++ /dev/null @@ -1,800 +0,0 @@ -var version = "2019.07.18-1600"; - -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" -}; - -var logging = false; - -function consoleLog(logMessage) { - if ( logging === true ) { - console.log(logMessage); - } -} - -//firebase.initializeApp(firebaseConfig); -if (!firebase.apps.length) { - firebase.initializeApp(config); -} - -function initApp() { - consoleLog("function: initApp()"); - // Auth state changes. - // [START authstatelistener] - firebase.auth().onAuthStateChanged(function(user){ - consoleLog(`in onAuthStateChanged`); - if (user) { - consoleLog(`${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) { - consoleLog('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; - consoleLog('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) { - consoleLog("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) { - consoleLog("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() { - consoleLog("function: genDaily()"); - - var daily = [ "Check Workday", "Check Expenses", "Check Change Cases", "Check TD's", "Check at-mentions" ]; - consoleLog(`${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() { - consoleLog("function: genWeekly()"); - -//get next monday: - // var d = new Date(); - // d.setDate(d.getDate() + (1 + 7 - d.getDay()) % 7); - // consoleLog(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) { - consoleLog("function: setPriority(" + sortObject + ", " + newPosition + ")"); - - var priority = {}; - - priority['users/' + window.uid + '/punches/' + sortObject + '/priority' ] = parseInt(newPosition); - - firebase.database().ref().update(priority); - - $( '#' + sortObject).attr("priority", newPosition); -// loadPunches(window.uid); -} - -function startPunch(reference) { - consoleLog("function: startPunch(" + reference + ")"); - - - var exists = document.getElementById("timer" + reference); - if ( exists === null ) { - consoleLog("Generate Element: timer" + reference); - genPunchListItem('
    ', '#details-col-one' + reference); - } - - var timerExists = exists.innerHTML; - consoleLog(timerExists); - if (timerExists === null || timerExists === '') { - consoleLog("createTimer(" + reference + ", " + time + ")"); - var time = new Date().getTime(); - createTimer("timer" + reference, time); - } -} - -function completePunch(reference) { - - consoleLog("function: completePunch(" + reference + ")"); - - deletePunchElement(reference); - -} - -function setPunchProgress(reference, p) { - - consoleLog("function: setPunchProgress(" + reference + ", " + p + ")"); - - var progress = {}; - progress['users/' + window.uid + '/punches/' + reference + '/progress'] = p; - firebase.database().ref().update(progress); - - switch(p.toLowerCase()) { - case "in progress": - // execute - var refClass = "inProgress"; - var rmClass = [ "punch-default", "waiting" ]; - - var start = new Date().getTime(); - var startTime = {}; - startTime['users/' + window.uid + '/punches/' + reference + '/startTime'] = start; - - firebase.database().ref().update(startTime); - //startPunch(reference); - break; - case "waiting": - // execute - var refClass = "waiting"; - var rmClass = [ "punch-default", "inProgress" ]; - break; - case "done": - var end = new Date().getTime(); - var endTime = {}; - endTime['users/' + window.uid + '/punches/' + reference + '/endTime'] = end; - - firebase.database().ref().update(endTime); - positionLoop(); - //completePunch(reference); - break; - default: - consoleLog("function: setStyle(" + reference + ", " + progress + "), did not match a condition. :("); - } -// setStyle(reference, p); -} - -function setStyle(reference, progress) { - - switch(progress.toLowerCase()) { - case "new": - // execute - var refClass = "punch-default"; - var rmClass = [ "waiting", "inProgress" ]; - break; - case "in progress": - // execute - var refClass = "inProgress"; - var rmClass = [ "punch-default", "waiting" ]; - startPunch(reference); - break; - case "waiting": - // execute - var refClass = "waiting"; - var rmClass = [ "punch-default", "inProgress" ]; - break; - case "done": - completePunch(reference); - break; - default: - consoleLog("function: setStyle(" + reference + ", " + progress + "), did not match a condition. :("); - } - - elementIds = [ '#' + reference, '#progress' + reference ]; - - var c; - var i; - - consoleLog("Element Ids: " + elementIds); - for (i in elementIds) { - for (c in rmClass) { - consoleLog("Removing: " + rmClass[c] + ", from: " + elementIds[i]); - $( elementIds[i] ).removeClass( rmClass[c] ); - } - consoleLog("Adding: " + refClass + ", to: " + elementIds[i]); - $( elementIds[i] ).addClass( refClass ); - } -} - -function clearDefault(a){ - if (a.defaultValue === a.value) { - a.value=""; - } -} - -function positionLoop() { - $( "li" ).each(function( i, l ){ - var punchRef = firebase.database().ref('users/' + uid + '/punches/' + l.id + '/priority'); - punchRef.once('value').then(function(snapshot) { - var cPriority = snapshot.val(); - var nPriority = i; - - if ( parseInt(cPriority) < 100 ) { - consoleLog("Updating: " + l.id + " priority, from: " + cPriority + ", to: " + nPriority); - setPriority(l.id, nPriority); - } - }); - //consoleLog("i: " + i + " l: " + l.id); - }); -} - -function mkSortable(){ - consoleLog("function: mkSortable()"); - $( function() { - $( "#sortable" ).sortable({ - cancel: ".portlet-toggle", - placeholder: "portlet-placeholder ui-corner-all", - revert: true, - distance: 50, - start: function(event, ui) { - //consoleLog($( this ).( "li" )); - consoleLog(ui.item.context.id); - consoleLog(`Start Position: ${ui.item.index()}`); - }, - stop: function(event, ui) { -// setPriority(window.sortObjectUUID, ui.item.index()); - consoleLog(event, ui); - setPriority(ui.item.context.id, ui.item.index()); - consoleLog(`New Position: ${ui.item.index()}`); - positionLoop(); - } - }); - }); -} - -function enableDetail(){ - consoleLog("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) { - consoleLog(`enabling ${element}`); - document.getElementById(element).style.display = "block"; -} - -function disableElement(element) { - consoleLog(`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(); - consoleLog(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); } - - //consoleLog("Setting Timer on element:" + element); - - var exists = document.getElementById(element); - if (exists != null) { - document.getElementById(element).innerHTML = days + "day(s), " + hours + ":" + minutes + ":" + seconds; - } else { -// consoleLog("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 ) { - consoleLog("updating: " + element + ", with: " + d + ", was: " + e); - document.getElementById(element).innerHTML = d; - } else if ( d === e ) { - consoleLog("Not Updating: " + element + ", because: " + d + " === " + e); - } else { - consoleLog("Not updating: " + element + ", because: Something weird happened with: " + d + " & " + e); - } - } else { - consoleLog("add new element"); - } -} - -function updatePunchElement(childKey, childData) { - - setStyle(childKey, childData.progress); - - if (childData.progress.toLowerCase != "done") { - updateElementData("priority" + childKey, childData.priority); - $( '#' + childKey).prop("priority", childData.priority); - updateElementData("subject" + childKey, childData.subject); - updateElementData("progress" + childKey, childData.progress); - updateElementData("neededby-data" + childKey, childData.needByDate); - } -} - - -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('
  1. ', '#sortable'); - genPunchListItem('
    ', '#' + childKey); - genPunchListItem('
    ', '#div-portlet' + childKey); - genPunchListItem('
    ', '#div-portlet' + childKey); - genPunchListItem('
    ' + childData.priority + '
    ', '#priority-container' + childKey); - genPunchListItem('
    ' + childData.subject + '
    ', '#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 clearTagFilter() { - consoleLog("clearing tags"); - - $( "li" ) - .removeClass( "hide" ); -} - -function tagFilter(reference) { - consoleLog("Filtering Punches on: " + reference); - - $( "li" ) - .addClass( "hide" ); - - $( "." + reference ) - .closest( "li" ) - .removeClass( "hide" ); -} - -function loadPunches(uid) { - consoleLog("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) { - consoleLog("child Added"); - addPunchElement(data.key, data.val()); - }); - - mkSortable(); -} - -function sortList() { - consoleLog('function: sortList()'); - - var list = $('#sortable'); - var li = list.children('li'); - - consoleLog(list); - consoleLog(li); - - li.detach().sort(function(a, b) { - console.log( $(a).attr('priority') ); - return $(a).attr('priority') - $(b).attr('priority'); - }); - - list.append(li); - positionLoop(); -} - -var looper = setInterval(function() { - var uid = window.uid; - var punchesRef = firebase.database().ref('users/' + uid + '/punches').orderByChild('priority'); - punchesRef.on('child_changed', function(data) { - consoleLog("Child Changed"); - updatePunchElement(data.key, data.val()); -// deletePunchElement(data.key); -// addPunchElement(data.key, data.val()); - }); - - punchesRef.on('child_removed', function(data) { - consoleLog("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"); - - sortList(); -// loadPunches(window.uid); -// document.getElementById("newEventList").innerHTML = jsonStr; -} - - -// load everything up! -window.onload = function() { - initApp(); -}; - -document.getElementById("versionInfo").innerHTML = version; diff --git a/punch_list/public/js/punch.js b/punch_list/public/js/punch.js deleted file mode 100644 index ccbb0bc..0000000 --- a/punch_list/public/js/punch.js +++ /dev/null @@ -1,716 +0,0 @@ -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 = '
      ' + version + '
      '; - 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 = '
        '; - - 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 += '
      1. '; - list += '
        '; - list += '
        '; - list += '
        ' +punchList[i].priority + '
        ' + punchList[i].subject + '
        '; - list += '
        ' + punchList[i].progress + '
        '; - // status dropdown - list += ''; -/* - if (style === "inProgress") { - list += ''; - } else if (style === "punch-default") { - list += ''; - } -*/ - if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) { - list += '
        ' + punchList[i].nDate + '
        '; - } else { - list += '
         
        '; - } - if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) { - console.log('overdue'); - list += '
        OVER DUE
        '; - } else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) { - console.log('due soon'); - list += '
        DUE SOON
        '; - } else { - list += '
         
        '; - } - if ( punchList[i].tags != undefined ) { - list += '
        '; - for (t = 0; t < punchList[i].tags.length; t++) { - list += '' + punchList[i].tags[t] + ''; - if ( (t + 1) < punchList[i].tags.length ) { - list += ", "; - } - } - } - list += '
        '; - list += '
        '; - if ( punchList[i].startTime != undefined ) { - list += '
        '; - list += new Date(punchList[i].startTime); - list += '
        '; - } - if ( punchList[i].notes != "" ) { - list += '
        '; - } - list += ''; - list += '
      2. '; - } - } - } 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 += '
      3. '; - list += '
        '; - list += '
        '; - list += '
        ' + punchList[i].priority + '
        ' + punchList[i].subject + '
        '; - list += '
        ' + punchList[i].progress + '
        '; - // status dropdown - list += ''; -/* - if (style === "inProgress") { - list += ''; - } else if (style === "punch-default") { - list += ''; - } -*/ - if ( punchList[i].nDate != null && punchList[i].nDate != undefined && punchList[i].nDate != '' ) { - list += '
        ' + punchList[i].nDate + '
        '; - } else { - list += '
         
        '; - } - if ( (new Date(punchList[i].nDate).getTime() - new Date().getTime()) <= 0 ) { - console.log('overdue'); - list += '
        OVER DUE
        '; - } else if ( ((new Date(punchList[i].nDate).getTime() - new Date().getTime()) / 1000) <= 259200 ) { - console.log('due soon'); - list += '
        DUE SOON
        '; - } else { - list += '
         
        '; - } - if ( punchList[i].tags != undefined ) { - list += '
        '; - for (t = 0; t < punchList[i].tags.length; t++) { - list += '' + punchList[i].tags[t] + ''; - if ( (t + 1) < punchList[i].tags.length ) { - list += ", "; - } - } - } - list += '
        '; - list += '
        '; - if ( punchList[i].startTime != undefined ) { - list += '
        Started: '; - list += new Date(punchList[i].startTime); - list += '
        '; - } - if ( punchList[i].notes != "" ) { - list += '
        '; - list += '
        '; - list += '
        '; - } - list += ''; - list += '
      4. '; - } - } - } - - 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, - 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( ""); - - $( ".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 += '
      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; - - 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; -}); diff --git a/punch_list/style.css b/punch_list/style.css deleted file mode 100644 index 73ccfd4..0000000 --- a/punch_list/style.css +++ /dev/null @@ -1,184 +0,0 @@ -body { - background-color: #333; - color: #fff; - padding-top: 0px; - padding-left: 0px; - margin: 0px; -} - -th { color: #FFF; font-size: 28px; } -table { border-collapse: collapse; } -table, th, td { border: 0px solid #999; padding: 0px; padding-top: 0px; padding-bottom: 0px; } - -.clear { clear: both ;} - - -.grid-container { - display: grid; - grid-template-areas: - 'top-bar' - 'info-bar' - 'left' - 'right' - 'bottom'; - grid-gap: 3px; - padding: 4px; - padding-top: 0px; - width: 100%; -} -} - -.grid-container { - display: grid; - grid-template-areas: - 'top-bar top-bar' - 'info-bar info-bar' - 'left right' - 'bottom bottom'; - grid-gap: 3px; - padding: 4px; - padding-top: 0px; - width: 100%; -} -} - -.grid-top-bar { - grid-area: top-bar; - padding: 0px; - width: 100%; - background-color: #222; -} - -.grid-info-bar { - grid-area: info-bar; - padding-top: 0px; - background-color: #222; - clear: both; -} - -.grid-main { - width: 75%; - grid-area: right; -} - -.grid-left { - grid-area: left; - width: 25%; - min-width: 500px; - border-right: 1px solid #AAA; -} - -.grid-bottom { - grid-area: bottom; - background-color: #222; -} - -.grid-clock { -} - -.grid-meta { - border: 0px solid #AAA; - background-color: #000; - color: lime; - float: right; -} - -.grid-nav { -} - -.grid-events { -} - -.main { - width: 100%; - min-width: 100%; - background-color: #222; -} - -.mainClock-cal { - text-align: center; - font-size: 20px; - border-left: 1px solid #999; - border-top: 1px solid #999; - border-bottom: 1px solid #999; - border-right: 1px solid #999; - padding: 5px; - float: left; -} - -.mainClock-left { - text-align: center; - font-size: 20px; - border-left: 1px solid #999; - border-top: 1px solid #999; - border-bottom: 1px solid #999; - border-right: 0px solid #999; - padding: 5px; - float: left; -} - -.mainClock-right { - text-align: center; - font-size: 20px; - border-left: 0px solid #999; - border-top: 1px solid #999; - border-bottom: 1px solid #999; - border-right: 1px solid #999; - padding: 5px; - float: left; -} - -.events { -/* border: 1px solid #DDD; */ - padding: 2px; - padding-right: 10px; -} - -.events-current { - background-color: #666; -/* border: 1px solid #DDD; */ - padding: 2px; - padding-right: 10px; -} - -th.events { - text-align: left; -} - -table.events { -} - -/*.btn-group .button { - background-color: #4CAF50; - border: 1px solid green; - color: white; - padding: 15px 32px; - text-align: center; - text-decoration: none; - display: inline-block; - font-size: 16px; - cursor: pointer; - float: right; - border-bottom: 2px solid #AAA; -} */ - -.btn-group .button:not(:last-child) { - border-right: none; /* Prevent double borders */ -} - -.btn-group .button:hover { - background-color: #3e8e41; -} - -.countdown { float: right; text-align: right; font-size: 60px; } -.warn { color: yellow; } -.over { color: red; } -.green { color: lime; } -.debug { background-color: #000; color: lime; border: 2px; border-color: lime; } -.notes { min-width: 1000px; width: 100%; background-color: #000; color: #AAA; min-height: 200px; border: 1px solid #aaa;} -.notesTitle { background-color: #000; color: #AAA; font-size: 20px;} - -.subject { color: #fff; font-size: 45px; } -.header { width: 100%; background-color: #222; } - - diff --git a/punch_list/test.sh b/punch_list/test.sh deleted file mode 100644 index a5a9e66..0000000 --- a/punch_list/test.sh +++ /dev/null @@ -1,34 +0,0 @@ -URL='https://punchlist-1561043639952.firebaseio.com' -AUTH_TOKEN='Xs2tPGdB6IhpLGopIabq4CNXK2W3GOAD84nOvglA' - -function delete() { - curl -X DELETE "${URL}/${1}?auth=${AUTH_TOKEN}" -} - -function create() { - curl -X POST -d '{ - "nDate": "July 31, 2019 22:00", - "subject": "Threat Model for Unlinked Daemons", - "priority": 1, - "progress": "new", - "notes": "", - "tags": [ - "work", - "vuln management" - ] - }' "${URL}/punches.json?auth=${AUTH_TOKEN}" -} - -function getMeta() { - curl -X GET "${URL}/meta.json?print=pretty&auth=${AUTH_TOKEN}" -} - -function getPunches() { - curl -X GET "${URL}/punches.json?print=pretty&auth=${AUTH_TOKEN}" -} - -#create - -getMeta - -getPunches diff --git a/punch_list/timePicker.js b/punch_list/timePicker.js deleted file mode 100644 index 62e3e73..0000000 --- a/punch_list/timePicker.js +++ /dev/null @@ -1,79 +0,0 @@ -// Create start date -var start = new Date(), - prevDay, - startHours = 9; - - timeFormat = 'hh:mm:ss', -// 09:00 AM -start.setHours(9); -start.setMinutes(0); - -// If today is Saturday or Sunday set 10:00 AM -if ([6, 0].indexOf(start.getDay()) != -1) { - start.setHours(10); - startHours = 10; -} - -$('#timepickerCreate').datepicker({ - timepicker: true, - language: 'en', - startDate: start, - minHours: 0, - maxHours: 23, - onSelect: function (fd, d, picker) { - // Do nothing if selection was cleared - if (!d) return; - - var day = d.getDay(); - - // Trigger only if date is changed - if (prevDay != undefined && prevDay == day) return; - prevDay = day; - - // If chosen day is Saturday or Sunday when set - // hour value for weekends, else restore defaults - if (day == 6 || day == 0) { - picker.update({ -// minHours: 10, -// maxHours: 16 - }) - } else { - picker.update({ - // minHours: 9, -// maxHours: 18 - }) - } - } -}) - -$('#timepickerEdit').datepicker({ - timepicker: true, - language: 'en', - startDate: start, - minHours: 0, - maxHours: 23, - onSelect: function (fd, d, picker) { - // Do nothing if selection was cleared - if (!d) return; - - var day = d.getDay(); - - // Trigger only if date is changed - if (prevDay != undefined && prevDay == day) return; - prevDay = day; - - // If chosen day is Saturday or Sunday when set - // hour value for weekends, else restore defaults - if (day == 6 || day == 0) { - picker.update({ -// minHours: 10, -// maxHours: 16 - }) - } else { - picker.update({ - // minHours: 9, -// maxHours: 18 - }) - } - } -})