Skip to content

Instantly share code, notes, and snippets.

@shripadk
Created November 24, 2010 12:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save shripadk/713607 to your computer and use it in GitHub Desktop.
Save shripadk/713607 to your computer and use it in GitHub Desktop.
checkElement = (element) ->
if typeof element is 'object'
return element
else
return $(element)
class TwistedGrid
constructor: (grid, records) ->
@grid = checkElement(grid)
@records = records
@paginate @records
addRowAfter: (element, data, id) ->
newElement = checkElement(element).clone()
newElement.attr 'id', id
newElement.html data
newElement.insertAfter checkElement(element)
@paginate @records
@paginateNumber @current_page
addRowBefore: (element, data, id) ->
newElement = checkElement(element).clone()
newElement.attr 'id', id
newElement.html data
newElement.insertBefore checkElement(element)
@paginate @records
@paginateNumber @current_page
deleteRow: (element) ->
checkElement(element).remove()
@paginate @records
@paginateNumber @current_page
deleteRowAfter: (element) ->
checkElement(element).next().remove()
@paginate @records
@paginateNumber @current_page
deleteRowBefore: (element) ->
checkElement(element).prev().remove()
@paginate @records
@paginateNumber @current_page
sortAsc: () ->
old = @grid.find('li')
for val, x in old
prev = x
for y in [x...old.length]
if old[y]?
if $(old[prev]).text() >= $(old[y]).text()
prev = y
temp = old[x]
old[x] = old[prev]
old[prev] = temp
@grid.html old
@paginate @records
@paginateNumber @current_page
sortDesc: () ->
old = @grid.find('li')
for val, x in old
prev = x
for y in [x...old.length]
if old[y]?
if $(old[prev]).text() <= $(old[y]).text()
prev = y
temp = old[x]
old[x] = old[prev]
old[prev] = temp
@grid.html old
@paginate @records
@paginateNumber @current_page
paginate: (records, start) ->
if not start
start = 0
else
start = start * records
$("span#ranges").html("")
arrayOfRecords = @grid.find('li')
if typeof records is 'number'
@grid.find('li').hide()
for i in [start...(records+start)]
@grid.find('li').eq(i).show()
totalNoOfPages = Math.ceil arrayOfRecords.length / records
for i in [0...totalNoOfPages]
$("span#ranges").append "<input type='button' value=#{i+1} id=#{i+1} class='numbered-buttons'>"
resetPagination: (records) ->
@records = Number records
@paginate @records
paginateNumber: (number) ->
@current_page = Number(number)
number = Number(number-1)
@paginate @records, number
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment