lib/atome/genesis/generators/spatial.rb in atome-0.5.5.6.4 vs lib/atome/genesis/generators/spatial.rb in atome-0.5.5.6.5
- old
+ new
@@ -7,5 +7,95 @@
new({ particle: :rotate, type: :integer })
new({ particle: :direction, type: :string })
new({ particle: :center, type: :string})
new({particle: :depth, type: :integer})
new({ particle: :position })
+new({ particle: :organise })
+new({ particle: :spacing })
+new({ particle: :display }) do |params|
+ unless params.instance_of? Hash
+ params = { mode: params }
+ end
+ params
+end
+new({ particle: :layout }) do |params|
+
+ mode_found = params.delete(:mode) || :list
+ elements_style = params.delete(:element) || {}
+ # now we get the list of the atome to layout
+ atomes_to_organise = []
+ if type == :group
+ atomes_to_organise = collect
+ end
+ # if params[:listing] is specified group collection is override
+ atomes_to_organise = params[:listing] if params[:listing]
+ if mode_found == :default
+ # the user want to revert the layout to the default
+ atomes_to_organise.each do |atome_id_to_organise|
+ atome_found = grab(atome_id_to_organise)
+ # now restoring
+ if atome_found.backup
+ atome_found.backup.each do |particle, value|
+ atome_found.send(:delete, particle)
+ atome_found.send(particle, value)
+ end
+ atome_found.remove_layout
+ end
+
+ end
+ else
+
+ if params[:id]
+ container_name = params[:id]
+ container = grab(:view).box({ id: container_name })
+ container_class = container_name
+ else
+ container = grab(:view).box
+ id_found = container.id
+ params[:id] = id_found
+ container_class = id_found
+ end
+ container.remove({ category: :atome })
+ container.category(:matrix)
+ if mode_found == :list
+ params[:organise] = '1fr'
+ end
+ params.each do |particle, value|
+ container.send(particle, value)
+ end
+ # now we add user wanted particles
+ atomes_to_organise.each do |atome_id_to_organise|
+ atome_found = grab(atome_id_to_organise)
+ # now restoring
+ if atome_found.backup
+ atome_found.backup.each do |particle, value|
+ atome_found.send(:delete, particle)
+ atome_found.send(particle, value)
+ end
+ # atome_found.remove_layout
+ end
+ # we remove previous display mode
+ atome_found.remove_layout
+ atome_found.display[:mode] = mode_found
+ atome_found.display[:layout] = id_found
+ atome_found.attach(container_class)
+ atome_found.remove({ category: :atome })
+ atome_found.category(container_class)
+ # the hash below is used to restore element state
+
+ # we only store the state if atome_found.display[:default]== {} it means this is the original state
+ elements_style.each do |particle, value|
+ # we have to store all elements particle to restore it later
+ atome_found.backup({}) unless atome_found.backup
+ unless atome_found.backup[particle]
+ particle_to_save = atome_found.send(particle) || 0
+ atome_found.backup[particle] = particle_to_save
+ end
+
+ atome_found.send(particle, value)
+ end
+ end
+ end
+ params
+end
+
+