tybo 0.2.6 → 0.3.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6cd8dc90af45a86be1d98379a780671a9e2d3b14019fb833fde0fe2f20c401ac
4
- data.tar.gz: e8871583cf69ed490129c450e76bf1ea91d92d91d32ee1fe6c27b30088ba2d75
3
+ metadata.gz: f868105783b1c54829bbf63a1209da1025504e38a8252782e8839d97a2b0eeb2
4
+ data.tar.gz: 21eb809af4c857530d52dec15603b88ac90f442938d8c6b4a1ba1dc8b17520b8
5
5
  SHA512:
6
- metadata.gz: e08113a2d74f9c12b87330d0b0746fbbac504f842dbbb53ecc6a71e7bdb4708f5cbd689196bac4fbf6b6db5ec0bddad0591c71d77d8f12af5bf157bbac65a0a4
7
- data.tar.gz: e72c7161eebd611b81d468a2527101fb57cc0c092d4799597e12c7e0e2eb28faf8a50654580c2819c422b6d3969834b4e09035a7b7778a583fd1dab78c6b7b22
6
+ metadata.gz: 3569dc6485aa60d1d355db5b00e61aed1d045efd2fc782d45c479a494207d4c2b959069becdbeeac0daaabda2ac574352ef0840fb428a0f681dd34247635b63d
7
+ data.tar.gz: 5421fefa7316175f47574bd8abeaac34016934e15f7ab75ffb51ec97728bf55188798c35e34851332604164605266a0636b1c998ea965c53692b208ee137db84
@@ -1,3 +1,7 @@
1
1
  <div class="mt-4 mr-2 sm:flex-none">
2
- <%= link_to I18n.t('bo.btn.export'), @path, class: "inline-flex items-center justify-center rounded-md border border-transparent bg-tybo px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2 sm:w-auto" %>
2
+ <%= link_to I18n.t('bo.export_btn'),
3
+ @path,
4
+ id: 'exportBtn',
5
+ class: "inline-flex items-center justify-center rounded-md border border-transparent bg-tybo px-4 py-2 text-sm font-medium text-white shadow-sm hover:bg-tybo-700 focus:outline-none focus:ring-2 focus:ring-tybo-500 focus:ring-offset-2 sm:w-auto"
6
+ %>
3
7
  </div>
@@ -38,7 +38,7 @@ class BoGenerator < Rails::Generators::NamedBase
38
38
  return if rails_routes.any?("#{options[:namespace]}_#{plural_name}")
39
39
 
40
40
  inject_into_file 'config/routes.rb', after: " namespace :#{options[:namespace]} do\n" do
41
- " resources :#{plural_name}\n"
41
+ " resources :#{plural_name} do\n get 'export_csv', on: :collection\n end\n"
42
42
  end
43
43
  end
44
44
 
@@ -63,8 +63,40 @@ module <%= options[:namespace].camelize %>
63
63
  redirect_to <%="#{options[:namespace]}_#{class_name.underscore.pluralize}_path"%>, status: :see_other
64
64
  end
65
65
 
66
+ def export_csv
67
+ @<%= class_name.pluralize.underscore %> = fetch_authorized_<%= class_name.pluralize.underscore %>
68
+ csv_data = generate_csv_data
69
+
70
+ send_data csv_data,
71
+ type: 'text/csv; charset=utf-8; header=present',
72
+ disposition: "attachment; filename=#{I18n.t("bo.<%= class_name.underscore %>.other")}_#{Time.zone.now}.csv"
73
+ end
74
+
66
75
  private
67
76
 
77
+ def fetch_authorized_<%= class_name.pluralize.underscore %>
78
+ authorized_scope(
79
+ <%=class_name%>.all,
80
+ with: Bo::Administrators::<%=class_name%>Policy
81
+ ).ransack(params[:q]).result(distinct: true)
82
+ end
83
+
84
+ def generate_csv_data
85
+ CSV.generate(headers: true) do |csv|
86
+ csv << translated_headers
87
+
88
+ @<%= class_name.pluralize.underscore %>.each do |instance|
89
+ csv << <%=class_name%>.column_names.map { |col| instance.send(col) }
90
+ end
91
+ end
92
+ end
93
+
94
+ def translated_headers
95
+ <%=class_name%>.column_names.map do |col|
96
+ I18n.t("bo.<%=class_name.downcase%>.attributes.#{col}")
97
+ end
98
+ end
99
+
68
100
  def set_<%= class_name.underscore %>
69
101
  @<%= class_name.underscore %> = authorized_scope(
70
102
  <%= class_name %>.all,
@@ -5,6 +5,7 @@
5
5
  subtitle: I18n.t('bo.<%= class_name.underscore %>.subtitle').capitalize,
6
6
  ) do |header| %>
