From 8a4ac744830f61f1309ad83221a9736f0364fe1c Mon Sep 17 00:00:00 2001 From: Michael Foiani Date: Sat, 4 Aug 2018 20:35:19 -0400 Subject: Deployed on firebase using the firebase.json config file. Also, fixed a spelling issue with forums. --- src/actions/app.js | 8 +- src/actions/firebase.js | 32 ++---- src/components/mao-app.js | 6 +- src/components/mao-competitions.js | 2 +- src/components/mao-forums.js | 199 +++++++++++++++++++++++++++++++++++++ src/components/mao-fourms.js | 199 ------------------------------------- src/components/mao-tutoring.js | 2 +- src/reducers/firebase.js | 8 +- 8 files changed, 223 insertions(+), 233 deletions(-) create mode 100644 src/components/mao-forums.js delete mode 100644 src/components/mao-fourms.js (limited to 'src') diff --git a/src/actions/app.js b/src/actions/app.js index c60f6e9..849fadb 100644 --- a/src/actions/app.js +++ b/src/actions/app.js @@ -26,7 +26,7 @@ export const navigate = (path) => (dispatch) => { dispatch(updateDrawerState(false)); }; -import {snapshotFourms} from './firebase.js'; +import {snapshotForums} from './firebase.js'; var hasSubscribedPosts = false; const loadPage = (page) => (dispatch) => { @@ -43,10 +43,10 @@ const loadPage = (page) => (dispatch) => { case 'tutor': import('../components/mao-tutoring.js'); break; - case 'fourms': - import('../components/mao-fourms.js').then((module) => { + case 'forums': + import('../components/mao-forums.js').then((module) => { if(!hasSubscribedPosts) { - dispatch(snapshotFourms()); + dispatch(snapshotForums()); hasSubscribedPosts = true; } }); diff --git a/src/actions/firebase.js b/src/actions/firebase.js index 5dca6bf..db6edb0 100644 --- a/src/actions/firebase.js +++ b/src/actions/firebase.js @@ -288,16 +288,6 @@ export const requestHours = (_time, _trainee, _date) => (dispatch, getState) => uid: _uid, email: _email }); - - docRef = firestore.collection('users').doc(_uid); - - docRef.get().then((doc) => { - if(doc.exists) { - docRef.set({ - hours: doc.data().hours - }); - } - }); } export const snapshotAdminRequests = () => (dispatch) => { @@ -351,11 +341,11 @@ export const adminDeleteRequest = (_id) => (dispatch) => { } -export const CREATE_FOURM_POST = 'CREATE_FOURM_POST'; -export const SNAPSHOT_FOURM = 'SNAPSHOT_FOURM'; -export const UPDATE_FOURM_POSTS = 'UPDATE_FOURM_POSTS'; +export const CREATE_FORUM_POST = 'CREATE_FORUM_POST'; +export const SNAPSHOT_FORUM = 'SNAPSHOT_FORUM'; +export const UPDATE_FORUM_POSTS = 'UPDATE_FORUM_POSTS'; -export const createFourmPost = (_subject, _content) => (dispatch, getState) => { +export const createForumPost = (_subject, _content) => (dispatch, getState) => { var docRef = firestore.collection('posts'); const userEmail = getState().firebase.userEmail; @@ -366,22 +356,22 @@ export const createFourmPost = (_subject, _content) => (dispatch, getState) => { }); } -export const snapshotFourms = () => (dispatch) => { +export const snapshotForums = () => (dispatch) => { var docRef = firestore.collection('posts'); docRef.onSnapshot((query) => { - var fourmPosts = []; + var forumPosts = []; query.forEach((doc) => { - fourmPosts.push(doc.data()); + forumPosts.push(doc.data()); }); - dispatch(updateFourmPosts(fourmPosts)); + dispatch(updateForumPosts(forumPosts)); }); } -export const updateFourmPosts = (_fourmPosts) => { +export const updateForumPosts = (_forumPosts) => { return { - type: UPDATE_FOURM_POSTS, - payload: _fourmPosts + type: UPDATE_FORUM_POSTS, + payload: _forumPosts } } //End Firebase Firestore diff --git a/src/components/mao-app.js b/src/components/mao-app.js index 530d460..7fc57f1 100644 --- a/src/components/mao-app.js +++ b/src/components/mao-app.js @@ -205,7 +205,7 @@ class MaoApp extends connect(store)(LitElement) { Home Tutoring Compete - Fourms + Forums Account Admin @@ -219,7 +219,7 @@ class MaoApp extends connect(store)(LitElement) { Home Tutoring Compete - Fourms + Forums Account Admin @@ -232,7 +232,7 @@ class MaoApp extends connect(store)(LitElement) { - + diff --git a/src/components/mao-competitions.js b/src/components/mao-competitions.js index 9a50d9e..2f3277f 100644 --- a/src/components/mao-competitions.js +++ b/src/components/mao-competitions.js @@ -219,7 +219,7 @@ class MaoCompetitions extends connect(store)(PageViewElement) { + + paper-card { + display: block; + } + + .card-actions > paper-button { + margin-left: auto; + margin-right: auto; + display: block; + width: 50%; + } + + .card-content > h4 { + text-align: right; + font-weight: lighter; + font-style: italic; + word-break: break-all; + } + + .card-content > h3, p { + word-break: break-all; + } + + .card-content > h3, p { + text-align: center; + } + + + .post-grid { + display: grid; + grid-gap: 10px; + + grid-template-columns: 1fr; + } + + @media (min-width: 460px) { + .post-grid { + grid-template-columns: 1fr 1fr; + } + } + + + + + +
+ +

Recent Posts

+ +
+ +
+ `; + } + + static get properties() { return { + // This is the data from the store. + signedIn: Boolean, + authMessage: String, + forumPosts: Array + }} + + _stateChanged(state) { + this.signedIn = state.firebase.initialized; + this.authMessage = state.firebase.authMessage; + + this.forumPosts = state.firebase.forumPosts; + this.updateSection(); + } + + submitForum() { + if(this.shadowRoot) { + var subjectElement = this.shadowRoot.getElementById('subject-field'); + var contentElement = this.shadowRoot.getElementById('content-field'); + + if(!contentElement.value) { + contentElement.value = ""; + } + + if( subjectElement.value.trim() === "" || + contentElement.value.trim() === "" + ) + { + alert("Please fill out all fields when creating a form post."); + } else { + if(confirm('Are you sure you want to submit this to the forum page? It will be public to everyone.')) { + store.dispatch(createForumPost(subjectElement.value, contentElement.value)); + + subjectElement.value = ""; + contentElement.value = ""; + } + } + } + + } + + updateSection() { + if(this.shadowRoot) { + var postsGrid = this.shadowRoot.getElementById('posts-grid'); + postsGrid.innerHTML = ""; + + for(var i = this.forumPosts.length-1; i >=0; i--) { + var paperCard = document.createElement('paper-card'); + var cardContent = document.createElement('div'); + var forumAuthor = document.createElement('h4'); + var forumSubject = document.createElement('h3'); + var forumContent = document.createElement('p'); + + forumAuthor.innerHTML = this.forumPosts[i].email .replace('@communityschoolnaples.org', ''); + forumSubject.innerHTML = this.forumPosts[i].subject; + forumContent.innerHTML = this.forumPosts[i].content; + + cardContent.classList.add('card-content'); + cardContent.appendChild( forumAuthor); + cardContent.appendChild( forumSubject); + cardContent.appendChild( forumContent); + + paperCard.elevation = 0; + paperCard.appendChild( cardContent); + + postsGrid.appendChild(paperCard); + } + } + } + +} + +window.customElements.define('mao-forums', MaoForums); diff --git a/src/components/mao-fourms.js b/src/components/mao-fourms.js deleted file mode 100644 index 0672da4..0000000 --- a/src/components/mao-fourms.js +++ /dev/null @@ -1,199 +0,0 @@ -/** -@license -Copyright (c) 2018 The Polymer Project Authors. All rights reserved. -This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt -The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt -The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt -Code distributed by Google as part of the polymer project is also -subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt -*/ - -import { html } from '@polymer/lit-element'; -import { PageViewElement } from './page-view-element.js'; -import { connect } from 'pwa-helpers/connect-mixin.js'; - -// This element is connected to the Redux store. -import { store } from '../store.js'; - -//These are the actions needed by this element. -import { requestHours, createFourmPost } from '../actions/firebase.js'; - -// We are lazy loading its reducer. -import firebase from '../reducers/firebase.js'; - -store.addReducers({ - firebase -}); - -// These are the shared styles needed by this element. -import { SharedStyles } from './shared-styles.js'; -import { ButtonSharedStyles } from './button-shared-styles.js' - -// Import paper elements -import '@polymer/paper-input/paper-input.js'; -import '@polymer/paper-input/paper-textarea.js'; -import '@polymer/paper-card/paper-card.js'; -import '@polymer/paper-dropdown-menu/paper-dropdown-menu.js'; -import '@polymer/paper-item/paper-item.js'; -import '@polymer/paper-slider/paper-slider.js'; -import '@polymer/paper-button/paper-button.js'; - -// Import other customElements -import '@vaadin/vaadin-date-picker/vaadin-date-picker.js'; - -class MaoFourms extends connect(store)(PageViewElement) { - _render(props) { - return html` - ${SharedStyles} - ${ButtonSharedStyles} - - - - - -
- -

Recent Posts

- -
- -
- `; - } - - static get properties() { return { - // This is the data from the store. - signedIn: Boolean, - authMessage: String, - fourmPosts: Array - }} - - _stateChanged(state) { - this.signedIn = state.firebase.initialized; - this.authMessage = state.firebase.authMessage; - - this.fourmPosts = state.firebase.fourmPosts; - this.updateSection(); - } - - submitFourm() { - if(this.shadowRoot) { - var subjectElement = this.shadowRoot.getElementById('subject-field'); - var contentElement = this.shadowRoot.getElementById('content-field'); - - if(!contentElement.value) { - contentElement.value = ""; - } - - if( subjectElement.value.trim() === "" || - contentElement.value.trim() === "" - ) - { - alert("Please fill out all fields when creating a form post."); - } else { - if(confirm('Are you sure you want to submit this to the fourm page? It will be public to everyone.')) { - store.dispatch(createFourmPost(subjectElement.value, contentElement.value)); - - subjectElement.value = ""; - contentElement.value = ""; - } - } - } - - } - - updateSection() { - if(this.shadowRoot) { - var postsGrid = this.shadowRoot.getElementById('posts-grid'); - postsGrid.innerHTML = ""; - - for(var i = this.fourmPosts.length-1; i >=0; i--) { - var paperCard = document.createElement('paper-card'); - var cardContent = document.createElement('div'); - var fourmAuthor = document.createElement('h4'); - var fourmSubject = document.createElement('h3'); - var fourmContent = document.createElement('p'); - - fourmAuthor.innerHTML = this.fourmPosts[i].email .replace('@communityschoolnaples.org', ''); - fourmSubject.innerHTML = this.fourmPosts[i].subject; - fourmContent.innerHTML = this.fourmPosts[i].content; - - cardContent.classList.add('card-content'); - cardContent.appendChild( fourmAuthor); - cardContent.appendChild( fourmSubject); - cardContent.appendChild( fourmContent); - - paperCard.elevation = 0; - paperCard.appendChild( cardContent); - - postsGrid.appendChild(paperCard); - } - } - } - -} - -window.customElements.define('mao-fourms', MaoFourms); diff --git a/src/components/mao-tutoring.js b/src/components/mao-tutoring.js index c25c570..9bce4a7 100644 --- a/src/components/mao-tutoring.js +++ b/src/components/mao-tutoring.js @@ -256,7 +256,7 @@ class MaoTutoring extends connect(store)(PageViewElement) {

Need Help Finiding A Tutor?

Please meet with your friends to create tutring sessions.

-

Also, ypu can try the fourm page if you want.

+

Also, you can try the fourm page if you want.

Otherwise, contact our tutoring coordinator Mike Binkowski.

diff --git a/src/reducers/firebase.js b/src/reducers/firebase.js index 773f874..6c4e206 100644 --- a/src/reducers/firebase.js +++ b/src/reducers/firebase.js @@ -14,14 +14,14 @@ import { UPDATE_DIVISON, UPDATE_HOURS, UPDATE_REGISTERED_COMPETITIONS, - UPDATE_FOURM_POSTS, + UPDATE_FORUM_POSTS, UPDATE_ADMIN, UPDATE_ADMIN_REQUESTS, UPDATE_ADMIN_COMP_LIST } from '../actions/firebase.js'; -const firebase = (state = {initialized: false, hours: -1, requestedHours: -1, uid: "", userEmail: "", divison: "", registeredComps: [], fourmPosts: [], isAdmin: false, requests: [], compList: []}, action) => { +const firebase = (state = {initialized: false, hours: -1, requestedHours: -1, uid: "", userEmail: "", divison: "", registeredComps: [], forumPosts: [], isAdmin: false, requests: [], compList: []}, action) => { switch (action.type) { case AUTH_SUCCESS: return { @@ -62,10 +62,10 @@ const firebase = (state = {initialized: false, hours: -1, requestedHours: -1, ui } break; - case UPDATE_FOURM_POSTS: + case UPDATE_FORUM_POSTS: return { ...state, - fourmPosts : action.payload + forumPosts : action.payload } break; -- cgit v1.2.3-70-g09d2