swop 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/rails_admin/application.js.erb +3 -2
  3. data/app/assets/javascripts/rails_admin/custom/abstract-select.js +30 -0
  4. data/app/assets/javascripts/rails_admin/custom/filter-box.js +363 -0
  5. data/app/assets/javascripts/rails_admin/custom/filtering-multiselect.js +387 -0
  6. data/app/assets/javascripts/rails_admin/custom/filtering-select.js +1 -1
  7. data/app/assets/stylesheets/rails_admin/application.scss.erb +19 -33
  8. data/app/assets/stylesheets/rails_admin/{custom → themes}/base/base.scss +4 -0
  9. data/app/assets/stylesheets/rails_admin/themes/base/bootstrap-variables.scss +252 -0
  10. data/app/assets/stylesheets/rails_admin/{custom → themes}/base/mixins.scss +0 -16
  11. data/app/assets/stylesheets/rails_admin/themes/base/theming.scss +22 -0
  12. data/app/assets/stylesheets/rails_admin/themes/base/variables.scss +71 -0
  13. data/app/assets/stylesheets/rails_admin/themes/simple/base/typography.scss +22 -0
  14. data/app/assets/stylesheets/rails_admin/themes/simple/base/variables-dark.scss +74 -0
  15. data/app/assets/stylesheets/rails_admin/themes/simple/base/variables-light.scss +77 -0
  16. data/app/assets/stylesheets/rails_admin/themes/simple/base/variables-navy.scss +74 -0
  17. data/app/assets/stylesheets/rails_admin/themes/simple/base/variables.scss +129 -0
  18. data/app/assets/stylesheets/rails_admin/themes/simple/components/alerts.scss +88 -0
  19. data/app/assets/stylesheets/rails_admin/themes/simple/components/breadcrumbs.scss +44 -0
  20. data/app/assets/stylesheets/rails_admin/themes/simple/components/buttons.scss +138 -0
  21. data/app/assets/stylesheets/rails_admin/themes/simple/components/containers.scss +15 -0
  22. data/app/assets/stylesheets/rails_admin/themes/simple/components/dropdowns.scss +12 -0
  23. data/app/assets/stylesheets/rails_admin/themes/simple/components/filter-box.scss +8 -0
  24. data/app/assets/stylesheets/rails_admin/themes/simple/components/filtering-multiselect.scss +40 -0
  25. data/app/assets/stylesheets/rails_admin/themes/simple/components/filtering-select.scss +42 -0
  26. data/app/assets/stylesheets/rails_admin/{custom → themes/simple}/components/forms.scss +4 -2
  27. data/app/assets/stylesheets/rails_admin/{custom → themes/simple}/components/images.scss +4 -6
  28. data/app/assets/stylesheets/rails_admin/themes/simple/components/links.scss +25 -0
  29. data/app/assets/stylesheets/rails_admin/themes/simple/components/navs.scss +73 -0
  30. data/app/assets/stylesheets/rails_admin/themes/simple/components/progress.scss +4 -0
  31. data/app/assets/stylesheets/rails_admin/themes/simple/components/sidebar.scss +84 -0
  32. data/app/assets/stylesheets/rails_admin/themes/simple/components/tables.scss +84 -0
  33. data/app/assets/stylesheets/rails_admin/themes/simple/layouts/rows.scss +34 -0
  34. data/app/assets/stylesheets/rails_admin/themes/simple/light/components/links.scss +15 -0
  35. data/app/assets/stylesheets/rails_admin/themes/simple/light/components/sidebar.scss +25 -0
  36. data/app/assets/stylesheets/rails_admin/themes/simple.scss.erb +37 -0
  37. data/app/helpers/rails_admin/application_helper.rb +34 -46
  38. data/app/helpers/rails_admin/form_builder.rb +166 -0
  39. data/app/views/layouts/rails_admin/_custom_navigation.html.erb +10 -0
  40. data/app/views/layouts/rails_admin/_head.html.erb +32 -0
  41. data/app/views/layouts/rails_admin/_header.html.erb +43 -0
  42. data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +3 -1
  43. data/app/views/layouts/rails_admin/application.html.erb +15 -12
  44. data/app/views/layouts/rails_admin/content.html.erb +6 -51
  45. data/app/views/rails_admin/main/_form_polymorphic_association.html.erb +15 -0
  46. data/app/views/rails_admin/main/_submit_buttons.html.erb +22 -18
  47. data/app/views/rails_admin/main/dashboard.html.erb +49 -55
  48. data/app/views/rails_admin/main/export.html.erb +23 -23
  49. data/app/views/rails_admin/main/history.html.erb +87 -0
  50. data/app/views/rails_admin/main/index.html.erb +60 -56
  51. data/app/views/rails_admin/main/show.html.erb +15 -23
  52. data/config/locales/rails_admin.en.yml +158 -0
  53. data/lib/swop/version.rb +1 -1
  54. data/lib/swop.rb +1 -0
  55. metadata +41 -28
  56. data/app/assets/javascripts/rails_admin/custom/sidescroll.js +0 -20
  57. data/app/assets/javascripts/rails_admin/custom/ui.js +0 -11
  58. data/app/assets/stylesheets/rails_admin/custom/base/bootstrap-variables.scss +0 -196
  59. data/app/assets/stylesheets/rails_admin/custom/base/typography.scss +0 -16
  60. data/app/assets/stylesheets/rails_admin/custom/base/variables.scss +0 -86
  61. data/app/assets/stylesheets/rails_admin/custom/components/breadcrumbs.scss +0 -18
  62. data/app/assets/stylesheets/rails_admin/custom/components/buttons.scss +0 -55
  63. data/app/assets/stylesheets/rails_admin/custom/components/dropdowns.scss +0 -40
  64. data/app/assets/stylesheets/rails_admin/custom/components/filtering-select.scss +0 -43
  65. data/app/assets/stylesheets/rails_admin/custom/components/navbar.scss +0 -18
  66. data/app/assets/stylesheets/rails_admin/custom/components/navs.scss +0 -28
  67. data/app/assets/stylesheets/rails_admin/custom/components/offcanvas.scss +0 -18
  68. data/app/assets/stylesheets/rails_admin/custom/components/progress.scss +0 -11
  69. data/app/assets/stylesheets/rails_admin/custom/components/sidebar.scss +0 -115
  70. data/app/assets/stylesheets/rails_admin/custom/components/table.scss +0 -59
  71. data/app/assets/stylesheets/rails_admin/custom/components/tiles.scss +0 -20
  72. data/app/assets/stylesheets/rails_admin/custom/layouts/body.scss +0 -10
  73. data/app/assets/stylesheets/rails_admin/custom/layouts/containers.scss +0 -31
  74. data/app/views/layouts/rails_admin/custom/_nav.html.erb +0 -10
  75. data/app/views/rails_admin/main/delete.html.erb +0 -19
  76. data/app/views/rails_admin/main/edit.html.erb +0 -5
  77. data/app/views/rails_admin/main/new.html.erb +0 -5
