X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=frontend%2Fjs%2Fapp.js;h=078473a9516e55901bdcd621bdbb76ef0e433009;hb=e628921a338684a4bc3f196c5c39beba8b8f9b68;hp=9a2e532c5533e8eb5f9b40602923b3d8c37d9843;hpb=95e5eb9f0fa59001bc6ffd2baa4ddfd861e40122;p=perso%2FImmae%2FProjets%2FNodejs%2FSurfer.git diff --git a/frontend/js/app.js b/frontend/js/app.js index 9a2e532..078473a 100644 --- a/frontend/js/app.js +++ b/frontend/js/app.js @@ -124,13 +124,16 @@ function up() { function upload() { $(app.$els.upload).on('change', function () { - app.busy = true; // detach event handler $(app.$els.upload).off('change'); - var length = app.$els.upload.files.length; - var done = 0; + app.uploadStatus = { + busy: true, + count: app.$els.upload.files.length, + done: 0, + percentDone: 0 + }; function uploadFile(file) { var path = encode(sanitize(app.path + '/' + file.name)); @@ -138,21 +141,28 @@ function upload() { var formData = new FormData(); formData.append('file', file); - superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) { + superagent.post('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) { if (result && result.statusCode === 401) return logout(); if (result && result.statusCode !== 201) console.error('Error uploading file: ', result.statusCode); if (error) console.error(error); - ++done; + app.uploadStatus.done += 1; + app.uploadStatus.percentDone = Math.round(app.uploadStatus.done / app.uploadStatus.count * 100); + + if (app.uploadStatus.done >= app.uploadStatus.count) { + app.uploadStatus = { + busy: false, + count: 0, + done: 0, + percentDone: 100 + }; - if (done >= length) { - app.busy = false; refresh(); } }); } - for(var i = 0; i < length; i++) { + for(var i = 0; i < app.uploadStatus.count; ++i) { uploadFile(app.$els.upload.files[i]); } }); @@ -186,6 +196,33 @@ function del(entry) { }); } +function renameAsk(entry) { + app.renameData.entry = entry; + app.renameData.error = null; + app.renameData.newFilePath = entry.filePath; + + $('#modalRename').modal('show'); +} + +function rename(data) { + app.busy = true; + + var path = encode(sanitize(app.path + '/' + data.entry.filePath)); + var newFilePath = sanitize(app.path + '/' + data.newFilePath); + + superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send({ newFilePath: newFilePath }).end(function (error, result) { + app.busy = false; + + if (result && result.statusCode === 401) return logout(); + if (result && result.statusCode !== 200) return console.error('Error renaming file: ', result.statusCode); + if (error) return console.error(error); + + refresh(); + + $('#modalRename').modal('hide'); + }); +} + function createDirectoryAsk() { $('#modalcreateDirectory').modal('show'); app.createDirectoryData = ''; @@ -198,7 +235,7 @@ function createDirectory(name) { var path = encode(sanitize(app.path + '/' + name)); - superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password, directory: true }).end(function (error, result) { + superagent.post('/api/files' + path).query({ username: app.session.username, password: app.session.password, directory: true }).end(function (error, result) { app.busy = false; if (result && result.statusCode === 401) return logout(); @@ -233,6 +270,12 @@ var app = new Vue({ el: '#app', data: { busy: true, + uploadStatus: { + busy: false, + count: 0, + done: 0, + percentDone: 50 + }, path: '/', pathParts: [], session: { @@ -240,6 +283,11 @@ var app = new Vue({ }, loginData: {}, deleteData: {}, + renameData: { + entry: {}, + error: null, + newFilePath: '' + }, createDirectoryData: '', createDirectoryError: null, entries: [] @@ -253,6 +301,8 @@ var app = new Vue({ upload: upload, delAsk: delAsk, del: del, + renameAsk: renameAsk, + rename: rename, createDirectoryAsk: createDirectoryAsk, createDirectory: createDirectory }