From 3d160fde90e18dcb0f0cc8d18af523d876d6033b Mon Sep 17 00:00:00 2001 From: Ronan Date: Sun, 12 May 2019 19:46:20 -0700 Subject: [PATCH] blank waiver uploading --- .firebase/hosting.ZGlzdA.cache | 66 ++++---- package-lock.json | 5 + package.json | 1 + src/assets/css/admin.scss | 287 ++++++++++++++++++++++++++++++++- src/assets/css/vars.scss | 1 + src/main.js | 2 + src/views/admin.vue | 149 ++++++++++++++++- 7 files changed, 471 insertions(+), 40 deletions(-) diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 0411a91..5832dd9 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -1,33 +1,33 @@ -browserconfig.xml,1557691513792,9fc901f4bb068af5a210ac3c870359cd1d4a49f76d0c813ea2b7bb63c0dd757c -favicon-16x16.png,1557691513792,0897b73091887181db0b89df4d3ca857fda2959dd09eab9229b53da04322a3a6 -android-chrome-192x192.png,1557691513792,3b2da7123fdd20c6cccb4540b08c4d94e404cd1066c9da64f63c6fe03d11c089 -favicon-32x32.png,1557691513792,f37468224525c5ae80533954b2ea658b5f0bb279c5b21eba01d33deda8e6d6bd -index.html,1557691513792,d113b941955a36aca624641267cd0fe6b663e8c532264b895384aa8f5c08b790 -apple-touch-icon.png,1557691513792,5cea7007fe2a085e8128742d4c9fb5a8740b8afbd051ad871d7fbd93495bcdbb -manifest.json,1557691513792,33723749b3ae96632dd0c75a85e0d4002bf46761c093279c0ea9b21a458faa0f -precache-manifest.a1d26eb609e04438ed2221d555874492.js,1557691513792,0f25d00f559a4d82453dbc40e42d0af470b1b949b8901826f811bd88d578517e -robots.txt,1557691513792,c17e70846d7031bb27102edfb33b59d1e3e40a8e8e8097af75b7766e7fffc250 -service-worker.js,1557691513792,f827b1f977a64e5ecb10dff2082e5024b4ba51321ec94f701c926083b3afe50b -mstile-150x150.png,1557691513792,45fcb6d5b2769b9400e2fc27b3a47db05f2f732605091289f5eea01f5970fd7e -css/chunk-vendors.de600c15.css,1557691513814,10741e9c2637c2412e6c8f4275f8b2b9b4c3acd38dbdf6cae10bf0590d83352c -safari-pinned-tab.svg,1557691513792,0356f96855217cf3f99d65d0028a8af1610152381893f9db2dcbe4fd4cc84b93 -img/icons/android-chrome-192x192.png,1557691513815,97e1127ad8db90e0349c838ecf9351fc0c370f9606f6ab309fe17444d26a9d59 -css/app.d00d4743.css,1557691513806,7d8c3e18eac2fc8af07435d41befb5e5d80053b2da1339596c1359f528742404 -img/icons/apple-touch-icon-120x120.png,1557691513815,13e4908bb32e2ca95e375ca720887ef85057fb3872d6f028c63ba22df9b12ed9 -img/icons/apple-touch-icon-152x152.png,1557691513815,879d14ef1bd94f81c11ca6fa51ebca226bf6c88c86447aaf560752528e144067 -img/icons/apple-touch-icon-60x60.png,1557691513815,a27014cb4410df491f64e3b5411987418ff6d729b351056a3de84e744c681a52 -img/icons/apple-touch-icon-76x76.png,1557691513815,65d6c498ad60f94b338df3f1f4551303ec84306ecb1c7e615ed64489fffc8b28 -img/icons/apple-touch-icon-180x180.png,1557691513815,ca5a8e637d730848e77716ed970da1a4a5fe9d3b4be21e43f33cf5ebcaf03e7d -img/icons/favicon-16x16.png,1557691513815,563096b119e9b3f8060292a6fc3e091e2a98ee0d1c94ca99de941f78c7fa077c -img/icons/favicon-32x32.png,1557691513815,f5a182df55d21b93c27ec89bd600abe40f3fac23df563e4cfc9efd5edd248886 -img/icons/apple-touch-icon.png,1557691513815,08b37da608cf827a037d8f600a01a32b2f74728291e679b03679fd3619da3a43 -img/icons/msapplication-icon-144x144.png,1557691513815,27b3b62de2e36ac452e86079762d3cfd37c33dc8cbde0a7c5657e5a7c32d971a -img/icons/mstile-150x150.png,1557691513815,ea1dc2c1c63ffe2668cacc9d170cee33b50a2d58e1591b8399004629e3c1ae67 -img/icons/safari-pinned-tab.svg,1557691513815,0858aec0c8ea5d0b50b2bfca81dbef78aa3039b295a7c11386b8d3c378f35326 -js/app.abff7502.js,1557691513813,ff2411d98dcfc9345d450b6e5378158fd430fda7131cac96ed54b1f4678f22f0 -favicon.ico,1557691513792,3fbfded31bb8316b434c4fc555c3facdf5cfb5f97b18b2d3b845a443df83be12 -img/icons/android-chrome-512x512.png,1557691513815,07426bba3be5f2ea36f5a6f543b71bfb02277982e28e22509fd85f4f998aefff -android-chrome-512x512.png,1557691513792,a3e518d4f473019dc7f412f2807388e16698e79b334cc107d14b74e85704f005 -js/app.abff7502.js.map,1557691513814,44fbed8527a80e372de2082b64d62ac9db43f5c9493ee964a50162466eb383fb -js/chunk-vendors.d6244fce.js,1557691513815,69ec9cce844d2a71f918bb32e9478117dfa2821ed7802e0b3ec4fb302bde75aa -js/chunk-vendors.d6244fce.js.map,1557691513814,2315f8f7ea4baf1f16a85353e573049ee94a6cf0fb6dda0fbea14c4923c11eb5 +browserconfig.xml,1557715570916,9fc901f4bb068af5a210ac3c870359cd1d4a49f76d0c813ea2b7bb63c0dd757c +apple-touch-icon.png,1557715570916,5cea7007fe2a085e8128742d4c9fb5a8740b8afbd051ad871d7fbd93495bcdbb +android-chrome-192x192.png,1557715570916,3b2da7123fdd20c6cccb4540b08c4d94e404cd1066c9da64f63c6fe03d11c089 +favicon-16x16.png,1557715570916,0897b73091887181db0b89df4d3ca857fda2959dd09eab9229b53da04322a3a6 +favicon-32x32.png,1557715570916,f37468224525c5ae80533954b2ea658b5f0bb279c5b21eba01d33deda8e6d6bd +index.html,1557715570916,08c358a66b9f7e0bfbd0b18ee9401aec5dd43d82190a000c73099d47660db8ff +manifest.json,1557715570916,33723749b3ae96632dd0c75a85e0d4002bf46761c093279c0ea9b21a458faa0f +robots.txt,1557715570916,c17e70846d7031bb27102edfb33b59d1e3e40a8e8e8097af75b7766e7fffc250 +precache-manifest.d784cd65374c3594e2d9ee6e42cb1340.js,1557715570916,280e5e422d66d5f6ac13bd3acc4b402c68af0b43783d11031a5b544f1cb5562d +service-worker.js,1557715570916,844150801f0bf5807aa89a3de2bc97b92665891754996d57d1c5f04b31172a08 +mstile-150x150.png,1557715570916,45fcb6d5b2769b9400e2fc27b3a47db05f2f732605091289f5eea01f5970fd7e +css/chunk-vendors.de600c15.css,1557715570935,10741e9c2637c2412e6c8f4275f8b2b9b4c3acd38dbdf6cae10bf0590d83352c +img/icons/android-chrome-192x192.png,1557715570938,97e1127ad8db90e0349c838ecf9351fc0c370f9606f6ab309fe17444d26a9d59 +img/icons/apple-touch-icon-120x120.png,1557715570939,13e4908bb32e2ca95e375ca720887ef85057fb3872d6f028c63ba22df9b12ed9 +safari-pinned-tab.svg,1557715570932,0356f96855217cf3f99d65d0028a8af1610152381893f9db2dcbe4fd4cc84b93 +img/icons/apple-touch-icon-152x152.png,1557715570936,879d14ef1bd94f81c11ca6fa51ebca226bf6c88c86447aaf560752528e144067 +css/app.740523e9.css,1557715570933,97e42a5c3fe5013f6ef3f02fa653eebf5e927035f4f52406f6a968f0f3e57a78 +img/icons/apple-touch-icon-180x180.png,1557715570938,ca5a8e637d730848e77716ed970da1a4a5fe9d3b4be21e43f33cf5ebcaf03e7d +img/icons/apple-touch-icon-76x76.png,1557715570938,65d6c498ad60f94b338df3f1f4551303ec84306ecb1c7e615ed64489fffc8b28 +img/icons/favicon-16x16.png,1557715570939,563096b119e9b3f8060292a6fc3e091e2a98ee0d1c94ca99de941f78c7fa077c +img/icons/apple-touch-icon.png,1557715570939,08b37da608cf827a037d8f600a01a32b2f74728291e679b03679fd3619da3a43 +img/icons/apple-touch-icon-60x60.png,1557715570938,a27014cb4410df491f64e3b5411987418ff6d729b351056a3de84e744c681a52 +img/icons/favicon-32x32.png,1557715570939,f5a182df55d21b93c27ec89bd600abe40f3fac23df563e4cfc9efd5edd248886 +img/icons/msapplication-icon-144x144.png,1557715570939,27b3b62de2e36ac452e86079762d3cfd37c33dc8cbde0a7c5657e5a7c32d971a +img/icons/mstile-150x150.png,1557715570938,ea1dc2c1c63ffe2668cacc9d170cee33b50a2d58e1591b8399004629e3c1ae67 +favicon.ico,1557715570916,3fbfded31bb8316b434c4fc555c3facdf5cfb5f97b18b2d3b845a443df83be12 +img/icons/safari-pinned-tab.svg,1557715570938,0858aec0c8ea5d0b50b2bfca81dbef78aa3039b295a7c11386b8d3c378f35326 +js/app.516fb396.js,1557715570935,e29c48e4e5995832b0ec17efa47b30ed47fc057dc6a2611fac98f22e65573d32 +img/icons/android-chrome-512x512.png,1557715570939,07426bba3be5f2ea36f5a6f543b71bfb02277982e28e22509fd85f4f998aefff +android-chrome-512x512.png,1557715570916,a3e518d4f473019dc7f412f2807388e16698e79b334cc107d14b74e85704f005 +js/app.516fb396.js.map,1557715570934,f61f61885323c00d1ba0a53d23e6d5b905f01e8d4e09f057b0d0a779a99c0605 +js/chunk-vendors.6b4aea43.js,1557715570934,34a12364c9da25470eae6fee573b4a34cc6028b60ea51364f0b10904697eeb32 +js/chunk-vendors.6b4aea43.js.map,1557715570935,eb1c86fa747ad923a3976456aad5a5e06d8aeb146cc1332cda15877ee8c9c5a7 diff --git a/package-lock.json b/package-lock.json index f8cefb5..2f4d82e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8412,6 +8412,11 @@ } } }, + "moment": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.24.0.tgz", + "integrity": "sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg==" + }, "move-concurrently": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", diff --git a/package.json b/package.json index 17e6c7f..c98355b 100644 --- a/package.json +++ b/package.json @@ -13,6 +13,7 @@ "crypto-js": "^3.1.9-1", "firebase": "^5.10.0", "minireset.css": "0.0.4", + "moment": "^2.24.0", "register-service-worker": "^1.6.2", "sweetalert": "^2.1.2", "vue": "^2.6.6", diff --git a/src/assets/css/admin.scss b/src/assets/css/admin.scss index 3b3ec61..bc011f6 100644 --- a/src/assets/css/admin.scss +++ b/src/assets/css/admin.scss @@ -1,13 +1,207 @@ @import "vars"; + +$link: #2A83DC; + +$grey--dark: #cdcdcd; .admin { //background: blue; justify-content: center; display: grid; grid-template-columns: repeat(12, 1fr); grid-template-rows: 45vh; - grid-column-gap: 2vw; + grid-column-gap: 2vh; width: 100%; + margin-bottom: 2vh; + margin-right: 2vh; + padding-right: 2vh; + width: 100%; + // background:blue; + grid-row-gap: 2vh; + + .uploader.hover { + background: $dark--darker; + } + + + .uploading { + + margin-top: auto; + -webkit-transition-duration: 0.5s; + -moz-transition-duration: 0.5s; + -ms-transition-duration: 0.5s; + -o-transition-duration: 0.5s; + transition-duration: 0.5s; + margin-left: auto; + margin-top: auto; + margin-right: auto; + width: 90%; + height: 20vh; + background: $dark; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + + p { + margin-top: 2%; + } + + p.error { + color: red !important; + margin: auto auto 2% auto; + } + + a.error { + margin-bottom: auto; + } + + } + + .sk-cube-grid { + width: 40px; + height: 40px; + + } + + .sk-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: $yellow; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + } + + .sk-cube-grid .sk-cube1 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + } + + .sk-cube-grid .sk-cube2 { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; + } + + .sk-cube-grid .sk-cube3 { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; + } + + .sk-cube-grid .sk-cube4 { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + } + + .sk-cube-grid .sk-cube5 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + } + + .sk-cube-grid .sk-cube6 { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; + } + + .sk-cube-grid .sk-cube7 { + -webkit-animation-delay: 0s; + animation-delay: 0s; + } + + .sk-cube-grid .sk-cube8 { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; + } + + .sk-cube-grid .sk-cube9 { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; + } + + @-webkit-keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } + } + + @keyframes sk-cubeGridScaleDelay { + 0%, 70%, 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } + } + + .uploader { + margin-top: auto; + + -webkit-transition-duration: 0.5s; + -moz-transition-duration: 0.5s; + -ms-transition-duration: 0.5s; + -o-transition-duration: 0.5s; + transition-duration: 0.5s; + margin-left: auto; + margin-top: auto; + margin-right: auto; + width: 90%; + height: 20vh; + background: $dark; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + &:hover { + background: $dark--darker !important; + } + + p.errorUpload { + margin: auto auto 2% auto; + } + + p.error { + color: red !important; + margin: 2% auto 2% auto; + } + + a.error { + margin-bottom: auto; + } + + &:hover { + background: $grey--dark; + } + + input { + position: absolute; + opacity: 0; + width: 25vw; + height: 20vh; + } + + p { + + span { + color: $link; + text-decoration: underline; + } + } + } } .admin > div { @@ -22,6 +216,67 @@ font-weight: bold; } +@mixin waiverUploader { + background: $dark--background; + padding: 1%; + display: flex; + flex-direction: column; + justify-content: flex-start; + overflow: hidden; + h1 { + margin-bottom: 2vh !important; + } + p { + margin-top: 2vh; + display: block; + width: 90%; + overflow: hidden; + + a { + font-size: 0.8rem; + + &:hover { + text-decoration: underline; + } + } + } + .upload { + margin-top: auto; + @include button; + text-align: center; + display: flex; + flex-direction: column; + + span { + margin: auto; + } + + } +} + +.admin__attendeeWaiver { + @include waiverUploader; + grid-row: 2/3; + grid-column: 1/5; + +} + +.admin__judgeWaiver { + @include waiverUploader; + grid-row: 2/3; + grid-column: 9/13; + + +} + +.admin__voulunteerWaiver { + @include waiverUploader; + grid-row: 2/3; + grid-column: 5/9; + + +} + .admin__ticketIdType__add { @include button; padding: 2% 4%; @@ -39,6 +294,25 @@ } +.admin__waiverModal { + display: flex; + flex-direction: column; + width: 50vw; + height: 70vh; + background: linear-gradient(180deg, $dark--background 0%, $dark--background 100%); + z-index: 15; + box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22); + border: $grey solid 1px; + padding: 2%; + @include rounding; + + h1 { + font-size: 3rem; + color: $yellow; + font-weight: bold; + } +} + .admin__ticketModal { display: block; width: 30vw; @@ -94,7 +368,7 @@ } .admin__ticketIdType { - grid-column: 6/12; + grid-column: 7/13; background: $dark--background; width: 100%; display: grid; @@ -128,19 +402,22 @@ .admin__createNewAccount { - grid-column: 1/6; + + grid-column: 1/7; background: $dark--background; display: flex; flex-direction: column; form { + button { @include button; - margin-top: 5%; + margin-top: 2%; } width: 80%; - margin: auto; + margin: 2% auto; + input { @include textInput; diff --git a/src/assets/css/vars.scss b/src/assets/css/vars.scss index 38922d8..1aecc3e 100644 --- a/src/assets/css/vars.scss +++ b/src/assets/css/vars.scss @@ -1,4 +1,5 @@ $dark: #1D1D2E; +$dark--darker: #171725; $dark--background: #27293D; $orange: #FDA085; $orange--hover: #db7d6e; diff --git a/src/main.js b/src/main.js index 6bf5478..a6f0ddd 100644 --- a/src/main.js +++ b/src/main.js @@ -11,6 +11,7 @@ import swal from 'sweetalert'; import { directive as onClickOutside } from 'vue-on-click-outside' Vue.use(VueClazyLoad) import VueClazyLoad from 'vue-clazy-load' +import moment from 'moment' const startInit = performance.now(); const firebaseConfig = { apiKey: "AIzaSyDCnWcOvTFf5P4mWeSl0KDxnGOEDRJTVwg", @@ -25,6 +26,7 @@ let app firebase.initializeApp(firebaseConfig); Vue.prototype.$firebase = firebase Vue.prototype.$swal = swal +Vue.prototype.$moment = moment Vue.config.productionTip = false Vue.directive('on-click-outside', onClickOutside) diff --git a/src/views/admin.vue b/src/views/admin.vue index 3b75f63..3af2c8d 100644 --- a/src/views/admin.vue +++ b/src/views/admin.vue @@ -24,6 +24,28 @@ +
+