@@ -1 +1,3 @@
1
- <%= render partial: "layouts/rails_admin/custom/nav" %>
1
+ <ul class="sidebar list-unstyled py-4 py-md-6 py-lg-7 mb-0">
2
+ <%= render partial: "layouts/rails_admin/custom_navigation" %>
3
+ </ul>
@@ -2,23 +2,26 @@
2
2
  <html lang="<%= I18n.locale %>">
3
3
  <head>
4
4
  <%= render "layouts/rails_admin/head" %>
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <link rel="preconnect" href="https://fonts.googleapis.com">
7
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
8
- <link href="https://fonts.googleapis.com/css2?family=Mulish:ital,wght@0,200..1000;1,200..1000&display=swap" rel="stylesheet">
9
- <title>
10
- <%= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}" %>
11
- </title>
12
5
  </head>
13
- <body class="rails_admin">
6
+ <body class="rails_admin min-vh-100">
7
+
8
+ <!-- TO-DO: Review later -->
14
9
  <div data-i18n-options="<%= I18n.t("admin.js").to_json %>" id="admin-js"></div>
15
- <!-- To-DO: Review this -->
16
10
  <div class="badge bg-warning" id="loading" style="display:none; position:fixed; right:20px; bottom:20px; z-index:100000">
17
11
  <%= t('admin.loading') %>
18
12
  </div>
19
- <%= render "layouts/rails_admin/sidebar_navigation" %>
20
- <div class="container-fluid position-relative">
21
- <%= render template: 'layouts/rails_admin/content' %>
13
+
14
+ <div class="row row-application-layout g-0 pb-4 pb-md-5">
15
+ <div class="col-auto d-none d-xl-flex">
16
+ <div class="container-fluid sidebar-wrapper pe-0 h-100">
17
+ <%= render "layouts/rails_admin/sidebar_navigation" %>
18
+ </div>
19
+ </div>
20
+ <div class="col col-content">
21
+ <div class="container-fluid py-4 py-md-6 py-lg-7">
22
+ <%= render template: 'layouts/rails_admin/content' %>
23
+ </div>
24
+ </div>
22
25
  </div>
