Skip to content

Commit d96e2b5

Browse files
authored
Merge pull request #654 from LinuxSuRen/feat/refresh-tables
feat: support to refresh tables
2 parents 34eeb2a + 13fe6ee commit d96e2b5

File tree

3 files changed

+29
-15
lines changed

3 files changed

+29
-15
lines changed

console/atest-ui/src/components/HistoryInput.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const props = defineProps({
2828
type: Number,
2929
default: 10
3030
},
31-
key: {
31+
group: {
3232
type: String,
3333
default: 'history'
3434
},
@@ -74,7 +74,7 @@ const handleEnter = async () => {
7474
return;
7575
}
7676
77-
const history = JSON.parse(getStorage().getItem(props.key) || '[]')
77+
const history = JSON.parse(getStorage().getItem(props.group) || '[]')
7878
const existingItem = history.find((item: HistoryItem) => item.value === input.value)
7979
8080
if (existingItem) {
@@ -89,18 +89,18 @@ const handleEnter = async () => {
8989
history.shift()
9090
}
9191
92-
getStorage().setItem(props.key, JSON.stringify(history))
92+
getStorage().setItem(props.group, JSON.stringify(history))
9393
suggestions.value = history
9494
}
9595
9696
const loadHistory = () => {
97-
suggestions.value = JSON.parse(getStorage().getItem('history') || '[]')
97+
suggestions.value = JSON.parse(getStorage().getItem(props.group) || '[]')
9898
}
9999
100100
const deleteHistoryItem = (item: HistoryItem) => {
101-
const history = JSON.parse(getStorage().getItem(props.key) || '[]')
101+
const history = JSON.parse(getStorage().getItem(props.group) || '[]')
102102
const updatedHistory = history.filter((historyItem: HistoryItem) => historyItem.value !== item.value)
103-
getStorage().setItem(props.key, JSON.stringify(updatedHistory))
103+
getStorage().setItem(props.group, JSON.stringify(updatedHistory))
104104
suggestions.value = updatedHistory
105105
}
106106

console/atest-ui/src/views/DataManager.vue

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { ElMessage } from 'element-plus'
77
import { Codemirror } from 'vue-codemirror'
88
import HistoryInput from '../components/HistoryInput.vue'
99
import type { Ref } from 'vue'
10+
import { Refresh, Document } from '@element-plus/icons-vue'
1011
1112
const stores: Ref<Store[]> = ref([])
1213
const kind = ref('')
@@ -57,6 +58,10 @@ const queryDataFromTable = (data: QueryData) => {
5758
sqlQuery.value = `@selectTableLImit100_${data.label}`
5859
executeQuery()
5960
}
61+
const describeTable = (data: QueryData) => {
62+
sqlQuery.value = `@describeTable_${data.label}`
63+
executeQuery()
64+
}
6065
const queryTables = () => {
6166
sqlQuery.value = ``
6267
executeQuery()
@@ -138,6 +143,9 @@ const keyValueDataHandler = (data: QueryData) => {
138143
}
139144
140145
const executeQuery = async () => {
146+
return executeWithQuery(sqlQuery.value)
147+
}
148+
const executeWithQuery = async (sql: string) => {
141149
switch (kind.value) {
142150
case 'atest-store-etcd':
143151
sqlQuery.value = '*'
@@ -146,7 +154,7 @@ const executeQuery = async () => {
146154
147155
let success = false
148156
try {
149-
const data = await API.DataQueryAsync(store.value, kind.value, queryDataMeta.value.currentDatabase, sqlQuery.value);
157+
const data = await API.DataQueryAsync(store.value, kind.value, queryDataMeta.value.currentDatabase, sql);
150158
switch (kind.value) {
151159
case 'atest-store-orm':
152160
case 'atest-store-iotdb':
@@ -184,11 +192,21 @@ const executeQuery = async () => {
184192
<el-scrollbar>
185193
<el-select v-model="queryDataMeta.currentDatabase" placeholder="Select database"
186194
@change="queryTables" filterable>
195+
<template #header>
196+
<el-button type="primary" :icon="Refresh" @click="executeWithQuery('')"></el-button>
197+
</template>
187198
<el-option v-for="item in queryDataMeta.databases" :key="item" :label="item"
188199
:value="item"></el-option>
189200
</el-select>
190-
<el-tree :data="tablesTree" node-key="label" @node-click="queryDataFromTable" highlight-current
191-
draggable />
201+
<el-tree :data="tablesTree" node-key="label" highlight-current
202+
draggable>
203+
<template #default="{node, data}">
204+
<span @click="queryDataFromTable(data)">
205+
{{ node.label }}
206+
</span>
207+
<el-icon style="margin-left: 6px;" @click="describeTable(data)" v-if="kind === 'atest-store-orm'"><Document /></el-icon>
208+
</template>
209+
</el-tree>
192210
</el-scrollbar>
193211
</el-aside>
194212
<el-container>

console/atest-ui/src/views/TestSuite.vue

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import type { FormInstance, FormRules } from 'element-plus'
66
import type { Suite, TestCase, Pair } from './types'
77
import { NewSuggestedAPIsQuery, GetHTTPMethods, SwaggerSuggestion } from './types'
88
import EditButton from '../components/EditButton.vue'
9+
import HistoryInput from '../components/HistoryInput.vue'
910
import { Cache } from './cache'
1011
import { useI18n } from 'vue-i18n'
1112
import { API } from './net'
@@ -301,12 +302,7 @@ const renameTestSuite = (name: string) => {
301302
{{ t('tip.testsuite') }}<EditButton :value="suite.name" @changed="renameTestSuite"/>
302303

303304
<el-form-item :label="t('tip.apiAddress')" prop="api">
304-
<el-input
305-
class="w-50 m-2"
306-
v-model="suite.api"
307-
placeholder="API"
308-
test-id="suite-editor-api"
309-
></el-input>
305+
<HistoryInput placeholder="API" v-model="suite.api" group="apiAddress" />
310306
</el-form-item>
311307
<table style="width: 100%">
312308
<tr>

0 commit comments

Comments
 (0)