Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overview of data structures #5117

Open
viktorvanwijk opened this issue Feb 21, 2025 · 0 comments
Open

Overview of data structures #5117

viktorvanwijk opened this issue Feb 21, 2025 · 0 comments
Assignees
Labels

Comments

@viktorvanwijk
Copy link
Contributor

viktorvanwijk commented Feb 21, 2025

---
config:
  layout: elk
---
classDiagram
	%% Classes
    class FormioData:::important{
        %% data
    }

    class Appointment{
    	extract_email_addresses()
    }
    	
	class EvaluateDMNAction{
		eval()
	}
	
	class EditGridField{
		run_child_validation
	}
	
	class ObjectsAPIV2Handler{
		get_record_data()
		get_update_payment_status_data()
	}
	
	class SubmissionStepViewSet{
		logic_check()
	}
	
	class DataContainer:::important{
		data
		initial_data
		update()
		get_updated_step_data()
	}
	
	class SubmissionValueVariablesState{
		get_data()
		set_values()
		get_variables_in_submission_step()
	}
	
	class SubmissionValueVariableManager{
		bulk_create_or_update_form_data()
	}
	
	class JSONDumpRegistration{
		register_submission()
		post_process() (not a class method, but closely related)
		process_component () (not a class method, but closely related)
	}
	
 	class CosignState{
 		_find_component()
	}
	
	class ComponentRegistry{
		update_config()
	}
	
	class BasePlugin{
		mutate_config_dynamically()
	}
	
	class FormioConfigurationWrapper:::important{
		configuration
		component_map
		is_visible_in_frontend()
	}
	
	class StepDataSerializer{
		apply_hidden_state()
	}
	
	class FormDefinition{
		configuration_wrapper
	}
	
	class Submission{
		data
		total_configuration_wrapper
	}
	
	class SubmissionStep{
		data
	}
	
	class SubmissionCompletionSerializer{
		validate()
	}
	
	class FormVariableSerializer{
		validate()
	}
	
	class FormDefinitionSerializer{
		to_representation()
	}
	
	class FormVariable{
		as_json_schema()
		derive_info_from_component()
	}
	
	class SubmissionFileAttachment{
		_get_formio_config_property
	}
	
	class EmailVerificationSerializer{
		validate()
	}

    class iter_evaluate_rules{
        accesses DataContainer.data
    }

    class Camunda{
    	get_process_variables() (not a class method, but closely related)
	}
	
	class MSGraphRegistration{
		register_submission()
	}
	
	class SubmissionStepSerializer{
		to_representation()
	}
	
	class SubmissionViewSet{
		get_object()
	}
	
	class Renderer{
		get_children()
	}
	
	class FormioNode{
		get_children()
	}
	
	class ComponentNode{
		build_node()
	}

    %% Class definitions
    classDef important fill:red

	%% FormioData
    FormioData <..o get_variables_for_context : \_\_init\_\_(Submission.data)
    FormioData <..o Appointment
    FormioData <..o EvaluateDMNAction
    FormioData <..o EditGridField
    FormioData <..o transform_editgrid_values
    FormioData <..o ObjectsAPIV2Handler
    FormioData <..o SubmissionStepViewSet : \_\_init_\_(Submission.data)
    FormioData <..o evaluate_form_logic
    FormioData <..o DataContainer
    FormioData <..o SubmissionValueVariablesState
    FormioData <..o SubmissionValueVariableManager
    
    SubmissionStepViewSet ..> evaluate_form_logic :  \_\_call\_\_(FormioData, Submission.data)
    evaluate_form_logic ..> SubmissionValueVariablesState : .set_values(FormioData)
    
    %% DataContainer
    DataContainer <..o JSONDumpRegistration : \_\_init\_\_
    DataContainer <..o CosignState : \_\_init\_\_
    DataContainer <..o evaluate_form_logic : \_\_init\_\_, .data, .initial_data, .update, .get_updated_step_data
    DataContainer <..o check_submission_logic : \_\_init\_\_

    JSONDumpRegistration o..> rewrite_formio_components : \_\_call\_\_(FormDefinition.configuration_wrapper, DataContainer.data)
    rewrite_formio_components o..> ComponentRegistry : .update_config(DataContainer.data)
    ComponentRegistry o..> BasePlugin : .mutate_config_dynamically(DataContainer.data)
    
    CosignState o..> FormioConfigurationWrapper : .is_visible_in_frontend(DataContainer.data)
    %% TODO: would be nice if the specific method of FormioConfigurationWrapper is listed here (.is_visible_in_frontend)
    FormioConfigurationWrapper o..> is_visible_in_frontend : \_\_call\_\_(DataContainer.data)
    
    evaluate_form_logic o..> iter_evaluate_rules : \_\_call\_\_(DataContainer)
    evaluate_form_logic o..> get_dynamic_configuration : \_\_call\_\_(DataContainer.data)
    evaluate_form_logic o..> FormioData : \_\_init\_\_(DataContainer.initial_data)
    evaluate_form_logic o..> FormioConfigurationWrapper : .is_visible_in_frontend(DataContainer.data)

    check_submission_logic o..> iter_evaluate_rules : \_\_call\_\_(DataContainer)
    
    %% FormioConfigurationWrapper
    FormioConfigurationWrapper <..o convert_simple_conditionals
    FormioConfigurationWrapper <..o StepDataSerializer
    FormioConfigurationWrapper <..o FormDefinition
    FormioConfigurationWrapper <..o Submission

    %% FormDefinition
    FormDefinition <..o SubmissionCompletionSerializer : .configuration_wrapper
    FormDefinition <..o FormVariableSerializer : .configuration_wrapper
    FormDefinition <..o FormDefinitionSerializer : .configuration_wrapper
    FormDefinition <..o objects_api._lookup_component : .configuration_wrapper
    FormDefinition <..o FormVariable : .configuration_wrapper
    FormDefinition <..o evaluate_form_logic : .configuration_wrapper
    FormDefinition <..o check_submission_logic : .configuration_wrapper
    FormDefinition <..o Submission : .configuration_wrapper
    FormDefinition <..o SubmissionFileAttachment : .configuration_wrapper
    FormDefinition <..o SubmissionValueVariablesState : .configuration_wrapper
    
    SubmissionCompletionSerializer o..> get_dynamic_configuration : \_\_call\_\_(FormDefinition.configuration_wrapper, Submission.data)
    get_dynamic_configuration o..> get_translated_custom_error_messages : \_\_call\_\_(FormDefinition.confguration_wrapper)
    get_dynamic_configuration o..> localize_components : \_\_call\_\_(FormDefinition.configuration_wrapper)
    get_dynamic_configuration o..> inject_prefill : \_\_call\_\_(FormDefinition.configuration_wrapper)
    get_dynamic_configuration o..> rewrite_formio_components : \_\_call\_\_(FormDefinition.configuration_wrapper, DataContainer.data)

    FormDefinitionSerializer o..> rewrite_formio_components_for_request : \_\_call\_\_(FormDefinition.confguration_wrapper)
    
    %% SubmissionValueVariablesState
    SubmissionValueVariablesState <..o CosignState : .get_data()
    SubmissionValueVariablesState <..o JSONDumpRegistration : .get_data()
    SubmissionValueVariablesState <..o ObjectsAPIV2Handler : .get_data()
    SubmissionValueVariablesState <..o Submission : .get_data()
    SubmissionValueVariablesState <..o SubmissionStep : .get_data()
    
    %% Submission
    Submission <..o JSONDumpRegistration : .total_configuration_wrapper
    Submission <..o EmailVerificationSerializer : .total_configuration_wrapper
    Submission <..o CosignState : .total_configuration_wrapper
    Submission <..o prefill_variables : .total_configuration_wrapper

    %% Submission <..o Submission : .data
    Submission <..o SubmissionCompletionSerializer : .data
    Submission <..o Camunda : .data
    Submission <..o MSGraphRegistration : .data
    Submission <..o SubmissionStepSerializer : .data
    Submission <..o SubmissionViewSet : .data
    Submission <..o SubmissionStepViewSet : .data
    Submission <..o Renderer : .data
    Submission <..o send_confirmation_email : .data
    Submission <..o persist_user_defined_variables : .data
    Submission <..o get_variables_for_context : .data
    
    Camunda o..> get_process_variables : \_\_call\_\_(Submission.data)
    SubmissionStepSerializer o..> evaluate_form_logic : \_\_call\_\_(Submission.data)
    SubmissionViewSet o..> check_submission_logic : \_\_call\_\_(Submission.data)
   	Renderer o..> evaluate_form_logic : \_\_call\_\_(Submission.data)
   	persist_user_defined_variables o..> check_submission_logic : \_\_call\_\_(Submission.data)

	%% SubmissionStep
	SubmissionStep <..o iter_step_uploads : .data
	SubmissionStep <..o FormioNode : .data
	
	iter_step_uploads o..> resolve_uploads_from_data : \_\_call\_\_(SubmissionStep.data)
	resolve_uploads_from_data o..> iterate_data_with_components : \_\_call\_\_(SubmissionStep.data)
	FormioNode o..> ComponentNode : .build_node(SubmissionStep.data)





Loading

It looks like not all mermaid features (styling and layout) are supported in the Github markdown. Also, it is not possible to pan and zoom with a mouse here, so use the mermaid live editor for the best result

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Todo
Development

No branches or pull requests

1 participant