Browse Source

grouping roster messages

Maxim Sokhatsky 11 years ago
parent
commit
6e6ef54c84
2 changed files with 24 additions and 2 deletions
  1. 12 1
      apps/web/priv/static/doc/svg.js
  2. 12 1
      apps/web/src/okey.erl

+ 12 - 1
apps/web/priv/static/doc/svg.js

@@ -35,6 +35,17 @@ function handle_web_socket(body) {
             var surnames = dec(body).value[0][3].value;
             addOnlineUser(id,names+" "+surnames+ " "+user_count++,'appendChild');
             break;
+        case 'roster_group':
+            var list     = dec(body).value[0][1];
+            console.log(list);
+            for (var i=0;i<list.length;i++) {
+                var item       = list[i];
+                var id       = item.value[0][0].value;
+                var names    = item.value[0][1].value;
+                var surnames = item.value[0][2].value;
+                addOnlineUser(id,names+" "+surnames+ " "+user_count++,'appendChild');
+            }
+            break;
         case 'roster_end':
             onlineHover();
             mouseWheelHandler({'detail':5,'wheelDelta':5});
@@ -112,7 +123,7 @@ function handle_web_socket(body) {
             }
             break;
         default:
-        // console.log(String(dec(body)));
+         console.log(String(dec(body)));
     }
 }
 

+ 12 - 1
apps/web/src/okey.erl

@@ -91,13 +91,24 @@ tash(C,V) -> {wf:to_binary([wf:to_list(C)," ",wf:to_list(V)]), {C, V}}.
 main() -> #dtl{file="index", bindings=[{title,<<"N2O">>},{body,body()}]}.
 
 send_roster() ->
-    X = [ send_roster_item(User) || User=#user{tokens=Tokens} <- kvs:all(user), Tokens /= [], Tokens /= undefined],
+%    X = [ send_roster_item(User) || User=#user{tokens=Tokens} <- kvs:all(user), Tokens /= [], Tokens /= undefined],
+    X = [ {User#user.id,User#user.names,User#user.surnames} || User=#user{tokens=Tokens} <- kvs:all(user), Tokens /= [], Tokens /= undefined],
+    Lists = split(20,X,[]),
+    [ send_roster_group(List) || List <- Lists],
     self() ! {server,{roster_end}},
     wf:info(?MODULE,"Users: ~p",[length(X)]).
 
+split(N,[],Result) -> Result; 
+split(N,List,Result) when length(List) < N -> Result ++ [List];
+split(N,List,Result) -> {A,B}=lists:split(N,List), Result ++ [A] ++ split(N,B,Result). 
+
 send_roster_item(User) ->
     self() ! {server,{roster_item,User#user.id,User#user.names,User#user.surnames}}.
 
+send_roster_group(List) ->
+    wf:info(?MODULE,"User Group: ~p",[List]),
+    self() ! {server,{roster_group,List}}.
+
 body() ->
     wf:wire(#api{name=plusLogin, tag=plus}),
   [ #panel    { id = history },