diff options
author | Kegan Dougal <kegan@matrix.org> | 2014-09-23 16:53:27 +0100 |
---|---|---|
committer | Kegan Dougal <kegan@matrix.org> | 2014-09-23 16:56:54 +0100 |
commit | a7420ff2b5b2880bded6d13b548607028113397f (patch) | |
tree | ea087718a08e7d8a7f6a49f6ca1267583a63d1c6 | |
parent | SYWEB-28: Fixed weird members list ordering: sort members on their last activ... (diff) | |
download | synapse-a7420ff2b5b2880bded6d13b548607028113397f.tar.xz |
Fix SYWEB-72 : Improve performance when typing.
Swapped ng-keydown to a directive, which does the same thing (check if up/down arrow then call history.goUp/goDown). This has *dramatically* improved performance when typing in rooms which have lots (>100) of messages loaded.
-rw-r--r-- | webclient/room/room-directive.js | 15 | ||||
-rw-r--r-- | webclient/room/room.html | 3 |
2 files changed, 16 insertions, 2 deletions
diff --git a/webclient/room/room-directive.js b/webclient/room/room-directive.js index 8db4cb5d9a..d5108b5f1c 100644 --- a/webclient/room/room-directive.js +++ b/webclient/room/room-directive.js @@ -135,6 +135,21 @@ angular.module('RoomController') }); }; }]) +.directive('commandHistory', [ function() { + return function (scope, element, attrs) { + element.bind("keydown keypress", function (event) { + var keycodePressed = event.which; + var UP_ARROW = 38; + var DOWN_ARROW = 40; + if (keycodePressed === UP_ARROW) { + scope.history.goUp(event); + } + else if (keycodePressed === DOWN_ARROW) { + scope.history.goDown(event); + } + }); + } +}]) // A directive to anchor the scroller position at the bottom when the browser is resizing. // When the screen resizes, the bottom of the element remains the same, not the top. diff --git a/webclient/room/room.html b/webclient/room/room.html index c807e2afe1..2786246232 100644 --- a/webclient/room/room.html +++ b/webclient/room/room.html @@ -163,8 +163,7 @@ <td width="*"> <textarea id="mainInput" rows="1" ng-enter="send()" ng-disabled="state.permission_denied" - ng-keydown="(38 === $event.which) ? history.goUp($event) : ((40 === $event.which) ? history.goDown($event) : 0)" - ng-focus="true" autocomplete="off" tab-complete/> + ng-focus="true" autocomplete="off" tab-complete command-history/> </td> <td id="buttonsCell"> <button ng-click="send()" ng-disabled="state.permission_denied">Send</button> |