Skip to content

Commit 0c625d9

Browse files
committed
fix: progress bar data
1 parent 5c605e6 commit 0c625d9

File tree

1 file changed

+69
-44
lines changed

1 file changed

+69
-44
lines changed

lark-ui/src/lib/ProgressBar.svelte

Lines changed: 69 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -2,59 +2,84 @@
22
import { onMount } from "svelte";
33
import { getHourCounts } from "./auth";
44
5-
let approvedHours = $state(15);
6-
let hackatimeHours = $state(25);
7-
let goalHours = $state(50);
8-
9-
// onMount(async () => {
10-
// const hourCounts = await getHourCounts();
11-
// approvedHours = hourCounts.approvedHours;
12-
// hackatimeHours =
13-
// hourCounts.hackatimeHours - hourCounts.approvedHours > 50
14-
// ? 50
15-
// : hourCounts.hackatimeHours - hourCounts.approvedHours;
16-
// });
5+
let approvedPercentage = $state(0.0);
6+
let reviewPercentage = $state(0.0);
7+
let remainingPercentage = $state(0.0);
8+
9+
let totalHours = $state(0);
10+
let rawApprovedHours = $state(0);
11+
let rawTotalHours = $state(0);
12+
const goalHours = 50;
13+
14+
onMount(async () => {
15+
const hourCounts = await getHourCounts();
16+
17+
rawApprovedHours = hourCounts.approvedHours;
18+
rawTotalHours = hourCounts.hackatimeHours;
19+
20+
let approvedHours =
21+
hourCounts.approvedHours > 50 ? 50 : hourCounts.approvedHours;
22+
totalHours =
23+
hourCounts.hackatimeHours > 50 ? 50 : hourCounts.hackatimeHours;
24+
25+
approvedPercentage = approvedHours / goalHours;
26+
reviewPercentage = (totalHours - approvedHours) / goalHours;
27+
remainingPercentage = (goalHours - totalHours) / goalHours;
28+
});
29+
30+
let remainingHours = $derived(goalHours - totalHours);
1731
</script>
1832

1933
<div class="progress-card">
2034
<p class="time-left">
21-
{goalHours - hackatimeHours - approvedHours} hOuRS LEFT TO
35+
{remainingHours} hOuRS LEFT TO
2236
<span class="midnight">MIDNIGHT</span>
2337
</p>
2438

2539
<div class="progress-track">
26-
<div
27-
class="progress-segment approved"
28-
style="width: {(approvedHours / goalHours) * 100}%"
29-
>
30-
</div>
31-
<div
32-
class="progress-segment hackatime"
33-
style="width: {((hackatimeHours + approvedHours) / goalHours) *
34-
100}%"
35-
>
36-
</div>
37-
<div
38-
class="progress-segment remaining"
39-
style="width: {((goalHours - hackatimeHours - approvedHours) /
40-
goalHours) *
41-
100}%"
42-
></div>
40+
{#if rawApprovedHours > 0}
41+
<div
42+
class="progress-segment approved"
43+
style="width: {approvedPercentage * 100}%"
44+
></div>
45+
{/if}
46+
{#if reviewPercentage > 0}
47+
<div
48+
class="progress-segment hackatime"
49+
style="width: {reviewPercentage * 100}%"
50+
></div>
51+
{/if}
52+
{#if remainingHours > 0}
53+
<div
54+
class="progress-segment remaining"
55+
style="width: {remainingPercentage * 100}%"
56+
></div>
57+
{/if}
4358
</div>
4459

4560
<div class="progress-key">
46-
<p
47-
class="key"
48-
style="width: {(approvedHours / goalHours) * 100}%"
49-
>{approvedHours} HOuRS <span class="approved">APPROVED</span></p>
50-
<p
51-
class="key"
52-
style="width: {((hackatimeHours + approvedHours) / goalHours) * 100}%"
53-
>{hackatimeHours} HOuRS LOGGED ON <span class="hackatime">HACKATIME</span></p>
54-
<p
55-
class="key"
56-
style="width: {((goalHours - hackatimeHours - approvedHours) / goalHours) * 100}%"
57-
>{goalHours - hackatimeHours - approvedHours} HouRS REMAINING</p>
61+
{#if rawApprovedHours > 0}
62+
<p class="key" style="width: {approvedPercentage * 100}%">
63+
{rawApprovedHours} HOuRS <span class="approved">APPROVED</span>
64+
</p>
65+
{/if}
66+
{#if rawTotalHours > rawApprovedHours}
67+
<p
68+
class="key"
69+
style="width: {reviewPercentage * 100}%"
70+
>
71+
{rawTotalHours - rawApprovedHours} HOuRS
72+
<span class="hackatime">PENDING FOR REVIEW</span>
73+
</p>
74+
{/if}
75+
{#if remainingHours > 0}
76+
<p
77+
class="key"
78+
style="width: {remainingPercentage * 100}%"
79+
>
80+
{remainingHours} HouRS REMAINING
81+
</p>
82+
{/if}
5883
</div>
5984
</div>
6085

@@ -77,7 +102,7 @@
77102
}
78103
79104
.progress-card {
80-
background: #2E2740;
105+
background: #2e2740;
81106
border-radius: 16px;
82107
padding: 16px 20px;
83108
margin: 16px;
@@ -126,7 +151,7 @@
126151
}
127152
128153
.approved {
129-
color: #1385f0;
154+
color: #7bbbf6;
130155
}
131156
132157
.hackatime {

0 commit comments

Comments
 (0)