diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/actions/firebaseAdmin.js | 21 | ||||
-rw-r--r-- | src/components/mao-admin.js | 125 | ||||
-rw-r--r-- | src/components/registry-element.js | 2 | ||||
-rw-r--r-- | src/reducers/firebaseAdmin.js | 12 |
4 files changed, 136 insertions, 24 deletions
diff --git a/src/actions/firebaseAdmin.js b/src/actions/firebaseAdmin.js index 5c8bfca..6009d46 100644 --- a/src/actions/firebaseAdmin.js +++ b/src/actions/firebaseAdmin.js @@ -3,6 +3,7 @@ import { firestore, fireStorage } from '../firebase.js'; export const UPDATE_ADMIN = 'UPDATE_ADMIN'; export const UPDATE_ADMIN_REQUESTS = 'UPDATE_ADMIN_REQUESTS'; export const UPDATE_ADMIN_COMP_LIST = 'UPDATE_ADMIN_COMP_LIST'; +export const UPDATE_ADMIN_USER_LIST = 'UPDATE_ADMIN_USER_LIST'; export const updateAdmin = (status) => { return { @@ -25,12 +26,20 @@ export const updateAdminCompList = (compList) => { } } +export const updateAdminUserList = (userList) => { + return { + type: UPDATE_ADMIN_USER_LIST, + payload: userList + } +} + //Middleware to update dispatches export const adminControls = () => (dispatch) => { dispatch(updateAdmin(true)); dispatch(snapshotAdminRequests()); dispatch(snapshotAdminCompList()); + dispatch(snapshotAdminUserList()); } export const snapshotAdminRequests = () => (dispatch) => { @@ -69,10 +78,22 @@ export const snapshotAdminCompList = () => (dispatch) => { }); } +export const snapshotAdminUserList = () => (dispatch) => { + var docRef = firestore.collection('users'); + docRef.onSnapshot((querySnapshot) => { + var userList = []; + querySnapshot.forEach((doc) => { + userList.push(doc); + }); + dispatch(updateAdminUserList(userList)); + }); +} + export const adminClose = () => (dispatch) => { dispatch(updateAdmin(false)); dispatch(updateAdminRequests([])); dispatch(updateAdminCompList([])); + dispatch(updateAdminUserList([])); } export const adminRejectHours = (_id, _path) => (dispatch) => { diff --git a/src/components/mao-admin.js b/src/components/mao-admin.js index 1ce85e7..be04fb2 100644 --- a/src/components/mao-admin.js +++ b/src/components/mao-admin.js @@ -52,10 +52,14 @@ class MaoAdmin extends connect(store)(PageViewElement) { grid-template-columns: 1fr; } + tbody { + text-aliign: center; + } + @media (min-width: 460px) { .main-grid { - grid-template-columns: 1fr 1fr; + grid-template-columns: 1fr 1fr 1fr; } } @@ -65,29 +69,50 @@ class MaoAdmin extends connect(store)(PageViewElement) { <section hidden="${!props.isAdmin}"> - <h2 class="underline">Hello Admin!</h2> + <h2 class="underline">Hello Admin!</h2> - <div class="main-grid"> - <paper-button raised class="info" id="toggleRequestsBtn" on-tap="${() => this.toggleRequests()}">Show Hours Requests</paper-button> - <paper-button raised class="success" id="toggleRegistryBtn" on-tap="${() => this.toggleRegistry()}">Show Competitions And Registry</paper-button> - </div> + <div class="main-grid"> + <paper-button raised class="info" id="toggleRequestsBtn" on-tap="${() => this.toggleRequests()}">Show Hours Requests</paper-button> + <paper-button raised class="info" id="toggleRegistryBtn" on-tap="${() => this.toggleRegistry()}">Show Competitions And Registry</paper-button> + <paper-button raised class="info" id="toggleRegistryBtn" on-tap="${() => this.usersHidden = !this.usersHidden}">Show User Data</paper-button> + </div> + + <br/> - <br/> + <div hidden="${props.requestsHidden}"> + <div id="requests-grid" class="main-grid"></div> + </div> - <div hidden="${props.requestsHidden}"> - <div id="requests-grid" class="main-grid"></div> - </div> + <div hidden="${props.registryHidden || props.requestsHidden}"> + <br/> + <hr/> + <br/> + </div> + + <div hidden="${props.registryHidden}"> + <div id="registry-grid" class="main-grid"></div> + </div> + + </section> - <div hidden="${props.registryHidden || props.requestsHidden}"> + <div hidden="${props.usersHidden}"> <br/> <hr/> <br/> </div> - <div hidden="${props.registryHidden}"> - <div id="registry-grid" class="main-grid"></div> - </div> - + <section hidden="${!props.isAdmin || props.usersHidden}"> + <table> + <thead> + <tr> + <th>Username</th> + <th>Hours</th> + <th>Divison</th> + </tr> + <thead> + <tbody id="users-table-body"> + </tbody> + </table> </section> `; } @@ -97,6 +122,7 @@ class MaoAdmin extends connect(store)(PageViewElement) { this.requestsHidden = true; this.registryHidden = true; + this.usersHidden = true; } static get properties() { return { @@ -106,9 +132,11 @@ class MaoAdmin extends connect(store)(PageViewElement) { requests: Array, registry: Array, adminImgs: String, + users: Array, requestsHidden: Boolean, - registryHidden: Boolean + registryHidden: Boolean, + usersHidden: Boolean }} _firstRendered() { @@ -120,7 +148,7 @@ class MaoAdmin extends connect(store)(PageViewElement) { this.isAdmin = state.firebaseAdmin .isAdmin; this.requests = state.firebaseAdmin .requests; this.registry = state.firebaseAdmin .compList; - + this.users = state.firebaseAdmin .userList; this.adminImgs = state.firebaseAdmin.adminImgs; this.updateInformation(); @@ -194,11 +222,66 @@ class MaoAdmin extends connect(store)(PageViewElement) { registryGrid.appendChild(registryElement); } - } - } - approveHours() { - alert("Approve hours"); + //update users + var tableBody = this.shadowRoot.getElementById('users-table-body'); + tableBody.innerHTML = ""; + + this.users.forEach((user) => { + user = user.data(); + + var tableRow = document.createElement('tr'); + + var userEle = document.createElement('td'); + userEle.innerHTML = "Username"; + + + var hoursEle = document.createElement('td'); + hoursEle.innerHTML = user['hours']; + + if(user['hours'] <= 1.0) { + hoursEle.style.color = 'red'; + } + + else if (user['hours'] < 5.0) { + hoursEle.style.color = 'yellow'; + } + + else { + hoursEle.style.color = 'green'; + } + + + var divisonEle = document .createElement('td'); + divisonEle.innerHTML = user['divison']; + switch (user['divison']) { + case 'Mu': + divisonEle.style.color = "#f09300"; + break; + + case 'Alpha': + divisonEle.style.color = "#7baaf7"; + break; + + case 'Theta': + divisonEle.style.color = "green"; + break; + + case 'Stats': + divisonEle.style.color = "red"; + break; + + default: + divisonEle.style.color = "black"; + } + + + tableRow .appendChild(userEle); + tableRow .appendChild(hoursEle); + tableRow .appendChild(divisonEle); + tableBody .appendChild(tableRow); + }); + } } diff --git a/src/components/registry-element.js b/src/components/registry-element.js index 9be8c7f..c54bd43 100644 --- a/src/components/registry-element.js +++ b/src/components/registry-element.js @@ -37,7 +37,7 @@ class RegistryElement extends LitElement { } .thetas { - color: #00bfff; + color: green; } .alphas { diff --git a/src/reducers/firebaseAdmin.js b/src/reducers/firebaseAdmin.js index 205d321..810ceb3 100644 --- a/src/reducers/firebaseAdmin.js +++ b/src/reducers/firebaseAdmin.js @@ -11,11 +11,12 @@ subject to an additional IP rights grant found at http://polymer.github.io/PATEN import { UPDATE_ADMIN, UPDATE_ADMIN_REQUESTS, - UPDATE_ADMIN_COMP_LIST + UPDATE_ADMIN_COMP_LIST, + UPDATE_ADMIN_USER_LIST } from '../actions/firebaseAdmin.js'; -const firebaseAdmin = (state = {isAdmin: false, requests: [], compList: []}, action) => { +const firebaseAdmin = (state = {isAdmin: false, requests: [], compList: [], userList: []}, action) => { switch (action.type) { case UPDATE_ADMIN: return { @@ -38,6 +39,13 @@ const firebaseAdmin = (state = {isAdmin: false, requests: [], compList: []}, act } break; + case UPDATE_ADMIN_USER_LIST: + return { + ...state, + userList : action.payload + } + break; + default: return state; } |