feat(structure): show comments and defaults in copy-fields dialog
This commit is contained in:
6 files changed
+99
-8
No files matched your search
@@ -109,6 +109,8 @@ import {
|
||||
structureColumnNamesForCopy,
|
||||
tableStructureIdentifierComparisonKey,
|
||||
toColumnNames,
|
||||
copySourceColumnDetails,
|
||||
matchesCopySourceColumnSearch,
|
||||
} from "@/lib/table/tableStructureEditorState";
|
||||
import { CREATE_DATABASE_CHARSET_OPTIONS, createDatabaseCollationOptionsForCharset, fallbackCreateDatabaseCharsetMetadata, normalizeCreateDatabaseCharsetKey, parseCreateDatabaseCharsetMetadata } from "@/lib/database/createDatabaseCharsetOptions";
|
||||
import type { CreateDatabaseCharsetMetadata } from "@/lib/database/createDatabaseCharsetOptions";
|
||||
@@ -2501,14 +2503,14 @@ const copyableSourceColumns = computed(() => {
|
||||
const existingNames = new Set(columns.value.filter((column) => !column.markedForDrop).map((column) => tableStructureIdentifierComparisonKey(column.name, databaseType.value, databaseInfo)));
|
||||
return copySourceColumns.value.map((column) => ({
|
||||
column,
|
||||
details: copySourceColumnDetails(column, databaseType.value),
|
||||
alreadyExists: existingNames.has(tableStructureIdentifierComparisonKey(column.name, databaseType.value, databaseInfo)),
|
||||
}));
|
||||
});
|
||||
|
||||
const filteredCopyableSourceColumns = computed(() => {
|
||||
const search = normalizedColumnSearch(copySourceColumnSearch.value);
|
||||
if (!search) return copyableSourceColumns.value;
|
||||
return copyableSourceColumns.value.filter(({ column }) => [column.name, column.data_type, column.comment ?? ""].some((value) => normalizedColumnSearch(value).includes(search)));
|
||||
if (!normalizedColumnSearch(copySourceColumnSearch.value)) return copyableSourceColumns.value;
|
||||
return copyableSourceColumns.value.filter(({ column }) => matchesCopySourceColumnSearch(column, copySourceColumnSearch.value, databaseType.value));
|
||||
});
|
||||
|
||||
const copyableSourceColumnNames = computed(() => copyableSourceColumns.value.filter(({ alreadyExists }) => !alreadyExists).map(({ column }) => column.name));
|
||||
@@ -5441,10 +5443,18 @@ watch(
|
||||
{{ t("structureEditor.copyColumnsNoMatchingFields") }}
|
||||
</div>
|
||||
<div v-else class="max-h-72 overflow-y-auto rounded-md border">
|
||||
<label v-for="{ column, alreadyExists } in filteredCopyableSourceColumns" :key="column.name" class="flex cursor-pointer items-center gap-2 border-b px-3 py-2 last:border-b-0 hover:bg-muted/50" :class="alreadyExists ? 'cursor-not-allowed opacity-60' : ''">
|
||||
<input v-model="selectedCopySourceColumnNames" type="checkbox" :value="column.name" :disabled="alreadyExists" class="size-4 rounded border-input" />
|
||||
<span class="min-w-0 flex-1 truncate font-mono text-sm">{{ column.name }}</span>
|
||||
<span class="shrink-0 text-xs text-muted-foreground">{{ column.data_type }}</span>
|
||||
<label v-for="{ column, details, alreadyExists } in filteredCopyableSourceColumns" :key="column.name" class="flex cursor-pointer items-start gap-2 border-b px-3 py-2 last:border-b-0 hover:bg-muted/50" :class="alreadyExists ? 'cursor-not-allowed opacity-60' : ''">
|
||||
<input v-model="selectedCopySourceColumnNames" type="checkbox" :value="column.name" :disabled="alreadyExists" class="mt-0.5 size-4 shrink-0 rounded border-input" />
|
||||
<span class="min-w-0 flex-1">
|
||||
<span class="flex min-w-0 items-center gap-2">
|
||||
<span class="min-w-0 flex-1 truncate font-mono text-sm">{{ column.name }}</span>
|
||||
<span class="shrink-0 text-xs text-muted-foreground">{{ column.data_type }}</span>
|
||||
</span>
|
||||
<span v-if="(columnEditorControls.defaultValue && details.defaultValue) || (columnEditorControls.comment && details.comment)" class="mt-0.5 flex min-w-0 items-center gap-3 text-xs text-muted-foreground">
|
||||
<span v-if="columnEditorControls.defaultValue && details.defaultValue" class="min-w-0 truncate" :title="`${t('structureEditor.defaultValue')}: ${details.defaultValue}`">{{ t("structureEditor.defaultValue") }}: {{ details.defaultValue }}</span>
|
||||
<span v-if="columnEditorControls.comment && details.comment" class="min-w-0 truncate" :title="`${t('structureEditor.comment')}: ${details.comment}`">{{ t("structureEditor.comment") }}: {{ details.comment }}</span>
|
||||
</span>
|
||||
</span>
|
||||
<Badge v-if="alreadyExists" variant="secondary" class="shrink-0 text-[10px]">{{ t("structureEditor.copyColumnsAlreadyExists") }}</Badge>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
Reference in new issue
Block a user