From 96d1ed2c1d0861568f9953b9af0229d12f489527 Mon Sep 17 00:00:00 2001 From: Toshiharu Takematsu Date: Wed, 1 Jan 2014 17:49:40 +0900 Subject: [PATCH 1/4] Implement chat user name. Add title attribute. --- app/assets/javascripts/main.js.erb | 64 +++++++++++++----------- app/assets/javascripts/webrtc.js.erb | 32 +++++++++--- app/assets/stylesheets/channels.css.scss | 22 +++++++- 3 files changed, 80 insertions(+), 38 deletions(-) diff --git a/app/assets/javascripts/main.js.erb b/app/assets/javascripts/main.js.erb index b8b957a..b058ba1 100644 --- a/app/assets/javascripts/main.js.erb +++ b/app/assets/javascripts/main.js.erb @@ -16,6 +16,37 @@ function update_item_state(id, x, y) { drag_item_state.current.y = y; } +var pusher = null; +var channel = null; + +function bind_channel(channel) { + channel.bind('pusher:subscription_succeeded', function(members) { + members.each(function(member) { + add_member(member.id, member.info); + }); + }); + channel.bind('pusher:member_added', function(member) { + add_member(member.id, member.info); + }); + channel.bind('pusher:member_removed', function(member) { + remove_member(member.id, member.info); + }); + channel.bind('message_added', function(data) { + var $message = $('
  • ' + data.time + + ' (' + data.message.user_name + ') ' + + data.message.content + '
  • ').hide(); + $('ul.messages').prepend($message); + $message.fadeIn(); + if ($('#my_name').text() != data.message.user_name) { + webkit_notifications(data.message.user_name, data.message.content); + } + }); + channel.bind('item_move', show_item); + channel.bind('client-item_drag', item_move); +} + $(function(){ $('form.new_message') .on('ajax:beforeSend', function(event) { @@ -29,7 +60,7 @@ $(function(){ }); if ($('.messages').size() > 0) { - var pusher = new Pusher('<%= Pusher.key %>'); + pusher = new Pusher('<%= Pusher.key %>'); var pusher_connection_status = "initialized"; pusher.connection.bind('connected', function() { @@ -48,32 +79,8 @@ $(function(){ set_connection_status(false); }); - var channel = pusher.subscribe($('.messages').data('channel')); - channel.bind('pusher:subscription_succeeded', function(members) { - members.each(function(member) { - add_member(member.id, member.info); - }); - }); - channel.bind('pusher:member_added', function(member) { - add_member(member.id, member.info); - }); - channel.bind('pusher:member_removed', function(member) { - remove_member(member.id, member.info); - }); - channel.bind('message_added', function(data) { - var $message = $('
  • ' + data.time + - ' (' + data.message.user_name + ') ' + - data.message.content + '
  • ').hide(); - $('ul.messages').prepend($message); - $message.fadeIn(); - if ($('#my_name').text() != data.message.user_name) { - webkit_notifications(data.message.user_name, data.message.content); - } - }); - channel.bind('item_move', show_item); - channel.bind('client-item_drag', item_move); + channel = pusher.subscribe($('.messages').data('channel')); + bind_channel(channel); /* class名に"draggable"を持つオブジェクトをドラッグ可能にする */ var $draggable = $('.draggable'); @@ -375,9 +382,10 @@ function refresh_table(table) { function add_member(member_id, member_info) { var $members = $('.members'); - if ($members.find("li[data-member-id='"+member_id+"']").size() > 0) { return; } + if ($members.find("li[data-member-id='"+member_id+"']").size() > 0) { $members.find("li[data-member-id='"+member_id+"']").remove(); } var $member = $('
  • ' + member_info.name + '
  • '); $member.attr('data-member-id', member_id); + $member.attr('data-webrtc-id', member_info.webrtc_id); if ($('#my_name').text() == member_info.name) { $member.addClass('myself'); } diff --git a/app/assets/javascripts/webrtc.js.erb b/app/assets/javascripts/webrtc.js.erb index fa508b1..f135ee0 100755 --- a/app/assets/javascripts/webrtc.js.erb +++ b/app/assets/javascripts/webrtc.js.erb @@ -17,30 +17,33 @@ $(function() { rtc.on('add remote stream', function(stream, id){ var is_video_chat = stream.getVideoTracks().length > 0 ? true : false; - var $chat_user = is_video_chat ? $('') : $('
    '); + var $chat_user = $('
    '); + var $media = is_video_chat ? $('