1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-10 03:58:54 +08:00

#116 JSON file import

This commit is contained in:
lana-k
2024-09-05 22:15:12 +02:00
parent a2464d839f
commit 1b6b7c71e9
13 changed files with 346 additions and 213 deletions

View File

@@ -7,9 +7,9 @@ const hintsByCode = {
}
export default {
getResult (source) {
getResult (source, columns) {
const result = {
columns: []
columns: columns || []
}
const values = {}
if (source.meta.fields) {
@@ -24,8 +24,18 @@ export default {
return value
})
})
} else if (columns) {
columns.forEach((col, i) => {
values[col] = source.data.map(row => {
let value = row[i]
if (value instanceof Date) {
value = value.toISOString()
}
return value
})
})
} else {
for (let i = 0; i <= source.data[0].length - 1; i++) {
for (let i = 0; source.data[0] && i <= source.data[0].length - 1; i++) {
const colName = `col${i + 1}`
result.columns.push(colName)
values[colName] = source.data.map(row => {
@@ -76,7 +86,7 @@ export default {
let res
try {
res = {
data: this.getResult(results),
data: this.getResult(results, config.columns),
delimiter: results.meta.delimiter,
hasErrors: false,
rowCount: results.data.length

View File

@@ -1,4 +1,10 @@
export default {
isJSON (file) {
return file && file.type === 'application/json'
},
isNDJSON (file) {
return file && file.name.endsWith('.ndjson')
},
isDatabase (file) {
const dbTypes = ['application/vnd.sqlite3', 'application/x-sqlite3']
return file.type
@@ -51,19 +57,20 @@ export default {
},
importFile () {
const reader = new FileReader()
return this.getFileFromUser('.json')
.then(file => {
return new Promise((resolve, reject) => {
reader.onload = e => {
resolve(e.target.result)
}
reader.readAsText(file)
})
return this.getFileContent(file)
})
},
getFileContent (file) {
const reader = new FileReader()
return new Promise(resolve => {
reader.onload = e => resolve(e.target.result)
reader.readAsText(file)
})
},
readFile (path) {
return fetch(path)
},