mirror of
https://github.com/immich-app/data.immich.app.git
synced 2026-09-30 13:23:26 +08:00
feat: loading spinners
This commit is contained in:
@@ -1,8 +1,19 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import '$lib/app.css';
|
import '$lib/app.css';
|
||||||
import GithubGraph from '$lib/components/graphs/github-graph.svelte';
|
import GithubGraph from '$lib/components/graphs/github-graph.svelte';
|
||||||
import { githubData } from '$lib/services/api.svelte';
|
import { githubData, loadGithubData } from '$lib/services/api.svelte';
|
||||||
import { Card, CardBody, CardHeader, CardTitle, Container, Heading, HStack, Icon, Text } from '@immich/ui';
|
import {
|
||||||
|
Card,
|
||||||
|
CardBody,
|
||||||
|
CardHeader,
|
||||||
|
CardTitle,
|
||||||
|
Container,
|
||||||
|
Heading,
|
||||||
|
HStack,
|
||||||
|
Icon,
|
||||||
|
LoadingSpinner,
|
||||||
|
Text,
|
||||||
|
} from '@immich/ui';
|
||||||
import { mdiBugOutline, mdiMessageOutline, mdiSourceBranch, mdiStarOutline } from '@mdi/js';
|
import { mdiBugOutline, mdiMessageOutline, mdiSourceBranch, mdiStarOutline } from '@mdi/js';
|
||||||
import uPlot from 'uplot';
|
import uPlot from 'uplot';
|
||||||
import 'uplot/dist/uPlot.min.css';
|
import 'uplot/dist/uPlot.min.css';
|
||||||
@@ -17,6 +28,8 @@
|
|||||||
key: 'sync',
|
key: 'sync',
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const loading = loadGithubData();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Container size="giant" center>
|
<Container size="giant" center>
|
||||||
@@ -25,57 +38,75 @@
|
|||||||
</Heading>
|
</Heading>
|
||||||
<Text color="muted">immich-app/immich</Text>
|
<Text color="muted">immich-app/immich</Text>
|
||||||
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 mt-8">
|
<div class="grid grid-cols-1 lg:grid-cols-2 gap-4 mt-8">
|
||||||
<Card>
|
{#await loading}
|
||||||
<CardHeader>
|
{#each [1, 2, 3, 4] as _}
|
||||||
<CardTitle>
|
<Card class="animate-pulse">
|
||||||
<HStack>
|
<CardBody>
|
||||||
<Icon icon={mdiStarOutline} />
|
<div class="h-32 flex items-center justify-center">
|
||||||
Stars
|
<LoadingSpinner size="large" />
|
||||||
</HStack>
|
</div>
|
||||||
</CardTitle>
|
</CardBody>
|
||||||
</CardHeader>
|
</Card>
|
||||||
<CardBody>
|
{/each}
|
||||||
<GithubGraph color="yellow" id="stars-chart" data={githubData.stars} {cursorOpts} label="Stars" />
|
{:then}
|
||||||
</CardBody>
|
<Card>
|
||||||
</Card>
|
<CardHeader>
|
||||||
<Card>
|
<CardTitle>
|
||||||
<CardHeader>
|
<HStack>
|
||||||
<CardTitle>
|
<Icon icon={mdiStarOutline} />
|
||||||
<HStack>
|
Stars
|
||||||
<Icon icon={mdiBugOutline} />
|
</HStack>
|
||||||
<span>Issues</span>
|
</CardTitle>
|
||||||
</HStack>
|
</CardHeader>
|
||||||
</CardTitle>
|
<CardBody>
|
||||||
</CardHeader>
|
<GithubGraph color="yellow" id="stars-chart" data={githubData.stars} {cursorOpts} label="Stars" />
|
||||||
<CardBody>
|
</CardBody>
|
||||||
<GithubGraph color="blue" id="issues-chart" data={githubData.issues} {cursorOpts} label="Issues" />
|
</Card>
|
||||||
</CardBody>
|
<Card>
|
||||||
</Card>
|
<CardHeader>
|
||||||
<Card>
|
<CardTitle>
|
||||||
<CardHeader>
|
<HStack>
|
||||||
<CardTitle>
|
<Icon icon={mdiBugOutline} />
|
||||||
<HStack>
|
<span>Issues</span>
|
||||||
<Icon icon={mdiSourceBranch} />
|
</HStack>
|
||||||
<span>Open Pull Requests</span>
|
</CardTitle>
|
||||||
</HStack>
|
</CardHeader>
|
||||||
</CardTitle>
|
<CardBody>
|
||||||
</CardHeader>
|
<GithubGraph color="blue" id="issues-chart" data={githubData.issues} {cursorOpts} label="Issues" />
|
||||||
<CardBody>
|
</CardBody>
|
||||||
<GithubGraph color="green" id="pull-requests-chart" data={githubData.pullRequests} {cursorOpts} label="PR" />
|
</Card>
|
||||||
</CardBody>
|
<Card>
|
||||||
</Card>
|
<CardHeader>
|
||||||
<Card>
|
<CardTitle>
|
||||||
<CardHeader>
|
<HStack>
|
||||||
<CardTitle>
|
<Icon icon={mdiSourceBranch} />
|
||||||
<HStack>
|
<span>Open Pull Requests</span>
|
||||||
<Icon icon={mdiMessageOutline} />
|
</HStack>
|
||||||
<span>Total Discussions</span>
|
</CardTitle>
|
||||||
</HStack>
|
</CardHeader>
|
||||||
</CardTitle>
|
<CardBody>
|
||||||
</CardHeader>
|
<GithubGraph color="green" id="pull-requests-chart" data={githubData.pullRequests} {cursorOpts} label="PR" />
|
||||||
<CardBody>
|
</CardBody>
|
||||||
<GithubGraph color="purple" id="discussions-chart" data={githubData.discussions} {cursorOpts} label="Topics" />
|
</Card>
|
||||||
</CardBody>
|
<Card>
|
||||||
</Card>
|
<CardHeader>
|
||||||
|
<CardTitle>
|
||||||
|
<HStack>
|
||||||
|
<Icon icon={mdiMessageOutline} />
|
||||||
|
<span>Total Discussions</span>
|
||||||
|
</HStack>
|
||||||
|
</CardTitle>
|
||||||
|
</CardHeader>
|
||||||
|
<CardBody>
|
||||||
|
<GithubGraph
|
||||||
|
color="purple"
|
||||||
|
id="discussions-chart"
|
||||||
|
data={githubData.discussions}
|
||||||
|
{cursorOpts}
|
||||||
|
label="Topics"
|
||||||
|
/>
|
||||||
|
</CardBody>
|
||||||
|
</Card>
|
||||||
|
{/await}
|
||||||
</div>
|
</div>
|
||||||
</Container>
|
</Container>
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
import { loadGithubData } from '$lib/services/api.svelte';
|
|
||||||
|
|
||||||
export const ssr = false;
|
|
||||||
|
|
||||||
export const load = async () => {
|
|
||||||
await loadGithubData();
|
|
||||||
|
|
||||||
return {};
|
|
||||||
};
|
|
||||||
Reference in New Issue
Block a user