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.
This commit is contained in:
Kegan Dougal 2014-09-23 16:53:27 +01:00
parent e4e8ad6780
commit a7420ff2b5
2 changed files with 16 additions and 2 deletions

View file

@ -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.

View file

@ -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>