mirror of
https://github.com/lana-k/sqliteviz.git
synced 2025-12-08 11:08:55 +08:00
change code structure
This commit is contained in:
71
src/lib/utils/fileIo.js
Normal file
71
src/lib/utils/fileIo.js
Normal file
@@ -0,0 +1,71 @@
|
||||
export default {
|
||||
exportToFile (str, fileName, type = 'octet/stream') {
|
||||
// Create downloader
|
||||
const downloader = document.createElement('a')
|
||||
const blob = new Blob([str], { type })
|
||||
const url = URL.createObjectURL(blob)
|
||||
downloader.href = url
|
||||
downloader.download = fileName
|
||||
|
||||
// Trigger click
|
||||
downloader.click()
|
||||
|
||||
// Clean up
|
||||
URL.revokeObjectURL(url)
|
||||
},
|
||||
|
||||
/**
|
||||
* Note: if user press Cancel in file choosing dialog
|
||||
* it will be an unsettled promise. But it's grabbed by
|
||||
* the garbage collector (tested with FinalizationRegistry).
|
||||
*/
|
||||
getFileFromUser (type) {
|
||||
return new Promise(resolve => {
|
||||
const uploader = document.createElement('input')
|
||||
|
||||
uploader.type = 'file'
|
||||
uploader.accept = type
|
||||
|
||||
uploader.addEventListener('change', () => {
|
||||
const file = uploader.files[0]
|
||||
resolve(file)
|
||||
})
|
||||
|
||||
uploader.click()
|
||||
})
|
||||
},
|
||||
|
||||
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)
|
||||
})
|
||||
})
|
||||
},
|
||||
|
||||
readFile (path) {
|
||||
return fetch(path)
|
||||
},
|
||||
|
||||
readAsArrayBuffer (file) {
|
||||
const fileReader = new FileReader()
|
||||
|
||||
return new Promise((resolve, reject) => {
|
||||
fileReader.onerror = () => {
|
||||
fileReader.abort()
|
||||
reject(new Error('Problem parsing input file.'))
|
||||
}
|
||||
|
||||
fileReader.onload = () => {
|
||||
resolve(fileReader.result)
|
||||
}
|
||||
fileReader.readAsArrayBuffer(file)
|
||||
})
|
||||
}
|
||||
}
|
||||
36
src/lib/utils/time.js
Normal file
36
src/lib/utils/time.js
Normal file
@@ -0,0 +1,36 @@
|
||||
export default {
|
||||
getPeriod (start, end) {
|
||||
let diff = end.getTime() - start.getTime()
|
||||
let result = ''
|
||||
|
||||
const days = Math.floor(diff / (1000 * 60 * 60 * 24))
|
||||
diff -= days * (1000 * 60 * 60 * 24)
|
||||
if (days) {
|
||||
result += days + ' d '
|
||||
}
|
||||
|
||||
const hours = Math.floor(diff / (1000 * 60 * 60))
|
||||
diff -= hours * (1000 * 60 * 60)
|
||||
if (hours) {
|
||||
result += hours + ' h '
|
||||
}
|
||||
|
||||
const mins = Math.floor(diff / (1000 * 60))
|
||||
diff -= mins * (1000 * 60)
|
||||
if (mins) {
|
||||
result += mins + ' m '
|
||||
}
|
||||
|
||||
const seconds = Math.floor(diff / (1000))
|
||||
diff -= seconds * (1000)
|
||||
if (seconds) {
|
||||
result += seconds + ' s '
|
||||
}
|
||||
|
||||
if (diff) {
|
||||
result += diff + ' ms '
|
||||
}
|
||||
|
||||
return result.replace(/\s$/, '')
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user