habarico 7.2.0.pre.beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +82 -0
- data/Rakefile +15 -0
- data/VERSION +1 -0
- data/app/controllers/habarico/action_schema_controller.rb +41 -0
- data/app/controllers/habarico/application_controller.rb +15 -0
- data/app/controllers/habarico/contrib/preferences/user_preferences_controller.rb +105 -0
- data/app/controllers/habarico/global_schema_controller.rb +11 -0
- data/app/controllers/habarico/local_schema_controller.rb +35 -0
- data/app/helpers/habarico/application_helper.rb +4 -0
- data/app/models/habarico/application_record.rb +5 -0
- data/app/views/layouts/habarico/application.html.erb +17 -0
- data/config/locales/cs.yml +39 -0
- data/config/locales/de.yml +39 -0
- data/config/locales/en.yml +39 -0
- data/config/locales/es.yml +39 -0
- data/config/locales/fr.yml +39 -0
- data/config/locales/it.yml +39 -0
- data/config/locales/ja.yml +39 -0
- data/config/locales/nl.yml +39 -0
- data/config/locales/pl.yml +39 -0
- data/config/locales/pt.yml +39 -0
- data/config/locales/ro.yml +39 -0
- data/config/locales/sk.yml +39 -0
- data/config/locales/uk.yml +39 -0
- data/config/routes.rb +1 -0
- data/lib/generators/habarico/preferences/install_generator.rb +27 -0
- data/lib/generators/habarico/preferences/templates/create_habarico_user_preferences.rb.tt +15 -0
- data/lib/habarico/active_model/references.rb +68 -0
- data/lib/habarico/authenticatable.rb +31 -0
- data/lib/habarico/config.rb +71 -0
- data/lib/habarico/context.rb +126 -0
- data/lib/habarico/contrib/preferences/base_preferences.rb +40 -0
- data/lib/habarico/contrib/preferences/config.rb +31 -0
- data/lib/habarico/contrib/preferences/errors.rb +79 -0
- data/lib/habarico/contrib/preferences/locales/cs.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/de.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/en.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/es.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/fr.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/it.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/ja.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/nl.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/pl.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/pt.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/ro.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/sk.yml +8 -0
- data/lib/habarico/contrib/preferences/locales/uk.yml +8 -0
- data/lib/habarico/contrib/preferences/registry.rb +293 -0
- data/lib/habarico/contrib/preferences/routes.rb +17 -0
- data/lib/habarico/contrib/preferences/schemas.rb +129 -0
- data/lib/habarico/contrib/preferences/serializer.rb +19 -0
- data/lib/habarico/contrib/preferences/user_preference.rb +16 -0
- data/lib/habarico/contrib/preferences.rb +32 -0
- data/lib/habarico/controller.rb +584 -0
- data/lib/habarico/definition/action_reference.rb +18 -0
- data/lib/habarico/definition/actions/action.rb +14 -0
- data/lib/habarico/definition/actions/create_action.rb +18 -0
- data/lib/habarico/definition/actions/delete_action.rb +20 -0
- data/lib/habarico/definition/actions/edit_action.rb +18 -0
- data/lib/habarico/definition/actions/link_action.rb +11 -0
- data/lib/habarico/definition/actions/resource_action.rb +12 -0
- data/lib/habarico/definition/actions/save_action.rb +14 -0
- data/lib/habarico/definition/actions/show_action.rb +18 -0
- data/lib/habarico/definition/actions/upload_images_action.rb +11 -0
- data/lib/habarico/definition/actions/view_action.rb +11 -0
- data/lib/habarico/definition/boxes/array_box.rb +10 -0
- data/lib/habarico/definition/boxes/box.rb +32 -0
- data/lib/habarico/definition/boxes/gallery_box.rb +10 -0
- data/lib/habarico/definition/boxes/grid_box.rb +10 -0
- data/lib/habarico/definition/boxes/grid_item_box.rb +10 -0
- data/lib/habarico/definition/boxes/list_box.rb +10 -0
- data/lib/habarico/definition/boxes/object_box.rb +10 -0
- data/lib/habarico/definition/boxes/tab_box.rb +10 -0
- data/lib/habarico/definition/boxes/tab_item_box.rb +10 -0
- data/lib/habarico/definition/boxes/wizard_box.rb +10 -0
- data/lib/habarico/definition/concerns/definition_model.rb +38 -0
- data/lib/habarico/definition/definition.rb +206 -0
- data/lib/habarico/definition/field_reference.rb +9 -0
- data/lib/habarico/definition/filter_reference.rb +7 -0
- data/lib/habarico/definition/menu/link_menu_item.rb +12 -0
- data/lib/habarico/definition/menu/menu_item.rb +9 -0
- data/lib/habarico/definition/menu/text_menu_item.rb +12 -0
- data/lib/habarico/definition/menu/view_menu_item.rb +13 -0
- data/lib/habarico/definition/response.rb +13 -0
- data/lib/habarico/definition/views/action_view.rb +11 -0
- data/lib/habarico/definition/views/create_view.rb +15 -0
- data/lib/habarico/definition/views/edit_view.rb +15 -0
- data/lib/habarico/definition/views/list_view.rb +17 -0
- data/lib/habarico/definition/views/show_view.rb +15 -0
- data/lib/habarico/definition/views/view.rb +10 -0
- data/lib/habarico/engine.rb +6 -0
- data/lib/habarico/file_validations.rb +119 -0
- data/lib/habarico/generators/abstract_generator.rb +21 -0
- data/lib/habarico/generators/action/action_schema_generator.rb +111 -0
- data/lib/habarico/generators/action/confirm_dialog_properties_generator.rb +30 -0
- data/lib/habarico/generators/action/global_resource_action_schema_generator.rb +46 -0
- data/lib/habarico/generators/action/link_action_parameters_generator.rb +31 -0
- data/lib/habarico/generators/action/resource_action_endpoint_parameters_generator.rb +70 -0
- data/lib/habarico/generators/action/resource_action_parameters_generator.rb +40 -0
- data/lib/habarico/generators/action/resource_action_schema_generator.rb +51 -0
- data/lib/habarico/generators/action/save_action_parameters_generator.rb +26 -0
- data/lib/habarico/generators/action/upload_images_action_parameters_generator.rb +41 -0
- data/lib/habarico/generators/action/view_action_endpoint_parameters_generator.rb +37 -0
- data/lib/habarico/generators/action/view_action_parameters_generator.rb +56 -0
- data/lib/habarico/generators/endpoint/dynamic_render_options_generator.rb +26 -0
- data/lib/habarico/generators/endpoint/endpoints_schema_generator.rb +61 -0
- data/lib/habarico/generators/endpoint/enum_type_generator.rb +45 -0
- data/lib/habarico/generators/endpoint/field_options_generator.rb +179 -0
- data/lib/habarico/generators/endpoint/field_schema_generator.rb +381 -0
- data/lib/habarico/generators/endpoint/fields_schema_generator.rb +35 -0
- data/lib/habarico/generators/endpoint/filter_schema_generator.rb +201 -0
- data/lib/habarico/generators/endpoint/filters_schema_generator.rb +25 -0
- data/lib/habarico/generators/endpoint/method_schema_generator.rb +34 -0
- data/lib/habarico/generators/endpoint/number_field_options_generator.rb +45 -0
- data/lib/habarico/generators/endpoint/phone_field_options_generator.rb +29 -0
- data/lib/habarico/generators/endpoint/relation_field_options_generator.rb +90 -0
- data/lib/habarico/generators/endpoint/search_filter_schema_generator.rb +44 -0
- data/lib/habarico/generators/menu/menu_group_schema_generator.rb +63 -0
- data/lib/habarico/generators/menu/menu_link_parameters_generator.rb +31 -0
- data/lib/habarico/generators/menu/menu_schema_generator.rb +105 -0
- data/lib/habarico/generators/menu/menu_view_endpoint_parameters_generator.rb +44 -0
- data/lib/habarico/generators/menu/menu_view_parameters_generator.rb +50 -0
- data/lib/habarico/generators/resource/action_resource_schema_generator.rb +84 -0
- data/lib/habarico/generators/resource/global_resource_schema_generator.rb +70 -0
- data/lib/habarico/generators/resource/local_resource_schema_generator.rb +111 -0
- data/lib/habarico/generators/resource/object_resource_schema_generator.rb +49 -0
- data/lib/habarico/generators/resource/resource_schema_generator.rb +31 -0
- data/lib/habarico/generators/view/action_descriptor_generator.rb +88 -0
- data/lib/habarico/generators/view/array_box_parameters_generator.rb +34 -0
- data/lib/habarico/generators/view/box_options_generator.rb +23 -0
- data/lib/habarico/generators/view/box_schema_generator.rb +194 -0
- data/lib/habarico/generators/view/detail_view_parameters_generator.rb +57 -0
- data/lib/habarico/generators/view/field_descriptor_generator.rb +107 -0
- data/lib/habarico/generators/view/filter_descriptor_generator.rb +75 -0
- data/lib/habarico/generators/view/gallery_box_parameters_generator.rb +71 -0
- data/lib/habarico/generators/view/global_view_schema_generator.rb +59 -0
- data/lib/habarico/generators/view/grid_item_box_parameters_generator.rb +44 -0
- data/lib/habarico/generators/view/list_box_parameters_generator.rb +124 -0
- data/lib/habarico/generators/view/list_view_parameters_generator.rb +120 -0
- data/lib/habarico/generators/view/object_box_parameters_generator.rb +26 -0
- data/lib/habarico/generators/view/sort_descriptor_generator.rb +30 -0
- data/lib/habarico/generators/view/tab_box_parameters_generator.rb +26 -0
- data/lib/habarico/generators/view/view_endpoint_parameters_generator.rb +71 -0
- data/lib/habarico/generators/view/view_schema_generator.rb +87 -0
- data/lib/habarico/generators/view/wizard_box_parameters_generator.rb +32 -0
- data/lib/habarico/helpers/action_helper.rb +9 -0
- data/lib/habarico/helpers/attributes_helper.rb +67 -0
- data/lib/habarico/helpers/box_helper.rb +19 -0
- data/lib/habarico/helpers/callable_helper.rb +15 -0
- data/lib/habarico/helpers/filter_params_helper.rb +49 -0
- data/lib/habarico/helpers/order_by_helper.rb +56 -0
- data/lib/habarico/helpers/reflection_helper.rb +61 -0
- data/lib/habarico/helpers/sorting_helper.rb +136 -0
- data/lib/habarico/schema/action/action_schema.rb +46 -0
- data/lib/habarico/schema/action/confirm_dialog_properties.rb +13 -0
- data/lib/habarico/schema/action/global_resource_action_schema.rb +29 -0
- data/lib/habarico/schema/action/link_action_parameters.rb +15 -0
- data/lib/habarico/schema/action/resource_action_endpoint_parameters.rb +24 -0
- data/lib/habarico/schema/action/resource_action_parameters.rb +17 -0
- data/lib/habarico/schema/action/resource_action_schema.rb +14 -0
- data/lib/habarico/schema/action/save_action_parameters.rb +10 -0
- data/lib/habarico/schema/action/upload_images_action_parameters.rb +23 -0
- data/lib/habarico/schema/action/view_action_endpoint_parameters.rb +16 -0
- data/lib/habarico/schema/action/view_action_parameters.rb +27 -0
- data/lib/habarico/schema/endpoint/ai_field_options.rb +10 -0
- data/lib/habarico/schema/endpoint/box_options.rb +10 -0
- data/lib/habarico/schema/endpoint/choices_field_options.rb +10 -0
- data/lib/habarico/schema/endpoint/dynamic_render_options.rb +14 -0
- data/lib/habarico/schema/endpoint/endpoints_schema.rb +22 -0
- data/lib/habarico/schema/endpoint/enum_type.rb +21 -0
- data/lib/habarico/schema/endpoint/field_options.rb +56 -0
- data/lib/habarico/schema/endpoint/field_schema.rb +65 -0
- data/lib/habarico/schema/endpoint/filter_schema.rb +44 -0
- data/lib/habarico/schema/endpoint/image_field_options.rb +13 -0
- data/lib/habarico/schema/endpoint/key_value.rb +13 -0
- data/lib/habarico/schema/endpoint/method_schema.rb +13 -0
- data/lib/habarico/schema/endpoint/number_field_options.rb +24 -0
- data/lib/habarico/schema/endpoint/phone_field_options.rb +13 -0
- data/lib/habarico/schema/endpoint/relation_field_options.rb +39 -0
- data/lib/habarico/schema/extensible_enum.rb +20 -0
- data/lib/habarico/schema/menu/action_view_choice.rb +13 -0
- data/lib/habarico/schema/menu/menu_group_schema.rb +26 -0
- data/lib/habarico/schema/menu/menu_schema.rb +36 -0
- data/lib/habarico/schema/resource/global_resource_schema.rb +14 -0
- data/lib/habarico/schema/resource/local_resource_schema.rb +14 -0
- data/lib/habarico/schema/resource/object_resource_schema.rb +8 -0
- data/lib/habarico/schema/resource/resource_schema.rb +16 -0
- data/lib/habarico/schema/types.rb +102 -0
- data/lib/habarico/schema/view/action_descriptor.rb +30 -0
- data/lib/habarico/schema/view/array_box_parameters.rb +13 -0
- data/lib/habarico/schema/view/box_schema.rb +67 -0
- data/lib/habarico/schema/view/detail_view_parameters.rb +16 -0
- data/lib/habarico/schema/view/field_descriptor.rb +50 -0
- data/lib/habarico/schema/view/field_wrapper_properties.rb +13 -0
- data/lib/habarico/schema/view/filter_descriptor.rb +24 -0
- data/lib/habarico/schema/view/gallery_box_parameters.rb +31 -0
- data/lib/habarico/schema/view/global_view_schema.rb +25 -0
- data/lib/habarico/schema/view/grid_item_box_parameters.rb +13 -0
- data/lib/habarico/schema/view/list_box_parameters.rb +44 -0
- data/lib/habarico/schema/view/list_view_parameters.rb +31 -0
- data/lib/habarico/schema/view/object_box_parameters.rb +10 -0
- data/lib/habarico/schema/view/sort_descriptor.rb +15 -0
- data/lib/habarico/schema/view/sortable_parameters.rb +13 -0
- data/lib/habarico/schema/view/tab_box_parameters.rb +10 -0
- data/lib/habarico/schema/view/view_action_descriptor_parameters.rb +21 -0
- data/lib/habarico/schema/view/view_endpoint_parameters.rb +22 -0
- data/lib/habarico/schema/view/view_schema.rb +33 -0
- data/lib/habarico/schema/view/wizard_box_parameters.rb +13 -0
- data/lib/habarico/search/field_resolver.rb +138 -0
- data/lib/habarico/search/search_matcher.rb +152 -0
- data/lib/habarico/serializers/meta_serializer.rb +42 -0
- data/lib/habarico/serializers/record_serializer.rb +33 -0
- data/lib/habarico/serializers/serializer.rb +61 -0
- data/lib/habarico/services/resource_service.rb +69 -0
- data/lib/habarico/services/routing_service.rb +160 -0
- data/lib/habarico/services/schema_service.rb +72 -0
- data/lib/habarico/version.rb +5 -0
- data/lib/habarico.rb +262 -0
- metadata +324 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class DeleteAction < ResourceAction
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
def initialize(params = {})
|
|
6
|
+
@name = 'delete'
|
|
7
|
+
@icon = 'Delete'
|
|
8
|
+
@color = 'error'
|
|
9
|
+
@is_detail = true # -> tied to a single resource item
|
|
10
|
+
@show_in_detail = false # -> do not show in detail views
|
|
11
|
+
@show_in_list = true # -> show in list views (for each item in the list)
|
|
12
|
+
@endpoint_method = :delete # -> use HTTP DELETE method
|
|
13
|
+
@confirm_dialog_title = I18n.t('confirmations.common.delete.title', default: nil)
|
|
14
|
+
@confirm_dialog_message = I18n.t('confirmations.common.delete.message', default: nil)
|
|
15
|
+
@permission = :delete
|
|
16
|
+
super(params)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class EditAction < ViewAction
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
def initialize(params = {})
|
|
6
|
+
@name = 'edit'
|
|
7
|
+
@icon = 'Edit'
|
|
8
|
+
@is_detail = true # -> tied to a single resource item
|
|
9
|
+
@show_in_detail = true # -> show in detail views (on top of the detail)
|
|
10
|
+
@show_in_list = true # -> show in list views (for each item in the list)
|
|
11
|
+
@view_name = 'edit' # -> connect it to the Habarico::EditView or any other view named 'edit'
|
|
12
|
+
@view_mode = :redirect # -> open the view on the new page
|
|
13
|
+
@permission = :update
|
|
14
|
+
super(params)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class ShowAction < ViewAction
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
def initialize(params = {})
|
|
6
|
+
@name = 'show'
|
|
7
|
+
@icon = 'Visibility'
|
|
8
|
+
@is_detail = true # -> tied to a single resource item
|
|
9
|
+
@show_in_detail = true # -> show in detail views (on top of the detail)
|
|
10
|
+
@show_in_list = true # -> show in list views (for each item in the list)
|
|
11
|
+
@view_name = 'show' # -> connect it to the Habarico::ShowView or any other view named 'show'
|
|
12
|
+
@view_mode = :redirect # -> open the view on the new page
|
|
13
|
+
@permission = :read
|
|
14
|
+
super(params)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
18
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class Box
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
attr_accessor :type, :label, :name, :read_only, :card, :collapsible, :boxes, :show_query, :required_query, :toolbar_actions, :bottom_actions
|
|
6
|
+
|
|
7
|
+
# Gallery
|
|
8
|
+
attr_accessor :reference, :target, :image_field, :schema_params, :extra_filters
|
|
9
|
+
|
|
10
|
+
# Array
|
|
11
|
+
attr_accessor :target, :inline # rubocop:disable Lint/DuplicateMethods -- intentional for readability
|
|
12
|
+
|
|
13
|
+
# Grid Item
|
|
14
|
+
attr_accessor :xs, :sm, :md, :lg, :xl
|
|
15
|
+
|
|
16
|
+
# List
|
|
17
|
+
attr_accessor :reference, :target, :extra_filters, :row_actions, :list_toolbar_actions, :list_actions, :filters, :default_sorting, # rubocop:disable Lint/DuplicateMethods -- intentional for readability
|
|
18
|
+
:sortable_field_name, :sortable_sort_for_filters, :single_click_action, :double_click_action
|
|
19
|
+
|
|
20
|
+
# Object
|
|
21
|
+
attr_accessor :target # rubocop:disable Lint/DuplicateMethods -- intentional for readability
|
|
22
|
+
|
|
23
|
+
# Tab / Wizard
|
|
24
|
+
attr_accessor :show_toolbar_navigation, :validate_steps
|
|
25
|
+
|
|
26
|
+
def initialize(params = {})
|
|
27
|
+
super(params)
|
|
28
|
+
@type = 'simple'
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
module DefinitionModel
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
def initialize(params = {})
|
|
6
|
+
self.class.attrs.each do |attr|
|
|
7
|
+
if params.key?(attr)
|
|
8
|
+
self.send("#{attr}=", params[attr])
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def assign(params = {})
|
|
14
|
+
self.class.attrs.each do |attr|
|
|
15
|
+
if params.key?(attr)
|
|
16
|
+
self.send("#{attr}=", params[attr])
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class_methods do
|
|
22
|
+
|
|
23
|
+
def attrs
|
|
24
|
+
if @attrs.nil?
|
|
25
|
+
@attrs = []
|
|
26
|
+
@attrs.concat(self.superclass.attrs) if self.superclass.respond_to?(:attrs)
|
|
27
|
+
end
|
|
28
|
+
@attrs
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def attr_accessor(*attrs)
|
|
32
|
+
self.attrs.concat(attrs)
|
|
33
|
+
super(*attrs)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class Definition
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
attr_accessor :model, :default_sorting, :force_sorting, :default_filter, :includes, :prefetch, :scopes,
|
|
6
|
+
|
|
7
|
+
# Metadata
|
|
8
|
+
:tags,
|
|
9
|
+
|
|
10
|
+
# Navigation
|
|
11
|
+
:icon, :label, :fields, :menu_path, :menu_item, :breadcrumbs,
|
|
12
|
+
|
|
13
|
+
# Search (per-resource; the cross-resource spotlight search adds
|
|
14
|
+
# `global_fulltext_search_enabled` from habarico-enterprise - HAB-812)
|
|
15
|
+
:search_fields,
|
|
16
|
+
|
|
17
|
+
# Fields and filters
|
|
18
|
+
:sorting_fields, :read_only_fields, :write_only_fields, :filters,
|
|
19
|
+
|
|
20
|
+
# Pagination (per resource; `nil` falls back to `Habarico::Config` and then to
|
|
21
|
+
# the eluvia-base defaults - see `Habarico::Controller#set_list_pagination`)
|
|
22
|
+
:default_page_limit, :max_page_limit,
|
|
23
|
+
|
|
24
|
+
# Aggregation and dashboard are paid: habarico-enterprise adds
|
|
25
|
+
# `aggregate_enabled`, `aggregate_max_buckets`, `aggregate_fields`,
|
|
26
|
+
# `aggregate_schema_generator` and `dashboard_enabled` here (HAB-812).
|
|
27
|
+
|
|
28
|
+
# Views and actions
|
|
29
|
+
:views, :actions,
|
|
30
|
+
|
|
31
|
+
# Permissions
|
|
32
|
+
:can, :can_read, :can_create, :can_update, :can_delete, :allow_read_by_id,
|
|
33
|
+
:policy_scope,
|
|
34
|
+
|
|
35
|
+
# Generator classes - action
|
|
36
|
+
:link_action_parameters_generator, :resource_action_endpoint_parameters_generator,
|
|
37
|
+
:resource_action_parameters_generator, :save_action_parameters_generator, :action_schema_generator,
|
|
38
|
+
:view_action_endpoint_parameters_generator, :view_action_parameters_generator,
|
|
39
|
+
:confirm_dialog_properties_generator, :global_resource_action_schema_generator,
|
|
40
|
+
:resource_action_schema_generator, :upload_images_action_parameters_generator,
|
|
41
|
+
|
|
42
|
+
# Generator classes - endpoint
|
|
43
|
+
:dynamic_render_options_generator, :method_schema_generator, :endpoints_schema_generator,
|
|
44
|
+
:enum_type_generator, :field_options_generator, :field_schema_generator,
|
|
45
|
+
:fields_schema_generator, :filter_schema_generator, :filters_schema_generator,
|
|
46
|
+
:number_field_options_generator, :phone_field_options_generator, :relation_field_options_generator,
|
|
47
|
+
:search_filter_schema_generator,
|
|
48
|
+
|
|
49
|
+
# Generator classes - menu
|
|
50
|
+
:menu_group_schema_generator, :menu_link_parameters_generator, :menu_schema_generator,
|
|
51
|
+
:menu_view_endpoint_parameters_generator, :menu_view_parameters_generator,
|
|
52
|
+
|
|
53
|
+
# Generator classes - resource
|
|
54
|
+
:action_resource_schema_generator, :global_resource_schema_generator,
|
|
55
|
+
:local_resource_schema_generator, :object_resource_schema_generator,
|
|
56
|
+
|
|
57
|
+
# Generator classes - view
|
|
58
|
+
:action_descriptor_generator, :array_box_parameters_generator, :box_options_generator,
|
|
59
|
+
:box_schema_generator, :field_descriptor_generator, :filter_descriptor_generator,
|
|
60
|
+
:gallery_box_parameters_generator, :global_view_schema_generator, :grid_item_box_parameters_generator,
|
|
61
|
+
:list_box_parameters_generator, :object_box_parameters_generator, :sort_descriptor_generator,
|
|
62
|
+
:tab_box_parameters_generator, :wizard_box_parameters_generator, :detail_view_parameters_generator,
|
|
63
|
+
:view_endpoint_parameters_generator, :list_view_parameters_generator, :view_schema_generator
|
|
64
|
+
|
|
65
|
+
def initialize
|
|
66
|
+
|
|
67
|
+
# No column is assumed to exist. Without a declaration the list is ordered by the primary
|
|
68
|
+
# key alone, which `Habarico::Controller#append_order_by_tiebreaker` appends anyway
|
|
69
|
+
# (HAB-915).
|
|
70
|
+
@default_sorting = nil
|
|
71
|
+
@force_sorting = false
|
|
72
|
+
@default_filter = {}
|
|
73
|
+
@includes = []
|
|
74
|
+
@scopes = []
|
|
75
|
+
|
|
76
|
+
# Fields and filters
|
|
77
|
+
@fields = []
|
|
78
|
+
@read_only_fields = []
|
|
79
|
+
@write_only_fields = []
|
|
80
|
+
@sorting_fields = []
|
|
81
|
+
@filters = []
|
|
82
|
+
|
|
83
|
+
# Aggregation
|
|
84
|
+
|
|
85
|
+
# Dashboard
|
|
86
|
+
|
|
87
|
+
# Views and actions
|
|
88
|
+
@views = %i[list show]
|
|
89
|
+
@actions = [:show]
|
|
90
|
+
|
|
91
|
+
# Search
|
|
92
|
+
@search_fields = []
|
|
93
|
+
|
|
94
|
+
# ***********************************************************************
|
|
95
|
+
# Permissions
|
|
96
|
+
# ***********************************************************************
|
|
97
|
+
|
|
98
|
+
@can_read = true
|
|
99
|
+
@can_create = false
|
|
100
|
+
@can_update = false
|
|
101
|
+
@can_delete = false
|
|
102
|
+
# Explicit opt-in for ID-based reads without `can_read`: `show` by ID and the id__in-only
|
|
103
|
+
# `index` mode. Cross-service reference resources (resolved via `ReferenceField`) need this.
|
|
104
|
+
@allow_read_by_id = false
|
|
105
|
+
|
|
106
|
+
# ***********************************************************************
|
|
107
|
+
# Generator classes
|
|
108
|
+
# ***********************************************************************
|
|
109
|
+
|
|
110
|
+
# Action
|
|
111
|
+
@link_action_parameters_generator = Habarico::LinkActionParametersGenerator
|
|
112
|
+
@resource_action_endpoint_parameters_generator = Habarico::ResourceActionEndpointParametersGenerator
|
|
113
|
+
@resource_action_parameters_generator = Habarico::ResourceActionParametersGenerator
|
|
114
|
+
@save_action_parameters_generator = Habarico::SaveActionParametersGenerator
|
|
115
|
+
@action_schema_generator = Habarico::ActionSchemaGenerator
|
|
116
|
+
@view_action_endpoint_parameters_generator = Habarico::ViewActionEndpointParametersGenerator
|
|
117
|
+
@view_action_parameters_generator = Habarico::ViewActionParametersGenerator
|
|
118
|
+
@confirm_dialog_properties_generator = Habarico::ConfirmDialogPropertiesGenerator
|
|
119
|
+
@global_resource_action_schema_generator = Habarico::GlobalResourceActionSchemaGenerator
|
|
120
|
+
@resource_action_schema_generator = Habarico::ResourceActionSchemaGenerator
|
|
121
|
+
@upload_images_action_parameters_generator = Habarico::UploadImagesActionParametersGenerator
|
|
122
|
+
|
|
123
|
+
# Endpoint
|
|
124
|
+
@dynamic_render_options_generator = Habarico::DynamicRenderOptionsGenerator
|
|
125
|
+
@method_schema_generator = Habarico::MethodSchemaGenerator
|
|
126
|
+
@endpoints_schema_generator = Habarico::EndpointsSchemaGenerator
|
|
127
|
+
@enum_type_generator = Habarico::EnumTypeGenerator
|
|
128
|
+
@field_options_generator = Habarico::FieldOptionsGenerator
|
|
129
|
+
@field_schema_generator = Habarico::FieldSchemaGenerator
|
|
130
|
+
@fields_schema_generator = Habarico::FieldsSchemaGenerator
|
|
131
|
+
@filter_schema_generator = Habarico::FilterSchemaGenerator
|
|
132
|
+
@filters_schema_generator = Habarico::FiltersSchemaGenerator
|
|
133
|
+
@number_field_options_generator = Habarico::NumberFieldOptionsGenerator
|
|
134
|
+
@phone_field_options_generator = Habarico::PhoneFieldOptionsGenerator
|
|
135
|
+
@relation_field_options_generator = Habarico::RelationFieldOptionsGenerator
|
|
136
|
+
@search_filter_schema_generator = Habarico::SearchFilterSchemaGenerator
|
|
137
|
+
|
|
138
|
+
# Aggregate
|
|
139
|
+
|
|
140
|
+
# Menu
|
|
141
|
+
@menu_group_schema_generator = Habarico::MenuGroupSchemaGenerator
|
|
142
|
+
@menu_link_parameters_generator = Habarico::MenuLinkParametersGenerator
|
|
143
|
+
@menu_schema_generator = Habarico::MenuSchemaGenerator
|
|
144
|
+
@menu_view_endpoint_parameters_generator = Habarico::MenuViewEndpointParametersGenerator
|
|
145
|
+
@menu_view_parameters_generator = Habarico::MenuViewParametersGenerator
|
|
146
|
+
|
|
147
|
+
# Resource
|
|
148
|
+
@action_resource_schema_generator = Habarico::ActionResourceSchemaGenerator
|
|
149
|
+
@global_resource_schema_generator = Habarico::GlobalResourceSchemaGenerator
|
|
150
|
+
@local_resource_schema_generator = Habarico::LocalResourceSchemaGenerator
|
|
151
|
+
@object_resource_schema_generator = Habarico::ObjectResourceSchemaGenerator
|
|
152
|
+
|
|
153
|
+
# View
|
|
154
|
+
@action_descriptor_generator = Habarico::ActionDescriptorGenerator
|
|
155
|
+
@array_box_parameters_generator = Habarico::ArrayBoxParametersGenerator
|
|
156
|
+
@box_options_generator = Habarico::BoxOptionsGenerator
|
|
157
|
+
@box_schema_generator = Habarico::BoxSchemaGenerator
|
|
158
|
+
@field_descriptor_generator = Habarico::FieldDescriptorGenerator
|
|
159
|
+
@filter_descriptor_generator = Habarico::FilterDescriptorGenerator
|
|
160
|
+
@gallery_box_parameters_generator = Habarico::GalleryBoxParametersGenerator
|
|
161
|
+
@global_view_schema_generator = Habarico::GlobalViewSchemaGenerator
|
|
162
|
+
@grid_item_box_parameters_generator = Habarico::GridItemBoxParametersGenerator
|
|
163
|
+
@list_box_parameters_generator = Habarico::ListBoxParametersGenerator
|
|
164
|
+
@object_box_parameters_generator = Habarico::ObjectBoxParametersGenerator
|
|
165
|
+
@sort_descriptor_generator = Habarico::SortDescriptorGenerator
|
|
166
|
+
@tab_box_parameters_generator = Habarico::TabBoxParametersGenerator
|
|
167
|
+
@wizard_box_parameters_generator = Habarico::WizardBoxParametersGenerator
|
|
168
|
+
@detail_view_parameters_generator = Habarico::DetailViewParametersGenerator
|
|
169
|
+
@view_endpoint_parameters_generator = Habarico::ViewEndpointParametersGenerator
|
|
170
|
+
@list_view_parameters_generator = Habarico::ListViewParametersGenerator
|
|
171
|
+
@view_schema_generator = Habarico::ViewSchemaGenerator
|
|
172
|
+
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def normalized_actions
|
|
176
|
+
@actions.map do |action|
|
|
177
|
+
if action.is_a?(String) || action.is_a?(Symbol)
|
|
178
|
+
case action.to_sym
|
|
179
|
+
when :show then Habarico::ShowAction.new
|
|
180
|
+
when :edit then Habarico::EditAction.new
|
|
181
|
+
when :create then Habarico::CreateAction.new
|
|
182
|
+
when :delete then Habarico::DeleteAction.new
|
|
183
|
+
end
|
|
184
|
+
elsif action.is_a?(Habarico::Action)
|
|
185
|
+
action
|
|
186
|
+
end
|
|
187
|
+
end.compact
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
def normalized_views
|
|
191
|
+
@views.map do |view|
|
|
192
|
+
if view.is_a?(String) || view.is_a?(Symbol)
|
|
193
|
+
case view.to_sym
|
|
194
|
+
when :list then Habarico::ListView.new
|
|
195
|
+
when :show then Habarico::ShowView.new
|
|
196
|
+
when :edit then Habarico::EditView.new
|
|
197
|
+
when :create then Habarico::CreateView.new
|
|
198
|
+
end
|
|
199
|
+
elsif view.is_a?(Habarico::View)
|
|
200
|
+
view
|
|
201
|
+
end
|
|
202
|
+
end.compact
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
end
|
|
206
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class FieldReference
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
attr_accessor :name, :label, :short_label, :help_text, :sortable, :sort_by, :read_only, :write_only, :default_value,
|
|
6
|
+
:show_query, :required_query, :text_align, :target, :action, :wrapper, :phone, :icons_key,
|
|
7
|
+
:resize_width, :crop_aspect_ratio, :parent, :ai_source_fields, :relation, :format, :max_size, :accept
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class MenuItem
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
attr_accessor :name, :label, :type, :icon, :color, :priority, :view_name, :view_mode, :dialog_width, :view_keep_linked_parent, :link_url, :link_target,
|
|
6
|
+
:reference, :reference_action_name
|
|
7
|
+
|
|
8
|
+
end
|
|
9
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Habarico
|
|
2
|
+
class ListView < View
|
|
3
|
+
include DefinitionModel
|
|
4
|
+
|
|
5
|
+
attr_accessor :filters
|
|
6
|
+
|
|
7
|
+
def initialize(params = {})
|
|
8
|
+
@type = :list
|
|
9
|
+
@name = 'list'
|
|
10
|
+
@is_detail = false
|
|
11
|
+
@endpoint_method = :get
|
|
12
|
+
@permission = :read
|
|
13
|
+
super(params)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
end
|
|
17
|
+
end
|