23
26
  </body>
24
27
  </html>
@@ -1,57 +1,12 @@
1
- <header class="header mb-4 mb-md-5 mb-lg-6">
2
- <div class="row align-items-center gx-4 gy-0 gx-md-8">
3
- <div class="col text-truncate">
4
- <nav aria-label="breadcrumb">
5
- <%= breadcrumb %>
6
- </nav>
7
- <h1 class="text-truncate mb-0"><%= @page_name %></h1>
8
- </div>
9
- <div class="col-auto">
10
- <div class="dropdown dropdown-admin">
11
- <button class="btn text-start p-0 d-flex align-items-center" type="button" data-bs-toggle="dropdown" aria-expanded="false">
12
- <div class="img-wrapper-avatar flex-shrink-0 shadow">
13
- <%= image_tag(gravatar_url(_current_user.email), alt: "", title: "") %>
14
- </div>
15
- <!-- if md breakpoint -->
16
- <div class="text-truncate ms-md-4 d-none d-md-block">
17
- <div class="text-dark fw-bold lh-sm text-truncate"><%= _current_user.name %></div>
18
- </div>
19
- </button>
20
- <!-- TO-DO: Style dropdowns -->
21
- <% edit_url = rails_admin.url_for(
22
- action: :edit,
23
- model_name: RailsAdmin.config(_current_user.class).abstract_model.to_param,
24
- controller: 'rails_admin/main',
25
- id: _current_user.id
26
- ) %>
27
- <ul class="dropdown-menu dropdown-menu-end">
28
- <li><%= link_to "#{icon "fa-solid", "user", class: "fa-sm fa-fw me-2"}Your account".html_safe, edit_url, class: "dropdown-item" %></li>
29
- <li><%= link_to "#{icon "fa-solid", "right-from-bracket", class: "fa-sm fa-fw me-2"}Log out".html_safe, logout_path, method: logout_method, class: "dropdown-item", data: {turbo: 'false'} %></li>
30
- </ul>
31
- </div>
32
- </div>
33
- <!-- unless lg breakpoint -->
34
- <div class="col-auto d-lg-none">
35
- <button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar" aria-label="Toggle navigation">
36
- <span class="navbar-toggler-icon"></span>
37
- <span class="navbar-toggler-icon"></span>
38
- <span class="navbar-toggler-icon"></span>
39
- </button>
40
- <div class="offcanvas offcanvas-start" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
41
- <div class="offcanvas-body">
42
- <%= render partial: "layouts/rails_admin/custom/nav" %>
43
- </div>
44
- </div>
45
- </div>
46
- </div>
47
- </header>
48
-
49
- <!-- TO-DO: Review this -->
1
+ <%= render partial: "layouts/rails_admin/header" %>
50
2
  <% flash && flash.each do |key, value| %>
51
- <div class="<%= flash_alert_class(key) %> alert alert-dismissible">
3
+ <div class="<%= flash_alert_class(key) %> alert alert-dismissible mb-5 mb-md-6">
52
4
  <%= value %>
53
5
  <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
54
6
  </div>
55
7
  <% end %>
56
-
8
+ <ul class="nav nav-tabs mb-5 mb-md-6">
9
+ <%= menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object) %>
10
+ <%= content_for :contextual_tabs %>
11
+ </ul>
57
12
  <%= yield %>
@@ -0,0 +1,15 @@
1
+ <%
2
+ column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, field.type_column)
3
+ %>
4
+
5
+ <div class="row">
6
+ <div class="col col-md-10 col-xl-5">
7
+ <% field.widget_options_for_types.each do |model, value| %>
8
+ <div data-options="<%= value.to_json %>" id="<%= model %>-js-options"></div>
9
+ <% end %>
10
+ <%= form.select field.type_column, field.type_collection, {include_blank: true, selected: field.selected_type}, class: "form-select", id: column_type_dom_id, data: { polymorphic: true, urls: field.type_urls.to_json }, style: "float: left; margin-right: 10px;" %>
11
+ </div>
12
+ <div class="col col-md-10 col-xl-5">
13
+ <%= form.select field.method_name, field.collection, {include_blank: true, selected: field.selected_id}, class: "form-control", data: { filteringselect: true, options: field.widget_options }, placeholder: 'Search' %>
14
+ </div>
15
+ </div>
@@ -1,25 +1,29 @@
1
- <div class="form-actions row justify-content-end my-3">
2
- <div class="col-sm-24 d-flex justify-content-end gap-3 flex-column flex-md-row">
1
+ <div class="form-actions row justify-content-end gx-5 gy-3 gy-md-0 mt-md-3">
2
+ <div class="col-auto">
3
3
  <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
