Add possibility to order channels hierarchically by server

This commit is contained in:
Lorenz H-S 2013-12-08 21:29:48 +00:00
parent c4d29a7eb0
commit 78121ff3a6
3 changed files with 32 additions and 3 deletions

View File

@ -210,6 +210,16 @@ $ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out rel
</div> </div>
</form> </form>
</li> </li>
<li class="">
<form class="form-inline" role="form">
<div class="checkbox">
<label>
<input type="checkbox" ng-model="orderbyserver">
Order channels by server
</label>
</div>
</form>
</li>
</ul> </ul>
</div> </div>
<a ng-click="disconnect()"> <a ng-click="disconnect()">
@ -228,7 +238,7 @@ $ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out rel
<a href="#" ng-click="setActiveBuffer(content.id)" title="{{ content.fullName }}"> <a href="#" ng-click="setActiveBuffer(content.id)" title="{{ content.fullName }}">
<span class="badge pull-right" ng-hide="content.notification" ng-if="content.unread" ng-bind="content.unread"></span> <span class="badge pull-right" ng-hide="content.notification" ng-if="content.unread" ng-bind="content.unread"></span>
<span class="badge pull-right danger" ng-show="content.notification" ng-bind="content.notification"></span> <span class="badge pull-right danger" ng-show="content.notification" ng-bind="content.notification"></span>
{{ content.shortName }}<span ng-hide="content.shortName">{{ content.fullName }}</span> {{ content.indent(predicate) }}{{ content.shortName }}<span ng-hide="content.shortName">{{ content.fullName }}</span>
</a> </a>
</li> </li>
</ul> </ul>

View File

@ -24,6 +24,16 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
var notification = 0 var notification = 0
var unread = 0 var unread = 0
var lastSeen = -2 var lastSeen = -2
var serverSortKey = fullName.replace(/^irc.server.(\w+)/, "irc.$1");
var indent = function(predicate) {
if( predicate == "serverSortKey" && fullName.match(/^irc./) && !fullName.match(/^irc.server./) ) {
// indent channel
return "    "; // four protected spaces
} else {
return "";
}
}
// Buffer opened message does not include notify level // Buffer opened message does not include notify level
if( message['notify'] != undefined ) { if( message['notify'] != undefined ) {
@ -115,7 +125,9 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
addNick: addNick, addNick: addNick,
delNick: delNick, delNick: delNick,
updateNick: updateNick, updateNick: updateNick,
flatNicklist: flatNicklist flatNicklist: flatNicklist,
serverSortKey: serverSortKey,
indent: indent
} }
} }

View File

@ -315,7 +315,6 @@ weechat.factory('connection', ['$q', '$rootScope', '$log', '$store', 'handlers',
models.setActiveBuffer(buffer.id); models.setActiveBuffer(buffer.id);
} }
} }
$rootScope.predicate = 'number';
}); });
@ -517,12 +516,20 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
$store.bind($scope, "nonicklist", false); $store.bind($scope, "nonicklist", false);
// Save setting for displaying embeds // Save setting for displaying embeds
$store.bind($scope, "noembed", false); $store.bind($scope, "noembed", false);
// Save setting for channel ordering
$store.bind($scope, "orderbyserver", false);
// Save setting for displaying embeds in rootscope so it can be used from service // Save setting for displaying embeds in rootscope so it can be used from service
$rootScope.visible = $scope.noembed == false; $rootScope.visible = $scope.noembed == false;
// Watch model and update show setting when it changes // Watch model and update show setting when it changes
$scope.$watch('noembed', function() { $scope.$watch('noembed', function() {
$rootScope.visible = $scope.noembed == false; $rootScope.visible = $scope.noembed == false;
}); });
// Watch model and update channel sorting when it changes
$scope.$watch('orderbyserver', function() {
$rootScope.predicate = $scope.orderbyserver ? 'serverSortKey' : 'number';
});
$rootScope.predicate = $scope.orderbyserver ? 'serverSortKey' : 'number';
$scope.setActiveBuffer = function(key) { $scope.setActiveBuffer = function(key) {
models.setActiveBuffer(key); models.setActiveBuffer(key);