diff --git a/app/assets/javascripts/backbone/helpers/channels.js.coffee b/app/assets/javascripts/backbone/helpers/channels.js.coffee
index b5637ad5..5432af24 100644
--- a/app/assets/javascripts/backbone/helpers/channels.js.coffee
+++ b/app/assets/javascripts/backbone/helpers/channels.js.coffee
@@ -1,5 +1,31 @@
class Kandan.Helpers.Channels
+ @options:
+ autoScrollThreshold: 0.90
+
+ @templates:
+ addChannelButton: _.template '''
+ [x]
+ '''
+
+ @replaceCreateButton: ()->
+ $tabNav = $(".create_channel").parent().parent()
+ $createButton = $(".create_channel").parent().html()
+ $tabNav.find(".create_channel").parent().remove()
+ $tabNav.append("
"+$createButton+"")
+
+ @pastAutoScrollThreshold: (channel_id)->
+ currentPosition = @currentScrollPosition channel_id
+ totalHeight = $(document).height() - $(window).height()
+ scrollPercentage = (currentPosition) / (totalHeight)
+ scrollPercentage > @options.autoScrollThreshold
+
+ @scrollToLatestMessage: (channel_id)->
+ $("#channels-#{channel_id}").scrollTop(100000)
+
+ @currentScrollPosition: (channel_id)->
+ $("#channels-#{channel_id}").scrollTop()
+
@channel_activities_el: (channel_id)->
$("#channel-activities-#{channel_id}")
@@ -22,17 +48,28 @@ class Kandan.Helpers.Channels
else
return $(document).data('active_channel_id')
+ @deleteChannel: (channelIndex)->
+ channelID = @get_channel_id_from_tab_index(channelIndex)
+ console.log "deleting channel ID #{channelID}"
+ channel = Kandan.Models.Channel({id: channelID})
+ console.log "could create channel"
+ channel.destroy({success: ()=>
+ $("#channels").tabs("remove", channelIndex)
+ })
@channel_not_exists: (channel_id)->
$("#channels-#{channel_id}").length == 0
+
@create_channel_area: (channel)->
- console.log channel
- channel_area = "#channels-#{channel.id}"
- $("#channels").tabs('add', channel_area, channel.name)
- channel = new Kandan.Models.Channel(channel)
+ channel_area = "#channels-#{channel.get('id')}"
+ totalTabs = $("#channels").tabs("length")
+
+ $("#channels").tabs('add', channel_area, "#{channel.get("name")}#{@templates.addChannelButton()}", totalTabs)
+ Kandan.Helpers.Channels.replaceCreateButton()
view = new Kandan.Views.ListActivities({channel: channel})
$(channel_area).html $(view.render().el).html()
+ $(channel_area).data('channel_id', channel.get('id'))
@new_activity_view: (activity_attributes)->
@@ -43,13 +80,18 @@ class Kandan.Helpers.Channels
@add_activity: (activity_attributes, state)->
if activity_attributes.channel!=undefined && @channel_not_exists(activity_attributes.channel_id)
- @create_channel_area(activity_attributes.channel)
+ @create_channel_area(new Kandan.Models.Channel(activity_attributes.channel))
if activity_attributes.channel_id
@add_message(activity_attributes, state)
else
@add_notification(activity_attributes)
+ if activity_attributes.channel_id
+ channel_id = activity_attributes.channel_id
+ else
+ channel_id = @get_active_channel_id()
+ @scrollToLatestMessage(channel_id) if @pastAutoScrollThreshold(channel_id)
@add_message: (activity_attributes, state)->
@channel_activities_el(activity_attributes.channel_id)
diff --git a/app/assets/javascripts/backbone/views/chatarea.js.coffee b/app/assets/javascripts/backbone/views/chatarea.js.coffee
index 3b04ec96..58e51385 100644
--- a/app/assets/javascripts/backbone/views/chatarea.js.coffee
+++ b/app/assets/javascripts/backbone/views/chatarea.js.coffee
@@ -3,6 +3,9 @@ class Kandan.Views.ChatArea extends Backbone.View
template: JST['chatarea']
# className: 'channels'
+ events:
+ "click .delete_channel": "deleteChannel"
+ "click .create_channel" : "createChannel"
render: ->
$(@el).html(@template({channels: @options.channels}))
@@ -10,4 +13,21 @@ class Kandan.Views.ChatArea extends Backbone.View
view = new Kandan.Views.ListActivities({channel: channel})
$(@el).append(view.render().el)
$(@el).attr('id', 'channels')
- @
\ No newline at end of file
+ @
+
+ createChannel: (event)->
+ channelName = prompt("What's the channel name?", "New channel")
+ channelName = channelName.replace(/^\s+|\s+$/g, '')
+ if channelName
+ channel = new Kandan.Models.Channel({name: channelName})
+ channel.save({}, {
+ success: (model)->
+ Kandan.Helpers.Channels.create_channel_area(model)
+ })
+ console.log "create channel: #{channelName}"
+
+ deleteChannel: (event)->
+ console.log "deleting channel"
+ channelIndex = $(event.target).parent().prev().length
+ if channelIndex != 0
+ Kandan.Helpers.Channels.deleteChannel channelIndex
\ No newline at end of file
diff --git a/app/assets/templates/chatarea.jst.eco b/app/assets/templates/chatarea.jst.eco
index 189bc6e5..c891d3ed 100644
--- a/app/assets/templates/chatarea.jst.eco
+++ b/app/assets/templates/chatarea.jst.eco
@@ -1,8 +1,9 @@