feat(frontend): Add frontend #25

Merged
Bluemedia merged 16 commits from feature/frontend into main 2025-07-27 21:39:24 +02:00
Showing only changes of commit b3804f3d58 - Show all commits

View file

@ -7,6 +7,7 @@
$i18n.loadNamespaces('chargepoint') $i18n.loadNamespaces('chargepoint')
let loading = $state(true)
let chargepoints: ChargePoint[] = $state([]) let chargepoints: ChargePoint[] = $state([])
const pageSize = 25 const pageSize = 25
let page: number = $state(1) let page: number = $state(1)
@ -21,16 +22,19 @@
.get('/chargepoints', { params: { skip: (page - 1) * pageSize, limit: pageSize } }) .get('/chargepoints', { params: { skip: (page - 1) * pageSize, limit: pageSize } })
.then((res) => { .then((res) => {
chargepoints = res.data chargepoints = res.data
loading = false
}) })
} }
function nextPage() { function nextPage() {
++page ++page
loading = true
load() load()
} }
function previousPage() { function previousPage() {
--page --page
loading = true
load() load()
} }
@ -44,6 +48,7 @@
{$i18n.t('chargepoint:header')} {$i18n.t('chargepoint:header')}
</p> </p>
<div class="overflow-x-auto mt-8 bg-base-100 rounded-md"> <div class="overflow-x-auto mt-8 bg-base-100 rounded-md">
{#if !loading}
<table class="table"> <table class="table">
<thead> <thead>
<tr> <tr>
@ -91,6 +96,13 @@
{$i18n.t('chargepoint:noChargepoints')} {$i18n.t('chargepoint:noChargepoints')}
</p> </p>
{/if} {/if}
{:else}
<div class="card w-full bg-base-100 shadow-sm">
<div class="card-body flex items-center justify-center p-8">
<span class="loading loading-dots loading-xl"></span>
</div>
</div>
{/if}
</div> </div>
<div class="join mt-4"> <div class="join mt-4">
<button onclick={previousPage} disabled={page === 1 || null} class="join-item btn bg-base-100" <button onclick={previousPage} disabled={page === 1 || null} class="join-item btn bg-base-100"