4
4
  <button class="btn btn-primary" data-disable-with="<%= t("admin.form.save") %>" name="_save" type="submit"<%= ' disabled' unless @action.enabled? %>>
5
5
  <i class="fas fa-check"></i>
6
6
  <%= t("admin.form.save") %>
7
7
  </button>
8
- <span class="extra_buttons d-flex flex-column flex-md-row gap-3">
9
- <% if @action.enabled? && authorized?(:new, @abstract_model) %>
10
- <button class="btn btn-white" data-disable-with="<%= t("admin.form.save_and_add_another") %>" name="_add_another" type="submit">
11
- <%= t("admin.form.save_and_add_another") %>
12
- </button>
13
- <% end %>
14
- <% if @action.enabled? && authorized?(:edit, @abstract_model) %>
15
- <button class="btn btn-white" data-disable-with="<%= t("admin.form.save_and_edit") %>" name="_add_edit" type="submit"<%= ' disabled' unless @action.enabled? %>>
16
- <%= t("admin.form.save_and_edit") %>
17
- </button>
18
- <% end %>
19
- <button class="btn btn-light" data-disable-with="<%= t("admin.form.cancel") %>" formnovalidate="<%= true %>" name="_continue" type="submit">
20
- <i class="fas fa-times"></i>
21
- <%= t("admin.form.cancel") %>
8
+ </div>
9
+ <div class="col-auto">
10
+ <% if @action.enabled? && authorized?(:new, @abstract_model) %>
11
+ <button class="btn btn-white" data-disable-with="<%= t("admin.form.save_and_add_another") %>" name="_add_another" type="submit">
12
+ <%= t("admin.form.save_and_add_another") %>
13
+ </button>
14
+ <% end %>
15
+ </div>
16
+ <div class="col-auto">
17
+ <% if @action.enabled? && authorized?(:edit, @abstract_model) %>
18
+ <button class="btn btn-white" data-disable-with="<%= t("admin.form.save_and_edit") %>" name="_add_edit" type="submit"<%= ' disabled' unless @action.enabled? %>>
19
+ <%= t("admin.form.save_and_edit") %>
22
20
  </button>
23
- </span>
21
+ <% end %>
22
+ </div>
23
+ <div class="col-auto">
24
+ <button class="btn btn-danger" data-disable-with="<%= t("admin.form.cancel") %>" formnovalidate="<%= true %>" name="_continue" type="submit">
25
+ <i class="fas fa-times"></i>
26
+ <%= t("admin.form.cancel") %>
27
+ </button>
24
28
  </div>
25
- </div>
29
+ </div>
@@ -1,63 +1,57 @@
1
1
  <% if @abstract_models %>
