aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/actions/firebaseAdmin.js21
-rw-r--r--src/components/mao-admin.js125
-rw-r--r--src/components/registry-element.js2
-rw-r--r--src/reducers/firebaseAdmin.js12
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;
}