feat(grid): copy column names using comments
This commit is contained in:
5 files changed
+15
-5
No files matched your search
@@ -9658,7 +9658,7 @@ const gridContextMenuItems = computed<ContextMenuItem[]>(() => {
|
||||
<DataGridBulkEditDialog v-if="bulkEditDialogMounted" v-model:open="bulkEditDialogOpen" v-model:value="bulkEditValue" :selected-cell-count="selectedCellCount" @apply="applyBulkEditValue" />
|
||||
|
||||
<DataGridExtractorDialog v-model:open="extractorConfigOpen" :extractor="selectedCopyExtractor" :options="settingsStore.editorSettings.dataGridExtractorOptions" :items="extractorMenuItems" :preview="previewWithExtractor" @save="saveExtractorConfiguration" />
|
||||
<DataGridCopyColumnNamesDialog v-if="copyColumnNamesDialogMounted" v-model:open="copyColumnNamesDialogOpen" :column-names="copyColumnNamesDialogColumns" :database-type="resolvedDatabaseType" @copy="copyText" />
|
||||
<DataGridCopyColumnNamesDialog v-if="copyColumnNamesDialogMounted" v-model:open="copyColumnNamesDialogOpen" :column-names="copyColumnNamesDialogColumns" :database-type="resolvedDatabaseType" :column-comments="columnCommentMap" @copy="copyText" />
|
||||
|
||||
<Dialog v-model:open="generateIncrementDialogOpen">
|
||||
<DialogContent class="sm:max-w-[380px]">
|
||||
|
||||
@@ -11,22 +11,25 @@ import type { DatabaseType } from "@/types/database";
|
||||
|
||||
const { t } = useI18n();
|
||||
const open = defineModel<boolean>("open", { default: false });
|
||||
const props = defineProps<{ columnNames: string[]; databaseType?: DatabaseType }>();
|
||||
const props = defineProps<{ columnNames: string[]; databaseType?: DatabaseType; columnComments?: Map<string, string> }>();
|
||||
const emit = defineEmits<{ copy: [text: string] }>();
|
||||
|
||||
const separator = ref<ColumnNameCopySeparator>(loadColumnNameCopySeparator());
|
||||
const quote = ref(false);
|
||||
const showByComment = ref(false);
|
||||
|
||||
// 每次打开时重新读取上次分隔符选择;转义选项每次默认关闭
|
||||
watch(open, (value) => {
|
||||
if (!value) return;
|
||||
separator.value = loadColumnNameCopySeparator();
|
||||
quote.value = false;
|
||||
showByComment.value = false;
|
||||
});
|
||||
|
||||
const showQuoteOption = computed(() => supportsColumnNameQuoting(props.databaseType));
|
||||
const showCommentOption = computed(() => !!(props.columnComments && props.columnComments.size > 0));
|
||||
|
||||
const previewText = computed(() => formatColumnNamesForCopy(props.columnNames, { separator: separator.value, quote: quote.value, databaseType: props.databaseType }));
|
||||
const previewText = computed(() => formatColumnNamesForCopy(props.columnNames, { separator: separator.value, quote: quote.value, databaseType: props.databaseType, showByComment: showByComment.value, commentByColumn: props.columnComments }));
|
||||
|
||||
function onSeparatorChange(value: unknown) {
|
||||
if (isColumnNameCopySeparator(value)) separator.value = value;
|
||||
@@ -61,6 +64,10 @@ function confirmCopy() {
|
||||
<Label class="shrink-0 text-sm" for="copy-column-names-quote">{{ t("grid.copyColumnNamesQuote") }}</Label>
|
||||
<Switch id="copy-column-names-quote" v-model="quote" />
|
||||
</div>
|
||||
<div v-if="showCommentOption" class="flex items-center justify-between gap-3">
|
||||
<Label class="shrink-0 text-sm" for="copy-column-names-comment">{{ t("grid.copyColumnNamesShowComment") }}</Label>
|
||||
<Switch id="copy-column-names-comment" v-model="showByComment" />
|
||||
</div>
|
||||
<div class="space-y-1.5">
|
||||
<Label class="text-sm">{{ t("grid.copyColumnNamesPreview") }}</Label>
|
||||
<pre class="dbx-data-grid-value-font max-h-40 min-h-16 w-full overflow-auto whitespace-pre-wrap break-all rounded-[6px] border border-input bg-muted/30 px-2.5 py-1.5 text-xs" data-copy-column-names-preview>{{ previewText }}</pre>
|
||||
|
||||
Reference in new issue
Block a user