7
7
  <%%= header.with_add_button(path: <%="new_#{options[:namespace]}_#{class_name.underscore}_path" %>) %>
8
+ <%%= header.with_export_button(path: <%= "export_csv_#{options[:namespace]}_#{class_name.pluralize.underscore}_path(format: :csv)"%>)%>
8
9
  <%% end %>
9
10
 
10
11
  <!-- Search Bar -->
@@ -25,5 +25,6 @@
25
25
  "show": "Détails",
26
26
  "showing": "Affichage de",
27
27
  "of": "de",
28
- "results": "resultats"
28
+ "results": "résultats",
29
+ "export_btn": "Export CSV"
29
30
  }
@@ -43,7 +43,7 @@ class BoNamespaceGenerator < Rails::Generators::NamedBase
43
43
  # devise_route = "devise_for :#{singular_name},\n path: '#{plural_name}',\n controllers: {\n sessions: 'custom_devise/sessions',\n passwords: 'custom_devise/passwords',\n registrations: 'custom_devise/registrations'\n }"
44
44
  gsub_file('config/routes.rb', /devise_for :#{plural_name}/, "devise_for :#{plural_name}, path: '#{plural_name}'")
45
45
  # route devise_route
46
- route "# #{plural_name.capitalize}\nnamespace :#{plural_name} do\n root to: '#{plural_name}#index'\n resources :#{plural_name}\nend"
46
+ route "# #{plural_name.capitalize}\nnamespace :#{plural_name} do\n root to: '#{plural_name}#index'\n resources :#{plural_name} do\n get 'export_csv', on: :collection\n end\n\nend"
47
47
  end
48
48
 
49
49
  def remove_devise_registration
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+ require 'csv'
2
3
 
3
4
  class <%= class_name %>Controller < ApplicationController
4
5
  include Pagy::Backend
@@ -23,7 +23,7 @@ class TyboInstallGenerator < Rails::Generators::Base
23
23
 
24
24
  def pin_js_dependencies
25
25
  run "./bin/importmap pin tom-select --download"
26
- run "./bin/importmap pin @tymate/tybo"
26
+ run "./bin/importmap pin @tymate/tybo_js"
27
27
  end
28
28
 
29
29
  def create_routes
@@ -39,7 +39,7 @@ class TyboInstallGenerator < Rails::Generators::Base
39
39
 
40
40
  def add_javascript_controllers
41
41
  inject_into_file 'app/javascript/controllers/application.js', after: "const application = Application.start()\n" do
42
- "import { Dropdown, Flash, SearchForm, TsSearch, TsSelect } from \"@tymate/tybo\"\n"
42
+ "import { Dropdown, Flash, SearchForm, TsSearch, TsSelect } from \"@tymate/tybo_js\"\n"
43
43
  end
44
44
 
45
45
  inject_into_file 'app/javascript/controllers/application.js', before: "export { application }" do
@@ -9,6 +9,7 @@
9
9
  'filters' => find_existing_translation('filters', locale),
10
10
  'show' => find_existing_translation('show', locale),
11
11
  'to' => find_existing_translation('to', locale),
12
+ 'export_btn' => find_existing_translation('export_btn', locale),
12
13
  'confirm_delete' => find_existing_translation('confirm_delete', locale),
13
14
  'record' => {
14
15
  'created' => find_existing_translation('created', locale),
data/lib/tybo/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Tybo
2
- VERSION = '0.2.6'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tybo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michel Delpierre
8
8
  - Julien Camblan
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-09-13 00:00:00.000000000 Z
12
+ date: 2023-10-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -17,20 +17,14 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '7.0'
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 7.0.4.3
20
+ version: '7'
24
21
  type: :runtime
25
22
  prerelease: false
26
23
  version_requirements: !ruby/object:Gem::Requirement
27
24
  requirements:
28
25
  - - "~>"
29
26
  - !ruby/object:Gem::Version
30
- version: '7.0'
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: 7.0.4.3
27
+ version: '7'
34
28
  - !ruby/object:Gem::Dependency
35
29
  name: puma
36
30
  requirement: !ruby/object:Gem::Requirement
@@ -287,7 +281,7 @@ licenses:
287
281
  - MIT
288
282
  metadata:
289
283
  homepage_uri: https://rubygems.org/gems/tybo
290
- post_install_message:
284
+ post_install_message:
291
285
  rdoc_options: []
292
286
  require_paths:
293
287
  - lib
@@ -303,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
297
  version: '0'
304
298
  requirements: []
305
299
  rubygems_version: 3.4.10
306
- signing_key:
300
+ signing_key:
307
301
  specification_version: 4
308
302
  summary: A tailwind custom admin engine for Ruby on Rails
309
303
  test_files: []