Skip to content

Commit

Permalink
πŸ‡ Sprint Grape (#45)
Browse files Browse the repository at this point in the history
* πŸ‡ Begin Sprint Grape (Mon - 4/26/21)

* ♻️ Change how 'flashAlert' is implemented (refactor this one day to make correct πŸ€¦β€β™‚οΈ)

* ✨ Add 'Secure' page-- add ability to read protected assets from Firebase Storage

* ✨ Add Cloud Function to deliver secure assets to authorized users

* πŸ’„ Beautify the 'Secure Asset' page to show a nice message if user is unauthorized to view asset

* ♻️ Rename 'Secure.tsx' to 'FileViewer.tsx'. Properly implement 'FileViewer.tsx'

* ✨ Add '/scripts' and 'firebase-admin' in order to easily populate Firestore

* ✨ Impl populating the sidebar ('GTx ISYE6501' menu items) from Firestore

* ✨ Add feature to make 'Sidebar.tsx' menu items collapsible

* ♻️ Move static '.html' entry points into '/public' dir

* ✨ Add 'StudyGroup' entry point and POC

* ✨ Add 'progress column' for Matt and study group member photos

* ♻️ Refactor 'Map<string, Map<string, Card>>' into a proper 'UserProgress.ts' model

* ♻️ Fix the ad-hoc code that adjusts Anita's card dates for #16, #19, #22

* ✨ Add giant 'Countdown Clock' and impl 'Streak Counter' + minor cosmetic fixes

* πŸ’„β™»οΈ Make minor cosmetic fixes and code optimizations

* ✨ Add 'Topbar' navigation

* 🐞 Fix 'Streak Counter' bug

* ✨ Add 'CodeNewbie' link in 'Topbar' navigation

* ✨ Show '🍿' icon on card if the card's been updated in the past '1 hour'

* 🐞 Fix 'Line Break Separator' GUI bug

* πŸ”– 0.6.16: ✨ Add 'footer' that shows the build's 'version number' & 'build date'

* πŸ”– 0.6.17: 🐞 Fix another 'Line Break Separator' GUI bug

* πŸ”– 0.6.18: ✨ Add proper 'Changelog' page

* πŸ”– 0.6.19: πŸ“„ Update the 'Changelog' link in the top navbar

* πŸ”– 0.6.20: ✨ Add 'Category Emojis' (πŸ“ΊπŸŽ¬πŸ“–πŸŒ³) to cards

* πŸ”– 0.6.21: 🐞 Fix 'Streak Counter' bug & add 'Youtube' (β–Ά) icon

* πŸ”– 0.6.22: 🐞 Obviate 'Streak Counter' bug + restore 🍿 indicator

* πŸ”– 0.6.23: 🐞 Fix '<hr /'> alignment bug + add 'travel' (πŸ›Έ) tag

* πŸ”– 0.6.24: ✨ Add 'podcast notes' (πŸŽ™) tag

* πŸ”– 0.6.25: ✨ Subscribe the `Dashboard GUI` to `Firestore` for real-time updates

* πŸ”– 0.6.26: 🐞 Fix Firefox rendering problem by removing `#private` fields

* πŸ”– 0.6.27: πŸ”§ Update `All Cards` uri to fetch all cards by `milestone=1`

* πŸ”– 1.6.28: πŸ“¦ Release `sprint-grape` ➑ PROD: `v1.6.28-grape` (Thu - 6/10/21)
  • Loading branch information
r002 authored Jun 10, 2021
1 parent 4281e26 commit 4cbc5e2
Show file tree
Hide file tree
Showing 39 changed files with 2,481 additions and 364 deletions.
3 changes: 2 additions & 1 deletion .eslintrc.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
},
"globals": {
"firebase": "readonly",
"isAuthorized": "readonly"
"isAuthorized": "readonly",
"JSX":"readonly"
}
// "presets": [
// "plugin:react-hooks/recommended"
Expand Down
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ git remote -v
firebase emulators:start --only "auth,firestore" --import=data\multi-users --export-on-exit=data\saved_data \
firebase emulators:start --only hosting \
firebase deploy --only hosting \
firebase deploy --only functions \
firebase emulators:export data\multi-users

