Skip to content

Commit abf44c3

Browse files
committed
feat: use <script setup> syntax
1 parent afc84d6 commit abf44c3

File tree

5 files changed

+165
-193
lines changed

5 files changed

+165
-193
lines changed

Diff for: components/DbTableInfo.vue

+14-20
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
<script lang="ts" setup>
2+
const props = defineProps({
3+
dbColumnNames: {
4+
type: Array,
5+
required: true,
6+
},
7+
8+
csvColumnNames: {
9+
type: Array,
10+
required: true,
11+
}
12+
})
13+
</script>
14+
115
<template>
216
<div v-show="props.dbColumnNames.length > 0" class="has-text-centered">
317
<div class="scroll">
@@ -19,23 +33,3 @@
1933
<p>TableName: <strong>hoge</strong></p>
2034
</div>
2135
</template>
22-
23-
<script lang="ts">
24-
export default defineComponent({
25-
props: {
26-
dbColumnNames: {
27-
type: Array,
28-
required: true,
29-
},
30-
31-
csvColumnNames: {
32-
type: Array,
33-
required: true,
34-
},
35-
},
36-
37-
setup(props: { dbColumnNames: string[]; csvColumnNames: string[] }) {
38-
return { props }
39-
},
40-
})
41-
</script>

Diff for: components/DragAndDrop.vue

+46-50
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,48 @@
1+
<script lang="ts" setup>
2+
import { parse } from 'csv-parse/lib/sync'
3+
import { useContext } from '@nuxtjs/composition-api'
4+
5+
const state = reactive<{
6+
loading: boolean
7+
}>({
8+
loading: false,
9+
})
10+
11+
const { root } = useContext()
12+
const emit = defineEmits(['set'])
13+
const onDrop = (event: any) => {
14+
state.loading = true
15+
const files = event.dataTransfer.files
16+
setTimeout(() => {
17+
const reader = new FileReader()
18+
reader.onload = (e: any) => {
19+
let rows = []
20+
try {
21+
rows = parse(e.target.result, { skip_empty_lines: true })
22+
} catch (e) {
23+
;(root as any).$buefy.toast.open({
24+
duration: 5000,
25+
message: e,
26+
position: 'is-bottom',
27+
type: 'is-danger'
28+
})
29+
state.loading = false
30+
return
31+
}
32+
const columnLength = rows[0].length
33+
emit(
34+
'set',
35+
rows.filter((row: string[]) => row.length === columnLength)
36+
)
37+
state.loading = false
38+
}
39+
reader.readAsText(files[0])
40+
}, 200)
41+
}
42+
43+
const { loading } = toRefs(state)
44+
</script>
45+
146
<template>
247
<div
348
class="drop-area"
@@ -6,62 +51,13 @@
651
@drop.prevent="onDrop"
752
>
853
<p>Drag and drop file</p>
9-
<div class="modal" :class="{ 'is-active': state.loading }">
54+
<div class="modal" :class="{ 'is-active': loading }">
1055
<div class="modal-background"></div>
1156
<div class="modal-content">Loading...</div>
1257
</div>
1358
</div>
1459
</template>
1560

16-
<script lang="ts">
17-
import { parse } from 'csv-parse/lib/sync'
18-
19-
export default defineComponent({
20-
setup(_, ctx) {
21-
const state = reactive<{
22-
loading: boolean
23-
}>({
24-
loading: false,
25-
})
26-
27-
const onDrop = (event: any) => {
28-
state.loading = true
29-
const files = event.dataTransfer.files
30-
setTimeout(() => {
31-
const reader = new FileReader()
32-
reader.onload = (e: any) => {
33-
let rows = []
34-
try {
35-
rows = parse(e.target.result, { skip_empty_lines: true })
36-
} catch (e) {
37-
;(ctx.root as any).$buefy.toast.open({
38-
duration: 5000,
39-
message: e,
40-
position: 'is-bottom',
41-
type: 'is-danger'
42-
})
43-
state.loading = false
44-
return
45-
}
46-
const columnLength = rows[0].length
47-
ctx.emit(
48-
'set',
49-
rows.filter((row: string[]) => row.length === columnLength)
50-
)
51-
state.loading = false
52-
}
53-
reader.readAsText(files[0])
54-
}, 200)
55-
}
56-
57-
return {
58-
state,
59-
onDrop,
60-
}
61-
},
62-
})
63-
</script>
64-
6561
<style scoped>
6662
.drop-area {
6763
display: block;

Diff for: components/ErrorMessage.vue

+9-15
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
<script lang="ts" setup>
2+
const props = defineProps({
3+
message: {
4+
type: String,
5+
required: true,
6+
},
7+
})
8+
</script>
9+
110
<template>
211
<div v-show="props.message && props.message.length > 0">
312
<article class="message is-danger">
@@ -10,18 +19,3 @@
1019
</article>
1120
</div>
1221
</template>
13-
14-
<script lang="ts">
15-
export default defineComponent({
16-
props: {
17-
message: {
18-
type: String,
19-
required: true,
20-
},
21-
},
22-
23-
setup(props: { message: string }) {
24-
return { props }
25-
},
26-
})
27-
</script>

Diff for: components/ResultTable.vue

+14-20
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
1+
<script lang="ts" setup>
2+
const props = defineProps({
3+
columnNames: {
4+
type: Array,
5+
required: true,
6+
},
7+
8+
result: {
9+
type: Array,
10+
required: true,
11+
},
12+
})
13+
</script>
14+
115
<template>
216
<div class="scroll">
317
<table class="table is-hoverable is-fullwidth scroll">
@@ -16,23 +30,3 @@
1630
</table>
1731
</div>
1832
</template>
19-
20-
<script lang="ts">
21-
export default defineComponent({
22-
props: {
23-
columnNames: {
24-
type: Array,
25-
required: true,
26-
},
27-
28-
result: {
29-
type: Array,
30-
required: true,
31-
},
32-
},
33-
34-
setup(props: { columnNames: string[]; result: string[][] }) {
35-
return { props }
36-
},
37-
})
38-
</script>

0 commit comments

Comments
 (0)