Makes tables scrollable
This commit is contained in:
@@ -331,8 +331,18 @@ table:not(.form) {
|
|||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
.table_scroll {
|
||||||
|
width: 100%;
|
||||||
|
overflow-x: auto;
|
||||||
|
overflow-y: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
.table_scroll > table {
|
||||||
|
min-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
tr:not(.form) {border-bottom: 1px var(--layer_2_color_border) solid;}
|
tr:not(.form) {border-bottom: 1px var(--layer_2_color_border) solid;}
|
||||||
tr > td, tr > th {padding: 0.4em;}
|
tr > td, tr > th {padding: 0.3em 0.6em;}
|
||||||
@media(max-width: 30em) {
|
@media(max-width: 30em) {
|
||||||
/* Forms will be stacked on small screens */
|
/* Forms will be stacked on small screens */
|
||||||
tr.form > td {
|
tr.form > td {
|
||||||
|
@@ -133,32 +133,34 @@ onMount(get_reporters);
|
|||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<table style="text-align: left;">
|
<div class="table_scroll">
|
||||||
<tr>
|
<table style="text-align: left;">
|
||||||
<td>E-mail</td>
|
|
||||||
<td>Name</td>
|
|
||||||
<td>Blocked</td>
|
|
||||||
<td>Type</td>
|
|
||||||
<td>Last used</td>
|
|
||||||
<td>Created</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
{#each reporters as reporter}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{reporter.email}</td>
|
<td>E-mail</td>
|
||||||
<td>{reporter.name}</td>
|
<td>Name</td>
|
||||||
<td>{reporter.files_blocked}</td>
|
<td>Blocked</td>
|
||||||
<td>{reporter.type}</td>
|
<td>Type</td>
|
||||||
<td>{formatDate(reporter.last_used, true, true, false)}</td>
|
<td>Last used</td>
|
||||||
<td>{formatDate(reporter.created, false, false, false)}</td>
|
<td>Created</td>
|
||||||
<td>
|
<td></td>
|
||||||
<button on:click|preventDefault={() => {delete_reporter(reporter.email)}} class="button button_red">
|
|
||||||
<i class="icon">delete</i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{#each reporters as reporter}
|
||||||
</table>
|
<tr>
|
||||||
|
<td>{reporter.email}</td>
|
||||||
|
<td>{reporter.name}</td>
|
||||||
|
<td>{reporter.files_blocked}</td>
|
||||||
|
<td>{reporter.type}</td>
|
||||||
|
<td>{formatDate(reporter.last_used, true, true, false)}</td>
|
||||||
|
<td>{formatDate(reporter.created, false, false, false)}</td>
|
||||||
|
<td>
|
||||||
|
<button on:click|preventDefault={() => {delete_reporter(reporter.email)}} class="button button_red">
|
||||||
|
<i class="icon">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/each}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@@ -139,30 +139,32 @@ onMount(get_bans);
|
|||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
<table style="text-align: left;">
|
<div class="table_scroll">
|
||||||
<tr>
|
<table style="text-align: left;">
|
||||||
<td>Address</td>
|
|
||||||
<td>Reason</td>
|
|
||||||
<td>Ban time</td>
|
|
||||||
<td>Expire time</td>
|
|
||||||
<td>Offences</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
{#each rows as row}
|
|
||||||
<tr>
|
<tr>
|
||||||
<td>{row.address}</td>
|
<td>Address</td>
|
||||||
<td>{row.reason}</td>
|
<td>Reason</td>
|
||||||
<td>{formatDate(row.ban_time, true, true, false)}</td>
|
<td>Ban time</td>
|
||||||
<td>{formatDate(row.expire_time, true, true, false)}</td>
|
<td>Expire time</td>
|
||||||
<td>{row.offences}</td>
|
<td>Offences</td>
|
||||||
<td>
|
<td></td>
|
||||||
<button on:click|preventDefault={() => {delete_ban(row.address)}} class="button button_red">
|
|
||||||
<i class="icon">delete</i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{#each rows as row}
|
||||||
</table>
|
<tr>
|
||||||
|
<td>{row.address}</td>
|
||||||
|
<td>{row.reason}</td>
|
||||||
|
<td>{formatDate(row.ban_time, true, true, false)}</td>
|
||||||
|
<td>{formatDate(row.expire_time, true, true, false)}</td>
|
||||||
|
<td>{row.offences}</td>
|
||||||
|
<td>
|
||||||
|
<button on:click|preventDefault={() => {delete_ban(row.address)}} class="button button_red round">
|
||||||
|
<i class="icon">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{/each}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@@ -112,31 +112,33 @@ const logout = async (key) => {
|
|||||||
your keys.
|
your keys.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<table style="text-align: left;">
|
<div class="table_scroll">
|
||||||
<tr>
|
<table style="text-align: left;">
|
||||||
<td>Key</td>
|
|
||||||
<td>Created</td>
|
|
||||||
<td>Last used ▼</td>
|
|
||||||
<td>IP address</td>
|
|
||||||
<td></td>
|
|
||||||
</tr>
|
|
||||||
{#each rows as row}
|
|
||||||
<tr style="border-bottom: none;">
|
|
||||||
<td>{row.auth_key}</td>
|
|
||||||
<td>{formatDate(row.creation_time, true, true, false)}</td>
|
|
||||||
<td>{formatDate(row.last_used_time, true, true, false)}</td>
|
|
||||||
<td>{row.creation_ip_address}</td>
|
|
||||||
<td>
|
|
||||||
<button on:click|preventDefault={() => {logout(row.auth_key)}} class="button button_red">
|
|
||||||
<i class="icon">delete</i>
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="5">User-Agent: {row.user_agent}</td>
|
<td>Key</td>
|
||||||
|
<td>Created</td>
|
||||||
|
<td>Last used ▼</td>
|
||||||
|
<td>IP address</td>
|
||||||
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
{/each}
|
{#each rows as row}
|
||||||
</table>
|
<tr style="border-bottom: none;">
|
||||||
|
<td>{row.auth_key}</td>
|
||||||
|
<td>{formatDate(row.creation_time, true, true, false)}</td>
|
||||||
|
<td>{formatDate(row.last_used_time, true, true, false)}</td>
|
||||||
|
<td>{row.creation_ip_address}</td>
|
||||||
|
<td>
|
||||||
|
<button on:click|preventDefault={() => {logout(row.auth_key)}} class="button button_red round">
|
||||||
|
<i class="icon">delete</i>
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="5">User-Agent: {row.user_agent}</td>
|
||||||
|
</tr>
|
||||||
|
{/each}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@@ -24,27 +24,29 @@ onMount(() => {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<a class="button tab"
|
<div class="tab_bar">
|
||||||
href="/user"
|
<a class="button tab"
|
||||||
class:button_highlight={page === ""}
|
href="/user"
|
||||||
on:click|preventDefault={() => {navigate("", "My home")}}>
|
class:button_highlight={page === ""}
|
||||||
<i class="icon">home</i>
|
on:click|preventDefault={() => {navigate("", "My home")}}>
|
||||||
My home
|
<i class="icon">home</i>
|
||||||
</a>
|
My home
|
||||||
<a class="button tab"
|
</a>
|
||||||
href="/user/settings"
|
<a class="button tab"
|
||||||
class:button_highlight={page === "settings"}
|
href="/user/settings"
|
||||||
on:click|preventDefault={() => {navigate("settings", "Account settings")}}>
|
class:button_highlight={page === "settings"}
|
||||||
<i class="icon">settings</i>
|
on:click|preventDefault={() => {navigate("settings", "Account settings")}}>
|
||||||
Account settings
|
<i class="icon">settings</i>
|
||||||
</a>
|
Account settings
|
||||||
<a class="button tab"
|
</a>
|
||||||
href="/user/api_keys"
|
<a class="button tab"
|
||||||
class:button_highlight={page === "api_keys"}
|
href="/user/api_keys"
|
||||||
on:click|preventDefault={() => {navigate("api_keys", "API keys")}}>
|
class:button_highlight={page === "api_keys"}
|
||||||
<i class="icon">vpn_key</i>
|
on:click|preventDefault={() => {navigate("api_keys", "API keys")}}>
|
||||||
API keys
|
<i class="icon">vpn_key</i>
|
||||||
</a>
|
API keys
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
<hr/>
|
<hr/>
|
||||||
|
|
||||||
{#if page === ""}
|
{#if page === ""}
|
||||||
|
Reference in New Issue
Block a user