From 8760cf028098b0b6a6bc17c3594da268bc9ad4dc Mon Sep 17 00:00:00 2001 From: Connor Turland Date: Mon, 9 Jun 2014 16:37:09 -0400 Subject: [PATCH] added new images and made realtime send more relevant messages including one when someone turns on realtime --- app/assets/images/MMCCicon_admin.png | Bin 0 -> 3820 bytes .../images/MMCCicon_metacode_set_change.png | Bin 0 -> 477 bytes app/assets/images/MMCCicon_save_new_map.png | Bin 554 -> 3527 bytes app/assets/images/metamap128x128.png | Bin 10138 -> 4095 bytes .../javascripts/jquery/AuthCanEditMapPage.js | 2 + app/assets/javascripts/realtime/realtime.js | 44 ++++++++++++++++-- app/assets/stylesheets/application.css | 6 ++- app/views/layouts/_account.html.erb | 2 +- app/views/maps/show.html.erb | 4 +- realtime/realtime-server.js | 20 ++++++++ 10 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 app/assets/images/MMCCicon_admin.png create mode 100644 app/assets/images/MMCCicon_metacode_set_change.png diff --git a/app/assets/images/MMCCicon_admin.png b/app/assets/images/MMCCicon_admin.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9a7673f4dcfce61e3a27855add3e3f209b73d GIT binary patch literal 3820 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 TMytZl00000NkvXXu0mjf%KXtd literal 0 HcmV?d00001 diff --git a/app/assets/images/MMCCicon_save_new_map.png b/app/assets/images/MMCCicon_save_new_map.png index 9138e6323cf3ee006b77bdc9cfcc59dd88023908..ac6d5e9594e4f68237664f0679989d63b43e5e39 100644 GIT binary patch delta 3518 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 delta 522 zcmV+l0`>jJ8>$45D}M_U000XU0RWnu7ytkO8FWQhbW?9;ba!ELWdK2BZ(?O2No`?g zWm08fWO;GPWjp`?0k=s+K~#9!?3wLtgfI+-x$6G689Uz=Rw`BHA0K$NvP(4!f)F6{NUWXeZ&AzK!7Ih8em#y9cq9W zh~5x$a?NZM0HF|-1pr)psQ_FcK0IR8uD+B2E)YPx9yx%^$I1r5d_YqG#6mEiM~-T< z10e*{UEERtfF;v}KrqF{tw{mUIi^b+M8El!nZjqmaepH~%F7(pEfn?ufW5BLDFA@) zQxA+O0D$jPkk=J{0T4sp;zTcH}6Nj00000 MNkvXXt^-0~g0C**q5uE@ diff --git a/app/assets/images/metamap128x128.png b/app/assets/images/metamap128x128.png index 6285f6d69fca1fc11573ace6639aec6b7b2d2b0c..e40527383387821d98cd28c9b50c5fb563755dba 100644 GIT binary patch delta 4061 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 P00000NkvXXu0mjf{F#CJ literal 10138 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 IM6N<$g62UtWB>pF diff --git a/app/assets/javascripts/jquery/AuthCanEditMapPage.js b/app/assets/javascripts/jquery/AuthCanEditMapPage.js index 79cf4760..0800caec 100644 --- a/app/assets/javascripts/jquery/AuthCanEditMapPage.js +++ b/app/assets/javascripts/jquery/AuthCanEditMapPage.js @@ -10,8 +10,10 @@ $(document).ready(function () { // because anyone who can edit the map can collaborate on it in realtime $(".sidebarCollaborateIcon").click(function (event) { if (!goRealtime) { + window.realtime.sendRealtimeOn(); $('.sidebarCollaborate .tip').html('Stop Realtime Collaboration'); } else { + window.realtime.sendRealtimeOff(); $('.sidebarCollaborate .tip').html('Start Realtime Collaboration'); } goRealtime = !goRealtime; diff --git a/app/assets/javascripts/realtime/realtime.js b/app/assets/javascripts/realtime/realtime.js index 20db2265..2428e3f3 100644 --- a/app/assets/javascripts/realtime/realtime.js +++ b/app/assets/javascripts/realtime/realtime.js @@ -6,7 +6,7 @@ window.realtime.notifyUser = function (message) { $('body').prepend('
'); } $('.notice.metamaps').hide().html(message).fadeIn('fast'); - + clearTimeout(window.realtime.notifyTimeOut); window.realtime.notifyTimeOut = setTimeout(function () { $('.notice.metamaps').fadeOut('fast'); @@ -34,9 +34,9 @@ window.realtime.setupSocket = function () { // data.userid // data.username - window.realtime.notifyUser(data.username + ' just came online'); + window.realtime.notifyUser(data.username + ' just joined the map'); - // send this new mapper back your details, and the awareness that you're online + // send this new mapper back your details, and the awareness that you've loaded the map var update = { userToNotify: data.userid, username: username, @@ -45,12 +45,28 @@ window.realtime.setupSocket = function () { }; socket.emit('updateNewMapperList', update); }); + + // receive word that there's a mapper turned on realtime + socket.on('maps-' + mapid + '-newrealtime', function (data) { + // data.userid + // data.username + + window.realtime.notifyUser(data.username + ' just turned on realtime'); + }); + + // receive word that there's a mapper turned on realtime + socket.on('maps-' + mapid + '-lostrealtime', function (data) { + // data.userid + // data.username + + window.realtime.notifyUser(data.username + ' just turned off realtime'); + }); socket.on('maps-' + mapid + '-lostmapper', function (data) { // data.userid // data.username - window.realtime.notifyUser(data.username + ' just went offline'); + window.realtime.notifyUser(data.username + ' just left the map'); }); socket.on('maps-' + mapid, function (data) { @@ -91,6 +107,26 @@ window.realtime.setupSocket = function () { }); }; +window.realtime.sendRealtimeOn = function () { + // send this new mapper back your details, and the awareness that you're online + var update = { + username: username, + userid: userid, + mapid: mapid + }; + window.realtime.socket.emit('notifyStartRealtime', update); +} + +window.realtime.sendRealtimeOff = function () { + // send this new mapper back your details, and the awareness that you're online + var update = { + username: username, + userid: userid, + mapid: mapid + }; + window.realtime.socket.emit('notifyStopRealtime', update); +} + window.realtime.addTopicToMap = function (topic) { var newPos, tempForT; Mconsole.graph.addNode(topic); diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css index 80db82c9..6bb0b6d6 100644 --- a/app/assets/stylesheets/application.css +++ b/app/assets/stylesheets/application.css @@ -290,7 +290,8 @@ input[type="submit"]:hover { display: block; height: 20px; width: 20px; - background: #0FFF2B; + background-image: url('MMCCicon_metacode_set_change.png'); + background-size:contain; position: absolute; z-index: 2; top: 20px; @@ -579,6 +580,9 @@ li.accountMaps { li.accountSettings { background-image: url('MMCCicon_settings.png'); } +li.accountAdmin { + background-image: url('MMCCicon_admin.png'); +} li.accountInvite { background-image: url('MMCCicon_invite.png'); } diff --git a/app/views/layouts/_account.html.erb b/app/views/layouts/_account.html.erb index 6d281697..d97fbb91 100644 --- a/app/views/layouts/_account.html.erb +++ b/app/views/layouts/_account.html.erb @@ -10,7 +10,7 @@
  • My Maps
  • <%= link_to "Account", edit_user_url(account) %>
  • <% if account.admin %> -
  • <%= link_to "Admin", metacodes_path %>
  • +
  • <%= link_to "Admin", metacodes_path %>
  • <% end %>
  • Share Invite
  • <%= link_to "Logout", "/sign_out", id: "Logout" %>
  • diff --git a/app/views/maps/show.html.erb b/app/views/maps/show.html.erb index 6fd4daf9..58a3b3a8 100644 --- a/app/views/maps/show.html.erb +++ b/app/views/maps/show.html.erb @@ -104,13 +104,13 @@ if (json.length > 0) { <% if authenticated? && (@map.permission == "commons" || @map.user == user) %> // this is for the heroku staging environment -window.realtime.socket = io.connect('http://gentle-savannah-1303.herokuapp.com'); +//window.realtime.socket = io.connect('http://gentle-savannah-1303.herokuapp.com'); // this is for metamaps.cc //window.realtime.socket = io.connect('http://metamaps.cc:5001'); // this is for localhost development -//window.realtime.socket = io.connect('http://localhost:5001'); +window.realtime.socket = io.connect('http://localhost:5001'); window.realtime.socket.on('connect', function () { console.log('socket connected'); diff --git a/realtime/realtime-server.js b/realtime/realtime-server.js index 9f448809..0f714535 100644 --- a/realtime/realtime-server.js +++ b/realtime/realtime-server.js @@ -80,6 +80,26 @@ function start() { socket.broadcast.emit('maps-' + mapid + '-lostmapper', data); }); }); + + // this will ping everyone on a map that someone just turned on realtime + socket.on('notifyStartRealtime', function (data) { + var newUser = { + userid: data.userid, + username: data.username + }; + + socket.broadcast.emit('maps-' + data.mapid + '-newrealtime', newUser); + }); + + // this will ping everyone on a map that someone just turned on realtime + socket.on('notifyStopRealtime', function (data) { + var newUser = { + userid: data.userid, + username: data.username + }; + + socket.broadcast.emit('maps-' + data.mapid + '-lostrealtime', newUser); + }); }); }