aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Foiani <sotech117@michaels-mbp-3.devices.brown.edu>2019-09-06 12:28:56 -0400
committerMichael Foiani <sotech117@michaels-mbp-3.devices.brown.edu>2019-09-06 12:28:56 -0400
commit042b59bb791ebd8c514e734989cdf339e921a721 (patch)
treee6525c9204ae3a3d82a25d4915ca0948fd4c7d61
parent87dd2d25e23b660c71742a97a39e210a154eca6e (diff)
Added options to archive previous year's data
-rw-r--r--.firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache42
-rw-r--r--src/actions/firebaseFirestore.js43
-rw-r--r--src/components/mao-admin.js57
3 files changed, 117 insertions, 25 deletions
diff --git a/.firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache b/.firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache
index 32555b3..0634bba 100644
--- a/.firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache
+++ b/.firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache
@@ -1,18 +1,18 @@
-manifest.json,1532748264732,48be121a31c10943ba072492d82077532ea6bd267ce11e7674095b952bf170f0
-push-manifest.json,1532748264736,b2716f9e251743f49dcecb89579da4383facda94d2e8cdba09444f669f0e5960
-images/manifest/icon-144x144.png,1532748264731,ed9d0ec1b0ce6dcbe89d8264482ba5b8349db2e054932c3dd882d29b1fdd6742
-images/manifest/icon-192x192.png,1532748264731,85ff27c28c135b202144a89437522b459608d4c03646e9e797360043d81ed435
-images/favicon.ico,1532748264731,9cadf7f12db623faedfdc99e1185edb76072915fa96ddc081e93e484a146d997
-images/manifest/icon-48x48.png,1532748264731,cc9e0b045dc1b388f046b6e37647f5a83adb276ef25295abb02bea214a1787d7
-images/manifest/icon-72x72.png,1532748264731,455b0c5a2187bbd04a17763b798c48a572f9210f1f70bd0f334abc64aa8e1ff8
-index.html,1551530668468,5435d07632b713525396de32a1ae83378b0609dd65611b87db10833e315e1690
-images/manifest/icon-96x96.png,1532748264731,ea18ec549fd56bbac8462fd909a591c43b83e01be10ec80a46f075faba7a2ca6
+manifest.json,1564385875703,48be121a31c10943ba072492d82077532ea6bd267ce11e7674095b952bf170f0
+push-manifest.json,1564385875707,b2716f9e251743f49dcecb89579da4383facda94d2e8cdba09444f669f0e5960
+images/favicon.ico,1564385875701,9cadf7f12db623faedfdc99e1185edb76072915fa96ddc081e93e484a146d997
+images/manifest/icon-144x144.png,1564385875702,ed9d0ec1b0ce6dcbe89d8264482ba5b8349db2e054932c3dd882d29b1fdd6742
+index.html,1567736063621,5435d07632b713525396de32a1ae83378b0609dd65611b87db10833e315e1690
+images/manifest/icon-192x192.png,1564385875702,85ff27c28c135b202144a89437522b459608d4c03646e9e797360043d81ed435
+images/manifest/icon-48x48.png,1564385875702,cc9e0b045dc1b388f046b6e37647f5a83adb276ef25295abb02bea214a1787d7
+images/manifest/icon-72x72.png,1564385875702,455b0c5a2187bbd04a17763b798c48a572f9210f1f70bd0f334abc64aa8e1ff8
+images/manifest/icon-96x96.png,1564385875702,ea18ec549fd56bbac8462fd909a591c43b83e01be10ec80a46f075faba7a2ca6
node_modules/@webcomponents/webcomponentsjs/LICENSE.md,499162500000,2ebf7ac7493b75329f6ed779a964f089ff7131636c1b0c700bb338dc0970a9e7
-node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js,499162500000,5c6f3a75df09c836278129c48fcf0635aadd0203a492c68fd07c9b4fc634e70e
-node_modules/@webcomponents/webcomponentsjs/package.json,1550029204815,ea78de3ea7ece059a321bac877d3abacea699beef70a81896c2855b02088f579
node_modules/@webcomponents/webcomponentsjs/README.md,499162500000,4598a8619047b3d2841a2e90928cdc1b590f72b0613562240105e374d63dd709
+node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js,499162500000,5c6f3a75df09c836278129c48fcf0635aadd0203a492c68fd07c9b4fc634e70e
+service-worker.js,1567736063651,af6e8664139d7c8e11b0fd1421ea59312a14a5b10e87573a971333b295502101
+node_modules/@webcomponents/webcomponentsjs/package.json,1564450883490,a4a3b41586cac0e45f7b638f03021fba2470b039fe4f17742bf8d7752809452f
node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js,499162500000,2ad3aac83f888ec799e6704040378a4b35e2e33cae7641bb0de76332e1877fe2
-service-worker.js,1551530668513,2e60442f9662d53701f40c1d81dae6dca834b97ecccfb874adeee01e38880281
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-ce.js,499162500000,75af30101bf7cc9033945511c173eba065e1bbbe4487b62ff928d532bc9e3433
node_modules/@webcomponents/webcomponentsjs/entrypoints/custom-elements-es5-adapter-index.js,499162500000,dd6f2f458c5fb5ebcb9dd5d2cdf2299382cef6937717095feaf31dc452702dab
node_modules/@webcomponents/webcomponentsjs/entrypoints/webcomponents-bundle-index.js,499162500000,0d50ebf82ad257ab3e5322841e2332267c45325e808b5f23f95dee510c87fe76
@@ -20,20 +20,20 @@ node_modules/@webcomponents/webcomponentsjs/entrypoints/webcomponents-ce-index.j
node_modules/@webcomponents/webcomponentsjs/entrypoints/webcomponents-sd-ce-index.js,499162500000,96cef5dfa81ea2848c25fef85749d8268903fed2285cee75e0d7ea134e1a4ef8
node_modules/@webcomponents/webcomponentsjs/entrypoints/webcomponents-sd-ce-pf-index.js,499162500000,f339147d6aff6d698dc1258a5c3de596d08f4d570d92f4332276512dd888c905
node_modules/@webcomponents/webcomponentsjs/entrypoints/webcomponents-sd-index.js,499162500000,44766a75eeb04c1d003464c0809b5681736f29c5c7d36bad9fef009ebcea9b29
-src/components/mao-account.js,1551530668485,d7f526afc9b152ff58327e4a65d81e694b5c67cd93c326925a613ad0520a989a
-src/components/mao-admin.js,1551530668485,5bca0c5e5398cdd14b5ac2401a4b5471c6e5c87b2301d2404dd6a2eaf96eb1d8
-src/components/mao-home.js,1551530668483,716e4346f186ecb4caee0c6209145b4445eef904a3fd7c485aa470adb207c6ef
-src/components/my-view404.js,1551530668486,51d9271a41d608f5af686e58d48ef2c1f13f4d92ecd319bc01deb3dcb735ed84
-src/components/mao-tutoring.js,1551530668484,cac1a6fce1613b1075a9caa6eb6d783325cfa84091f6094a7806effb1e322111
-images/manifest/icon-512x512.png,1532748264731,e6a244422f62786b99e8652859a4f513fd45a9a90c0fff20e95a93b3240fc695
+src/components/mao-account.js,1567736063631,100058b271383dd5566cba67c07746f8a63792f2586bcaaa0bf85633b824fc9c
+src/components/mao-admin.js,1567736063632,bc9976f989f7a6e029959892175c7568a3c585c0c47c87859c5d0fc5d5e35f5d
+src/components/mao-competitions.js,1567736063630,970830cdd8634ac3c65665b6e04a63aeebd3b31019b681d032533d9872ba4947
+src/components/mao-home.js,1567736063630,9a508ef91ee6ae3bc7e2e84332b49ecd6db1ac86fd1f63182739abb0953e2865
+src/components/my-view404.js,1567736063632,31e6de6732990b7847e1f71a7321587d12145dca5e2388a81321e5e2c5fbf26c
+src/components/mao-tutoring.js,1567736063631,2cd113a671e187c4f741d53997cb6a36621359ee6bd94e8ca5c81c082a81607e
+images/manifest/icon-512x512.png,1564385875702,e6a244422f62786b99e8652859a4f513fd45a9a90c0fff20e95a93b3240fc695
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd.js,499162500000,b09fede732b5995aa131149db6bcf1f8687e86986e7dd2766df269aaaf324522
-src/components/mao-competitions.js,1551530668483,e782e3c96148d5929b017233db558327e1f430be3042b70538d59b2a08d6efab
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce.js,499162500000,7aaac4e064f67cf1fa6aad77032cd21e69af5c0997932ca48c9b355772ff0de6
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-ce.js.map,499162500000,3bf4c4ecd87385f809d823a99c442d4fc76507742bb74f4c1d2ce426bb157283
-src/components/mao-forums.js,1551530668484,4a1ffe40a11ca98c06fa127801e3b322067448afa5e9c206b148651ce6606106
+src/components/mao-forums.js,1567736063631,a410d04aa471610c824cf2266658a93c80d3b3b0262601b7100efe1e4e77c0df
node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js,499162500000,15b40d33a3200eb720fd24151ef995b947f262d344e0ba3ba917f980ea434345
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js,499162500000,50c8b000c236442b396c2f0031955a10531746d194f3b692f22fd4fd162ca001
-src/components/mao-app.js,1551530668505,52411d7a6b07b2ff0f2b788ae82530c96e87c641b1dbb6c47d59d17c1f4ac60a
+src/components/mao-app.js,1567736063643,2f29052251e9a53aa73f86285b4397f71d6f7d1284870931f54b89b5d9b885f3
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd.js.map,499162500000,540ee626d15e42daa4a44098b597132a72f469e8626f296d351cf2093e934d21
node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce.js.map,499162500000,fec4df513a15aa1cec41f1b1957818597264672851c0d7d778398b6beda9122d
node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js.map,499162500000,c0d01c1384f5466ca32efe63564b1dc1b21487118d3e1ddc466b8048007672df
diff --git a/src/actions/firebaseFirestore.js b/src/actions/firebaseFirestore.js
index 10e285a..c43a77f 100644
--- a/src/actions/firebaseFirestore.js
+++ b/src/actions/firebaseFirestore.js
@@ -228,3 +228,46 @@ export const createComment = (postId, content) => (dispatch, getState) => {
}
}
+//TODO: Make it per year, not hard coded...
+
+export const archiveClass2019 = () => (dispatch, getState) => {
+ if(getState().app.offline) {
+ alert('Failed to archive class. Please establish internet connection.');
+ } else {
+ var docRef = firestore.collection('users');
+ docRef.get().then((oldUsers) => {
+ oldUsers.forEach((user) => {
+ var newPath = firestore.collection('archived').doc('2019').collection('users');
+ newPath.doc(user.id).set(user.data());
+
+ if(user.data().username && user.data().username.includes('2019')) {
+ console.log(user.data().username, user.id);
+ docRef.doc(user.id).delete();
+ }
+
+ docRef.doc(user.id).update({hours: 0});
+
+ });
+ });
+ }
+}
+
+export const archiveCompetitions2019 = () => (dispatch, getState) => {
+ if(getState().app.offline) {
+ alert('Failed to archive competitions. Please establish internet connection.');
+ } else {
+ var docRef = firestore.collection('competitions');
+ docRef.get().then((oldCompetitions) => {
+ oldCompetitions.forEach((comp) => {
+ console.log(comp.id, comp.data());
+ var newPath = firestore.collection('archived').doc('2019').collection('competitions');
+ newPath.doc(comp.id).set(comp.data());
+
+ //This will delete the document in its old place...
+ docRef.doc(comp.id).delete();
+
+ });
+ });
+
+ }
+}
diff --git a/src/components/mao-admin.js b/src/components/mao-admin.js
index 05357fc..19bf16e 100644
--- a/src/components/mao-admin.js
+++ b/src/components/mao-admin.js
@@ -17,7 +17,10 @@ import { store } from '../store.js';
// These are the shared styles needed by this element.
import { SharedStyles } from './shared-styles.js';
-import { ButtonSharedStyles } from './button-shared-styles.js'
+import { ButtonSharedStyles } from './button-shared-styles.js';
+
+//These are the actions needed by this element.
+import { archiveClass2019, archiveCompetitions2019 } from '../actions/firebaseFirestore.js';
// Import paper elements
import '@polymer/paper-input/paper-input.js';
@@ -56,10 +59,36 @@ class MaoAdmin extends connect(store)(PageViewElement) {
text-align: center;
}
+ .white {
+ background-color: white;
+
+ width: 50%;
+
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+ }
+
+ .search-grid {
+ display: grid;
+
+ grid-template-columns: 1fr;
+ }
+
+ .search-grid > paper-button {
+ display: grid;
+
+ background-color: white;
+ }
+
@media (min-width: 460px) {
.main-grid {
grid-template-columns: 1fr 1fr 1fr;
}
+
+ .search-grid {
+ grid-template-columns: 3fr 1fr;
+ }
}
</style>
@@ -72,7 +101,7 @@ class MaoAdmin extends connect(store)(PageViewElement) {
<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.toggleRegistry()}">Show Comps & Registry</paper-button>
<paper-button raised class="info" id="toggleRegistryBtn" on-tap="${() => this.usersHidden = !this.usersHidden}">${props.usersHidden ? 'Show User Data' : 'Hide User Data'}</paper-button>
</div>
@@ -89,6 +118,8 @@ class MaoAdmin extends connect(store)(PageViewElement) {
</div>
<div hidden="${props.registryHidden}">
+ <paper-button on-tap="${() => this.confirmArchiveComps()}" class="white" raised>Archive Current Competitions</paper-button>
+ <br/>
<div id="registry-grid" class="main-grid"></div>
</div>
@@ -101,8 +132,14 @@ class MaoAdmin extends connect(store)(PageViewElement) {
</div>
<section hidden="${!props.isAdmin || props.usersHidden}">
- <label>Search feature</label>
- <paper-input id="search" oninput="${() => this.search()}" label="Search for keyword (ex. theta, mfoiani, 2019, ...ect)"></paper-input>
+
+ <div class="search-grid">
+
+ <paper-input id="search" oninput="${() => this.search()}" label="Search for keyword (ex. theta, mfoiani, 2019, ...ect)"></paper-input>
+
+ <paper-button raised on-tap="${() => this.confirmArchiveUsers()}">Archive Old Class</paper-button>
+
+ </div>
<br/>
@@ -204,6 +241,18 @@ class MaoAdmin extends connect(store)(PageViewElement) {
});
}
+ confirmArchiveUsers() {
+ if(confirm('This will archive current hours and set all accounts with zero hours. It will also hide those in the previous graduating class. Are you sure that you want to do this?')){
+ store.dispatch(archiveClass2019());
+ }
+ }
+
+ confirmArchiveComps() {
+ if(confirm('This will archive all current competitions and remove the registry for them. Are you sure that you want to do this?')) {
+ store.dispatch(archiveCompetitions2019());
+ }
+ }
+
updateInformation() {
if(this.shadowRoot) {
//update requests