]> git.immae.eu Git - perso/Immae/Projets/Nodejs/Surfer.git/commitdiff
Set autofocus and add basic error handling
authorJohannes Zellner <johannes@nebulon.de>
Tue, 1 Mar 2016 18:15:52 +0000 (19:15 +0100)
committerJohannes Zellner <johannes@nebulon.de>
Tue, 1 Mar 2016 18:15:52 +0000 (19:15 +0100)
app/index.html
app/js/app.js

index f6561a3755c93749e14327961aba70fb4e3a617f..803568c569698f0f59a4ab1b09e7d9e1ef65acf9 100644 (file)
@@ -60,8 +60,9 @@
                 </div>
                 <div class="modal-body">
                     <form v-on:submit.prevent="createDirectory(createDirectoryData)">
                 </div>
                 <div class="modal-body">
                     <form v-on:submit.prevent="createDirectory(createDirectoryData)">
-                        <div class="form-group">
-                            <input type="text" class="form-control" v-model="createDirectoryData" placeholder="Name">
+                        <div class="form-group" v-bind:class="{ 'has-error': createDirectoryError }">
+                            <input type="text" class="form-control" v-model="createDirectoryData" id="inputDirectoryName" placeholder="Name" autofocus="true">
+                            <label class="control-label" for="inputDirectoryName">{{ createDirectoryError }}</label>
                         </div>
                         <button type="submit" style="display: none;"></button>
                     </form>
                         </div>
                         <button type="submit" style="display: none;"></button>
                     </form>
index 228184d313d3588ba1baa8f996e3f5b578670abc..6017d25f1cec740943d3cb97ddfb69d41ec0ae18 100644 (file)
@@ -82,8 +82,8 @@ function loadDirectory(filePath) {
     superagent.get('/api/files/' + filePath).query({ username: app.session.username, password: app.session.password }).end(function (error, result) {
         app.busy = false;
 
     superagent.get('/api/files/' + filePath).query({ username: app.session.username, password: app.session.password }).end(function (error, result) {
         app.busy = false;
 
+        if (result && result.statusCode === 401) return logout();
         if (error) return console.error(error);
         if (error) return console.error(error);
-        if (result.statusCode === 401) return logout();
 
         result.body.entries.sort(function (a, b) { return a.isDirectory && b.isFile ? -1 : 1; });
         app.entries = result.body.entries.map(function (entry) {
 
         result.body.entries.sort(function (a, b) { return a.isDirectory && b.isFile ? -1 : 1; });
         app.entries = result.body.entries.map(function (entry) {
@@ -135,8 +135,9 @@ function upload() {
         superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) {
             app.busy = false;
 
         superagent.put('/api/files' + path).query({ username: app.session.username, password: app.session.password }).send(formData).end(function (error, result) {
             app.busy = false;
 
+            if (result && result.statusCode === 401) return logout();
+            if (result && result.statusCode !== 201) return console.error('Error uploading file: ', result.statusCode);
             if (error) return console.error(error);
             if (error) return console.error(error);
-            if (result.statusCode !== 201) return console.error('Error uploading file: ', result.statusCode);
 
             refresh();
         });
 
             refresh();
         });
@@ -158,8 +159,9 @@ function del(entry) {
     superagent.del('/api/files' + path).query({ username: app.session.username, password: app.session.password, recursive: true }).end(function (error, result) {
         app.busy = false;
 
     superagent.del('/api/files' + path).query({ username: app.session.username, password: app.session.password, recursive: true }).end(function (error, result) {
         app.busy = false;
 
+        if (result && result.statusCode === 401) return logout();
+        if (result && result.statusCode !== 200) return console.error('Error deleting file: ', result.statusCode);
         if (error) return console.error(error);
         if (error) return console.error(error);
-        if (result.statusCode !== 200) return console.error('Error deleting file: ', result.statusCode);
 
         refresh();
 
 
         refresh();
 
@@ -170,18 +172,29 @@ function del(entry) {
 function createDirectoryAsk() {
     $('#modalcreateDirectory').modal('show');
     app.createDirectoryData = '';
 function createDirectoryAsk() {
     $('#modalcreateDirectory').modal('show');
     app.createDirectoryData = '';
+    app.createDirectoryError = null;
 }
 
 function createDirectory(name) {
     app.busy = true;
 }
 
 function createDirectory(name) {
     app.busy = true;
+    app.createDirectoryError = null;
 
     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) {
         app.busy = false;
 
 
     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) {
         app.busy = false;
 
+        if (result && result.statusCode === 401) return logout();
+        if (result && result.statusCode === 403) {
+            app.createDirectoryError = 'Name not allowed';
+            return;
+        }
+        if (result && result.statusCode === 409) {
+            app.createDirectoryError = 'Directory already exists';
+            return;
+        }
+        if (result && result.statusCode !== 201) return console.error('Error creating directory: ', result.statusCode);
         if (error) return console.error(error);
         if (error) return console.error(error);
-        if (result.statusCode !== 201) return console.error('Error creating directory: ', result.statusCode);
 
         app.createDirectoryData = '';
         refresh();
 
         app.createDirectoryData = '';
         refresh();
@@ -211,6 +224,7 @@ var app = new Vue({
         loginData: {},
         deleteData: {},
         createDirectoryData: '',
         loginData: {},
         deleteData: {},
         createDirectoryData: '',
+        createDirectoryError: null,
         entries: []
     },
     methods: {
         entries: []
     },
     methods: {
@@ -227,10 +241,19 @@ var app = new Vue({
     }
 });
 
     }
 });
 
+window.app = app;
+
 login(localStorage.username, localStorage.password);
 
 $(window).on('hashchange', function () {
     loadDirectory(window.location.hash.slice(1));
 });
 
 login(localStorage.username, localStorage.password);
 
 $(window).on('hashchange', function () {
     loadDirectory(window.location.hash.slice(1));
 });
 
+// setup all the dialog focus handling
+['modalcreateDirectory'].forEach(function (id) {
+    $('#' + id).on('shown.bs.modal', function () {
+        $(this).find("[autofocus]:first").focus();
+    });
+});
+
 })();
 })();