From e34b6ff81567939f49bd8fcb8d920fcc8b33f239 Mon Sep 17 00:00:00 2001 From: Dan Date: Thu, 9 Nov 2023 15:43:23 +0000 Subject: [PATCH] WIP - Add Season --- package-lock.json | 195 +++++++++++++++++- package.json | 1 + server.js | 19 +- src/app/app.module.ts | 6 +- src/app/components/admin/admin.component.html | 7 + src/app/components/admin/admin.component.less | 0 .../components/admin/admin.component.spec.ts | 21 ++ src/app/components/admin/admin.component.ts | 21 ++ .../new-season-card.component.html | 7 + .../new-season-card.component.less | 9 + .../new-season-card.component.spec.ts | 21 ++ .../new-season-card.component.ts | 10 + .../components/seasons/seasons.component.html | 9 +- .../components/seasons/seasons.component.less | 13 ++ .../components/seasons/seasons.component.ts | 9 +- src/app/models/season.ts | 7 +- 16 files changed, 335 insertions(+), 20 deletions(-) create mode 100644 src/app/components/admin/admin.component.html create mode 100644 src/app/components/admin/admin.component.less create mode 100644 src/app/components/admin/admin.component.spec.ts create mode 100644 src/app/components/admin/admin.component.ts create mode 100644 src/app/components/new-season-card/new-season-card.component.html create mode 100644 src/app/components/new-season-card/new-season-card.component.less create mode 100644 src/app/components/new-season-card/new-season-card.component.spec.ts create mode 100644 src/app/components/new-season-card/new-season-card.component.ts diff --git a/package-lock.json b/package-lock.json index 06b2a16..2fe2cff 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "express": "^4.18.2", "express-jwt": "^8.4.1", "moment": "^2.29.4", + "mongoose": "^8.0.0", "multer": "^1.4.5-lts.1", "node-jsonwebtoken": "^0.0.1", "nodemon": "^3.0.1", @@ -3752,6 +3753,14 @@ "tslib": "^2.1.0" } }, + "node_modules/@mongodb-js/saslprep": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@mongodb-js/saslprep/-/saslprep-1.1.1.tgz", + "integrity": "sha512-t7c5K033joZZMspnHg/gWPE4kandgc2OxE74aYOtGKfgB9VPuVJPix0H6fhmm2erj5PBJ21mqcx34lpIGtUCsQ==", + "dependencies": { + "sparse-bitfield": "^3.0.3" + } + }, "node_modules/@ngtools/webpack": { "version": "16.2.9", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.9.tgz", @@ -4404,6 +4413,20 @@ "@types/node": "*" } }, + "node_modules/@types/webidl-conversions": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.3.tgz", + "integrity": "sha512-CiJJvcRtIgzadHCYXw7dqEnMNRjhGZlYK05Mj9OyktqV8uVT8fD2BFOB7S1uwBE3Kj2Z+4UyPmFw/Ixgw/LAlA==" + }, + "node_modules/@types/whatwg-url": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", + "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", + "dependencies": { + "@types/node": "*", + "@types/webidl-conversions": "*" + } + }, "node_modules/@types/ws": { "version": "8.5.9", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.9.tgz", @@ -5277,6 +5300,14 @@ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, + "node_modules/bson": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/bson/-/bson-6.2.0.tgz", + "integrity": "sha512-ID1cI+7bazPDyL9wYy9GaQ8gEEohWvcUl/Yf0dIdutJxnmInEEyCsb4awy/OiBfall7zBA179Pahi3vCdFze3Q==", + "engines": { + "node": ">=16.20.1" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -6244,7 +6275,6 @@ "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, "dependencies": { "ms": "2.1.2" }, @@ -8167,7 +8197,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "devOptional": true }, "node_modules/ipaddr.js": { "version": "2.1.0", @@ -8726,6 +8756,14 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/kareem": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", + "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==", + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/karma": { "version": "6.4.2", "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.2.tgz", @@ -9482,6 +9520,11 @@ "node": ">= 4.0.0" } }, + "node_modules/memory-pager": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", + "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==" + }, "node_modules/merge-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", @@ -9849,6 +9892,136 @@ "node": "*" } }, + "node_modules/mongodb": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-6.2.0.tgz", + "integrity": "sha512-d7OSuGjGWDZ5usZPqfvb36laQ9CPhnWkAGHT61x5P95p/8nMVeH8asloMwW6GcYFeB0Vj4CB/1wOTDG2RA9BFA==", + "dependencies": { + "@mongodb-js/saslprep": "^1.1.0", + "bson": "^6.2.0", + "mongodb-connection-string-url": "^2.6.0" + }, + "engines": { + "node": ">=16.20.1" + }, + "peerDependencies": { + "@aws-sdk/credential-providers": "^3.188.0", + "@mongodb-js/zstd": "^1.1.0", + "gcp-metadata": "^5.2.0", + "kerberos": "^2.0.1", + "mongodb-client-encryption": ">=6.0.0 <7", + "snappy": "^7.2.2", + "socks": "^2.7.1" + }, + "peerDependenciesMeta": { + "@aws-sdk/credential-providers": { + "optional": true + }, + "@mongodb-js/zstd": { + "optional": true + }, + "gcp-metadata": { + "optional": true + }, + "kerberos": { + "optional": true + }, + "mongodb-client-encryption": { + "optional": true + }, + "snappy": { + "optional": true + }, + "socks": { + "optional": true + } + } + }, + "node_modules/mongodb-connection-string-url": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", + "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", + "dependencies": { + "@types/whatwg-url": "^8.2.1", + "whatwg-url": "^11.0.0" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mongoose": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-8.0.0.tgz", + "integrity": "sha512-PzwkLgm1Jhj0NQdgGfnFsu0QP9V1sBFgbavEgh/IPAUzKAagzvEhuaBuAQOQGjczVWnpIU9tBqyd02cOTgsPlA==", + "dependencies": { + "bson": "^6.2.0", + "kareem": "2.5.1", + "mongodb": "6.2.0", + "mpath": "0.9.0", + "mquery": "5.0.0", + "ms": "2.1.3", + "sift": "16.0.1" + }, + "engines": { + "node": ">=16.20.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mongoose" + } + }, + "node_modules/mongoose/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/mpath": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", + "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/mquery/-/mquery-5.0.0.tgz", + "integrity": "sha512-iQMncpmEK8R8ncT8HJGsGc9Dsp8xcgYMVSbs5jgnm1lFHTZqMJTUWTDx1LBO8+mK3tPNZWFLBghQEIOULSTHZg==", + "dependencies": { + "debug": "4.x" + }, + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/mrmime": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", @@ -11194,7 +11367,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, "engines": { "node": ">=6" } @@ -12080,6 +12252,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/sift": { + "version": "16.0.1", + "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", + "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" + }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -12216,7 +12393,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, + "devOptional": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -12298,7 +12475,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", - "dev": true, + "devOptional": true, "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -12392,6 +12569,14 @@ "node": ">=0.10.0" } }, + "node_modules/sparse-bitfield": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", + "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", + "dependencies": { + "memory-pager": "^1.0.2" + } + }, "node_modules/spdx-correct": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", diff --git a/package.json b/package.json index 4b18544..99db256 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "express": "^4.18.2", "express-jwt": "^8.4.1", "moment": "^2.29.4", + "mongoose": "^8.0.0", "multer": "^1.4.5-lts.1", "node-jsonwebtoken": "^0.0.1", "nodemon": "^3.0.1", diff --git a/server.js b/server.js index 43705f1..ffdcfea 100644 --- a/server.js +++ b/server.js @@ -26,9 +26,9 @@ app.route('/api/login').post(loginRoute); const RSA_PRIVATE_KEY = fs.readFileSync('./private.key'); const RSA_PUBLIC_KEY = fs.readFileSync('./public.key'); -const checkIfAuthenticated = expressJwt({ - secret: RSA_PUBLIC_KEY -}); +//const checkIfAuthenticated = expressJwt({ +// secret: RSA_PUBLIC_KEY +//}); /*export */function loginRoute(req, res) { @@ -68,8 +68,17 @@ app.get('/api/seasons', (req, res) => { seasonCardImage: "", seasonHeaderImage: "", seasonStartDate: "", - seasonSendDate: "", - seasonId: "", + seasonEndDate: "", + seasonDesc: "", + }, + { + id: 2, + seasonName: "Season 2", + seasonTag: "Post Winter Blues", + seasonCardImage: "", + seasonHeaderImage: "", + seasonStartDate: "", + seasonEndDate: "", seasonDesc: "", }] res.json({seasons: seasons}); diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 8c19680..f87b85b 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -25,6 +25,8 @@ import { MatTabsModule } from '@angular/material/tabs'; import { LoginComponent } from './components/login/login.component'; import { ReactiveFormsModule } from '@angular/forms'; import { ObserversModule } from '@angular/cdk/observers'; +import { AdminComponent } from './components/admin/admin.component'; +import { NewSeasonCardComponent } from './components/new-season-card/new-season-card.component'; @NgModule({ declarations: [ @@ -38,7 +40,9 @@ import { ObserversModule } from '@angular/cdk/observers'; SeasonCardComponent, SeasonsComponent, SeasonDetailsComponent, - LoginComponent + LoginComponent, + AdminComponent, + NewSeasonCardComponent ], imports: [ BrowserModule, diff --git a/src/app/components/admin/admin.component.html b/src/app/components/admin/admin.component.html new file mode 100644 index 0000000..d443d74 --- /dev/null +++ b/src/app/components/admin/admin.component.html @@ -0,0 +1,7 @@ +
+ +
+ +
+ +
diff --git a/src/app/components/admin/admin.component.less b/src/app/components/admin/admin.component.less new file mode 100644 index 0000000..e69de29 diff --git a/src/app/components/admin/admin.component.spec.ts b/src/app/components/admin/admin.component.spec.ts new file mode 100644 index 0000000..830d8ef --- /dev/null +++ b/src/app/components/admin/admin.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AdminComponent } from './admin.component'; + +describe('AdminComponent', () => { + let component: AdminComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [AdminComponent] + }); + fixture = TestBed.createComponent(AdminComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/admin/admin.component.ts b/src/app/components/admin/admin.component.ts new file mode 100644 index 0000000..6579a94 --- /dev/null +++ b/src/app/components/admin/admin.component.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { AuthService } from 'src/app/services/auth-service'; + +@Component({ + selector: 'app-admin', + templateUrl: './admin.component.html', + styleUrls: ['./admin.component.less'] +}) +export class AdminComponent { + + constructor( private authService :AuthService) + { + + } + + isLoggedIn() + { + return this.authService.isLoggedIn(); + } + +} diff --git a/src/app/components/new-season-card/new-season-card.component.html b/src/app/components/new-season-card/new-season-card.component.html new file mode 100644 index 0000000..6edd1bd --- /dev/null +++ b/src/app/components/new-season-card/new-season-card.component.html @@ -0,0 +1,7 @@ + + +
+ New Season +
+ add +
diff --git a/src/app/components/new-season-card/new-season-card.component.less b/src/app/components/new-season-card/new-season-card.component.less new file mode 100644 index 0000000..63d9585 --- /dev/null +++ b/src/app/components/new-season-card/new-season-card.component.less @@ -0,0 +1,9 @@ +.example-card { + max-width: 400px; + min-width: 400px; + } + + .example-header-image { + background-image: url('https://material.angular.io/assets/img/examples/shiba1.jpg'); + background-size: cover; + } \ No newline at end of file diff --git a/src/app/components/new-season-card/new-season-card.component.spec.ts b/src/app/components/new-season-card/new-season-card.component.spec.ts new file mode 100644 index 0000000..d09e9ce --- /dev/null +++ b/src/app/components/new-season-card/new-season-card.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { NewSeasonCardComponent } from './new-season-card.component'; + +describe('NewSeasonCardComponent', () => { + let component: NewSeasonCardComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [NewSeasonCardComponent] + }); + fixture = TestBed.createComponent(NewSeasonCardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/components/new-season-card/new-season-card.component.ts b/src/app/components/new-season-card/new-season-card.component.ts new file mode 100644 index 0000000..aef138d --- /dev/null +++ b/src/app/components/new-season-card/new-season-card.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-new-season-card', + templateUrl: './new-season-card.component.html', + styleUrls: ['./new-season-card.component.less'] +}) +export class NewSeasonCardComponent { + +} diff --git a/src/app/components/seasons/seasons.component.html b/src/app/components/seasons/seasons.component.html index df54327..2bd9160 100644 --- a/src/app/components/seasons/seasons.component.html +++ b/src/app/components/seasons/seasons.component.html @@ -1,5 +1,6 @@ -
-
- -
+
+ + + +
\ No newline at end of file diff --git a/src/app/components/seasons/seasons.component.less b/src/app/components/seasons/seasons.component.less index e69de29..95213df 100644 --- a/src/app/components/seasons/seasons.component.less +++ b/src/app/components/seasons/seasons.component.less @@ -0,0 +1,13 @@ +.grid{ + display: flex; + flex-direction: row; // fxLayout + flex-wrap: wrap; //fxLayout + box-sizing: border-box; + align-content: stretch; // fxLayoutAlign + align-items: stretch; // fxLayoutAlign + justify-content: flex-start; // fxLayoutAlign +} + +.grid-item{ + margin-right: 1rem; +} \ No newline at end of file diff --git a/src/app/components/seasons/seasons.component.ts b/src/app/components/seasons/seasons.component.ts index daaf5c8..6897d27 100644 --- a/src/app/components/seasons/seasons.component.ts +++ b/src/app/components/seasons/seasons.component.ts @@ -1,6 +1,7 @@ import { Component } from '@angular/core'; import { Season } from '../../models/season'; import { ApiService } from '../../services/api.service'; +import { AuthService } from 'src/app/services/auth-service'; @Component({ selector: 'app-seasons', @@ -12,7 +13,8 @@ export class SeasonsComponent { seasons: Season[]; - constructor(private apiService: ApiService) + constructor(private apiService: ApiService, + private authService: AuthService) { this.seasons = []; }; @@ -22,4 +24,9 @@ export class SeasonsComponent this.seasons = (data as any).seasons; }); } + + isLoggedIn() + { + return this.authService.isLoggedIn(); + } } diff --git a/src/app/models/season.ts b/src/app/models/season.ts index 391a5a7..30a216e 100644 --- a/src/app/models/season.ts +++ b/src/app/models/season.ts @@ -4,10 +4,6 @@ export interface Season { seasonTag: string; seasonCardImage: string; seasonHeaderImage: string; - seasonStartDate: string; - seasonSendDate: string; - seasonId: string; - seasonDesc: string; } export interface BridgeUser { @@ -30,7 +26,10 @@ export interface SeasonWeekEntry { export interface SeasonWeek { id: string; + seasonId: string; mapName: string; mapImg: string; + seasonStartDate: string; + seasonEndDate: string; entries: SeasonWeekEntry[]; } \ No newline at end of file