{#if user === undefined} Please log in to view this page. {:else} {#await activityHistoryData} Loading ... {:then activities} {#if activities === undefined} Loading ... {:else} {@const filledActivities = fillMissingDays(activities)} {@const highestActivity = Math.max(...filledActivities.map((activity) => activity.amount))}
{#each filledActivities as activity}
(baseHue = Math.floor(Math.random() * 360))} on:keydown={() => { return; }} role="button" tabindex="0" title={`Date: ${new Date(activity.date * 1000).toLocaleDateString()}\nAmount: ${ activity.amount }`} /> {/each}

{#if generated}

{/if}

Generate grid image

Days in risk of developing an activity history hole. (days with one activity)
    {#each filledActivities as activity} {#if activity.amount === 0}
  • {new Date( activity.date * 1000 + new Date().getTimezoneOffset() * 60 * 1000 ).toDateString()}
  • {/if} {/each}
{/if} {/await} {/if}