blob: b2ad21d0e17d33228198b837f87e0de201710d4a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
<script lang="ts">
import { activityHistory, type ActivityHistoryEntry } from '$lib/AniList/activity.js';
import { onMount } from 'svelte';
import userIdentity from '../../stores/userIdentity.js';
import { userIdentity as getUserIdentity } from '$lib/AniList/identity';
export let user: any;
let activityHistoryData: Promise<ActivityHistoryEntry[]>;
let currentUserIdentity = { name: '', id: -1 };
const timezoneOffset = new Date().getTimezoneOffset() * 60 * 1000;
onMount(async () => {
if (user !== undefined) {
if ($userIdentity === '') {
userIdentity.set(JSON.stringify(await getUserIdentity(user)));
}
currentUserIdentity = JSON.parse($userIdentity);
currentUserIdentity.name = currentUserIdentity.name;
activityHistoryData = activityHistory(currentUserIdentity);
console.log(fillMissingDays(await activityHistory(currentUserIdentity)));
}
});
const fillMissingDays = (inputActivities: ActivityHistoryEntry[]): ActivityHistoryEntry[] => {
let activities = inputActivities;
const firstDate = new Date(activities[0].date * 1000 + timezoneOffset);
const lastDate = new Date(activities[activities.length - 1].date * 1000 + timezoneOffset);
const currentDate = firstDate;
while (currentDate <= lastDate) {
const current_unix_timestamp = currentDate.getTime();
let found = false;
for (let i = 0; i < activities.length; i++) {
if (activities[i].date * 1000 + timezoneOffset === current_unix_timestamp) {
found = true;
break;
}
}
if (!found) {
activities.push({
date: current_unix_timestamp / 1000,
amount: 0
});
}
currentDate.setDate(currentDate.getDate() + 1);
}
// activities.sort((a: { date: number }, b: { date: number }) => a.date - b.date);
return activities;
};
// const incrementDate = (date: Date): Date => {
// date.setDate(date.getDate() + 1);
// return date;
// };
</script>
<blockquote>
Days in risk of developing an activity history hole. (days with one activity)
</blockquote>
{#if user === undefined}
Please log in to view this page.
{:else}
{#await activityHistoryData}
Loading ...
{:then activities}
{#if activities === undefined}
Loading ...
{:else}
<ul>
{#each fillMissingDays(activities) as activity}
{#if activity.amount === 0}
<li>
{new Date(activity.date * 1000 + timezoneOffset).toDateString()}
</li>
{/if}
{/each}
</ul>
{/if}
{/await}
{/if}
|