You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							39 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
	
	
							39 lines
						
					
					
						
							1.1 KiB
						
					
					
				| module QuestionAttributeHelper | |
|   def stimulus_html_attributes(question) | |
|     attribs = [ | |
|       numeric_question_html_attributes(question), | |
|       conditional_html_attributes(question), | |
|     ] | |
|     merge_controller_attributes(*attribs) | |
|   end | |
|  | |
| private | |
|  | |
|   def numeric_question_html_attributes(question) | |
|     return {} if question["fields-to-add"].blank? || question["result-field"].blank? | |
|  | |
|     { | |
|       "data-controller": "numeric-question", | |
|       "data-action": "numeric-question#calculateFields", | |
|       "data-target": "case-log-#{question['result-field'].to_s.dasherize}-field", | |
|       "data-calculated": question["fields-to-add"].to_json, | |
|     } | |
|   end | |
|  | |
|   def conditional_html_attributes(question) | |
|     return {} if question["conditional_for"].blank? | |
|  | |
|     { | |
|       "data-controller": "conditional-question", | |
|       "data-action": "conditional-question#displayConditional", | |
|       "data-info": question["conditional_for"].to_json, | |
|     } | |
|   end | |
| end | |
|  | |
| def merge_controller_attributes(*args) | |
|   args.flat_map(&:keys).uniq.each_with_object({}) do |key, hsh| | |
|     hsh[key] = args.map { |a| a.fetch(key, "") }.join(" ").strip | |
|     hsh | |
|   end | |
| end
 | |
| 
 |