Skip to content

Commit ce14c64

Browse files
authored
Update parquet viewer (#945)
1 parent f2546d2 commit ce14c64

File tree

3 files changed

+64
-18
lines changed

3 files changed

+64
-18
lines changed

frontend/src/components/datasets/ParquetViewer.vue

+56-16
Original file line numberDiff line numberDiff line change
@@ -39,15 +39,18 @@
3939
</p>
4040
</div> -->
4141
</div>
42-
<div class="flex justify-between gap-[16px] text-gray-700 text-sm leading-[20px]">
42+
<div class="flex justify-between gap-[16px] text-gray-700 text-sm leading-[20px] xl:flex-col">
4343
<div class="flex flex-col gap-[8px]">
44-
<p>Subset</p>
44+
<p>{{ $t('all.subset') }}({{ numSubsets }})</p>
4545
<el-select
4646
v-model="subset"
4747
@change="changeSubsetName"
4848
placeholder="Select"
4949
size="large"
50-
class="!w-[350px] sm:!w-full">
50+
class="!w-[330px] xl:!w-full">
51+
<template #prefix>
52+
<span>{{ showRows }} {{ $t('all.rows') }}</span>
53+
</template>
5154
<el-option
5255
v-for="item in datasetInfo"
5356
:key="item.config_name"
@@ -56,19 +59,23 @@
5659
</el-select>
5760
</div>
5861
<div v-if="splits" class="flex flex-col gap-[8px]">
59-
<p>Split {{ numSplits }}</p>
62+
<p>{{ $t('all.split') }}({{ numSplits }}</p>
6063
<el-select
6164
v-model="split"
6265
@change="changeSplitName"
6366
placeholder="Select"
6467
size="large"
65-
class="!w-[350px] sm:!w-full">
68+
class="!w-[330px] xl:!w-full">
69+
<template #prefix>
70+
<span>{{ showRows }} {{ $t('all.rows') }}</span>
71+
</template>
6672
<el-option
6773
v-for="item in splits"
6874
:key="item.name"
6975
:label="item.name"
70-
:value="item.name" />
71-
</el-select>
76+
:value="item.name">
77+
</el-option>
78+
</el-select>
7279
</div>
7380
</div>
7481
<!-- <div>
@@ -108,14 +115,18 @@
108115
</template>
109116

110117
<script setup>
111-
import { computed, onMounted, ref } from 'vue'
118+
import { computed, onMounted, ref, watch } from 'vue'
112119
import { ElMessage } from 'element-plus'
113120
import { Search } from '@element-plus/icons-vue'
114121
import useFetchApi from '../../packs/useFetchApi'
115122
import CsgPagination from '../shared/CsgPagination.vue'
116123
117124
const props = defineProps({
118-
datasetInfo: Object,
125+
datasetInfo: {
126+
type: Array,
127+
default: []
128+
129+
},
119130
namespacePath: String
120131
})
121132
@@ -127,10 +138,24 @@
127138
const perPage = ref(4)
128139
const nameFilterInput = ref('')
129140
// 默认subset和split的值
130-
const splits = ref(props.datasetInfo[0].splits)
131-
const subset = ref(props.datasetInfo[0].config_name)
141+
const splits = ref((props.datasetInfo && props.datasetInfo[0]?.splits) || [])
142+
const subset = ref(props.datasetInfo && props.datasetInfo[0]?.config_name || [])
132143
const split = ref(splits.value[0]?.name || '')
133-
const numSplits = ref(splits.value[0]?.num_examples || 0)
144+
const Rows = ref(splits.value[0]?.num_examples || 0)
145+
146+
const numSplits = computed(() => {
147+
return splits.value?.length || 0
148+
})
149+
const numSubsets = computed(() => {
150+
return props.datasetInfo?.length || 0
151+
})
152+
153+
watch(() => props.datasetInfo, (newValue) => {
154+
splits.value = (newValue && newValue[0]?.splits) || []
155+
subset.value = (newValue && newValue[0]?.config_name) || []
156+
split.value = splits.value[0]?.name || ''
157+
Rows.value = splits.value[0]?.num_examples || 0
158+
})
134159
135160
const tableData = computed(() => {
136161
if (!previewData.value?.rows || !previewData.value?.columns) {
@@ -148,22 +173,37 @@
148173
)
149174
})
150175
176+
const showRows = computed(() => {
177+
let result = ''
178+
if (Rows.value >= 1000000) {
179+
result = (Rows.value / 1000000).toFixed(1) + 'M';
180+
} else if (Rows.value >= 1000) {
181+
result = (Rows.value / 1000).toFixed(1) + 'K';
182+
} else {
183+
result = Rows.value;
184+
}
185+
186+
return result
187+
})
188+
151189
const toggleRow = (_row, _column, event) => {
152190
const row = event.target.closest('.el-table__row')
153191
row.classList.toggle('row-item-clamp')
154192
}
155-
193+
156194
const changeSubsetName = (value) => {
157195
const filteredItem = props.datasetInfo.find(item => item.config_name === value)
158-
splits.value = filteredItem ? filteredItem.data_files: null
159-
split.value = splits.value[0].name || ''
160-
numSplits.value = splits.value[0].num_examples || 0
196+
splits.value = filteredItem ? filteredItem.splits: null
197+
subset.value = filteredItem ? filteredItem.config_name: null
198+
split.value = splits.value[0]?.name || ''
199+
Rows.value = splits.value[0]?.num_examples || 0
161200
currentPage.value = 1
162201
reloadRows()
163202
}
164203
165204
const changeSplitName = (value) => {
166205
currentPage.value = 1
206+
Rows.value = splits.value.find(item => item.name === value).num_examples
167207
reloadRows()
168208
}
169209

frontend/src/locales/en_js/all.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,8 @@ export const all = {
8686
private: "Private",
8787
loadMore: "Load more",
8888
viewMore: "View more",
89-
parquet: "Dataset Preview"
89+
parquet: "Dataset Preview",
90+
subset: "Subset",
91+
split: "Split",
92+
rows: "rows",
9093
}

frontend/src/locales/zh_js/all.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -86,5 +86,8 @@ export const all = {
8686
private: "私有",
8787
loadMore:"加载更多",
8888
viewMore: "展示更多",
89-
parquet: "数据集预览"
89+
parquet: "数据集预览",
90+
subset: "子数据集",
91+
split: "用途",
92+
rows: "行",
9093
}

0 commit comments

Comments
 (0)