diff options
author | Michael Foiani <sotech117@michaels-mbp-3.devices.brown.edu> | 2019-09-06 12:28:56 -0400 |
---|---|---|
committer | Michael Foiani <sotech117@michaels-mbp-3.devices.brown.edu> | 2019-09-06 12:28:56 -0400 |
commit | 042b59bb791ebd8c514e734989cdf339e921a721 (patch) | |
tree | e6525c9204ae3a3d82a25d4915ca0948fd4c7d61 | |
parent | 87dd2d25e23b660c71742a97a39e210a154eca6e (diff) |
Added options to archive previous year's data
-rw-r--r-- | .firebase/hosting.YnVpbGQvZXM1LWJ1bmRsZWQ.cache | 42 | ||||
-rw-r--r-- | src/actions/firebaseFirestore.js | 43 | ||||
-rw-r--r-- | src/components/mao-admin.js | 57 |
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 |