Add thead and tbody to every table for svelte 5 compatibility
This commit is contained in:
@@ -82,42 +82,46 @@ let set_status = async (action, report_type) => {
|
||||
</div>
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Time</td>
|
||||
<td>IP</td>
|
||||
<td>Type</td>
|
||||
<td>Status</td>
|
||||
<td colspan="2">Reports from this IP</td>
|
||||
</tr>
|
||||
{#each report.reports as user_report}
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{formatDate(user_report.time, true, true, false)}</td>
|
||||
<td>{user_report.ip_address}</td>
|
||||
<td>{user_report.type}</td>
|
||||
<td>{user_report.status}</td>
|
||||
<td>{ip_report_count[user_report.ip_address]}</td>
|
||||
<td>
|
||||
{#if can_grant}
|
||||
<button on:click={() => dispatch("resolve_by_ip", {ip: user_report.ip_address, action: "grant"})}>
|
||||
Accept all
|
||||
</button>
|
||||
{/if}
|
||||
{#if can_reject}
|
||||
<button on:click={() => dispatch("resolve_by_ip", {ip: user_report.ip_address, action: "reject"})}>
|
||||
Ignore all
|
||||
</button>
|
||||
{/if}
|
||||
</td>
|
||||
<td>Time</td>
|
||||
<td>IP</td>
|
||||
<td>Type</td>
|
||||
<td>Status</td>
|
||||
<td colspan="2">Reports from this IP</td>
|
||||
</tr>
|
||||
{#if user_report.description !== ""}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each report.reports as user_report}
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td colspan="5" style="white-space: pre-wrap; word-wrap: break-word;">
|
||||
{user_report.description}
|
||||
<td>{formatDate(user_report.time, true, true, false)}</td>
|
||||
<td>{user_report.ip_address}</td>
|
||||
<td>{user_report.type}</td>
|
||||
<td>{user_report.status}</td>
|
||||
<td>{ip_report_count[user_report.ip_address]}</td>
|
||||
<td>
|
||||
{#if can_grant}
|
||||
<button on:click={() => dispatch("resolve_by_ip", {ip: user_report.ip_address, action: "grant"})}>
|
||||
Accept all
|
||||
</button>
|
||||
{/if}
|
||||
{#if can_reject}
|
||||
<button on:click={() => dispatch("resolve_by_ip", {ip: user_report.ip_address, action: "reject"})}>
|
||||
Ignore all
|
||||
</button>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/each}
|
||||
{#if user_report.description !== ""}
|
||||
<tr>
|
||||
<td>Description</td>
|
||||
<td colspan="5" style="white-space: pre-wrap; word-wrap: break-word;">
|
||||
{user_report.description}
|
||||
</td>
|
||||
</tr>
|
||||
{/if}
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -54,46 +54,50 @@ const toggle_preview = (rep) => {
|
||||
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
|
||||
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
|
||||
<td><SortButton field="reports_sent" active_field={sort_field} asc={asc} sort_func={sort}>Reports</SortButton></td>
|
||||
<td><SortButton field="files_blocked" active_field={sort_field} asc={asc} sort_func={sort}>Blocked</SortButton></td>
|
||||
<td><SortButton field="last_used" active_field={sort_field} asc={asc} sort_func={sort}>Last used</SortButton></td>
|
||||
<td><SortButton field="created" active_field={sort_field} asc={asc} sort_func={sort}>Created</SortButton></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{#each reporters as rep (rep.from_address)}
|
||||
<tr animate:flip={{duration: 500}}>
|
||||
<td>{rep.from_address}</td>
|
||||
<td>{rep.name}</td>
|
||||
<td>{rep.reports_sent}</td>
|
||||
<td>{rep.files_blocked}</td>
|
||||
<td>{formatDate(rep.last_used, true, true, false)}</td>
|
||||
<td>{formatDate(rep.created, false, false, false)}</td>
|
||||
<td>
|
||||
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
|
||||
<i class="icon">email</i>
|
||||
</button>
|
||||
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
|
||||
<i class="icon">edit</i>
|
||||
</button>
|
||||
{#if rep.status !== "trusted"}
|
||||
<button on:click|preventDefault={() => {dispatch("approve", rep)}} class="button button_highlight round">
|
||||
<i class="icon">check</i>
|
||||
</button>
|
||||
{/if}
|
||||
{#if rep.status !== "rejected"}
|
||||
<button on:click|preventDefault={() => {dispatch("spam", rep)}} class="button button_red round">
|
||||
<i class="icon">block</i>
|
||||
</button>
|
||||
{/if}
|
||||
<button on:click|preventDefault={() => {dispatch("delete", rep)}} class="button button_red round">
|
||||
<i class="icon">delete</i>
|
||||
</button>
|
||||
</td>
|
||||
<thead>
|
||||
<tr>
|
||||
<td><SortButton field="from_address" active_field={sort_field} asc={asc} sort_func={sort}>Address</SortButton></td>
|
||||
<td><SortButton field="name" active_field={sort_field} asc={asc} sort_func={sort}>Name</SortButton></td>
|
||||
<td><SortButton field="reports_sent" active_field={sort_field} asc={asc} sort_func={sort}>Reports</SortButton></td>
|
||||
<td><SortButton field="files_blocked" active_field={sort_field} asc={asc} sort_func={sort}>Blocked</SortButton></td>
|
||||
<td><SortButton field="last_used" active_field={sort_field} asc={asc} sort_func={sort}>Last used</SortButton></td>
|
||||
<td><SortButton field="created" active_field={sort_field} asc={asc} sort_func={sort}>Created</SortButton></td>
|
||||
<td></td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each reporters as rep (rep.from_address)}
|
||||
<tr animate:flip={{duration: 500}}>
|
||||
<td>{rep.from_address}</td>
|
||||
<td>{rep.name}</td>
|
||||
<td>{rep.reports_sent}</td>
|
||||
<td>{rep.files_blocked}</td>
|
||||
<td>{formatDate(rep.last_used, true, true, false)}</td>
|
||||
<td>{formatDate(rep.created, false, false, false)}</td>
|
||||
<td>
|
||||
<button on:click|preventDefault={() => toggle_preview(rep)} class="button round">
|
||||
<i class="icon">email</i>
|
||||
</button>
|
||||
<button on:click|preventDefault={() => {dispatch("edit", rep)}} class="button round">
|
||||
<i class="icon">edit</i>
|
||||
</button>
|
||||
{#if rep.status !== "trusted"}
|
||||
<button on:click|preventDefault={() => {dispatch("approve", rep)}} class="button button_highlight round">
|
||||
<i class="icon">check</i>
|
||||
</button>
|
||||
{/if}
|
||||
{#if rep.status !== "rejected"}
|
||||
<button on:click|preventDefault={() => {dispatch("spam", rep)}} class="button button_red round">
|
||||
<i class="icon">block</i>
|
||||
</button>
|
||||
{/if}
|
||||
<button on:click|preventDefault={() => {dispatch("delete", rep)}} class="button button_red round">
|
||||
<i class="icon">delete</i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@@ -209,14 +209,16 @@ onDestroy(() => {
|
||||
<section>
|
||||
<h3>Process stats</h3>
|
||||
<table>
|
||||
<tr>
|
||||
<td>DB Time</td>
|
||||
<td>{formatDate(new Date(status.db_time), true, true, true)}</td>
|
||||
<td>DB Latency</td>
|
||||
<td>{formatNumber(status.db_latency / 1000, 3)} ms</td>
|
||||
<td>PID</td>
|
||||
<td>{status.pid}</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>DB Time</td>
|
||||
<td>{formatDate(new Date(status.db_time), true, true, true)}</td>
|
||||
<td>DB Latency</td>
|
||||
<td>{formatNumber(status.db_latency / 1000, 3)} ms</td>
|
||||
<td>PID</td>
|
||||
<td>{status.pid}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<h3>Pixelstore stats</h3>
|
||||
|
@@ -157,28 +157,32 @@ onMount(get_bans);
|
||||
</div>
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Reason</td>
|
||||
<td>Reporter</td>
|
||||
<td>Ban time</td>
|
||||
<td>Expire time</td>
|
||||
<td>File</td>
|
||||
</tr>
|
||||
{#each row.offences as offence (offence.ban_time)}
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{offence.reason}</td>
|
||||
<td>{offence.reporter}</td>
|
||||
<td>{formatDate(offence.ban_time, true, true, false)}</td>
|
||||
<td>{formatDate(offence.expire_time, true, true, false)}</td>
|
||||
<td>
|
||||
{#if offence.file_link}
|
||||
<a href={offence.file_link} target="_blank" rel="noreferrer">
|
||||
{offence.file_name}
|
||||
</a>
|
||||
{/if}
|
||||
</td>
|
||||
<td>Reason</td>
|
||||
<td>Reporter</td>
|
||||
<td>Ban time</td>
|
||||
<td>Expire time</td>
|
||||
<td>File</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each row.offences as offence (offence.ban_time)}
|
||||
<tr>
|
||||
<td>{offence.reason}</td>
|
||||
<td>{offence.reporter}</td>
|
||||
<td>{formatDate(offence.ban_time, true, true, false)}</td>
|
||||
<td>{formatDate(offence.expire_time, true, true, false)}</td>
|
||||
<td>
|
||||
{#if offence.file_link}
|
||||
<a href={offence.file_link} target="_blank" rel="noreferrer">
|
||||
{offence.file_name}
|
||||
</a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</Expandable>
|
||||
|
@@ -71,30 +71,34 @@ onMount(get_payments);
|
||||
|
||||
{#if per_country.NL}
|
||||
<table>
|
||||
<tr>
|
||||
<td>Bedrag</td>
|
||||
<td>BTW-code</td>
|
||||
<td>BTW</td>
|
||||
<td>Tegenrekening</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={per_country.NL.amount + per_country.NL.vat}/></td>
|
||||
<td>BTW hoog 21%</td>
|
||||
<td><Euro amount={per_country.NL.vat}/></td>
|
||||
<td>8030 - Omzet Mollie inkomsten</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>1651 - BTW OSS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={(settlement.amount.value*1e6)-totals.vat-per_country.NL.amount}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>8030 - Omzet Mollie inkomsten</td>
|
||||
</tr>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Bedrag</td>
|
||||
<td>BTW-code</td>
|
||||
<td>BTW</td>
|
||||
<td>Tegenrekening</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><Euro amount={per_country.NL.amount + per_country.NL.vat}/></td>
|
||||
<td>BTW hoog 21%</td>
|
||||
<td><Euro amount={per_country.NL.vat}/></td>
|
||||
<td>8030 - Omzet Mollie inkomsten</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>1651 - BTW OSS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={(settlement.amount.value*1e6)-totals.vat-per_country.NL.amount}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>8030 - Omzet Mollie inkomsten</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{/if}
|
||||
|
||||
@@ -103,68 +107,76 @@ onMount(get_payments);
|
||||
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Country</td>
|
||||
<td>Payments</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>VAT%</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{#each Object.entries(per_country) as [country, row]}
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{country}</td>
|
||||
<td>{row.count}</td>
|
||||
<td><Euro amount={row.amount}/></td>
|
||||
<td><Euro amount={row.vat}/></td>
|
||||
<td>{row.vat_fraction*100}%</td>
|
||||
<td><Euro amount={row.vat+row.amount}/></td>
|
||||
<td>Country</td>
|
||||
<td>Payments</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>VAT%</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each Object.entries(per_country) as [country, row]}
|
||||
<tr>
|
||||
<td>{country}</td>
|
||||
<td>{row.count}</td>
|
||||
<td><Euro amount={row.amount}/></td>
|
||||
<td><Euro amount={row.vat}/></td>
|
||||
<td>{row.vat_fraction*100}%</td>
|
||||
<td><Euro amount={row.vat+row.amount}/></td>
|
||||
</tr>
|
||||
{/each}
|
||||
|
||||
<tr>
|
||||
<td>Total</td>
|
||||
<td>{totals.count}</td>
|
||||
<td><Euro amount={totals.amount}/></td>
|
||||
<td><Euro amount={totals.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={totals.vat+totals.amount}/></td>
|
||||
</tr>
|
||||
{#if per_country.NL}
|
||||
<tr>
|
||||
<td>Total - NL</td>
|
||||
<td>{totals.count - per_country.NL.count}</td>
|
||||
<td><Euro amount={totals.amount-per_country.NL.amount}/></td>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Total</td>
|
||||
<td>{totals.count}</td>
|
||||
<td><Euro amount={totals.amount}/></td>
|
||||
<td><Euro amount={totals.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)}/></td>
|
||||
<td><Euro amount={totals.vat+totals.amount}/></td>
|
||||
</tr>
|
||||
{/if}
|
||||
{#if per_country.NL}
|
||||
<tr>
|
||||
<td>Total - NL</td>
|
||||
<td>{totals.count - per_country.NL.count}</td>
|
||||
<td><Euro amount={totals.amount-per_country.NL.amount}/></td>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)}/></td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<h3>All payments ({payments.length})</h3>
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>Created</td>
|
||||
<td>Status</td>
|
||||
<td>Country</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{#each payments as row (row.id)}
|
||||
<thead>
|
||||
<tr>
|
||||
<td><a href={row._links.dashboard.href} target="_blank">{row.id}</a></td>
|
||||
<td>{formatDate(row.createdAt, true, true, false)}</td>
|
||||
<td>{row.status}</td>
|
||||
<td>{row.metadata.country}</td>
|
||||
<td><Euro amount={row.metadata.amount}/></td>
|
||||
<td><Euro amount={row.metadata.vat}/></td>
|
||||
<td><Euro amount={row.amount.value*1e6}/></td>
|
||||
<td>ID</td>
|
||||
<td>Created</td>
|
||||
<td>Status</td>
|
||||
<td>Country</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each payments as row (row.id)}
|
||||
<tr>
|
||||
<td><a href={row._links.dashboard.href} target="_blank">{row.id}</a></td>
|
||||
<td>{formatDate(row.createdAt, true, true, false)}</td>
|
||||
<td>{row.status}</td>
|
||||
<td>{row.metadata.country}</td>
|
||||
<td><Euro amount={row.metadata.amount}/></td>
|
||||
<td><Euro amount={row.metadata.vat}/></td>
|
||||
<td><Euro amount={row.amount.value*1e6}/></td>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
@@ -140,30 +140,34 @@ onMount(() => {
|
||||
{#if per_country.NL}
|
||||
<h2>Accounting information</h2>
|
||||
<table>
|
||||
<tr>
|
||||
<td>Bedrag</td>
|
||||
<td>BTW-code</td>
|
||||
<td>BTW</td>
|
||||
<td>Tegenrekening</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={per_country.NL.amount + per_country.NL.vat}/></td>
|
||||
<td>BTW hoog 21%</td>
|
||||
<td><Euro amount={per_country.NL.vat}/></td>
|
||||
<td>8040 - Omzet PayPal inkomsten</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>1651 - BTW OSS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.amount-totals.fee-per_country.NL.amount}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>8040 - Omzet PayPal inkomsten</td>
|
||||
</tr>
|
||||
<thead>
|
||||
<tr>
|
||||
<td>Bedrag</td>
|
||||
<td>BTW-code</td>
|
||||
<td>BTW</td>
|
||||
<td>Tegenrekening</td>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><Euro amount={per_country.NL.amount + per_country.NL.vat}/></td>
|
||||
<td>BTW hoog 21%</td>
|
||||
<td><Euro amount={per_country.NL.vat}/></td>
|
||||
<td>8040 - Omzet PayPal inkomsten</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>1651 - BTW OSS</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><Euro amount={totals.amount-totals.fee-per_country.NL.amount}/></td>
|
||||
<td>Geen BTW</td>
|
||||
<td><Euro amount={0}/></td>
|
||||
<td>8040 - Omzet PayPal inkomsten</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
{/if}
|
||||
|
||||
@@ -171,51 +175,55 @@ onMount(() => {
|
||||
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Country</td>
|
||||
<td>Payments</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>VAT%</td>
|
||||
<td>Total</td>
|
||||
<td>Fee</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{#each Object.entries(per_country) as [country, row]}
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{country}</td>
|
||||
<td>{row.count}</td>
|
||||
<td><Euro amount={row.amount}/></td>
|
||||
<td><Euro amount={row.vat}/></td>
|
||||
<td>{row.vat_fraction*100}%</td>
|
||||
<td><Euro amount={row.vat+row.amount}/></td>
|
||||
<td><Euro amount={-row.fee}/></td>
|
||||
<td><Euro amount={row.vat+row.amount-row.fee}/></td>
|
||||
<td>Country</td>
|
||||
<td>Payments</td>
|
||||
<td>Amount</td>
|
||||
<td>VAT</td>
|
||||
<td>VAT%</td>
|
||||
<td>Total</td>
|
||||
<td>Fee</td>
|
||||
<td>Total</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each Object.entries(per_country) as [country, row]}
|
||||
<tr>
|
||||
<td>{country}</td>
|
||||
<td>{row.count}</td>
|
||||
<td><Euro amount={row.amount}/></td>
|
||||
<td><Euro amount={row.vat}/></td>
|
||||
<td>{row.vat_fraction*100}%</td>
|
||||
<td><Euro amount={row.vat+row.amount}/></td>
|
||||
<td><Euro amount={-row.fee}/></td>
|
||||
<td><Euro amount={row.vat+row.amount-row.fee}/></td>
|
||||
</tr>
|
||||
{/each}
|
||||
|
||||
<tr>
|
||||
<td>Total</td>
|
||||
<td>{totals.count}</td>
|
||||
<td><Euro amount={totals.amount}/></td>
|
||||
<td><Euro amount={totals.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={totals.vat+totals.amount}/></td>
|
||||
<td><Euro amount={-totals.fee}/></td>
|
||||
<td><Euro amount={(totals.vat+totals.amount)-totals.fee}/></td>
|
||||
</tr>
|
||||
{#if per_country.NL}
|
||||
<tr>
|
||||
<td>Total ex NL</td>
|
||||
<td>{totals.count - per_country.NL.count}</td>
|
||||
<td><Euro amount={totals.amount-per_country.NL.amount}/></td>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td>Total</td>
|
||||
<td>{totals.count}</td>
|
||||
<td><Euro amount={totals.amount}/></td>
|
||||
<td><Euro amount={totals.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)}/></td>
|
||||
<td><Euro amount={-(totals.fee-per_country.NL.fee)}/></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)-(totals.fee-per_country.NL.fee)}/></td>
|
||||
<td><Euro amount={totals.vat+totals.amount}/></td>
|
||||
<td><Euro amount={-totals.fee}/></td>
|
||||
<td><Euro amount={(totals.vat+totals.amount)-totals.fee}/></td>
|
||||
</tr>
|
||||
{/if}
|
||||
{#if per_country.NL}
|
||||
<tr>
|
||||
<td>Total ex NL</td>
|
||||
<td>{totals.count - per_country.NL.count}</td>
|
||||
<td><Euro amount={totals.amount-per_country.NL.amount}/></td>
|
||||
<td><Euro amount={totals.vat-per_country.NL.vat}/></td>
|
||||
<td></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)}/></td>
|
||||
<td><Euro amount={-(totals.fee-per_country.NL.fee)}/></td>
|
||||
<td><Euro amount={(totals.vat-per_country.NL.vat)+(totals.amount-per_country.NL.amount)-(totals.fee-per_country.NL.fee)}/></td>
|
||||
</tr>
|
||||
{/if}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
|
@@ -6,59 +6,65 @@ export let row = {}
|
||||
</script>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td>{row.user.username}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>{row.user_id}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Email</td>
|
||||
<td>{row.user.email}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Subscription</td>
|
||||
<td>{row.user.subscription.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Credit balance</td>
|
||||
<td><Euro amount={row.user.balance_micro_eur}/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Storage used</td>
|
||||
<td>{formatDataVolume(row.user.storage_space_used, 3)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FS Storage used</td>
|
||||
<td>{formatDataVolume(row.user.filesystem_storage_used, 3)}</td>
|
||||
</tr>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td>{row.user.username}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>ID</td>
|
||||
<td>{row.user_id}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Email</td>
|
||||
<td>{row.user.email}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Subscription</td>
|
||||
<td>{row.user.subscription.name}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Credit balance</td>
|
||||
<td><Euro amount={row.user.balance_micro_eur}/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Storage used</td>
|
||||
<td>{formatDataVolume(row.user.storage_space_used, 3)}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>FS Storage used</td>
|
||||
<td>{formatDataVolume(row.user.filesystem_storage_used, 3)}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<br/>
|
||||
<div class="table_scroll">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Reason</td>
|
||||
<td>Reporter</td>
|
||||
<td>Ban time</td>
|
||||
<td>Expire time</td>
|
||||
<td>File</td>
|
||||
</tr>
|
||||
{#each row.offences as offence (offence.ban_time)}
|
||||
<thead>
|
||||
<tr>
|
||||
<td>{offence.reason}</td>
|
||||
<td>{offence.reporter}</td>
|
||||
<td>{formatDate(offence.ban_time, true, true, false)}</td>
|
||||
<td>{formatDate(offence.expire_time, true, true, false)}</td>
|
||||
<td>
|
||||
{#if offence.file_link}
|
||||
<a href={offence.file_link} target="_blank" rel="noreferrer">
|
||||
{offence.file_name}
|
||||
</a>
|
||||
{/if}
|
||||
</td>
|
||||
<td>Reason</td>
|
||||
<td>Reporter</td>
|
||||
<td>Ban time</td>
|
||||
<td>Expire time</td>
|
||||
<td>File</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</thead>
|
||||
<tbody>
|
||||
{#each row.offences as offence (offence.ban_time)}
|
||||
<tr>
|
||||
<td>{offence.reason}</td>
|
||||
<td>{offence.reporter}</td>
|
||||
<td>{formatDate(offence.ban_time, true, true, false)}</td>
|
||||
<td>{formatDate(offence.expire_time, true, true, false)}</td>
|
||||
<td>
|
||||
{#if offence.file_link}
|
||||
<a href={offence.file_link} target="_blank" rel="noreferrer">
|
||||
{offence.file_name}
|
||||
</a>
|
||||
{/if}
|
||||
</td>
|
||||
</tr>
|
||||
{/each}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user