2
- <section class="bg-white p-4 p-md-5 p-lg-6 shadow rounded-3">
3
- <div class="row align-items-baseline gx-3 gy-0 gx-md-4 gx-lg-5 gx-xl-6">
4
- <div class="col-11 col-md-6">
5
- <div class="small text-muted fw-semibold"><%= t "admin.table_headers.model_name" %></div>
6
- </div>
7
- <div class="col order-md-last">
8
- <div class="small text-muted fw-semibold"><%= t "admin.table_headers.records" %></div>
9
- </div>
10
- <!-- if md breakpoint -->
11
- <div class="col col-md-7 d-none d-md-block">
12
- <div class="small text-muted fw-semibold"><%= t "admin.table_headers.last_created" %></div>
13
- </div>
14
- </div>
15
- <% @abstract_models.each do |abstract_model| %>
16
- <% if authorized? :index, abstract_model %>
17
- <hr class="my-1">
18
- <% index_path = index_path(model_name: abstract_model.to_param) %>
19
- <% last_created = @most_recent_created[abstract_model.model.name] %>
20
- <% active = last_created.try(:today?) %>
21
- <div class="row align-items-baseline gx-3 gy-0 gx-md-4 gx-lg-5 gx-xl-6 small">
22
- <div class="col-11 col-md-6">
23
- <%= link_to abstract_model.config.label_plural, index_path, class: "fw-bold text-dark" %>
24
- <% if last_created %>
25
- <div class="small lh-sm d-md-none">
26
- <%= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}" if last_created %>
27
- </div>
28
- <% end %>
29
- </div>
30
- <div class="col order-md-last">
2
+ <div class="table-responsive">
3
+ <table class="table table-hover">
4
+ <thead>
5
+ <tr>
6
+ <th scope="col">
7
+ <span><%= t "admin.table_headers.model_name" %></span>
8
+ </th>
9
+ <th scope="col">
10
+ <span><%= t "admin.table_headers.last_created" %></span>
11
+ </th>
12
+ <th scope="col">
13
+ <span><%= t "admin.table_headers.records" %></span>
14
+ </th>
15
+ <th scope="col">
16
+ </th>
17
+ </tr>
18
+ </thead>
19
+ <tbody>
20
+ <% @abstract_models.each do |abstract_model| %>
21
+ <% if authorized? :index, abstract_model %>
22
+ <% index_path = index_path(model_name: abstract_model.to_param) %>
23
+ <% last_created = @most_recent_created[abstract_model.model.name] %>
24
+ <% active = last_created.try(:today?) %>
31
25
  <% count = @count[abstract_model.model.name] %>
32
26
  <% percent = count > 0 ? (@max <= 1 ? count : ((Math.log(count+1) * 100.0) / Math.log(@max+1)).to_i) : -1 %>
33
- <div class="<%= active ? 'active progress-bar-striped ' : '' %>progress" style="margin-bottom:0px">
34
- <div class="bg-<%= get_indicator(percent) %> progress-bar animate-width-to" data-animate-length="<%= ([1.0, percent].max.to_i * 20) %>" data-animate-width-to="<%= [2.0, percent].max.to_i %>%" style="width:2%">
35
- <%= @count[abstract_model.model.name] %>
36
- </div>
37
- </div>
38
- </div>
39
- <div class="col-auto order-md-last">
40
- <div class="dropdown">
41
- <button class="btn btn-dropdown btn-sm btn-square" type="button" data-bs-toggle="dropdown" aria-expanded="false">
42
- <i class="fas fa-ellipsis-vertical"></i>
43
- </button>
44
- <ul class="dropdown-menu">
45
- <%= menu_for :collection, abstract_model, nil, false %>
46
- </ul>
47
- </div>
48
- </div>
49
- <!-- if md breakpoint -->
50
- <div class="col col-md-7 d-none d-md-block">
51
- <%= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}" if last_created %>
52
- </div>
53
- </div>
54
- <% end %>
55
- <% end %>
56
- </section>
27
+ <tr>
28
+ <th scope="row">
29
+ <span><%= link_to abstract_model.config.label_plural, index_path, class: "link link-white" %></span>
30
+ </th>
31
+ <td>
32
+ <%= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}" if last_created %>
33
+ </td>
34
+ <td>
35
+ <div class="progress <%= active ? "progress-bar-striped active" : "" %> mb-0">
36
+ <div class="progress-bar bg-<%= get_indicator(percent) %> animate-width-to" data-animate-length="<%= ([1.0, percent].max.to_i * 20) %>" data-animate-width-to="<%= [4.0, percent].max.to_i %>%" style="width:4%">
37
+ <span class="fw-semibold"><%= @count[abstract_model.model.name] %></span>
38
+ </div>
39
+ </div>
40
+ </td>
41
+ <td>
42
+ <ul class="nav d-flex align-items-center justify-content-end flex-nowrap gap-2 gap-md-3 mb-0">
43
+ <%= menu_for :collection, abstract_model, nil, true %>
44
+ </ul>
45
+ </td>
46
+ </tr>
47
+ <% end %>
48
+ <% end %>
49
+ </tbody>
50
+ </table>
51
+ </div>
57
52
  <% end %>
58
53
 
59
-
60
- <!-- TO-DO: Review this -->
54
+ <!-- Review then when connecting to POD -->
61
55
  <% if @history && authorized?(:history_index) %>
62
56
  <div class="block" id="block-tables">
63
57
  <div class="content">
@@ -1,38 +1,38 @@
1
1
  <% params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token) %>
