avo 2.46.0 → 3.0.0.pre2
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 +23 -22
- data/Gemfile.lock +181 -160
- data/README.md +1 -1
- data/{public/avo-assets → app/assets/builds}/avo.base.css +479 -698
- data/app/assets/builds/avo.base.js +93804 -0
- data/app/assets/builds/avo.base.js.map +7 -0
- data/app/assets/stylesheets/avo.base.css +2 -2
- data/app/assets/svgs/failed_to_load.svg +1 -0
- data/app/assets/svgs/font.svg +1 -0
- data/app/assets/svgs/grid-empty-state.svg +1 -0
- data/app/assets/svgs/table-empty-state.svg +1 -0
- data/app/assets/svgs/triangle-up.svg +1 -0
- data/app/components/avo/actions_component.html.erb +18 -4
- data/app/components/avo/actions_component.rb +12 -18
- data/app/components/avo/alert_component.html.erb +1 -1
- 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 +14 -11
- 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 +4 -4
- data/app/components/avo/field_wrapper_component.rb +12 -23
- data/app/components/avo/fields/belongs_to_field/edit_component.html.erb +96 -118
- data/app/components/avo/fields/belongs_to_field/edit_component.rb +5 -20
- 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 -2
- data/app/components/avo/fields/boolean_group_field/edit_component.html.erb +3 -3
- data/app/components/avo/fields/code_field/edit_component.html.erb +0 -1
- data/app/components/avo/fields/common/badge_viewer_component.html.erb +24 -1
- data/app/components/avo/fields/common/badge_viewer_component.rb +0 -24
- data/app/components/avo/fields/common/boolean_group_component.html.erb +2 -2
- data/app/components/avo/fields/common/files_list_viewer_component.html.erb +5 -0
- data/app/components/avo/fields/common/files_list_viewer_component.rb +8 -0
- data/app/components/avo/fields/common/heading_component.html.erb +1 -1
- data/app/components/avo/fields/common/single_file_viewer_component.html.erb +56 -0
- data/app/components/avo/fields/common/single_file_viewer_component.rb +55 -0
- data/app/components/avo/fields/country_field/edit_component.html.erb +1 -3
- data/app/components/avo/fields/edit_component.rb +1 -1
- data/app/components/avo/fields/file_field/edit_component.html.erb +2 -4
- data/app/components/avo/fields/file_field/edit_component.rb +0 -1
- data/app/components/avo/fields/file_field/index_component.rb +2 -2
- data/app/components/avo/fields/file_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/files_field/edit_component.html.erb +2 -4
- data/app/components/avo/fields/files_field/edit_component.rb +0 -1
- data/app/components/avo/fields/files_field/show_component.html.erb +1 -1
- data/app/components/avo/fields/has_many_field/show_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 +2 -2
- data/app/components/avo/fields/has_one_field/show_component.rb +3 -7
- data/app/components/avo/fields/index_component.rb +5 -6
- data/app/components/avo/fields/markdown_field/edit_component.html.erb +3 -4
- data/app/components/avo/fields/markdown_field/show_component.html.erb +3 -3
- data/app/components/avo/fields/number_field/edit_component.html.erb +1 -3
- data/app/components/avo/fields/password_field/edit_component.html.erb +1 -3
- 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/progress_bar_field/edit_component.html.erb +0 -1
- data/app/components/avo/fields/select_field/edit_component.html.erb +2 -3
- data/app/components/avo/fields/show_component.rb +4 -1
- data/app/components/avo/fields/status_field/edit_component.html.erb +1 -1
- data/app/components/avo/fields/text_field/edit_component.html.erb +2 -3
- data/app/components/avo/fields/textarea_field/edit_component.html.erb +0 -1
- data/app/components/avo/fields/trix_field/edit_component.html.erb +1 -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.html.erb +1 -1
- data/app/components/avo/index/grid_item_component.html.erb +5 -2
- data/app/components/avo/index/grid_item_component.rb +7 -6
- data/app/components/avo/index/resource_controls_component.html.erb +3 -81
- data/app/components/avo/index/resource_controls_component.rb +128 -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_table_component.html.erb +5 -4
- data/app/components/avo/index/resource_table_component.rb +14 -20
- data/app/components/avo/index/table_row_component.html.erb +8 -4
- data/app/components/avo/index/table_row_component.rb +3 -2
- data/app/components/avo/item_switcher_component.html.erb +5 -10
- data/app/components/avo/item_switcher_component.rb +2 -3
- data/app/components/avo/modal_component.html.erb +7 -12
- data/app/components/avo/modal_component.rb +0 -21
- data/app/components/avo/paginator_component.html.erb +40 -29
- data/app/components/avo/paginator_component.rb +5 -23
- data/app/components/avo/panel_component.html.erb +8 -11
- data/app/components/avo/panel_component.rb +0 -1
- data/app/components/avo/profile_item_component.html.erb +2 -17
- data/app/components/avo/profile_item_component.rb +1 -13
- data/app/components/avo/referrer_params_component.html.erb +1 -4
- data/app/components/avo/resource_component.rb +142 -30
- data/app/components/avo/resource_sidebar_component.html.erb +6 -2
- data/app/components/avo/sidebar/link_component.html.erb +0 -2
- data/app/components/avo/sidebar/link_component.rb +3 -5
- data/app/components/avo/sidebar_component.html.erb +9 -2
- data/app/components/avo/sidebar_component.rb +5 -3
- data/app/components/avo/sidebar_profile_component.html.erb +27 -20
- data/app/components/avo/tab_group_component.html.erb +13 -7
- 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 +4 -39
- data/app/components/avo/views/resource_edit_component.html.erb +16 -52
- data/app/components/avo/views/resource_edit_component.rb +7 -18
- data/app/components/avo/views/resource_index_component.html.erb +38 -53
- data/app/components/avo/views/resource_index_component.rb +60 -16
- data/app/components/avo/views/resource_show_component.html.erb +8 -151
- data/app/components/avo/views/resource_show_component.rb +6 -11
- data/app/controllers/avo/actions_controller.rb +19 -16
- data/app/controllers/avo/application_controller.rb +40 -109
- data/app/controllers/avo/associations_controller.rb +34 -41
- data/app/controllers/avo/attachments_controller.rb +10 -25
- data/app/controllers/avo/base_controller.rb +91 -103
- data/app/controllers/avo/debug_controller.rb +17 -5
- data/app/controllers/avo/search_controller.rb +29 -54
- data/app/controllers/avo/team_users_controller.rb +4 -0
- data/app/controllers/concerns/avo/initializes_avo.rb +26 -0
- data/app/helpers/avo/application_helper.rb +20 -21
- data/app/helpers/avo/resources_helper.rb +1 -1
- data/app/helpers/avo/url_helpers.rb +27 -11
- data/app/javascript/avo.base.js +1 -0
- data/app/javascript/js/application.js +0 -5
- data/app/javascript/js/controllers/action_controller.js +5 -3
- data/app/javascript/js/controllers/actions_overflow_controller.js +62 -0
- data/app/javascript/js/controllers/fields/{easy_mde_controller.js → simple_mde_controller.js} +3 -4
- 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 +1 -3
- 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 +12 -8
- data/app/javascript/js/custom-stream-actions.js +15 -0
- data/app/views/avo/{attachments/destroy.turbo_stream.erb → actions/keep_modal_open.turbo_stream.erb} +0 -2
- data/app/views/avo/actions/show.html.erb +12 -11
- data/app/views/avo/associations/new.html.erb +4 -4
- data/app/views/avo/base/index.html.erb +3 -2
- 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 +1 -1
- 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 -15
- data/app/views/avo/home/index.html.erb +1 -1
- data/app/views/avo/partials/_custom_tools_alert.html.erb +2 -2
- 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/_table_header.html.erb +5 -3
- data/app/views/avo/partials/_view_toggle_button.html.erb +0 -9
- data/app/views/avo/private/design.html.erb +2 -2
- data/app/views/layouts/avo/application.html.erb +3 -0
- data/avo.gemspec +6 -7
- data/bin/dev +1 -1
- data/bin/prod +0 -0
- data/config/i18n-tasks.yml +1 -1
- data/config/initializers/pagy.rb +10 -14
- data/config/master.key +1 -0
- data/config/routes.rb +8 -12
- data/db/factories.rb +7 -18
- data/lib/avo/action_model.rb +20 -0
- data/lib/avo/app.rb +90 -162
- data/lib/avo/asset_manager.rb +30 -0
- data/lib/avo/base_action.rb +38 -36
- data/lib/avo/base_resource.rb +108 -96
- data/lib/avo/base_resource_tool.rb +9 -16
- data/lib/avo/concerns/{can_replace_fields.rb → can_replace_items.rb} +3 -3
- data/lib/avo/concerns/filters_session_handler.rb +1 -0
- data/lib/avo/concerns/has_controls.rb +37 -0
- data/lib/avo/concerns/has_item_type.rb +38 -0
- data/lib/avo/concerns/{has_fields.rb → has_items.rb} +110 -97
- data/lib/avo/concerns/{has_resource_stimulus_controllers.rb → has_stimulus_controllers.rb} +1 -1
- data/lib/avo/concerns/is_resource_item.rb +24 -36
- data/lib/avo/concerns/is_visible.rb +15 -0
- data/lib/avo/concerns/visible_in_different_views.rb +126 -0
- data/lib/avo/configuration/branding.rb +0 -12
- data/lib/avo/configuration.rb +8 -45
- data/lib/avo/current.rb +5 -0
- data/lib/avo/dsl/field_parser.rb +1 -1
- data/lib/avo/dynamic_router.rb +6 -2
- data/lib/avo/engine.rb +37 -30
- data/lib/avo/error_manager.rb +25 -0
- data/lib/avo/execution_context.rb +9 -15
- data/lib/avo/fields/badge_field.rb +1 -1
- data/lib/avo/fields/base_field.rb +72 -124
- data/lib/avo/fields/belongs_to_field.rb +14 -25
- 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 +110 -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 +13 -0
- data/lib/avo/fields/concerns/use_resource.rb +5 -1
- data/lib/avo/fields/country_field.rb +4 -0
- data/lib/avo/fields/date_field.rb +3 -16
- data/lib/avo/fields/date_time_field.rb +1 -5
- data/lib/avo/fields/field_manager.rb +45 -0
- data/lib/avo/fields/file_field.rb +0 -2
- data/lib/avo/fields/files_field.rb +0 -6
- data/lib/avo/fields/has_and_belongs_to_many_field.rb +1 -2
- data/lib/avo/fields/has_base_field.rb +11 -14
- data/lib/avo/fields/has_many_field.rb +5 -2
- data/lib/avo/fields/has_one_field.rb +5 -10
- data/lib/avo/fields/heading_field.rb +4 -1
- data/lib/avo/fields/hidden_field.rb +1 -1
- data/lib/avo/fields/id_field.rb +2 -3
- 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 +4 -0
- data/lib/avo/filters/base_filter.rb +3 -8
- data/lib/avo/grid_collector.rb +7 -9
- data/lib/avo/html/builder.rb +5 -8
- data/lib/avo/item_grapher.rb +78 -0
- data/lib/avo/licensing/h_q.rb +4 -68
- data/lib/avo/licensing/license.rb +2 -2
- data/lib/avo/licensing/license_manager.rb +1 -1
- data/lib/avo/licensing/{nil_license.rb → null_license.rb} +1 -1
- data/lib/avo/licensing/pro_license.rb +1 -7
- data/lib/avo/plugin.rb +6 -0
- data/lib/avo/plugin_manager.rb +58 -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 +6 -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 +76 -0
- data/lib/avo/resources/items/item_group.rb +48 -0
- data/lib/avo/resources/items/main_panel.rb +2 -0
- data/lib/avo/resources/items/panel.rb +2 -0
- data/lib/avo/resources/items/sidebar.rb +47 -0
- data/lib/avo/resources/items/tab.rb +60 -0
- data/lib/avo/resources/items/tab_group.rb +68 -0
- data/lib/avo/resources/resource_manager.rb +181 -0
- data/lib/avo/services/authorization_service.rb +11 -110
- data/lib/avo/services/debug_service.rb +92 -0
- data/lib/avo/services/telemetry_service.rb +84 -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.rb +7 -0
- data/lib/generators/avo/eject_generator.rb +0 -1
- data/lib/generators/avo/install_generator.rb +1 -11
- data/lib/generators/avo/resource_generator.rb +5 -23
- data/lib/generators/avo/scope_generator.rb +15 -0
- data/lib/generators/avo/tailwindcss/install_generator.rb +1 -18
- data/lib/generators/avo/templates/action.tt +1 -1
- 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 +1 -1
- 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 +1 -11
- data/lib/generators/avo/templates/locales/avo.ar.yml +6 -6
- data/lib/generators/avo/templates/locales/avo.en.yml +4 -5
- data/lib/generators/avo/templates/locales/avo.fr.yml +1 -2
- data/lib/generators/avo/templates/locales/avo.nb.yml +1 -2
- data/lib/generators/avo/templates/locales/avo.nn.yml +1 -2
- data/lib/generators/avo/templates/locales/avo.pt-BR.yml +1 -2
- data/lib/generators/avo/templates/locales/avo.pt.yml +1 -2
- data/lib/generators/avo/templates/locales/avo.ro.yml +6 -7
- data/lib/generators/avo/templates/locales/avo.tr.yml +1 -2
- data/lib/generators/avo/templates/resource/resource.tt +1 -1
- data/lib/generators/avo/templates/resource_tools/partial.tt +4 -4
- 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/standalone_action.tt +1 -1
- data/lib/generators/avo/templates/tailwindcss/Procfile.dev +1 -1
- data/lib/generators/avo/templates/tool/view.tt +2 -2
- data/lib/tasks/avo_tasks.rake +22 -0
- metadata +82 -161
- data/app/assets/stylesheets/css/tags.css +0 -32
- data/app/assets/svgs/map-empty-state.svg +0 -35
- data/app/assets/svgs/map-view-type.svg +0 -3
- 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/area_field/edit_component.html.erb +0 -7
- data/app/components/avo/fields/area_field/edit_component.rb +0 -4
- data/app/components/avo/fields/area_field/show_component.html.erb +0 -8
- data/app/components/avo/fields/area_field/show_component.rb +0 -4
- 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/common/files/controls_component.html.erb +0 -29
- data/app/components/avo/fields/common/files/controls_component.rb +0 -19
- data/app/components/avo/fields/common/files/list_viewer_component.html.erb +0 -20
- data/app/components/avo/fields/common/files/list_viewer_component.rb +0 -41
- data/app/components/avo/fields/common/files/view_type/grid_item_component.html.erb +0 -27
- data/app/components/avo/fields/common/files/view_type/grid_item_component.rb +0 -52
- data/app/components/avo/fields/common/files/view_type/list_item_component.html.erb +0 -22
- data/app/components/avo/fields/common/files/view_type/list_item_component.rb +0 -15
- data/app/components/avo/fields/location_field/edit_component.html.erb +0 -22
- data/app/components/avo/fields/location_field/edit_component.rb +0 -4
- data/app/components/avo/fields/location_field/show_component.html.erb +0 -7
- data/app/components/avo/fields/location_field/show_component.rb +0 -4
- 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/index/resource_map_component.html.erb +0 -16
- data/app/components/avo/index/resource_map_component.rb +0 -109
- data/app/components/avo/row_component.html.erb +0 -3
- data/app/components/avo/row_component.rb +0 -12
- 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/javascript/js/controllers/base_controller.js +0 -22
- data/app/javascript/js/controllers/fields/reload_belongs_to_field_controller.js +0 -51
- 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/base/_new_via_belongs_to.html.erb +0 -12
- data/app/views/avo/base/close_modal_and_reload_field.turbo_stream.erb +0 -8
- data/app/views/avo/base/create_fail_action.turbo_stream.erb +0 -13
- 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/_flash_alerts.turbo_stream.erb +0 -3
- data/app/views/avo/partials/_global_search.html.erb +0 -19
- data/app/views/avo/partials/_profile_menu_extra.html.erb +0 -2
- data/app/views/avo/sidebar/_license_warnings.html.erb +0 -6
- 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_action_stimulus_controllers.rb +0 -15
- data/lib/avo/concerns/has_editable_controls.rb +0 -34
- data/lib/avo/concerns/has_html_attributes.rb +0 -123
- data/lib/avo/concerns/pagination.rb +0 -53
- data/lib/avo/concerns/policy_helpers.rb +0 -31
- data/lib/avo/concerns/visible_in_dashboard.rb +0 -31
- data/lib/avo/concerns/visible_items.rb +0 -51
- 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/area_field.rb +0 -39
- data/lib/avo/fields/concerns/file_authorization.rb +0 -31
- 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/location_field.rb +0 -86
- data/lib/avo/fields/tags_field.rb +0 -102
- 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/templates/locales/avo.es.yml +0 -126
- data/public/avo-assets/avo.base.js +0 -1037
- data/public/avo-assets/avo.base.js.map +0 -7
@@ -1,23 +1,18 @@
|
|
1
1
|
module Avo
|
2
2
|
module Concerns
|
3
|
-
module
|
3
|
+
module HasItems
|
4
4
|
extend ActiveSupport::Concern
|
5
5
|
|
6
6
|
included do
|
7
7
|
class_attribute :items_holder
|
8
|
-
class_attribute :items_index, default: 0
|
9
|
-
class_attribute :tabs_holder
|
10
|
-
class_attribute :tabs_tabs_holder
|
11
|
-
class_attribute :raw_tabs
|
12
|
-
class_attribute :tools_holder
|
13
8
|
end
|
14
9
|
|
15
10
|
class_methods do
|
16
11
|
# DSL methods
|
17
|
-
def field(name, **args, &block)
|
12
|
+
def field(name, as: :text, **args, &block)
|
18
13
|
ensure_items_holder_initialized
|
19
14
|
|
20
|
-
items_holder.field name, **args, &block
|
15
|
+
items_holder.field name, as: as, **args, &block
|
21
16
|
end
|
22
17
|
|
23
18
|
def panel(name = nil, **args, &block)
|
@@ -26,16 +21,10 @@ module Avo
|
|
26
21
|
items_holder.panel name, **args, &block
|
27
22
|
end
|
28
23
|
|
29
|
-
def row(**args, &block)
|
30
|
-
ensure_items_holder_initialized
|
31
|
-
|
32
|
-
items_holder.row(**args, &block)
|
33
|
-
end
|
34
|
-
|
35
24
|
def tabs(**args, &block)
|
36
25
|
ensure_items_holder_initialized
|
37
26
|
|
38
|
-
items_holder.tabs Avo::
|
27
|
+
items_holder.tabs Avo::Resources::Items::TabGroup::Builder.parse_block(**args, &block)
|
39
28
|
end
|
40
29
|
|
41
30
|
def tool(klass, **args)
|
@@ -53,7 +42,7 @@ module Avo
|
|
53
42
|
def sidebar(**args, &block)
|
54
43
|
ensure_items_holder_initialized
|
55
44
|
|
56
|
-
items_holder.sidebar Avo::
|
45
|
+
items_holder.sidebar Avo::Resources::Items::Sidebar::Builder.parse_block(**args, &block)
|
57
46
|
end
|
58
47
|
# END DSL methods
|
59
48
|
|
@@ -65,10 +54,6 @@ module Avo
|
|
65
54
|
end
|
66
55
|
end
|
67
56
|
|
68
|
-
def tools
|
69
|
-
tools_holder
|
70
|
-
end
|
71
|
-
|
72
57
|
# Dives deep into panels and tabs to fetch all the fields for a resource.
|
73
58
|
def fields(only_root: false)
|
74
59
|
fields = []
|
@@ -98,10 +83,6 @@ module Avo
|
|
98
83
|
if item.is_field?
|
99
84
|
fields << item
|
100
85
|
end
|
101
|
-
|
102
|
-
if item.is_row?
|
103
|
-
fields << extract_fields_from_items(tab)
|
104
|
-
end
|
105
86
|
end
|
106
87
|
|
107
88
|
fields.flatten
|
@@ -109,7 +90,7 @@ module Avo
|
|
109
90
|
|
110
91
|
def tab_groups
|
111
92
|
items.select do |item|
|
112
|
-
item.
|
93
|
+
item.is_tab_group?
|
113
94
|
end
|
114
95
|
end
|
115
96
|
|
@@ -121,7 +102,7 @@ module Avo
|
|
121
102
|
thing.items.each do |item|
|
122
103
|
if item.is_field?
|
123
104
|
fields << item
|
124
|
-
elsif item.is_panel?
|
105
|
+
elsif item.is_panel?
|
125
106
|
fields << extract_fields_from_items(item)
|
126
107
|
end
|
127
108
|
end
|
@@ -130,35 +111,22 @@ module Avo
|
|
130
111
|
end
|
131
112
|
|
132
113
|
def ensure_items_holder_initialized
|
133
|
-
self.items_holder ||= Avo::
|
134
|
-
end
|
135
|
-
|
136
|
-
def add_to_fields(instance)
|
137
|
-
self.items ||= []
|
138
|
-
self.items << instance
|
139
|
-
increment_order_index
|
140
|
-
end
|
141
|
-
|
142
|
-
def increment_order_index
|
143
|
-
self.items_index += 1
|
114
|
+
self.items_holder ||= Avo::Resources::Items::Holder.new
|
144
115
|
end
|
145
116
|
end
|
146
117
|
|
118
|
+
attr_accessor :items_holder
|
119
|
+
|
147
120
|
delegate :invalid_fields, to: :items_holder
|
148
121
|
delegate :items, to: :items_holder
|
149
122
|
|
150
|
-
def hydrate_fields
|
123
|
+
def hydrate_fields
|
151
124
|
fields.map do |field|
|
152
|
-
field.hydrate(
|
125
|
+
field.hydrate(record: @record, view: @view, resource: self)
|
153
126
|
end
|
154
|
-
|
155
127
|
self
|
156
128
|
end
|
157
129
|
|
158
|
-
def get_tabs
|
159
|
-
tabs_holder
|
160
|
-
end
|
161
|
-
|
162
130
|
def fields(**args)
|
163
131
|
self.class.fields(**args)
|
164
132
|
end
|
@@ -172,15 +140,30 @@ module Avo
|
|
172
140
|
|
173
141
|
return [] if fields.blank?
|
174
142
|
|
175
|
-
fields.map do |field|
|
143
|
+
items = fields.map do |field|
|
176
144
|
field.hydrate(resource: self, user: user, view: view)
|
177
145
|
end
|
146
|
+
|
147
|
+
if Avo::App.license.lacks_with_trial(:advanced_fields)
|
148
|
+
items = items.reject do |field|
|
149
|
+
field.type == "tags"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
items
|
154
|
+
end
|
155
|
+
|
156
|
+
def get_preview_fields
|
157
|
+
get_field_definitions.select do |field|
|
158
|
+
field.visible_in_view?(view: :preview)
|
159
|
+
end
|
178
160
|
end
|
179
161
|
|
180
162
|
def get_fields(panel: nil, reflection: nil, only_root: false)
|
181
163
|
fields = get_field_definitions(only_root: only_root)
|
182
164
|
.select do |field|
|
183
|
-
|
165
|
+
# Get the fields for this view
|
166
|
+
field.visible_in_view?(view: view)
|
184
167
|
end
|
185
168
|
.select do |field|
|
186
169
|
field.visible?
|
@@ -220,7 +203,7 @@ module Avo
|
|
220
203
|
end
|
221
204
|
end
|
222
205
|
|
223
|
-
hydrate_fields
|
206
|
+
hydrate_fields
|
224
207
|
|
225
208
|
fields
|
226
209
|
end
|
@@ -232,12 +215,9 @@ module Avo
|
|
232
215
|
end
|
233
216
|
|
234
217
|
def tools
|
235
|
-
check_license
|
236
|
-
|
237
|
-
return [] if App.license.lacks_with_trial :resource_tools
|
238
218
|
return [] if self.class.tools.blank?
|
239
219
|
|
240
|
-
|
220
|
+
items
|
241
221
|
.select do |item|
|
242
222
|
next if item.nil?
|
243
223
|
|
@@ -248,7 +228,7 @@ module Avo
|
|
248
228
|
tool
|
249
229
|
end
|
250
230
|
.select do |item|
|
251
|
-
item.
|
231
|
+
item.visible_in_view?(view: view)
|
252
232
|
end
|
253
233
|
end
|
254
234
|
|
@@ -259,75 +239,108 @@ module Avo
|
|
259
239
|
panelless_items = []
|
260
240
|
panelfull_items = []
|
261
241
|
|
262
|
-
|
263
|
-
|
264
|
-
item.
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
end
|
271
|
-
# each field has it's own visibility checker
|
272
|
-
if item.respond_to? :visible?
|
273
|
-
item.hydrate(view: view) if item.view.nil?
|
274
|
-
|
275
|
-
next unless item.visible?
|
276
|
-
end
|
277
|
-
# check if the user is authorized to view it
|
278
|
-
if item.respond_to? :authorized?
|
279
|
-
next unless item.hydrate(model: @model).authorized?
|
280
|
-
end
|
281
|
-
|
282
|
-
if item.is_field?
|
283
|
-
if item.has_own_panel?
|
284
|
-
panelfull_items << item
|
242
|
+
visible_items
|
243
|
+
.each do |item|
|
244
|
+
if item.is_field?
|
245
|
+
if item.has_own_panel?
|
246
|
+
panelfull_items << item
|
247
|
+
else
|
248
|
+
panelless_items << item
|
249
|
+
end
|
285
250
|
else
|
286
|
-
|
251
|
+
panelfull_items << item
|
287
252
|
end
|
288
|
-
else
|
289
|
-
panelfull_items << item
|
290
253
|
end
|
291
|
-
end
|
292
254
|
|
293
255
|
# Make sure all tabs panelfull_items are setted as inside tabs
|
294
|
-
panelfull_items.grep(Avo::TabGroup).each do |tab_group|
|
295
|
-
tab_group.items.grep(Avo::Tab).each do |tab|
|
296
|
-
tab.items.grep(Avo::Panel).each do |panel|
|
297
|
-
|
298
|
-
|
299
|
-
panel.items.grep(Avo::Row).each do |row|
|
300
|
-
set_target_to_top row.items.grep(Avo::Fields::BelongsToField)
|
256
|
+
panelfull_items.grep(Avo::Resources::Items::TabGroup).each do |tab_group|
|
257
|
+
tab_group.items.grep(Avo::Resources::Items::Tab).each do |tab|
|
258
|
+
tab.items.grep(Avo::Resources::Items::Panel).each do |panel|
|
259
|
+
panel.items.grep(Avo::Fields::BelongsToField).each do |field|
|
260
|
+
field.target = :_top
|
301
261
|
end
|
302
262
|
end
|
303
263
|
end
|
304
264
|
end
|
305
265
|
|
306
266
|
# Add all the panelles fields to a new panel
|
307
|
-
main_panel_holder = Avo::
|
267
|
+
main_panel_holder = Avo::Resources::Items::Holder.new
|
308
268
|
main_panel_holder.items = panelless_items
|
309
269
|
|
310
270
|
# Add that panel to the main panel
|
311
|
-
main_panel = Avo::MainPanel.new
|
271
|
+
main_panel = Avo::Resources::Items::MainPanel.new
|
312
272
|
main_panel.items_holder = main_panel_holder
|
313
273
|
|
314
274
|
# Return all the items but this time with all the panelless ones inside the main panel
|
315
275
|
[main_panel, *panelfull_items]
|
316
276
|
end
|
317
277
|
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
278
|
+
def items
|
279
|
+
if items_holder.present?
|
280
|
+
items_holder.items
|
281
|
+
else
|
282
|
+
[]
|
323
283
|
end
|
324
284
|
end
|
325
285
|
|
326
|
-
def
|
327
|
-
|
328
|
-
|
329
|
-
|
286
|
+
def visible_items
|
287
|
+
items
|
288
|
+
.map do |item|
|
289
|
+
if view.present?
|
290
|
+
res = self.class.ancestors.include?(Avo::BaseResource) ? self : resource
|
291
|
+
item.hydrate(view: view, resource: res)
|
292
|
+
end
|
293
|
+
|
294
|
+
item
|
295
|
+
end
|
296
|
+
.select do |item|
|
297
|
+
item.visible_in_view?(view: view)
|
298
|
+
end
|
299
|
+
.select do |item|
|
300
|
+
item.visible?
|
301
|
+
end
|
302
|
+
.select do |item|
|
303
|
+
if item.respond_to?(:visible_in_view?)
|
304
|
+
item.visible_in_view? view: view
|
305
|
+
else
|
306
|
+
true
|
307
|
+
end
|
308
|
+
end
|
309
|
+
.select do |item|
|
310
|
+
if !item.is_heading? && view.in?([:edit, :update, :new, :create])
|
311
|
+
if item.respond_to?(:id)
|
312
|
+
item.resource.record.respond_to?("#{item.id}=")
|
313
|
+
else
|
314
|
+
true
|
315
|
+
end
|
316
|
+
else
|
317
|
+
true
|
318
|
+
end
|
319
|
+
end
|
320
|
+
.select do |item|
|
321
|
+
# Check if the user is authorized to view it.
|
322
|
+
# This is usually used for has_* fields
|
323
|
+
if item.respond_to? :authorized?
|
324
|
+
item.authorized?
|
325
|
+
else
|
326
|
+
true
|
327
|
+
end
|
328
|
+
end
|
329
|
+
.compact
|
330
|
+
end
|
331
|
+
|
332
|
+
def is_empty?
|
333
|
+
visible_items.blank?
|
334
|
+
end
|
335
|
+
|
336
|
+
def hydrate(**args)
|
337
|
+
super(**args)
|
338
|
+
|
339
|
+
items_holder.items.each do |item|
|
340
|
+
item.hydrate(**args)
|
330
341
|
end
|
342
|
+
|
343
|
+
self
|
331
344
|
end
|
332
345
|
end
|
333
346
|
end
|
@@ -2,42 +2,30 @@
|
|
2
2
|
module Avo
|
3
3
|
module Concerns
|
4
4
|
module IsResourceItem
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
self
|
17
|
-
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
self.class.
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
def is_tab_group?
|
32
|
-
self.class.item_type == :tab_group
|
33
|
-
end
|
34
|
-
|
35
|
-
def is_sidebar?
|
36
|
-
self.class.item_type == :sidebar
|
37
|
-
end
|
38
|
-
|
39
|
-
def is_row?
|
40
|
-
self.class.item_type == :row
|
5
|
+
# These attributes are required to be hydrated in order to properly find the visible_items
|
6
|
+
attr_accessor :resource
|
7
|
+
attr_accessor :view
|
8
|
+
|
9
|
+
def hydrate(**args)
|
10
|
+
args.each do |key, value|
|
11
|
+
if respond_to?("#{key}=")
|
12
|
+
send("#{key}=", value)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
self
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns the final state of if an item is visible or not
|
20
|
+
# For items that have children it checks to see if it contains any visible children.
|
21
|
+
def visible?
|
22
|
+
# For items that may contains other items like tabs and panels we should also check
|
23
|
+
# if any on their children have visible items.
|
24
|
+
if self.class.ancestors.include?(Avo::Concerns::HasItems)
|
25
|
+
return false unless visible_items.any?
|
26
|
+
end
|
27
|
+
|
28
|
+
super
|
41
29
|
end
|
42
30
|
end
|
43
31
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Adds the ability to set the visibility of an item in the execution context.
|
2
|
+
module Avo
|
3
|
+
module Concerns
|
4
|
+
module IsVisible
|
5
|
+
attr_accessor :visible
|
6
|
+
|
7
|
+
def visible?
|
8
|
+
# Default to true
|
9
|
+
return true unless visible.present?
|
10
|
+
|
11
|
+
Avo::ExecutionContext.new(target: visible, resource: @resource).handle
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module Avo
|
2
|
+
module Concerns
|
3
|
+
module VisibleInDifferentViews
|
4
|
+
attr_accessor :show_on_index
|
5
|
+
attr_accessor :show_on_show
|
6
|
+
attr_accessor :show_on_new
|
7
|
+
attr_accessor :show_on_edit
|
8
|
+
attr_accessor :show_on_preview
|
9
|
+
|
10
|
+
def post_initialize
|
11
|
+
initialize_views
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize_views
|
15
|
+
# Set defaults
|
16
|
+
@show_on_index = @show_on_index.nil? ? true : @show_on_index
|
17
|
+
@show_on_show = @show_on_show.nil? ? true : @show_on_show
|
18
|
+
@show_on_new = @show_on_new.nil? ? true : @show_on_new
|
19
|
+
@show_on_edit = @show_on_edit.nil? ? true : @show_on_edit
|
20
|
+
@show_on_preview = @show_on_preview.nil? ? false : @show_on_preview
|
21
|
+
|
22
|
+
if @args.present?
|
23
|
+
# Execute options
|
24
|
+
show_on @args[:show_on] if @args[:show_on].present?
|
25
|
+
hide_on @args[:hide_on] if @args[:hide_on].present?
|
26
|
+
only_on @args[:only_on] if @args[:only_on].present?
|
27
|
+
except_on @args[:except_on] if @args[:except_on].present?
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Validates if the field is visible on certain view
|
32
|
+
def visible_in_view?(view:)
|
33
|
+
raise "No view specified on visibility check." if view.blank?
|
34
|
+
|
35
|
+
send "show_on_#{view}"
|
36
|
+
end
|
37
|
+
|
38
|
+
def show_on(*where)
|
39
|
+
return show_on_all if where.include? :all
|
40
|
+
|
41
|
+
normalize_views(where).flatten.each do |view|
|
42
|
+
show_on_view view
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def hide_on(*where)
|
47
|
+
return hide_on_all if where.include? :all
|
48
|
+
|
49
|
+
normalize_views(where).flatten.each do |view|
|
50
|
+
hide_on_view view
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def only_on(*where)
|
55
|
+
hide_on_all
|
56
|
+
normalize_views(where).flatten.each do |view|
|
57
|
+
show_on_view view
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def except_on(*where)
|
62
|
+
show_on_all
|
63
|
+
normalize_views(where).flatten.each do |view|
|
64
|
+
show_on_view view
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# When submitting the form on creation, the new page will be create but we don't have a visibility marker for create so we'll default to new
|
69
|
+
def show_on_create
|
70
|
+
show_on_new
|
71
|
+
end
|
72
|
+
|
73
|
+
# When submitting the form on update, the new page will be create but we don't have a visibility marker for update so we'll default to edit
|
74
|
+
def show_on_update
|
75
|
+
show_on_edit
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def show_on_view(view)
|
81
|
+
send("show_on_#{view}=", true)
|
82
|
+
end
|
83
|
+
|
84
|
+
def hide_on_view(view)
|
85
|
+
send("show_on_#{view}=", false)
|
86
|
+
end
|
87
|
+
|
88
|
+
def only_on_view(view)
|
89
|
+
hide_on_all
|
90
|
+
show_on_view view
|
91
|
+
end
|
92
|
+
|
93
|
+
def except_on_view(view)
|
94
|
+
show_on_all
|
95
|
+
hide_on_view view
|
96
|
+
end
|
97
|
+
|
98
|
+
def show_on_all
|
99
|
+
@show_on_index = true
|
100
|
+
@show_on_show = true
|
101
|
+
@show_on_edit = true
|
102
|
+
@show_on_new = true
|
103
|
+
@show_on_preview = true
|
104
|
+
end
|
105
|
+
|
106
|
+
def hide_on_all
|
107
|
+
@show_on_index = false
|
108
|
+
@show_on_show = false
|
109
|
+
@show_on_edit = false
|
110
|
+
@show_on_new = false
|
111
|
+
@show_on_preview = false
|
112
|
+
end
|
113
|
+
|
114
|
+
def normalize_views(*views_and_groups)
|
115
|
+
forms = views_and_groups.flatten! & [:forms]
|
116
|
+
|
117
|
+
if forms.present?
|
118
|
+
views_and_groups -= forms
|
119
|
+
views_and_groups += [:new, :edit]
|
120
|
+
end
|
121
|
+
|
122
|
+
views_and_groups.flatten.uniq
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -32,40 +32,28 @@ class Avo::Configuration::Branding
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def logo
|
35
|
-
return @default_logo if Avo::App.license.lacks_with_trial(:branding)
|
36
|
-
|
37
35
|
@logo || @default_logo
|
38
36
|
end
|
39
37
|
|
40
38
|
def logomark
|
41
|
-
return @default_logomark if Avo::App.license.lacks_with_trial(:branding)
|
42
|
-
|
43
39
|
@logomark || @default_logomark
|
44
40
|
end
|
45
41
|
|
46
42
|
def placeholder
|
47
|
-
return @default_placeholder if Avo::App.license.lacks_with_trial(:branding)
|
48
|
-
|
49
43
|
@placeholder || @default_placeholder
|
50
44
|
end
|
51
45
|
|
52
46
|
def chart_colors
|
53
|
-
return @default_chart_colors if Avo::App.license.lacks_with_trial(:branding)
|
54
|
-
|
55
47
|
@chart_colors || @default_chart_colors
|
56
48
|
end
|
57
49
|
|
58
50
|
def favicon
|
59
|
-
return @default_favicon if Avo::App.license.lacks_with_trial(:branding)
|
60
|
-
|
61
51
|
@favicon || @default_favicon
|
62
52
|
end
|
63
53
|
|
64
54
|
private
|
65
55
|
|
66
56
|
def colors
|
67
|
-
return @default_colors if Avo::App.license.lacks_with_trial(:branding)
|
68
|
-
|
69
57
|
@default_colors.merge(@colors) || @default_colors
|
70
58
|
end
|
71
59
|
|