1
0
mirror of https://github.com/lana-k/sqliteviz.git synced 2025-12-06 18:18:53 +08:00

7 Commits

Author SHA1 Message Date
lana-k
41e0ae7332 fix test for firefox #110 2023-06-29 23:14:08 +02:00
lana-k
ebb5af4f10 send event when sharing 2023-06-29 22:57:39 +02:00
lana-k
ae26358b25 add test #110 2023-06-29 22:28:41 +02:00
lana-k
d9ee702b8e update papaparse #111 2023-06-29 22:14:28 +02:00
lana-k
446045fa55 Catch parsing errors in compete #110 2023-06-29 22:13:56 +02:00
lana-k
1a9d1b308b check data format #109 2023-06-10 20:05:42 +02:00
lana-k
014ecf145e update version 2023-06-10 19:11:15 +02:00
6 changed files with 68 additions and 24 deletions

18
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{ {
"name": "sqliteviz", "name": "sqliteviz",
"version": "0.22.0", "version": "0.23.1",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "sqliteviz", "name": "sqliteviz",
"version": "0.22.0", "version": "0.23.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"dependencies": { "dependencies": {
"codemirror": "^5.57.0", "codemirror": "^5.57.0",
@@ -15,7 +15,7 @@
"html2canvas": "^1.1.4", "html2canvas": "^1.1.4",
"jquery": "^3.6.0", "jquery": "^3.6.0",
"nanoid": "^3.1.12", "nanoid": "^3.1.12",
"papaparse": "^5.3.1", "papaparse": "^5.4.1",
"pivottable": "^2.23.0", "pivottable": "^2.23.0",
"plotly.js": "^1.58.4", "plotly.js": "^1.58.4",
"promise-worker": "^2.0.1", "promise-worker": "^2.0.1",
@@ -16381,9 +16381,9 @@
"dev": true "dev": true
}, },
"node_modules/papaparse": { "node_modules/papaparse": {
"version": "5.3.2", "version": "5.4.1",
"resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz",
"integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw=="
}, },
"node_modules/parallel-transform": { "node_modules/parallel-transform": {
"version": "1.2.0", "version": "1.2.0",
@@ -38855,9 +38855,9 @@
"dev": true "dev": true
}, },
"papaparse": { "papaparse": {
"version": "5.3.2", "version": "5.4.1",
"resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.3.2.tgz", "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz",
"integrity": "sha512-6dNZu0Ki+gyV0eBsFKJhYr+MdQYAzFUGlBMNj3GNrmHxmz1lfRa24CjFObPXtjcetlOv5Ad299MhIK0znp3afw==" "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw=="
}, },
"parallel-transform": { "parallel-transform": {
"version": "1.2.0", "version": "1.2.0",

View File

@@ -1,6 +1,6 @@
{ {
"name": "sqliteviz", "name": "sqliteviz",
"version": "0.22.0", "version": "0.23.1",
"license": "Apache-2.0", "license": "Apache-2.0",
"private": true, "private": true,
"scripts": { "scripts": {
@@ -16,7 +16,7 @@
"html2canvas": "^1.1.4", "html2canvas": "^1.1.4",
"jquery": "^3.6.0", "jquery": "^3.6.0",
"nanoid": "^3.1.12", "nanoid": "^3.1.12",
"papaparse": "^5.3.1", "papaparse": "^5.4.1",
"pivottable": "^2.23.0", "pivottable": "^2.23.0",
"plotly.js": "^1.58.4", "plotly.js": "^1.58.4",
"promise-worker": "^2.0.1", "promise-worker": "^2.0.1",

View File

@@ -73,7 +73,9 @@ export default {
comments: false, comments: false,
step: undefined, step: undefined,
complete: results => { complete: results => {
const res = { let res
try {
res = {
data: this.getResult(results), data: this.getResult(results),
delimiter: results.meta.delimiter, delimiter: results.meta.delimiter,
hasErrors: false, hasErrors: false,
@@ -85,9 +87,12 @@ export default {
msg.hint = hintsByCode[msg.code] msg.hint = hintsByCode[msg.code]
return msg return msg
}) })
} catch (error) {
reject(error)
}
resolve(res) resolve(res)
}, },
error: (error, file) => { error: error => {
reject(error) reject(error)
}, },
download: false, download: false,

View File

@@ -18,6 +18,7 @@
import fu from '@/lib/utils/fileIo' import fu from '@/lib/utils/fileIo'
import database from '@/lib/database' import database from '@/lib/database'
import Logs from '@/components/Logs' import Logs from '@/components/Logs'
import events from '@/lib/utils/events'
export default { export default {
name: 'LoadView', name: 'LoadView',
@@ -46,6 +47,14 @@ export default {
maximize maximize
} = this.$route.query } = this.$route.query
events.send('share.load', null, {
has_data_url: !!dataUrl,
data_format: dataFormat,
has_inquiry_url: !!inquiryUrl,
inquiry_id_count: (inquiryIds || []).length,
maximize
})
await this.loadData(dataUrl, dataFormat) await this.loadData(dataUrl, dataFormat)
const inquiries = await this.loadInquiries(inquiryUrl, inquiryIds) const inquiries = await this.loadInquiries(inquiryUrl, inquiryIds)
if (inquiries && inquiries.length > 0) { if (inquiries && inquiries.length > 0) {
@@ -74,6 +83,9 @@ export default {
if (dataFormat === 'sqlite') { if (dataFormat === 'sqlite') {
await this.getSqliteDb(dataUrl) await this.getSqliteDb(dataUrl)
} else {
this.dataMsg.message = 'Unknown data format'
this.dataMsg.type = 'error'
} }
// Loading indicator is not needed anymore // Loading indicator is not needed anymore

View File

@@ -36,7 +36,7 @@ export default {
}, },
async beforeCreate () { async beforeCreate () {
const schema = this.$store.state.db.schema const schema = this.$store.state.db.schema
if (!schema || schema.length === 0) { if ((!schema || schema.length === 0) && this.$store.state.tabs.length === 0) {
const stmt = [ const stmt = [
'/*', '/*',
' * Your database is empty. In order to start building charts', ' * Your database is empty. In order to start building charts',

View File

@@ -116,6 +116,33 @@ describe('csv.js', () => {
await expect(csv.parse(file)).to.be.rejectedWith(err) await expect(csv.parse(file)).to.be.rejectedWith(err)
}) })
it('parse rejects when getResult failed', async () => {
let err
try {
new Date('invalid date').toISOString()
} catch (e) {
err = e // get error message, it's different depending on browser
}
sinon.stub(Papa, 'parse').callsFake((file, config) => {
config.complete({
data: [
[1, new Date('invalid date')],
[2, new Date('2023-05-05T15:30:00Z')]
],
errors: [],
meta: {
delimiter: ',',
linebreak: '\n',
aborted: false,
truncated: true
}
})
})
const file = {}
await expect(csv.parse(file)).to.be.rejectedWith(err.message)
})
it('prepareForExport', () => { it('prepareForExport', () => {
const resultSet = { const resultSet = {
columns: ['id', 'name'], columns: ['id', 'name'],