avo 2.43.0 → 3.0.2
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of avo might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Gemfile +30 -26
- data/Gemfile.lock +235 -161
- data/README.md +19 -27
- data/Rakefile +2 -0
- data/app/assets/stylesheets/avo.base.css +1 -1
- data/app/assets/svgs/font.svg +1 -0
- data/app/assets/svgs/triangle-up.svg +1 -0
- data/app/components/avo/actions_component.html.erb +19 -5
- data/app/components/avo/actions_component.rb +39 -19
- data/app/components/avo/asset_manager/javascript_component.html.erb +3 -0
- data/app/components/avo/asset_manager/javascript_component.rb +13 -0
- data/app/components/avo/asset_manager/stylesheet_component.html.erb +3 -0
- data/app/components/avo/asset_manager/stylesheet_component.rb +13 -0
- data/app/components/avo/base_component.rb +15 -12
- data/app/components/avo/button_component.rb +20 -3
- data/app/components/avo/empty_state_component.rb +1 -1
- data/app/components/avo/field_wrapper_component.html.erb +1 -1
- data/app/components/avo/field_wrapper_component.rb +9 -15
- data/app/components/avo/fields/area_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +75 -79
- data/app/components/avo/fields/belongs_to_field/edit_component.rb +7 -7
- data/app/components/avo/fields/belongs_to_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/belongs_to_field/show_component.rb +2 -2
- data/app/components/avo/fields/boolean_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +3 -3
- data/app/components/avo/fields/common/badge_viewer_component.rb +1 -1
- data/app/components/avo/fields/common/boolean_check_component.html.erb +1 -12
- data/app/components/avo/fields/common/boolean_check_component.rb +2 -1
- data/app/components/avo/fields/common/boolean_group_component.html.erb +2 -2
- data/app/components/avo/fields/common/files/view_type/grid_item_component.rb +2 -2
- data/app/components/avo/fields/common/gravatar_viewer_component.html.erb +1 -1
- data/app/components/avo/fields/common/gravatar_viewer_component.rb +2 -2
- data/app/components/avo/fields/common/heading_component.html.erb +3 -8
- data/app/components/avo/fields/common/heading_component.rb +1 -3
- data/app/components/avo/fields/common/key_value_component.html.erb +2 -2
- data/app/components/avo/fields/common/key_value_component.rb +2 -2
- data/app/components/avo/fields/common/progress_bar_component.rb +3 -9
- data/app/components/avo/fields/common/status_viewer_component.html.erb +3 -0
- data/app/components/avo/fields/edit_component.rb +2 -2
- data/app/components/avo/fields/external_image_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/file_field/index_component.html.erb +2 -2
- data/app/components/avo/fields/gravatar_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/has_one_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/has_one_field/show_component.html.erb +3 -2
- data/app/components/avo/fields/has_one_field/show_component.rb +2 -2
- data/app/components/avo/fields/heading_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/heading_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/id_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/index_component.rb +6 -6
- data/app/components/avo/fields/location_field/edit_component.html.erb +12 -10
- data/app/components/avo/fields/preview_field/index_component.html.erb +10 -0
- data/app/components/avo/fields/preview_field/index_component.rb +4 -0
- data/app/components/avo/fields/select_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/show_component.rb +5 -2
- data/app/components/avo/fields/text_field/index_component.html.erb +1 -1
- data/app/components/avo/fields/trix_field/edit_component.html.erb +2 -2
- data/app/components/avo/fields/trix_field/edit_component.rb +1 -1
- data/app/components/avo/fields/trix_field/show_component.html.erb +1 -1
- data/app/components/avo/filters_component.html.erb +9 -3
- data/app/components/avo/filters_component.rb +4 -4
- data/app/components/avo/index/field_wrapper_component.rb +1 -13
- data/app/components/avo/index/grid_item_component.html.erb +13 -36
- data/app/components/avo/index/grid_item_component.rb +43 -16
- data/app/components/avo/index/resource_controls_component.html.erb +3 -81
- data/app/components/avo/index/resource_controls_component.rb +125 -18
- data/app/components/avo/index/resource_grid_component.html.erb +5 -3
- data/app/components/avo/index/resource_grid_component.rb +5 -2
- data/app/components/avo/index/resource_map_component.html.erb +1 -1
- data/app/components/avo/index/resource_map_component.rb +3 -3
- data/app/components/avo/index/resource_table_component.html.erb +5 -4
- data/app/components/avo/index/resource_table_component.rb +24 -7
- data/app/components/avo/index/table_row_component.html.erb +9 -5
- data/app/components/avo/index/table_row_component.rb +3 -2
- data/app/components/avo/items/panel_component.html.erb +25 -0
- data/app/components/avo/items/panel_component.rb +43 -0
- data/app/components/avo/items/switcher_component.html.erb +17 -0
- data/app/components/avo/items/switcher_component.rb +79 -0
- data/app/components/avo/items/visible_items_component.html.erb +10 -0
- data/app/components/avo/items/visible_items_component.rb +11 -0
- data/app/components/avo/modal_component.html.erb +3 -4
- data/app/components/avo/paginator_component.html.erb +29 -40
- data/app/components/avo/paginator_component.rb +23 -5
- data/app/components/avo/panel_component.html.erb +7 -5
- data/app/components/avo/referrer_params_component.html.erb +1 -1
- data/app/components/avo/resource_component.rb +205 -26
- data/app/components/avo/resource_sidebar_component.html.erb +15 -18
- data/app/components/avo/resource_sidebar_component.rb +5 -3
- data/app/components/avo/sidebar/link_component.rb +1 -1
- data/app/components/avo/sidebar_component.html.erb +10 -3
- data/app/components/avo/sidebar_component.rb +5 -3
- data/app/components/avo/sidebar_profile_component.html.erb +18 -12
- data/app/components/avo/tab_group_component.html.erb +14 -8
- data/app/components/avo/tab_group_component.rb +1 -6
- data/app/components/avo/tab_switcher_component.html.erb +17 -40
- data/app/components/avo/tab_switcher_component.rb +6 -41
- data/app/components/avo/views/resource_edit_component.html.erb +23 -84
- data/app/components/avo/views/resource_edit_component.rb +20 -19
- data/app/components/avo/views/resource_index_component.html.erb +42 -47
- data/app/components/avo/views/resource_index_component.rb +76 -13
- data/app/components/avo/views/resource_show_component.html.erb +16 -177
- data/app/components/avo/views/resource_show_component.rb +16 -10
- data/app/controllers/avo/actions_controller.rb +37 -41
- data/app/controllers/avo/application_controller.rb +119 -181
- data/app/controllers/avo/associations_controller.rb +34 -43
- data/app/controllers/avo/attachments_controller.rb +4 -4
- data/app/controllers/avo/base_controller.rb +145 -98
- data/app/controllers/avo/debug_controller.rb +17 -5
- data/app/controllers/avo/home_controller.rb +1 -1
- data/app/controllers/avo/search_controller.rb +56 -50
- data/app/controllers/concerns/avo/initializes_avo.rb +22 -0
- data/app/helpers/avo/application_helper.rb +18 -8
- data/app/helpers/avo/resources_helper.rb +1 -1
- data/app/helpers/avo/url_helpers.rb +28 -12
- data/app/javascript/avo.base.js +1 -0
- data/app/javascript/js/application.js +3 -0
- data/app/javascript/js/controllers/action_controller.js +3 -1
- data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
- data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +7 -7
- data/app/javascript/js/controllers/filter_controller.js +1 -1
- data/app/javascript/js/controllers/input_autofocus_controller.js +12 -0
- data/app/javascript/js/controllers/preview_controller.js +24 -0
- data/app/javascript/js/controllers/search_controller.js +4 -2
- data/app/javascript/js/controllers/self_destroy_controller.js +7 -0
- data/app/javascript/js/controllers/toggle_controller.js +48 -0
- data/app/javascript/js/controllers.js +11 -5
- data/app/javascript/js/custom-stream-actions.js +15 -0
- data/app/views/avo/actions/show.html.erb +10 -7
- data/app/views/avo/associations/new.html.erb +2 -2
- data/app/views/avo/base/_new_via_belongs_to.html.erb +1 -1
- data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +3 -3
- data/app/views/avo/base/create_fail_action.turbo_stream.erb +2 -2
- data/app/views/avo/base/edit.html.erb +1 -1
- data/app/views/avo/base/index.html.erb +4 -3
- data/app/views/avo/base/new.html.erb +2 -1
- data/app/views/avo/base/preview.html.erb +19 -0
- data/app/views/avo/base/show.html.erb +2 -2
- data/app/views/avo/debug/_valid_indicator.html.erb +9 -0
- data/app/views/avo/debug/report.html.erb +32 -17
- data/app/views/avo/debug/{index.html.erb → status.html.erb} +31 -14
- data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
- data/app/views/avo/partials/_flash_alerts.turbo_stream.erb +1 -1
- data/app/views/avo/partials/_footer.html.erb +1 -1
- data/app/views/avo/partials/_javascript.html.erb +5 -0
- data/app/views/avo/partials/_logo.html.erb +1 -1
- data/app/views/avo/partials/_navbar.html.erb +3 -5
- data/app/views/avo/partials/_resource_search.html.erb +1 -0
- data/app/views/avo/partials/_table_header.html.erb +5 -11
- data/app/views/layouts/avo/application.html.erb +5 -4
- data/avo.gemspec +11 -8
- data/bin/dev +3 -1
- data/bin/prod +0 -0
- data/config/i18n-tasks.yml +1 -1
- data/config/initializers/pagy.rb +2 -0
- data/config/master.key +1 -0
- data/config/routes.rb +7 -10
- data/db/factories.rb +6 -0
- data/lib/avo/asset_manager.rb +30 -0
- data/lib/avo/base_action.rb +84 -82
- data/lib/avo/base_resource.rb +286 -225
- data/lib/avo/base_resource_tool.rb +9 -16
- data/lib/avo/concerns/borrow_items_holder.rb +35 -0
- data/lib/avo/concerns/breadcrumbs.rb +2 -2
- data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +5 -9
- data/lib/avo/concerns/filters_session_handler.rb +7 -5
- data/lib/avo/concerns/has_controls.rb +37 -0
- data/lib/avo/concerns/has_description.rb +23 -0
- data/lib/avo/concerns/has_helpers.rb +18 -0
- data/lib/avo/concerns/has_item_type.rb +42 -0
- data/lib/avo/concerns/has_items.rb +339 -0
- data/lib/avo/concerns/hydration.rb +17 -0
- data/lib/avo/concerns/is_resource_item.rb +16 -36
- data/lib/avo/concerns/is_visible.rb +15 -0
- data/lib/avo/concerns/model_class_constantized.rb +0 -2
- data/lib/avo/concerns/pagination.rb +53 -0
- data/lib/avo/concerns/visible_in_different_views.rb +132 -0
- data/lib/avo/concerns/visible_items.rb +7 -38
- data/lib/avo/configuration/branding.rb +0 -12
- data/lib/avo/configuration.rb +28 -11
- data/lib/avo/current.rb +39 -0
- data/lib/avo/dsl/field_parser.rb +3 -3
- data/lib/avo/dynamic_router.rb +18 -3
- data/lib/avo/engine.rb +35 -30
- data/lib/avo/error_manager.rb +25 -0
- data/lib/avo/execution_context.rb +14 -15
- data/lib/avo/fields/base_field.rb +84 -115
- data/lib/avo/fields/belongs_to_field.rb +19 -23
- data/lib/avo/fields/concerns/file_authorization.rb +2 -2
- data/lib/avo/fields/concerns/handles_field_args.rb +49 -0
- data/lib/avo/fields/concerns/has_default.rb +1 -5
- data/lib/avo/fields/concerns/has_field_name.rb +22 -0
- data/lib/avo/fields/concerns/has_html_attributes.rb +112 -0
- data/lib/avo/fields/concerns/is_disabled.rb +1 -5
- data/lib/avo/fields/concerns/is_readonly.rb +1 -5
- data/lib/avo/fields/concerns/is_required.rb +5 -7
- data/lib/avo/fields/concerns/is_searchable.rb +15 -0
- data/lib/avo/fields/concerns/use_resource.rb +5 -1
- data/lib/avo/fields/concerns/use_view_components.rb +45 -0
- data/lib/avo/fields/country_field.rb +4 -0
- data/lib/avo/fields/date_time_field.rb +1 -5
- data/lib/avo/fields/external_image_field.rb +2 -2
- data/lib/avo/fields/field_manager.rb +55 -0
- data/lib/avo/fields/file_field.rb +2 -2
- data/lib/avo/fields/gravatar_field.rb +2 -2
- data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
- data/lib/avo/fields/has_base_field.rb +21 -17
- data/lib/avo/fields/has_many_field.rb +5 -2
- data/lib/avo/fields/has_one_field.rb +8 -12
- data/lib/avo/fields/heading_field.rb +9 -14
- data/lib/avo/fields/hidden_field.rb +1 -1
- data/lib/avo/fields/id_field.rb +3 -3
- data/lib/avo/fields/location_field.rb +10 -10
- data/lib/avo/fields/password_field.rb +1 -1
- data/lib/avo/fields/preview_field.rb +14 -0
- data/lib/avo/fields/select_field.rb +12 -8
- data/lib/avo/fields/status_field.rb +7 -1
- data/lib/avo/fields/text_field.rb +2 -2
- data/lib/avo/filters/base_filter.rb +9 -4
- data/lib/avo/html/builder.rb +8 -8
- data/lib/avo/item_grapher.rb +78 -0
- data/lib/avo/licensing/h_q.rb +11 -73
- data/lib/avo/licensing/license.rb +5 -1
- data/lib/avo/licensing/license_manager.rb +1 -1
- data/lib/avo/licensing/pro_license.rb +1 -7
- data/lib/avo/loaders/fields_loader.rb +7 -1
- data/lib/avo/plugin.rb +36 -0
- data/lib/avo/plugin_manager.rb +56 -0
- data/lib/avo/prefixed_test_helpers.rb +20 -0
- data/lib/avo/reloader.rb +3 -0
- data/lib/avo/resources/controls/actions_list.rb +7 -12
- data/lib/avo/resources/controls/attach_button.rb +15 -0
- data/lib/avo/resources/controls/back_button.rb +1 -1
- data/lib/avo/resources/controls/base_control.rb +15 -49
- data/lib/avo/resources/controls/create_button.rb +15 -0
- data/lib/avo/resources/controls/delete_button.rb +5 -1
- data/lib/avo/resources/controls/detach_button.rb +4 -1
- data/lib/avo/resources/controls/edit_button.rb +4 -1
- data/lib/avo/resources/controls/order_controls.rb +8 -0
- data/lib/avo/resources/controls/save_button.rb +13 -0
- data/lib/avo/resources/controls/show_button.rb +15 -0
- data/lib/avo/resources/items/holder.rb +96 -0
- data/lib/avo/resources/items/item_group.rb +44 -0
- data/lib/avo/resources/items/main_panel.rb +12 -0
- data/lib/avo/resources/items/panel.rb +2 -0
- data/lib/avo/resources/items/row.rb +42 -0
- data/lib/avo/resources/items/sidebar.rb +46 -0
- data/lib/avo/resources/items/tab.rb +54 -0
- data/lib/avo/resources/items/tab_group.rb +62 -0
- data/lib/avo/resources/resource_manager.rb +179 -0
- data/lib/avo/services/authorization_service.rb +11 -110
- data/lib/avo/services/debug_service.rb +93 -0
- data/lib/avo/services/encryption_service.rb +8 -12
- data/lib/avo/services/telemetry_service.rb +85 -0
- data/lib/avo/test_helpers.rb +362 -0
- data/lib/avo/tools/tool_manager.rb +30 -0
- data/lib/avo/version.rb +1 -1
- data/lib/avo/view_inquirer.rb +36 -0
- data/lib/avo.rb +109 -24
- data/lib/generators/avo/action_generator.rb +8 -8
- data/lib/generators/avo/card_generator.rb +27 -0
- data/lib/generators/avo/concerns/parent_controller.rb +20 -0
- data/lib/generators/avo/controller_generator.rb +3 -0
- data/lib/generators/avo/eject_generator.rb +180 -15
- data/lib/generators/avo/field_generator.rb +49 -2
- data/lib/generators/avo/filter_generator.rb +8 -8
- data/lib/generators/avo/js/install_generator.rb +2 -2
- data/lib/generators/avo/resource_generator.rb +12 -9
- data/lib/generators/avo/scope_generator.rb +15 -0
- data/lib/generators/avo/tailwindcss/install_generator.rb +70 -26
- data/lib/generators/avo/templates/action.tt +8 -6
- data/lib/generators/avo/templates/cards/chartkick_card.tt +1 -1
- data/lib/generators/avo/templates/cards/chartkick_card_sample.tt +1 -1
- data/lib/generators/avo/templates/cards/metric_card.tt +1 -1
- data/lib/generators/avo/templates/cards/metric_card_sample.tt +1 -1
- data/lib/generators/avo/templates/cards/partial_card.tt +1 -1
- data/lib/generators/avo/templates/cards/partial_card_sample.tt +1 -1
- data/lib/generators/avo/templates/dashboards/dashboard.tt +5 -3
- data/lib/generators/avo/templates/field/%singular_name%_field.rb.tt +1 -1
- data/lib/generators/avo/templates/filters/boolean_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/multiple_select_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/select_filter.tt +1 -1
- data/lib/generators/avo/templates/filters/text_filter.tt +1 -1
- data/lib/generators/avo/templates/initializer/avo.tt +7 -3
- data/lib/generators/avo/templates/locales/avo.ar.yml +7 -6
- data/lib/generators/avo/templates/locales/avo.en.yml +6 -3
- data/lib/generators/avo/templates/locales/avo.es.yml +127 -0
- data/lib/generators/avo/templates/locales/avo.fr.yml +3 -0
- data/lib/generators/avo/templates/locales/avo.nb.yml +3 -0
- data/lib/generators/avo/templates/locales/avo.nn.yml +3 -0
- data/lib/generators/avo/templates/locales/avo.pt-BR.yml +3 -0
- data/lib/generators/avo/templates/locales/avo.pt.yml +3 -0
- data/lib/generators/avo/templates/locales/avo.ro.yml +8 -5
- data/lib/generators/avo/templates/locales/avo.tr.yml +3 -0
- data/lib/generators/avo/templates/resource/controller.tt +1 -1
- data/lib/generators/avo/templates/resource/resource.tt +7 -7
- data/lib/generators/avo/templates/resource_tools/partial.tt +2 -2
- data/lib/generators/avo/templates/resource_tools/resource_tool.tt +1 -1
- data/lib/generators/avo/templates/scope.tt +6 -0
- data/lib/generators/avo/templates/tailwindcss/Procfile.dev +1 -1
- data/lib/generators/avo/templates/tailwindcss/avo.tailwind.css +5 -3
- data/lib/generators/avo/templates/tailwindcss/tailwind.config.js +11 -0
- data/lib/tasks/avo_tasks.rake +72 -4
- data/public/avo-assets/avo.base.css +1893 -1187
- data/public/avo-assets/avo.base.js +223 -311
- data/public/avo-assets/avo.base.js.map +3 -3
- data/public/avo-assets/avo.css +9744 -0
- data/public/avo-assets/avo.js +513 -0
- data/public/avo-assets/avo.js.map +7 -0
- data/tailwind.custom.js +47 -0
- data/tailwind.preset.js +152 -0
- metadata +121 -116
- data/app/components/avo/card_component.html.erb +0 -46
- data/app/components/avo/card_component.rb +0 -25
- data/app/components/avo/dashboards/divider_component.html.erb +0 -9
- data/app/components/avo/dashboards/divider_component.rb +0 -19
- data/app/components/avo/fields/belongs_to_field/autocomplete_component.html.erb +0 -47
- data/app/components/avo/fields/belongs_to_field/autocomplete_component.rb +0 -95
- data/app/components/avo/fields/tags_field/edit_component.html.erb +0 -35
- data/app/components/avo/fields/tags_field/edit_component.rb +0 -4
- data/app/components/avo/fields/tags_field/index_component.html.erb +0 -10
- data/app/components/avo/fields/tags_field/index_component.rb +0 -9
- data/app/components/avo/fields/tags_field/show_component.html.erb +0 -7
- data/app/components/avo/fields/tags_field/show_component.rb +0 -5
- data/app/components/avo/fields/tags_field/tag_component.html.erb +0 -9
- data/app/components/avo/fields/tags_field/tag_component.rb +0 -11
- data/app/components/avo/index/ordering/base_component.rb +0 -9
- data/app/components/avo/index/ordering/button_component.html.erb +0 -11
- data/app/components/avo/index/ordering/button_component.rb +0 -23
- data/app/components/avo/index/ordering/buttons_component.html.erb +0 -32
- data/app/components/avo/index/ordering/buttons_component.rb +0 -47
- data/app/components/avo/item_switcher_component.html.erb +0 -27
- data/app/components/avo/item_switcher_component.rb +0 -48
- data/app/components/avo/sidebar/item_switcher_component.html.erb +0 -16
- data/app/components/avo/sidebar/item_switcher_component.rb +0 -15
- data/app/controllers/avo/dashboards/cards_controller.rb +0 -37
- data/app/controllers/avo/dashboards_controller.rb +0 -22
- data/app/controllers/avo/reorder_controller.rb +0 -25
- data/app/controllers/avo/team_users_controller.rb +0 -4
- data/app/javascript/js/controllers/base_controller.js +0 -22
- data/app/javascript/js/controllers/fields/tags_field_controller.js +0 -127
- data/app/javascript/js/controllers/toggle_panel_controller.js +0 -18
- data/app/views/avo/dashboards/cards/_chartkick_card.html.erb +0 -3
- data/app/views/avo/dashboards/cards/_metric_card.html.erb +0 -5
- data/app/views/avo/dashboards/cards/chartkick_missing.html.erb +0 -14
- data/app/views/avo/dashboards/cards/show.html.erb +0 -3
- data/app/views/avo/dashboards/show.html.erb +0 -38
- data/app/views/avo/partials/_global_search.html.erb +0 -19
- data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
- data/lib/avo/action_model.rb +0 -20
- data/lib/avo/app.rb +0 -237
- data/lib/avo/base_card.rb +0 -161
- data/lib/avo/concerns/fetches_things.rb +0 -150
- data/lib/avo/concerns/handles_field_args.rb +0 -47
- data/lib/avo/concerns/has_editable_controls.rb +0 -34
- data/lib/avo/concerns/has_fields.rb +0 -334
- data/lib/avo/concerns/has_html_attributes.rb +0 -108
- data/lib/avo/concerns/policy_helpers.rb +0 -31
- data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
- data/lib/avo/dashboards/base_dashboard.rb +0 -89
- data/lib/avo/dashboards/base_divider.rb +0 -35
- data/lib/avo/dashboards/chartkick_card.rb +0 -77
- data/lib/avo/dashboards/dashboard_card.rb +0 -6
- data/lib/avo/dashboards/metric_card.rb +0 -9
- data/lib/avo/dashboards/partial_card.rb +0 -7
- data/lib/avo/fields/field_extensions/has_field_name.rb +0 -19
- data/lib/avo/fields/field_extensions/visible_in_different_views.rb +0 -111
- data/lib/avo/fields/tags_field.rb +0 -102
- data/lib/avo/grid_collector.rb +0 -42
- data/lib/avo/hosts/association_scope_host.rb +0 -8
- data/lib/avo/hosts/base_host.rb +0 -25
- data/lib/avo/hosts/card_visibility.rb +0 -20
- data/lib/avo/hosts/dashboard_card.rb +0 -22
- data/lib/avo/hosts/dashboard_visibility.rb +0 -19
- data/lib/avo/hosts/ordering.rb +0 -22
- data/lib/avo/hosts/record_host.rb +0 -7
- data/lib/avo/hosts/resource_record_host.rb +0 -7
- data/lib/avo/hosts/resource_view_record_host.rb +0 -7
- data/lib/avo/hosts/search_scope_host.rb +0 -7
- data/lib/avo/hosts/view_record_host.rb +0 -7
- data/lib/avo/hosts/visibility_host.rb +0 -12
- data/lib/avo/items_holder.rb +0 -96
- data/lib/avo/main_panel.rb +0 -3
- data/lib/avo/menu/base_item.rb +0 -25
- data/lib/avo/menu/builder.rb +0 -82
- data/lib/avo/menu/dashboard.rb +0 -22
- data/lib/avo/menu/group.rb +0 -2
- data/lib/avo/menu/link.rb +0 -6
- data/lib/avo/menu/menu.rb +0 -2
- data/lib/avo/menu/resource.rb +0 -22
- data/lib/avo/menu/section.rb +0 -2
- data/lib/avo/panel.rb +0 -24
- data/lib/avo/panel_builder.rb +0 -25
- data/lib/avo/resources/controls/action.rb +0 -38
- data/lib/avo/resources/controls/execution_context.rb +0 -58
- data/lib/avo/resources/controls/items_holder.rb +0 -19
- data/lib/avo/resources/controls/link_to.rb +0 -27
- data/lib/avo/row.rb +0 -26
- data/lib/avo/row_builder.rb +0 -24
- data/lib/avo/services/authorization_clients/nil_client.rb +0 -37
- data/lib/avo/services/authorization_clients/pundit_client.rb +0 -51
- data/lib/avo/sidebar.rb +0 -30
- data/lib/avo/sidebar_builder.rb +0 -24
- data/lib/avo/tab.rb +0 -72
- data/lib/avo/tab_builder.rb +0 -25
- data/lib/avo/tab_group.rb +0 -42
- data/lib/avo/tab_group_builder.rb +0 -43
- data/lib/avo/tools_manager.rb +0 -11
- data/lib/generators/avo/card/chartkick_generator.rb +0 -18
- data/lib/generators/avo/card/metric_generator.rb +0 -18
- data/lib/generators/avo/card/partial_generator.rb +0 -19
- data/lib/generators/avo/templates/js/avo.custom.js +0 -2
- data/lib/generators/avo/templates/standalone_action.tt +0 -8
- /data/app/assets/stylesheets/css/{tags.css → fields/tags.css} +0 -0
@@ -6,14 +6,14 @@ module Avo
|
|
6
6
|
|
7
7
|
before_action :set_resource_name
|
8
8
|
before_action :set_resource
|
9
|
-
before_action :hydrate_resource
|
10
9
|
before_action :set_applied_filters, only: :index
|
11
|
-
before_action :
|
12
|
-
before_action :
|
10
|
+
before_action :set_record, only: [:show, :edit, :destroy, :update, :preview]
|
11
|
+
before_action :detect_fields
|
12
|
+
before_action :set_record_to_fill
|
13
13
|
before_action :set_edit_title_and_breadcrumbs, only: [:edit, :update]
|
14
|
-
before_action :
|
14
|
+
before_action :fill_record, only: [:create, :update]
|
15
15
|
# Don't run base authorizations for associations
|
16
|
-
before_action :authorize_base_action, if: -> { controller_name != "associations" }
|
16
|
+
before_action :authorize_base_action, except: :preview, if: -> { controller_name != "associations" }
|
17
17
|
before_action :set_pagy_locale, only: :index
|
18
18
|
|
19
19
|
def index
|
@@ -29,19 +29,11 @@ module Avo
|
|
29
29
|
@query = @resource.class.query_scope
|
30
30
|
end
|
31
31
|
|
32
|
-
# Remove default_scope for index view if no parent_resource present
|
33
|
-
if @resource.unscoped_queries_on_index && @parent_resource.blank?
|
34
|
-
@query = @query.unscoped
|
35
|
-
end
|
36
|
-
|
37
32
|
# Eager load the associations
|
38
33
|
if @resource.includes.present?
|
39
34
|
@query = @query.includes(*@resource.includes)
|
40
35
|
end
|
41
36
|
|
42
|
-
# Eager load the active storage attachments
|
43
|
-
@query = eager_load_files(@resource, @query)
|
44
|
-
|
45
37
|
# Sort the items
|
46
38
|
if @index_params[:sort_by].present?
|
47
39
|
unless @index_params[:sort_by].eql? :created_at
|
@@ -52,7 +44,7 @@ module Avo
|
|
52
44
|
field_id = @index_params[:sort_by].to_sym
|
53
45
|
field = @resource.get_field_definitions.find { |field| field.id == field_id }
|
54
46
|
@query = if field&.sortable.is_a?(Proc)
|
55
|
-
field.sortable
|
47
|
+
Avo::ExecutionContext.new(target: field.sortable, query: @query, direction: @index_params[:sort_direction]).handle
|
56
48
|
else
|
57
49
|
@query.order("#{@resource.model_class.table_name}.#{@index_params[:sort_by]} #{@index_params[:sort_direction]}")
|
58
50
|
end
|
@@ -65,47 +57,46 @@ module Avo
|
|
65
57
|
).apply_query request, @query, filter_value
|
66
58
|
end
|
67
59
|
|
68
|
-
|
60
|
+
safe_call :set_and_apply_scopes
|
61
|
+
safe_call :apply_dynamic_filters
|
62
|
+
apply_pagination
|
69
63
|
|
70
|
-
#
|
71
|
-
|
72
|
-
|
64
|
+
# Create resources for each record
|
65
|
+
@resources = @records.map do |record|
|
66
|
+
@resource.hydrate(record: record, params: params).dup
|
73
67
|
end
|
74
68
|
|
75
|
-
|
76
|
-
|
77
|
-
# Create resources for each model
|
78
|
-
@resources = @models.map do |model|
|
79
|
-
@resource.hydrate(model: model, params: params).dup
|
80
|
-
end
|
69
|
+
set_component_for __method__
|
81
70
|
end
|
82
71
|
|
83
72
|
def show
|
84
|
-
@resource.hydrate(
|
73
|
+
@resource.hydrate(record: @record, view: :show, user: _current_user, params: params).detect_fields
|
85
74
|
|
86
75
|
set_actions
|
87
76
|
|
88
77
|
@page_title = @resource.default_panel_name.to_s
|
89
78
|
|
90
79
|
# If we're accessing this resource via another resource add the parent to the breadcrumbs.
|
91
|
-
if params[:via_resource_class].present? && params[:
|
92
|
-
via_resource = Avo
|
93
|
-
|
94
|
-
via_resource.
|
80
|
+
if params[:via_resource_class].present? && params[:via_record_id].present?
|
81
|
+
via_resource = Avo.resource_manager.get_resource(params[:via_resource_class])
|
82
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
83
|
+
via_resource = via_resource.new record: via_record
|
95
84
|
|
96
85
|
add_breadcrumb via_resource.plural_name, resources_path(resource: via_resource)
|
97
|
-
add_breadcrumb via_resource.
|
86
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
98
87
|
else
|
99
88
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
100
89
|
end
|
101
90
|
|
102
|
-
add_breadcrumb @resource.
|
91
|
+
add_breadcrumb @resource.record_title
|
103
92
|
add_breadcrumb I18n.t("avo.details").upcase_first
|
93
|
+
|
94
|
+
set_component_for __method__
|
104
95
|
end
|
105
96
|
|
106
97
|
def new
|
107
|
-
@
|
108
|
-
@resource = @resource.hydrate(
|
98
|
+
@record = @resource.model_class.new
|
99
|
+
@resource = @resource.hydrate(record: @record, view: :new, user: _current_user)
|
109
100
|
|
110
101
|
# Handle special cases when creating a new record via a belongs_to relationship
|
111
102
|
if params[:via_belongs_to_resource_class].present?
|
@@ -117,50 +108,52 @@ module Avo
|
|
117
108
|
@page_title = @resource.default_panel_name.to_s
|
118
109
|
|
119
110
|
if is_associated_record?
|
120
|
-
via_resource = Avo
|
121
|
-
|
122
|
-
via_resource.
|
111
|
+
via_resource = Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
112
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
113
|
+
via_resource = via_resource.new record: via_record
|
123
114
|
|
124
115
|
add_breadcrumb via_resource.plural_name, resources_path(resource: via_resource)
|
125
|
-
add_breadcrumb via_resource.
|
116
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
126
117
|
end
|
127
118
|
|
128
119
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
129
120
|
add_breadcrumb t("avo.new").humanize
|
121
|
+
|
122
|
+
set_component_for __method__, fallback_view: :edit
|
130
123
|
end
|
131
124
|
|
132
125
|
def create
|
133
|
-
#
|
134
|
-
saved =
|
135
|
-
@resource.hydrate(
|
126
|
+
# record gets instantiated and filled in the fill_record method
|
127
|
+
saved = save_record
|
128
|
+
@resource.hydrate(record: @record, view: :new, user: _current_user)
|
136
129
|
|
137
130
|
# This means that the record has been created through another parent record and we need to attach it somehow.
|
138
|
-
if params[:
|
139
|
-
@reflection = @
|
131
|
+
if params[:via_record_id].present? && params[:via_belongs_to_resource_class].nil?
|
132
|
+
@reflection = @record._reflections[params[:via_relation]]
|
140
133
|
# Figure out what kind of association does the record have with the parent record
|
141
134
|
|
142
135
|
# Fills in the required infor for belongs_to and has_many
|
143
136
|
# Get the foreign key and set it to the id we received in the params
|
144
137
|
if @reflection.is_a?(ActiveRecord::Reflection::BelongsToReflection) || @reflection.is_a?(ActiveRecord::Reflection::HasManyReflection)
|
145
|
-
related_resource = Avo
|
146
|
-
related_record = related_resource.find_record params[:
|
138
|
+
related_resource = Avo.resource_manager.get_resource_by_model_class params[:via_relation_class]
|
139
|
+
related_record = related_resource.find_record params[:via_record_id], params: params
|
147
140
|
|
148
|
-
@
|
149
|
-
@
|
141
|
+
@record.send("#{@reflection.foreign_key}=", related_record.id)
|
142
|
+
@record.save
|
150
143
|
end
|
151
144
|
|
152
145
|
# For when working with has_one, has_one_through, has_many_through, has_and_belongs_to_many, polymorphic
|
153
146
|
if @reflection.is_a? ActiveRecord::Reflection::ThroughReflection
|
154
147
|
# find the record
|
155
|
-
via_resource =
|
156
|
-
@related_record = via_resource.find_record params[:
|
157
|
-
association_name = BaseResource.valid_association_name(@
|
148
|
+
via_resource = Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
149
|
+
@related_record = via_resource.find_record params[:via_record_id], params: params
|
150
|
+
association_name = BaseResource.valid_association_name(@record, params[:via_relation])
|
158
151
|
|
159
152
|
if params[:via_association_type] == "has_one"
|
160
153
|
# On has_one scenarios we should switch the @record and @related_record
|
161
|
-
@related_record.send("#{@reflection.parent_reflection.inverse_of.name}=", @
|
154
|
+
@related_record.send("#{@reflection.parent_reflection.inverse_of.name}=", @record)
|
162
155
|
else
|
163
|
-
@
|
156
|
+
@record.send(association_name) << @related_record
|
164
157
|
end
|
165
158
|
end
|
166
159
|
end
|
@@ -169,6 +162,8 @@ module Avo
|
|
169
162
|
add_breadcrumb t("avo.new").humanize
|
170
163
|
set_actions
|
171
164
|
|
165
|
+
set_component_for :edit
|
166
|
+
|
172
167
|
if saved
|
173
168
|
create_success_action
|
174
169
|
else
|
@@ -178,14 +173,18 @@ module Avo
|
|
178
173
|
|
179
174
|
def edit
|
180
175
|
set_actions
|
176
|
+
|
177
|
+
set_component_for __method__
|
181
178
|
end
|
182
179
|
|
183
180
|
def update
|
184
|
-
#
|
185
|
-
saved =
|
186
|
-
@resource = @resource.hydrate(
|
181
|
+
# record gets instantiated and filled in the fill_record method
|
182
|
+
saved = save_record
|
183
|
+
@resource = @resource.hydrate(record: @record, view: :edit, user: _current_user)
|
187
184
|
set_actions
|
188
185
|
|
186
|
+
set_component_for :edit
|
187
|
+
|
189
188
|
if saved
|
190
189
|
update_success_action
|
191
190
|
else
|
@@ -201,55 +200,46 @@ module Avo
|
|
201
200
|
end
|
202
201
|
end
|
203
202
|
|
204
|
-
def
|
205
|
-
|
206
|
-
|
207
|
-
if direction.present?
|
208
|
-
@resource
|
209
|
-
.hydrate(model: @model, params: params)
|
210
|
-
.ordering_host
|
211
|
-
.order direction
|
212
|
-
end
|
203
|
+
def preview
|
204
|
+
@resource.hydrate(record: @record, view: :show, user: _current_user, params: params)
|
213
205
|
|
214
|
-
|
215
|
-
format.html { redirect_to params[:referrer] || resources_path(resource: @resource) }
|
216
|
-
end
|
206
|
+
render layout: params[:turbo_frame].blank?
|
217
207
|
end
|
218
208
|
|
219
209
|
private
|
220
210
|
|
221
|
-
def
|
211
|
+
def save_record
|
222
212
|
perform_action_and_record_errors do
|
223
|
-
|
213
|
+
save_record_action
|
224
214
|
end
|
225
215
|
end
|
226
216
|
|
227
|
-
def
|
228
|
-
@
|
217
|
+
def save_record_action
|
218
|
+
@record.save!
|
229
219
|
end
|
230
220
|
|
231
221
|
def destroy_model
|
232
222
|
perform_action_and_record_errors do
|
233
|
-
|
223
|
+
destroy_record_action
|
234
224
|
end
|
235
225
|
end
|
236
226
|
|
237
|
-
def
|
238
|
-
@
|
227
|
+
def destroy_record_action
|
228
|
+
@record.destroy!
|
239
229
|
end
|
240
230
|
|
241
231
|
def perform_action_and_record_errors(&block)
|
242
232
|
begin
|
243
233
|
succeeded = block.call
|
244
234
|
rescue => exception
|
245
|
-
# In case there's an error somewhere else than the
|
235
|
+
# In case there's an error somewhere else than the record
|
246
236
|
# Example: When you save a license that should create a user for it and creating that user throws and error.
|
247
237
|
# Example: When you Try to delete a record and has a foreign key constraint.
|
248
238
|
exception_message = exception.message
|
249
239
|
end
|
250
240
|
|
251
|
-
# Add the errors from the
|
252
|
-
@errors = @
|
241
|
+
# Add the errors from the record
|
242
|
+
@errors = @record.errors.full_messages.reject { |error| exception_message.include? error }.unshift exception_message
|
253
243
|
|
254
244
|
succeeded
|
255
245
|
end
|
@@ -307,7 +297,7 @@ module Avo
|
|
307
297
|
@index_params[:per_page] = cookies[:per_page]
|
308
298
|
end
|
309
299
|
|
310
|
-
if @
|
300
|
+
if @parent_record.present?
|
311
301
|
@index_params[:per_page] = Avo.configuration.via_per_page
|
312
302
|
end
|
313
303
|
|
@@ -326,8 +316,20 @@ module Avo
|
|
326
316
|
@index_params[:sort_direction] = params[:sort_direction] || :desc
|
327
317
|
|
328
318
|
# View types
|
329
|
-
|
330
|
-
@index_params[:available_view_types] =
|
319
|
+
available_view_types = @resource.available_view_types
|
320
|
+
@index_params[:available_view_types] = available_view_types
|
321
|
+
|
322
|
+
@index_params[:view_type] = if params[:view_type].present?
|
323
|
+
params[:view_type]
|
324
|
+
elsif available_view_types.size == 1
|
325
|
+
available_view_types.first
|
326
|
+
else
|
327
|
+
@resource.default_view_type || Avo.configuration.default_view_type
|
328
|
+
end
|
329
|
+
|
330
|
+
if available_view_types.exclude? @index_params[:view_type].to_sym
|
331
|
+
raise "View type '#{@index_params[:view_type]}' is unavailable for #{@resource.class}."
|
332
|
+
end
|
331
333
|
end
|
332
334
|
|
333
335
|
def set_filters
|
@@ -345,7 +347,7 @@ module Avo
|
|
345
347
|
@actions = @resource
|
346
348
|
.get_actions
|
347
349
|
.map do |action|
|
348
|
-
action[:class].new(
|
350
|
+
action[:class].new(record: @record, resource: @resource, view: @view, arguments: action[:arguments])
|
349
351
|
end
|
350
352
|
.select do |action|
|
351
353
|
action.visible_in_view(parent_resource: @parent_resource)
|
@@ -399,28 +401,28 @@ module Avo
|
|
399
401
|
end
|
400
402
|
|
401
403
|
def set_edit_title_and_breadcrumbs
|
402
|
-
@resource = @resource.hydrate(
|
404
|
+
@resource = @resource.hydrate(record: @record, view: :edit, user: _current_user)
|
403
405
|
@page_title = @resource.default_panel_name.to_s
|
404
406
|
|
405
407
|
last_crumb_args = {}
|
406
408
|
# If we're accessing this resource via another resource add the parent to the breadcrumbs.
|
407
|
-
if params[:via_resource_class].present? && params[:
|
408
|
-
via_resource = Avo
|
409
|
-
|
410
|
-
via_resource.
|
409
|
+
if params[:via_resource_class].present? && params[:via_record_id].present?
|
410
|
+
via_resource = Avo.resource_manager.get_resource(params[:via_resource_class])
|
411
|
+
via_record = via_resource.find_record params[:via_record_id], params: params
|
412
|
+
via_resource = via_resource.new record: via_record
|
411
413
|
|
412
414
|
add_breadcrumb via_resource.plural_name, resources_path(resource: @resource)
|
413
|
-
add_breadcrumb via_resource.
|
415
|
+
add_breadcrumb via_resource.record_title, resource_path(record: via_record, resource: via_resource)
|
414
416
|
|
415
417
|
last_crumb_args = {
|
416
418
|
via_resource_class: params[:via_resource_class],
|
417
|
-
|
419
|
+
via_record_id: params[:via_record_id]
|
418
420
|
}
|
419
421
|
else
|
420
422
|
add_breadcrumb @resource.plural_name.humanize, resources_path(resource: @resource)
|
421
423
|
end
|
422
424
|
|
423
|
-
add_breadcrumb @resource.
|
425
|
+
add_breadcrumb @resource.record_title, resource_path(record: @resource.record, resource: @resource, **last_crumb_args)
|
424
426
|
add_breadcrumb t("avo.edit").humanize
|
425
427
|
end
|
426
428
|
|
@@ -452,13 +454,18 @@ module Avo
|
|
452
454
|
def after_create_path
|
453
455
|
# If this is an associated record return to the association show page
|
454
456
|
if is_associated_record?
|
455
|
-
parent_resource =
|
456
|
-
|
457
|
+
parent_resource = if params[:via_resource_class].present?
|
458
|
+
Avo.resource_manager.get_resource(params[:via_resource_class])
|
459
|
+
else
|
460
|
+
Avo.resource_manager.get_resource_by_model_class(params[:via_relation_class])
|
461
|
+
end
|
462
|
+
|
463
|
+
association_name = BaseResource.valid_association_name(@record, params[:via_relation])
|
457
464
|
|
458
465
|
return resource_view_path(
|
459
|
-
|
466
|
+
record: @record.send(association_name),
|
460
467
|
resource: parent_resource,
|
461
|
-
resource_id: params[:
|
468
|
+
resource_id: params[:via_record_id]
|
462
469
|
)
|
463
470
|
end
|
464
471
|
|
@@ -494,7 +501,7 @@ module Avo
|
|
494
501
|
|
495
502
|
# Needs a different name, otwherwise, in some places, this can be called instead helpers.resource_view_path
|
496
503
|
def resource_view_response_path
|
497
|
-
helpers.resource_view_path(
|
504
|
+
helpers.resource_view_path(record: @record, resource: @resource)
|
498
505
|
end
|
499
506
|
|
500
507
|
def destroy_success_action
|
@@ -504,8 +511,10 @@ module Avo
|
|
504
511
|
end
|
505
512
|
|
506
513
|
def destroy_fail_action
|
514
|
+
flash[:error] = destroy_fail_message
|
515
|
+
|
507
516
|
respond_to do |format|
|
508
|
-
format.
|
517
|
+
format.turbo_stream { render partial: "avo/partials/flash_alerts" }
|
509
518
|
end
|
510
519
|
end
|
511
520
|
|
@@ -526,20 +535,58 @@ module Avo
|
|
526
535
|
|
527
536
|
if @resource.class.send(action) == :index
|
528
537
|
resources_path(resource: @resource)
|
529
|
-
elsif @resource.class.send(action) == :edit || Avo.configuration.resource_default_view
|
530
|
-
edit_resource_path(resource: @resource,
|
538
|
+
elsif @resource.class.send(action) == :edit || Avo.configuration.resource_default_view.edit?
|
539
|
+
edit_resource_path(resource: @resource, record: @resource.record)
|
531
540
|
else
|
532
|
-
resource_path(
|
541
|
+
resource_path(record: @record, resource: @resource)
|
533
542
|
end
|
534
543
|
end
|
535
544
|
|
536
545
|
def is_associated_record?
|
537
|
-
params[:via_relation_class].present? && params[:
|
546
|
+
params[:via_relation_class].present? && params[:via_record_id].present?
|
538
547
|
end
|
539
548
|
|
540
549
|
# Set pagy locale from params or from avo configuration, if both nil locale = "en"
|
541
550
|
def set_pagy_locale
|
542
551
|
@pagy_locale = locale.to_s || Avo.configuration.locale || "en"
|
543
552
|
end
|
553
|
+
|
554
|
+
def safe_call(method)
|
555
|
+
send(method) if respond_to?(method, true)
|
556
|
+
end
|
557
|
+
|
558
|
+
def pagy_query
|
559
|
+
@query
|
560
|
+
end
|
561
|
+
|
562
|
+
# Set the view component for the current view
|
563
|
+
# It will try to use the custom component if it's set, otherwise it will use the default one
|
564
|
+
def set_component_for(view, fallback_view: nil)
|
565
|
+
# Fetch the components from the resource
|
566
|
+
components = Avo::ExecutionContext.new(
|
567
|
+
target: @resource.components,
|
568
|
+
resource: @resource,
|
569
|
+
record: @record,
|
570
|
+
view: @view
|
571
|
+
).handle
|
572
|
+
|
573
|
+
# If the component is not set, use the default one
|
574
|
+
if (custom_component = components.dig("resource_#{view}_component".to_sym)).nil?
|
575
|
+
return @component = "Avo::Views::Resource#{(fallback_view || view).to_s.classify}Component".constantize
|
576
|
+
end
|
577
|
+
|
578
|
+
# If the component is set, try to use it
|
579
|
+
@component = custom_component.to_s.safe_constantize
|
580
|
+
|
581
|
+
# If the component is not found, raise an error
|
582
|
+
if @component.nil?
|
583
|
+
raise "The component '#{custom_component}' was not found.\n" \
|
584
|
+
"That component was fetched from 'self.components' option inside '#{@resource.class}' resource."
|
585
|
+
end
|
586
|
+
end
|
587
|
+
|
588
|
+
def apply_pagination
|
589
|
+
@pagy, @records = @resource.apply_pagination(index_params: @index_params, query: pagy_query)
|
590
|
+
end
|
544
591
|
end
|
545
592
|
end
|
@@ -2,7 +2,19 @@ require_dependency "avo/application_controller"
|
|
2
2
|
|
3
3
|
module Avo
|
4
4
|
class DebugController < ApplicationController
|
5
|
-
def
|
5
|
+
def status
|
6
|
+
end
|
7
|
+
|
8
|
+
def send_to_hq
|
9
|
+
url = "#{ENV["HQ_URL"]}/api/v3/debug_requests"
|
10
|
+
timeout = 10 # seconds
|
11
|
+
license_key = Avo::Services::DebugService.debug_report(request)[:hq_payload][:license_key]
|
12
|
+
body = params[:body]
|
13
|
+
body = {license_key: license_key, body: body, payload: Avo::Services::DebugService.debug_report(request).to_json}.to_json
|
14
|
+
|
15
|
+
HTTParty.post url, body: body, headers: {"Content-Type": "application/json"}, timeout: timeout
|
16
|
+
|
17
|
+
render turbo_stream: turbo_stream.replace(:send_to_hq, plain: "Payload sent to Avo HQ.")
|
6
18
|
end
|
7
19
|
|
8
20
|
def report
|
@@ -13,13 +25,13 @@ module Avo
|
|
13
25
|
|
14
26
|
if license.valid?
|
15
27
|
flash[:notice] = "avohq.io responded: \"#{license.id.humanize} license is valid\"."
|
16
|
-
elsif license.response[
|
17
|
-
flash[:error] = "avohq.io responded: \"#{license.response[
|
28
|
+
elsif license.response["reason"].present?
|
29
|
+
flash[:error] = "avohq.io responded: \"#{license.response["reason"]}\"."
|
18
30
|
else
|
19
|
-
flash[:error] = license.response[
|
31
|
+
flash[:error] = license.response["error"]
|
20
32
|
end
|
21
33
|
|
22
|
-
redirect_back fallback_location: avo.
|
34
|
+
redirect_back fallback_location: avo.avo_private_status_path
|
23
35
|
end
|
24
36
|
end
|
25
37
|
end
|
@@ -14,7 +14,7 @@ module Avo
|
|
14
14
|
redirect_to computed_path
|
15
15
|
elsif !Rails.env.development?
|
16
16
|
@page_title = "Get started"
|
17
|
-
resource = Avo
|
17
|
+
resource = Avo.resource_manager.all.min_by { |resource| resource.model_key }
|
18
18
|
redirect_to resources_path(resource: resource)
|
19
19
|
end
|
20
20
|
end
|