Browse Source

fixed image,volume,networks form submit.
added selectAll to permissions modal.

lllllllillllllillll 1 năm trước cách đây
mục cha
commit
003db6d7d1

+ 9 - 9
components/permissions_modal.js

@@ -37,7 +37,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="all">
+                                <input class="form-check-input" type="checkbox" name="select" onclick="selectAll('select')">
                               </label>
                             </div>
                           </div>
@@ -52,7 +52,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="uninstall">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -67,7 +67,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="edit">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -82,7 +82,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="upgrade">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -97,7 +97,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="start">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -112,7 +112,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="stop">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -127,7 +127,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="pause">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -142,7 +142,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="restart">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>
@@ -158,7 +158,7 @@ export const permissionsModal = (data) => {
                             </div>
                             <div class="col-3">
                               <label class="form-check form-check-single form-switch text-end">
-                                <input class="form-check-input" type="checkbox" name="logs">
+                                <input class="form-check-input" type="checkbox" name="select">
                               </label>
                             </div>
                           </div>

+ 1 - 1
controllers/dashboard.js

@@ -12,7 +12,7 @@ export const Dashboard = (req, res) => {
 
 export const searchDashboard = (req, res) => {
 
-    console.log(req.params);
+    // console.log(req.params);
 
     res.render("dashboard", {
         name: req.session.user,

+ 5 - 4
controllers/images.js

@@ -6,10 +6,6 @@ export const Images = async function(req, res) {
 
     let image_list = `
     <thead>
-        <!-- Hidden checkbox so that the form returns an array each time -->
-        <tr class="d-none">
-            <td><input class="form-check-input m-0 align-middle" name="select" value="on" type="checkbox" checked="" aria-label="Select"></td>
-        </tr>
         <tr>
             <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
             <th><button class="table-sort" data-sort="sort-name">Name</button></th>
@@ -63,6 +59,11 @@ export const Images = async function(req, res) {
 
 export const removeImage = async function(req, res) {
     let images = req.body.select;
+
+    if (typeof(images) == 'string') {
+        images = [images];
+    }
+
     for (let i = 0; i < images.length; i++) {
         
         if (images[i] != 'on') {

+ 5 - 4
controllers/networks.js

@@ -7,10 +7,6 @@ export const Networks = async function(req, res) {
 
     let network_list = `
         <thead>
-            <!-- Hidden checkbox so that the form returns an array each time -->
-            <tr class="d-none">
-                <td><input class="form-check-input m-0 align-middle" name="select" value="on" type="checkbox" checked="" aria-label="Select"></td>
-            </tr>
             <tr>
                 <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
                 <th><button class="table-sort" data-sort="sort-name">Name</button></th>
@@ -56,6 +52,11 @@ export const Networks = async function(req, res) {
 
 export const removeNetwork = async function(req, res) {
     let networks = req.body.select;
+
+    if (typeof(networks) == 'string') {
+        networks = [networks];
+    }
+
     for (let i = 0; i < networks.length; i++) {
         
         if (networks[i] != 'on') {

+ 5 - 4
controllers/volumes.js

@@ -8,10 +8,6 @@ export const Volumes = async function(req, res) {
 
     let volume_list = `
     <thead>
-        <!-- Hidden checkbox so that the form returns an array each time -->
-        <tr class="d-none">
-            <td><input class="form-check-input m-0 align-middle" name="select" value="on" type="checkbox" checked="" aria-label="Select"></td>
-        </tr>
         <tr>
             <th class="w-1"><input class="form-check-input m-0 align-middle" name="select" type="checkbox" aria-label="Select all" onclick="selectAll()"></th>
             <th><button class="table-sort" data-sort="sort-name">Name</button></th>
@@ -86,6 +82,10 @@ export const createVolume = async function(req, res) {
 
 export const removeVolume = async function(req, res) {
     let volumes = req.body.select;
+    
+    if (typeof(volumes) == 'string') {
+        volumes = [volumes];
+    }
 
     for (let i = 0; i < volumes.length; i++) {
         
@@ -99,5 +99,6 @@ export const removeVolume = async function(req, res) {
             }
         }
     }
+
     res.redirect("/volumes");
 }

+ 25 - 23
functions/install.js

@@ -171,38 +171,40 @@ export const Install = async (req, res) => {
                 mkdirSync(`./appdata/${name}`, { recursive: true });
                 writeFileSync(`./appdata/${name}/docker-compose.yml`, compose_file, function (err) { console.log(err) });
 
-            } catch { console.log('error creating directory or compose file') }
+            } catch { 
+                const syslog = await Syslog.create({
+                    user: req.session.user,
+                    email: null,
+                    event: "App Installation",
+                    message: `${name} installation failed - error creating directory or compose file : ${err}`,
+                    ip: req.socket.remoteAddress
+                });
+             }
 
             var compose = new DockerodeCompose(docker, `./appdata/${name}/docker-compose.yml`, `${name}`);
 
-            (async () => {
-                try {
+            try {
+                (async () => {
                     await compose.pull();
-                    await compose.up().then(() => {
-                        const syslog = Syslog.create({
-                            user: req.session.user,
-                            email: null,
-                            event: "App Installation",
-                            message: `${name} installed successfully`,
-                            ip: req.socket.remoteAddress
-                        });
-                    });
-                } catch (err) {
-                    console.error(err);
+                    await compose.up();
+
                     const syslog = await Syslog.create({
                         user: req.session.user,
                         email: null,
                         event: "App Installation",
-                        message: `${name} installation failed: ${err}`,
+                        message: `${name} installed successfully`,
                         ip: req.socket.remoteAddress
-                    });
-                }
-            })();
+                    });  
+                })();
+            } catch (err) {
+                const syslog = await Syslog.create({
+                    user: req.session.user,
+                    email: null,
+                    event: "App Installation",
+                    message: `${name} installation failed: ${err}`,
+                    ip: req.socket.remoteAddress
+                });
+            }
         }
-
-
     res.redirect('/');
-
 }
-
-

+ 2 - 2
server.js

@@ -18,6 +18,7 @@ const port = process.env.PORT || 8000;
 let [ hidden, activeEvent, cardList, clicked ] = ['', '', '', false];
 let sentList = '';
 let SSE = false;
+app.locals.installCard = '';
 let thanks = 0;
 
 // Session middleware
@@ -314,7 +315,7 @@ router.get('/modal', async (req, res) => {
 
     if (id == 'permissions') {
         let containerPermissions = await Permission.findAll({ where: {containerName: name}});
-        console.log(containerPermissions);
+
 
         let form = permissionsModal();
         res.send(form);
@@ -387,7 +388,6 @@ router.get('/chart', async (req, res) => {
 
 
 router.get('/thank', async (req, res) => {
-    let name = req.header('hx-trigger-name');
     thanks++;
     let data = thanks.toString();
     if (thanks > 999) {

+ 16 - 1
views/dashboard.html

@@ -202,7 +202,7 @@
             enabled: true
           },
           animations: {
-            enabled: true
+            enabled: false
           }
         },
         fill: {
@@ -248,6 +248,21 @@
         }
     }
   </script>
+  <script>
+    function selectAll(group) {
+      
+      let checkboxes = document.getElementsByName(group);
+      if (checkboxes[0].checked == true) {
+        for (var i = 0; i < checkboxes.length; i++) {
+          checkboxes[i].checked = true;
+        }
+      } else {
+        for (var i = 0; i < checkboxes.length; i++) {
+          checkboxes[i].checked = false;
+        }
+      }
+    }
+  </script>
 
   </body>
 </html>

+ 3 - 4
views/images.html

@@ -100,13 +100,12 @@
     <script>
       function selectAll() {
         let checkboxes = document.getElementsByName('select');
-        // loops start at 1 to ignore the hidden checkbox
-        if (checkboxes[1].checked == true) {
-          for (var i = 1; i < checkboxes.length; i++) {
+        if (checkboxes[0].checked == true) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = true;
           }
         } else {
-          for (var i = 1; i < checkboxes.length; i++) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = false;
           }
         }

+ 3 - 4
views/networks.html

@@ -115,13 +115,12 @@
     <script>
       function selectAll() {
         let checkboxes = document.getElementsByName('select');
-        // loops start at 1 to ignore the hidden checkbox
-        if (checkboxes[1].checked == true) {
-          for (var i = 1; i < checkboxes.length; i++) {
+        if (checkboxes[0].checked == true) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = true;
           }
         } else {
-          for (var i = 1; i < checkboxes.length; i++) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = false;
           }
         }

+ 3 - 4
views/volumes.html

@@ -114,13 +114,12 @@
     <script>
       function selectAll() {
         let checkboxes = document.getElementsByName('select');
-        // loops start at 1 to ignore the hidden checkbox
-        if (checkboxes[1].checked == true) {
-          for (var i = 1; i < checkboxes.length; i++) {
+        if (checkboxes[0].checked == true) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = true;
           }
         } else {
-          for (var i = 1; i < checkboxes.length; i++) {
+          for (var i = 0; i < checkboxes.length; i++) {
             checkboxes[i].checked = false;
           }
         }