infold 0.1.1 → 0.2.0
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 +4 -4
- data/README.md +410 -21
- data/Rakefile +0 -5
- data/lib/generators/infold/controller_generator.rb +56 -0
- data/lib/generators/infold/decorator_generator.rb +31 -0
- data/lib/generators/infold/install_generator.rb +98 -0
- data/lib/generators/infold/model_generator.rb +31 -0
- data/lib/generators/infold/resource_generator.rb +12 -0
- data/lib/generators/infold/scaffold_generator.rb +16 -0
- data/lib/generators/infold/search_form_generator.rb +23 -0
- data/lib/generators/infold/templates/controller.rb.tt +70 -0
- data/lib/generators/infold/templates/decorator.rb.tt +6 -0
- data/lib/generators/infold/templates/install/app/components/admin/association_field_component.html.haml +10 -0
- data/lib/generators/infold/templates/install/app/components/admin/association_field_component.rb +25 -0
- data/lib/generators/infold/templates/install/app/components/admin/badge_component.rb +18 -0
- data/lib/generators/infold/templates/install/app/components/admin/checkbox_component.html.haml +4 -0
- data/lib/generators/infold/templates/install/app/components/admin/checkbox_component.rb +22 -0
- data/lib/generators/infold/templates/install/app/components/admin/datetime_component.html.haml +13 -0
- data/lib/generators/infold/templates/install/app/components/admin/datetime_component.rb +10 -0
- data/lib/generators/infold/templates/install/app/components/admin/fieldset_component.html.haml +12 -0
- data/lib/generators/infold/templates/install/app/components/admin/fieldset_component.rb +73 -0
- data/lib/generators/infold/{install/templates/app/components/admin/form → templates/install/app/components/admin}/file_upload_component.html.haml +2 -6
- data/lib/generators/infold/templates/install/app/components/admin/file_upload_component.rb +10 -0
- data/lib/generators/infold/templates/install/app/components/admin/input_group_component.html.haml +6 -0
- data/lib/generators/infold/templates/install/app/components/admin/input_group_component.rb +10 -0
- data/lib/generators/infold/templates/install/app/components/admin/invalid_message_component.rb +17 -0
- data/lib/generators/infold/templates/install/app/components/admin/label_component.rb +16 -0
- data/lib/generators/infold/templates/install/app/components/admin/radio_component.html.haml +4 -0
- data/lib/generators/infold/templates/install/app/components/admin/radio_component.rb +22 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/components/admin/remote_modal_component.html.haml +4 -3
- data/lib/generators/infold/templates/install/app/components/admin/remote_modal_component.rb +14 -0
- data/lib/generators/infold/templates/install/app/components/admin/select_component.rb +26 -0
- data/lib/generators/infold/templates/install/app/components/admin/sortable_component.html.haml +2 -0
- data/lib/generators/infold/templates/install/app/components/admin/sortable_component.rb +35 -0
- data/lib/generators/infold/templates/install/app/components/admin/switch_component.html.haml +3 -0
- data/lib/generators/infold/templates/install/app/components/admin/switch_component.rb +17 -0
- data/lib/generators/infold/templates/install/app/components/admin/text_component.rb +40 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/admin/admin_users/registrations_controller.rb +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/admin/admin_users/sessions_controller.rb +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/admin/base_controller.rb +3 -3
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/admin/errors_controller.rb +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/admin/turbo_devise_controller.rb +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/controllers/concerns/admin/error_handlers.rb +1 -0
- data/lib/generators/infold/{install/templates/app/forms/admin/search_form_base.rb → templates/install/app/forms/admin/base_search_form.rb} +1 -1
- data/lib/generators/infold/templates/install/app/helpers/admin_helper.rb +23 -0
- data/lib/generators/infold/templates/install/app/javascript/admin/admin.css +188 -0
- data/lib/generators/infold/templates/install/app/javascript/admin/admin.scss +195 -0
- data/{app/javascript → lib/generators/infold/templates/install/app/javascript/admin}/controllers/application.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/datepicker_controller.js +1 -1
- data/{app/javascript → lib/generators/infold/templates/install/app/javascript/admin}/controllers/flash_controller.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/index.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/index_page_controller.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/nested_form_controller.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/relation_search_controller.js +0 -0
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/remote_modal_controller.js +7 -7
- data/lib/generators/infold/{install/templates → templates/install/app}/javascript/admin/controllers/timepicker_controller.js +0 -0
- data/lib/generators/infold/templates/install/app/javascript/admin.js +9 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/models/concerns/admin/datetime_field_concern.rb +12 -12
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/admin_users/registrations/edit.html.haml +4 -3
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/admin_users/sessions/new.html.haml +2 -2
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/common/_flash.html.haml +0 -0
- data/lib/generators/infold/templates/install/app/views/admin/common/_header_menu.html.haml +1 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/errors/bad_request.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/errors/forbidden.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/errors/internal_server_error.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/errors/not_found.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_first_page.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_gap.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_last_page.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_next_page.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_page.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_paginator.html.haml +0 -0
- data/lib/generators/infold/{install/templates → templates/install}/app/views/admin/kaminari/_prev_page.html.haml +0 -0
- data/lib/generators/infold/{install/templates/app/views/layouts/admin.haml.tt → templates/install/app/views/layouts/admin.html.haml} +8 -12
- data/lib/generators/infold/templates/install/config/infold/admin_user.yml +31 -0
- data/lib/generators/infold/{install/templates → templates/install}/config/locales/infold.en.yml +3 -2
- data/lib/generators/infold/{install/templates → templates/install}/config/locales/infold.ja.yml +1 -0
- data/lib/generators/infold/{install/templates → templates/install}/config/routes/admin.rb +0 -0
- data/lib/generators/infold/templates/model.rb.tt +34 -0
- data/lib/generators/infold/templates/resource.yml.tt +29 -0
- data/lib/generators/infold/templates/search_form.rb.tt +23 -0
- data/lib/generators/infold/templates/views/_form.haml.tt +36 -0
- data/lib/generators/infold/templates/views/_form_association.haml.tt +9 -0
- data/lib/generators/infold/templates/views/_index_row.haml.tt +12 -0
- data/lib/generators/infold/templates/views/_show_content.haml.tt +39 -0
- data/lib/generators/infold/templates/views/_show_wrapper.haml.tt +15 -0
- data/lib/generators/infold/templates/views/edit.html+turbo_frame.haml.tt +15 -0
- data/lib/generators/infold/templates/views/form.turbo_stream.haml.tt +16 -0
- data/lib/generators/infold/templates/views/index.csv.ruby.tt +19 -0
- data/lib/generators/infold/templates/views/index.haml.tt +45 -0
- data/lib/generators/infold/templates/views/index.html+turbo_frame.haml.tt +41 -0
- data/lib/generators/infold/templates/views/new.html+turbo_frame.haml.tt +15 -0
- data/lib/generators/infold/templates/views/show.html+turbo_frame.haml.tt +4 -0
- data/lib/generators/infold/views/form_generator.rb +51 -0
- data/lib/generators/infold/views/index_generator.rb +37 -0
- data/lib/generators/infold/views/show_generator.rb +33 -0
- data/lib/generators/infold/views_generator.rb +13 -0
- data/lib/generators/infold_generator.rb +11 -0
- data/lib/infold/db_schema.rb +28 -0
- data/lib/infold/field.rb +104 -0
- data/lib/infold/field_group.rb +108 -0
- data/lib/infold/property/active_storage.rb +38 -0
- data/lib/infold/property/association.rb +81 -0
- data/lib/infold/property/condition.rb +60 -0
- data/lib/infold/property/decorator.rb +30 -0
- data/lib/infold/property/default_order.rb +14 -0
- data/lib/infold/property/enum.rb +30 -0
- data/lib/infold/property/form_element.rb +56 -0
- data/lib/infold/property/show_element.rb +26 -0
- data/lib/infold/property/validation.rb +38 -0
- data/lib/infold/railtie.rb +4 -0
- data/lib/infold/resource.rb +32 -0
- data/lib/infold/table.rb +25 -0
- data/lib/infold/version.rb +1 -1
- data/lib/infold/writers/base_writer.rb +45 -0
- data/lib/infold/writers/controller_writer.rb +69 -0
- data/lib/infold/writers/decorator_writer.rb +94 -0
- data/lib/infold/writers/model_writer.rb +159 -0
- data/lib/infold/writers/search_form_writer.rb +23 -0
- data/lib/infold/writers/views/base_writer.rb +91 -0
- data/lib/infold/writers/views/form_writer.rb +39 -0
- data/lib/infold/writers/views/index_writer.rb +51 -0
- data/lib/infold/writers/views/show_writer.rb +16 -0
- data/lib/infold/yaml_reader.rb +252 -0
- data/lib/infold.rb +1 -1
- data/lib/tasks/infold_tasks.rake +0 -121
- metadata +246 -405
- data/app/assets/builds/infold.css +0 -17147
- data/app/assets/builds/infold.css.map +0 -7
- data/app/assets/builds/infold.js +0 -17202
- data/app/assets/builds/infold.js.map +0 -7
- data/app/assets/config/infold_manifest.js +0 -0
- data/app/assets/stylesheets/infold.custom.css +0 -76
- data/app/assets/stylesheets/infold.custom.css.map +0 -1
- data/app/components/infold/input_fieldset_component.html.haml +0 -14
- data/app/components/infold/input_fieldset_component.rb +0 -22
- data/app/components/infold/radio_fieldset_component.html.haml +0 -11
- data/app/components/infold/radio_fieldset_component.rb +0 -14
- data/app/components/infold/select_fieldset_component.html.haml +0 -7
- data/app/components/infold/select_fieldset_component.rb +0 -15
- data/app/controllers/infold/app_view_forms_controller.rb +0 -64
- data/app/controllers/infold/app_view_shows_controller.rb +0 -60
- data/app/controllers/infold/application_controller.rb +0 -17
- data/app/controllers/infold/apps_controller.rb +0 -68
- data/app/controllers/infold/attachment_fields_controller.rb +0 -59
- data/app/controllers/infold/builds_controller.rb +0 -21
- data/app/controllers/infold/columns_controller.rb +0 -89
- data/app/controllers/infold/csv_columns_controller.rb +0 -43
- data/app/controllers/infold/form_associations_controller.rb +0 -57
- data/app/controllers/infold/menu_directories_controller.rb +0 -19
- data/app/controllers/infold/menus_controller.rb +0 -35
- data/app/controllers/infold/models_controller.rb +0 -28
- data/app/controllers/infold/pages_controller.rb +0 -8
- data/app/controllers/infold/search_conditions_controller.rb +0 -63
- data/app/controllers/infold/search_result_fields_controller.rb +0 -62
- data/app/controllers/infold/show_associations_controller.rb +0 -54
- data/app/controllers/infold/sync_dbs_controller.rb +0 -13
- data/app/decorators/infold/app_view_form_decorator.rb +0 -56
- data/app/decorators/infold/app_view_index_decorator.rb +0 -53
- data/app/decorators/infold/app_view_modal_decorator.rb +0 -13
- data/app/decorators/infold/app_view_show_decorator.rb +0 -26
- data/app/decorators/infold/attachment_field_decorator.rb +0 -40
- data/app/decorators/infold/build_decorator.rb +0 -15
- data/app/decorators/infold/column_display_decorator.rb +0 -59
- data/app/decorators/infold/csv_column_decorator.rb +0 -5
- data/app/decorators/infold/form_association_column_decorator.rb +0 -5
- data/app/decorators/infold/form_column_decorator.rb +0 -57
- data/app/decorators/infold/model_association_decorator.rb +0 -39
- data/app/decorators/infold/model_column_decorator.rb +0 -201
- data/app/decorators/infold/model_decorator.rb +0 -27
- data/app/decorators/infold/search_condition_decorator.rb +0 -101
- data/app/decorators/infold/search_result_column_decorator.rb +0 -5
- data/app/decorators/infold/show_association_column_decorator.rb +0 -5
- data/app/decorators/infold/show_association_decorator.rb +0 -13
- data/app/decorators/infold/show_field_decorator.rb +0 -5
- data/app/helpers/infold/application_helper.rb +0 -29
- data/app/javascript/admin.scss +0 -5
- data/app/javascript/controllers/attachment_field_controller.js +0 -19
- data/app/javascript/controllers/column_controller.js +0 -20
- data/app/javascript/controllers/index.js +0 -32
- data/app/javascript/controllers/menu_controller.js +0 -26
- data/app/javascript/controllers/menu_directory_controller.js +0 -16
- data/app/javascript/controllers/modal_controller.js +0 -15
- data/app/javascript/controllers/nested_form_controller.js +0 -32
- data/app/javascript/controllers/search_condition_controller.js +0 -41
- data/app/javascript/controllers/sortable_controller.js +0 -19
- data/app/javascript/infold.js +0 -22
- data/app/javascript/infold.scss +0 -68
- data/app/javascript/stylesheets/admin/common.scss +0 -112
- data/app/javascript/stylesheets/admin/form.scss +0 -52
- data/app/javascript/stylesheets/admin/index.scss +0 -93
- data/app/javascript/stylesheets/admin/modal.scss +0 -37
- data/app/javascript/stylesheets/admin/show.scss +0 -16
- data/app/jobs/infold/application_job.rb +0 -4
- data/app/mailers/infold/application_mailer.rb +0 -6
- data/app/models/concerns/infold/app_view_search_concern.rb +0 -72
- data/app/models/concerns/infold/form_column_concern.rb +0 -63
- data/app/models/infold/app.rb +0 -41
- data/app/models/infold/app_view.rb +0 -27
- data/app/models/infold/app_view_form.rb +0 -43
- data/app/models/infold/app_view_index.rb +0 -36
- data/app/models/infold/app_view_modal.rb +0 -21
- data/app/models/infold/app_view_show.rb +0 -47
- data/app/models/infold/application_record.rb +0 -7
- data/app/models/infold/attachment_field.rb +0 -35
- data/app/models/infold/build.rb +0 -35
- data/app/models/infold/csv_column.rb +0 -9
- data/app/models/infold/enum.rb +0 -12
- data/app/models/infold/form_association.rb +0 -41
- data/app/models/infold/form_association_attachment_field.rb +0 -5
- data/app/models/infold/form_association_column.rb +0 -5
- data/app/models/infold/form_association_field.rb +0 -7
- data/app/models/infold/form_attachment_field.rb +0 -5
- data/app/models/infold/form_column.rb +0 -5
- data/app/models/infold/form_field.rb +0 -7
- data/app/models/infold/menu_item.rb +0 -45
- data/app/models/infold/model.rb +0 -40
- data/app/models/infold/model_association.rb +0 -51
- data/app/models/infold/model_column.rb +0 -127
- data/app/models/infold/project.rb +0 -29
- data/app/models/infold/schema_rb.rb +0 -178
- data/app/models/infold/search_condition.rb +0 -62
- data/app/models/infold/search_result_attachment_field.rb +0 -5
- data/app/models/infold/search_result_column.rb +0 -6
- data/app/models/infold/search_result_field.rb +0 -12
- data/app/models/infold/show_association.rb +0 -42
- data/app/models/infold/show_association_attachment_field.rb +0 -5
- data/app/models/infold/show_association_column.rb +0 -5
- data/app/models/infold/show_association_field.rb +0 -8
- data/app/models/infold/show_attachment_field.rb +0 -7
- data/app/models/infold/show_column.rb +0 -7
- data/app/models/infold/show_field.rb +0 -11
- data/app/validators/infold/ruby_code_validator.rb +0 -9
- data/app/views/infold/app_view_forms/_bulk_form.html.haml +0 -16
- data/app/views/infold/app_view_forms/_tab.html.haml +0 -12
- data/app/views/infold/app_view_forms/show.html.haml +0 -7
- data/app/views/infold/app_view_shows/_bulk_form.html.haml +0 -15
- data/app/views/infold/app_view_shows/_tab.html.haml +0 -12
- data/app/views/infold/app_view_shows/show.html.haml +0 -7
- data/app/views/infold/app_view_shows/update.turbo_stream.haml +0 -1
- data/app/views/infold/application/_flash.html.haml +0 -6
- data/app/views/infold/apps/_form.html.haml +0 -30
- data/app/views/infold/apps/_page_header.html.haml +0 -5
- data/app/views/infold/apps/_tab.html.haml +0 -13
- data/app/views/infold/apps/create.turbo_stream.haml +0 -3
- data/app/views/infold/apps/edit.html.haml +0 -6
- data/app/views/infold/apps/new.html.haml +0 -8
- data/app/views/infold/apps/update.turbo_stream.haml +0 -3
- data/app/views/infold/associations/_form.html.haml +0 -18
- data/app/views/infold/associations/edit.html.haml +0 -5
- data/app/views/infold/attachment_fields/_form.html.haml +0 -51
- data/app/views/infold/attachment_fields/edit.html.haml +0 -7
- data/app/views/infold/attachment_fields/form.turbo_stream.haml +0 -4
- data/app/views/infold/attachment_fields/index.html.haml +0 -28
- data/app/views/infold/attachment_fields/new.html.haml +0 -7
- data/app/views/infold/builds/create.turbo_stream.haml +0 -8
- data/app/views/infold/builds/new.html.haml +0 -23
- data/app/views/infold/columns/_bulk_form.html.haml +0 -18
- data/app/views/infold/columns/_row.html.haml +0 -26
- data/app/views/infold/columns/_setting.html.haml +0 -42
- data/app/views/infold/columns/bulk.turbo_stream.haml +0 -3
- data/app/views/infold/columns/edit.html.haml +0 -5
- data/app/views/infold/columns/index.html.haml +0 -9
- data/app/views/infold/columns/update.turbo_stream.haml +0 -8
- data/app/views/infold/csv_columns/_bulk_form.html.haml +0 -14
- data/app/views/infold/csv_columns/_row.html.haml +0 -10
- data/app/views/infold/csv_columns/bulk.turbo_stream.haml +0 -3
- data/app/views/infold/csv_columns/index.html.haml +0 -7
- data/app/views/infold/enums/_form.html.haml +0 -13
- data/app/views/infold/enums/_index.html.haml +0 -27
- data/app/views/infold/enums/index.html.haml +0 -5
- data/app/views/infold/form_association_attachment_fields/_form.html.haml +0 -13
- data/app/views/infold/form_association_columns/_form.html.haml +0 -20
- data/app/views/infold/form_associations/_bulk_form.html.haml +0 -16
- data/app/views/infold/form_associations/_form.html.haml +0 -19
- data/app/views/infold/form_associations/show.html.haml +0 -7
- data/app/views/infold/form_associations/update.turbo_stream.haml +0 -1
- data/app/views/infold/form_attachment_fields/_form.html.haml +0 -14
- data/app/views/infold/form_columns/_form.html.haml +0 -21
- data/app/views/infold/menu_directories/_item.html.haml +0 -20
- data/app/views/infold/menu_directories/create.turbo_stream.haml +0 -2
- data/app/views/infold/menu_directories/destroy.turbo_stream.haml +0 -5
- data/app/views/infold/menus/_app.html.haml +0 -10
- data/app/views/infold/menus/_items.html.haml +0 -7
- data/app/views/infold/menus/edit.html.haml +0 -23
- data/app/views/infold/menus/update.turbo_stream.haml +0 -3
- data/app/views/infold/models/_form.html.haml +0 -12
- data/app/views/infold/models/_tab.html.haml +0 -7
- data/app/views/infold/models/edit.html.haml +0 -9
- data/app/views/infold/models/update.turbo_stream.haml +0 -3
- data/app/views/infold/search_conditions/_bulk_form.html.haml +0 -24
- data/app/views/infold/search_conditions/_column_options.html.haml +0 -3
- data/app/views/infold/search_conditions/_form_kind_options.html.haml +0 -3
- data/app/views/infold/search_conditions/_row.html.haml +0 -31
- data/app/views/infold/search_conditions/_sign_options.html.haml +0 -3
- data/app/views/infold/search_conditions/_tab.html.haml +0 -12
- data/app/views/infold/search_conditions/bulk.turbo_stream.haml +0 -3
- data/app/views/infold/search_conditions/index.html.haml +0 -7
- data/app/views/infold/search_conditions/refresh_columns.turbo_stream.haml +0 -6
- data/app/views/infold/search_conditions/refresh_form_kinds.turbo_stream.haml +0 -4
- data/app/views/infold/search_conditions/refresh_signs.turbo_stream.haml +0 -2
- data/app/views/infold/search_result_attachment_fields/_form.html.haml +0 -12
- data/app/views/infold/search_result_columns/_form.html.haml +0 -12
- data/app/views/infold/search_result_fields/_bulk_form.html.haml +0 -23
- data/app/views/infold/search_result_fields/_row.html.haml +0 -12
- data/app/views/infold/search_result_fields/bulk.turbo_stream.haml +0 -3
- data/app/views/infold/search_result_fields/index.html.haml +0 -7
- data/app/views/infold/show_association_attachment_fields/_form.html.haml +0 -12
- data/app/views/infold/show_association_columns/_form.html.haml +0 -12
- data/app/views/infold/show_associations/_bulk_form.html.haml +0 -15
- data/app/views/infold/show_associations/_form.html.haml +0 -14
- data/app/views/infold/show_associations/show.html.haml +0 -7
- data/app/views/infold/show_associations/update.turbo_stream.haml +0 -1
- data/app/views/infold/show_attachment_fields/_form.html.haml +0 -12
- data/app/views/infold/show_columns/_form.html.haml +0 -12
- data/app/views/infold/sync_dbs/create.turbo_stream.haml +0 -1
- data/app/views/infold/sync_dbs/show.html.haml +0 -11
- data/app/views/layouts/infold/application.html.haml +0 -112
- data/config/database.yml +0 -11
- data/config/initializers/infold_assets.rb +0 -12
- data/config/initializers/infold_locale.rb +0 -1
- data/config/locales/infold/ar/app/en.yml +0 -6
- data/config/locales/infold/ar/app/ja.yml +0 -6
- data/config/locales/infold/ar/app_view/en.yml +0 -4
- data/config/locales/infold/ar/app_view/ja.yml +0 -4
- data/config/locales/infold/ar/app_view_form/en.yml +0 -10
- data/config/locales/infold/ar/app_view_form/ja.yml +0 -10
- data/config/locales/infold/ar/app_view_index/en.yml +0 -12
- data/config/locales/infold/ar/app_view_index/ja.yml +0 -12
- data/config/locales/infold/ar/app_view_modal/en.yml +0 -6
- data/config/locales/infold/ar/app_view_modal/ja.yml +0 -6
- data/config/locales/infold/ar/app_view_show/en.yml +0 -9
- data/config/locales/infold/ar/app_view_show/ja.yml +0 -9
- data/config/locales/infold/ar/csv_column/en.yml +0 -8
- data/config/locales/infold/ar/csv_column/ja.yml +0 -8
- data/config/locales/infold/ar/form_association_column/ja.yml +0 -15
- data/config/locales/infold/ar/form_column/ja.yml +0 -15
- data/config/locales/infold/ar/menu_item/ja.yml +0 -6
- data/config/locales/infold/ar/model/ja.yml +0 -11
- data/config/locales/infold/ar/model_association/en.yml +0 -6
- data/config/locales/infold/ar/model_association/ja.yml +0 -10
- data/config/locales/infold/ar/model_column/en.yml +0 -34
- data/config/locales/infold/ar/model_column/ja.yml +0 -34
- data/config/locales/infold/ar/search_condition/en.yml +0 -30
- data/config/locales/infold/ar/search_condition/ja.yml +0 -30
- data/config/locales/infold/ar/search_result_field/en.yml +0 -9
- data/config/locales/infold/ar/search_result_field/ja.yml +0 -9
- data/config/locales/infold/en.yml +0 -40
- data/config/locales/infold/ja.yml +0 -41
- data/config/routes.rb +0 -40
- data/db/infold_test.sqlite3 +0 -0
- data/db/migrate/20220419050641_create_infold_projects.rb +0 -9
- data/db/migrate/20220419051049_create_infold_models.rb +0 -15
- data/db/migrate/20220419051601_create_infold_columns.rb +0 -23
- data/db/migrate/20220419051718_create_infold_attachment_fields.rb +0 -15
- data/db/migrate/20220419052017_create_infold_model_associations.rb +0 -16
- data/db/migrate/20220419052154_create_infold_apps.rb +0 -10
- data/db/migrate/20220419052320_create_infold_app_views.rb +0 -14
- data/db/migrate/20220419052450_create_infold_search_conditions.rb +0 -14
- data/db/migrate/20220419052707_create_infold_search_result_fields.rb +0 -18
- data/db/migrate/20220419053338_create_infold_show_fields.rb +0 -18
- data/db/migrate/20220419053425_create_infold_show_association_fields.rb +0 -15
- data/db/migrate/20220419060937_create_infold_form_fields.rb +0 -19
- data/db/migrate/20220419061148_create_infold_form_association_fields.rb +0 -16
- data/db/migrate/20220419061725_create_infold_enums.rb +0 -16
- data/db/migrate/20220419062020_create_infold_menu_items.rb +0 -16
- data/db/migrate/20220419062119_create_infold_csv_columns.rb +0 -12
- data/db/schema.rb +0 -260
- data/lib/generators/infold/app/app_generator.rb +0 -134
- data/lib/generators/infold/app/templates/controller.rb.tt +0 -100
- data/lib/generators/infold/app/templates/search_form.rb.tt +0 -31
- data/lib/generators/infold/app/templates/views/_association_fields.haml.tt +0 -16
- data/lib/generators/infold/app/templates/views/_detail.haml.tt +0 -100
- data/lib/generators/infold/app/templates/views/_detail_modal_wrapper.haml.tt +0 -9
- data/lib/generators/infold/app/templates/views/_form.haml.tt +0 -66
- data/lib/generators/infold/app/templates/views/_index_row.haml.tt +0 -17
- data/lib/generators/infold/app/templates/views/_show_operation.haml.tt +0 -5
- data/lib/generators/infold/app/templates/views/edit+turbo_frame.haml.tt +0 -13
- data/lib/generators/infold/app/templates/views/edit.haml.tt +0 -10
- data/lib/generators/infold/app/templates/views/form.turbo_stream.haml.tt +0 -17
- data/lib/generators/infold/app/templates/views/index+turbo_frame.haml.tt +0 -43
- data/lib/generators/infold/app/templates/views/index.csv.ruby.tt +0 -18
- data/lib/generators/infold/app/templates/views/index.haml.tt +0 -49
- data/lib/generators/infold/app/templates/views/new+turbo_frame.haml.tt +0 -14
- data/lib/generators/infold/app/templates/views/new.haml.tt +0 -12
- data/lib/generators/infold/app/templates/views/show+turbo_frame.haml.tt +0 -4
- data/lib/generators/infold/app/templates/views/show.haml.tt +0 -9
- data/lib/generators/infold/install/install_generator.rb +0 -151
- data/lib/generators/infold/install/templates/app/components/admin/enum_badge_component.html.haml +0 -4
- data/lib/generators/infold/install/templates/app/components/admin/enum_badge_component.rb +0 -11
- data/lib/generators/infold/install/templates/app/components/admin/form/checkbox_fieldset_component.html.haml +0 -11
- data/lib/generators/infold/install/templates/app/components/admin/form/checkbox_fieldset_component.rb +0 -15
- data/lib/generators/infold/install/templates/app/components/admin/form/datetime_fieldset_component.html.haml +0 -20
- data/lib/generators/infold/install/templates/app/components/admin/form/datetime_fieldset_component.rb +0 -13
- data/lib/generators/infold/install/templates/app/components/admin/form/file_upload_component.rb +0 -12
- data/lib/generators/infold/install/templates/app/components/admin/form/input_fieldset_component.html.haml +0 -14
- data/lib/generators/infold/install/templates/app/components/admin/form/input_fieldset_component.rb +0 -24
- data/lib/generators/infold/install/templates/app/components/admin/form/radio_fieldset_component.html.haml +0 -11
- data/lib/generators/infold/install/templates/app/components/admin/form/radio_fieldset_component.rb +0 -15
- data/lib/generators/infold/install/templates/app/components/admin/form/relation_fieldset_component.html.haml +0 -17
- data/lib/generators/infold/install/templates/app/components/admin/form/relation_fieldset_component.rb +0 -21
- data/lib/generators/infold/install/templates/app/components/admin/form/select_fieldset_component.html.haml +0 -7
- data/lib/generators/infold/install/templates/app/components/admin/form/select_fieldset_component.rb +0 -16
- data/lib/generators/infold/install/templates/app/components/admin/form/switch_element_component.html.haml +0 -4
- data/lib/generators/infold/install/templates/app/components/admin/form/switch_element_component.rb +0 -12
- data/lib/generators/infold/install/templates/app/components/admin/remote_modal_component.rb +0 -21
- data/lib/generators/infold/install/templates/app/components/admin/sortable_th_component.html.haml +0 -4
- data/lib/generators/infold/install/templates/app/components/admin/sortable_th_component.rb +0 -27
- data/lib/generators/infold/install/templates/app/controllers/admin/admin_users_controller.rb +0 -62
- data/lib/generators/infold/install/templates/app/helpers/admin_helper.rb +0 -37
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_detail.html.haml +0 -14
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_form.html.haml +0 -6
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_index_row.html.haml +0 -9
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/_show_operation.html.haml +0 -4
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/edit.html+turbo_frame.haml +0 -11
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/edit.html.haml +0 -10
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/form.turbo_stream.haml +0 -4
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/index.html.haml +0 -21
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/new.html+turbo_frame.haml +0 -11
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/new.html.haml +0 -10
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/show.html+turbo_frame.haml +0 -11
- data/lib/generators/infold/install/templates/app/views/admin/admin_users/show.html.haml +0 -8
- data/lib/generators/infold/install/templates/app/views/admin/common/_header_menu.html.haml +0 -0
- data/lib/generators/infold/install/templates/javascript/admin/controllers/application.js +0 -9
- data/lib/generators/infold/install/templates/javascript/admin/controllers/flash_controller.js +0 -10
- data/lib/generators/infold/install/templates/javascript/admin/stylesheets/custom.css +0 -290
- data/lib/generators/infold/install/templates/javascript/admin/stylesheets/custom.css.map +0 -1
- data/lib/generators/infold/install/templates/javascript/esbuild/admin.js +0 -10
- data/lib/generators/infold/install/templates/javascript/webpacker/admin.js +0 -9
- data/lib/generators/infold/model/model_generator.rb +0 -50
- data/lib/generators/infold/model/templates/decorator.rb.tt +0 -10
- data/lib/generators/infold/model/templates/model.rb.tt +0 -59
- data/lib/generators/infold/project/project_generator.rb +0 -66
- data/lib/generators/infold/project/templates/_header_menu.haml.tt +0 -17
- data/lib/generators/infold/project/templates/locales/form.yml.tt +0 -11
- data/lib/generators/infold/project/templates/locales/model.yml.tt +0 -43
- data/lib/generators/infold/project/templates/relation_fieldset_component.rb.tt +0 -30
- data/lib/infold/engine.rb +0 -15
@@ -0,0 +1,34 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
module Admin
|
3
|
+
class <%= @writer.resource_name(:model) %> < ::<%= @writer.resource_name(:model) %>
|
4
|
+
<%- if @writer.resource.datetime_fields.present? -%>
|
5
|
+
include DatetimeFieldConcern
|
6
|
+
|
7
|
+
<%= @writer.datetime_field_code&.gsub('[TAB]', ' ') %>
|
8
|
+
<%- end -%>
|
9
|
+
<%- if association_code = @writer.association_code.presence -%>
|
10
|
+
<%= association_code %>
|
11
|
+
<%- end -%>
|
12
|
+
<%- if accepts_nested_attributes_code = @writer.accepts_nested_attributes_code.presence -%>
|
13
|
+
<%= accepts_nested_attributes_code %>
|
14
|
+
<%- end -%>
|
15
|
+
<%- if delegate_code = @writer.delegate_code.presence -%>
|
16
|
+
<%= delegate_code %>
|
17
|
+
<%- end -%>
|
18
|
+
<%- if active_storage_attachment_code = @writer.active_storage_attachment_code.presence -%>
|
19
|
+
<%= active_storage_attachment_code.gsub('[TAB]', ' ') %>
|
20
|
+
<%- end -%>
|
21
|
+
<%- if validation_code = @writer.validation_code.presence -%>
|
22
|
+
<%= validation_code.gsub('[TAB]', ' ') %>
|
23
|
+
<%- end -%>
|
24
|
+
<%- if datetime_validation_code = @writer.datetime_validation_code.presence -%>
|
25
|
+
<%= datetime_validation_code %>
|
26
|
+
<%- end -%>
|
27
|
+
<%- if enum_code = @writer.enum_code.presence -%>
|
28
|
+
<%= enum_code %>
|
29
|
+
<%- end -%>
|
30
|
+
<%- if scope_code = @writer.scope_code.presence -%>
|
31
|
+
<%= scope_code.gsub('[TAB]', ' ') %>
|
32
|
+
<%- end -%>
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
model:
|
3
|
+
validate:
|
4
|
+
decorator:
|
5
|
+
association:
|
6
|
+
enum:
|
7
|
+
active_storage:
|
8
|
+
app:
|
9
|
+
title: <%= @name.pluralize.underscore.gsub('_', ' ').upcase %>
|
10
|
+
index:
|
11
|
+
conditions:
|
12
|
+
- id:
|
13
|
+
sign: eq
|
14
|
+
list:
|
15
|
+
fields:
|
16
|
+
default_order:
|
17
|
+
csv:
|
18
|
+
fields:
|
19
|
+
show:
|
20
|
+
fields:
|
21
|
+
form:
|
22
|
+
fields:
|
23
|
+
association_search:
|
24
|
+
conditions:
|
25
|
+
- id:
|
26
|
+
sign: eq
|
27
|
+
list:
|
28
|
+
fields:
|
29
|
+
default_order:
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
module Admin
|
3
|
+
class <%= @writer.resource_name(:model) %>SearchForm < BaseSearchForm
|
4
|
+
|
5
|
+
<%= @writer.set_conditions_code&.gsub('[TAB]', ' ') %>
|
6
|
+
def perform(page = nil, limit: nil, csv: false)
|
7
|
+
records = <%= @writer.resource_name(:model) %><%= @writer.record_search_includes_code %>.distinct
|
8
|
+
records = apply_conditions(records, page, limit, csv)
|
9
|
+
<%- if default_order = @writer.resource.default_order -%>
|
10
|
+
@sort_field ||= :<%= default_order.field.name %>
|
11
|
+
@sort_kind ||= :<%= default_order.order_kind || 'asc' %>
|
12
|
+
<%- end -%>
|
13
|
+
apply_sort(records, <%= @writer.resource_name(:model) %>.primary_key)
|
14
|
+
end
|
15
|
+
<%- @writer.resource.conditions&.select { |c| c.form_kind(:index) == :association_search }&.each do |condition| -%>
|
16
|
+
<%- association = condition.field.association -%>
|
17
|
+
|
18
|
+
def <%= association.name %>_<%= association.name_field %>
|
19
|
+
<%= association.model_name %>.find(<%= condition.scope %>)&.<%= association.name_field %> if <%= condition.scope %>.present?
|
20
|
+
end
|
21
|
+
<%- end -%>
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
<%- area_rendered = false -%>
|
3
|
+
<%- @writer.form_fields.each do |field| -%>
|
4
|
+
<%- if field.form_element.kind_has_association? -%>
|
5
|
+
.card.mb-3{ data: {controller: 'nested-form'} }
|
6
|
+
.card-header.py-2
|
7
|
+
%div
|
8
|
+
%h3.text-muted.mb-0= Admin::<%= field.association.model_name %>.human_attribute_name(:<%= field.name %>)
|
9
|
+
= render Admin::InvalidMessageComponent.new(form, :<%= field.name %>)
|
10
|
+
%template{ data: { nested_form_target: 'template' } }
|
11
|
+
= form.fields_for :<%= field.name %>, Admin::<%= field.association.model_name %>.new, child_index: 'NEW_RECORD' do |nested_form|
|
12
|
+
= render 'form_<%= field.name(:single) %>', purchase: form.object, form: nested_form
|
13
|
+
.table-responsive
|
14
|
+
%table.table.nested_form_table.card-table
|
15
|
+
%thead
|
16
|
+
%tr
|
17
|
+
<%- field.form_element.association_fields.each do |association_field| -%>
|
18
|
+
%th<%= '.required' if association_field.validation&.has_presence? %>
|
19
|
+
= Admin::<%= field.association.model_name %>.human_attribute_name(:<%= association_field.name %>)
|
20
|
+
<%- end -%>
|
21
|
+
%th.icon_sell
|
22
|
+
%tbody{ data: { nested_form_target: 'links' } }
|
23
|
+
= form.fields_for :<%= field.name %> do |nested_form|
|
24
|
+
= render 'form_<%= field.name(:single) %>', form: nested_form
|
25
|
+
.card-body.text-end.py-2
|
26
|
+
= link_to t('infold.operation.add'), '#', class: 'btn btn-info', data: { action: 'nested-form#add_association' }
|
27
|
+
<%- area_rendered = false -%>
|
28
|
+
<%- else -%>
|
29
|
+
<%- unless area_rendered -%>
|
30
|
+
.list-group.mb-3
|
31
|
+
<%- area_rendered = true -%>
|
32
|
+
<%- end -%>
|
33
|
+
.list-group-item
|
34
|
+
<%= @writer.form_field_code(field)&.gsub('[TAB]', ' ') %>
|
35
|
+
<%- end -%>
|
36
|
+
<%- end -%>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
%tr.nested-fields{ class: "#{'d-none' if form.object._destroy}", data: { new_record: form.object.new_record? } }
|
2
|
+
<%- @association_field.form_element.association_fields.each do |association_field| -%>
|
3
|
+
%td.nested_form
|
4
|
+
<%= @writer.form_field_code(association_field)&.gsub('[TAB]', ' ') %>
|
5
|
+
<%- end -%>
|
6
|
+
%td.icon_cell
|
7
|
+
= link_to "#", class: 'd-block', data: { action: "click->nested-form#remove_association" } do
|
8
|
+
%i.bi.bi-trash.h3
|
9
|
+
= form.hidden_field :_destroy
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
%tr{ id: dom_id(<%= @writer.resource_name(:snake) %>) }
|
3
|
+
%td.icon_cell
|
4
|
+
= link_to <%= @writer.show_path(@writer.resource_name(:snake)) %>, class: 'd-block', data: { turbo_frame: 'modal_main' } do
|
5
|
+
%i.bi.bi-file-text.h3
|
6
|
+
<%- @writer.index_list_fields.each do |field| -%>
|
7
|
+
%td<%= '.image_cell' if field.active_storage&.kind_image? %>
|
8
|
+
<%= @writer.indent(@writer.field_display_code(field, :index).gsub('[TAB]', ' '), 2) %>
|
9
|
+
<%- end -%>
|
10
|
+
%td.icon_cell
|
11
|
+
= link_to <%= @writer.edit_path(@writer.resource_name(:snake)) %>, class: 'd-block', data: { turbo_frame: "modal_main" } do
|
12
|
+
%i.bi.bi-pencil-square.h3
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
<%- rendered_list_group = false -%>
|
3
|
+
<%- @writer.show_fields.each do |field| -%>
|
4
|
+
<%- if field.show_element.kind_association? && !field.association.belongs_to? -%>
|
5
|
+
.card.mb-3
|
6
|
+
.card-header.py-2
|
7
|
+
%h3.text-muted.mb-0= <%= @writer.resource_name(:snake) %>.class.human_attribute_name(:<%= field.name %>)
|
8
|
+
- if <%= @writer.resource_name(:snake) %>.<%= field.name %>.blank?
|
9
|
+
.card-body
|
10
|
+
.alert= t('infold.no_data')
|
11
|
+
- else
|
12
|
+
.table-responsive
|
13
|
+
%table.table.table-hover.card-table
|
14
|
+
%thead
|
15
|
+
%tr
|
16
|
+
<%- field.show_element.association_fields.each do |association_field| -%>
|
17
|
+
%th= Admin::<%= field.association.model_name %>.human_attribute_name(:<%= association_field.name %>)
|
18
|
+
<%- end -%>
|
19
|
+
%tbody
|
20
|
+
- <%= @writer.resource_name(:snake) %>.<%= field.name %>.each do |<%= field.name(:single) %>|
|
21
|
+
%tr
|
22
|
+
<%- field.show_element.association_fields.each do |association_field| -%>
|
23
|
+
%td
|
24
|
+
<%= @writer.field_display_code(association_field, :list, model_name: field.name(:single)).gsub('[TAB]', ' ') %>
|
25
|
+
<%- end -%>
|
26
|
+
<%- rendered_list_group = false -%>
|
27
|
+
<%- else -%>
|
28
|
+
<%- unless rendered_list_group -%>
|
29
|
+
.list-group.mb-3
|
30
|
+
<%- rendered_list_group = true -%>
|
31
|
+
<%- end -%>
|
32
|
+
.list-group-item
|
33
|
+
.row
|
34
|
+
.col-md-3
|
35
|
+
.text-muted.fw-bold= <%= @writer.resource_name(:snake) %>.class.human_attribute_name(:<%= field.name %>)
|
36
|
+
.col-md-9
|
37
|
+
<%= @writer.indent(@writer.field_display_code(field, :show).gsub('[TAB]', ' '), 4) %>
|
38
|
+
<%- end -%>
|
39
|
+
<%- end -%>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
= modal.with_header do
|
2
|
+
%ol.breadcrumb.text-dark
|
3
|
+
%li.breadcrumb-item <%= @writer.resource.app_title %>
|
4
|
+
%li.breadcrumb-item.active= "#{t('infold.operation.show')} ##{<%= @writer.resource_name(:snake) %>.id}"
|
5
|
+
= modal.with_body do
|
6
|
+
.modal-body
|
7
|
+
= render 'show_content', <%= @writer.resource_name(:snake) %>: <%= @writer.resource_name(:snake) %>
|
8
|
+
- unless admin_remote_modal_id == 'modal_sub'
|
9
|
+
= modal.with_footer do
|
10
|
+
.modal-footer
|
11
|
+
= link_to t('infold.operation.edit'), <%= @writer.edit_path(@writer.resource_name(:snake)) %>,
|
12
|
+
class: 'btn btn-primary', data: { turbo_frame: "modal_main" }
|
13
|
+
= link_to t('infold.operation.delete'), <%= @writer.show_path(@writer.resource_name(:snake)) %>,
|
14
|
+
class: 'btn btn-danger ms-1', data: { turbo_confirm: t('infold.operation.confirm',
|
15
|
+
submit: t('infold.operation.delete')), turbo_method: :delete, turbo_frame: "_top" }
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
= turbo_frame_tag("modal_main") do
|
3
|
+
= form_with model: @<%= @writer.resource_name(:snake) %> do |form|
|
4
|
+
= render Admin::RemoteModalComponent.new(backdrop: :static) do |modal|
|
5
|
+
= modal.with_header do
|
6
|
+
%ol.breadcrumb.text-dark
|
7
|
+
%li.breadcrumb-item <%= @writer.resource.app_title %>
|
8
|
+
%li.breadcrumb-item.active= "#{t('infold.operation.edit')} ##{@<%= @writer.resource_name(:snake) %>.id}"
|
9
|
+
= modal.with_body do
|
10
|
+
.modal-body#form_body
|
11
|
+
= render "form", form: form
|
12
|
+
= modal.with_footer do
|
13
|
+
.modal-footer
|
14
|
+
%button.btn.btn-secondary{"data-bs-dismiss" => "modal", :type => "button"}= t('infold.operation.cancel')
|
15
|
+
= form.submit t('infold.operation.update'), class: 'btn btn-primary'
|
@@ -0,0 +1,16 @@
|
|
1
|
+
- if @<%= @writer.resource_name(:snake) %>.invalid?
|
2
|
+
= turbo_stream.update "form_body" do
|
3
|
+
= fields_for @<%= @writer.resource_name(:snake) %> do |form|
|
4
|
+
= render "form", form: form
|
5
|
+
- else
|
6
|
+
= turbo_stream.update "modal_main" do
|
7
|
+
= render Admin::RemoteModalComponent.new do |modal|
|
8
|
+
= render 'show_wrapper', modal: modal, <%= @writer.resource_name(:snake) %>: @<%= @writer.resource_name(:snake) %>
|
9
|
+
- if action_name == "create"
|
10
|
+
= turbo_stream.prepend "<%= @writer.resource_name(:snake, :multi) %>" do
|
11
|
+
= render 'index_row', <%= @writer.resource_name(:snake) %>: @<%= @writer.resource_name(:snake) %>
|
12
|
+
= turbo_stream.remove "no_data"
|
13
|
+
- else
|
14
|
+
= turbo_stream.replace @<%= @writer.resource_name(:snake) %> do
|
15
|
+
= render 'index_row', <%= @writer.resource_name(:snake) %>: @<%= @writer.resource_name(:snake) %>
|
16
|
+
= admin_turbo_stream_flash
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
require 'csv'
|
3
|
+
|
4
|
+
CSV.generate do |csv|
|
5
|
+
# set title row
|
6
|
+
csv << [
|
7
|
+
<%- @writer.csv_fields.each do |csv_field| -%>
|
8
|
+
Admin::<%= @writer.resource_name(:model) %>.human_attribute_name(:<%= csv_field.name %>),
|
9
|
+
<%- end -%>
|
10
|
+
]
|
11
|
+
# set body rows
|
12
|
+
@<%= @writer.resource_name(:table) %>.each do |<%= @writer.resource_name(:single, :snake) %>|
|
13
|
+
csv << [
|
14
|
+
<%- @writer.csv_fields.each do |csv_field| -%>
|
15
|
+
<%= @writer.csv_field_code(csv_field) %>,
|
16
|
+
<%- end -%>
|
17
|
+
]
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
%nav.navbar.navbar-light
|
3
|
+
.container-fluid
|
4
|
+
%ol.breadcrumb
|
5
|
+
%li.breadcrumb-item.active <%= @writer.resource.app_title %>
|
6
|
+
.ms-auto
|
7
|
+
= link_to t('infold.operation.new'), <%= @writer.new_path %>, class: 'btn btn-warning', data: { turbo_frame: "modal_main" }
|
8
|
+
#index_page.d-md-flex{ data: { controller: 'index-page', index_page_target: 'wrapper' } }
|
9
|
+
#conditions.bg-white.container-fluid.border-end.pe-3.py-3
|
10
|
+
= form_with model: @search, url: <%= @writer.index_path %>, method: :get, scope: 'search',
|
11
|
+
data: { index_page_target: 'searchForm' } do |form|
|
12
|
+
= form.hidden_field :sort_field, data: { index_page_target: 'sortField' }
|
13
|
+
= form.hidden_field :sort_kind, data: { index_page_target: 'sortKind' }
|
14
|
+
<%- @writer.index_conditions&.each do |condition| -%>
|
15
|
+
.mb-3
|
16
|
+
<%= @writer.indent(@writer.condition_form_code(condition).gsub('[TAB]', ' '), 4) %>
|
17
|
+
<%- end -%>
|
18
|
+
%hr.my-3
|
19
|
+
.row.gx-2
|
20
|
+
.col-6.order-2.d-grid
|
21
|
+
= form.submit t('infold.operation.search'), class: 'btn btn-primary'
|
22
|
+
.col-6.d-grid
|
23
|
+
= link_to t('infold.operation.clear'), <%= @writer.index_path %>, class: 'btn btn-secondary'
|
24
|
+
#result.flex-fill.container-fluid.ps-3.py-3{ data: { index_page_target: 'resultArea' } }
|
25
|
+
- if @<%= @writer.resource_name(:table) %>.blank?
|
26
|
+
.alert#no_data= t('infold.no_data')
|
27
|
+
.card.border-top-0
|
28
|
+
.table_wrapper.table-responsive.bg-secondary-lt{ data: { index_page_target: 'resultTableWrapper' } }
|
29
|
+
%table.table.table-hover.table-striped.mb-0.bg-white
|
30
|
+
%thead{ data: { index_page_target: 'thead' } }
|
31
|
+
%tr
|
32
|
+
%th.icon_cell
|
33
|
+
<%- @writer.index_list_fields.each do |field| -%>
|
34
|
+
%th<%= @writer.list_header_code(field) %>
|
35
|
+
<%- end -%>
|
36
|
+
%th.icon_cell
|
37
|
+
%tbody#<%= @writer.resource_name(:table) %>
|
38
|
+
= render partial: "index_row", collection: @<%= @writer.resource_name(:table) %>, as: '<%= @writer.resource_name(:snake) %>'
|
39
|
+
- if @<%= @writer.resource_name(:table) %>.present?
|
40
|
+
.card-body.d-md-flex.align-items-center.justify-content-between
|
41
|
+
.mb-3.mb-md-0
|
42
|
+
= admin_search_result_count(@<%= @writer.resource_name(:table) %>)
|
43
|
+
.mb-3.mb-md-0
|
44
|
+
= paginate(@<%= @writer.resource_name(:table) %>, views_prefix: "admin")
|
45
|
+
= link_to t('infold.operation.output_csv'), '#', class: 'btn btn-info', data: { action: 'index-page#outputCsv' }
|
@@ -0,0 +1,41 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
= turbo_frame_tag(admin_remote_modal_id) do
|
3
|
+
= render Admin::RemoteModalComponent.new('modal_sub') do |modal|
|
4
|
+
= modal.with_header { '<%= @writer.resource.app_title %>' }
|
5
|
+
= modal.with_body do
|
6
|
+
.modal-body
|
7
|
+
.mb-3
|
8
|
+
= form_with model: Admin::CustomerSearchForm.new, url: <%= @writer.index_path %>, method: :get,
|
9
|
+
scope: 'search', data: { turbo_frame: 'association_search_body' } do |form|
|
10
|
+
.row.gy-3.align-items-end
|
11
|
+
<%- @writer.association_search_conditions&.each do |condition| -%>
|
12
|
+
.col-lg-6.col-xl-4
|
13
|
+
<%= @writer.indent(@writer.condition_form_code(condition).gsub('[TAB]', ' '), 8) %>
|
14
|
+
<%- end -%>
|
15
|
+
.col-lg-6.col-xl-4
|
16
|
+
= hidden_field_tag :name_field, params[:name_field]
|
17
|
+
= form.submit t('infold.operation.search'), class: 'btn btn-primary'
|
18
|
+
= turbo_frame_tag 'association_search_body' do
|
19
|
+
- if @<%= @writer.resource_name(:multi, :snake) %>.blank?
|
20
|
+
.alert= t('infold.no_data')
|
21
|
+
- else
|
22
|
+
.table_wrapper.table-responsive.bg-white.border.mb-3
|
23
|
+
%table.table.table-striped.table-hover
|
24
|
+
%thead
|
25
|
+
%tr
|
26
|
+
<%- @writer.association_search_list_fields.each do |field| -%>
|
27
|
+
%th= Admin::<%= @writer.resource_name(:model) %>.human_attribute_name(:<%= field.name %>)
|
28
|
+
<%- end -%>
|
29
|
+
%th
|
30
|
+
%tbody
|
31
|
+
- @<%= @writer.resource_name(:multi, :snake) %>.each do |<%= @writer.resource_name(:snake) %>|
|
32
|
+
%tr
|
33
|
+
<%- @writer.association_search_list_fields.each do |field| -%>
|
34
|
+
%td<%= '.image_cell' if field.active_storage&.kind_image? %>
|
35
|
+
<%= @writer.indent(@writer.field_display_code(field, :index).gsub('[TAB]', ' '), 12) %>
|
36
|
+
<%- end -%>
|
37
|
+
%td.icon_cell
|
38
|
+
%a{ href: '#', data: { action: "relation-search#select remote-modal#close",
|
39
|
+
id: <%= @writer.resource_name(:snake) %>.id, name: <%= @writer.resource_name(:snake) %>.read_attribute(params[:name_field]) } }
|
40
|
+
%i.bi.bi-check2-square.h3
|
41
|
+
= paginate(@<%= @writer.resource_name(:multi, :snake) %>, views_prefix: "admin")
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%# encoding: utf-8 -%>
|
2
|
+
= turbo_frame_tag("modal_main") do
|
3
|
+
= form_with model: @<%= @writer.resource_name(:snake) %> do |form|
|
4
|
+
= render Admin::RemoteModalComponent.new(backdrop: :static) do |modal|
|
5
|
+
= modal.with_header do
|
6
|
+
%ol.breadcrumb.text-dark
|
7
|
+
%li.breadcrumb-item <%= @writer.resource.app_title %>
|
8
|
+
%li.breadcrumb-item.active= t('infold.operation.new')
|
9
|
+
= modal.with_body do
|
10
|
+
.modal-body#form_body
|
11
|
+
= render "form", form: form
|
12
|
+
= modal.with_footer do
|
13
|
+
.modal-footer
|
14
|
+
%button.btn.btn-secondary{"data-bs-dismiss" => "modal", :type => "button"}= t('infold.operation.cancel')
|
15
|
+
= form.submit t('infold.operation.create'), class: 'btn btn-primary'
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'infold/writers/views/form_writer'
|
3
|
+
require 'infold/resource'
|
4
|
+
require 'infold/db_schema'
|
5
|
+
require 'infold/yaml_reader'
|
6
|
+
|
7
|
+
module Infold
|
8
|
+
module Views
|
9
|
+
class FormGenerator < Rails::Generators::NamedBase
|
10
|
+
source_root File.expand_path('../templates', __dir__)
|
11
|
+
|
12
|
+
def setup
|
13
|
+
resource_name = name.camelize.singularize
|
14
|
+
db_schema = DbSchema.new(File.read(Rails.root.join('db/schema.rb')))
|
15
|
+
yaml = YAML.load_file(Rails.root.join("config/infold/#{resource_name.underscore}.yml"))
|
16
|
+
resource = YamlReader.generate_resource(resource_name, yaml, db_schema)
|
17
|
+
@writer = FormWriter.new(resource)
|
18
|
+
end
|
19
|
+
|
20
|
+
def new_file
|
21
|
+
template "views/new.html+turbo_frame.haml",
|
22
|
+
Rails.root.join("app/views/admin/#{name.underscore.pluralize}/new.html+turbo_frame.haml"), force: true
|
23
|
+
end
|
24
|
+
|
25
|
+
def edit_file
|
26
|
+
template "views/edit.html+turbo_frame.haml",
|
27
|
+
Rails.root.join("app/views/admin/#{name.underscore.pluralize}/edit.html+turbo_frame.haml"), force: true
|
28
|
+
end
|
29
|
+
|
30
|
+
def form_file
|
31
|
+
template "views/_form.haml",
|
32
|
+
Rails.root.join("app/views/admin/#{name.underscore.pluralize}/_form.html.haml"), force: true
|
33
|
+
end
|
34
|
+
|
35
|
+
def form_turbo_stream_file
|
36
|
+
template "views/form.turbo_stream.haml",
|
37
|
+
Rails.root.join("app/views/admin/#{name.underscore.pluralize}/form.turbo_stream.haml"), force: true
|
38
|
+
end
|
39
|
+
|
40
|
+
def association_form_file
|
41
|
+
@writer.form_fields.each do |field|
|
42
|
+
if field.association&.has_many? || field.association&.has_one?
|
43
|
+
@association_field = field
|
44
|
+
template "views/_form_association.haml",
|
45
|
+
Rails.root.join("app/views/admin/#{name.underscore.pluralize}/_form_#{field.name(:single)}.html.haml"), force: true
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'infold/writers/views/index_writer'
|
3
|
+
require 'infold/resource'
|
4
|
+
require 'infold/db_schema'
|
5
|
+
require 'infold/yaml_reader'
|
6
|
+
|
7
|
+
module Infold
|
8
|
+
module Views
|
9
|
+
class IndexGenerator < Rails::Generators::NamedBase
|
10
|
+
source_root File.expand_path('../templates', __dir__)
|
11
|
+
|
12
|
+
def setup
|
13
|
+
resource_name = name.camelize.singularize
|
14
|
+
db_schema = DbSchema.new(File.read(Rails.root.join('db/schema.rb')))
|
15
|
+
yaml = YAML.load_file(Rails.root.join("config/infold/#{resource_name.underscore}.yml"))
|
16
|
+
resource = YamlReader.generate_resource(resource_name, yaml, db_schema)
|
17
|
+
@writer = IndexWriter.new(resource)
|
18
|
+
end
|
19
|
+
|
20
|
+
def index_file
|
21
|
+
template "views/index.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/index.html.haml"), force: true
|
22
|
+
end
|
23
|
+
|
24
|
+
def index_row_file
|
25
|
+
template "views/_index_row.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/_index_row.html.haml"), force: true
|
26
|
+
end
|
27
|
+
|
28
|
+
def index_turbo_frame_file
|
29
|
+
template "views/index.html+turbo_frame.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/index.html+turbo_frame.haml"), force: true
|
30
|
+
end
|
31
|
+
|
32
|
+
def csv_file
|
33
|
+
template "views/index.csv.ruby", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/index.csv.ruby"), force: true
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
require 'infold/writers/views/show_writer'
|
3
|
+
require 'infold/resource'
|
4
|
+
require 'infold/db_schema'
|
5
|
+
require 'infold/yaml_reader'
|
6
|
+
|
7
|
+
module Infold
|
8
|
+
module Views
|
9
|
+
class ShowGenerator < Rails::Generators::NamedBase
|
10
|
+
source_root File.expand_path('../templates', __dir__)
|
11
|
+
|
12
|
+
def setup
|
13
|
+
resource_name = name.camelize.singularize
|
14
|
+
db_schema = DbSchema.new(File.read(Rails.root.join('db/schema.rb')))
|
15
|
+
yaml = YAML.load_file(Rails.root.join("config/infold/#{resource_name.underscore}.yml"))
|
16
|
+
resource = YamlReader.generate_resource(resource_name, yaml, db_schema)
|
17
|
+
@writer = ShowWriter.new(resource)
|
18
|
+
end
|
19
|
+
|
20
|
+
def show_file
|
21
|
+
template "views/show.html+turbo_frame.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/show.html+turbo_frame.haml"), force: true
|
22
|
+
end
|
23
|
+
|
24
|
+
def show_wrapper_file
|
25
|
+
template "views/_show_wrapper.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/_show_wrapper.html.haml"), force: true
|
26
|
+
end
|
27
|
+
|
28
|
+
def show_content_file
|
29
|
+
template "views/_show_content.haml", Rails.root.join("app/views/admin/#{name.underscore.pluralize}/_show_content.html.haml"), force: true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
module Infold
|
4
|
+
class ViewsGenerator < Rails::Generators::NamedBase
|
5
|
+
source_root File.expand_path('templates', __dir__)
|
6
|
+
|
7
|
+
def perform
|
8
|
+
invoke 'infold:views:index', [ name ]
|
9
|
+
invoke 'infold:views:show', [ name ]
|
10
|
+
invoke 'infold:views:form', [ name ]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rails/generators/base'
|
2
|
+
|
3
|
+
class InfoldGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('templates', __dir__)
|
5
|
+
|
6
|
+
def perform
|
7
|
+
resource_name = name.camelize.singularize
|
8
|
+
invoke 'infold:resource', [ resource_name ]
|
9
|
+
invoke 'infold:scaffold', [ resource_name ]
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'infold/table'
|
2
|
+
|
3
|
+
module Infold
|
4
|
+
class DbSchema
|
5
|
+
|
6
|
+
def initialize(content=nil)
|
7
|
+
@tables = []
|
8
|
+
content&.split("\n").each.each do |row|
|
9
|
+
row = row.strip
|
10
|
+
if row.start_with?('create_table')
|
11
|
+
table_name = row.split('"').second.strip
|
12
|
+
table = Table.new(table_name)
|
13
|
+
@tables << table
|
14
|
+
table.add_columns('id', 'bigint') unless row.include?('id: false')
|
15
|
+
elsif @tables.present? && row.start_with?('t.')
|
16
|
+
table = @tables.last
|
17
|
+
name = row.split('"').second.strip
|
18
|
+
type = row.match(/^t\..*? /).to_s.gsub('t.', '').strip
|
19
|
+
table.add_columns(name, type)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def table(name)
|
25
|
+
@tables.find { |t| t.name.underscore.singularize == name.underscore.singularize }
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/infold/field.rb
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
require 'infold/property/validation'
|
2
|
+
require 'infold/property/active_storage'
|
3
|
+
require 'infold/property/condition'
|
4
|
+
require 'infold/property/association'
|
5
|
+
require 'infold/property/enum'
|
6
|
+
require 'infold/property/show_element'
|
7
|
+
require 'infold/property/form_element'
|
8
|
+
require 'infold/property/decorator'
|
9
|
+
|
10
|
+
module Infold
|
11
|
+
class Field
|
12
|
+
attr_reader :type,
|
13
|
+
:validation,
|
14
|
+
:enum,
|
15
|
+
:active_storage,
|
16
|
+
:form_element,
|
17
|
+
:show_element,
|
18
|
+
:decorator,
|
19
|
+
:search_conditions,
|
20
|
+
:association
|
21
|
+
|
22
|
+
attr_accessor :index_list_seq,
|
23
|
+
:csv_seq,
|
24
|
+
:association_search_list_seq
|
25
|
+
|
26
|
+
def initialize(name, type=nil)
|
27
|
+
@name = name
|
28
|
+
@type = type&.to_sym
|
29
|
+
@search_conditions = []
|
30
|
+
end
|
31
|
+
|
32
|
+
def name(*attr)
|
33
|
+
name = @name
|
34
|
+
name = name.underscore if attr.include?(:snake)
|
35
|
+
name = name.camelize if attr.include?(:camel)
|
36
|
+
name = name.singularize if attr.include?(:single)
|
37
|
+
name = name.pluralize if attr.include?(:multi)
|
38
|
+
name
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_active_storage(**attrs)
|
42
|
+
@active_storage = ActiveStorage.new(self, **attrs)
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_association(**attrs)
|
46
|
+
@association = Association.new(self, **attrs)
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_enum
|
50
|
+
@enum = Enum.new(self)
|
51
|
+
end
|
52
|
+
|
53
|
+
def build_show_element(**attrs)
|
54
|
+
@show_element = ShowElement.new(self, **attrs)
|
55
|
+
end
|
56
|
+
|
57
|
+
def build_form_element(**attrs)
|
58
|
+
@form_element = FormElement.new(self, **attrs)
|
59
|
+
end
|
60
|
+
|
61
|
+
def build_decorator(**attrs)
|
62
|
+
@decorator = Decorator.new(self, **attrs)
|
63
|
+
end
|
64
|
+
|
65
|
+
def enum?; @enum.present? end
|
66
|
+
def decorator?; @decorator.present? end
|
67
|
+
def association?; @association.present? end
|
68
|
+
def validation?; @validation.present? end
|
69
|
+
def active_storage?; @active_storage.present? end
|
70
|
+
def form_element?; @form_element.present? end
|
71
|
+
|
72
|
+
def add_validation(condition, options = {})
|
73
|
+
@validation ||= Validation.new(self)
|
74
|
+
@validation.add_conditions(condition, options)
|
75
|
+
end
|
76
|
+
|
77
|
+
def add_search_condition(view_kind, sign:, form_kind:, seq: 0, association_name: nil)
|
78
|
+
form_kind = 'text' if form_kind.blank?
|
79
|
+
condition = @search_conditions.find{ |sc| sc.sign == sign.to_sym }
|
80
|
+
condition ||= (@search_conditions << Condition.new(self, sign: sign)).last
|
81
|
+
if view_kind == :index
|
82
|
+
condition.index_form_kind = form_kind
|
83
|
+
condition.index_seq = seq
|
84
|
+
else
|
85
|
+
condition.association_search_form_kind = form_kind
|
86
|
+
condition.association_seq = seq
|
87
|
+
end
|
88
|
+
condition.index_association_name = association_name
|
89
|
+
condition
|
90
|
+
end
|
91
|
+
|
92
|
+
def datepicker?
|
93
|
+
%w(date datetime).include?(type.to_s)
|
94
|
+
end
|
95
|
+
|
96
|
+
def number?
|
97
|
+
%w(integer float decimal).include?(type.to_s)
|
98
|
+
end
|
99
|
+
|
100
|
+
def in_index_list?; index_list_seq.present? end
|
101
|
+
def in_csv?; csv_seq.present? end
|
102
|
+
def in_association_search_list?; association_search_list_seq.present? end
|
103
|
+
end
|
104
|
+
end
|