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
8aac7af481 update package.json 2023-07-03 23:33:52 +02:00
lana-k
6982204e68 Update currentTab when close tabs #112 2023-07-03 23:13:09 +02:00
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
7 changed files with 79 additions and 28 deletions

18
package-lock.json generated
View File

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

View File

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

View File

@@ -73,21 +73,26 @@ export default {
comments: false,
step: undefined,
complete: results => {
const res = {
data: this.getResult(results),
delimiter: results.meta.delimiter,
hasErrors: false,
rowCount: results.data.length
let res
try {
res = {
data: this.getResult(results),
delimiter: results.meta.delimiter,
hasErrors: false,
rowCount: results.data.length
}
res.messages = results.errors.map(msg => {
msg.type = msg.code === 'UndetectableDelimiter' ? 'info' : 'error'
if (msg.type === 'error') res.hasErrors = true
msg.hint = hintsByCode[msg.code]
return msg
})
} catch (error) {
reject(error)
}
res.messages = results.errors.map(msg => {
msg.type = msg.code === 'UndetectableDelimiter' ? 'info' : 'error'
if (msg.type === 'error') res.hasErrors = true
msg.hint = hintsByCode[msg.code]
return msg
})
resolve(res)
},
error: (error, file) => {
error: error => {
reject(error)
},
download: false,

View File

@@ -36,9 +36,11 @@ export default {
state.currentTabId = state.tabs[index - 1].id
} else {
state.currentTabId = null
state.currentTab = null
state.untitledLastIndex = 0
}
state.currentTab = state.currentTabId
? state.tabs.find(tab => tab.id === state.currentTabId)
: null
}
state.tabs.splice(index, 1)
},

View File

@@ -18,6 +18,7 @@
import fu from '@/lib/utils/fileIo'
import database from '@/lib/database'
import Logs from '@/components/Logs'
import events from '@/lib/utils/events'
export default {
name: 'LoadView',
@@ -46,6 +47,14 @@ export default {
maximize
} = 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)
const inquiries = await this.loadInquiries(inquiryUrl, inquiryIds)
if (inquiries && inquiries.length > 0) {

View File

@@ -116,6 +116,33 @@ describe('csv.js', () => {
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', () => {
const resultSet = {
columns: ['id', 'name'],

View File

@@ -176,13 +176,15 @@ describe('mutations', () => {
const state = {
tabs: [tab1, tab2],
currentTabId: 1
currentTabId: 1,
currentTab: tab1
}
deleteTab(state, tab1)
expect(state.tabs).to.have.lengthOf(1)
expect(state.tabs[0].id).to.equal(2)
expect(state.currentTabId).to.equal(2)
expect(state.currentTab).to.eql(tab2)
})
it('deleteTab - opened, last', () => {
@@ -208,13 +210,15 @@ describe('mutations', () => {
const state = {
tabs: [tab1, tab2],
currentTabId: 2
currentTabId: 2,
currentTab: tab2
}
deleteTab(state, tab2)
expect(state.tabs).to.have.lengthOf(1)
expect(state.tabs[0].id).to.equal(1)
expect(state.currentTabId).to.equal(1)
expect(state.currentTab).to.eql(tab1)
})
it('deleteTab - opened, in the middle', () => {
@@ -250,7 +254,8 @@ describe('mutations', () => {
const state = {
tabs: [tab1, tab2, tab3],
currentTabId: 2
currentTabId: 2,
currentTab: tab2
}
deleteTab(state, tab2)
@@ -258,6 +263,7 @@ describe('mutations', () => {
expect(state.tabs[0].id).to.equal(1)
expect(state.tabs[1].id).to.equal(3)
expect(state.currentTabId).to.equal(3)
expect(state.currentTab).to.eql(tab3)
})
it('deleteTab - opened, single', () => {
@@ -273,12 +279,14 @@ describe('mutations', () => {
const state = {
tabs: [tab1],
currentTabId: 1
currentTabId: 1,
currentTab: tab1
}
deleteTab(state, tab1)
expect(state.tabs).to.have.lengthOf(0)
expect(state.currentTabId).to.equal(null)
expect(state.currentTab).to.equal(null)
})
it('setCurrentTabId', () => {