Assign similar colors to child groups #110
| @ -13,6 +13,20 @@ class Group < ApplicationRecord | |||||||
| 
 | 
 | ||||||
|   has_many :guests |   has_many :guests | ||||||
| 
 | 
 | ||||||
|  |   def colorize_children(generation = 1) | ||||||
|  |     derived_colors = generation == 1 ? color.paint.palette.analogous(size: children.count) : color.paint.palette.decreasing_saturation | ||||||
|  | 
 | ||||||
|  |     children.zip(derived_colors) do |child, raw_color| | ||||||
|  | 
 | ||||||
|  |       final_color = raw_color.paint | ||||||
|  |       final_color.brighten(60) if final_color.dark? | ||||||
|  | 
 | ||||||
|  |       child.update!(color: final_color) | ||||||
|  | 
 | ||||||
|  |       child.colorize_children(generation + 1) | ||||||
|  |     end | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   private |   private | ||||||
| 
 | 
 | ||||||
|   def set_color |   def set_color | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								config/initializers/colors.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								config/initializers/colors.rb
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | Chroma.define_palette :decreasing_saturation do | ||||||
|  |   spin(20).desaturate(40) | ||||||
|  |   spin(-20).desaturate(40) | ||||||
|  |   spin(40).desaturate(40) | ||||||
|  |   spin(-40).desaturate(40) | ||||||
|  | end | ||||||
| @ -65,3 +65,7 @@ NUMBER_OF_GUESTS.times do | |||||||
| end | end | ||||||
| 
 | 
 | ||||||
| ActiveJob.perform_all_later(3.times.map { TableSimulatorJob.new }) | ActiveJob.perform_all_later(3.times.map { TableSimulatorJob.new }) | ||||||
|  | 
 | ||||||
|  | 'red'.paint.palette.triad(as: :hex).zip(Group.roots).each { |(color, group)| group.update!(color: color.paint.desaturate(40)) } | ||||||
|  | 
 | ||||||
|  | Group.roots.each(&:colorize_children) | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user