kono_utils_bootstrap_view4 0.1.0.pre.rc.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 +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +21 -0
- data/Rakefile +32 -0
- data/app/assets/config/kono_utils_bootstrap_view4_manifest.js +0 -0
- data/app/assets/javascripts/kono_utils_bootstrap_view4/application.js.erb +12 -0
- data/app/assets/javascripts/kono_utils_bootstrap_view4/kono_utils_bootstrap_view4.js +36 -0
- data/app/assets/stylesheets/kono_utils_bootstrap_view4/application.css.scss.erb +12 -0
- data/app/concepts/kono_utils/object/cell/base.rb +123 -0
- data/app/concepts/kono_utils/object/cell/buttons/base.rb +57 -0
- data/app/concepts/kono_utils/object/cell/buttons/collapse_search.rb +31 -0
- data/app/concepts/kono_utils/object/cell/buttons/create.rb +22 -0
- data/app/concepts/kono_utils/object/cell/buttons/delete.rb +32 -0
- data/app/concepts/kono_utils/object/cell/buttons/download.rb +23 -0
- data/app/concepts/kono_utils/object/cell/buttons/edit.rb +18 -0
- data/app/concepts/kono_utils/object/cell/buttons/list.rb +17 -0
- data/app/concepts/kono_utils/object/cell/buttons/reset_search.rb +21 -0
- data/app/concepts/kono_utils/object/cell/create/base.rb +8 -0
- data/app/concepts/kono_utils/object/cell/create/page_title.rb +10 -0
- data/app/concepts/kono_utils/object/cell/create/side_title.rb +5 -0
- data/app/concepts/kono_utils/object/cell/edits/base.rb +8 -0
- data/app/concepts/kono_utils/object/cell/edits/page_title.rb +10 -0
- data/app/concepts/kono_utils/object/cell/edits/side_title.rb +5 -0
- data/app/concepts/kono_utils/object/cell/form.rb +51 -0
- data/app/concepts/kono_utils/object/cell/forms/base.rb +13 -0
- data/app/concepts/kono_utils/object/cell/forms/container.rb +25 -0
- data/app/concepts/kono_utils/object/cell/forms/containers/layout.rb +16 -0
- data/app/concepts/kono_utils/object/cell/forms/containers/modal_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/containers/search_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/containers/table_layout.rb +8 -0
- data/app/concepts/kono_utils/object/cell/forms/field_selector.rb +77 -0
- data/app/concepts/kono_utils/object/cell/forms/field_selectors/layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/field_selectors/modal_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/field_selectors/table_layout.rb +8 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/association.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/base.rb +25 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/bases/layout.rb +24 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/bases/modal_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/bases/table_layout.rb +11 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/check_box.rb +10 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/collection.rb +17 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/date_field.rb +15 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/date_time_field.rb +51 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/enum.rb +20 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/file_field.rb +31 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_modal_wrapper.rb +6 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_modal_wrappers/forms_container.rb +9 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_modal_wrappers/show.rb +14 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrapper.rb +63 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/form.rb +38 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms/layout.rb +13 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms/modal_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms/table_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms_container.rb +45 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms_containers/layout.rb +15 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms_containers/modal_layout.rb +9 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/forms_containers/table_layout.rb +16 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/header.rb +31 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/remove_button.rb +44 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/remove_buttons/layout.rb +10 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/remove_buttons/modal_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/nested_wrappers/remove_buttons/table_layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/read_only.rb +15 -0
- data/app/concepts/kono_utils/object/cell/forms/fields/time_field.rb +11 -0
- data/app/concepts/kono_utils/object/cell/forms/layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/forms/submit.rb +22 -0
- data/app/concepts/kono_utils/object/cell/index/base.rb +12 -0
- data/app/concepts/kono_utils/object/cell/index/page_title.rb +10 -0
- data/app/concepts/kono_utils/object/cell/index/row.rb +40 -0
- data/app/concepts/kono_utils/object/cell/index/row_buttons.rb +7 -0
- data/app/concepts/kono_utils/object/cell/index/row_footer.rb +6 -0
- data/app/concepts/kono_utils/object/cell/index/row_header.rb +11 -0
- data/app/concepts/kono_utils/object/cell/index/side_title.rb +5 -0
- data/app/concepts/kono_utils/object/cell/index/table.rb +15 -0
- data/app/concepts/kono_utils/object/cell/inject.rb +122 -0
- data/app/concepts/kono_utils/object/cell/modals/base.rb +6 -0
- data/app/concepts/kono_utils/object/cell/modals/bodies/layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/modals/body.rb +6 -0
- data/app/concepts/kono_utils/object/cell/modals/container.rb +24 -0
- data/app/concepts/kono_utils/object/cell/modals/containers/layout.rb +10 -0
- data/app/concepts/kono_utils/object/cell/modals/footer.rb +6 -0
- data/app/concepts/kono_utils/object/cell/modals/footers/layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/modals/header.rb +6 -0
- data/app/concepts/kono_utils/object/cell/modals/headers/layout.rb +7 -0
- data/app/concepts/kono_utils/object/cell/search.rb +27 -0
- data/app/concepts/kono_utils/object/cell/searches/form.rb +14 -0
- data/app/concepts/kono_utils/object/cell/show.rb +26 -0
- data/app/concepts/kono_utils/object/cell/shows/base.rb +8 -0
- data/app/concepts/kono_utils/object/cell/shows/page_title.rb +10 -0
- data/app/concepts/kono_utils/object/cell/shows/side_title.rb +5 -0
- data/app/concepts/kono_utils/object/view/create/side_title.erb +1 -0
- data/app/concepts/kono_utils/object/view/edits/side_title.erb +1 -0
- data/app/concepts/kono_utils/object/view/form.erb +9 -0
- data/app/concepts/kono_utils/object/view/forms/container.erb +5 -0
- data/app/concepts/kono_utils/object/view/forms/containers/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/containers/modal_layout.erb +5 -0
- data/app/concepts/kono_utils/object/view/forms/containers/search_layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/containers/table_layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/field_selector.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/field_selectors/layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/field_selectors/modal_layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/field_selectors/table_layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/association.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/base.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/bases/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/fields/bases/layout.scss +25 -0
- data/app/concepts/kono_utils/object/view/forms/fields/bases/modal_layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/fields/bases/table_layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/fields/check_box.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/collection.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_modal_wrapper.erb +23 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_modal_wrappers/forms_container.erb +12 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_modal_wrappers/show.erb +28 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrapper.erb +18 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/form.erb +17 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms/layout.erb +18 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms/modal_layout.erb +4 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms/table_layout.erb +4 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms_container.erb +11 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms_containers/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms_containers/modal_layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/forms_containers/table_layout.erb +14 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/header.erb +27 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/remove_button.erb +28 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/remove_buttons/layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/remove_buttons/modal_layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/forms/fields/nested_wrappers/remove_buttons/table_layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/forms/layout.erb +1 -0
- data/app/concepts/kono_utils/object/view/index/row.erb +10 -0
- data/app/concepts/kono_utils/object/view/index/row_buttons.erb +2 -0
- data/app/concepts/kono_utils/object/view/index/row_footer.erb +0 -0
- data/app/concepts/kono_utils/object/view/index/row_header.erb +8 -0
- data/app/concepts/kono_utils/object/view/index/side_title.erb +1 -0
- data/app/concepts/kono_utils/object/view/index/table.erb +9 -0
- data/app/concepts/kono_utils/object/view/inject.erb +8 -0
- data/app/concepts/kono_utils/object/view/modals/bodies/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/modals/body.erb +1 -0
- data/app/concepts/kono_utils/object/view/modals/container.erb +13 -0
- data/app/concepts/kono_utils/object/view/modals/containers/layout.erb +7 -0
- data/app/concepts/kono_utils/object/view/modals/footer.erb +1 -0
- data/app/concepts/kono_utils/object/view/modals/footers/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/modals/header.erb +1 -0
- data/app/concepts/kono_utils/object/view/modals/headers/layout.erb +3 -0
- data/app/concepts/kono_utils/object/view/search.erb +40 -0
- data/app/concepts/kono_utils/object/view/searches/form.erb +16 -0
- data/app/concepts/kono_utils/object/view/show.erb +6 -0
- data/app/concepts/kono_utils/object/view/shows/side_title.erb +1 -0
- data/app/inputs/file_input_download_input.rb +22 -0
- data/app/inputs/tempus_dominus_input.rb +38 -0
- data/app/views/kaminari/_first_page.html.erb +3 -0
- data/app/views/kaminari/_gap.html.erb +3 -0
- data/app/views/kaminari/_last_page.html.erb +3 -0
- data/app/views/kaminari/_next_page.html.erb +3 -0
- data/app/views/kaminari/_page.html.erb +9 -0
- data/app/views/kaminari/_paginator.html.erb +17 -0
- data/app/views/kaminari/_prev_page.html.erb +3 -0
- data/app/views/kono_utils/base_editing/edit.html.erb +8 -0
- data/app/views/kono_utils/base_editing/edit.inject.erb +2 -0
- data/app/views/kono_utils/base_editing/index.html.erb +10 -0
- data/app/views/kono_utils/base_editing/new.html.erb +9 -0
- data/app/views/kono_utils/base_editing/new.inject.erb +2 -0
- data/app/views/kono_utils/base_editing/show.html.erb +8 -0
- data/app/views/kono_utils/base_editing/success_create_show.inject.erb +6 -0
- data/app/views/kono_utils/base_editing/success_update_show.inject.erb +6 -0
- data/config/initializers/kaminari_config.rb +30 -0
- data/config/initializers/simple_form.rb +179 -0
- data/config/initializers/simple_form_bootstrap.rb +439 -0
- data/config/locales/kono_utils_bootstrap4.en.yml +15 -0
- data/config/locales/kono_utils_bootstrap4.it.yml +15 -0
- data/config/locales/simple_form.en.yml +31 -0
- data/config/routes.rb +2 -0
- data/lib/generators/kono_utils_bootstrap_view4/concept/concept_generator.rb +79 -0
- data/lib/generators/kono_utils_bootstrap_view4/concept/templates/form.template +8 -0
- data/lib/generators/kono_utils_bootstrap_view4/concept/templates/forms/field_selector.template +13 -0
- data/lib/generators/kono_utils_bootstrap_view4/install/install_generator.rb +76 -0
- data/lib/generators/kono_utils_bootstrap_view4/install/templates/kono_utils_bootstrap_view4.js.erb.template +20 -0
- data/lib/generators/kono_utils_bootstrap_view4/install/templates/kono_utils_bootstrap_view4.template +5 -0
- data/lib/kono_utils_bootstrap_view4.rb +26 -0
- data/lib/kono_utils_bootstrap_view4/application_icon_helper.rb +31 -0
- data/lib/kono_utils_bootstrap_view4/base_class_concept_ns.rb +47 -0
- data/lib/kono_utils_bootstrap_view4/base_search.rb +5 -0
- data/lib/kono_utils_bootstrap_view4/configuration.rb +20 -0
- data/lib/kono_utils_bootstrap_view4/editable_field.rb +63 -0
- data/lib/kono_utils_bootstrap_view4/engine.rb +59 -0
- data/lib/kono_utils_bootstrap_view4/paginate_proxer.rb +11 -0
- data/lib/kono_utils_bootstrap_view4/search_form_builder.rb +14 -0
- data/lib/kono_utils_bootstrap_view4/version.rb +3 -0
- data/lib/tasks/kono_utils_bootstrap_view4_tasks.rake +4 -0
- data/lib/templates/erb/scaffold/_form.html.erb +15 -0
- metadata +391 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
en:
|
|
2
|
+
simple_form:
|
|
3
|
+
"yes": 'Yes'
|
|
4
|
+
"no": 'No'
|
|
5
|
+
required:
|
|
6
|
+
text: 'required'
|
|
7
|
+
mark: '*'
|
|
8
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
|
9
|
+
# When using html, text and mark won't be used.
|
|
10
|
+
# html: '<abbr title="required">*</abbr>'
|
|
11
|
+
error_notification:
|
|
12
|
+
default_message: "Please review the problems below:"
|
|
13
|
+
# Examples
|
|
14
|
+
# labels:
|
|
15
|
+
# defaults:
|
|
16
|
+
# password: 'Password'
|
|
17
|
+
# user:
|
|
18
|
+
# new:
|
|
19
|
+
# email: 'E-mail to sign in.'
|
|
20
|
+
# edit:
|
|
21
|
+
# email: 'E-mail.'
|
|
22
|
+
# hints:
|
|
23
|
+
# defaults:
|
|
24
|
+
# username: 'User name to sign in.'
|
|
25
|
+
# password: 'No special characters, please.'
|
|
26
|
+
# include_blanks:
|
|
27
|
+
# defaults:
|
|
28
|
+
# age: 'Rather not say'
|
|
29
|
+
# prompts:
|
|
30
|
+
# defaults:
|
|
31
|
+
# age: 'Select your age'
|
data/config/routes.rb
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
module KonoUtilsBootstrapView4
|
|
3
|
+
class ConceptGenerator < Rails::Generators::Base
|
|
4
|
+
include ActiveSupport::Inflector
|
|
5
|
+
|
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
7
|
+
|
|
8
|
+
desc "Costruisce la struttura delle cartelle e il wrapper per la selezione dei campi da renderizzare\n" +
|
|
9
|
+
"Passando CELL viene anche generata la classe nella posizione corretta"
|
|
10
|
+
argument :model_name, type: :string, desc: 'ModelName'
|
|
11
|
+
argument :cell, type: :string, default: false, desc: "Nome cella da copiare"
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def generate_folders
|
|
15
|
+
|
|
16
|
+
if safe_constantize(model_name)
|
|
17
|
+
FileUtils.mkdir_p(File.join(path, 'cell'))
|
|
18
|
+
FileUtils.mkdir_p(File.join(path, 'view'))
|
|
19
|
+
else
|
|
20
|
+
puts "Modello inesistente"
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
##
|
|
26
|
+
# Automatismo non completo, TO_COMPLETE
|
|
27
|
+
# class_option :generate_view, type: :boolean, default: false, desc: "Per la cella passata viene copiato la view"
|
|
28
|
+
# class_option :generate_class, type: :boolean, default: false, desc: "Per la cella passata viene copiata la classe"
|
|
29
|
+
#
|
|
30
|
+
# def copy_cell
|
|
31
|
+
# unless cell.blank?
|
|
32
|
+
# dirs = []
|
|
33
|
+
#
|
|
34
|
+
# dirs << ['cell', 'view', 'erb'] if options.generate_view
|
|
35
|
+
# dirs << ['cell', 'cell', 'rb'] if options.generate_class
|
|
36
|
+
#
|
|
37
|
+
# puts "Devi selezionare almeno uno dei generatori: --generate-view o --generate-class" if dirs.empty?
|
|
38
|
+
#
|
|
39
|
+
#
|
|
40
|
+
# dirs.each do |c|
|
|
41
|
+
#
|
|
42
|
+
# component_to_override = "#{cell.gsub(/#{c[0]}/, c[1])}.#{c[2]}"
|
|
43
|
+
# path_src = File.join('app', 'concepts', 'kono_utils', component_to_override)
|
|
44
|
+
#
|
|
45
|
+
# path_dest = File.join('app', 'concepts', tableize(safe_constantize(model_name).name), component_to_override)
|
|
46
|
+
#
|
|
47
|
+
# puts path_src
|
|
48
|
+
# puts path_dest
|
|
49
|
+
#
|
|
50
|
+
# #copio i files
|
|
51
|
+
# copy_file(path_src, path_dest)
|
|
52
|
+
#
|
|
53
|
+
# end
|
|
54
|
+
# end
|
|
55
|
+
# end
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class_option :field_selector, type: :boolean, default: false, desc: "Copia il template per il selettore dei campi"
|
|
59
|
+
class_option :form, type: :boolean, default: false, desc: "Copia il template della form"
|
|
60
|
+
|
|
61
|
+
def copy_templates
|
|
62
|
+
if options.field_selector
|
|
63
|
+
template 'forms/field_selector.template', File.join(path, "cell", "forms", "field_selector.rb")
|
|
64
|
+
end
|
|
65
|
+
if options.form
|
|
66
|
+
template 'form.template', File.join(path, "cell", "form.rb")
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
private
|
|
72
|
+
|
|
73
|
+
def path
|
|
74
|
+
Rails.application.root.join('app', 'concepts', tableize(safe_constantize(model_name).name))
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
end
|
|
79
|
+
end
|
data/lib/generators/kono_utils_bootstrap_view4/concept/templates/forms/field_selector.template
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
class <%= model_name.pluralize %>::Cell::Forms::FieldSelector < KonoUtils::Object::Cell::Forms::FieldSelector
|
|
2
|
+
|
|
3
|
+
def get_field
|
|
4
|
+
case model.name
|
|
5
|
+
#when :field_name
|
|
6
|
+
# concept("cell/forms/fields/association", model, field_options: {as: :check_boxes}, layout: get_layout('associations'))
|
|
7
|
+
else
|
|
8
|
+
super
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
end
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
require 'rails/generators'
|
|
2
|
+
module KonoUtilsBootstrapView4
|
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
|
4
|
+
desc "Installa l'inizializzatore"
|
|
5
|
+
|
|
6
|
+
source_root File.expand_path('../templates', __FILE__)
|
|
7
|
+
|
|
8
|
+
def install_kono_utils
|
|
9
|
+
run "rails g kono_utils:install"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def copy_initializer
|
|
13
|
+
template 'kono_utils_bootstrap_view4.template', Rails.root.join('config', 'initializers', 'kono_utils_bootstrap_view4.rb')
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def install_node_dependency
|
|
17
|
+
yarn_packages = ['bootstrap@4.5.0', 'jquery@3.5.1', 'popper.js', 'moment', 'tempusdominus-bootstrap-4', '@fortawesome/fontawesome-free', 'data-confirm-modal']
|
|
18
|
+
run "yarn add #{yarn_packages.join(' ')}" unless yarn_packages.empty?
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def install_cell_concept_namespacer_on_application_record
|
|
22
|
+
inject_into_file 'app/models/application_record.rb', "\n include KonoUtilsBootstrapView4::BaseClassConceptNs", after: "ActiveRecord::Base"
|
|
23
|
+
rescue Exception => e
|
|
24
|
+
say "Attenzione, includere a mano KonoUtilsBootstrapView4::BaseClassConceptNs
|
|
25
|
+
nel modello da cui darivano i modelli del base editing - #{e.message}", :red
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def append_dependecy_to_assets
|
|
29
|
+
js_requirements = [
|
|
30
|
+
'kono_utils_bootstrap_view4/application'
|
|
31
|
+
]
|
|
32
|
+
KonoUtilsBootstrapView4.configuration.moment_js_locales.each do |l|
|
|
33
|
+
js_requirements << "moment/locale/#{l}.js"
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
rails6 = Gem::Version.new('6')
|
|
37
|
+
if rails6 <= Gem::Version.new(Rails.version)
|
|
38
|
+
say "in rails 6 dobbiamo avere webpacker che compila erb, creiamo un file erb che includa le nostre dipendenze", :yellow
|
|
39
|
+
run "rails webpacker:install:erb"
|
|
40
|
+
#cancelliamo il file di esempio
|
|
41
|
+
remove_file 'app/javascript/packs/hello_erb.js.erb'
|
|
42
|
+
template 'kono_utils_bootstrap_view4.js.erb.template', Rails.root.join('app', 'javascript', 'packs', 'application.js.erb')
|
|
43
|
+
say "Ricorda di aggiungere nel layout <%= javascript_pack_tag 'application' %>", :yellow
|
|
44
|
+
else
|
|
45
|
+
inject_into_file 'app/assets/javascripts/application.js',
|
|
46
|
+
"#{requirements.collect { |c| "\n//= require #{c}" }.join}\n",
|
|
47
|
+
before: "//= require_tree ."
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
requirements = [
|
|
52
|
+
'kono_utils_bootstrap_view4/application'
|
|
53
|
+
]
|
|
54
|
+
inject_into_file 'app/assets/stylesheets/application.css',
|
|
55
|
+
"#{requirements.collect { |c| "\n *= require #{c}" }.join}\n",
|
|
56
|
+
before: " *= require_tree ."
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def append_gem_dependency
|
|
61
|
+
|
|
62
|
+
dips = [
|
|
63
|
+
'cells-erb', # inserita in installazione come specificato qua http://trailblazer.to/gems/cells/rails.html#engine-render-problems
|
|
64
|
+
'cells-rails',
|
|
65
|
+
'kaminari-cells'
|
|
66
|
+
]
|
|
67
|
+
say "AGGIUNGO dipendenze per concepts, #{dips.join(" ")}", :green
|
|
68
|
+
|
|
69
|
+
dips.each do |dip|
|
|
70
|
+
gem dip
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// To reference this file, add <\%= javascript_pack_tag 'kono_utils_bootstrap_view4' %> to the appropriate
|
|
2
|
+
// layout file, like app/views/layouts/application.html.erb
|
|
3
|
+
|
|
4
|
+
// RICORDARSI di mantenere sincronizzate le dipendenze tra la versione non webpack negli assets,i moduli richiesti ecc
|
|
5
|
+
|
|
6
|
+
// jquery risulta essere ancora una dipendenza per bootstrap4.
|
|
7
|
+
global.jQuery = global.$ = require('jquery'); // rails-js cerca jquery in modo globale, quindi noi lo rendiamo globale in questo modo
|
|
8
|
+
|
|
9
|
+
global.Rails = require("@rails/ujs") // serve per data-confirm-modal, rendere Rails globale
|
|
10
|
+
global.Rails.start()
|
|
11
|
+
require("@rails/activestorage").start()
|
|
12
|
+
|
|
13
|
+
// inizio dipendenza per interfaccia Bootstrap4
|
|
14
|
+
import "@fortawesome/fontawesome-free/css/all.css";
|
|
15
|
+
require('bootstrap');
|
|
16
|
+
require('popper.js');
|
|
17
|
+
global.moment = require('moment');
|
|
18
|
+
require('tempusdominus-bootstrap-4');
|
|
19
|
+
require('data-confirm-modal');
|
|
20
|
+
global.KonoUtilsBootstrap4 = require("<%%= KonoUtilsBootstrapView4::Engine.root.join('app','assets','javascripts','kono_utils_bootstrap_view4','kono_utils_bootstrap_view4.js') %>");
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require "zeitwerk"
|
|
2
|
+
loader = Zeitwerk::Loader.for_gem
|
|
3
|
+
loader.ignore("#{__dir__}/generators")
|
|
4
|
+
loader.enable_reloading # you need to opt-in before setup
|
|
5
|
+
loader.setup
|
|
6
|
+
|
|
7
|
+
# require "kono_utils_bootstrap_view4/engine"
|
|
8
|
+
|
|
9
|
+
module KonoUtilsBootstrapView4
|
|
10
|
+
|
|
11
|
+
class << self
|
|
12
|
+
attr_writer :configuration
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# @return [Configuration]
|
|
16
|
+
def self.configuration
|
|
17
|
+
@configuration ||= Configuration.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def self.configure
|
|
21
|
+
yield configuration
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
loader.eager_load
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module KonoUtilsBootstrapView4
|
|
2
|
+
module ApplicationIconHelper
|
|
3
|
+
|
|
4
|
+
##
|
|
5
|
+
# Funzione clonata da una gemma, le fontawesome lo stiamo già impostando con webpack
|
|
6
|
+
def icon(style, name, text = nil, html_options = {})
|
|
7
|
+
text, html_options = nil, text if text.is_a?(Hash)
|
|
8
|
+
|
|
9
|
+
content_class = "#{style} fa-#{name}"
|
|
10
|
+
content_class << " #{html_options[:class]}" if html_options.key?(:class)
|
|
11
|
+
html_options[:class] = content_class
|
|
12
|
+
|
|
13
|
+
html = content_tag(:i, nil, html_options)
|
|
14
|
+
html << ' ' << text.to_s unless text.blank?
|
|
15
|
+
html
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def fa_icon(icon, text: nil, solid_regular:"s")
|
|
19
|
+
icon = content_tag(:i, nil, class: "fa#{solid_regular} fa-#{icon} fa-fw")
|
|
20
|
+
elements = [icon]
|
|
21
|
+
unless text.blank?
|
|
22
|
+
elements << text
|
|
23
|
+
elements.reverse!
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
safe_join(elements, " ")
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
module KonoUtilsBootstrapView4
|
|
2
|
+
module BaseClassConceptNs
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
class_methods do
|
|
6
|
+
include ActiveSupport::Inflector
|
|
7
|
+
|
|
8
|
+
##
|
|
9
|
+
# Metodo richiamato per restituire un array di path in cui ricercare le view prima della ricerca delle altre view
|
|
10
|
+
# all'interno della gemma o altro, serve per poter fare override di view anche senza la presenza della relativa
|
|
11
|
+
# classe Cell overridata.
|
|
12
|
+
def concept_prefix
|
|
13
|
+
[Rails.application.root.join('app', 'concepts', tableize(self.name), 'view')]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def concept_ns(view)
|
|
17
|
+
@_memo_concept ||= {}
|
|
18
|
+
ns = "#{tableize(self.name)}/#{view}"
|
|
19
|
+
|
|
20
|
+
unless @_memo_concept.key?(ns)
|
|
21
|
+
if safe_constantize(ns.camelize)
|
|
22
|
+
KonoUtilsBootstrapView4.configuration.logger.info { "TROVATA CLASSE PER : #{ns.camelize} --->>>" }
|
|
23
|
+
@_memo_concept[ns] = ns
|
|
24
|
+
else
|
|
25
|
+
@_memo_concept[ns] = false
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
if @_memo_concept[ns]
|
|
30
|
+
return @_memo_concept[ns]
|
|
31
|
+
else
|
|
32
|
+
KonoUtilsBootstrapView4.configuration.logger.debug { "CLASSE OVERRIDE NON TROVATA PER : #{ns.camelize}" }
|
|
33
|
+
|
|
34
|
+
"kono_utils/object/#{view}"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
##
|
|
40
|
+
# Ritorna il corretto layout per il componente, tenendo conto delle view con override
|
|
41
|
+
def layout_ns(name)
|
|
42
|
+
concept_ns(name).camelize.constantize
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class KonoUtilsBootstrapView4::Configuration
|
|
2
|
+
attr_accessor :moment_js_locales
|
|
3
|
+
|
|
4
|
+
#@return [ActiveSupport::TaggedLogging] log di kono utils bootstrap, default estende quello di rails
|
|
5
|
+
attr_reader :logger
|
|
6
|
+
|
|
7
|
+
def initialize
|
|
8
|
+
@moment_js_locales = I18n.available_locales
|
|
9
|
+
# inizializzo logger, come quello che mi verrebbe passato
|
|
10
|
+
self.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# @param [ActiveSupport::TaggedLogging] logger
|
|
14
|
+
# @return [ActiveSupport::TaggedLogging]
|
|
15
|
+
def logger=(logger)
|
|
16
|
+
raise "Not a ActiveSupport::TaggedLogging" unless logger.is_a? ActiveSupport::TaggedLogging
|
|
17
|
+
logger.push_tags("KonoUtils") unless logger.formatter.current_tags.include?("KonoUtils")
|
|
18
|
+
@logger = logger
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module KonoUtilsBootstrapView4
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# PORO che si occupa di gestire un campo da editare.
|
|
5
|
+
# questo serve per poter gestire le casistiche provenienti dagli editable attributes, che consistono in semplisy symbols
|
|
6
|
+
# o in hash che rappresentano le relazioni
|
|
7
|
+
class EditableField
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def initialize(f)
|
|
11
|
+
@field = f
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
##
|
|
16
|
+
# Restituisce il symbol che rappresenta il campo da editare
|
|
17
|
+
#
|
|
18
|
+
def name
|
|
19
|
+
|
|
20
|
+
if @field.is_a?(Hash)
|
|
21
|
+
@field.keys.first
|
|
22
|
+
else
|
|
23
|
+
@field.to_sym
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
##
|
|
30
|
+
# Solitamente questi campi sono da renderizzare come nascosti
|
|
31
|
+
# @return [TrueClass|FalseClass]
|
|
32
|
+
def is_hidden?
|
|
33
|
+
['id', '_destroy'].include?(name.to_s)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
##
|
|
37
|
+
# Controlla se il campo è di tipo nested (un hash con chiave ed una serie di campi interni)
|
|
38
|
+
def is_nested?
|
|
39
|
+
@field.is_a?(Hash)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
##
|
|
43
|
+
# Nei casi di campi nested, questo metodo restituisce un array di campi interni, normalizzati a EditableField
|
|
44
|
+
def inner_fields
|
|
45
|
+
is_nested? ? self.class.editable_fields_to_field_array(@field[name]) : []
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
# @return [Array<KonoUtilsBootstrapView4::EditableField>]
|
|
50
|
+
def self.editable_fields_to_field_array(attributes)
|
|
51
|
+
attributes.collect do |s|
|
|
52
|
+
|
|
53
|
+
if s.is_a?(Hash)
|
|
54
|
+
s.collect {|k, v| KonoUtilsBootstrapView4::EditableField.new({k => v})}
|
|
55
|
+
else
|
|
56
|
+
KonoUtilsBootstrapView4::EditableField.new(s)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
end.flatten
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
end
|
|
63
|
+
end
|