Skip to content

Instantly share code, notes, and snippets.

@mkroman
Created September 15, 2013 23:45
Show Gist options
  • Save mkroman/6575288 to your computer and use it in GitHub Desktop.
Save mkroman/6575288 to your computer and use it in GitHub Desktop.
UI = window.UI ?= new Object
class UI.Grid
@DefaultOptions = {
width: 1280,
height: 720,
verticalSpacing: 30,
horizontalSpacing: 30,
verticalPadding: 100,
horizontalPadding: 50
}
constructor: () ->
@elements = []
setup: (@options = Grid.DefaultOptions) ->
for key of Grid.DefaultOptions
@options[key] ?= Grid.DefaultOptions[key]
attach: (object, callback) ->
if @elements.length < 1
callback object, @options.horizontalPadding, @options.verticalPadding
@elements.push object
return
lastObject = @elements[@elements.length - 1]
lastWidth = lastObject.width()
lastOffset = lastObject.offset()
if lastOffset.left + lastWidth + object.width() + @options.horizontalSpacing + @options.horizontalPadding >= @options.width
# This means we need to move it to a new row
lastHeight = lastObject.height()
callback? object, @options.horizontalPadding, lastOffset.top + lastHeight + @options.verticalSpacing
else
callback? object, lastOffset.left + lastWidth + @options.horizontalSpacing, lastOffset.top
@elements.push object
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment