tybo 0.2.6 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
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: []