ecoportal-api-graphql 1.3.5 → 1.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +943 -477
- data/LICENSE +21 -21
- data/README.md +24 -24
- data/lib/ecoportal/api/common/graphql/auth_service.rb +115 -115
- data/lib/ecoportal/api/common/graphql/class_helpers.rb +46 -46
- data/lib/ecoportal/api/common/graphql/client.rb +69 -69
- data/lib/ecoportal/api/common/graphql/hash_helpers.rb +105 -105
- data/lib/ecoportal/api/common/graphql/http_client.rb +195 -145
- data/lib/ecoportal/api/common/graphql/model/as_input.rb +54 -51
- data/lib/ecoportal/api/common/graphql/model/diffable/classic_diff_service.rb +49 -47
- data/lib/ecoportal/api/common/graphql/model/diffable/diff_service.rb +188 -180
- data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff.rb +55 -55
- data/lib/ecoportal/api/common/graphql/model/diffable/hash_diff_nesting.rb +295 -242
- data/lib/ecoportal/api/common/graphql/model/diffable.rb +54 -54
- data/lib/ecoportal/api/common/graphql/model.rb +17 -17
- data/lib/ecoportal/api/common/graphql/patches.rb +1 -1
- data/lib/ecoportal/api/common/graphql/query_integration.rb +45 -45
- data/lib/ecoportal/api/common/graphql.rb +16 -16
- data/lib/ecoportal/api/common.graphql.rb +8 -8
- data/lib/ecoportal/api/graphql/base/action.rb +43 -43
- data/lib/ecoportal/api/graphql/base/action_category.rb +15 -15
- data/lib/ecoportal/api/graphql/base/ai_summary_version.rb +17 -0
- data/lib/ecoportal/api/graphql/base/contractor_entity/member_changes.rb +67 -67
- data/lib/ecoportal/api/graphql/base/contractor_entity.rb +24 -24
- data/lib/ecoportal/api/graphql/base/date_time.rb +12 -12
- data/lib/ecoportal/api/graphql/base/delta_result.rb +16 -0
- data/lib/ecoportal/api/graphql/base/field.rb +12 -12
- data/lib/ecoportal/api/graphql/base/file_attachment.rb +15 -15
- data/lib/ecoportal/api/graphql/base/file_container.rb +14 -14
- data/lib/ecoportal/api/graphql/base/force/binding.rb +19 -0
- data/lib/ecoportal/api/graphql/base/force/binding_collection.rb +62 -0
- data/lib/ecoportal/api/graphql/base/force/collection.rb +47 -0
- data/lib/ecoportal/api/graphql/base/force.rb +65 -0
- data/lib/ecoportal/api/graphql/base/kickstand/job.rb +17 -0
- data/lib/ecoportal/api/graphql/base/kickstand/workflow.rb +18 -0
- data/lib/ecoportal/api/graphql/base/kickstand.rb +13 -0
- data/lib/ecoportal/api/graphql/base/location_classification_type.rb +15 -15
- data/lib/ecoportal/api/graphql/base/location_node.rb +14 -14
- data/lib/ecoportal/api/graphql/base/location_structure/draft/structure.rb +37 -37
- data/lib/ecoportal/api/graphql/base/location_structure/draft.rb +93 -93
- data/lib/ecoportal/api/graphql/base/location_structure.rb +27 -27
- data/lib/ecoportal/api/graphql/base/organization.rb +15 -15
- data/lib/ecoportal/api/graphql/base/page/basic.rb +38 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/actions_list.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/ai_summary.rb +18 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/checklist.rb +29 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/collection.rb +119 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/contractor_entities.rb +28 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/cross_reference.rb +54 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/date_field.rb +23 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/file_field.rb +25 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/gauge.rb +19 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/geo.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/image_gallery.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/law.rb +8 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/mailbox.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/number.rb +20 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/people.rb +35 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/plain_text.rb +17 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/rich_text.rb +26 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/select.rb +41 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/signature.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/smart_fill.rb +17 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/table.rb +9 -0
- data/lib/ecoportal/api/graphql/base/page/data_field/tag_field.rb +21 -0
- data/lib/ecoportal/api/graphql/base/page/data_field.rb +137 -12
- data/lib/ecoportal/api/graphql/base/page/phased/stage.rb +68 -14
- data/lib/ecoportal/api/graphql/base/page/phased.rb +15 -14
- data/lib/ecoportal/api/graphql/base/page/section.rb +48 -12
- data/lib/ecoportal/api/graphql/base/page/section_collection.rb +85 -0
- data/lib/ecoportal/api/graphql/base/page/task.rb +24 -0
- data/lib/ecoportal/api/graphql/base/page.rb +17 -14
- data/lib/ecoportal/api/graphql/base/page_info.rb +12 -12
- data/lib/ecoportal/api/graphql/base/pages_workflow/action_type_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/callback_type.rb +28 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_change.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_change_message.rb +15 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_es_change.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/command_interface.rb +36 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/email_config.rb +18 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/escalation_level.rb +19 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/in_system_config.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/mailbox_field_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operation_interface.rb +39 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/assign_to.rb +27 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/create_page.rb +21 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/operations/send_notification.rb +30 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/people_field_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/recipient_config.rb +34 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/register_field.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/task_config_selection.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/time_delay_config.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/trigger_interface.rb +26 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/triggers/conditional_logic.rb +17 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow/user_selection.rb +16 -0
- data/lib/ecoportal/api/graphql/base/pages_workflow.rb +35 -0
- data/lib/ecoportal/api/graphql/base/person_member.rb +22 -22
- data/lib/ecoportal/api/graphql/base/preset_view.rb +17 -0
- data/lib/ecoportal/api/graphql/base/preview_page.rb +23 -0
- data/lib/ecoportal/api/graphql/base/register.rb +18 -0
- data/lib/ecoportal/api/graphql/base/resource.rb +13 -13
- data/lib/ecoportal/api/graphql/base/template.rb +35 -0
- data/lib/ecoportal/api/graphql/base.rb +37 -24
- data/lib/ecoportal/api/graphql/builder/action.rb +41 -41
- data/lib/ecoportal/api/graphql/builder/contractor_entity.rb +41 -41
- data/lib/ecoportal/api/graphql/builder/kickstand.rb +73 -0
- data/lib/ecoportal/api/graphql/builder/location_structure/draft.rb +64 -64
- data/lib/ecoportal/api/graphql/builder/location_structure.rb +40 -40
- data/lib/ecoportal/api/graphql/builder/page.rb +210 -41
- data/lib/ecoportal/api/graphql/builder/register/preset_view.rb +84 -0
- data/lib/ecoportal/api/graphql/builder/register.rb +49 -41
- data/lib/ecoportal/api/graphql/builder/template.rb +80 -0
- data/lib/ecoportal/api/graphql/builder/template_builder.rb +174 -0
- data/lib/ecoportal/api/graphql/builder.rb +17 -14
- data/lib/ecoportal/api/graphql/compat/filter_translator.rb +142 -0
- data/lib/ecoportal/api/graphql/compat/page_reference.rb +23 -0
- data/lib/ecoportal/api/graphql/compat/pages.rb +212 -0
- data/lib/ecoportal/api/graphql/compat/registers.rb +84 -0
- data/lib/ecoportal/api/graphql/compat/response.rb +35 -0
- data/lib/ecoportal/api/graphql/compat/search_results.rb +33 -0
- data/lib/ecoportal/api/graphql/compat/stage_collection.rb +70 -0
- data/lib/ecoportal/api/graphql/compat/stage_view.rb +76 -0
- data/lib/ecoportal/api/graphql/compat.rb +17 -0
- data/lib/ecoportal/api/graphql/concerns/data_field_access.rb +71 -0
- data/lib/ecoportal/api/graphql/concerns/deprecation.rb +20 -0
- data/lib/ecoportal/api/graphql/concerns/fragment_definitions.rb +68 -75
- data/lib/ecoportal/api/graphql/concerns/page_compat.rb +51 -0
- data/lib/ecoportal/api/graphql/concerns/snake_camel_access.rb +60 -0
- data/lib/ecoportal/api/graphql/concerns.rb +14 -10
- data/lib/ecoportal/api/graphql/connection/action.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/action_category.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/contractor_entity.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/page.rb +11 -0
- data/lib/ecoportal/api/graphql/connection/pages_workflow_command.rb +13 -0
- data/lib/ecoportal/api/graphql/connection/person_member.rb +11 -11
- data/lib/ecoportal/api/graphql/connection/preset_view.rb +11 -0
- data/lib/ecoportal/api/graphql/connection/preview_page.rb +11 -0
- data/lib/ecoportal/api/graphql/connection.rb +17 -13
- data/lib/ecoportal/api/graphql/diff/change.rb +59 -0
- data/lib/ecoportal/api/graphql/diff/command_synthesizer.rb +329 -0
- data/lib/ecoportal/api/graphql/diff/cross_object_diff.rb +165 -0
- data/lib/ecoportal/api/graphql/diff/deploy.rb +121 -0
- data/lib/ecoportal/api/graphql/diff/id_resolver.rb +64 -0
- data/lib/ecoportal/api/graphql/diff/pairing/candidate.rb +32 -0
- data/lib/ecoportal/api/graphql/diff/pairing/engine.rb +173 -0
- data/lib/ecoportal/api/graphql/diff/pairing/ledger.rb +119 -0
- data/lib/ecoportal/api/graphql/diff/pairing/signals.rb +104 -0
- data/lib/ecoportal/api/graphql/diff/strategy.rb +113 -0
- data/lib/ecoportal/api/graphql/diff/version_diff.rb +332 -0
- data/lib/ecoportal/api/graphql/diff.rb +34 -0
- data/lib/ecoportal/api/graphql/error/locations_error/fetch_nested.rb +51 -51
- data/lib/ecoportal/api/graphql/error/locations_error.rb +28 -28
- data/lib/ecoportal/api/graphql/error/locations_validation_error.rb +20 -20
- data/lib/ecoportal/api/graphql/error/validation_errors.rb +28 -28
- data/lib/ecoportal/api/graphql/error.rb +12 -12
- data/lib/ecoportal/api/graphql/file_upload/client.rb +192 -0
- data/lib/ecoportal/api/graphql/file_upload.rb +10 -0
- data/lib/ecoportal/api/graphql/fragment/action.rb +65 -65
- data/lib/ecoportal/api/graphql/fragment/action_category.rb +17 -17
- data/lib/ecoportal/api/graphql/fragment/contractor_entity.rb +20 -20
- data/lib/ecoportal/api/graphql/fragment/field_configuration.rb +38 -0
- data/lib/ecoportal/api/graphql/fragment/force.rb +34 -0
- data/lib/ecoportal/api/graphql/fragment/location_draft.rb +53 -53
- data/lib/ecoportal/api/graphql/fragment/location_node.rb +26 -26
- data/lib/ecoportal/api/graphql/fragment/locations_error.rb +19 -19
- data/lib/ecoportal/api/graphql/fragment/page.rb +85 -0
- data/lib/ecoportal/api/graphql/fragment/page_task.rb +39 -0
- data/lib/ecoportal/api/graphql/fragment/pages/common_page_union.rb +396 -0
- data/lib/ecoportal/api/graphql/fragment/pages.rb +15 -0
- data/lib/ecoportal/api/graphql/fragment/pages_workflow.rb +172 -0
- data/lib/ecoportal/api/graphql/fragment/pagination.rb +17 -17
- data/lib/ecoportal/api/graphql/fragment/template.rb +51 -0
- data/lib/ecoportal/api/graphql/fragment.rb +40 -27
- data/lib/ecoportal/api/graphql/helpers/locations_tree.rb +41 -41
- data/lib/ecoportal/api/graphql/helpers.rb +10 -10
- data/lib/ecoportal/api/graphql/input/action/archive.rb +14 -14
- data/lib/ecoportal/api/graphql/input/action/create.rb +13 -13
- data/lib/ecoportal/api/graphql/input/action/update.rb +14 -14
- data/lib/ecoportal/api/graphql/input/action.rb +14 -14
- data/lib/ecoportal/api/graphql/input/contractor_entity/create.rb +14 -14
- data/lib/ecoportal/api/graphql/input/contractor_entity/destroy.rb +13 -13
- data/lib/ecoportal/api/graphql/input/contractor_entity/update.rb +41 -16
- data/lib/ecoportal/api/graphql/input/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/input/delta_input.rb +16 -0
- data/lib/ecoportal/api/graphql/input/id_diff.rb +11 -11
- data/lib/ecoportal/api/graphql/input/location_structure/apply_commands.rb +47 -47
- data/lib/ecoportal/api/graphql/input/location_structure/archive_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/delete_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/draft/add_commands.rb +49 -49
- data/lib/ecoportal/api/graphql/input/location_structure/draft/create.rb +15 -15
- data/lib/ecoportal/api/graphql/input/location_structure/draft/delete.rb +15 -15
- data/lib/ecoportal/api/graphql/input/location_structure/draft/drop_bad_commands.rb +16 -16
- data/lib/ecoportal/api/graphql/input/location_structure/draft/publish.rb +16 -16
- data/lib/ecoportal/api/graphql/input/location_structure/draft.rb +19 -19
- data/lib/ecoportal/api/graphql/input/location_structure/insert_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/move_command.rb +14 -14
- data/lib/ecoportal/api/graphql/input/location_structure/reorder_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/unarchive_command.rb +13 -13
- data/lib/ecoportal/api/graphql/input/location_structure/update_command.rb +27 -27
- data/lib/ecoportal/api/graphql/input/location_structure.rb +20 -20
- data/lib/ecoportal/api/graphql/input/page/archive.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/build_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/create_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/create_from_template.rb +18 -0
- data/lib/ecoportal/api/graphql/input/page/delete_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/publish_draft.rb +13 -0
- data/lib/ecoportal/api/graphql/input/page/review_task.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/unarchive.rb +14 -0
- data/lib/ecoportal/api/graphql/input/page/update.rb +140 -0
- data/lib/ecoportal/api/graphql/input/page.rb +26 -0
- data/lib/ecoportal/api/graphql/input/preset_view/create.rb +18 -0
- data/lib/ecoportal/api/graphql/input/preset_view/permission.rb +16 -0
- data/lib/ecoportal/api/graphql/input/preset_view/update.rb +16 -0
- data/lib/ecoportal/api/graphql/input/preset_view.rb +14 -0
- data/lib/ecoportal/api/graphql/input/register/create.rb +18 -0
- data/lib/ecoportal/api/graphql/input/register/update.rb +15 -0
- data/lib/ecoportal/api/graphql/input/register.rb +13 -0
- data/lib/ecoportal/api/graphql/input/search.rb +13 -13
- data/lib/ecoportal/api/graphql/input/search_conf/ai_generator.rb +234 -0
- data/lib/ecoportal/api/graphql/input/search_conf.rb +436 -0
- data/lib/ecoportal/api/graphql/input/search_filter.rb +12 -12
- data/lib/ecoportal/api/graphql/input/search_sorter.rb +11 -11
- data/lib/ecoportal/api/graphql/input/variable_binding.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_action_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_comment_tagging_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_field.rb +27 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_gauge_field_stop.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_field_config.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_action_type.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_filter.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_people_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_task_config.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_recipient_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_scheduled_callback_action.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_select_field_option.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_stage_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_task_assignment_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/add_workflow_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/collapse_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_creator_permissions.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_field_configuration.rb +21 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_gauge_field_stop.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_field_config.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page.rb +28 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_page_creator_permissions.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_reminder.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_required_sign_offs.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_comment_tagging.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_restrict_task_assignment.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_scheduled_callback.rb +22 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_section_header.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_select_field_option.rb +19 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_task_due.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/edit_trigger.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/expand_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/contractor_entities.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/cross_reference.rb +23 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/date.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/gauge.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/image_gallery.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/location_field.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/people.rb +24 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/plain_text.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/rich_text.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/select.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/signature.rb +20 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/field_config/table.rb +25 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/move_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/move_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_action_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_binding.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_comment_tagging_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_default_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_force.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_gauge_field_stop.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_field_config.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_linked_helper.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_direct_strategy_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_operation_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_action_type.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_filter.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_people_field.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_task_config.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_recipient_user.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_scheduled_callback.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_select_field_option.rb +17 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_stage_tag.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_strategy.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_assignment_user_group.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_due.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/remove_task_priority_level.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_forces.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command/reorder_section.rb +18 -0
- data/lib/ecoportal/api/graphql/input/workflow_command.rb +251 -0
- data/lib/ecoportal/api/graphql/input.rb +24 -16
- data/lib/ecoportal/api/graphql/interface/base_page.rb +100 -58
- data/lib/ecoportal/api/graphql/interface/location_structure/command.rb +30 -30
- data/lib/ecoportal/api/graphql/interface/location_structure/node.rb +43 -43
- data/lib/ecoportal/api/graphql/interface/location_structure/nodes.rb +27 -28
- data/lib/ecoportal/api/graphql/interface/location_structure.rb +14 -14
- data/lib/ecoportal/api/graphql/interface.rb +11 -11
- data/lib/ecoportal/api/graphql/logic/base_model.rb +15 -13
- data/lib/ecoportal/api/graphql/logic/base_query.rb +193 -150
- data/lib/ecoportal/api/graphql/logic/connection.rb +34 -34
- data/lib/ecoportal/api/graphql/logic/input.rb +26 -11
- data/lib/ecoportal/api/graphql/logic/mutation.rb +59 -59
- data/lib/ecoportal/api/graphql/logic/payload.rb +42 -42
- data/lib/ecoportal/api/graphql/logic/query.rb +23 -23
- data/lib/ecoportal/api/graphql/logic/query_array.rb +30 -30
- data/lib/ecoportal/api/graphql/logic/query_connection.rb +48 -48
- data/lib/ecoportal/api/graphql/logic.rb +18 -18
- data/lib/ecoportal/api/graphql/model/account.rb +15 -15
- data/lib/ecoportal/api/graphql/model/action.rb +22 -22
- data/lib/ecoportal/api/graphql/model/ai_summary_version.rb +10 -0
- data/lib/ecoportal/api/graphql/model/contractor_entity.rb +12 -12
- data/lib/ecoportal/api/graphql/model/field.rb +10 -10
- data/lib/ecoportal/api/graphql/model/file_attachment.rb +10 -10
- data/lib/ecoportal/api/graphql/model/file_container.rb +11 -11
- data/lib/ecoportal/api/graphql/model/location_node.rb +14 -14
- data/lib/ecoportal/api/graphql/model/location_structure/draft/structure.rb +15 -15
- data/lib/ecoportal/api/graphql/model/location_structure/draft.rb +15 -15
- data/lib/ecoportal/api/graphql/model/location_structure.rb +16 -16
- data/lib/ecoportal/api/graphql/model/organization.rb +65 -55
- data/lib/ecoportal/api/graphql/model/page/basic.rb +14 -0
- data/lib/ecoportal/api/graphql/model/page/data_field.rb +12 -12
- data/lib/ecoportal/api/graphql/model/page/phased/stage.rb +14 -14
- data/lib/ecoportal/api/graphql/model/page/phased.rb +82 -20
- data/lib/ecoportal/api/graphql/model/page/section.rb +12 -12
- data/lib/ecoportal/api/graphql/model/page/task.rb +16 -0
- data/lib/ecoportal/api/graphql/model/page.rb +16 -14
- data/lib/ecoportal/api/graphql/model/page_union.rb +21 -0
- data/lib/ecoportal/api/graphql/model/pages_workflow.rb +20 -0
- data/lib/ecoportal/api/graphql/model/person_member.rb +15 -15
- data/lib/ecoportal/api/graphql/model/preset_view.rb +10 -0
- data/lib/ecoportal/api/graphql/model/preview_page.rb +10 -0
- data/lib/ecoportal/api/graphql/model/register.rb +10 -0
- data/lib/ecoportal/api/graphql/model/resource.rb +13 -13
- data/lib/ecoportal/api/graphql/model/template.rb +15 -0
- data/lib/ecoportal/api/graphql/model/user.rb +14 -14
- data/lib/ecoportal/api/graphql/model.rb +32 -22
- data/lib/ecoportal/api/graphql/mutation/action/archive.rb +41 -41
- data/lib/ecoportal/api/graphql/mutation/action/create.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/action/update.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/action.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/ai_summary/generate.rb +45 -0
- data/lib/ecoportal/api/graphql/mutation/ai_summary/submit_feedback.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/ai_summary.rb +13 -0
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/create.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/destroy.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity/update.rb +40 -40
- data/lib/ecoportal/api/graphql/mutation/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/mutation/kickstand/bulk_update_jobs.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/bulk_update_workflows.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/fail_job.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/fail_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/start_job.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/start_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand/stop_workflow.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/kickstand.rb +18 -0
- data/lib/ecoportal/api/graphql/mutation/location_structure/apply_commands.rb +54 -54
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/add_commands.rb +55 -55
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/create.rb +54 -54
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/delete.rb +43 -43
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/drop_bad_commands.rb +56 -56
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft/publish.rb +66 -66
- data/lib/ecoportal/api/graphql/mutation/location_structure/draft.rb +18 -18
- data/lib/ecoportal/api/graphql/mutation/location_structure.rb +13 -13
- data/lib/ecoportal/api/graphql/mutation/page/approve_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/archive.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/batch_update_review_task.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/build_from_template.rb +50 -0
- data/lib/ecoportal/api/graphql/mutation/page/create_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/create_from_template.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/page/delete_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/execute_force_commands.rb +69 -0
- data/lib/ecoportal/api/graphql/mutation/page/execute_workflow_commands.rb +52 -0
- data/lib/ecoportal/api/graphql/mutation/page/publish_draft.rb +38 -0
- data/lib/ecoportal/api/graphql/mutation/page/reject_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/restart_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/unarchive.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/undo_review_task.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/update.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/page/update_variable_bindings.rb +44 -0
- data/lib/ecoportal/api/graphql/mutation/page.rb +28 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/create.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/destroy.rb +34 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/permission.rb +37 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view/update.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/preset_view.rb +15 -0
- data/lib/ecoportal/api/graphql/mutation/register/create.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register/destroy.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register/update.rb +35 -0
- data/lib/ecoportal/api/graphql/mutation/register.rb +14 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill/generate.rb +36 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill/submit_feedback.rb +40 -0
- data/lib/ecoportal/api/graphql/mutation/smart_fill.rb +13 -0
- data/lib/ecoportal/api/graphql/mutation/template/create.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/create_related_page.rb +46 -0
- data/lib/ecoportal/api/graphql/mutation/template/destroy_related_page.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template/publish.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/unpublish.rb +39 -0
- data/lib/ecoportal/api/graphql/mutation/template/update.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template/update_information.rb +43 -0
- data/lib/ecoportal/api/graphql/mutation/template.rb +18 -0
- data/lib/ecoportal/api/graphql/mutation.rb +20 -12
- data/lib/ecoportal/api/graphql/payload/action/archive.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action/create.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action/update.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/action.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/ai_summary_generate.rb +12 -0
- data/lib/ecoportal/api/graphql/payload/contractor_entity/create.rb +13 -13
- data/lib/ecoportal/api/graphql/payload/contractor_entity/destroy.rb +12 -12
- data/lib/ecoportal/api/graphql/payload/contractor_entity/update.rb +12 -12
- data/lib/ecoportal/api/graphql/payload/contractor_entity.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/execute_workflow_commands.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/force_commands.rb +31 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_jobs.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/bulk_update_workflows.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/job.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/kickstand/workflow.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/kickstand.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/location_structure/apply_commands.rb +51 -51
- data/lib/ecoportal/api/graphql/payload/location_structure/command_execution_result.rb +50 -50
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/add_commands.rb +30 -30
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/create.rb +33 -34
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/delete.rb +30 -30
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/drop_bad_commands.rb +43 -43
- data/lib/ecoportal/api/graphql/payload/location_structure/draft/publish.rb +63 -63
- data/lib/ecoportal/api/graphql/payload/location_structure/draft.rb +18 -18
- data/lib/ecoportal/api/graphql/payload/location_structure.rb +14 -14
- data/lib/ecoportal/api/graphql/payload/ok_payload.rb +36 -0
- data/lib/ecoportal/api/graphql/payload/page/archive.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/build_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/create_from_template.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/draft.rb +26 -0
- data/lib/ecoportal/api/graphql/payload/page/review_task.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/review_task_batch.rb +23 -0
- data/lib/ecoportal/api/graphql/payload/page/unarchive.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/update.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page/update_variable_bindings.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/page.rb +20 -0
- data/lib/ecoportal/api/graphql/payload/preset_view.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/register.rb +15 -0
- data/lib/ecoportal/api/graphql/payload/template/create.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/create_related_page.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/destroy_related_page.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/publish.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/unpublish.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/update.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template/update_information.rb +13 -0
- data/lib/ecoportal/api/graphql/payload/template.rb +18 -0
- data/lib/ecoportal/api/graphql/payload.rb +23 -12
- data/lib/ecoportal/api/graphql/query/action.rb +33 -33
- data/lib/ecoportal/api/graphql/query/action_categories.rb +53 -53
- data/lib/ecoportal/api/graphql/query/actions.rb +43 -43
- data/lib/ecoportal/api/graphql/query/contractor_entities.rb +53 -53
- data/lib/ecoportal/api/graphql/query/file_upload_signature.rb +76 -0
- data/lib/ecoportal/api/graphql/query/location_classifications.rb +39 -39
- data/lib/ecoportal/api/graphql/query/location_structure/draft.rb +62 -62
- data/lib/ecoportal/api/graphql/query/location_structure.rb +61 -61
- data/lib/ecoportal/api/graphql/query/location_structures.rb +57 -57
- data/lib/ecoportal/api/graphql/query/page.rb +45 -0
- data/lib/ecoportal/api/graphql/query/page_delta.rb +47 -0
- data/lib/ecoportal/api/graphql/query/page_with_forces.rb +49 -0
- data/lib/ecoportal/api/graphql/query/pages.rb +59 -0
- data/lib/ecoportal/api/graphql/query/pages_workflow_commands.rb +65 -0
- data/lib/ecoportal/api/graphql/query/register_preset_views.rb +78 -0
- data/lib/ecoportal/api/graphql/query/register_preview_pages.rb +83 -0
- data/lib/ecoportal/api/graphql/query/templates.rb +53 -0
- data/lib/ecoportal/api/graphql/query.rb +27 -16
- data/lib/ecoportal/api/graphql.rb +143 -80
- data/lib/ecoportal/api/graphql_version.rb +5 -5
- data/lib/ecoportal/api-graphql.rb +10 -10
- metadata +328 -25
- data/.gitignore +0 -24
- data/.markdownlint.json +0 -4
- data/.rspec +0 -3
- data/.rubocop.yml +0 -97
- data/.ruby-version +0 -1
- data/.yardopts +0 -10
- data/Gemfile +0 -6
- data/Rakefile +0 -38
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/bin/setup.ps1 +0 -6
- data/ecoportal-api-graphql.gemspec +0 -40
- data/tests/actions_get.rb +0 -7
- data/tests/contractor_entities_get.rb +0 -20
- data/tests/contractor_entity_create.rb +0 -19
- data/tests/contractor_entity_udpate.rb +0 -20
- data/tests/loc_structure_get.rb +0 -11
- data/tests/loc_structure_update.rb +0 -51
- data/tests/loc_structures_get.rb +0 -15
- data/tests/local_libs.rb +0 -20
|
@@ -1,41 +1,210 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Builder
|
|
5
|
-
class Page
|
|
6
|
-
attr_reader :client
|
|
7
|
-
|
|
8
|
-
def initialize(client)
|
|
9
|
-
@client = client
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
end
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Builder
|
|
5
|
+
class Page
|
|
6
|
+
attr_reader :client
|
|
7
|
+
|
|
8
|
+
def initialize(client)
|
|
9
|
+
@client = client
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def update(**kargs, &block)
|
|
13
|
+
updateMutation.query(**kargs, &block)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# Archive a page. With `clear_external_id: true`, first BLANKS the page's externalId
|
|
17
|
+
# (a separate updatePage) before archiving, so the freed id can be reused. Use this
|
|
18
|
+
# ONLY when archiving a failed / duplicate creation. Default false: a genuine
|
|
19
|
+
# historical archive KEEPS its externalId — the integration pairing key, unique per
|
|
20
|
+
# org per model (see ecoPortal_architecture/02_data_model.md).
|
|
21
|
+
#
|
|
22
|
+
# Implemented as two serial mutations (blank-then-archive) reusing the existing
|
|
23
|
+
# update/archive mutations. (The equivalent atomic single-document composite —
|
|
24
|
+
# `updatePage(page:{externalId:null}) @include(if:$blank) archivePage` — is a possible
|
|
25
|
+
# future refinement if blank-then-archive atomicity is ever required.)
|
|
26
|
+
def archive(clear_external_id: false, **kargs, &block)
|
|
27
|
+
blank_external_id(kargs) if clear_external_id
|
|
28
|
+
archiveMutation.query(**kargs, &block)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def unarchive(**kargs, &block)
|
|
32
|
+
unarchiveMutation.query(**kargs, &block)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def build_from_template(**kargs, &block)
|
|
36
|
+
buildFromTemplateMutation.query(**kargs, &block)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def create_from_template(**kargs, &block)
|
|
40
|
+
createFromTemplateMutation.query(**kargs, &block)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def create_draft(**kargs, &block)
|
|
44
|
+
createDraftMutation.query(**kargs, &block)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def delete_draft(**kargs, &block)
|
|
48
|
+
deleteDraftMutation.query(**kargs, &block)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def publish_draft(**kargs, &block)
|
|
52
|
+
publishDraftMutation.query(**kargs, &block)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def approve_review_task(**kargs, &block)
|
|
56
|
+
approveReviewTaskMutation.query(**kargs, &block)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def reject_review_task(**kargs, &block)
|
|
60
|
+
rejectReviewTaskMutation.query(**kargs, &block)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def restart_review_task(**kargs, &block)
|
|
64
|
+
restartReviewTaskMutation.query(**kargs, &block)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def undo_review_task(**kargs, &block)
|
|
68
|
+
undoReviewTaskMutation.query(**kargs, &block)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def batch_update_review_task(**kargs, &block)
|
|
72
|
+
batchUpdateReviewTaskMutation.query(**kargs, &block)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Executes workflow commands against a page or template.
|
|
76
|
+
# @param model [Base::Page::*] the page/template (must have id and patchVer)
|
|
77
|
+
# @param commands [Array<Hash>] array of WorkflowCommandInput hashes
|
|
78
|
+
# @param patch_ver [Integer] override patchVer (defaults to model.patchVer)
|
|
79
|
+
def execute_workflow_commands(model, commands:, patch_ver: model.patchVer, &block)
|
|
80
|
+
executeWorkflowCommandsMutation.query(
|
|
81
|
+
id: model.id,
|
|
82
|
+
patch_ver: patch_ver,
|
|
83
|
+
commands: commands,
|
|
84
|
+
&block
|
|
85
|
+
)
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# @deprecated Use execute_workflow_commands instead.
|
|
89
|
+
def execute_force_commands(id:, patch_ver:, commands:, &block)
|
|
90
|
+
Concerns::Deprecation.warn_once(:execute_force_commands,
|
|
91
|
+
'Use execute_workflow_commands(model, commands: [...]) instead')
|
|
92
|
+
executeForceMutation.query(id: id, patch_ver: patch_ver, commands: commands, &block)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def update_variable_bindings(**kargs, &block)
|
|
96
|
+
updateVariableBindingsMutation.query(**kargs, &block)
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
# AI field mutations
|
|
100
|
+
def generate_ai_summary(**kargs, &block)
|
|
101
|
+
generateAiSummaryMutation.query(**kargs, &block)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
def submit_ai_summary_feedback(**kargs, &block)
|
|
105
|
+
submitAiSummaryFeedbackMutation.query(**kargs, &block)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def generate_smart_fill(**kargs, &block)
|
|
109
|
+
generateSmartFillMutation.query(**kargs, &block)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
def submit_smart_fill_feedback(**kargs, &block)
|
|
113
|
+
submitSmartFillFeedbackMutation.query(**kargs, &block)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
private
|
|
117
|
+
|
|
118
|
+
# Blank the page's externalId via updatePage (no patchVer needed — cleanup path).
|
|
119
|
+
# Reads the id from the archive kargs (input: { id: }).
|
|
120
|
+
def blank_external_id(kargs)
|
|
121
|
+
id = kargs.dig(:input, :id) || kargs[:id]
|
|
122
|
+
return unless id
|
|
123
|
+
|
|
124
|
+
updateMutation.query(input: { id: id, page: { externalId: nil } })
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def updateMutation
|
|
128
|
+
Mutation::Page::Update.new(client)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def archiveMutation
|
|
132
|
+
Mutation::Page::Archive.new(client)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def unarchiveMutation
|
|
136
|
+
Mutation::Page::Unarchive.new(client)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def buildFromTemplateMutation
|
|
140
|
+
Mutation::Page::BuildFromTemplate.new(client)
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def createFromTemplateMutation
|
|
144
|
+
Mutation::Page::CreateFromTemplate.new(client)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def createDraftMutation
|
|
148
|
+
Mutation::Page::CreateDraft.new(client)
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def deleteDraftMutation
|
|
152
|
+
Mutation::Page::DeleteDraft.new(client)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def publishDraftMutation
|
|
156
|
+
Mutation::Page::PublishDraft.new(client)
|
|
157
|
+
end
|
|
158
|
+
|
|
159
|
+
def approveReviewTaskMutation
|
|
160
|
+
Mutation::Page::ApproveReviewTask.new(client)
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def rejectReviewTaskMutation
|
|
164
|
+
Mutation::Page::RejectReviewTask.new(client)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def restartReviewTaskMutation
|
|
168
|
+
Mutation::Page::RestartReviewTask.new(client)
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
def undoReviewTaskMutation
|
|
172
|
+
Mutation::Page::UndoReviewTask.new(client)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def batchUpdateReviewTaskMutation
|
|
176
|
+
Mutation::Page::BatchUpdateReviewTask.new(client)
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
def generateAiSummaryMutation
|
|
180
|
+
Mutation::AiSummary::Generate.new(client)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
def submitAiSummaryFeedbackMutation
|
|
184
|
+
Mutation::AiSummary::SubmitFeedback.new(client)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def generateSmartFillMutation
|
|
188
|
+
Mutation::SmartFill::Generate.new(client)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def submitSmartFillFeedbackMutation
|
|
192
|
+
Mutation::SmartFill::SubmitFeedback.new(client)
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
def executeWorkflowCommandsMutation
|
|
196
|
+
Mutation::Page::ExecuteWorkflowCommands.new(client)
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
def executeForceMutation
|
|
200
|
+
Mutation::Page::ExecuteForceCommands.new(client)
|
|
201
|
+
end
|
|
202
|
+
|
|
203
|
+
def updateVariableBindingsMutation
|
|
204
|
+
Mutation::Page::UpdateVariableBindings.new(client)
|
|
205
|
+
end
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Builder
|
|
5
|
+
class Register
|
|
6
|
+
# Sub-builder for preset view operations within a register context.
|
|
7
|
+
# Access via: api.register.preset_view
|
|
8
|
+
#
|
|
9
|
+
# Usage:
|
|
10
|
+
# pv = api.register.preset_view
|
|
11
|
+
#
|
|
12
|
+
# # List preset views for a register (find IDs for presetViewId in searches)
|
|
13
|
+
# views = pv.list('REG_ID')
|
|
14
|
+
# views.map { |v| "#{v.name} (#{v.id}) global=#{v.global?}" }
|
|
15
|
+
#
|
|
16
|
+
# # Create a preset view
|
|
17
|
+
# pv.create(input: {
|
|
18
|
+
# registerId: 'REG_ID',
|
|
19
|
+
# name: 'Active Pages',
|
|
20
|
+
# customPresetView: true,
|
|
21
|
+
# fieldConfigs: [{ key: 'name', weight: 0 }, { key: 'state', weight: 1 }],
|
|
22
|
+
# sorter: { key: 'created_at', direction: 'desc' }
|
|
23
|
+
# })
|
|
24
|
+
#
|
|
25
|
+
# # Share with a user (view access)
|
|
26
|
+
# pv.permission(input: {
|
|
27
|
+
# id: 'VIEW_ID',
|
|
28
|
+
# permissions: [{ level: 'view', to: { userId: 'USER_ID' } }]
|
|
29
|
+
# })
|
|
30
|
+
class PresetView
|
|
31
|
+
attr_reader :client
|
|
32
|
+
|
|
33
|
+
def initialize(client)
|
|
34
|
+
@client = client
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# List all preset views for a register. Returns an array of PresetView objects.
|
|
38
|
+
def list(register_id, search_conf: nil, &block)
|
|
39
|
+
Query::RegisterPresetViews.new(client).query(
|
|
40
|
+
registerId: register_id,
|
|
41
|
+
searchConf: search_conf,
|
|
42
|
+
&block
|
|
43
|
+
).nodes
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def create(**kargs, &block)
|
|
47
|
+
createMutation.query(**kargs, &block)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def update(**kargs, &block)
|
|
51
|
+
updateMutation.query(**kargs, &block)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def permission(**kargs, &block)
|
|
55
|
+
permissionMutation.query(**kargs, &block)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def destroy(**kargs, &block)
|
|
59
|
+
destroyMutation.query(**kargs, &block)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
63
|
+
|
|
64
|
+
def createMutation
|
|
65
|
+
Mutation::PresetView::Create.new(client)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def updateMutation
|
|
69
|
+
Mutation::PresetView::Update.new(client)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def permissionMutation
|
|
73
|
+
Mutation::PresetView::Permission.new(client)
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def destroyMutation
|
|
77
|
+
Mutation::PresetView::Destroy.new(client)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
@@ -1,41 +1,49 @@
|
|
|
1
|
-
module Ecoportal
|
|
2
|
-
module API
|
|
3
|
-
class GraphQL
|
|
4
|
-
module Builder
|
|
5
|
-
class Register
|
|
6
|
-
attr_reader :client
|
|
7
|
-
|
|
8
|
-
def initialize(client)
|
|
9
|
-
@client = client
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Builder
|
|
5
|
+
class Register
|
|
6
|
+
attr_reader :client
|
|
7
|
+
|
|
8
|
+
def initialize(client)
|
|
9
|
+
@client = client
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# Register CRUD
|
|
13
|
+
def create(**kargs, &block)
|
|
14
|
+
createMutation.query(**kargs, &block)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def update(**kargs, &block)
|
|
18
|
+
updateMutation.query(**kargs, &block)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def destroy(**kargs, &block)
|
|
22
|
+
destroyMutation.query(**kargs, &block)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Preset view sub-builder — list, create, update, permission, destroy
|
|
26
|
+
def preset_view
|
|
27
|
+
Register::PresetView.new(client)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def createMutation
|
|
33
|
+
Mutation::Register::Create.new(client)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def updateMutation
|
|
37
|
+
Mutation::Register::Update.new(client)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def destroyMutation
|
|
41
|
+
Mutation::Register::Destroy.new(client)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
require_relative 'register/preset_view'
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Builder
|
|
5
|
+
class Template
|
|
6
|
+
attr_reader :client
|
|
7
|
+
|
|
8
|
+
def initialize(client)
|
|
9
|
+
@client = client
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def create(commands:, &block)
|
|
13
|
+
createMutation.query(commands: commands, &block)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def update(model, commands:, patch_ver: model.patchVer, &block)
|
|
17
|
+
updateMutation.query(id: model.id, patch_ver: patch_ver, commands: commands, &block)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def publish(id:, &block)
|
|
21
|
+
publishMutation.query(id: id, &block)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def unpublish(id:, &block)
|
|
25
|
+
unpublishMutation.query(id: id, &block)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def update_information(id:, **kargs, &block)
|
|
29
|
+
updateInformationMutation.query(id: id, **kargs, &block)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def create_related_page(template_id:, title:, register_id:, patch_ver:, filters: nil, &block)
|
|
33
|
+
createRelatedPageMutation.query(
|
|
34
|
+
template_id: template_id,
|
|
35
|
+
title: title,
|
|
36
|
+
register_id: register_id,
|
|
37
|
+
patch_ver: patch_ver,
|
|
38
|
+
filters: filters,
|
|
39
|
+
&block
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def destroy_related_page(template_id:, id:, patch_ver:, &block)
|
|
44
|
+
destroyRelatedPageMutation.query(template_id: template_id, id: id, patch_ver: patch_ver, &block)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
private
|
|
48
|
+
|
|
49
|
+
def createMutation
|
|
50
|
+
Mutation::Template::Create.new(client)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def updateMutation
|
|
54
|
+
Mutation::Template::Update.new(client)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def publishMutation
|
|
58
|
+
Mutation::Template::Publish.new(client)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def unpublishMutation
|
|
62
|
+
Mutation::Template::Unpublish.new(client)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def updateInformationMutation
|
|
66
|
+
Mutation::Template::UpdateInformation.new(client)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def createRelatedPageMutation
|
|
70
|
+
Mutation::Template::CreateRelatedPage.new(client)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def destroyRelatedPageMutation
|
|
74
|
+
Mutation::Template::DestroyRelatedPage.new(client)
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
module Ecoportal
|
|
2
|
+
module API
|
|
3
|
+
class GraphQL
|
|
4
|
+
module Builder
|
|
5
|
+
# Build-from-scratch emitter for a template/workflow: turns a DECLARATIVE spec
|
|
6
|
+
# (stages -> sections -> fields -> options / config / gauge-stops) into an ordered batch of
|
|
7
|
+
# built `WorkflowCommand` hashes, ready for `Builder::Template#create(commands:)` /
|
|
8
|
+
# `#update(model, commands:)` (which wrap `executeWorkflowCommands`).
|
|
9
|
+
#
|
|
10
|
+
# This is the gem-level, reusable BUILD emitter (previously a one-off in eco-helpers samples).
|
|
11
|
+
# It shares ONE emission layer with the DIFF-DEPLOY pipeline: both produce an ordered
|
|
12
|
+
# `WorkflowCommand` batch, and both use the SAME `placeholderId` id-threading primitive that
|
|
13
|
+
# `Diff::CommandSynthesizer` uses — a newly-created node is addressed by a client-chosen
|
|
14
|
+
# `placeholderId`, and every later command in the same batch that references it substitutes
|
|
15
|
+
# that placeholder (the server has not assigned real ids yet). Here every node is brand new,
|
|
16
|
+
# so the whole batch is threaded through placeholders.
|
|
17
|
+
#
|
|
18
|
+
# SPEC SHAPE (all keys optional unless noted; only VALID command inputs are emitted):
|
|
19
|
+
#
|
|
20
|
+
# {
|
|
21
|
+
# stages: [
|
|
22
|
+
# { name: 'Report', ordering: 0, sections: [ # addStage(name, ordering)
|
|
23
|
+
# { layout: 'ONE_COLUMN', fields: [ # addSection(layout) + addStageSection
|
|
24
|
+
# { field_type: 'PlainText', label: 'Description', column: 0,
|
|
25
|
+
# description: 'ID:token' }, # addField (+ editFieldConfiguration for description)
|
|
26
|
+
# { field_type: 'Select', label: 'Severity',
|
|
27
|
+
# options: [ { label: 'Low', weight: 0 }, ... ], # addSelectFieldOption
|
|
28
|
+
# config: { select: { multiple: false } } }, # editFieldConfiguration(byType:)
|
|
29
|
+
# { field_type: 'Gauge', label: 'Risk',
|
|
30
|
+
# stops: [ { threshold: 0, color: '#0f0' }, ... ], # addGaugeFieldStop
|
|
31
|
+
# config: { gauge: { max: 100.0 } } }
|
|
32
|
+
# ] }
|
|
33
|
+
# ] }
|
|
34
|
+
# ]
|
|
35
|
+
# }
|
|
36
|
+
#
|
|
37
|
+
# ORDER — addStage -> addSection -> addStageSection -> addField -> (addSelectFieldOption |
|
|
38
|
+
# addGaugeFieldStop | editFieldConfiguration). This is the dependency-safe order the workflow
|
|
39
|
+
# command bus expects; placeholderId resolution makes the intra-batch references valid.
|
|
40
|
+
#
|
|
41
|
+
# SAFETY — only keys present in each command input's VALID_KEYS are emitted (the input classes
|
|
42
|
+
# slice + compact). A spec key with no corresponding command input is dropped, not fabricated.
|
|
43
|
+
# `field_type` shape and per-type config (`byType`) are NOT invented: config is passed through
|
|
44
|
+
# under its byType sub-hash exactly as given (the caller supplies confirmed byType keys), and
|
|
45
|
+
# is emitted only for a field that carries one.
|
|
46
|
+
class TemplateBuilder
|
|
47
|
+
# @param spec [Hash] the declarative template spec (see class doc). String or symbol keys.
|
|
48
|
+
def initialize(spec)
|
|
49
|
+
@spec = symbolize(spec || {})
|
|
50
|
+
@commands = []
|
|
51
|
+
@counter = 0
|
|
52
|
+
@built = false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# Ordered Array of built command hashes ({ commandKey => input }), placeholder-threaded.
|
|
56
|
+
def commands
|
|
57
|
+
return @commands if @built
|
|
58
|
+
|
|
59
|
+
@built = true
|
|
60
|
+
build_all
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Ready to hand to `Builder::Template#create(commands: builder.to_commands)`.
|
|
64
|
+
alias_method :to_commands, :commands
|
|
65
|
+
|
|
66
|
+
def to_h
|
|
67
|
+
{ commands: commands }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
private
|
|
71
|
+
|
|
72
|
+
def build_all
|
|
73
|
+
Array(@spec[:stages]).each_with_index { |stage, idx| emit_stage(stage, idx) }
|
|
74
|
+
@commands
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def emit_stage(stage, index)
|
|
78
|
+
stage_ph = placeholder(:stg)
|
|
79
|
+
add(:addStage, name: stage[:name], ordering: stage.fetch(:ordering, index), placeholderId: stage_ph)
|
|
80
|
+
Array(stage[:sections]).each { |section| emit_section(section, stage_ph) }
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def emit_section(section, stage_ph)
|
|
84
|
+
section_ph = placeholder(:sec)
|
|
85
|
+
add(:addSection, layout: section[:layout], placeholderId: section_ph)
|
|
86
|
+
# Attach the freshly-created section to its (freshly-created) stage.
|
|
87
|
+
add(:addStageSection, stageId: stage_ph, sectionId: section_ph)
|
|
88
|
+
emit_section_heading(section, section_ph)
|
|
89
|
+
Array(section[:fields]).each { |field| emit_field(field, stage_ph, section_ph) }
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# A section's heading is not an addSection input; set it via editSectionHeader after create.
|
|
93
|
+
def emit_section_heading(section, section_ph)
|
|
94
|
+
heading = section[:heading]
|
|
95
|
+
return if heading.nil?
|
|
96
|
+
|
|
97
|
+
add(:editSectionHeader, sectionId: section_ph, header: heading)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
def emit_field(field, stage_ph, section_ph)
|
|
101
|
+
field_ph = placeholder(:fld)
|
|
102
|
+
add(:addField,
|
|
103
|
+
fieldType: field[:field_type] || field[:fieldType],
|
|
104
|
+
label: field[:label],
|
|
105
|
+
stageId: stage_ph,
|
|
106
|
+
sectionId: section_ph,
|
|
107
|
+
column: field[:column],
|
|
108
|
+
placeholderId: field_ph)
|
|
109
|
+
emit_description(field, field_ph)
|
|
110
|
+
emit_options(field, field_ph)
|
|
111
|
+
emit_stops(field, field_ph)
|
|
112
|
+
emit_config(field, field_ph)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
# A field's `description` is NOT an addField input (the schema's WorkflowAddFieldInput has
|
|
116
|
+
# no `description` key — VERIFIED against the 20260605 dump). It is a top-level key of
|
|
117
|
+
# editFieldConfiguration, so we persist it with a follow-up editFieldConfiguration
|
|
118
|
+
# addressed to the freshly-created field placeholder. Emitted only when supplied. This is
|
|
119
|
+
# the seam the CSV/hidden-field identity token rides on. NOTE: `required` has no schema
|
|
120
|
+
# input key at all, so it is intentionally NOT emitted (a spec `required:` is ignored).
|
|
121
|
+
def emit_description(field, field_ph)
|
|
122
|
+
description = field[:description]
|
|
123
|
+
return if description.nil?
|
|
124
|
+
|
|
125
|
+
add(:editFieldConfiguration, data_field_id: field_ph, description: description)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def emit_options(field, field_ph)
|
|
129
|
+
Array(field[:options]).each do |opt|
|
|
130
|
+
add(:addSelectFieldOption, data_field_id: field_ph, label: opt[:label], weight: opt[:weight])
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def emit_stops(field, field_ph)
|
|
135
|
+
Array(field[:stops]).each do |stop|
|
|
136
|
+
add(:addGaugeFieldStop, data_field_id: field_ph, threshold: stop[:threshold], color: stop[:color])
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
# Per-type field configuration passed through under its byType sub-hash exactly as supplied
|
|
141
|
+
# (e.g. { select: { multiple: true } }, { gauge: { max: 100.0 } }). Emitted only when
|
|
142
|
+
# present; keys are validated/sliced by the EditFieldConfiguration input, never fabricated.
|
|
143
|
+
def emit_config(field, field_ph)
|
|
144
|
+
config = field[:config]
|
|
145
|
+
return if config.nil? || config.empty?
|
|
146
|
+
|
|
147
|
+
add(:editFieldConfiguration, data_field_id: field_ph, byType: symbolize(config))
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
# Build one command and append it. Reuses the SAME builder the diff synthesizer uses, so
|
|
151
|
+
# BUILD and DIFF-DEPLOY emit through one layer.
|
|
152
|
+
def add(command_key, **kwargs)
|
|
153
|
+
@commands << Ecoportal::API::GraphQL::Input::WorkflowCommand.build(command_key, **kwargs)
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
# A deterministic client-chosen placeholderId — the id-threading primitive shared with the
|
|
157
|
+
# diff synthesizer. Prefix marks the node kind for readability of the emitted batch.
|
|
158
|
+
def placeholder(prefix)
|
|
159
|
+
@counter += 1
|
|
160
|
+
"ph_#{prefix}_#{@counter}"
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
def symbolize(value)
|
|
164
|
+
case value
|
|
165
|
+
when Hash then value.each_with_object({}) { |(k, v), h| h[k.to_sym] = symbolize(v) }
|
|
166
|
+
when Array then value.map { |e| symbolize(e) }
|
|
167
|
+
else value
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
end
|
|
174
|
+
end
|