diff --git a/src/components/TableDialog.vue b/src/components/TableDialog.vue
index 8a6a8cfd..60f923cb 100644
--- a/src/components/TableDialog.vue
+++ b/src/components/TableDialog.vue
@@ -1,7 +1,7 @@
-
-
- Create Table
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ Select Dataset
+
-
-
-
+ Set Column Types
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Next
+
+
+
+
+
+
+
+
+
+
- Create
-
-
-
-
-
+
+
+
+ |
+ {{ header.text }}
+
+ |
+
+
+
+
+
+
+
+
+ Back
+
+
+
+ Create Table
+
+
+
+
+
@@ -139,6 +197,22 @@ export default defineComponent({
},
},
setup(props, { emit }) {
+ // Stepper control
+ const step: Ref = ref(1);
+ const rowSample: Ref> = ref([]);
+ const headers = computed(() => {
+ if (rowSample.value.length === 0) {
+ return [];
+ }
+
+ const keys = Object.keys(rowSample.value[0]);
+
+ return keys.map((key) => ({
+ text: key,
+ value: key,
+ }));
+ });
+
// Type recommendation
const columnType: Ref<{[key: string]: CSVColumnType}> = ref({});
@@ -165,9 +239,11 @@ export default defineComponent({
}
const typeRecs = await csvFileTypeRecommendations(file);
- columnType.value = Array.from(typeRecs.keys()).reduce(
- (acc, key) => ({ ...acc, [key]: typeRecs.get(key) }), {},
+ columnType.value = Array.from(typeRecs.typeRecs.keys()).reduce(
+ (acc, key) => ({ ...acc, [key]: typeRecs.typeRecs.get(key) }), {},
);
+
+ rowSample.value = [...typeRecs.rowSample];
}
// Upload options
@@ -217,6 +293,9 @@ export default defineComponent({
}
return {
+ step,
+ headers,
+ rowSample,
columnType,
multinetTypes,
fileName,
@@ -241,4 +320,8 @@ export default defineComponent({
margin: 49px 10px 0 0;
z-index: 1;
}
+.upload-preview table th {
+ background-color: #1976d2 !important;
+ color: #fff !important;
+}
diff --git a/src/utils/files.ts b/src/utils/files.ts
index 6e5986ca..78795e0c 100644
--- a/src/utils/files.ts
+++ b/src/utils/files.ts
@@ -46,10 +46,16 @@ interface TypeScore {
total: number;
}
-async function csvFileTypeRecommendations(file: File): Promise