1.0.0.8 logging updates
This commit is contained in:
@@ -154,7 +154,7 @@
|
||||
>
|
||||
{#if !collapsed}
|
||||
<Badge className="bg-white/10 text-text-secondary"
|
||||
>v1.0.7 Release Candiate</Badge
|
||||
>v1.0.8 Release Candiate</Badge
|
||||
>
|
||||
{:else}
|
||||
<Badge className="bg-white/10 text-text-secondary">v</Badge>
|
||||
|
||||
@@ -8,13 +8,23 @@
|
||||
let loading = false;
|
||||
let error = null;
|
||||
let expanded = {};
|
||||
let page = 0;
|
||||
const pageSize = 200;
|
||||
|
||||
async function loadLibrary() {
|
||||
async function loadLibrary(reset = true) {
|
||||
loading = true;
|
||||
error = null;
|
||||
try {
|
||||
const response = await getLibraryReport();
|
||||
items = response.items || [];
|
||||
if (reset) {
|
||||
page = 0;
|
||||
items = [];
|
||||
}
|
||||
const response = await getLibraryReport(pageSize, page * pageSize);
|
||||
const nextItems = response.items || [];
|
||||
items = reset ? nextItems : [...items, ...nextItems];
|
||||
if (nextItems.length > 0) {
|
||||
page += 1;
|
||||
}
|
||||
} catch (err) {
|
||||
error = `Failed to load library report: ${err.message}`;
|
||||
} finally {
|
||||
@@ -26,7 +36,7 @@
|
||||
expanded = { ...expanded, [key]: !expanded[key] };
|
||||
}
|
||||
|
||||
onMount(loadLibrary);
|
||||
onMount(() => loadLibrary(true));
|
||||
</script>
|
||||
|
||||
<div class="space-y-6">
|
||||
@@ -41,7 +51,7 @@
|
||||
variant="outline"
|
||||
size="sm"
|
||||
className="border-white/15 text-text-secondary hover:bg-white/10"
|
||||
on:click={loadLibrary}
|
||||
on:click={() => loadLibrary(true)}
|
||||
disabled={loading}
|
||||
>
|
||||
<RefreshCcw class="h-4 w-4" />
|
||||
@@ -148,6 +158,17 @@
|
||||
{/if}
|
||||
</div>
|
||||
{/each}
|
||||
<div class="flex justify-center">
|
||||
<Button
|
||||
variant="outline"
|
||||
size="sm"
|
||||
className="border-white/15 text-text-secondary hover:bg-white/10"
|
||||
on:click={() => loadLibrary(false)}
|
||||
disabled={loading}
|
||||
>
|
||||
Load more
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
processFiles,
|
||||
clearAllSuggestedMatches,
|
||||
getFolderRules,
|
||||
getScanHistory,
|
||||
} from "../lib/api.js";
|
||||
import ResultsList from "./ResultsList.svelte";
|
||||
import TypewriterQuote from "./TypewriterQuote.svelte";
|
||||
@@ -118,7 +119,11 @@
|
||||
filesFound: 0,
|
||||
message: "",
|
||||
scanning: false,
|
||||
startedAt: null,
|
||||
estimatedFinishAt: null,
|
||||
};
|
||||
let scanHistory = [];
|
||||
let expectedTotalFiles = null;
|
||||
|
||||
// Scan cancellation
|
||||
let scanAbortController = null;
|
||||
@@ -166,6 +171,12 @@
|
||||
} catch (err) {
|
||||
console.error("Failed to load folder rules:", err);
|
||||
}
|
||||
try {
|
||||
const historyResponse = await getScanHistory(10);
|
||||
scanHistory = historyResponse.scans || [];
|
||||
} catch (err) {
|
||||
console.error("Failed to load scan history:", err);
|
||||
}
|
||||
} catch (err) {
|
||||
console.error("Failed to load initial data:", err);
|
||||
}
|
||||
@@ -190,7 +201,19 @@
|
||||
filesFound: 0,
|
||||
message: "Starting scan...",
|
||||
scanning: true,
|
||||
startedAt: new Date(),
|
||||
estimatedFinishAt: null,
|
||||
};
|
||||
expectedTotalFiles = null;
|
||||
if (scanHistory.length > 0 && directory) {
|
||||
const normalizedDir = directory.toLowerCase();
|
||||
const lastMatch = scanHistory.find(
|
||||
(scan) => (scan.directory || "").toLowerCase() === normalizedDir,
|
||||
);
|
||||
if (lastMatch && lastMatch.files_found) {
|
||||
expectedTotalFiles = lastMatch.files_found;
|
||||
}
|
||||
}
|
||||
addToast({ message: "Scan started.", tone: "info" });
|
||||
|
||||
// Reset files array before starting new scan
|
||||
@@ -219,6 +242,23 @@
|
||||
message: data.message,
|
||||
filesFound: data.filesFound,
|
||||
};
|
||||
if (
|
||||
scanProgress.startedAt &&
|
||||
expectedTotalFiles &&
|
||||
data.filesFound > 0
|
||||
) {
|
||||
const elapsedMs =
|
||||
new Date().getTime() - scanProgress.startedAt.getTime();
|
||||
const estimatedTotalMs =
|
||||
(elapsedMs * expectedTotalFiles) / data.filesFound;
|
||||
const estimatedFinish = new Date(
|
||||
scanProgress.startedAt.getTime() + estimatedTotalMs,
|
||||
);
|
||||
scanProgress = {
|
||||
...scanProgress,
|
||||
estimatedFinishAt: estimatedFinish,
|
||||
};
|
||||
}
|
||||
|
||||
// Incrementally add files as they're found
|
||||
const previousLength = files.length;
|
||||
@@ -244,6 +284,9 @@
|
||||
}
|
||||
|
||||
lastScan = new Date().toISOString();
|
||||
if (data.count != null) {
|
||||
expectedTotalFiles = data.count;
|
||||
}
|
||||
|
||||
// Save to store
|
||||
scanResults.setScanResults(files, directory);
|
||||
@@ -343,6 +386,7 @@
|
||||
} finally {
|
||||
scanning = false;
|
||||
scanProgress.scanning = false;
|
||||
scanProgress.estimatedFinishAt = null;
|
||||
scanAbortController = null;
|
||||
}
|
||||
}
|
||||
@@ -715,6 +759,14 @@
|
||||
>
|
||||
<span class="text-text-tertiary">Scanning in progress...</span>
|
||||
</div>
|
||||
{#if scanProgress.startedAt}
|
||||
<div class="mt-2 text-[11px] text-text-tertiary">
|
||||
Started at {scanProgress.startedAt.toLocaleTimeString()}
|
||||
{#if scanProgress.estimatedFinishAt}
|
||||
· Estimated finish {scanProgress.estimatedFinishAt.toLocaleTimeString()}
|
||||
{/if}
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Progress bar -->
|
||||
<div
|
||||
|
||||
Reference in New Issue
Block a user