Added submission page, momentjs, and UTC timezone for all services.
This commit is contained in:
		
							parent
							
								
									64e604a946
								
							
						
					
					
						commit
						7c638d066e
					
				|  | @ -3,10 +3,13 @@ package nl.andrewlalis.gymboard_api; | |||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| import java.util.TimeZone; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| public class GymboardApiApplication { | ||||
| 
 | ||||
| 	public static void main(String[] args) { | ||||
| 		TimeZone.setDefault(TimeZone.getTimeZone("UTC")); | ||||
| 		SpringApplication.run(GymboardApiApplication.class, args); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ | |||
|         "@quasar/cli": "^2.0.0", | ||||
|         "@quasar/extras": "^1.0.0", | ||||
|         "axios": "^0.21.1", | ||||
|         "moment": "^2.29.4", | ||||
|         "pinia": "^2.0.11", | ||||
|         "quasar": "^2.6.0", | ||||
|         "vue": "^3.0.0", | ||||
|  | @ -4356,6 +4357,14 @@ | |||
|         "url": "https://github.com/sponsors/ljharb" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/moment": { | ||||
|       "version": "2.29.4", | ||||
|       "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", | ||||
|       "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", | ||||
|       "engines": { | ||||
|         "node": "*" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ms": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
|  | @ -9419,6 +9428,11 @@ | |||
|       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", | ||||
|       "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" | ||||
|     }, | ||||
|     "moment": { | ||||
|       "version": "2.29.4", | ||||
|       "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", | ||||
|       "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==" | ||||
|     }, | ||||
|     "ms": { | ||||
|       "version": "2.1.2", | ||||
|       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", | ||||
|  |  | |||
|  | @ -14,6 +14,7 @@ | |||
|     "@quasar/cli": "^2.0.0", | ||||
|     "@quasar/extras": "^1.0.0", | ||||
|     "axios": "^0.21.1", | ||||
|     "moment": "^2.29.4", | ||||
|     "pinia": "^2.0.11", | ||||
|     "quasar": "^2.6.0", | ||||
|     "vue": "^3.0.0", | ||||
|  |  | |||
|  | @ -55,7 +55,7 @@ module.exports = configure(function (ctx) { | |||
|         node: 'node16', | ||||
|       }, | ||||
| 
 | ||||
|       vueRouterMode: 'hash', // available values: 'hash', 'history'
 | ||||
|       vueRouterMode: 'history', // available values: 'hash', 'history'
 | ||||
|       // vueRouterBase,
 | ||||
|       // vueDevtools,
 | ||||
|       // vueOptionsAPI: false,
 | ||||
|  |  | |||
|  | @ -16,6 +16,18 @@ export interface ExerciseSubmissionPayload { | |||
|   videoFileId: string; | ||||
| } | ||||
| 
 | ||||
| export enum WeightUnit { | ||||
|   KILOGRAMS = 'KILOGRAMS', | ||||
|   POUNDS = 'POUNDS' | ||||
| } | ||||
| 
 | ||||
| export class WeightUnitUtil { | ||||
|   public static toAbbreviation(unit: WeightUnit): string { | ||||
|     if (unit === WeightUnit.POUNDS) return 'Lbs'; | ||||
|     return 'Kg'; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| export interface ExerciseSubmission { | ||||
|   id: string; | ||||
|   createdAt: string; | ||||
|  | @ -24,7 +36,7 @@ export interface ExerciseSubmission { | |||
|   videoFileId: string; | ||||
|   submitterName: string; | ||||
|   rawWeight: number; | ||||
|   weightUnit: string; | ||||
|   weightUnit: WeightUnit; | ||||
|   metricWeight: number; | ||||
|   reps: number; | ||||
| } | ||||
|  |  | |||
|  | @ -0,0 +1,29 @@ | |||
| <template> | ||||
|     <q-page> | ||||
|         <standard-centered-page v-if="submission"> | ||||
|             <h3>Submission: {{ submission.id }}</h3> | ||||
|         </standard-centered-page> | ||||
|     </q-page> | ||||
| </template> | ||||
| 
 | ||||
| <script setup lang="ts"> | ||||
| import api from 'src/api/main'; | ||||
| import { ExerciseSubmission } from 'src/api/main/submission'; | ||||
| import { onMounted, ref, Ref } from 'vue'; | ||||
| import { useRoute, useRouter } from 'vue-router'; | ||||
| 
 | ||||
| const submission: Ref<ExerciseSubmission | undefined> = ref(); | ||||
| 
 | ||||
| const route = useRoute(); | ||||
| const router = useRouter(); | ||||
| 
 | ||||
| onMounted(async () => { | ||||
|     const submissionId = route.params.submissionId as string; | ||||
|     try { | ||||
|         submission.value = await api.gyms.submissions.getSubmission(submissionId); | ||||
|     } catch (error) { | ||||
|         console.error(error); | ||||
|         await router.push('/'); | ||||
|     } | ||||
| }); | ||||
| </script> | ||||
|  | @ -11,6 +11,7 @@ import LoginPage from 'pages/auth/LoginPage.vue'; | |||
| import RegisterPage from 'pages/auth/RegisterPage.vue'; | ||||
| import RegistrationSuccessPage from 'pages/auth/RegistrationSuccessPage.vue'; | ||||
| import ActivationPage from 'pages/auth/ActivationPage.vue'; | ||||
| import SubmissionPage from 'pages/SubmissionPage.vue'; | ||||
| 
 | ||||
| const routes: RouteRecordRaw[] = [ | ||||
|   // Auth-related pages, which live outside the main layout.
 | ||||
|  | @ -35,6 +36,7 @@ const routes: RouteRecordRaw[] = [ | |||
|           { path: 'leaderboard', component: GymLeaderboardsPage }, | ||||
|         ], | ||||
|       }, | ||||
|       { path: 'submissions/:submissionId', component: SubmissionPage }, | ||||
|       { path: 'about', component: AboutPage }, | ||||
|     ], | ||||
|   }, | ||||
|  |  | |||
|  | @ -3,10 +3,13 @@ package nl.andrewlalis.gymboardcdn; | |||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| import java.util.TimeZone; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| public class GymboardCdnApplication { | ||||
| 
 | ||||
| 	public static void main(String[] args) { | ||||
| 		TimeZone.setDefault(TimeZone.getTimeZone("UTC")); | ||||
| 		SpringApplication.run(GymboardCdnApplication.class, args); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,6 +5,8 @@ import org.springframework.boot.CommandLineRunner; | |||
| import org.springframework.boot.SpringApplication; | ||||
| import org.springframework.boot.autoconfigure.SpringBootApplication; | ||||
| 
 | ||||
| import java.util.TimeZone; | ||||
| 
 | ||||
| @SpringBootApplication | ||||
| public class GymboardSearchApplication implements CommandLineRunner { | ||||
| 	private final GymIndexGenerator gymIndexGenerator; | ||||
|  | @ -14,6 +16,7 @@ public class GymboardSearchApplication implements CommandLineRunner { | |||
| 	} | ||||
| 
 | ||||
| 	public static void main(String[] args) { | ||||
| 		TimeZone.setDefault(TimeZone.getTimeZone("UTC")); | ||||
| 		SpringApplication.run(GymboardSearchApplication.class, args); | ||||
| 	} | ||||
| 
 | ||||
|  |  | |||
|  | @ -0,0 +1,22 @@ | |||
| #!/usr/bin/env rdmd | ||||
| 
 | ||||
| /** | ||||
|  * TODO: This module will eventually serve as some sort of setup script for | ||||
|  * if/when it becomes too complicated to just start the services. It should | ||||
|  * run as a CLI thing for entering commands to start/stop things. | ||||
|  */ | ||||
| module runner; | ||||
| 
 | ||||
| import std.process; | ||||
| import std.stdio; | ||||
| import std.string; | ||||
| import std.uni; | ||||
| 
 | ||||
| alias CommandFunction = void function(string[] args); | ||||
| 
 | ||||
| int main() { | ||||
|     while (true) { | ||||
|         string[] command = readln().split!isWhite; | ||||
| 
 | ||||
|     } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue