From 01c3dc9985ceacabe9cf476ad48f4bc1548673f2 Mon Sep 17 00:00:00 2001
From: Thomas Schneider <qsx@chaotikum.eu>
Date: Sat, 8 Feb 2020 21:22:24 +0100
Subject: [PATCH] Add datatables

---
 Gemfile                                 | 2 ++
 Gemfile.lock                            | 7 +++++++
 app/assets/config/manifest.js           | 1 +
 app/assets/javascripts/application.js   | 5 +++++
 app/assets/javascripts/datatables.js    | 8 ++++++++
 app/assets/stylesheets/application.scss | 1 +
 app/assets/stylesheets/datatables.scss  | 3 +++
 app/views/layouts/application.html.haml | 1 +
 app/views/users/index.html.haml         | 2 +-
 9 files changed, 29 insertions(+), 1 deletion(-)
 create mode 100644 app/assets/javascripts/application.js
 create mode 100644 app/assets/javascripts/datatables.js
 create mode 100644 app/assets/stylesheets/datatables.scss

diff --git a/Gemfile b/Gemfile
index d58b8e4..0a46bf1 100644
--- a/Gemfile
+++ b/Gemfile
@@ -29,6 +29,8 @@ gem 'font-awesome-sass', '~> 5.12.0'
 
 gem 'activeldap', '~> 5.2', '>= 5.2.4', :require => 'active_ldap/railtie'
 gem 'net-ldap', '~> 0.16.2'
+gem 'jquery-rails', '~> 4.3', '>= 4.3.5'
+gem 'jquery-datatables', '~> 1.10', '>= 1.10.20'
 
 # Reduces boot times through caching; required in config/boot.rb
 gem 'bootsnap', '>= 1.4.2', require: false
diff --git a/Gemfile.lock b/Gemfile.lock
index c90d61e..fae8823 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -126,6 +126,11 @@ GEM
     jaro_winkler (1.5.4-java)
     jbuilder (2.9.1)
       activesupport (>= 4.2.0)
+    jquery-datatables (1.10.20)
+    jquery-rails (4.3.5)
+      rails-dom-testing (>= 1, < 3)
+      railties (>= 4.2.0)
+      thor (>= 0.14, < 2.0)
     listen (3.1.5)
       rb-fsevent (~> 0.9, >= 0.9.4)
       rb-inotify (~> 0.9, >= 0.9.7)
@@ -290,6 +295,8 @@ DEPENDENCIES
   font-awesome-sass (~> 5.12.0)
   haml-rails (~> 2.0)
   jbuilder (~> 2.7)
+  jquery-datatables (~> 1.10, >= 1.10.20)
+  jquery-rails (~> 4.3, >= 4.3.5)
   listen (>= 3.0.5, < 3.2)
   net-ldap (~> 0.16.2)
   pg (>= 0.18, < 2.0)
diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js
index 5918193..7d52bcf 100644
--- a/app/assets/config/manifest.js
+++ b/app/assets/config/manifest.js
@@ -1,2 +1,3 @@
 //= link_tree ../images
 //= link_directory ../stylesheets .css
+//= link_directory ../javascripts .js
diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js
new file mode 100644
index 0000000..d079a31
--- /dev/null
+++ b/app/assets/javascripts/application.js
@@ -0,0 +1,5 @@
+//= require jquery
+//= require datatables
+$(document).ready(function() {
+	$('#dttb').DataTable();
+});
diff --git a/app/assets/javascripts/datatables.js b/app/assets/javascripts/datatables.js
new file mode 100644
index 0000000..6aaa6f5
--- /dev/null
+++ b/app/assets/javascripts/datatables.js
@@ -0,0 +1,8 @@
+// Core component
+//= require datatables/jquery.dataTables
+// Bootstrap4 theme
+//= require datatables/dataTables.bootstrap4
+
+// Optional Datatables extensions
+//= require datatables/extensions/Responsive/dataTables.responsive
+//= require datatables/extensions/Responsive/responsive.bootstrap4
diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss
index 4b4bd01..e72c227 100644
--- a/app/assets/stylesheets/application.scss
+++ b/app/assets/stylesheets/application.scss
@@ -1,4 +1,5 @@
 @import "font-awesome-sprockets";
 @import "font-awesome";
+@import 'datatables';
 // Custom bootstrap variables must be set or imported *before* bootstrap.
 @import "bootstrap";
diff --git a/app/assets/stylesheets/datatables.scss b/app/assets/stylesheets/datatables.scss
new file mode 100644
index 0000000..94e3aca
--- /dev/null
+++ b/app/assets/stylesheets/datatables.scss
@@ -0,0 +1,3 @@
+@import 'datatables/dataTables.bootstrap4';
+@import 'datatables/extensions/Responsive/responsive.bootstrap4';
+@import 'datatables/extensions/Buttons/buttons.bootstrap4';
diff --git a/app/views/layouts/application.html.haml b/app/views/layouts/application.html.haml
index fc72423..3c8a863 100644
--- a/app/views/layouts/application.html.haml
+++ b/app/views/layouts/application.html.haml
@@ -6,6 +6,7 @@
     = csrf_meta_tags
     = csp_meta_tag
     = stylesheet_link_tag    'application', media: 'all'
+    = javascript_include_tag 'application', data_turbolinks_track: 'reload'
   %body
     %nav.navbar.navbar-dark.bg-dark.static-top.navbar-expand-lg
       .container
diff --git a/app/views/users/index.html.haml b/app/views/users/index.html.haml
index 631a5a1..86db768 100644
--- a/app/views/users/index.html.haml
+++ b/app/views/users/index.html.haml
@@ -1,4 +1,4 @@
-%table.table.table-striped
+%table.table.table-striped#dttb
   %caption List of users
   %thead
     %tr
-- 
GitLab