From 5d620c07edbc4c2196d038acc5a99201b27505bd Mon Sep 17 00:00:00 2001 From: HumanoidSandvichDispenser Date: Fri, 8 Nov 2024 12:50:48 -0800 Subject: [PATCH] Added editing and viewing roles --- availabili.tf/package-lock.json | 23 ++++ availabili.tf/package.json | 4 +- availabili.tf/src/client/index.ts | 1 + .../src/client/models/EditMemberRolesJson.ts | 9 ++ .../client/models/ViewTeamMembersResponse.ts | 3 + .../src/client/services/DefaultService.ts | 30 +++++ .../src/components/PlayerTeamCard.vue | 109 +++++++++++++++-- availabili.tf/src/components/RoleTag.vue | 112 ++++++++++++++++++ .../src/components/TeamsListSidebar.vue | 2 +- availabili.tf/src/stores/roster.ts | 27 +++-- availabili.tf/src/stores/schedule.ts | 6 +- availabili.tf/src/stores/teams.ts | 17 ++- availabili.tf/src/views/ScheduleView.vue | 5 +- availabili.tf/src/views/TeamDetailsView.vue | 32 ++++- backend-flask/team.py | 58 ++++++++- 15 files changed, 399 insertions(+), 39 deletions(-) create mode 100644 availabili.tf/src/client/models/EditMemberRolesJson.ts create mode 100644 availabili.tf/src/components/RoleTag.vue diff --git a/availabili.tf/package-lock.json b/availabili.tf/package-lock.json index d65c053..9f98ddd 100644 --- a/availabili.tf/package-lock.json +++ b/availabili.tf/package-lock.json @@ -10,6 +10,8 @@ "dependencies": { "axios": "^1.7.7", "bootstrap-icons": "^1.11.3", + "moment": "^2.30.1", + "moment-timezone": "^0.5.46", "pinia": "^2.2.4", "v-tooltip": "^2.1.3", "vue": "^3.5.12", @@ -5138,6 +5140,27 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/moment-timezone": { + "version": "0.5.46", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.46.tgz", + "integrity": "sha512-ZXm9b36esbe7OmdABqIWJuBBiLLwAjrN7CE+7sYdCCx82Nabt1wHDj8TVseS59QIlfFPbOoiBPm6ca9BioG4hw==", + "license": "MIT", + "dependencies": { + "moment": "^2.29.4" + }, + "engines": { + "node": "*" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", diff --git a/availabili.tf/package.json b/availabili.tf/package.json index ae1b006..1269fc1 100644 --- a/availabili.tf/package.json +++ b/availabili.tf/package.json @@ -12,11 +12,13 @@ "type-check": "vue-tsc --build --force", "lint": "eslint . --fix", "format": "prettier --write src/", - "openapi-generate": "openapi --input 'http://localhost:5000/apidoc/openapi.json' --output src/client --name AvailabilitfClient" + "openapi-generate": "openapi --input 'http://localhost:8000/apidoc/openapi.json' --output src/client --name AvailabilitfClient" }, "dependencies": { "axios": "^1.7.7", "bootstrap-icons": "^1.11.3", + "moment": "^2.30.1", + "moment-timezone": "^0.5.46", "pinia": "^2.2.4", "v-tooltip": "^2.1.3", "vue": "^3.5.12", diff --git a/availabili.tf/src/client/index.ts b/availabili.tf/src/client/index.ts index c486b9d..9cf86c0 100644 --- a/availabili.tf/src/client/index.ts +++ b/availabili.tf/src/client/index.ts @@ -12,6 +12,7 @@ export type { OpenAPIConfig } from './core/OpenAPI'; export type { AddPlayerJson } from './models/AddPlayerJson'; export type { CreateTeamJson } from './models/CreateTeamJson'; +export type { EditMemberRolesJson } from './models/EditMemberRolesJson'; export type { PutScheduleForm } from './models/PutScheduleForm'; export type { RoleSchema } from './models/RoleSchema'; export { TeamRole } from './models/TeamRole'; diff --git a/availabili.tf/src/client/models/EditMemberRolesJson.ts b/availabili.tf/src/client/models/EditMemberRolesJson.ts new file mode 100644 index 0000000..a62b5a0 --- /dev/null +++ b/availabili.tf/src/client/models/EditMemberRolesJson.ts @@ -0,0 +1,9 @@ +/* generated using openapi-typescript-codegen -- do not edit */ +/* istanbul ignore file */ +/* tslint:disable */ +/* eslint-disable */ +import type { RoleSchema } from './RoleSchema'; +export type EditMemberRolesJson = { + roles: Array; +}; + diff --git a/availabili.tf/src/client/models/ViewTeamMembersResponse.ts b/availabili.tf/src/client/models/ViewTeamMembersResponse.ts index bcae8d5..1391621 100644 --- a/availabili.tf/src/client/models/ViewTeamMembersResponse.ts +++ b/availabili.tf/src/client/models/ViewTeamMembersResponse.ts @@ -4,6 +4,9 @@ /* eslint-disable */ import type { RoleSchema } from './RoleSchema'; export type ViewTeamMembersResponse = { + availability: number; + createdAt: string; + playtime: number; roles: Array; steamId: string; username: string; diff --git a/availabili.tf/src/client/services/DefaultService.ts b/availabili.tf/src/client/services/DefaultService.ts index bea30f0..55e9562 100644 --- a/availabili.tf/src/client/services/DefaultService.ts +++ b/availabili.tf/src/client/services/DefaultService.ts @@ -4,6 +4,7 @@ /* eslint-disable */ import type { AddPlayerJson } from '../models/AddPlayerJson'; import type { CreateTeamJson } from '../models/CreateTeamJson'; +import type { EditMemberRolesJson } from '../models/EditMemberRolesJson'; import type { PutScheduleForm } from '../models/PutScheduleForm'; import type { ViewScheduleResponse } from '../models/ViewScheduleResponse'; import type { ViewTeamMembersResponseList } from '../models/ViewTeamMembersResponseList'; @@ -210,6 +211,35 @@ export class DefaultService { }, }); } + /** + * edit_member_roles + * @param teamId + * @param targetPlayerId + * @param requestBody + * @returns void + * @throws ApiError + */ + public editMemberRoles( + teamId: string, + targetPlayerId: string, + requestBody?: EditMemberRolesJson, + ): CancelablePromise { + return this.httpRequest.request({ + method: 'PATCH', + url: '/api/team/id/{team_id}/edit-player/{target_player_id}', + path: { + 'team_id': teamId, + 'target_player_id': targetPlayerId, + }, + body: requestBody, + mediaType: 'application/json', + errors: { + 403: `Forbidden`, + 404: `Not Found`, + 422: `Unprocessable Entity`, + }, + }); + } /** * add_player * @param teamId diff --git a/availabili.tf/src/components/PlayerTeamCard.vue b/availabili.tf/src/components/PlayerTeamCard.vue index 5ce519d..79fc350 100644 --- a/availabili.tf/src/components/PlayerTeamCard.vue +++ b/availabili.tf/src/components/PlayerTeamCard.vue @@ -1,14 +1,74 @@