Add statistics to gallery view

This commit is contained in:
2023-03-20 18:58:28 +01:00
parent b5939d7bdd
commit 07091df7dc
2 changed files with 52 additions and 3 deletions

View File

@@ -14,13 +14,13 @@ import ReportWindow from "./ReportWindow.svelte";
import IntroPopup from "./IntroPopup.svelte"; import IntroPopup from "./IntroPopup.svelte";
import AdHead from "./AdHead.svelte"; import AdHead from "./AdHead.svelte";
import AdLeaderboard from "./AdLeaderboard.svelte"; import AdLeaderboard from "./AdLeaderboard.svelte";
import AdSkyscraper from "./AdSkyscraper.svelte";
import Sharebar from "./Sharebar.svelte"; import Sharebar from "./Sharebar.svelte";
import GalleryView from "./GalleryView.svelte"; import GalleryView from "./GalleryView.svelte";
import Downloader from "./Downloader.svelte"; import Downloader from "./Downloader.svelte";
import CustomBanner from "./CustomBanner.svelte"; import CustomBanner from "./CustomBanner.svelte";
import LoadingIndicator from "../util/LoadingIndicator.svelte"; import LoadingIndicator from "../util/LoadingIndicator.svelte";
import TransferLimit from "./TransferLimit.svelte"; import TransferLimit from "./TransferLimit.svelte";
import ListStats from "./ListStats.svelte";
let loading = true let loading = true
let embedded = false let embedded = false
@@ -412,10 +412,13 @@ const keyboard_event = evt => {
<div class="file_preview_row"> <div class="file_preview_row">
<div class="toolbar" class:toolbar_visible> <div class="toolbar" class:toolbar_visible>
{#if view === "file"} {#if view === "file"}
<FileStats file={file}></FileStats> <FileStats file={file}/>
<div class="separator"></div> {:else if view === "gallery"}
<ListStats list={list}/>
{/if} {/if}
<div class="separator"></div>
{#if file.abuse_type === "" && view === "file"} {#if file.abuse_type === "" && view === "file"}
<button <button
on:click={downloader.download_file} on:click={downloader.download_file}

View File

@@ -0,0 +1,46 @@
<script>
import { formatDataVolume, formatThousands } from "../util/Formatting.svelte"
export let list = {
files: [],
}
$: size = list.files.reduce((acc, file) => acc += file.size, 0)
$: views = list.files.reduce((acc, file) => acc += file.views, 0)
$: downloads = list.files.reduce(
(acc, file) => {
if (file.size === 0) {
acc += file.downloads
} else {
acc += Math.round((file.bandwidth_used + file.bandwidth_used_paid) / file.size)
}
return acc
},
0,
)
</script>
<div>
<div class="label">Files</div>
<div class="stat">{list.files.length}</div>
<div class="label">Size</div>
<div class="stat">{formatDataVolume(size, 3)}</div>
<div class="label">Views</div>
<div class="stat">{formatThousands(views)}</div>
<div class="label">Downloads</div>
<div class="stat">{formatThousands(downloads)}</div>
</div>
<style>
.label {
text-align: left;
padding-left: 10px;
font-size: 0.8em;
line-height: 0.7em;
margin-top: 0.5em;
}
.stat {
text-align: center;
}
</style>