diff --git a/ui/src/components/DataManager.vue b/ui/src/components/DataManager.vue index 804b04e..f836609 100644 --- a/ui/src/components/DataManager.vue +++ b/ui/src/components/DataManager.vue @@ -39,7 +39,8 @@ const showOverflowTooltip = ref(true) const complexEditor = ref(false) const sqlEditorView = ref(null as any) const dataFormat = ref('table') -const dataFormatOptions = ['table', 'json'] +const dataFormatOptions = ['table', 'json', 'form'] +const dataShowAsFormIndex = ref(0) const queryDataMeta = ref({} as QueryDataMeta) const largeContent = ref('') const largeContentDialogVisible = ref(false) @@ -120,10 +121,44 @@ interface QueryData { meta: QueryDataMeta } +const rickColumns = ref(new Map()) +const collectTableColumns = async (table: string) => { + let sql + switch (kind.value) { + case ExtensionKind.ExtensionKindCassandra: + sql = `@describeTable_${queryDataMeta.value.currentDatabase}:${table}` + break + default: + sql = `@describeTable_${table}` + } + + const data = await API.DataQueryAsync({ + sql: sql, + store: store.value, + } as QueryObject); + if (data.items.length > 0) { + data.items.forEach((e: any) => { + let field = '' + let comment = '' + e.data.forEach((item: Pair) => { + if (item.key === 'Field') { + field = item.value + } else if (item.key === 'Comment') { + comment = item.value + } + }) + + if (field !== '' && comment !== '') { + rickColumns.value.set(field, comment) + } + }) + } +} const queryDataFromTable = (data: QueryData) => { sqlQuery.value = `@selectTableLImit100_${data.label}` currentTable.value = data.label executeQuery() + collectTableColumns(data.label) } const describeTable = (data: QueryData) => { switch (kind.value) { @@ -463,10 +498,28 @@ Magic.LoadMagicKeys('DataManager', new Map([ {{ label.value }} overflow - - + +
+ + + + + + + + + + {{ rickColumns.get(row) }} + + + + + +
+ + -