You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
118 lines
2.6 KiB
118 lines
2.6 KiB
import { EXPORTED_PATH } from '../config'; |
|
|
|
import * as express from 'express'; |
|
import * as path from 'path'; |
|
import * as fs from 'fs'; |
|
|
|
|
|
function sendOk(req, res) { |
|
res.status(200).send('Datasource works'); |
|
} |
|
|
|
function search(req, res) { |
|
fs.readdir(EXPORTED_PATH, err => { |
|
if(err) { |
|
console.error(err); |
|
res.status(500).send('Something went wrong'); |
|
} else { |
|
res.status(200).send(['All tasks']); |
|
} |
|
}) |
|
} |
|
|
|
function query(req, res) { |
|
let body = req.body; |
|
let targets = body.targets; |
|
|
|
let resp = { |
|
target: targets[0].target, |
|
type: 'table', |
|
columns: [ |
|
{ |
|
text: 'Progress updated', |
|
type: 'time' |
|
}, |
|
{ |
|
text: 'User', |
|
type: 'string' |
|
}, |
|
{ |
|
text: 'Datasource', |
|
type: 'string' |
|
}, |
|
{ |
|
text: 'Exported Rows', |
|
type: 'number' |
|
}, |
|
{ |
|
text: 'Progress', |
|
type: 'string' |
|
}, |
|
{ |
|
text: 'Download CSV', |
|
type: 'string' |
|
}, |
|
{ |
|
text: 'Status', |
|
type: 'string' |
|
}, |
|
{ |
|
text: 'Delete task', |
|
type: 'string' |
|
} |
|
], |
|
rows: [] |
|
}; |
|
|
|
for(let target of targets) { |
|
fs.readdir(EXPORTED_PATH, (err, items) => { |
|
if(err) { |
|
console.error(err); |
|
res.status(500).send('Something went wrong'); |
|
} else { |
|
for(let item of items) { |
|
let file = path.parse(item); |
|
if(file.ext !== '.json') { |
|
continue; |
|
} |
|
// TODO: read async |
|
let data = fs.readFileSync(path.join(EXPORTED_PATH, item), 'utf8') |
|
let status = JSON.parse(data) |
|
|
|
let requestedUrl = `http://${req.headers.host}`; |
|
let downloadLink = ''; |
|
let deleteLink = ''; |
|
if(status.status === 'finished') { |
|
downloadLink = `<a class="download-csv" href="${requestedUrl}/static/${file.name}.csv" target="_blank"><i class="fa fa-download"></i></a>`; |
|
deleteLink = `<a class="delete-task" href="${requestedUrl}/delete?filename=${file.name}"><i class="fa fa-times"></i></a>`; |
|
} |
|
resp.rows.push([ |
|
status.time, |
|
status.user, |
|
status.datasourceName, |
|
status.exportedRows, |
|
status.progress, |
|
downloadLink, |
|
status.status, |
|
deleteLink |
|
]); |
|
} |
|
|
|
res.status(200).send([resp]); |
|
} |
|
}) |
|
} |
|
|
|
} |
|
|
|
function sendAnnotations(req, res) { |
|
res.status(200).send([]); |
|
} |
|
|
|
export const router = express.Router(); |
|
|
|
router.get('/', sendOk); |
|
router.post('/search', search); |
|
router.post('/query', query); |
|
router.post('/annotations', sendAnnotations); |
|
|
|
|