@@ -95,10 +132,12 @@ const isUnavailable = computed(() => {
@@ -118,15 +157,23 @@ const isUnavailable = computed(() => {
v-model="roles[i]"
/>
-
-
+
+ v-tooltip="rosterStore.roleNames[role.role]"
+ >
+
+
+
+ No roles
+
@@ -209,7 +256,7 @@ const isUnavailable = computed(() => {
.role-icons i {
font-size: 24px;
- line-height: 0;
+ line-height: 1;
color: var(--overlay-0);
}
diff --git a/availabili.tf/src/main.ts b/availabili.tf/src/main.ts
index ee6b674..65126ef 100644
--- a/availabili.tf/src/main.ts
+++ b/availabili.tf/src/main.ts
@@ -4,14 +4,17 @@ import "vue-select/dist/vue-select.css";
import { createApp } from "vue";
import { createPinia } from "pinia";
import VueSelect from "vue-select";
+import { TooltipDirective } from "vue3-tooltip";
+import "vue3-tooltip/tooltip.css";
import App from "./App.vue";
import router from "./router";
-const app = createApp(App)
+const app = createApp(App);
-app.use(createPinia())
-app.use(router)
+app.use(createPinia());
+app.use(router);
+app.directive("tooltip", TooltipDirective);
app.component("v-select", VueSelect);
-app.mount("#app")
+app.mount("#app");
diff --git a/availabili.tf/src/stores/schedule.ts b/availabili.tf/src/stores/schedule.ts
index 4f7c5d0..1c60087 100644
--- a/availabili.tf/src/stores/schedule.ts
+++ b/availabili.tf/src/stores/schedule.ts
@@ -31,6 +31,8 @@ export const useScheduleStore = defineStore("schedule", () => {
const overlay: Ref = ref();
+ const selectedMembers = ref();
+
const hoveredIndex: Ref = ref();
const team = ref();
@@ -113,6 +115,7 @@ export const useScheduleStore = defineStore("schedule", () => {
availability,
playerAvailability,
overlay,
+ selectedMembers,
hoveredIndex,
fetchSchedule,
fetchTeamSchedule,
diff --git a/availabili.tf/src/stores/teams.ts b/availabili.tf/src/stores/teams.ts
index e93ef71..557c1ea 100644
--- a/availabili.tf/src/stores/teams.ts
+++ b/availabili.tf/src/stores/teams.ts
@@ -4,6 +4,7 @@ import { defineStore } from "pinia";
import { computed, reactive, ref, type Reactive, type Ref } from "vue";
import { useClientStore } from "./client";
import { useAuthStore } from "./auth";
+import moment from "moment";
export type TeamMap = { [id: number]: TeamSchema };
diff --git a/availabili.tf/src/views/ScheduleView.vue b/availabili.tf/src/views/ScheduleView.vue
index 553b919..524d11e 100644
--- a/availabili.tf/src/views/ScheduleView.vue
+++ b/availabili.tf/src/views/ScheduleView.vue
@@ -7,13 +7,14 @@ import { computed, onMounted, reactive, ref, watch } from "vue";
import { useTeamsStore } from "../stores/teams";
import { useScheduleStore } from "../stores/schedule";
import { useRoute, useRouter } from "vue-router";
+import type { TeamSchema } from "@/client";
const teamsStore = useTeamsStore();
const schedule = useScheduleStore();
const router = useRouter();
const route = useRoute();
-const options = ref([ ]);
+const options = ref([ ]);
const firstHour = computed(() => shouldShowAllHours.value ? 0 : 14);
const lastHour = computed(() => shouldShowAllHours.value ? 23 : 22);
diff --git a/availabili.tf/src/views/TeamDetailsView.vue b/availabili.tf/src/views/TeamDetailsView.vue
index ef50d89..c341c2f 100644
--- a/availabili.tf/src/views/TeamDetailsView.vue
+++ b/availabili.tf/src/views/TeamDetailsView.vue
@@ -45,11 +45,18 @@ onMounted(() => {
Formed on {{ creationDate }}
-
-
-
- Settings
-
+
+
+
+
+
+
+
+
@@ -60,4 +67,24 @@ onMounted(() => {
.margin {
margin: 4em;
}
+
+.icons {
+ display: flex;
+ justify-content: center;
+ margin: 8px;
+ gap: 4px;
+}
+
+.icons a {
+ border-radius: 4px;
+}
+
+.icons button {
+ color: var(--overlay-0);
+ font-size: 12pt;
+}
+
+.icons button:hover {
+ color: var(--text);
+}
diff --git a/availabili.tf/src/views/TeamSettings/GeneralView.vue b/availabili.tf/src/views/TeamSettings/GeneralView.vue
index 5ab83d9..687b714 100644
--- a/availabili.tf/src/views/TeamSettings/GeneralView.vue
+++ b/availabili.tf/src/views/TeamSettings/GeneralView.vue
@@ -11,6 +11,7 @@ const {
|