Implement infinite scrolling
I't not perfect but it's a start.
This commit is contained in:
parent
5dc0b4df02
commit
df36d56fa7
3 changed files with 34 additions and 1 deletions
|
@ -36,6 +36,7 @@
|
||||||
<script type="text/javascript" src="js/connection.js"></script>
|
<script type="text/javascript" src="js/connection.js"></script>
|
||||||
<script type="text/javascript" src="js/file-change.js"></script>
|
<script type="text/javascript" src="js/file-change.js"></script>
|
||||||
<script type="text/javascript" src="js/imgur-drop-directive.js"></script>
|
<script type="text/javascript" src="js/imgur-drop-directive.js"></script>
|
||||||
|
<script type="text/javascript" src="js/whenscrolled-directive.js"></script>
|
||||||
<script type="text/javascript" src="js/inputbar.js"></script>
|
<script type="text/javascript" src="js/inputbar.js"></script>
|
||||||
<script type="text/javascript" src="js/plugin-directive.js"></script>
|
<script type="text/javascript" src="js/plugin-directive.js"></script>
|
||||||
<script type="text/javascript" src="js/websockets.js"></script>
|
<script type="text/javascript" src="js/websockets.js"></script>
|
||||||
|
@ -264,7 +265,7 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div id="bufferlines" class="favorite-font" ng-swipe-right="showSidebar()" ng-swipe-left="hideSidebar()" ng-class="{'withnicklist': showNicklist}" imgur-drop>
|
<div id="bufferlines" class="favorite-font" ng-swipe-right="showSidebar()" ng-swipe-left="hideSidebar()" ng-class="{'withnicklist': showNicklist}" when-scrolled="infiniteScroll()" imgur-drop>
|
||||||
<div id="nicklist" ng-if="showNicklist" ng-swipe-right="closeNick()" class="vertical-line-left">
|
<div id="nicklist" ng-if="showNicklist" ng-swipe-right="closeNick()" class="vertical-line-left">
|
||||||
<ul class="nicklistgroup list-unstyled" ng-repeat="group in nicklist">
|
<ul class="nicklistgroup list-unstyled" ng-repeat="group in nicklist">
|
||||||
<li ng-repeat="nick in group.nicks|orderBy:'name'">
|
<li ng-repeat="nick in group.nicks|orderBy:'name'">
|
||||||
|
|
|
@ -539,6 +539,17 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
|
||||||
return connection.fetchMoreLines(numLines);
|
return connection.fetchMoreLines(numLines);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.infiniteScroll = function() {
|
||||||
|
// Check if we are already fetching
|
||||||
|
if ($rootScope.loadingLines) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var buffer = models.getActiveBuffer();
|
||||||
|
if (!buffer.allLinesFetched) {
|
||||||
|
$scope.fetchMoreLines();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$rootScope.updateBufferBottom = function(bottom) {
|
$rootScope.updateBufferBottom = function(bottom) {
|
||||||
var eob = document.getElementById("end-of-buffer");
|
var eob = document.getElementById("end-of-buffer");
|
||||||
var bl = document.getElementById('bufferlines');
|
var bl = document.getElementById('bufferlines');
|
||||||
|
|
21
js/whenscrolled-directive.js
Normal file
21
js/whenscrolled-directive.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
(function() {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var weechat = angular.module('weechat');
|
||||||
|
weechat.directive('whenScrolled', function() {
|
||||||
|
return function(scope, elm, attr) {
|
||||||
|
var raw = elm[0];
|
||||||
|
|
||||||
|
var fun = function() {
|
||||||
|
if (raw.scrollTop === 0) {
|
||||||
|
scope.$apply(attr.whenScrolled);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
elm.bind('scroll', function() {
|
||||||
|
_.debounce(fun, 200)();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
})();
|
Loading…
Reference in a new issue