2
2
  <% visible_fields = @model_config.export.with(view: self, object: @abstract_model.model.new, controller: self.controller).visible_fields %>
3
3
  <%= form_tag export_path(params.merge(all: true)), method: 'post', class: "main", data: {turbo: false} do %>
4
- <section class="bg-white p-4 p-md-5 mb-5 mb-md-6 shadow rounded-3">
4
+ <section class="mb-5 mb-md-7">
5
5
  <input name="send_data" type="hidden" value="true" />
6
- <fieldset id="fields_to_export" class="mb-5">
7
- <h2 class="h4 mb-0">
6
+ <fieldset id="fields_to_export" class="mb-4">
7
+ <h2 class="h3 mb-0">
8
8
  <legend class="mb-0"><%= t('admin.export.select') %></legend>
9
9
  </h2>
10
10
  </fieldset>
11
11
  <fieldset id="fields_to_export">
12
- <div class="control-group">
12
+ <div class="control-group mb-6">
13
13
  <div class="checkbox mb-3">
14
- <label class="form-check" for="reverse-selection">
14
+ <label class="form-check mb-0" for="reverse-selection">
15
15
  <%= check_box_tag 'all', 'all', true, { id: 'reverse-selection', class: 'reverse-selection form-check-input' } %>
16
- <h3 class="h6 form-check-label mb-0"><%= t('admin.export.fields_from', name: @model_config.label_plural) %></h3>
16
+ <div class="h5 fw-medium form-check-label"><%= t('admin.export.fields_from', name: @model_config.label_plural) %></div>
17
17
  </label>
18
18
  </div>
19
- <div class="controls row gy-2">
19
+ <div class="controls row gx-8 gy-2">
20
20
  <% visible_fields.select{ |f| !f.association? || f.association.polymorphic? }.each do |field| %>
21
21
  <% list = field.virtual? ? 'methods' : 'only' %>
22
22
  <div class="col-auto">
23
23
  <div class="checkbox">
24
24
  <% if field.association? && field.association.polymorphic? %>
25
- <label class="form-check form-label" for="schema_<%= list %>_<%= field.method_name %>">
25
+ <label class="form-check form-label mb-0" for="schema_<%= list %>_<%= field.method_name %>">
26
26
  <%= check_box_tag "schema[#{list}][]", field.method_name, true, { id: "schema_#{list}_#{field.method_name}", class: "form-check-input" } %>
27
27
  <%= field.label + " [id]" %>
28
28
  </label>
29
29
  <% polymorphic_type_column_name = @abstract_model.properties.detect { |p| field.association.foreign_type == p.name }.name %>
30
- <label class="form-check form-label" for="schema_<%= list %>_<%= polymorphic_type_column_name %>">
30
+ <label class="form-check form-label mb-0" for="schema_<%= list %>_<%= polymorphic_type_column_name %>">
31
31
  <%= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { id: "schema_#{list}_#{polymorphic_type_column_name}", class: "form-check-input" } %>
32
32
  <%= field.label + " [type]" %>
33
33
  </label>
34
34
  <% else %>
35
- <label class="form-check form-label" for="schema_<%= list %>_<%= field.name %>">
35
+ <label class="form-check form-label mb-0" for="schema_<%= list %>_<%= field.name %>">
36
36
  <%= check_box_tag "schema[#{list}][]", field.name, true, { id: "schema_#{list}_#{field.name}", class: "form-check-input" } %>
37
37
  <%= field.label %>
38
38
  </label>
@@ -42,23 +42,22 @@
42
42
  <% end %>
43
43
  </div>
44
44
  </div>
45
- <hr class="my-6">
46
- <h2 class="h5 mb-5">Associations</h2>
45
+ <h3 class="h4 mb-4">Associations</h3>
47
46
  <% visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.each_with_index do |field, group_index| %>
48
47
  <% fields = field.associated_model_config.export.with(controller: self.controller, view: self, object: (associated_model = field.associated_model_config.abstract_model.model).new).visible_fields.select{ |f| !f.association? } %>
49
- <div class="control-group">
48
+ <div class="control-group <%= "mb-6" if group_index < visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.size - 1 %>">
50
49
  <div class="checkbox mb-3">
51
- <label class="form-check">
50
+ <label class="form-check mb-0">
52
51
  <%= check_box_tag 'all', 'all', true, { id: 'reverse-selection', class: 'reverse-selection form-check-input' } %>
