infold 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +33 -0
- data/Rakefile +8 -0
- data/app/assets/builds/infold.css +17147 -0
- data/app/assets/builds/infold.css.map +7 -0
- data/app/assets/builds/infold.js +17202 -0
- data/app/assets/builds/infold.js.map +7 -0
- data/app/assets/config/infold_manifest.js +0 -0
- data/app/assets/stylesheets/infold.custom.css +76 -0
- data/app/assets/stylesheets/infold.custom.css.map +1 -0
- data/app/components/infold/input_fieldset_component.html.haml +14 -0
- data/app/components/infold/input_fieldset_component.rb +22 -0
- data/app/components/infold/radio_fieldset_component.html.haml +11 -0
- data/app/components/infold/radio_fieldset_component.rb +14 -0
- data/app/components/infold/select_fieldset_component.html.haml +7 -0
- data/app/components/infold/select_fieldset_component.rb +15 -0
- data/app/controllers/infold/app_view_forms_controller.rb +64 -0
- data/app/controllers/infold/app_view_shows_controller.rb +60 -0
- data/app/controllers/infold/application_controller.rb +17 -0
- data/app/controllers/infold/apps_controller.rb +68 -0
- data/app/controllers/infold/attachment_fields_controller.rb +59 -0
- data/app/controllers/infold/builds_controller.rb +21 -0
- data/app/controllers/infold/columns_controller.rb +89 -0
- data/app/controllers/infold/csv_columns_controller.rb +43 -0
- data/app/controllers/infold/form_associations_controller.rb +57 -0
- data/app/controllers/infold/menu_directories_controller.rb +19 -0
- data/app/controllers/infold/menus_controller.rb +35 -0
- data/app/controllers/infold/models_controller.rb +28 -0
- data/app/controllers/infold/pages_controller.rb +8 -0
- data/app/controllers/infold/search_conditions_controller.rb +63 -0
- data/app/controllers/infold/search_result_fields_controller.rb +62 -0
- data/app/controllers/infold/show_associations_controller.rb +54 -0
- data/app/controllers/infold/sync_dbs_controller.rb +13 -0
- data/app/decorators/infold/app_view_form_decorator.rb +56 -0
- data/app/decorators/infold/app_view_index_decorator.rb +53 -0
- data/app/decorators/infold/app_view_modal_decorator.rb +13 -0
- data/app/decorators/infold/app_view_show_decorator.rb +26 -0
- data/app/decorators/infold/attachment_field_decorator.rb +40 -0
- data/app/decorators/infold/build_decorator.rb +15 -0
- data/app/decorators/infold/column_display_decorator.rb +59 -0
- data/app/decorators/infold/csv_column_decorator.rb +5 -0
- data/app/decorators/infold/form_association_column_decorator.rb +5 -0
- data/app/decorators/infold/form_column_decorator.rb +57 -0
- data/app/decorators/infold/model_association_decorator.rb +39 -0
- data/app/decorators/infold/model_column_decorator.rb +201 -0
- data/app/decorators/infold/model_decorator.rb +27 -0
- data/app/decorators/infold/search_condition_decorator.rb +101 -0
- data/app/decorators/infold/search_result_column_decorator.rb +5 -0
- data/app/decorators/infold/show_association_column_decorator.rb +5 -0
- data/app/decorators/infold/show_association_decorator.rb +13 -0
- data/app/decorators/infold/show_field_decorator.rb +5 -0
- data/app/helpers/infold/application_helper.rb +29 -0
- data/app/javascript/admin.scss +5 -0
- data/app/javascript/controllers/application.js +9 -0
- data/app/javascript/controllers/attachment_field_controller.js +19 -0
- data/app/javascript/controllers/column_controller.js +20 -0
- data/app/javascript/controllers/flash_controller.js +10 -0
- data/app/javascript/controllers/index.js +32 -0
- data/app/javascript/controllers/menu_controller.js +26 -0
- data/app/javascript/controllers/menu_directory_controller.js +16 -0
- data/app/javascript/controllers/modal_controller.js +15 -0
- data/app/javascript/controllers/nested_form_controller.js +32 -0
- data/app/javascript/controllers/search_condition_controller.js +41 -0
- data/app/javascript/controllers/sortable_controller.js +19 -0
- data/app/javascript/infold.js +22 -0
- data/app/javascript/infold.scss +68 -0
- data/app/javascript/stylesheets/admin/common.scss +112 -0
- data/app/javascript/stylesheets/admin/form.scss +52 -0
- data/app/javascript/stylesheets/admin/index.scss +93 -0
- data/app/javascript/stylesheets/admin/modal.scss +37 -0
- data/app/javascript/stylesheets/admin/show.scss +16 -0
- data/app/jobs/infold/application_job.rb +4 -0
- data/app/mailers/infold/application_mailer.rb +6 -0
- data/app/models/concerns/infold/app_view_search_concern.rb +72 -0
- data/app/models/concerns/infold/form_column_concern.rb +63 -0
- data/app/models/infold/app.rb +41 -0
- data/app/models/infold/app_view.rb +27 -0
- data/app/models/infold/app_view_form.rb +43 -0
- data/app/models/infold/app_view_index.rb +36 -0
- data/app/models/infold/app_view_modal.rb +21 -0
- data/app/models/infold/app_view_show.rb +47 -0
- data/app/models/infold/application_record.rb +7 -0
- data/app/models/infold/attachment_field.rb +35 -0
- data/app/models/infold/build.rb +35 -0
- data/app/models/infold/csv_column.rb +9 -0
- data/app/models/infold/enum.rb +12 -0
- data/app/models/infold/form_association.rb +41 -0
- data/app/models/infold/form_association_attachment_field.rb +5 -0
- data/app/models/infold/form_association_column.rb +5 -0
- data/app/models/infold/form_association_field.rb +7 -0
- data/app/models/infold/form_attachment_field.rb +5 -0
- data/app/models/infold/form_column.rb +5 -0
- data/app/models/infold/form_field.rb +7 -0
- data/app/models/infold/menu_item.rb +45 -0
- data/app/models/infold/model.rb +40 -0
- data/app/models/infold/model_association.rb +51 -0
- data/app/models/infold/model_column.rb +127 -0
- data/app/models/infold/project.rb +29 -0
- data/app/models/infold/schema_rb.rb +177 -0
- data/app/models/infold/search_condition.rb +62 -0
- data/app/models/infold/search_result_attachment_field.rb +5 -0
- data/app/models/infold/search_result_column.rb +6 -0
- data/app/models/infold/search_result_field.rb +12 -0
- data/app/models/infold/show_association.rb +42 -0
- data/app/models/infold/show_association_attachment_field.rb +5 -0
- data/app/models/infold/show_association_column.rb +5 -0
- data/app/models/infold/show_association_field.rb +8 -0
- data/app/models/infold/show_attachment_field.rb +7 -0
- data/app/models/infold/show_column.rb +7 -0
- data/app/models/infold/show_field.rb +11 -0
- data/app/validators/infold/ruby_code_validator.rb +9 -0
- data/app/views/infold/app_view_forms/_bulk_form.html.haml +16 -0
- data/app/views/infold/app_view_forms/_tab.html.haml +12 -0
- data/app/views/infold/app_view_forms/show.html.haml +7 -0
- data/app/views/infold/app_view_shows/_bulk_form.html.haml +15 -0
- data/app/views/infold/app_view_shows/_tab.html.haml +12 -0
- data/app/views/infold/app_view_shows/show.html.haml +7 -0
- data/app/views/infold/app_view_shows/update.turbo_stream.haml +1 -0
- data/app/views/infold/application/_flash.html.haml +6 -0
- data/app/views/infold/apps/_form.html.haml +30 -0
- data/app/views/infold/apps/_page_header.html.haml +5 -0
- data/app/views/infold/apps/_tab.html.haml +13 -0
- data/app/views/infold/apps/create.turbo_stream.haml +3 -0
- data/app/views/infold/apps/edit.html.haml +6 -0
- data/app/views/infold/apps/new.html.haml +8 -0
- data/app/views/infold/apps/update.turbo_stream.haml +3 -0
- data/app/views/infold/associations/_form.html.haml +18 -0
- data/app/views/infold/associations/edit.html.haml +5 -0
- data/app/views/infold/attachment_fields/_form.html.haml +51 -0
- data/app/views/infold/attachment_fields/edit.html.haml +7 -0
- data/app/views/infold/attachment_fields/form.turbo_stream.haml +4 -0
- data/app/views/infold/attachment_fields/index.html.haml +28 -0
- data/app/views/infold/attachment_fields/new.html.haml +7 -0
- data/app/views/infold/builds/create.turbo_stream.haml +8 -0
- data/app/views/infold/builds/new.html.haml +23 -0
- data/app/views/infold/columns/_bulk_form.html.haml +18 -0
- data/app/views/infold/columns/_row.html.haml +26 -0
- data/app/views/infold/columns/_setting.html.haml +42 -0
- data/app/views/infold/columns/bulk.turbo_stream.haml +3 -0
- data/app/views/infold/columns/edit.html.haml +5 -0
- data/app/views/infold/columns/index.html.haml +9 -0
- data/app/views/infold/columns/update.turbo_stream.haml +8 -0
- data/app/views/infold/csv_columns/_bulk_form.html.haml +14 -0
- data/app/views/infold/csv_columns/_row.html.haml +10 -0
- data/app/views/infold/csv_columns/bulk.turbo_stream.haml +3 -0
- data/app/views/infold/csv_columns/index.html.haml +7 -0
- data/app/views/infold/enums/_form.html.haml +13 -0
- data/app/views/infold/enums/_index.html.haml +27 -0
- data/app/views/infold/enums/index.html.haml +5 -0
- data/app/views/infold/form_association_attachment_fields/_form.html.haml +13 -0
- data/app/views/infold/form_association_columns/_form.html.haml +20 -0
- data/app/views/infold/form_associations/_bulk_form.html.haml +16 -0
- data/app/views/infold/form_associations/_form.html.haml +19 -0
- data/app/views/infold/form_associations/show.html.haml +7 -0
- data/app/views/infold/form_associations/update.turbo_stream.haml +1 -0
- data/app/views/infold/form_attachment_fields/_form.html.haml +14 -0
- data/app/views/infold/form_columns/_form.html.haml +21 -0
- data/app/views/infold/menu_directories/_item.html.haml +20 -0
- data/app/views/infold/menu_directories/create.turbo_stream.haml +2 -0
- data/app/views/infold/menu_directories/destroy.turbo_stream.haml +5 -0
- data/app/views/infold/menus/_app.html.haml +10 -0
- data/app/views/infold/menus/_items.html.haml +7 -0
- data/app/views/infold/menus/edit.html.haml +23 -0
- data/app/views/infold/menus/update.turbo_stream.haml +3 -0
- data/app/views/infold/models/_form.html.haml +12 -0
- data/app/views/infold/models/_tab.html.haml +7 -0
- data/app/views/infold/models/edit.html.haml +9 -0
- data/app/views/infold/models/update.turbo_stream.haml +3 -0
- data/app/views/infold/search_conditions/_bulk_form.html.haml +24 -0
- data/app/views/infold/search_conditions/_column_options.html.haml +3 -0
- data/app/views/infold/search_conditions/_form_kind_options.html.haml +3 -0
- data/app/views/infold/search_conditions/_row.html.haml +31 -0
- data/app/views/infold/search_conditions/_sign_options.html.haml +3 -0
- data/app/views/infold/search_conditions/_tab.html.haml +12 -0
- data/app/views/infold/search_conditions/bulk.turbo_stream.haml +3 -0
- data/app/views/infold/search_conditions/index.html.haml +7 -0
- data/app/views/infold/search_conditions/refresh_columns.turbo_stream.haml +6 -0
- data/app/views/infold/search_conditions/refresh_form_kinds.turbo_stream.haml +4 -0
- data/app/views/infold/search_conditions/refresh_signs.turbo_stream.haml +2 -0
- data/app/views/infold/search_result_attachment_fields/_form.html.haml +12 -0
- data/app/views/infold/search_result_columns/_form.html.haml +12 -0
- data/app/views/infold/search_result_fields/_bulk_form.html.haml +23 -0
- data/app/views/infold/search_result_fields/_row.html.haml +12 -0
- data/app/views/infold/search_result_fields/bulk.turbo_stream.haml +3 -0
- data/app/views/infold/search_result_fields/index.html.haml +7 -0
- data/app/views/infold/show_association_attachment_fields/_form.html.haml +12 -0
- data/app/views/infold/show_association_columns/_form.html.haml +12 -0
- data/app/views/infold/show_associations/_bulk_form.html.haml +15 -0
- data/app/views/infold/show_associations/_form.html.haml +14 -0
- data/app/views/infold/show_associations/show.html.haml +7 -0
- data/app/views/infold/show_associations/update.turbo_stream.haml +1 -0
- data/app/views/infold/show_attachment_fields/_form.html.haml +12 -0
- data/app/views/infold/show_columns/_form.html.haml +12 -0
- data/app/views/infold/sync_dbs/create.turbo_stream.haml +1 -0
- data/app/views/infold/sync_dbs/show.html.haml +11 -0
- data/app/views/layouts/infold/application.html.haml +112 -0
- data/config/database.yml +11 -0
- data/config/initializers/infold_assets.rb +12 -0
- data/config/initializers/infold_locale.rb +1 -0
- data/config/locales/infold/ar/app/en.yml +6 -0
- data/config/locales/infold/ar/app/ja.yml +6 -0
- data/config/locales/infold/ar/app_view/en.yml +4 -0
- data/config/locales/infold/ar/app_view/ja.yml +4 -0
- data/config/locales/infold/ar/app_view_form/en.yml +10 -0
- data/config/locales/infold/ar/app_view_form/ja.yml +10 -0
- data/config/locales/infold/ar/app_view_index/en.yml +12 -0
- data/config/locales/infold/ar/app_view_index/ja.yml +12 -0
- data/config/locales/infold/ar/app_view_modal/en.yml +6 -0
- data/config/locales/infold/ar/app_view_modal/ja.yml +6 -0
- data/config/locales/infold/ar/app_view_show/en.yml +9 -0
- data/config/locales/infold/ar/app_view_show/ja.yml +9 -0
- data/config/locales/infold/ar/csv_column/en.yml +8 -0
- data/config/locales/infold/ar/csv_column/ja.yml +8 -0
- data/config/locales/infold/ar/form_association_column/ja.yml +15 -0
- data/config/locales/infold/ar/form_column/ja.yml +15 -0
- data/config/locales/infold/ar/menu_item/ja.yml +6 -0
- data/config/locales/infold/ar/model/ja.yml +11 -0
- data/config/locales/infold/ar/model_association/en.yml +6 -0
- data/config/locales/infold/ar/model_association/ja.yml +10 -0
- data/config/locales/infold/ar/model_column/en.yml +34 -0
- data/config/locales/infold/ar/model_column/ja.yml +34 -0
- data/config/locales/infold/ar/search_condition/en.yml +30 -0
- data/config/locales/infold/ar/search_condition/ja.yml +30 -0
- data/config/locales/infold/ar/search_result_field/en.yml +9 -0
- data/config/locales/infold/ar/search_result_field/ja.yml +9 -0
- data/config/locales/infold/en.yml +40 -0
- data/config/locales/infold/ja.yml +41 -0
- data/config/routes.rb +40 -0
- data/db/infold_test.sqlite3 +0 -0
- data/db/migrate/20220419050641_create_infold_projects.rb +9 -0
- data/db/migrate/20220419051049_create_infold_models.rb +15 -0
- data/db/migrate/20220419051601_create_infold_columns.rb +23 -0
- data/db/migrate/20220419051718_create_infold_attachment_fields.rb +15 -0
- data/db/migrate/20220419052017_create_infold_model_associations.rb +16 -0
- data/db/migrate/20220419052154_create_infold_apps.rb +10 -0
- data/db/migrate/20220419052320_create_infold_app_views.rb +14 -0
- data/db/migrate/20220419052450_create_infold_search_conditions.rb +14 -0
- data/db/migrate/20220419052707_create_infold_search_result_fields.rb +18 -0
- data/db/migrate/20220419053338_create_infold_show_fields.rb +18 -0
- data/db/migrate/20220419053425_create_infold_show_association_fields.rb +15 -0
- data/db/migrate/20220419060937_create_infold_form_fields.rb +19 -0
- data/db/migrate/20220419061148_create_infold_form_association_fields.rb +16 -0
- data/db/migrate/20220419061725_create_infold_enums.rb +16 -0
- data/db/migrate/20220419062020_create_infold_menu_items.rb +16 -0
- data/db/migrate/20220419062119_create_infold_csv_columns.rb +12 -0
- data/db/schema.rb +260 -0
- data/lib/generators/infold/app/app_generator.rb +134 -0
- data/lib/generators/infold/app/templates/controller.rb.tt +100 -0
- data/lib/generators/infold/app/templates/search_form.rb.tt +31 -0
- data/lib/generators/infold/app/templates/views/_association_fields.haml.tt +16 -0
- data/lib/generators/infold/app/templates/views/_detail.haml.tt +100 -0
- data/lib/generators/infold/app/templates/views/_detail_modal_wrapper.haml.tt +9 -0
- data/lib/generators/infold/app/templates/views/_form.haml.tt +66 -0
- data/lib/generators/infold/app/templates/views/_index_row.haml.tt +17 -0
- data/lib/generators/infold/app/templates/views/_show_operation.haml.tt +5 -0
- data/lib/generators/infold/app/templates/views/edit+turbo_frame.haml.tt +13 -0
- data/lib/generators/infold/app/templates/views/edit.haml.tt +10 -0
- data/lib/generators/infold/app/templates/views/form.turbo_stream.haml.tt +17 -0
- data/lib/generators/infold/app/templates/views/index+turbo_frame.haml.tt +43 -0
- data/lib/generators/infold/app/templates/views/index.csv.ruby.tt +18 -0
- data/lib/generators/infold/app/templates/views/index.haml.tt +49 -0
- data/lib/generators/infold/app/templates/views/new+turbo_frame.haml.tt +14 -0
- data/lib/generators/infold/app/templates/views/new.haml.tt +12 -0
- data/lib/generators/infold/app/templates/views/show+turbo_frame.haml.tt +4 -0
- data/lib/generators/infold/app/templates/views/show.haml.tt +9 -0
- data/lib/generators/infold/install/install_generator.rb +151 -0
- data/lib/generators/infold/install/templates/app/components/admin/enum_badge_component.html.haml +4 -0
- data/lib/generators/infold/install/templates/app/components/admin/enum_badge_component.rb +11 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/checkbox_fieldset_component.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/checkbox_fieldset_component.rb +15 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/datetime_fieldset_component.html.haml +20 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/datetime_fieldset_component.rb +13 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/file_upload_component.html.haml +12 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/file_upload_component.rb +12 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/input_fieldset_component.html.haml +14 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/input_fieldset_component.rb +24 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/radio_fieldset_component.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/radio_fieldset_component.rb +15 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/relation_fieldset_component.html.haml +17 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/relation_fieldset_component.rb +21 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/select_fieldset_component.html.haml +7 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/select_fieldset_component.rb +16 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/switch_element_component.html.haml +4 -0
- data/lib/generators/infold/install/templates/app/components/admin/form/switch_element_component.rb +12 -0
- data/lib/generators/infold/install/templates/app/components/admin/remote_modal_component.html.haml +8 -0
- data/lib/generators/infold/install/templates/app/components/admin/remote_modal_component.rb +21 -0
- data/lib/generators/infold/install/templates/app/components/admin/sortable_th_component.html.haml +4 -0
- data/lib/generators/infold/install/templates/app/components/admin/sortable_th_component.rb +27 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/admin_users/registrations_controller.rb +71 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/admin_users/sessions_controller.rb +39 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/admin_users_controller.rb +62 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/base_controller.rb +17 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/errors_controller.rb +8 -0
- data/lib/generators/infold/install/templates/app/controllers/admin/turbo_devise_controller.rb +21 -0
- data/lib/generators/infold/install/templates/app/controllers/concerns/admin/error_handlers.rb +40 -0
- data/lib/generators/infold/install/templates/app/forms/admin/search_form_base.rb +48 -0
- data/lib/generators/infold/install/templates/app/helpers/admin_helper.rb +37 -0
- data/lib/generators/infold/install/templates/app/models/concerns/admin/datetime_field_concern.rb +57 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_detail.html.haml +14 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_form.html.haml +6 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_index_row.html.haml +9 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_show_operation.html.haml +4 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/edit.html+turbo_frame.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/edit.html.haml +10 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/form.turbo_stream.haml +4 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/index.html.haml +21 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/new.html+turbo_frame.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/new.html.haml +10 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/registrations/edit.html.haml +15 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/sessions/new.html.haml +19 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/show.html+turbo_frame.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/show.html.haml +8 -0
- data/lib/generators/infold/install/templates/app/views/admin/common/_flash.html.haml +6 -0
- data/lib/generators/infold/install/templates/app/views/admin/common/_header_menu.html.haml +0 -0
- data/lib/generators/infold/install/templates/app/views/admin/errors/bad_request.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/errors/forbidden.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/errors/internal_server_error.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/errors/not_found.html.haml +11 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_first_page.html.haml +2 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_gap.html.haml +2 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_last_page.html.haml +2 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_next_page.html.haml +2 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_page.html.haml +6 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_paginator.html.haml +12 -0
- data/lib/generators/infold/install/templates/app/views/admin/kaminari/_prev_page.html.haml +2 -0
- data/lib/generators/infold/install/templates/app/views/layouts/admin.haml.tt +49 -0
- data/lib/generators/infold/install/templates/config/locales/infold.en.yml +28 -0
- data/lib/generators/infold/install/templates/config/locales/infold.ja.yml +28 -0
- data/lib/generators/infold/install/templates/config/routes/admin.rb +13 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/application.js +9 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/datepicker_controller.js +8 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/flash_controller.js +10 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/index.js +26 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/index_page_controller.js +33 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/nested_form_controller.js +33 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/relation_search_controller.js +21 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/remote_modal_controller.js +37 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/timepicker_controller.js +8 -0
- data/lib/generators/infold/install/templates/javascript/admin/stylesheets/custom.css +290 -0
- data/lib/generators/infold/install/templates/javascript/admin/stylesheets/custom.css.map +1 -0
- data/lib/generators/infold/install/templates/javascript/esbuild/admin.js +10 -0
- data/lib/generators/infold/install/templates/javascript/webpacker/admin.js +9 -0
- data/lib/generators/infold/model/model_generator.rb +50 -0
- data/lib/generators/infold/model/templates/decorator.rb.tt +10 -0
- data/lib/generators/infold/model/templates/model.rb.tt +59 -0
- data/lib/generators/infold/project/project_generator.rb +66 -0
- data/lib/generators/infold/project/templates/_header_menu.haml.tt +17 -0
- data/lib/generators/infold/project/templates/locales/form.yml.tt +11 -0
- data/lib/generators/infold/project/templates/locales/model.yml.tt +43 -0
- data/lib/generators/infold/project/templates/relation_fieldset_component.rb.tt +30 -0
- data/lib/infold/engine.rb +15 -0
- data/lib/infold/version.rb +3 -0
- data/lib/infold.rb +6 -0
- data/lib/tasks/infold_tasks.rake +125 -0
- metadata +556 -0
@@ -0,0 +1,290 @@
|
|
1
|
+
@charset "UTF-8";
|
2
|
+
body {
|
3
|
+
font-family: -apple-system, BlinkMacSystemFont, Roboto, "Segoe UI", "Helvetica Neue", HelveticaNeue, Verdana, Meiryo, sans-serif;
|
4
|
+
font-weight: 400;
|
5
|
+
line-height: 1.5;
|
6
|
+
color: #6c757d;
|
7
|
+
}
|
8
|
+
|
9
|
+
.fw-bold {
|
10
|
+
font-weight: bold !important;
|
11
|
+
}
|
12
|
+
|
13
|
+
.vam {
|
14
|
+
vertical-align: middle !important;
|
15
|
+
}
|
16
|
+
|
17
|
+
.tac {
|
18
|
+
text-align: center !important;
|
19
|
+
}
|
20
|
+
|
21
|
+
.thead-no-border tr th {
|
22
|
+
border-top: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
.enum_badge {
|
26
|
+
font-size: 85%;
|
27
|
+
line-height: initial;
|
28
|
+
}
|
29
|
+
|
30
|
+
i.pointer:hover {
|
31
|
+
cursor: pointer;
|
32
|
+
}
|
33
|
+
|
34
|
+
.cursor_pointer:hover {
|
35
|
+
cursor: pointer;
|
36
|
+
}
|
37
|
+
|
38
|
+
.rounded-left-0 {
|
39
|
+
border-top-left-radius: 0 !important;
|
40
|
+
border-bottom-left-radius: 0 !important;
|
41
|
+
}
|
42
|
+
|
43
|
+
.rounded-right-0 {
|
44
|
+
border-top-right-radius: 0 !important;
|
45
|
+
border-bottom-right-radius: 0 !important;
|
46
|
+
}
|
47
|
+
|
48
|
+
.select2-results__option:empty:after {
|
49
|
+
content: "未選択";
|
50
|
+
}
|
51
|
+
|
52
|
+
.timepicker .form-control {
|
53
|
+
width: 100px !important;
|
54
|
+
}
|
55
|
+
.timepicker .btn_time_now {
|
56
|
+
border-top-left-radius: 0 !important;
|
57
|
+
border-bottom-left-radius: 0 !important;
|
58
|
+
border-top-right-radius: 0.25rem !important;
|
59
|
+
border-bottom-right-radius: 0.25rem !important;
|
60
|
+
}
|
61
|
+
|
62
|
+
.card_title {
|
63
|
+
font-weight: bold;
|
64
|
+
font-size: 0.9rem;
|
65
|
+
margin: 5px 0;
|
66
|
+
}
|
67
|
+
|
68
|
+
.air-datepicker-global-container {
|
69
|
+
z-index: 10000;
|
70
|
+
}
|
71
|
+
|
72
|
+
.form-control:disabled, .form-control[readonly] {
|
73
|
+
background-color: #eee;
|
74
|
+
}
|
75
|
+
|
76
|
+
#flashes {
|
77
|
+
position: fixed;
|
78
|
+
bottom: 80px;
|
79
|
+
width: 100%;
|
80
|
+
z-index: 2000;
|
81
|
+
}
|
82
|
+
@keyframes hideop {
|
83
|
+
0% {
|
84
|
+
opacity: 1;
|
85
|
+
}
|
86
|
+
100% {
|
87
|
+
opacity: 0;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
#flashes .alert {
|
91
|
+
animation: hideop 0.5s linear 0s;
|
92
|
+
animation-delay: 3s;
|
93
|
+
animation-fill-mode: forwards;
|
94
|
+
padding-top: 8px;
|
95
|
+
padding-bottom: 8px;
|
96
|
+
}
|
97
|
+
#flashes .alert-dismissible .btn-close {
|
98
|
+
padding-top: 4px;
|
99
|
+
}
|
100
|
+
|
101
|
+
.bg-light {
|
102
|
+
color: #626976 !important;
|
103
|
+
}
|
104
|
+
|
105
|
+
h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
|
106
|
+
font-weight: bold;
|
107
|
+
}
|
108
|
+
|
109
|
+
.index_page {
|
110
|
+
height: 100%;
|
111
|
+
}
|
112
|
+
|
113
|
+
.table_wrapper {
|
114
|
+
overflow-y: auto;
|
115
|
+
display: block;
|
116
|
+
width: 100%;
|
117
|
+
overflow-x: auto;
|
118
|
+
-webkit-overflow-scrolling: touch;
|
119
|
+
border-top: 1px solid rgba(98, 105, 118, 0.16);
|
120
|
+
}
|
121
|
+
.table_wrapper table {
|
122
|
+
margin-bottom: 0;
|
123
|
+
}
|
124
|
+
.table_wrapper thead tr {
|
125
|
+
border-width: 0;
|
126
|
+
}
|
127
|
+
.table_wrapper thead th {
|
128
|
+
position: -webkit-sticky;
|
129
|
+
position: sticky;
|
130
|
+
top: 0;
|
131
|
+
border-top: 0 !important;
|
132
|
+
font-size: 0.75rem;
|
133
|
+
font-weight: bold;
|
134
|
+
}
|
135
|
+
.table_wrapper thead .sortable {
|
136
|
+
text-decoration: underline;
|
137
|
+
}
|
138
|
+
.table_wrapper thead .sortable:hover {
|
139
|
+
cursor: pointer;
|
140
|
+
}
|
141
|
+
.table_wrapper tbody tr {
|
142
|
+
border-top: none;
|
143
|
+
}
|
144
|
+
.table_wrapper tbody tr:not(:last-child) {
|
145
|
+
border-bottom: none;
|
146
|
+
}
|
147
|
+
.table_wrapper tbody tr:nth-of-type(even) {
|
148
|
+
background-color: #f1f3fa;
|
149
|
+
}
|
150
|
+
.table_wrapper th, .table_wrapper td {
|
151
|
+
word-break: break-all;
|
152
|
+
}
|
153
|
+
.table_wrapper th p, .table_wrapper td p {
|
154
|
+
margin-bottom: 0.8rem;
|
155
|
+
}
|
156
|
+
.table_wrapper .image_cell img {
|
157
|
+
max-width: 160px;
|
158
|
+
}
|
159
|
+
.table_wrapper .icon_cell {
|
160
|
+
width: 40px;
|
161
|
+
}
|
162
|
+
|
163
|
+
.table-responsive th, .table-responsive td {
|
164
|
+
white-space: nowrap;
|
165
|
+
}
|
166
|
+
.table-responsive select.form-control {
|
167
|
+
width: auto;
|
168
|
+
}
|
169
|
+
|
170
|
+
.left_conditions {
|
171
|
+
width: 240px;
|
172
|
+
}
|
173
|
+
@media (max-width: 767px) {
|
174
|
+
.left_conditions {
|
175
|
+
width: 100%;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
|
179
|
+
.right_results {
|
180
|
+
width: calc(100% - 250px);
|
181
|
+
}
|
182
|
+
@media (max-width: 767px) {
|
183
|
+
.right_results {
|
184
|
+
width: 100%;
|
185
|
+
}
|
186
|
+
}
|
187
|
+
|
188
|
+
.list_show h5 {
|
189
|
+
margin-bottom: 0.1rem;
|
190
|
+
}
|
191
|
+
.list_show li {
|
192
|
+
color: #626976;
|
193
|
+
background-color: #fff;
|
194
|
+
padding: 0.6rem 0.9rem;
|
195
|
+
border-color: #EEEFF0;
|
196
|
+
}
|
197
|
+
.list_show li:hover {
|
198
|
+
background-color: #F2F3F4;
|
199
|
+
}
|
200
|
+
|
201
|
+
.invalid_message {
|
202
|
+
width: 100%;
|
203
|
+
font-size: 85.71428571%;
|
204
|
+
color: #d63939;
|
205
|
+
}
|
206
|
+
|
207
|
+
label.form-check-label:hover {
|
208
|
+
cursor: pointer;
|
209
|
+
}
|
210
|
+
|
211
|
+
.form-control-plaintext:focus {
|
212
|
+
outline: solid transparent;
|
213
|
+
}
|
214
|
+
|
215
|
+
.custom-control {
|
216
|
+
margin-bottom: 0.4rem;
|
217
|
+
}
|
218
|
+
|
219
|
+
.form_divide {
|
220
|
+
border-top: 1px solid #eef2f7;
|
221
|
+
}
|
222
|
+
|
223
|
+
.is-invalid {
|
224
|
+
color: #fa5c7c;
|
225
|
+
border-color: #fa5c7c;
|
226
|
+
}
|
227
|
+
|
228
|
+
.nested_form_table th {
|
229
|
+
font-size: 0.8rem !important;
|
230
|
+
padding-top: 0.3rem !important;
|
231
|
+
padding-bottom: 0.3rem !important;
|
232
|
+
}
|
233
|
+
.nested_form_table .nested_form {
|
234
|
+
min-width: 120px;
|
235
|
+
}
|
236
|
+
.nested_form_table .nested_datetime_form {
|
237
|
+
min-width: 270px;
|
238
|
+
}
|
239
|
+
|
240
|
+
.input-group-sm > .form-control,
|
241
|
+
.form-select-sm,
|
242
|
+
.form-control-sm {
|
243
|
+
padding: 0.25rem 0.3rem;
|
244
|
+
}
|
245
|
+
|
246
|
+
input[type=number].form-control-sm {
|
247
|
+
padding-right: 0.7rem;
|
248
|
+
}
|
249
|
+
|
250
|
+
.modal_h100 {
|
251
|
+
height: 100%;
|
252
|
+
margin-top: 0;
|
253
|
+
margin-bottom: 0;
|
254
|
+
}
|
255
|
+
.modal_h100 .modal-content {
|
256
|
+
height: 100%;
|
257
|
+
}
|
258
|
+
|
259
|
+
.right_justified .modal-dialog {
|
260
|
+
margin-left: auto !important;
|
261
|
+
margin-right: 0 !important;
|
262
|
+
}
|
263
|
+
|
264
|
+
.modal-header,
|
265
|
+
.modal-body,
|
266
|
+
.modal-footer {
|
267
|
+
padding: 1rem;
|
268
|
+
}
|
269
|
+
|
270
|
+
.modal-backdrop.show {
|
271
|
+
opacity: 0.15;
|
272
|
+
}
|
273
|
+
|
274
|
+
.modal-content {
|
275
|
+
border-color: #ccc;
|
276
|
+
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;
|
277
|
+
}
|
278
|
+
|
279
|
+
@media (min-width: 992px) {
|
280
|
+
.modal-xl {
|
281
|
+
max-width: 850px;
|
282
|
+
}
|
283
|
+
}
|
284
|
+
@media (min-width: 1200px) {
|
285
|
+
.modal-xl {
|
286
|
+
max-width: 950px;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
|
290
|
+
/*# sourceMappingURL=custom.css.map */
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../../../../../../app/javascript/stylesheets/admin/common.scss","../../../../../../../../app/javascript/stylesheets/admin/index.scss","../../../../../../../../app/javascript/stylesheets/admin/show.scss","../../../../../../../../app/javascript/stylesheets/admin/form.scss","../../../../../../../../app/javascript/stylesheets/admin/modal.scss"],"names":[],"mappings":";AAAA;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;;;AAIF;EACE;;;AAIA;EACE;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;EACA;EACA;;AACA;EACE;IACE;;EAEF;IACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AC9GF;EACE;;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;AAKF;EACE;;AAGF;EACE;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;;AAGF;EACE;;;AAKF;EACE;;AAGF;EACE;;;AAIJ;EACE;;AACA;EAFF;IAGI;;;;AAIJ;EACE;;AACA;EAFF;IAGI;;;;ACzFF;EACE;;AAGF;EACE;EACA;EACA;EACA;;AAGF;EACE;;;ACbJ;EACE;EACA;EACA;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAGF;EACE;EACA;;;AAIA;EACE;EACA;EACA;;AAGF;EACE;;AAGF;EACE;;;AAIJ;AAAA;AAAA;EAGE;;;AAGF;EACE;;;AClDF;EACE;EACA;EACA;;AAEA;EACE;;;AAKF;EACE;EACA;;;AAUJ;AAAA;AAAA;EAGE;;;AAGF;EACE;;;AAGF;EACE;EACA","file":"custom.css"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
// Entry point for the build script in your package.json
|
2
|
+
import "@hotwired/turbo-rails"
|
3
|
+
import * as ActiveStorage from "@rails/activestorage"
|
4
|
+
ActiveStorage.start()
|
5
|
+
import "@tabler/core/dist/css/tabler.css"
|
6
|
+
import "@tabler/core/dist/js/tabler.js"
|
7
|
+
import "./admin/controllers"
|
8
|
+
import "./admin/custom.css"
|
9
|
+
|
10
|
+
document.currentModals = []
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require("@hotwired/turbo-rails")
|
2
|
+
require("@rails/activestorage").start()
|
3
|
+
require("@tabler/core/dist/js/tabler.js")
|
4
|
+
require("../admin/controllers")
|
5
|
+
|
6
|
+
require("@tabler/core/src/scss/tabler.scss")
|
7
|
+
require("../admin/custom.scss")
|
8
|
+
|
9
|
+
document.currentModals = []
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Infold
|
2
|
+
class ModelGenerator < Rails::Generators::NamedBase
|
3
|
+
source_root File.expand_path('templates', __dir__)
|
4
|
+
|
5
|
+
def setup
|
6
|
+
raise '' if name.to_i == -1
|
7
|
+
@model = Model.includes(
|
8
|
+
:columns,
|
9
|
+
:attachment_fields,
|
10
|
+
:associations,
|
11
|
+
:child_model_associations,
|
12
|
+
:child_models,
|
13
|
+
:parent_model_associations,
|
14
|
+
:parent_models).
|
15
|
+
find_by(id: name.to_i)
|
16
|
+
raise "テーブルが見つかりません: #{name}" if @model.blank?
|
17
|
+
@app = App.includes(
|
18
|
+
app_view_index: [search_result_columns: :model_column,
|
19
|
+
search_conditions: :model_column],
|
20
|
+
app_view_show: [show_columns: :model_column,
|
21
|
+
show_associations: [show_association_columns: :model_column]],
|
22
|
+
app_view_form: [form_columns: :model_column,
|
23
|
+
form_associations: [form_association_columns: :model_column]],
|
24
|
+
app_view_modal: [search_result_columns: :model_column,
|
25
|
+
search_conditions: :model_column]).find_by(model: @model)
|
26
|
+
@model = ActiveDecorator::Decorator.instance.decorate(@model)
|
27
|
+
@app = ActiveDecorator::Decorator.instance.decorate(@app)
|
28
|
+
@dist_path = Rails.root
|
29
|
+
ns = Project.first.namespace
|
30
|
+
@ns_camel = ns.camelize
|
31
|
+
@ns_snake = ns.underscore
|
32
|
+
end
|
33
|
+
|
34
|
+
def create_model_file
|
35
|
+
base_path = "#{@dist_path}/app/models/#{@ns_snake}"
|
36
|
+
model_file_path = File.join(base_path, "#{@model.name.underscore}.rb")
|
37
|
+
File.delete(model_file_path) if File.exist?(model_file_path)
|
38
|
+
template "model.rb", model_file_path, encoding: :utf8
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_decorator_file
|
42
|
+
base_path = "#{@dist_path}/app/decorators/#{@ns_snake}"
|
43
|
+
file_path = File.join(base_path, "#{@model.name.underscore}_decorator.rb")
|
44
|
+
File.delete(file_path) if File.exist?(file_path)
|
45
|
+
template "decorator.rb", file_path
|
46
|
+
end
|
47
|
+
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
module <%= @ns_camel %>
|
3
|
+
class <%= @model.name %> < ::<%= @model.name %>
|
4
|
+
<%- if @model.datetime_field_columns.present? -%>
|
5
|
+
include DatetimeFieldConcern
|
6
|
+
|
7
|
+
<%- end -%>
|
8
|
+
<%- unless @model.pk_column.name == 'id' -%>
|
9
|
+
self.primary_key = '<%= @model.pk_column.name %>'
|
10
|
+
<%- end -%>
|
11
|
+
<%- unless @model.name == @model.table_name.singularize.camelize -%>
|
12
|
+
self.table_name = '<%= @model.table_name -%>'
|
13
|
+
<%- end -%>
|
14
|
+
<%- if @model.columns.any? { |c| c.name.end_with?('type') } -%>
|
15
|
+
self.inheritance_column = :_type_disabled
|
16
|
+
<%- end -%>
|
17
|
+
<%- @model.parent_model_associations.each do |association| -%>
|
18
|
+
<%= association.code_on_model(:parent) -%>
|
19
|
+
<%- end -%>
|
20
|
+
<%- @model.child_model_associations.each do |association| -%>
|
21
|
+
<%= association.code_on_model(:child) -%>
|
22
|
+
<%- end -%>
|
23
|
+
<%- if @app&.app_view_form&.form_associations&.select(&:display?) -%>
|
24
|
+
<%- @app.app_view_form.form_associations.select(&:display?).each do |form_association| -%>
|
25
|
+
<%= " accepts_nested_attributes_for :#{form_association.model_association.has_name}, reject_if: :all_blank, allow_destroy: true" %>
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
|
29
|
+
<%- @model.datetime_field_columns.each do |c| -%>
|
30
|
+
datetime_field :<%= c.name %>
|
31
|
+
<%- end -%>
|
32
|
+
<%= "\n" if @model.datetime_field_columns.present? -%>
|
33
|
+
<%- @model.attachment_fields.each do |a| -%>
|
34
|
+
<%= a.has_attached_code %>
|
35
|
+
<%- end -%>
|
36
|
+
<%- @model.columns.select{ |c| c.code_validates.present? }.each do |c| -%>
|
37
|
+
<%= c.code_validates %>
|
38
|
+
<%- end -%>
|
39
|
+
<%= "\n" if @model.columns.select{ |c| c.code_validates.present? }.present? -%>
|
40
|
+
<%- @model.columns.select { |c| c.code_enum.present? }.each do |column| -%>
|
41
|
+
<%= column.code_enum %>
|
42
|
+
<%- end -%>
|
43
|
+
<%= "\n" if @model.columns.select { |c| c.code_enum.present? }.present? -%>
|
44
|
+
<%- @model.associations.select{ |a| a.code_label_delegate.present? }.each do |association| -%>
|
45
|
+
<%= association.code_label_delegate %>
|
46
|
+
<%- end -%>
|
47
|
+
<%= "\n" if @model.associations.select{ |a| a.code_label_delegate.present? }.present? -%>
|
48
|
+
<%- if @app -%>
|
49
|
+
<%- @app.app_view_index.search_conditions.each do |c| -%>
|
50
|
+
<%= method = c.method_scope -%>
|
51
|
+
<%= "\n" if method.present? -%>
|
52
|
+
<%- end -%>
|
53
|
+
<%- @app.app_view_modal&.modal_only_search_conditions&.each do |c| -%>
|
54
|
+
<%= method = c.method_scope -%>
|
55
|
+
<%= "\n" if method.present? -%>
|
56
|
+
<%- end -%>
|
57
|
+
<%- end -%>
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
module Infold
|
2
|
+
class ProjectGenerator < Rails::Generators::NamedBase
|
3
|
+
source_root File.expand_path('templates', __dir__)
|
4
|
+
|
5
|
+
def setup
|
6
|
+
raise '' if name.to_i == -1
|
7
|
+
@project = Project.first
|
8
|
+
@dist_path = Rails.root
|
9
|
+
@ns_camel = @project.namespace.camelize
|
10
|
+
@ns_snake = @project.namespace.underscore
|
11
|
+
end
|
12
|
+
|
13
|
+
def create_component_relation_field
|
14
|
+
@modal_apps = App.all.joins(:app_view_modal).distinct
|
15
|
+
file_path = File.join("#{@dist_path}/app/components/#{@ns_snake}/form", "relation_fieldset_component.rb")
|
16
|
+
File.delete(file_path) if File.exist?(file_path)
|
17
|
+
template "relation_fieldset_component.rb", file_path
|
18
|
+
end
|
19
|
+
|
20
|
+
def modify_routes_file
|
21
|
+
route_file = Rails.root.join("config", "routes", "#{@ns_snake}.rb")
|
22
|
+
current_route = File.read(route_file).to_s
|
23
|
+
App.all.each do |app|
|
24
|
+
code = "resources :#{app.model.name_pluralize}"
|
25
|
+
next if current_route.match?(/#{code}$/)
|
26
|
+
inject_into_file route_file, after: "namespace '#{@ns_snake}' do" do
|
27
|
+
"\n #{code}"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
root_base = "authenticated :#{@ns_snake}_user do root :to =>"
|
31
|
+
root_code = "#{root_base} '#{@project.root_app.model.name_pluralize}#index', as: :root end"
|
32
|
+
if current_route.match?(/#{root_base}/)
|
33
|
+
gsub_file route_file, /#{root_base}.*$/, root_code
|
34
|
+
else
|
35
|
+
inject_into_file route_file, after: "namespace '#{@ns_snake}' do" do
|
36
|
+
"\n #{root_code}"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def create_header_menu_file
|
42
|
+
@menu_items = MenuItem.all
|
43
|
+
file_path = File.join("#{@dist_path}/app/views/#{@ns_snake}/common/_header_menu.html.haml")
|
44
|
+
File.delete(file_path) if File.exist?(file_path)
|
45
|
+
template "_header_menu.haml", file_path
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_locale_file
|
49
|
+
Model.all.each do |model|
|
50
|
+
@model = ActiveDecorator::Decorator.instance.decorate(model)
|
51
|
+
locale_file_path = File.join("#{@dist_path}/config/locales/#{@ns_snake}/models", "#{model.name.underscore}.#{I18n.default_locale.presence || 'en'}.yml")
|
52
|
+
File.delete(locale_file_path) if File.exist?(locale_file_path)
|
53
|
+
template "locales/model.yml", locale_file_path
|
54
|
+
end
|
55
|
+
|
56
|
+
App.all.each do |app|
|
57
|
+
@app = ActiveDecorator::Decorator.instance.decorate(app)
|
58
|
+
@view_index = app.app_view_index
|
59
|
+
@view_modal = app.app_view_modal
|
60
|
+
locale_file_path = File.join("#{@dist_path}/config/locales/#{@ns_snake}/forms", "#{@app.model.name.underscore}_search_form.#{I18n.default_locale.presence || 'en'}.yml")
|
61
|
+
File.delete(locale_file_path) if File.exist?(locale_file_path)
|
62
|
+
template "locales/form.yml", locale_file_path
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
%ul.navbar-nav.me-auto.mb-2.mb-lg-0
|
3
|
+
<%- @menu_items.select(&:layer1?).sort_by(&:seq).each_with_index do |layer1_menu, i| -%>
|
4
|
+
<%- if layer1_menu.kind_directory? -%>
|
5
|
+
%li.nav-item.dropdown
|
6
|
+
%a.nav-link.dropdown-toggle{ role: :button, data: { bs_toggle: :dropdown } }
|
7
|
+
<%= layer1_menu.name %>
|
8
|
+
%ul.dropdown-menu.dropdown-menu-arrow
|
9
|
+
<%- layer1_menu.menu_apps.sort_by(&:seq).each do |layer2_menu| -%>
|
10
|
+
%li
|
11
|
+
= link_to '<%= layer2_menu.app.name %>', <%= @ns_snake %>_<%= layer2_menu.app.model.name.underscore.pluralize %>_path, class: 'dropdown-item'
|
12
|
+
<%- end -%>
|
13
|
+
<%- else -%>
|
14
|
+
%li.nav-item
|
15
|
+
= link_to '<%= layer1_menu.app.name %>', <%= @ns_snake %>_<%= layer1_menu.app.model.name.underscore.pluralize %>_path, class: 'nav-link'
|
16
|
+
<%- end -%>
|
17
|
+
<%- end -%>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
<%= I18n.default_locale.presence || 'en' %>:
|
3
|
+
activemodel:
|
4
|
+
attributes:
|
5
|
+
<%= @ns_snake %>/<%= @app.model.name.underscore %>_search_form:
|
6
|
+
<%- @view_index.search_conditions.select { |sc| sc.label.present? }.each do |sc| -%>
|
7
|
+
<%= sc.scope_name -%>: <%= sc.label %>
|
8
|
+
<%- end -%>
|
9
|
+
<%- @view_modal&.modal_only_search_conditions&.select { |sc| sc.label.present? }&.each do |sc| -%>
|
10
|
+
<%= sc.scope_name -%>: <%= sc.label %>
|
11
|
+
<%- end -%>
|
@@ -0,0 +1,43 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
<%= I18n.default_locale.presence || 'en' %>:
|
3
|
+
activerecord:
|
4
|
+
attributes:
|
5
|
+
<%= @ns_snake %>/<%= @model.name.underscore -%>:
|
6
|
+
<%- @model.columns.select{ |c| c.locale.present? }.sort_by(&:seq).each do |column| -%>
|
7
|
+
<%= column.name -%>: "<%= column.locale %>"
|
8
|
+
<%- if column.kind_datetime? -%>
|
9
|
+
<%= column.name %>_date: "<%= column.locale %>(日付)"
|
10
|
+
<%= column.name %>_time: "<%= column.locale %>(時刻)"
|
11
|
+
<%- end -%>
|
12
|
+
<%- end -%>
|
13
|
+
<%- @model.parent_model_associations.includes(:parent_model).each do |association| -%>
|
14
|
+
<%- next if association.parent_model.locale.blank? -%>
|
15
|
+
<%= association.belongs_name %>: "<%= association.parent_model.locale %>"
|
16
|
+
<%- end -%>
|
17
|
+
<%- @model.child_model_associations.includes(:model).each do |association| -%>
|
18
|
+
<%- next if association.model.locale.blank? -%>
|
19
|
+
<%= association.has_name %>: "<%= association.model.locale %>"
|
20
|
+
<%- end -%>
|
21
|
+
<%- if false # todo-%>
|
22
|
+
# delegate
|
23
|
+
<%- @model.parent_model_associations.includes(:parent_model).each do |association| -%>
|
24
|
+
<%- next if association.parent_model.locale.blank? -%>
|
25
|
+
<%= association.belongs_name %>_<%= association.parent_model.label_field_name %>: "<%= association.locale %>"
|
26
|
+
<%- end -%>
|
27
|
+
<%- end -%>
|
28
|
+
<%- enum_first = true -%>
|
29
|
+
<%- @model.columns.select(&:kind_enum?).each do |enum_column| -%>
|
30
|
+
<%- enum_column.enums.select{ |e| e.locale.present? }.each_with_index do |enum, i| -%>
|
31
|
+
<%- if enum_first -%>
|
32
|
+
# enum
|
33
|
+
enums:
|
34
|
+
<%= @ns_snake %>:
|
35
|
+
<%= @model.name.underscore -%>:
|
36
|
+
<%- enum_first = false -%>
|
37
|
+
<%- end -%>
|
38
|
+
<%- if i == 0 -%>
|
39
|
+
<%= enum_column.name %>:
|
40
|
+
<%- end -%>
|
41
|
+
<%= enum.key %>: "<%= enum.locale %>"
|
42
|
+
<%- end -%>
|
43
|
+
<%- end -%>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module <%= @ns_camel %>
|
5
|
+
class Form::RelationFieldsetComponent < ViewComponent::Base
|
6
|
+
def initialize(relation_kind,form,relation_field,id_field,name_field,required:false,label:true,size_sm:false,nested_form:false)
|
7
|
+
@relation_kind = relation_kind
|
8
|
+
@form = form
|
9
|
+
@relation_field = relation_field
|
10
|
+
@id_field = id_field
|
11
|
+
@name_field = name_field
|
12
|
+
@required = required
|
13
|
+
@label = label
|
14
|
+
@size_sm = size_sm
|
15
|
+
@turbo_frame_id = "relation_#{SecureRandom.hex(3)}#{nested_form ? '_NEW_RECORD' : ''}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def search_path
|
19
|
+
<%- if @modal_apps.present? -%>
|
20
|
+
case @relation_kind
|
21
|
+
<%- @modal_apps.each do |modal_app| -%>
|
22
|
+
when :<%= modal_app.model.name_pluralize %>
|
23
|
+
<%= @ns_snake %>_<%= modal_app.model.name_pluralize %>_path(turbo_frame_id: @turbo_frame_id)
|
24
|
+
<%- end -%>
|
25
|
+
end
|
26
|
+
<%- end -%>
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'haml-rails'
|
2
|
+
require "view_component"
|
3
|
+
require "enum_help"
|
4
|
+
require "active_decorator"
|
5
|
+
|
6
|
+
module Infold
|
7
|
+
class Engine < ::Rails::Engine
|
8
|
+
isolate_namespace Infold
|
9
|
+
|
10
|
+
config.generators do |g|
|
11
|
+
g.test_framework :rspec, fixture: false
|
12
|
+
g.fixture_replacement :factory_bot, dir: "spec/factories"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|