Attendee Waiver

+

Download URL: {{attendeeWaiver.download}}

+

Uploaded: {{timeStamp(attendeeWaiver.uploaded)}}

+

Type: {{attendeeWaiver.type}}

+ + +
+
+

Volunteer Waiver

+

Download URL: {{volunteerWaiver.download}}

+

Uploaded: {{timeStamp(volunteerWaiver.uploaded)}}

+

Type: {{volunteerWaiver.type}}

+ +
+
+

Mentor/Judge Waiver

+

Download URL: {{mentorWaiver.download}}

+

Uploaded: {{timeStamp(mentorWaiver.uploaded)}}

+

Type: {{mentorWaiver.type}}

+ +

Edit Ticket Type

@@ -35,7 +57,39 @@
+
+
+

Upload Blank {{waiverType}} Waiver

+
+ +

Add or drag the waiver here

+

{{errorUploading}}

+ Contact Support + +
+
+
+
+
+
+
+
+
+
+
+
+
+

Uploading Waiver!

+

{{error}}

+ Contact Support +
+
+
@@ -51,13 +105,26 @@ }, data() { return { + loadingCounter: 0, modal: false, newName: '', newEmail: '', newPass: '', error: '', apiKey: '', - editTicketData: {} + hovering: false, + editTicketData: {}, + mentorWaiver: false, + volunteerWaiver: false, + attendeeWaiver: false, + attendeeWaiverFile: false, + uploader: false, + waiverType: false, + isInitial: true, + errorUploading: false, + uploading: false, + waiverFBref: false, + loadingCount: 4 } }, computed: { @@ -67,11 +134,79 @@ }, mounted() { this.updateApiKey() + this.$firebase.firestore().collection('publicRefs').doc('attendeeWaiver').get().then(snap => { + this.attendeeWaiver = snap.data() + this.loadingCounter++ + if (this.loadingCounter == this.loadingCount) { + this.$parent.loading = false + } + }) + this.$firebase.firestore().collection('publicRefs').doc('mentorWaiver').get().then(snap => { + this.mentorWaiver = snap.data() + this.loadingCounter++ + if (this.loadingCounter == this.loadingCount) { + this.$parent.loading = false + } + }) + this.$firebase.firestore().collection('publicRefs').doc('volunteerWaiver').get().then(snap => { + this.volunteerWaiver = snap.data() + this.loadingCounter++ + if (this.loadingCounter == this.loadingCount) { + this.$parent.loading = false + } + }) }, methods: { + openUploadWaiver(type) { + this.waiverType = type + this.uploader = true + if (type === 'Attendee') { + this.waiverFBref = 'attendeeWaiver' + } else if (type === 'Volunteer') { + this.waiverFBref = 'volunteerWaiver' + } else { + this.waiverFBref = 'mentorWaiver' + } + }, + fileChange(e) { + console.log(e.target.files) + if (e.target.files.length === 1) { + this.uploading = true; + this.isInitial = false; + const fileName = e.target.files[0].name + this.$firebase.storage().ref('/public/').child(fileName).put(e.target.files[0]).then(e => { + console.log(e, 'uploaded') + const uploadedAt = Date.now() + const type = e.metadata.contentType + + this.$firebase.storage().ref('/public/').child(fileName).getDownloadURL().then(downloadURL => { + const waiverData = { + download: downloadURL, + uploaded: uploadedAt, + type: type + } + console.log(waiverData) + this.$firebase.firestore().collection('publicRefs').doc(this.waiverFBref).set(waiverData).then(e => { + console.log(e) + this[this.waiverFBref] = waiverData + this.uploading = false + this.uploader = false + this.$swal({title: "Success!", text: "Blank waiver has been uploaded", icon: "success"}) + }) + }) + + }) + } + }, + timeStamp(time) { + // console.log(time) + return this.$moment(time).format('H:mm MMM Do, YYYY') + }, deleteTicket() { this.$store.dispatch('updateTicket', {id: this.editTicketData.id, name: false}) this.modal = false; + + }, closeModal: function () { console.log(this.modal) @@ -79,6 +214,12 @@ this.modal = false } }, + closeUploader: function () { + console.log(this.uploader) + if (this.uploader) { + this.uploader = false + } + }, editTicket(ticket) { if (ticket === 'new') { this.editTicketData = { @@ -92,13 +233,17 @@ this.modal = true; }, updateTicket() { - // console.log(this.editTicketData, 'data to update') + // console.log(this.editTicketData, 'data to update') this.$store.dispatch('updateTicket', this.editTicketData) this.modal = false; }, updateApiKey() { this.$firebase.firestore().collection('secrets').doc('apiKeyDashboard').get().then(doc => { this.apiKey = doc.data().key; + this.loadingCounter++ + if (this.loadingCounter == this.loadingCount) { + this.$parent.loading = false + } }) }, makeNewUser() {