aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions/firebase.js39
-rw-r--r--src/components/competition-element.js6
-rw-r--r--src/components/mao-competitions.js33
-rw-r--r--src/components/mao-tutoring.js27
-rw-r--r--src/components/test-element.js5
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'));
+ }
}