Skip to content

Commit

Permalink
Refactors code to follow github styleguide for javascript
Browse files Browse the repository at this point in the history
Signed-off-by: Akash Manohar J <akash@akash.im>
  • Loading branch information
HashNuke committed Apr 11, 2012
1 parent 3714ad2 commit 42e95cb
Show file tree
Hide file tree
Showing 14 changed files with 140 additions and 142 deletions.
24 changes: 12 additions & 12 deletions app/assets/javascripts/backbone/broadcasters/faye.js.coffee
@@ -1,8 +1,8 @@
class Kandan.Broadcasters.FayeBroadcaster

constructor: ()->
@faye_client = new Faye.Client("/remote/faye")
@faye_client.disable('websocket')
@fayeClient = new Faye.Client("/remote/faye")
@fayeClient.disable('websocket')
authExtension = {
outgoing: (message, callback)->
if message.channel == "/meta/subscribe"
Expand All @@ -11,27 +11,27 @@ class Kandan.Broadcasters.FayeBroadcaster
}
callback(message)
}
@faye_client.addExtension(authExtension)
@fayeClient.addExtension(authExtension)

@faye_client.bind "transport:down", ()->
@fayeClient.bind "transport:down", ()->
console.log "Comm link to Cybertron is down!"

@faye_client.bind "transport:up", ()->
@fayeClient.bind "transport:up", ()->
console.log "Comm link is up!"

@faye_client.subscribe "/app/activities", (data)=>
@fayeClient.subscribe "/app/activities", (data)=>
[entityName, eventName] = data.event.split("#")
@processEventsForUser(eventName, data) if entityName == "user"
@processEventsForChannel(eventName, data) if entityName == "channel"
@processEventsForUser(eventName, data) if entityName == "user"
@processEventsForChannel(eventName, data) if entityName == "channel"
@processEventsForAttachments(eventName, data) if entityName == "attachments"

processEventsForAttachments: (eventName, data)->
Kandan.Helpers.Channels.add_activity(data.entity, Kandan.Helpers.Activities.ACTIVE_STATE)
Kandan.Helpers.Channels.addActivity(data.entity, Kandan.Helpers.Activities.ACTIVE_STATE)
Kandan.Data.Attachments.runCallbacks("change", data)

processEventsForUser: (eventName, data)->
if eventName.match(/connect/)
$(document).data('active_users', data.extra.active_users)
$(document).data('active-users', data.extra.active_users)
Kandan.Data.ActiveUsers.runCallbacks("change", data)

processEventsForChannel: (eventName, data)->
Expand All @@ -42,8 +42,8 @@ class Kandan.Broadcasters.FayeBroadcaster


