Compare commits

...

2 Commits

Author SHA1 Message Date
oat 6b07ef943d
fix up html formatting 2020-10-12 01:24:33 +03:00
oat 73d5962c5c
file uploading, now with the actual file 2020-10-12 01:21:32 +03:00
7 changed files with 58 additions and 54 deletions

3
.gitignore vendored
View File

@ -3,4 +3,5 @@ node_modules
built built
config/config.json config/config.json
*.log *.log
.env .env
storage/files/*

View File

@ -1,14 +1,14 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Index</title> <title>Index</title>
</head> </head>
<body> <body>
<h1>Hi</h1> <h1>Hi</h1>
</body> </body>
</html> </html>

View File

@ -1,37 +1,37 @@
<!DOCTYPE html> <!DOCTYPE html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>list</title> <title>list</title>
</head> </head>
<body> <body>
<div id="doc-list"> <div id="doc-list">
</div> </div>
<script src="https://cdn.jsdelivr.net/npm/axios@0.20.0/dist/axios.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/axios@0.20.0/dist/axios.min.js"></script>
<script> <script>
axios.get('/api/list').then(({ data }) => { axios.get('/api/list').then(({ data }) => {
console.log(data); console.log(data);
const el = document.getElementById('doc-list'); const el = document.getElementById('doc-list');
for (const doc of data) { for (const doc of data) {
let p = document.createElement('p'); let p = document.createElement('p');
p.innerText = `${doc.artist} - ${doc.title} by ${doc.credit}`; p.innerHTML = `${doc.artist} - ${doc.title} by ${doc.credit} <a href="files/${doc.id}.zip">download</a>`;
el.insertAdjacentElement('beforeend', p); el.insertAdjacentElement('beforeend', p);
let charts = document.createElement('ul'); let charts = document.createElement('ul');
for (const chart of doc.charts) { for (const chart of doc.charts) {
let l = document.createElement('li'); let l = document.createElement('li');
l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}\n` + l.innerText = `${chart.difficulty} ${chart.rating} - ${chart.name}\n` +
`${chart.steps} steps, ${chart.mines} mines, ${chart.jumps} jumps, ${chart.hands} hands, ${chart.holds} holds, ${chart.rolls} rolls` `${chart.steps} steps, ${chart.mines} mines, ${chart.jumps} jumps, ${chart.hands} hands, ${chart.holds} holds, ${chart.rolls} rolls`
charts.insertAdjacentElement('beforeend', l); charts.insertAdjacentElement('beforeend', l);
} }
el.insertAdjacentElement('beforeend', charts); el.insertAdjacentElement('beforeend', charts);
} }
}); });
</script> </script>
</body> </body>
</html> </html>

View File

@ -19,7 +19,7 @@
const file = document.getElementById('file'); const file = document.getElementById('file');
if (file.files.length) { if (file.files.length) {
console.log(file.files[0]); console.log(file.files[0]);
const formData = new FormData(); const formData = new FormData();
formData.append('file', file.files[0]); formData.append('file', file.files[0]);
try { try {

View File

@ -54,6 +54,7 @@ db.then(() => {
app.use(express.urlencoded({extended: true})); app.use(express.urlencoded({extended: true}));
app.use(fileUpload({limits: { fileSize: 50 * 1024 * 1024 }})); app.use(fileUpload({limits: { fileSize: 50 * 1024 * 1024 }}));
app.use(express.static('public', {extensions: ['html', 'htm']})); app.use(express.static('public', {extensions: ['html', 'htm']}));
app.use(express.static('storage', {extensions: ['zip']}));
app.use('/assets', express.static('assets')); app.use('/assets', express.static('assets'));
app.set('db', db); app.set('db', db);

View File

@ -1,10 +0,0 @@
import * as fs from 'fs';
export function returnStatic(page) {
return (req, res) => {
fs.readFile(`src/html/${page}`, 'utf8', (err, data) => {
if (err) throw err;
res.send(data);
});
};
}

View File

@ -23,7 +23,7 @@ export function run(app) {
storeEntries: true storeEntries: true
}); });
zip.on('ready', () => { zip.on('ready', async () => {
const smFile = Object.values(zip.entries()).find((f: any) => const smFile = Object.values(zip.entries()).find((f: any) =>
!f.isDirectory && (f.name.endsWith('.sm')) !f.isDirectory && (f.name.endsWith('.sm'))
); );
@ -36,11 +36,23 @@ export function run(app) {
logger.info(`${chart.artist} - ${chart.title} was just uploaded`); logger.info(`${chart.artist} - ${chart.title} was just uploaded`);
const file = new File(chart); let id = 0;
file.save(); for (const f of await File.find({})) {
id = Math.max(f.id, id);
}
chart.id = id + 1;
// TODO: filter out _id and __v? possibly more chart.createdAt = new Date();
res.send(chart);
fs.writeFile('./storage/files/' + (id + 1) + '.zip', file.data, (err) => {
if (err) throw err;
const file = new File(chart);
file.save();
// TODO: filter out _id and __v? possibly more
res.send(chart);
});
} }
zip.close(); zip.close();