53
- <h3 class="h6 form-check-label mb-0"><%= t('admin.export.fields_from_associated', name: field.label.pluralize) %></h3>
52
+ <div class="h5 fw-medium form-check-label"><%= t('admin.export.fields_from_associated', name: field.label.pluralize) %></div>
54
53
  </label>
55
54
  </div>
56
- <div class="controls row gy-2">
55
+ <div class="controls row gx-8 gy-2">
57
56
  <% fields.each do |associated_model_field| %>
58
57
  <% list = associated_model_field.virtual? ? 'methods' : 'only' %>
59
58
  <div class="col-auto">
60
59
  <div class="checkbox">
61
- <label class="form-check form-label" for="schema_include_<%= field.name %>_<%= list %>_<%= associated_model_field.name %>">
60
+ <label class="form-check mb-0 form-label" for="schema_include_<%= field.name %>_<%= list %>_<%= associated_model_field.name %>">
62
61
  <%= check_box_tag "schema[include][#{field.name}][#{list}][]", associated_model_field.name, true, { id: "schema_include_#{field.name}_#{list}_#{associated_model_field.name}", class: "form-check-input" } %>
63
62
  <%= associated_model_field.label %>
64
63
  </label>
@@ -67,25 +66,24 @@
67
66
  <% end %>
68
67
  </div>
69
68
  </div>
70
- <%= "<hr class='my-6'>".html_safe if group_index < visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.size - 1 %>
71
69
  <% end %>
72
70
  </fieldset>
73
71
  </section>
74
- <section class="bg-white p-4 p-md-5 mb-5 mb-md-6 shadow rounded-3">
72
+ <section class="mb-5 mb-md-6">
75
73
  <fieldset>
76
- <h2 class="h4 d-flex mb-5">
74
+ <h2 class="h3 d-flex mb-4">
77
75
  <legend class="mb-0"><%= t('admin.export.options_for', name: 'csv') %></legend>
78
76
  </h2>
79
77
  <div class="control-group row mb-3">
80
78
  <% guessed_encoding = @abstract_model.encoding %>
81
79
  <label class="form-label" for="csv_options_encoding_to"><%= t('admin.export.csv.encoding_to') %></label>
82
- <div class="controls col-md-11 col-xl-6">
80
+ <div class="controls col col-md-10 col-xl-5">
83
81
  <%= select_tag 'csv_options[encoding_to]', options_for_select(Encoding.name_list.sort), include_blank: true, placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
84
82
  </div>
85
83
  <p class="form-text mb-0"><%= t('admin.export.csv.encoding_to_help', name: guessed_encoding) %></p>
86
84
  </div>
87
85
  <div class="control-group mb-3">
88
- <div class="form-check form-switch d-flex flex-column">
86
+ <div class="form-check mb-0 form-switch d-flex flex-column">
89
87
  <label class="form-label for="csv_options_skip_header"><%= t('admin.export.csv.skip_header') %></label>
90
88
  <%= check_box_tag 'csv_options[skip_header]', 'true', false, { class: 'form-check-input' } %>
91
89
  </div>
@@ -95,7 +93,7 @@
95
93
  <label class="form-label" for="csv_options_generator_col_sep">
96
94
  <%= t('admin.export.csv.col_sep') %>
97
95
  </label>
98
- <div class="controls col-md-11 col-xl-6">
96
+ <div class="controls col col-md-10 col-xl-5">
99
97
  <%= select_tag 'csv_options[generator][col_sep]', options_for_select({ '' => t('admin.export.csv.default_col_sep'), "<comma> ','" => ',', "<semicolon> ';'" => ';', '<tabs>' => "'\t'" }), placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
100
98
  </div>
101
99
  <p class="form-text mb-0"><%= t('admin.export.csv.col_sep_help', value: t('admin.export.csv.default_col_sep')) %></p>
@@ -106,6 +104,7 @@
106
104
  <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
107
105
  <div class="col-auto">
108
106
  <button class="btn btn-primary" name="csv" type="submit">
107
+ <i class="fas fa-check"></i>
109
108
  <%= t("admin.export.confirmation", name: 'csv') %>
110
109
  </button>
111
110
  </div>
@@ -121,6 +120,7 @@
121
120
  </div>
122
121
  <div class="col-auto">
123
122
  <button class="btn btn-danger" name="_continue" type="submit">
123
+ <i class="fas fa-times"></i>
124
124
  <%= t("admin.form.cancel") %>
125
125
  </button>
126
126
  </div>