subscribe: (channel)->
subscription = @faye_client.subscribe channel, (data)=>
Kandan.Helpers.Channels.add_activity(data)
subscription = @fayeClient.subscribe channel, (data)=>
Kandan.Helpers.Channels.addActivity(data)
subscription.errback((data)->
console.log "error", data
alert "Oops! could not connect to the server"
Expand Down
@@ -1,10 +1,10 @@
class Kandan.Helpers.ActiveUsers

@all: (options)->
$(document).data("active_users")
$(document).data("active-users")

@setFromCollection: (collection)->
$(document).data("active_users", collection.toJSON())
$(document).data("active-users", collection.toJSON())

@collectionHasCurrentUser: (collection)->
currentUser = Kandan.Helpers.Users.currentUser()
Expand Down
16 changes: 8 additions & 8 deletions app/assets/javascripts/backbone/helpers/channels.js.coffee.erb
Expand Up @@ -94,7 +94,7 @@ class Kandan.Helpers.Channels
$(channelArea).data('channel_id', channel.get('id'))


@new_activity_view: (activityAttributes)->
@newActivityView: (activityAttributes)->
activity = new Kandan.Models.Activity(activityAttributes)
activityView = new Kandan.Views.ShowActivity({activity: activity})
return activityView
Expand All @@ -104,7 +104,7 @@ class Kandan.Helpers.Channels
@createChannelArea(new Kandan.Models.Channel(activityAttributes.channel))


@add_activity: (activityAttributes, state)->
@addActivity: (activityAttributes, state)->
@createChannelIfNotExists(activityAttributes)

if activityAttributes.channel_id
Expand All @@ -119,22 +119,22 @@ class Kandan.Helpers.Channels

@add_message: (activityAttributes, state)->
@channel_activities_el(activityAttributes.channel_id)
.append(@new_activity_view(activityAttributes).render().el)
.append(@newActivityView(activityAttributes).render().el)
@flushActivities(activityAttributes.channel_id)
Kandan.Helpers.Utils.notifyInTitleIfRequired()
@set_pagination_data(activityAttributes.channel_id)
@setPaginationData(activityAttributes.channel_id)


@add_notification: (activityAttributes)->
$channelElements = $(".channel-activities")
activityAttributes["created_at"] = new Date()
for el in $channelElements
$(el).append(@new_activity_view(activityAttributes).render().el)
$(el).append(@newActivityView(activityAttributes).render().el)
@flushActivities($(el).closest(".ui-widget-content").data("channel_id"))
@set_pagination_data(activityAttributes.channel_id)
@setPaginationData(activityAttributes.channel_id)


@set_pagination_state: (channelId, moreActivities, oldest)->
@setPaginationState: (channelId, moreActivities, oldest)->
@channel_pagination_el(channelId).data('oldest', oldest)
console.log "pagination element", moreActivities, @channel_pagination_el(channelId)
if moreActivities == true
Expand All @@ -143,7 +143,7 @@ class Kandan.Helpers.Channels
@channel_pagination_el(channelId).hide()


@set_pagination_data: (channel_id)->
@setPaginationData: (channel_id)->
$oldest_activity = @channel_activities_el(channel_id).find(".activity").first()
if $oldest_activity.length != 0
@channel_pagination_el(channel_id).data('oldest', $oldest_activity.data('activity_id'))
22 changes: 10 additions & 12 deletions app/assets/javascripts/backbone/kandan.js.coffee
Expand Up @@ -34,7 +34,7 @@ window.Kandan =

registerAppEvents: ()->
Kandan.Data.ActiveUsers.registerCallback "change", (data)->
Kandan.Helpers.Channels.add_activity({
Kandan.Helpers.Channels.addActivity({
user: data.entity,
action: data.event.split("#")[1]
})
Expand Down Expand Up @@ -67,14 +67,14 @@ window.Kandan =

$("#kandan").tabs 'option', 'tabTemplate', '''
<li>
<a href="#{href}" class="show_channel">
<span class="tab_right"></span>
<span class="tab_left"></span>
<span class="tab_content">
<cite>#{label}</cite>
<cite class="close_channel" title="close channel">x</cite>
</span>
</a>
<a href="#{href}" class="show_channel">
<span class="tab_right"></span>
<span class="tab_left"></span>
<span class="tab_content">
<cite>#{label}</cite>
<cite class="close_channel" title="close channel">x</cite>
</span>
</a>
</li>
'''

Expand All @@ -97,9 +97,7 @@ window.Kandan =
Kandan.Widgets.initAll()

setCurrentUser: ()->
template = _.template '''
<img src="http://gravatar.com/avatar/<%= gravatar_hash %>?s=25&d=http://bushi.do/images/profile.png"/><span><%= name %></span>
'''
template = JST['current_user']
currentUser = Kandan.Helpers.Users.currentUser()
$(".header .user").html template({
gravatar_hash: currentUser.gravatar_hash,
Expand Down
80 changes: 40 additions & 40 deletions app/assets/javascripts/backbone/plugins/attachments.js.coffee
Expand Up @@ -2,7 +2,7 @@ class Kandan.Plugins.Attachments

@widget_title: "Media"
@widget_icon_url: "/assets/media_icon.png"
@plugin_namespace: "Kandan.Plugins.Attachments"
@pluginNamespace: "Kandan.Plugins.Attachments"

@dropzoneInit: false

Expand All @@ -11,80 +11,80 @@ class Kandan.Plugins.Attachments
defaultDropzoneText: "Drop file here to upload"

@templates:
no_files: _.template '''
noFiles: _.template '''
<div style="text-align:center; text-transform: uppercase; font-size: 11px; color: #999; padding: 10px;">
No media yet. Try uploading.
</div>
'''

dropzone: _.template '''
<form accept-charset="UTF-8" action="/channels/<%= channel_id %>/attachments.json" data-remote="true" html="{:multipart=&gt;true}" id="file_upload" method="post">
<form accept-charset="UTF-8" action="/channels/<%= channelId %>/attachments.json" data-remote="true" html="{:multipart=&gt;true}" id="file_upload" method="post">
<div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓">
<input name="<%=csrf_param %>" type="hidden" value="<%= csrf_token %>"/>
<input name="<%=csrfParam %>" type="hidden" value="<%= csrfToken %>"/>
</div>
<input id="channel_id_<%= channel_id %>" name="channel_id[<%= channel_id %>]" type="hidden"/>
<input id="channel_id_<%= channelId %>" name="channel_id[<%= channelId %>]" type="hidden"/>
<input id="file" name="file" type="file"/>
<div class="dropzone"><%= dropzoneText %></div>
</form>
'''

@supports_drop_upload: ()->
!!(window.File && window.FileList && window.FileReader)

@channel_id: ()->
Kandan.Data.Channels.activeChannelId()
fileItemTemplate: _.template '''
<div class="file_item">
<a href="<%= url %>">
<img src="<%= iconUrl %>"/>
<span><%= fileName %></span>
</a>
</div>
'''

@csrf_param: ->
@csrfParam: ->
$('meta[name=csrf-param]').attr('content')

@csrf_token: ->

@csrfToken: ->
$('meta[name=csrf-token]').attr('content')


@truncateName: (fileName)->
return "#{fileName.substring(0, @options.maxFileNameLength)}..." if fileName.length > @options.maxFileNameLength
fileName


@fileIcon: (fileName)->
fileExtension = fileName.split(".").pop()
return "/assets/img_icon.png" if fileExtension.match(/(png|jpeg|jpg|gif)/i)
return "/assets/audio_icon.png" if fileExtension.match(/(mp3|wav|m4a)/i)
return "/assets/video_icon.png" if fileExtension.match(/(mov|mpg|mpeg|mp4)/i)
return "/assets/file_icon.png"

@file_item_template: _.template '''
<div class="file_item">
<a href="<%= url %>">
<img src="<%= iconUrl %>"/>
<span><%= fileName %></span>
</a>
</div>
'''


# TODO this part is very bad for APIs! shoudnt be exposing a backbone collection in a plugin.
@render: ($widget_el)->
$upload_form = @templates.dropzone({
channel_id: @channel_id(),
csrf_param: @csrf_param(),
csrf_token: @csrf_token(),
@render: ($widgetEl)->
$uploadForm = @templates.dropzone({
channelId: Kandan.Data.Channels.activeChannelId(),
csrfParam: @csrfParam(),
csrfToken: @csrfToken(),
dropzoneText: @options.defaultDropzoneText
})

$widget_el.next().html($upload_form)
$widget_el.next(".action_block").html($upload_form)
$widgetEl.next().html($uploadForm)
$widgetEl.next(".action_block").html($uploadForm)

populate = (collection)=>
if collection.models.length > 0
$file_list = $("<div class='file_list'></div>")
$fileList = $("<div class='file_list'></div>")
for model in collection.models
$file_list.append(@file_item_template({
fileName: @truncateName(model.get('file_file_name')),
url: model.get('url')
iconUrl: @fileIcon(model.get('file_file_name'))
}))
$fileList.append(
@templates.fileItemTemplate({
fileName: @truncateName(model.get('file_file_name')),
url: model.get('url')
iconUrl: @fileIcon(model.get('file_file_name'))
})
)
else
$file_list = @templates.no_files()
$widget_el.html($file_list)

$fileList = @templates.noFiles()
$widgetEl.html($fileList)
Kandan.Data.Attachments.all(populate)


Expand Down Expand Up @@ -116,20 +116,20 @@ class Kandan.Plugins.Attachments
progressUpdated: (i, file, progress)->
$(".dropzone").text("#{progress}% Uploaded")
if progress == 100
console.log "100% done"
$(".dropzone").text("#{progress}% Uploaded")
Kandan.Widgets.render "Kandan.Plugins.Attachments"

dragOver: ->
console.log "reached dropzone!"
})


@init: ()->
@initDropzone()
Kandan.Widgets.register @plugin_namespace
Kandan.Widgets.register @pluginNamespace

Kandan.Data.Attachments.registerCallback "change", ()=>
Kandan.Widgets.render @plugin_namespace
Kandan.Widgets.render @pluginNamespace

Kandan.Data.Channels.registerCallback "change", ()=>
Kandan.Widgets.render @plugin_namespace
Kandan.Widgets.render @pluginNamespace
12 changes: 0 additions & 12 deletions app/assets/javascripts/backbone/plugins/embeds.js.coffee

This file was deleted.

29 changes: 15 additions & 14 deletions app/assets/javascripts/backbone/plugins/image_embed.js.coffee
@@ -1,21 +1,22 @@
class Kandan.Plugins.ImageEmbed
@image_regex: /^http.*\.(jpg|jpeg|gif|png)/i
@options:
regex: /^http.*\.(jpg|jpeg|gif|png)/i

template: _.template '''
<div class="image-preview">
<a target="_blank" href="<%= image_url %>">
<img class="image-embed" src="<%= imageUrl %>" height="200" width="200" />
</a>
<div class="name"><%= name %></div>
</div>
'''

@image_template: _.template '''
<div class="image-preview">
<a target="_blank" href="<%= image_url %>">
<img class="image-embed" src="<%= image_url %>" height="200" width="200" />
</a>
<div class="name"><%= name %></div>
</div>
'''

@init: ()->
Kandan.Modifiers.register @image_regex, (message, state)=>
file_name = message.content.split("/").pop()
message.content = @image_template({
image_url: message.content,
name: file_name
Kandan.Modifiers.register @options.regex, (message, state)=>
fileName = message.content.split("/").pop()
message.content = @options.template({
imageUrl: message.content,
name: fileName
})
return Kandan.Helpers.Activities.build_from_message_template(message)
7 changes: 4 additions & 3 deletions app/assets/javascripts/backbone/plugins/link_embed.js.coffee
@@ -1,8 +1,9 @@
class Kandan.Plugins.LinkEmbed
@link_regex: /(http?:\S*)/g
@options:
regex: /(http?:\S*)/g

@init: ()->
Kandan.Modifiers.register @link_regex, (message, state)=>
Kandan.Modifiers.register @options.regex, (message, state)=>
message.content = message.content
.replace(@link_regex, '<a target="_blank" href="$1">$1</a>')
.replace(@options.regex, '<a target="_blank" href="$1">$1</a>')
return Kandan.Helpers.Activities.build_from_message_template(message)

0 comments on commit 42e95cb

Please sign in to comment.