feat(elasticsearch): add mapping, settings, stats and clear actions
This commit is contained in:
1 parent
a84cb637ba
commit
8f3134dce8
32 files changed
+1262
-3
No files matched your search
@@ -88,6 +88,7 @@ import type { GridNewRowMeta } from "@/lib/dataGrid/gridNewRowPlacement";
|
||||
import { normalizeResultPageSize } from "@/lib/dataGrid/paginationPageSize";
|
||||
import { documentDataGridColumnLayoutScopeKey } from "@/lib/dataGrid/dataGridColumnLayoutStorage";
|
||||
import { documentGridColumnVisibilityScopeKey, migrateDocumentGridColumnVisibilityToLayout } from "@/lib/document/documentGridColumnVisibilityStorage";
|
||||
import { matchesElasticsearchIndexPattern, subscribeElasticsearchIndexCleared, type ElasticsearchIndexClearedDetail } from "@/lib/sidebar/elasticsearchIndexActions";
|
||||
import { TABLE_FONT_SIZE_MAX, TABLE_FONT_SIZE_MIN, useSettingsStore } from "@/stores/settingsStore";
|
||||
import { useToast } from "@/composables/useToast";
|
||||
import JsonEditNode from "./JsonEditNode.vue";
|
||||
@@ -2062,8 +2063,24 @@ async function loadDynamoDbTableDescription() {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The sidebar's "clear index data" action deletes documents behind this tab's
|
||||
* back, so an open browser would keep listing rows that no longer exist.
|
||||
* Reload when the cleared index is the one on screen.
|
||||
*/
|
||||
function handleElasticsearchIndexCleared(detail: ElasticsearchIndexClearedDetail) {
|
||||
if (detail.connectionId !== props.connectionId) return;
|
||||
// Clearing a grouped node deletes from every index its pattern matches, so a
|
||||
// tab open on any concrete index under the pattern must refresh as well.
|
||||
if (detail.index !== props.collection && !matchesElasticsearchIndexPattern(detail.index, props.collection)) return;
|
||||
void refreshDocuments();
|
||||
}
|
||||
|
||||
let unsubscribeElasticsearchIndexCleared: (() => void) | undefined;
|
||||
|
||||
onMounted(async () => {
|
||||
window.addEventListener("pointerdown", handleDocumentBrowserPointerDown, true);
|
||||
unsubscribeElasticsearchIndexCleared = subscribeElasticsearchIndexCleared(handleElasticsearchIndexCleared);
|
||||
try {
|
||||
await connectionStore.ensureConnected(props.connectionId);
|
||||
} catch (e) {
|
||||
@@ -2078,6 +2095,8 @@ onMounted(async () => {
|
||||
});
|
||||
onBeforeUnmount(() => {
|
||||
window.removeEventListener("pointerdown", handleDocumentBrowserPointerDown, true);
|
||||
unsubscribeElasticsearchIndexCleared?.();
|
||||
unsubscribeElasticsearchIndexCleared = undefined;
|
||||
if (documentLoadExecutionId.value) void api.cancelQuery(documentLoadExecutionId.value);
|
||||
documentRequestGeneration++;
|
||||
loadedDocumentQueryTotalCountRequest = undefined;
|
||||
|
||||
Reference in new issue
Block a user