Add managers to NavBar, layout active/retired names and link to individual manager page
This commit is contained in:
parent
5cadb7f661
commit
01567e3aee
@ -25,6 +25,11 @@
|
|||||||
:to="{ name: 'team', params: { seasonNumber: seasonNumber(), teamAbbreviation: 'FA' } }">Free Agents
|
:to="{ name: 'team', params: { seasonNumber: seasonNumber(), teamAbbreviation: 'FA' } }">Free Agents
|
||||||
</RouterLink>
|
</RouterLink>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<RouterLink class="nav-link" :to="{ name: 'managers' }">
|
||||||
|
Managers
|
||||||
|
</RouterLink>
|
||||||
|
</li>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link" href="/rules">Rules Ref</a>
|
<a class="nav-link" href="/rules">Rules Ref</a>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
@ -47,6 +47,12 @@ export const routes: RouteRecordRaw[] = [
|
|||||||
component: () => import('../views/ScheduleView.vue'),
|
component: () => import('../views/ScheduleView.vue'),
|
||||||
props: castScheduleRouteParams
|
props: castScheduleRouteParams
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: '/managers/:managerName?',
|
||||||
|
name: 'managers',
|
||||||
|
component: () => import('../views/ManagerView.vue'),
|
||||||
|
props: castManagersRouteParams
|
||||||
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
function castTeamsRouteParams(route: { params: { teamAbbreviation: string, seasonNumber: string } }) {
|
function castTeamsRouteParams(route: { params: { teamAbbreviation: string, seasonNumber: string } }) {
|
||||||
@ -70,6 +76,12 @@ function castScheduleRouteParams(route: { params: { seasonNumber: string, weekNu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function castManagersRouteParams(route: { params: { managerName: string } }) {
|
||||||
|
return {
|
||||||
|
managerName: route.params.managerName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const router = createRouter({
|
const router = createRouter({
|
||||||
history: createWebHistory(), //import.meta.env.BASE_URL),
|
history: createWebHistory(), //import.meta.env.BASE_URL),
|
||||||
routes,
|
routes,
|
||||||
|
|||||||
21
src/services/managerService.ts
Normal file
21
src/services/managerService.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import type { Manager } from './apiResponseTypes'
|
||||||
|
import { SITE_URL } from './utilities'
|
||||||
|
|
||||||
|
export async function fetchActiveManagers(): Promise<Manager[]> {
|
||||||
|
return await fetchManagers(true)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function fetchRetiredManagers(): Promise<Manager[]> {
|
||||||
|
return await fetchManagers(false)
|
||||||
|
}
|
||||||
|
|
||||||
|
async function fetchManagers(active: boolean): Promise<Manager[]> {
|
||||||
|
const response = await fetch(`${SITE_URL}/api/v3/managers?active=${active}&short_output=true`)
|
||||||
|
|
||||||
|
const managersResponse: {
|
||||||
|
count: number
|
||||||
|
managers: Manager[]
|
||||||
|
} = await response.json()
|
||||||
|
|
||||||
|
return managersResponse.managers
|
||||||
|
}
|
||||||
@ -1,12 +1,39 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="manager-view centerDiv">
|
<div class="manager-view centerDiv">
|
||||||
|
|
||||||
<div class="row">
|
<div v-if="!managerName" class="row">
|
||||||
<div class="col-sm-12">
|
<div class="row">
|
||||||
<h1 id="manager-name">{{ managerName }}</h1>
|
<h1 style="text-align:center">Active</h1>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 my-1" v-for="manager in activeManagers.slice().sort((a, b) => a.name.localeCompare(b.name))"
|
||||||
|
:key="manager.id">
|
||||||
|
<RouterLink :to="{ name: 'managers', params: { managerName: manager.name } }">
|
||||||
|
<h5>{{ manager.name }}</h5>
|
||||||
|
</RouterLink>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>🚧 Coming Soon 🚧</div>
|
<div class="row">
|
||||||
|
<h1 style="text-align:center">Retired</h1>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-2 my-1" v-for="manager in retiredManagers.slice().sort((a, b) => a.name.localeCompare(b.name))"
|
||||||
|
:key="manager.id">
|
||||||
|
<RouterLink :to="{ name: 'managers', params: { managerName: manager.name } }">
|
||||||
|
<h5>{{ manager.name }}</h5>
|
||||||
|
</RouterLink>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-12">
|
||||||
|
<h1 id="manager-name">{{ managerName }}</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>🚧 Coming Soon 🚧</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<!-- <div class="col-sm-12">
|
<!-- <div class="col-sm-12">
|
||||||
<h3 id="manager-record">Career Record: 294-218</h3>
|
<h3 id="manager-record">Career Record: 294-218</h3>
|
||||||
@ -100,16 +127,49 @@
|
|||||||
</div>
|
</div>
|
||||||
</div> -->
|
</div> -->
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import type { Manager } from '@/services/apiResponseTypes'
|
||||||
|
import { fetchActiveManagers, fetchRetiredManagers } from '@/services/managerService'
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'ManagerView',
|
name: 'ManagerView',
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
activeManagers: [] as Manager[],
|
||||||
|
retiredManagers: [] as Manager[]
|
||||||
|
}
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
managerName: { type: String, required: true },
|
managerName: { type: String, default: undefined },
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
zippedManagers(): { active: Manager | undefined, retired: Manager | undefined }[] {
|
||||||
|
return this.activeManagers.map((mgr, idx) => {
|
||||||
|
return {
|
||||||
|
active: mgr,
|
||||||
|
retired: idx < this.retiredManagers.length ? this.retiredManagers[idx] : undefined
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
managerName(newValue, oldValue) {
|
||||||
|
if (newValue !== oldValue)
|
||||||
|
this.fetchData()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async fetchData(): Promise<void> {
|
||||||
|
this.activeManagers = await fetchActiveManagers()
|
||||||
|
this.retiredManagers = await fetchRetiredManagers()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
Loading…
Reference in New Issue
Block a user