--- /dev/null
+import type { Builder } from "@/types/Builder";
+
+export async function fetchBuilders(): Promise<Builder[]> {
+ // Fetch all builders
+ const response = await fetch("/api/v1/builders");
+ if (!response.ok)
+ throw new Error("Failed to fetch builders");
+
+ return response.json();
+}
import HomeView from '../views/HomeView.vue'
import LoginView from "../views/LoginView.vue"
+import BuildersView from "../views/BuildersView.vue"
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
name: "login",
component: LoginView,
},
+
+ // Builders
+ {
+ path: "/builders",
+ name: "builders",
+ component: BuildersView,
+ },
],
})
--- /dev/null
+<script setup lang="ts">
+ import { ref, onMounted } from "vue";
+ import type { Builder } from "@/types/Builder";
+ import { fetchBuilders } from "@/api/builders";
+
+ // Import UI components
+ import Section from "../components/Section.vue"
+
+ // Builders
+ const builders = ref<Builder[]>([]);
+
+ // Fetch all builders as soon as we are mounted
+ onMounted(async () => {
+ try {
+ builders.value = await fetchBuilders();
+ } catch (err) {
+ console.error(err);
+ }
+ });
+</script>
+
+<template>
+ <Section :title="$t('Builders')">
+ <Container>
+ <div v-for="builder in builders" class="box" :key="builder.name">
+ <h5 class="title is-5">
+ {{ builder.name }}
+ </h5>
+
+ <h6 class="subtitle is-6">
+ <span v-if="builder.sys_vendor && builder.sys_name">
+ {{ builder.sys_vendor }} • {{ builder.sys_name }}
+ </span>
+ </h6>
+ </div>
+ </Container>
+ </Section>
+</template>