@@ -0,0 +1,87 @@
1
+ <% params = request.params.except(:action, :controller, :model_name) %>
2
+ <% query = params[:query] %>
3
+ <% filter = params[:filter] %>
4
+ <% sort = params[:sort] %>
5
+ <% sort_reverse = params[:sort_reverse] %>
6
+ <% path_method = params[:id] ? "history_show_path" : "history_index_path" %>
7
+ <%= form_tag("", method: "get", class: "search form-inline") do %>
8
+ <div class="mb-6 mb-md-7">
9
+ <div class="row justify-content-between gy-3 gy-md-0">
10
+ <div class="col-md-auto">
11
+ <div class="input-group">
12
+ <input class="form-control" name="query" placeholder="<%= t("admin.misc.search") %>" type="search" value="<%= query %>" />
13
+ <button class="btn btn-white" data-disable-with="<%= '<i class="fas fa-sync"></i>' + t('admin.misc.refresh') %>" type="submit">
14
+ <i class="fas fa-sync fa-sm me-1"></i>
15
+ <%= t('admin.misc.refresh') %>
16
+ </button>
17
+ <button class="btn btn-white" id="remove_filter" title="<%= t('admin.misc.reset_filters') %>">
18
+ <i class="fas fa-times"></i>
19
+ </button>
20
+ </div>
21
+ </div>
22
+ </div>
23
+ </div>
24
+ <% end %>
25
+ <div id="sidescroll">
26
+ <div class="table-responsive mb-4 mb-md-5">
27
+ <table class="table table-condensed table-hover" id="history">
28
+ <thead>
29
+ <tr>
30
+ <% columns = [] %>
31
+ <% columns << { property_name: "created_at", css_class: "created_at",link_text: t('admin.table_headers.created_at') } %>
32
+ <% columns << { property_name: "username", css_class: "username", link_text: t('admin.table_headers.username') } %>
33
+ <% columns << { property_name: "item", css_class: "item", link_text: t('admin.table_headers.item') } if @general %>
34
+ <% columns << { property_name: "message", css_class: "message", link_text: t('admin.table_headers.message') } %>
35
+ <% columns.each do |column| %>
36
+ <% property_name = column[:property_name] %>
37
+ <% selected = (sort == property_name) %>
38
+ <% sort_direction = (sort_reverse ? "headerSortUp" : "headerSortDown" if selected) %>
39
+ <% sort_location = send(path_method, params.except("sort_reverse").merge(model_name: @abstract_model.to_param, sort: property_name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {})) %>
40
+ <th class="header <%= column[:css_class] %> <%= sort_direction if selected %>" data-href="<%= sort_location %>">
41
+ <%= column[:link_text] %>
42
+ </th>
43
+ <% end %>
44
+ </tr>
45
+ </thead>
46
+ <tbody class="table-group-divider">
47
+ <% @history.each_with_index do |object, index| %>
48
+ <tr>
49
+ <% unless object.created_at.nil? %>
50
+ <td>
51
+ <%= l(object.created_at, format: :long, default: l(object.created_at, format: :long)) %>
52
+ </td>
53
+ <% end %>
54
+ <td>
55
+ <%= object.username %>
56
+ </td>
57
+ <% if @general %>
58
+ <% if o = @abstract_model.get(object.item) %>
59
+ <% label = o.send(@abstract_model.config.object_label_method) %>
60
+ <% if show_action = action(:show, @abstract_model, o) %>
61
+ <td>
62
+ <%= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id)) %>
63
+ </td>
64
+ <% else %>
65
+ <td>
66
+ <%= label %>
67
+ </td>
68
+ <% end %>
69
+ <% else %>
70
+ <td>
71
+ <%= "#{@abstract_model.config.label} ##{object.item}" %>
72
+ </td>
73
+ <% end %>
74
+ <% end %>
75
+ <td>
76
+ <%= object.message.in?(['delete', 'new']) ? t("admin.actions.#{object.message}.done").capitalize : object.message %>
77
+ </td>
78
+ </tr>
79
+ <% end %>
80
+ </tbody>
81
+ </table>
82
+ </div>
83
+ </div>
84
+ <% unless params[:all] || !@history.respond_to?(:current_page) %>
85
+ <%= paginate(@history, theme: 'ra-twitter-bootstrap') %>
86
+ <%= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn btn-light") unless (tc = @history.total_count) <= @history.size || tc > 100 %>
87
+ <% end %>