Move roster builder button to member list
parent
5f45a8ebda
commit
6821447c74
|
@ -1,25 +1,77 @@
|
|||
<script setup lang="ts">
|
||||
import { useScheduleStore } from "../stores/schedule";
|
||||
import SchedulePlayerListItem from "./SchedulePlayerListItem.vue";
|
||||
import { useRouter } from "vue-router";
|
||||
import { computed } from "vue";
|
||||
|
||||
const scheduleStore = useScheduleStore();
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const selectedTimeTz = computed(() =>
|
||||
props.selectedTime.clone().tz(scheduleStore.team?.tzTimezone));
|
||||
|
||||
const isTeamTzLocal = computed(() => {
|
||||
return selectedTimeTz.value.utcOffset() == props.selectedTime.utcOffset();
|
||||
});
|
||||
|
||||
const props = defineProps({
|
||||
selectedTime: Object
|
||||
});
|
||||
|
||||
function scheduleRoster() {
|
||||
router.push({
|
||||
name: "roster-builder",
|
||||
params: {
|
||||
teamId: scheduleStore.team.id,
|
||||
startTime: props.selectedTime.unix(),
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div class="schedule-player-list">
|
||||
<h3>{{ scheduleStore.team?.teamName }}</h3>
|
||||
<SchedulePlayerListItem
|
||||
v-for="record in scheduleStore.playerAvailability"
|
||||
:player="record"
|
||||
/>
|
||||
<div>
|
||||
<SchedulePlayerListItem
|
||||
v-for="record in scheduleStore.playerAvailability"
|
||||
:player="record"
|
||||
/>
|
||||
</div>
|
||||
<h4>
|
||||
<template v-if="selectedTime">
|
||||
<div>
|
||||
{{ selectedTime.format("L LT z") }}
|
||||
</div>
|
||||
<div v-if="!isTeamTzLocal">
|
||||
{{ selectedTimeTz.format("L LT z") }}
|
||||
</div>
|
||||
</template>
|
||||
</h4>
|
||||
<button @click="scheduleRoster" v-if="selectedTime">
|
||||
Schedule for {{ selectedTime.format("L LT") }}
|
||||
</button>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
h3 {
|
||||
h3, h4 {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
h4, h4 > div {
|
||||
font-weight: 700;
|
||||
font-size: 10pt;
|
||||
min-height: 1em;
|
||||
}
|
||||
|
||||
.schedule-player-list {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
.player:hover {
|
||||
background-color: var(--mantle);
|
||||
}
|
||||
|
|
|
@ -54,16 +54,6 @@ function copyPreviousWeek() {
|
|||
});
|
||||
}
|
||||
|
||||
function scheduleRoster() {
|
||||
router.push({
|
||||
name: "roster-builder",
|
||||
params: {
|
||||
teamId: selectedTeam.value.id,
|
||||
startTime: selectedTime.value.unix(),
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
teamsStore.fetchTeams()
|
||||
.then((teamsList) => {
|
||||
|
@ -74,7 +64,6 @@ onMounted(() => {
|
|||
if (queryTeam) {
|
||||
selectedTeam.value = queryTeam;
|
||||
schedule.team = queryTeam;
|
||||
schedule.fetchTeamSchedule();
|
||||
} else {
|
||||
selectedTeam.value = options.value[0];
|
||||
}
|
||||
|
@ -141,9 +130,6 @@ onMounted(() => {
|
|||
<button @click="copyPreviousWeek">
|
||||
Copy previous week
|
||||
</button>
|
||||
<button @click="scheduleRoster" v-if="selectedTime">
|
||||
Schedule for {{ selectedTime.format("L LT") }}
|
||||
</button>
|
||||
<button class="accent" @click="isEditing = true">
|
||||
<i class="bi bi-pencil-fill"></i>
|
||||
</button>
|
||||
|
@ -155,7 +141,9 @@ onMounted(() => {
|
|||
You currently are not in any team to schedule for.
|
||||
</div>
|
||||
<div class="player-list">
|
||||
<SchedulePlayerList />
|
||||
<SchedulePlayerList
|
||||
:selected-time="selectedTime"
|
||||
/>
|
||||
</div>
|
||||
</main>
|
||||
</template>
|
||||
|
@ -163,7 +151,6 @@ onMounted(() => {
|
|||
<style scoped>
|
||||
main {
|
||||
flex-direction: row;
|
||||
gap: 8px;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
@ -233,4 +220,12 @@ button.right.radio.selected {
|
|||
width: auto;
|
||||
min-width: 11em;
|
||||
}
|
||||
|
||||
.schedule-view-container {
|
||||
flex-basis: 75%;
|
||||
}
|
||||
|
||||
.player-list {
|
||||
flex-basis: 25%;
|
||||
}
|
||||
</style>
|
||||
|
|
Loading…
Reference in New Issue