atproto explorer pdsls.dev
atproto tool

show filtered record count

juli.ee fb1989cc 60df3673

verified
Changed files
+17 -7
src
+17 -7
src/views/collection.tsx
···
import { $type, ActorIdentifier, InferXRPCBodyOutput } from "@atcute/lexicons";
import * as TID from "@atcute/tid";
import { A, useParams } from "@solidjs/router";
-
import { createEffect, createResource, createSignal, For, Show, untrack } from "solid-js";
import { createStore } from "solid-js/store";
import { Button } from "../components/button.jsx";
import { JSONType, JSONValue } from "../components/json.jsx";
···
};
const [response, { refetch }] = createResource(fetchRecords);
const deleteRecords = async () => {
const recsToDel = records.filter((record) => record.toDelete);
···
<span>{records.filter((rec) => rec.toDelete).length}</span>
<span>/</span>
</Show>
-
<span>{records.length} records</span>
</div>
<div class="flex w-20 items-center justify-end">
<Show when={cursor()}>
···
</div>
</StickyOverlay>
<div class="flex max-w-full flex-col px-2 font-mono">
-
<For
-
each={records.filter((rec) =>
-
filter() ? JSON.stringify(rec.record.value).includes(filter()!) : true,
-
)}
-
>
{(record, index) => (
<>
<Show when={batchDelete()}>
···
import { $type, ActorIdentifier, InferXRPCBodyOutput } from "@atcute/lexicons";
import * as TID from "@atcute/tid";
import { A, useParams } from "@solidjs/router";
+
import {
+
createEffect,
+
createMemo,
+
createResource,
+
createSignal,
+
For,
+
Show,
+
untrack,
+
} from "solid-js";
import { createStore } from "solid-js/store";
import { Button } from "../components/button.jsx";
import { JSONType, JSONValue } from "../components/json.jsx";
···
};
const [response, { refetch }] = createResource(fetchRecords);
+
+
const filteredRecords = createMemo(() =>
+
records.filter((rec) =>
+
filter() ? JSON.stringify(rec.record.value).includes(filter()!) : true,
+
),
+
);
const deleteRecords = async () => {
const recsToDel = records.filter((record) => record.toDelete);
···
<span>{records.filter((rec) => rec.toDelete).length}</span>
<span>/</span>
</Show>
+
<span>{filter() ? filteredRecords().length : records.length} records</span>
</div>
<div class="flex w-20 items-center justify-end">
<Show when={cursor()}>
···
</div>
</StickyOverlay>
<div class="flex max-w-full flex-col px-2 font-mono">
+
<For each={filteredRecords()}>
{(record, index) => (
<>
<Show when={batchDelete()}>