|
2 | 2 | import { onMount } from "svelte";
|
3 | 3 | import { type Client, createClient } from "~/api/client.ts";
|
4 | 4 | import Header from "~/components/header.svelte";
|
| 5 | + import MdiWrench from "virtual:icons/mdi/wrench"; |
| 6 | + import MdiVote from "virtual:icons/mdi/vote"; |
| 7 | + import MdiCog from "virtual:icons/mdi/cog"; |
| 8 | + import MdiGraph from "virtual:icons/mdi/graph"; |
5 | 9 |
|
6 | 10 | const client: Client = createClient({ fetch });
|
7 | 11 | async function getMyProjects(options?: { signal: AbortSignal }) {
|
|
37 | 41 | <Header title="" />
|
38 | 42 | <div class="p-2 hm-blocks-container">
|
39 | 43 | <div class="hm-block">
|
40 |
| - <section> |
41 |
| - <h2 class="text-xl">プロジェクトを新規作成する</h2> |
42 |
| - <div class="flex justify-center p-6"> |
43 |
| - <a href="/new" class="btn btn-lg btn-primary">新規作成</a> |
44 |
| - </div> |
45 |
| - </section> |
46 |
| - <section> |
47 |
| - {#if !projects} |
48 |
| - <span>Welcome! this is being prerendered.</span> |
49 |
| - {:else} |
50 |
| - <ul class="list w-full bg-base-200 rounded-box shadow-md"> |
51 |
| - <li class="p-4 pb-2 text-xl opacity-60 tracking-wide"> |
52 |
| - 作成・提出したプロジェクト |
| 44 | + <h2 class="text-xl">プロジェクトを作る</h2> |
| 45 | + <div class="flex justify-center p-2"> |
| 46 | + <a href="/new" class="btn btn-xl btn-primary" |
| 47 | + ><MdiWrench class="mr-1" />新規作成</a |
| 48 | + > |
| 49 | + </div> |
| 50 | + </div> |
| 51 | + {#if !projects} |
| 52 | + <div class="flex justify-center p-4"> |
| 53 | + <!-- TODO: 何もないときも常に loading になってしまう --> |
| 54 | + <span>Welcome! this is being prerendered.</span> |
| 55 | + </div> |
| 56 | + {:else} |
| 57 | + <div class="hm-block"> |
| 58 | + <h2 class="text-xl">作成・提出したプロジェクト</h2> |
| 59 | + <ul class="list w-full bg-base-200 my-1 rounded-lg"> |
| 60 | + {#if projects.length === 0} |
| 61 | + <li class="list-row flex"> |
| 62 | + 作成・提出したプロジェクトはありません。 |
53 | 63 | </li>
|
54 |
| - {#if projects.length === 0} |
55 |
| - <li class="list-row flex"> |
56 |
| - 作成・提出したプロジェクトはありません。 |
| 64 | + {:else} |
| 65 | + {#each projects as project} |
| 66 | + <li class="list-row flex items-center"> |
| 67 | + <span class="h-full flex-1">{project.name}</span> |
| 68 | + {#if project.is_admin} |
| 69 | + <a |
| 70 | + class="btn btn-primary btn-sm btn-outline" |
| 71 | + href="/{project.id}/config" |
| 72 | + > |
| 73 | + <MdiCog /> |
| 74 | + 管理 |
| 75 | + </a> |
| 76 | + {:else if project.closed_at !== null && new Date(project.closed_at).getTime() < new Date().getTime()} |
| 77 | + <!-- 締切済み --> |
| 78 | + <a class="btn btn-primary btn-sm" href="/{project.id}/result"> |
| 79 | + <MdiGraph /> |
| 80 | + 結果 |
| 81 | + </a> |
| 82 | + {:else} |
| 83 | + <a class="btn btn-primary btn-sm" href="/{project.id}/submit"> |
| 84 | + <MdiVote /> |
| 85 | + 提出 |
| 86 | + </a> |
| 87 | + {/if} |
57 | 88 | </li>
|
58 |
| - {:else} |
59 |
| - {#each projects as project} |
60 |
| - <li class="list-row flex"> |
61 |
| - <span class="h-full flex-1">{project.name}</span> |
62 |
| - {#if project.is_admin} |
63 |
| - <a |
64 |
| - class="btn btn-primary btn-sm btn-outline" |
65 |
| - href="/{project.id}/config" |
66 |
| - > |
67 |
| - 管理 |
68 |
| - </a> |
69 |
| - {/if} |
70 |
| - {#if project.closed_at !== null && new Date(project.closed_at).getTime() < new Date().getTime()} |
71 |
| - <!-- 締切済み --> |
72 |
| - <a |
73 |
| - class="btn btn-success btn-sm" |
74 |
| - href="/{project.id}/result" |
75 |
| - > |
76 |
| - 結果 |
77 |
| - </a> |
78 |
| - {:else} |
79 |
| - <a |
80 |
| - class="btn btn-primary btn-sm" |
81 |
| - href="/{project.id}/submit" |
82 |
| - > |
83 |
| - 提出 |
84 |
| - </a> |
85 |
| - {/if} |
86 |
| - </li> |
87 |
| - {/each} |
88 |
| - {/if} |
89 |
| - </ul> |
90 |
| - {/if} |
91 |
| - </section> |
92 |
| - </div> |
| 89 | + {/each} |
| 90 | + {/if} |
| 91 | + </ul> |
| 92 | + </div> |
| 93 | + {/if} |
93 | 94 | </div>
|
94 | 95 | </div>
|
0 commit comments