Просмотр исходного кода

fix chat scroll. measure roster load

Maxim Sokhatsky 11 лет назад
Родитель
Сommit
f69c755fd7

+ 0 - 2
apps/web/priv/static/app/js/bootloader.js

@@ -104,8 +104,6 @@ function PatchSVG()
 
 function initChatSample() {
     chatMessage("Chat","0","Maxim","Kakaranet:\nThis is in-game chat");
-
-
     barHover();
     mouseWheelHandler({'detail':-100000,'wheelDelta':-100000});
     barHoverOut();

+ 19 - 2
apps/web/priv/static/app/js/chat.js

@@ -277,10 +277,12 @@ function initChat()
 
     document.getElementById('onlineChatEdit').setAttribute("contentEditable","true");
     document.getElementById('onlineChatEdit').onkeydown = chatEditor;
+    document.getElementById('onlineChatEdit').onfocus = chatEditorClearContent;
     document.getElementById("onlineChatEdit").style.display = 'none';
 
     document.getElementById('edit').setAttribute("contentEditable","true");
     document.getElementById('edit').onkeydown = chatEditor;
+    document.getElementById('edit').onfocus = chatEditorClearContent;
     document.getElementById("edit").style.display = '';
 
     document.getElementById('Page-1').addEventListener(mousewheelevt, mouseWheelHandler, false);
@@ -289,6 +291,12 @@ function initChat()
 
 var mousewheelevt=(/Firefox/i.test(navigator.userAgent))? "DOMMouseScroll" : "mousewheel";
 
+function chatEditorClearContent(evt) {
+    var e = evt.target;
+    var chatContainer = e.getAttribute("xmlns:data");
+    e.innerHTML = '';
+}
+
 function chatEditor(evt) {
     var chatContainer = evt.target.getAttribute("xmlns:data");
     if (evt.keyCode == 13 && evt.altKey == false) {
@@ -321,6 +329,15 @@ function chatEditor(evt) {
 //        document.execCommand('insertText',false, '\n');
     }
     var scroll = -100000;
-    if (null != currentChat) { left_scroll = scroll; }
-    mouseWheelHandler({'detail':scroll,'wheelDelta':scroll});
+    if (chatContainer == "Chat") { 
+        right_scroll = scroll;
+        barHover();
+        mouseWheelHandler({'detail':scroll,'wheelDelta':scroll});
+        barHoverOut();
+    } else {
+        left_scroll = scroll;
+        onlineHover();
+        mouseWheelHandler({'detail':scroll,'wheelDelta':scroll});
+        onlineHoverOut();
+    }
 }

+ 0 - 1
apps/web/priv/static/app/js/okey/okey_protocol.js

@@ -124,7 +124,6 @@ function OkeyApiProviderScope(scope) {
             }))));
         },
         pause: function(resume) {
-            console.log(resume ? "resume" : "pause");
             this.socket.send(enc(tuple(atom("client"),
                 tuple(atom("pause_game"),
                     atom("undefined"),

+ 3 - 0
apps/web/priv/static/app/js/roster.js

@@ -37,6 +37,9 @@ function RosterHandlers(scope) {
     scope.apiProvider.on("roster_end", function (x) {
         var e = {detail: x.detail.json, raw: x.detail.bert};
         if (currentChat == null) showOnlineList();
+        var now = new Date().getTime();
+        var page_load_time = now - perfCounter.start;
+        console.log("Roster Loaded: " + page_load_time + "ms");
     });
 
     scope.apiProvider.on("chat_message", function (x) {

+ 3 - 0
apps/web/priv/static/app/js/selector.js

@@ -1,3 +1,6 @@
+window.perfCounter = {};
+window.perfCounter.start = nowOffset = Date.now();
+
 var scope = {
     apiUrl: "ws://" + window.location.hostname + ":" + window.location.port + "/ws/",
 //    apiUrl: "ws://srv5.kakaranet.com:8080/ws/",

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

@@ -90,24 +90,27 @@ 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() ->
+send_roster(Pid) ->
 %    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(170,X,[]),
-    [ send_roster_group(List) || List <- Lists],
-    self() ! {server,{roster_end}},
+    [ send_roster_group(Pid,List) || List <- Lists],
+    Pid ! {server,{roster_end,length(Lists)}},
     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}}.
+already_online(Pid) ->
+    [ Pid ! {user_online,User} || {_,_,{_,User}} <- game:online() ].
+
+send_roster_item(Pid,User) ->
+    Pid ! {server,{roster_item,User#user.id,User#user.names,User#user.surnames}}.
 
-send_roster_group(List) ->
+send_roster_group(Pid,List) ->
     wf:info(?MODULE,"User Group: ~p",[List]),
-    self() ! {server,{roster_group,List}}.
+    Pid ! {server,{roster_group,List}}.
 
 body() -> [].
 
@@ -137,8 +140,6 @@ body2() ->
     #button   { id = pause,      body = "Pause",       postback = pause},
     #button   { id = info,       body = "PlayerInfo",  postback = player_info} ].
 
-already_online(Pid) ->
-    [ Pid ! {user_online,User} || {_,_,{_,User}} <- game:online() ].
 
 event(terminate) -> 
     User = user(),
@@ -184,8 +185,6 @@ event(attach) ->
     wf:reg(User#user.id),
     wf:info(?MODULE,"User Attach: ~p",[User]),
     gproc:set_value({p,l,broadcast},{wf:peer(?REQ),User}),
-    wf:send(broadcast,{user_online,User}),
-    send_roster(),
     wf:info(?MODULE,"Games Online: ~p",[game:online()]),
     put(okey_im, User#user.id),
     wf:wire(wf:f("document.user = '~s';document.names = '~s';document.surnames = '~s';",
@@ -196,7 +195,11 @@ event(attach) ->
     Token = auth_server:generate_token(GameId,User),
     wf:wire(protocol:attach(wf:f("'~s'",[Token]))),
     Pid = self(),
-    spawn(fun() -> already_online(Pid) end),
+    spawn(fun() ->
+        send_roster(Pid),
+        already_online(Pid),
+        wf:send(broadcast,{user_online,User})
+    end),
     ok;
 
 event(discard) ->