- https://stackoverflow.com/questions/1125968/how-do-i-force-git-pull-to-overwrite-local-files
Expand All @@ -34,6 +35,7 @@ firebase emulators:export data\multi-users
```shell
$> netstat -ano | findstr :8080
$> taskkill /PID <PID> /F
$> dir env:
```

### Misc Links
Expand Down
175 changes: 175 additions & 0 deletions admin-scripts/populateMenu.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
const admin = require('firebase-admin')
const serviceAccount = require('../../service-account.json')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount)
})
const db = admin.firestore()

db.collection('menus').doc('gtx_isye6501').get().then(items => {
console.log('>> items.data:', items.data())
})

// const data = {
// menu: [
// {
// asset: 'GTx__ISYE6501/Timeline1-11Summer__1_.pdf',
// order: 0,
// title: 'πŸ“… ISyE 6501x - Timeline (Summer 2020)'
// },
// {
// asset: 'GTx__ISYE6501/Syllabus-combined-Summer2020__3_.pdf',
// order: 1,
// title: 'πŸ’‘ ISyE 6501x - Syllabus (Summer 2020)'
// },
// {
// asset: 'GTx__ISYE6501/week_1_hw-summer.pdf',
// order: 2,
// title: 'πŸ“„ HW #1: Classification & Validation'
// },
// {
// asset: 'secure/gtx/isye6501/GTx-ISYE6501__hw01-final.pdf',
// order: 3,
// title: 'πŸ”’ HW #1: Submission (May 21, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_1_solutions-summer.pdf',
// order: 4,
// title: 'πŸ”’ HW #1: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_2_hw-summer.pdf',
// order: 5,
// title: 'πŸ“„ HW #2: Clustering, Data Prep, Ξ” Detection'
// },
// {
// asset: 'secure/gtx/isye6501/week02c_final.pdf',
// order: 6,
// title: 'πŸ”’ HW #2: Submission (May 28, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_2_solutions-summer.pdf',
// order: 7,
// title: 'πŸ”’ HW #2: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_3_hw-summer.pdf',
// order: 8,
// title: 'πŸ“„ HW #3: Time Series + Basic Regression'
// },
// {
// asset: 'secure/gtx/isye6501/week03_subB.pdf',
// order: 9,
// title: 'πŸ”’ HW #3: Submission (June 4, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_3_solutions-summer.pdf',
// order: 10,
// title: 'πŸ”’ HW #3: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_4_hw-summer.pdf',
// order: 11,
// title: 'πŸ“„ HW #4: Adv Data Prep + Adv Regression'
// },
// {
// asset: 'secure/gtx/isye6501/week04_subA.pdf',
// order: 12,
// title: 'πŸ”’ HW #4: Submission (June 11, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_4_solutions-summer.pdf',
// order: 13,
// title: 'πŸ”’ HW #4: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_5_hw-summer.pdf',
// order: 14,
// title: 'πŸ“„ HW #5: Var Sel, Exp Design, Prob Models'
// },
// {
// asset: 'secure/gtx/isye6501/week05_subA.pdf',
// order: 15,
// title: 'πŸ”’ HW #5: Submission (June 18, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_5_solutions-summer.pdf',
// order: 16,
// title: 'πŸ”’ HW #5: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_6_hw-summer.pdf',
// order: 17,
// title: 'πŸ“„ HW #6: Prob Mods, Data Imp, Optimization'
// },
// {
// asset: 'secure/gtx/isye6501/week06_subC.pdf',
// order: 18,
// title: "πŸ”’ HW #6: Robert's Airport PySim (Jun 25, 20)"
// },
// {
// asset: 'secure/gtx/isye6501/week_6_solutions-summer.pdf',
// order: 19,
// title: 'πŸ”’ HW #6: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_7_hw-summer.pdf',
// order: 20,
// title: 'πŸ“„ HW #7: More Optimization + Adv Models'
// },
// {
// asset: 'secure/gtx/isye6501/week07_subA.pdf',
// order: 21,
// title: 'πŸ”’ HW #7: Army Diet Problem (July 1, 2020)'
// },
// {
// asset: 'secure/gtx/isye6501/week_7_solutions-summer.pdf',
// order: 22,
// title: 'πŸ”’ HW #7: Official Solutions'
// },
// {
// asset: 'GTx__ISYE6501/week_8_hw-summer.pdf',
// order: 23,
// title: 'πŸ“„ HW #8: Power Company Case Study'
// },
// {
// asset: 'secure/gtx/isye6501/week08_subA.pdf',
// order: 24,
// title: 'πŸ”’ HW #8: Robert PowerCo (July 9, 2020)'
// },
// {
// asset: 'GTx__ISYE6501/week_9_hw-summer.pdf',
// order: 25,
// title: 'πŸ“„ HW #9: Retailer Case Study'
// },
// {
// asset: 'GTx__ISYE6501/week_10_hw-summer.pdf',
// order: 26,
// title: 'πŸ“„ HW #10: Monetization Case Study'
// },
// {
// asset: 'GTx__ISYE6501/ISyE_6501_Project.pdf',
// order: 27,
// title: 'πŸ“„ Final Course Project'
// },
// {
// asset: 'secure/gtx/isye6501/project_subB.pdf',
// order: 28,
// title: 'πŸ”’ Final Project: Eprimo GmbH’s Chat Bot (July 16, 2020)'
// },
// {
// asset: 'https://credentials.edx.org/records/programs/shared/5e01b7235a294e56bfef1c2f0f3bd3b4/',
// order: 29,
// title: "πŸ…°οΈ My Final Grade-- I got an 'A'! (Aug 9, 2020)"
// },
// {
// asset: 'https://courses.edx.org/certificates/0fc4e6b0ad184913a4a31c27d84b7a19',
// order: 30,
// title: 'πŸ† My Course Certificate (Aug 10, 2020)'
// }
// ]
// }

