diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/actions/firebase.js | 39 | ||||
-rw-r--r-- | src/components/competition-element.js | 6 | ||||
-rw-r--r-- | src/components/mao-competitions.js | 33 | ||||
-rw-r--r-- | src/components/mao-tutoring.js | 27 | ||||
-rw-r--r-- | src/components/test-element.js | 5 |
5 files changed, 65 insertions, 45 deletions
diff --git a/src/actions/firebase.js b/src/actions/firebase.js index ab2e28e..2599d4f 100644 --- a/src/actions/firebase.js +++ b/src/actions/firebase.js @@ -21,7 +21,7 @@ export const signIn = (_email, _password) => (dispatch) => { */ dispatch(authSuccess(user)); dispatch(getHours()) - dispatch(pullRegisteredCompetitions()); + dispatch(snapshotRegisteredCompetitions()); }) .catch((error) => { dispatch(authFail(error.code)); @@ -77,8 +77,6 @@ export const getHours = () => (dispatch, getState) => { dispatch(updateHours(doc.data().hours, doc.data().requestedHours)); }); } - - } export const updateHours = (hours, reqHours) => { @@ -100,42 +98,34 @@ export const registerComp = (compName) => (dispatch, getState) => { docRef.get().then((doc) => { if(doc.exists) { var uidArr = doc.data().uids; - uidArr.push(uid); docRef.set({ uids: uidArr }); - - dispatch(pullRegisteredCompetitions()); } else { docRef.set({ uids : [uid] - }).then(() => { - dispatch(pullRegisteredCompetitions()); }); } }); } -export const pullRegisteredCompetitions = () => (dispatch, getState) =>{ - var registeredComps = []; +export const snapshotRegisteredCompetitions = () => (dispatch, getState) =>{ var docRef = firestore.collection('competitions'); - docRef.get().then((query) => { - query.forEach((doc) => { - if(doc.data().uids.includes(getState().firebase.uid)) { + docRef.onSnapshot((querySnapshot) => { + var registeredComps = []; + querySnapshot.forEach((doc) => { + if(doc.exists && doc.data().uids.includes(getState().firebase.uid)) { registeredComps.push(doc.id); } - }) - }); + }); + dispatch(updateRegisteredCompetitions(registeredComps)); - dispatch(updateRegisteredCompetitions(registeredComps)); + }); } - - - export const updateRegisteredCompetitions = (registeredComps) => { return { type: UPDATE_REGISTERED_COMPETITIONS, @@ -143,7 +133,18 @@ export const updateRegisteredCompetitions = (registeredComps) => { } } +export const REQUEST_HOURS = 'REQUEST_HOURS'; +export const requestHours = (_time, _trainee, _date) => (dispatch, getState) => { + var docRef = firestore.collection('requests'); + var _uid = getState().firebase.uid; + docRef.add({ + time: _time, + trainee: _trainee, + date: _date, + uid: _uid + }); +} //End Firebase Firestore diff --git a/src/components/competition-element.js b/src/components/competition-element.js index 17381c9..915de13 100644 --- a/src/components/competition-element.js +++ b/src/components/competition-element.js @@ -83,8 +83,10 @@ class CompetitionElement extends LitElement { } registerComp() { - this.dispatchEvent(new CustomEvent('register-comp')); - this.isRegistered = true; + if(confirm('Are you sure you want to register for ' + this.name + '?')) { + this.dispatchEvent(new CustomEvent('register-comp')); + } + } diff --git a/src/components/mao-competitions.js b/src/components/mao-competitions.js index ba00a2f..9a50d9e 100644 --- a/src/components/mao-competitions.js +++ b/src/components/mao-competitions.js @@ -152,7 +152,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { <div class="card-actions"> <paper-button class = "info" - hidden = "${props.nationalRegistered}" + hidden = "${props.registeredComps.includes('nationals')}" on-tap = "${() => this.registerNationals()}" raised disabled = "${!props.initialized}"> @@ -161,7 +161,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { <paper-button class = "success" - hidden = "${!props.nationalRegistered}" + hidden = "${!props.registeredComps.includes('nationals')}" disabled> Already Registered </paper-button> @@ -188,7 +188,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { <div class="card-actions"> <paper-button class = "info" - hidden = "${props.statesRegistered}" + hidden = "${props.registeredComps.includes('states')}" on-tap = "${() => this.registerStates()}" raised disabled = "${!props.initialized}"> @@ -197,7 +197,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { <paper-button class = "success" - hidden = "${!props.statesRegistered}" + hidden = "${!props.registeredComps.includes('states')}" disabled> Already Registered </paper-button> @@ -223,7 +223,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { location="Miami, American Heritage" initialized="${props.initialized}" isRegistered="${props.registeredComps.includes('December')}" - on-register-comp="${() => store.dispatch(registerComp(this.shadowRoot.getElementById('dec-competition-element').name))}"> + on-register-comp="${() => store.dispatch(registerComp('December'))}"> </competition-element> </div> @@ -235,7 +235,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { location="Immokalee, Cypress Bay" initialized="${props.initialized}" isRegistered="${props.registeredComps.includes('January')}" - on-register-comp="${() => store.dispatch(registerComp(this.shadowRoot.getElementById('jan-competition-element').name))}"> + on-register-comp="${() => store.dispatch(registerComp('January'))}"> </competition-element> </div> @@ -247,7 +247,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { location="Orlando, Science School" initialized="${props.initialized}" isRegistered="${props.registeredComps.includes('February')}" - on-register-comp="${() => store.dispatch(registerComp(this.shadowRoot.getElementById('feb-competition-element').name))}"> + on-register-comp="${() => store.dispatch(registerComp('February'))}"> </competition-element> </div> @@ -278,7 +278,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { initialized="${props.initialized}" isRegistered="${props.registeredComps.includes('amc')}" - on-register-comp="${() => store.dispatch(registerComp(this.shadowRoot.getElementById('amc-test-element').name))}"> + on-register-comp="${() => store.dispatch(registerComp('amc'))}"> </test-element> @@ -295,7 +295,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { initialized="${props.initialized}" isRegistered="${props.registeredComps.includes('fml')}" - on-register-comp="${() => store.dispatch(registerComp(this.shadowRoot.getElementById('fml-test-element').name))}"> + on-register-comp="${() => store.dispatch(registerComp('fml'))}"> </test-element> </div> @@ -316,21 +316,18 @@ class MaoCompetitions extends connect(store)(PageViewElement) { this.initialized = state.firebase.initialized; this.registeredComps = state.firebase.registeredComps; //console.log(this.registeredComps); - - this.nationalRegistered = this.registeredComps.includes('nationals'); - this.statesRegistered = this.registeredComps.includes('states'); } registerNationals() { - store.dispatch(registerComp('nationals')); - - this.nationalRegistered = true; + if(confirm('Are you sure you want to register for nationals?')) { + store.dispatch(registerComp('nationals')); + } } registerStates() { - store.dispatch(registerComp('states')); - - this.statesRegistered = true; + if(confirm('Are you sure you want to register for states?')) { + store.dispatch(registerComp('states')); + } } } diff --git a/src/components/mao-tutoring.js b/src/components/mao-tutoring.js index d55b11f..5ab3c97 100644 --- a/src/components/mao-tutoring.js +++ b/src/components/mao-tutoring.js @@ -16,7 +16,7 @@ import { connect } from 'pwa-helpers/connect-mixin.js'; import { store } from '../store.js'; //These are the actions needed by this element. -import { signIn, signOut } from '../actions/firebase.js'; +import { signIn, signOut, requestHours } from '../actions/firebase.js'; // We are lazy loading its reducer. import firebase from '../reducers/firebase.js'; @@ -109,6 +109,12 @@ class MaoTutoring extends connect(store)(PageViewElement) { --paper-card-background-color: #f7f7f7; } + paper-button { + margin-left: auto; + margin-right: auto; + display: block; + } + h3 { text-align: center; } @@ -220,9 +226,17 @@ class MaoTutoring extends connect(store)(PageViewElement) { <p>How many hours of tutoring?</p> - <paper-input id="timeField" label="Time"><span slot="suffix">(in minutes)</span></paper-input> + <paper-input + id= "timeField" + label= "Time" + type= "number" + value= "15" + step= "15" + max= "120"> + <span slot="suffix">(minutes)</span> + </paper-input> - <paper-input id="traineeField" label="Trainee's Name"></paper-input> + <paper-input id="traineeField" label="Trainee's Name" type="text"></paper-input> <vaadin-date-picker id="dateField" placeholder="Choose Date"> </vaadin-date-picker> @@ -290,7 +304,12 @@ class MaoTutoring extends connect(store)(PageViewElement) { } requestHours() { - alert(this.shadowRoot.getElementById('dateField').value); + const timeHours = (this.shadowRoot.getElementById('timeField') .value) + /60; + const traineeName = this.shadowRoot.getElementById('traineeField').value; + const date = this.shadowRoot.getElementById('dateField') .value; + + store.dispatch(requestHours(timeHours, traineeName, date)); } } diff --git a/src/components/test-element.js b/src/components/test-element.js index ec4797b..eb4b42d 100644 --- a/src/components/test-element.js +++ b/src/components/test-element.js @@ -74,8 +74,9 @@ class TestElement extends LitElement { } registerComp() { - this.dispatchEvent(new CustomEvent('register-comp')); - this.isRegistered = true; + if(confirm('Are you sure you want to register for ' + this.name + '?')) { + this.dispatchEvent(new CustomEvent('register-comp')); + } } |