From 5a3aa5593b159562900ddb666f856a5e233a2f6d Mon Sep 17 00:00:00 2001
From: charclayt <ukfeature@gmail.com>
Date: Sat, 8 Apr 2023 19:09:26 +0100
Subject: [PATCH] Added responsiveness to dashboard DataTable

DataTable displays number of rows that can fit on screen.
When row is clicked, modal is displayed to show all info.
---
 src/data.js    | 21 +++++++++++++++++++++
 src/index.html |  6 +++++-
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/src/data.js b/src/data.js
index 89fd6b52..5a85987f 100644
--- a/src/data.js
+++ b/src/data.js
@@ -35,7 +35,26 @@ function displayDataTable(data){
             pagingType: 'full_numbers',
             stateSave: true,
             lengthChange: false,
+            bAutoWidth: false,
             searching: false,
+            drawCallback: function() {
+                $($.fn.dataTable.tables(true)).DataTable().responsive.recalc();
+            },
+            responsive: {
+                details: {
+                    type: 'column',
+                    target: 'tr',
+                    display: $.fn.dataTable.Responsive.display.modal( {
+                        header: function ( row ) {
+                            var data = row.data();
+                            return 'Details for patient '+data.patient_id;
+                        }
+                    }),
+                    renderer: $.fn.dataTable.Responsive.renderer.tableAll( {
+                        tableClass: 'table'
+                    })
+                }
+            },
             "columns": [
             { "data": "patient_id",
             "defaultContent": "NULL"},
@@ -75,6 +94,8 @@ function displayDataTable(data){
             "defaultContent": "NULL"},
             // { data: "user_id" }
             ]
+        }).on( 'select', function ( e, dt, type, indexes ) {
+            //if not responsive view launch responsive modal
         });
     // })
 }
\ No newline at end of file
diff --git a/src/index.html b/src/index.html
index 1ce6b10c..4a13ed9a 100644
--- a/src/index.html
+++ b/src/index.html
@@ -6,10 +6,14 @@
         <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
         
         <link rel="stylesheet" href="https://cdn.datatables.net/1.13.4/css/jquery.dataTables.css" />
-  
         <script src="https://cdn.datatables.net/1.13.4/js/jquery.dataTables.js"></script>
+
+        <link rel="stylesheet" href="https://cdn.datatables.net/responsive/2.4.1/css/responsive.dataTables.min.css">
+        <script src="https://cdn.datatables.net/responsive/2.4.1/js/dataTables.responsive.min.js"></script>
+        
         <script type="text/javascript" src="data.js"></script>
         <link rel="stylesheet" href="index.css" />
+        
         <link rel="stylesheet" href="../node_modules/bootstrap/dist/css/bootstrap.min.css">
         <link rel="stylesheet" href="../node_modules/bootstrap-icons/font/bootstrap-icons.css">
     </head>
-- 
GitLab