// // Add a new document in collection "cities" with ID 'LA'
// db.collection('menus').doc('gtx_isye6501').set(data).then(() => {
// console.log('>> Script Finished! | this is populate menu!!!')
// })
44 changes: 42 additions & 2 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,34 @@
# Changelog

## [Sun - 4/25/21 | Sprint Grape πŸ‡](https://github.com/r002/captains-log/pull/45)
- πŸ”– 0.6.17: 🐞 Fix another `Line Break Separator` GUI bug
- πŸ”– 0.6.16: ✨ Add `footer` that shows the build's `version number` & `build date`
- 🐞 Fix `Line Break Separator` GUI bug
- ✨ Show an `🍿` icon on card if the card's been updated in the past `1 hour`
- ✨ Add `CodeNewbie` link in `Topbar` navigation
- ✨ Add `Topbar` navigation
- 🐞 Fix `Streak Counter` bug
- πŸ’„β™»οΈ Make minor cosmetic fixes and code optimizations
- ✨ Add giant `Countdown Clock` and impl `Streak Counter` + minor cosmetic fixes
- ♻️ Fix the ad-hoc code that adjusts Anita's card dates for #16, #19, #22
- ✨ Add `progress column` for Matt and study group member photos
- ♻️ Refactor `Map<string, Map<string, Card>>` into a proper `UserProgress.ts` model
- ✨ Add `StudyGroup` entry point and POC
- ✨ Add feature to make `Sidebar.tsx` menu items collapsible
- ♻️ Move static `.html` entry points into `/public` dir
- ✨ Impl populating the sidebar ('GTx ISYE6501' menu items) from Firestore
- ✨ Add '/scripts' and 'firebase-admin' in order to easily populate Firestore
- ♻️ Rename `Secure.tsx` to `FileViewer.tsx`. Properly implement `FileViewer.tsx`
- πŸ’„ Beautify the 'Secure Asset' page to show a nice message if user is unauthorized to view asset
- ✨ Add Cloud Function to deliver secure assets to authorized users
- ✨ Add 'Secure' page-- add ability to read protected assets from Firebase Storage
- ♻️ Change how `flashAlert` is implemented (refactor this one day to make correct πŸ€¦β€β™‚οΈ)
- 0.6.0: πŸ‡ Begin Sprint Grape
- TODO: Setup a listener to a firestore collection: `realtimeNotifications`
- TODO: Set `deadline` from admin console which pushes to all client endpoints in real-time
- TODO: After deadline passes, show results of the voting
- TODO: Implement Comments

