added simple loose wildcard search term support in the Admin UI
This commit is contained in:
@@ -37,10 +37,17 @@
|
||||
|
||||
admins = []; // reset
|
||||
|
||||
const normalizedFilter = CommonHelper.normalizeSearchFilter(filter, [
|
||||
"id",
|
||||
"email",
|
||||
"created",
|
||||
"updated",
|
||||
]);
|
||||
|
||||
return ApiClient.admins
|
||||
.getFullList(100, {
|
||||
sort: sort || "-created",
|
||||
filter: filter,
|
||||
filter: normalizedFilter,
|
||||
})
|
||||
.then((result) => {
|
||||
admins = result;
|
||||
@@ -82,7 +89,7 @@
|
||||
|
||||
<Searchbar
|
||||
value={filter}
|
||||
placeholder={"Search filter, eg. email='test@example.com'"}
|
||||
placeholder={"Search term or filter like email='test@example.com'"}
|
||||
extraAutocompleteKeys={["email"]}
|
||||
on:submit={(e) => (filter = e.detail)}
|
||||
/>
|
||||
|
||||
@@ -8,11 +8,12 @@
|
||||
const uniqueId = "search_" + CommonHelper.randomString(7);
|
||||
|
||||
export let value = "";
|
||||
export let placeholder = 'Search filter, ex. created > "2022-01-01"...';
|
||||
export let placeholder = 'Search term or filter like created > "2022-01-01"...';
|
||||
|
||||
// autocomplete filter component fields
|
||||
export let autocompleteCollection = new Collection();
|
||||
export let extraAutocompleteKeys = [];
|
||||
|
||||
let filterComponent;
|
||||
let isFilterComponentLoading = false;
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script>
|
||||
import { pageTitle } from "@/stores/app";
|
||||
import CommonHelper from "@/utils/CommonHelper";
|
||||
import Field from "@/components/base/Field.svelte";
|
||||
import PageWrapper from "@/components/base/PageWrapper.svelte";
|
||||
import Searchbar from "@/components/base/Searchbar.svelte";
|
||||
@@ -10,12 +11,24 @@
|
||||
|
||||
const ADMIN_LOGS_LOCAL_STORAGE_KEY = "includeAdminLogs";
|
||||
|
||||
const autoCompleteKeys = [
|
||||
"method",
|
||||
"url",
|
||||
"remoteIp",
|
||||
"userIp",
|
||||
"referer",
|
||||
"status",
|
||||
"auth",
|
||||
"userAgent",
|
||||
"created",
|
||||
];
|
||||
|
||||
$pageTitle = "Request logs";
|
||||
|
||||
let logPanel;
|
||||
let filter = "";
|
||||
let includeAdminLogs = window.localStorage?.getItem(ADMIN_LOGS_LOCAL_STORAGE_KEY) << 0;
|
||||
let refreshToken = 1;
|
||||
let refreshKey = 1;
|
||||
|
||||
$: presets = !includeAdminLogs ? 'auth!="admin"' : "";
|
||||
|
||||
@@ -23,8 +36,10 @@
|
||||
window.localStorage.setItem(ADMIN_LOGS_LOCAL_STORAGE_KEY, includeAdminLogs << 0);
|
||||
}
|
||||
|
||||
$: normalizedFilter = CommonHelper.normalizeSearchFilter(filter, autoCompleteKeys);
|
||||
|
||||
function refresh() {
|
||||
refreshToken++;
|
||||
refreshKey++;
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -49,29 +64,20 @@
|
||||
|
||||
<Searchbar
|
||||
value={filter}
|
||||
placeholder="Search logs, ex. status > 200"
|
||||
extraAutocompleteKeys={[
|
||||
"method",
|
||||
"url",
|
||||
"remoteIp",
|
||||
"userIp",
|
||||
"referer",
|
||||
"status",
|
||||
"auth",
|
||||
"userAgent",
|
||||
]}
|
||||
placeholder="Search term or filter like status >= 400"
|
||||
extraAutocompleteKeys={autoCompleteKeys}
|
||||
on:submit={(e) => (filter = e.detail)}
|
||||
/>
|
||||
|
||||
<div class="clearfix m-b-base" />
|
||||
|
||||
{#key refreshToken}
|
||||
<LogsChart bind:filter {presets} />
|
||||
{#key refreshKey}
|
||||
<LogsChart filter={normalizedFilter} {presets} />
|
||||
{/key}
|
||||
</div>
|
||||
|
||||
{#key refreshToken}
|
||||
<LogsList bind:filter {presets} on:select={(e) => logPanel?.show(e?.detail)} />
|
||||
{#key refreshKey}
|
||||
<LogsList filter={normalizedFilter} {presets} on:select={(e) => logPanel?.show(e?.detail)} />
|
||||
{/key}
|
||||
</PageWrapper>
|
||||
|
||||
|
||||
@@ -125,10 +125,12 @@
|
||||
listSort = parts.join(",");
|
||||
}
|
||||
|
||||
const fallbackSearchFields = CommonHelper.getAllCollectionIdentifiers(collection);
|
||||
|
||||
return ApiClient.collection(collection.id)
|
||||
.getList(page, 30, {
|
||||
sort: listSort,
|
||||
filter: filter,
|
||||
filter: CommonHelper.normalizeSearchFilter(filter, fallbackSearchFields),
|
||||
expand: relFields.map((field) => field.name).join(","),
|
||||
$cancelKey: "records_list",
|
||||
})
|
||||
|
||||
@@ -132,8 +132,10 @@
|
||||
try {
|
||||
const page = reset ? 1 : currentPage + 1;
|
||||
|
||||
const fallbackSearchFields = CommonHelper.getAllCollectionIdentifiers(collection);
|
||||
|
||||
const result = await ApiClient.collection(collectionId).getList(page, batchSize, {
|
||||
filter: filter,
|
||||
filter: CommonHelper.normalizeSearchFilter(filter, fallbackSearchFields),
|
||||
sort: !collection?.$isView ? "-created" : "",
|
||||
$cancelKey: uniqueId + "loadList",
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user