From 5be98caadc389ef8d6c2bfd1e0ce99bde85bd926 Mon Sep 17 00:00:00 2001 From: Wim Brand Date: Tue, 11 May 2021 20:29:56 +0200 Subject: [PATCH] Add date picker and different report types --- res/include/style/layout.css | 7 ++- res/template/admin.html | 2 +- .../admin_abuse_reports/AbuseReport.svelte | 44 ++++++++++++------- .../admin_abuse_reports/AbuseReports.svelte | 34 +++++++++----- 4 files changed, 58 insertions(+), 29 deletions(-) diff --git a/res/include/style/layout.css b/res/include/style/layout.css index f5ea6f1..13e17cb 100644 --- a/res/include/style/layout.css +++ b/res/include/style/layout.css @@ -502,7 +502,8 @@ textarea, input[type="text"], input[type="password"], input[type="email"], -input[type="number"]{ +input[type="number"], +input[type="date"]{ display: inline-block; margin: 3px; /* Same as button, to make them align nicely */ border: none; @@ -521,11 +522,13 @@ input[type="text"]:active, input[type="password"]:active, input[type="email"]:active, input[type="number"]:active, +input[type="date"]:active, textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus, -input[type="number"]:focus{ +input[type="number"]:focus, +input[type="date"]:focus{ box-shadow: var(--highlight_border), inset 3px 3px 6px -3px var(--shadow_color); } diff --git a/res/template/admin.html b/res/template/admin.html index df426b8..13c78fe 100644 --- a/res/template/admin.html +++ b/res/template/admin.html @@ -18,7 +18,7 @@ Block files - report + flag User abuse reports diff --git a/svelte/src/admin_abuse_reports/AbuseReport.svelte b/svelte/src/admin_abuse_reports/AbuseReport.svelte index d5e7743..00b97bb 100644 --- a/svelte/src/admin_abuse_reports/AbuseReport.svelte +++ b/svelte/src/admin_abuse_reports/AbuseReport.svelte @@ -7,17 +7,11 @@ let dispatch = createEventDispatcher() export let report let expandable -let grant = () => { - set_status("grant") -} -let reject = () => { - set_status("reject") -} -let set_status = async (action) => { +let set_status = async (action, report_type) => { const form = new FormData() form.append("action", action) if (action === "grant") { - form.append("type", report.type) + form.append("type", report_type) } try { @@ -44,7 +38,9 @@ let set_status = async (action) => {
{report.file.name}
-
Type
{report.type}
+
Type
+ {report.file.abuse_type === "" ? report.type : report.file.abuse_type} +
{#if report.status !== "pending"}
Status
{report.status}
{/if} @@ -53,12 +49,24 @@ let set_status = async (action) => {
DL
{Math.round(report.file.bandwidth_used / report.file.size)}
-
- - open_in_new Open file - - - +
+
+ + open_in_new Open file + + + +
+
+ + + + +
@@ -83,6 +91,7 @@ let set_status = async (action) => { .header { display: flex; flex-direction: row; + line-height: 1.2em; } .icon_cell { flex: 0 0 auto; @@ -96,13 +105,16 @@ let set_status = async (action) => { .stats { flex: 0 0 auto; padding: 3px 4px; - line-height: 1.2em; border-left: 1px solid var(--layer_3_color_border); text-align: center; } .details { flex: 1 1 auto; } +.toolbar { + display: flex; + flex-direction: row; +} .file_icon { width:48px; height:48px; diff --git a/svelte/src/admin_abuse_reports/AbuseReports.svelte b/svelte/src/admin_abuse_reports/AbuseReports.svelte index d5d5c3d..8cb09a1 100644 --- a/svelte/src/admin_abuse_reports/AbuseReports.svelte +++ b/svelte/src/admin_abuse_reports/AbuseReports.svelte @@ -6,25 +6,26 @@ import AbuseReport from "./AbuseReport.svelte"; let loading = true let reports = [] +let startPicker +let endPicker + + const get_reports = async () => { loading = true; - let today = new Date() - let start = new Date() - start.setMonth(start.getMonth() - 1) - try { const resp = await fetch( window.api_endpoint+ - "/admin/abuse_report?start="+ - start.toISOString()+ - "&end="+today.toISOString() + "/admin/abuse_report"+ + "?start="+(new Date(startPicker.value)).toISOString()+ + "&end="+(new Date(endPicker.value)).toISOString() ); if(resp.status >= 400) { throw new Error(resp.text()); } reports = await resp.json(); + // Sort files from new to old reports.sort((a, b) => { if (a.first_report_time > b.first_report_time) { return -1 @@ -34,6 +35,8 @@ const get_reports = async () => { return 0 } }) + + // Sort individual reports from old to new reports.forEach(v => { v.reports.sort((a, b) => { if (a.time > b.time) { @@ -52,7 +55,16 @@ const get_reports = async () => { } }; -onMount(get_reports); +onMount(() => { + let start = new Date() + start.setMonth(start.getMonth() - 1) + let end = new Date() + + startPicker.valueAsNumber = start.getTime() + endPicker.valueAsNumber = end.getTime() + + get_reports() +});
@@ -68,11 +80,13 @@ onMount(get_reports); arrow_back Return to admin panel
+
+ Start: + End: +
-
-

Pending

{#each reports as report} {#if report.status === "pending"}