## [Sat - 4/10/21 | Sprint Fig πŸ₯](https://github.com/r002/captains-log/pull/41)
- ✨ Begin Sprint Fig
- ✨ Add basic Admin tools
Expand All @@ -25,8 +54,6 @@
- ✨ Sidebar: Add external link to 'Changelog'
- ✨ Sidebar: Don't render when user is logged out
- ✨ 'Vote' page: Display a giant countdown clock until next coronation
- TODO: After deadline passes, show results of the voting
- TODO: Implement Comments

## [Fri - 4/9/21 | Sprint Elderberry πŸ’](https://github.com/r002/captains-log/pull/40)
- ✨ Begin adding Wattpad POC page. Add new 'Wattpad' entrypoint to webpack
Expand Down Expand Up @@ -81,3 +108,16 @@
- ✨ Impl 'FlashAlert' modal. Invalid DtInput now flashes alert & fails gracefully</li>
- ♻️ Refactor 'sendLogDelete' into `/services/Internal.ts`</li>
- 🐞 Fix 'FlashAlert' bug. Reset every time user signs in/out</li>

---

## Versioning Schema:
- 0.0.x - 🍎 Apple
- 0.1.x - 🍌 Banana
- 0.2.x - 🍊 Clementine
- 0.3.x - 🍈 Durian
- 0.4.x - πŸ’ Elderberry
- 0.5.x - πŸ₯ Fig
- 0.6.x - πŸ‡ Grape
- 0.7.x - 🍍 [Hala](https://www.atlasobscura.com/foods/hala-fruit)
- 0.8.x - πŸ₯­ [Imbe](https://miamifruit.org/products/imbe-african-mangosteen)
8 changes: 2 additions & 6 deletions data/multi-users/firebase-export-metadata.json
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
{
"version": "9.8.0",
"version": "9.10.0",
"firestore": {
"version": "1.11.12",
"version": "1.11.14",
"path": "firestore_export",
"metadata_file": "firestore_export/firestore_export.overall_export_metadata"
},
"auth": {
"version": "9.8.0",
"path": "auth_export"
}
}
Binary file not shown.
Binary file modified data/multi-users/firestore_export/all_namespaces/all_kinds/output-0
Binary file not shown.
Binary file not shown.
31 changes: 18 additions & 13 deletions functions/.eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,31 @@ module.exports = {
node: true,
},
extends: [
"eslint:recommended",
"plugin:import/errors",
"plugin:import/warnings",
"plugin:import/typescript",
"google",
'eslint:recommended',
'plugin:import/errors',
'plugin:import/warnings',
'plugin:import/typescript',
'google',
],
parser: "@typescript-eslint/parser",
parser: '@typescript-eslint/parser',
parserOptions: {
project: ["tsconfig.json", "tsconfig.dev.json"],
sourceType: "module",
project: ['tsconfig.json', 'tsconfig.dev.json'],
sourceType: 'module',
tsconfigRootDir: __dirname,
},
ignorePatterns: [
"/lib/**/*", // Ignore built files.
'/lib/**/*', // Ignore built files.
],
plugins: [
"@typescript-eslint",
"import",
'@typescript-eslint',
'import',
],
rules: {
quotes: ["error", "double"],
// 'quotes': ['error', 'double'],
'linebreak-style': 0,
'max-len': ['error', {'code': 160}],
'camelcase': 'off',
'semi': ['error', 'never'],
'quotes': [2, 'single', {'avoidEscape': true}],
},
};
}
Loading

0 comments on commit 4cbc5e2

Please sign in to comment.