diff --git a/index.html b/index.html
index cb8179b..e9e792a 100644
--- a/index.html
+++ b/index.html
@@ -210,6 +210,16 @@ $ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out rel
+
+
+
@@ -228,7 +238,7 @@ $ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out rel
- {{ content.shortName }}{{ content.fullName }}
+ {{ content.indent(predicate) }}{{ content.shortName }}{{ content.fullName }}
diff --git a/js/models.js b/js/models.js
index bb9a41b..bd5d0e3 100644
--- a/js/models.js
+++ b/js/models.js
@@ -24,6 +24,16 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
var notification = 0
var unread = 0
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
if( message['notify'] != undefined ) {
@@ -115,7 +125,9 @@ models.service('models', ['$rootScope', '$filter', function($rootScope, $filter)
addNick: addNick,
delNick: delNick,
updateNick: updateNick,
- flatNicklist: flatNicklist
+ flatNicklist: flatNicklist,
+ serverSortKey: serverSortKey,
+ indent: indent
}
}
diff --git a/js/websockets.js b/js/websockets.js
index 793c73a..435021e 100644
--- a/js/websockets.js
+++ b/js/websockets.js
@@ -315,7 +315,6 @@ weechat.factory('connection', ['$q', '$rootScope', '$log', '$store', 'handlers',
models.setActiveBuffer(buffer.id);
}
}
- $rootScope.predicate = 'number';
});
@@ -517,12 +516,20 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
$store.bind($scope, "nonicklist", false);
// Save setting for displaying embeds
$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
$rootScope.visible = $scope.noembed == false;
// Watch model and update show setting when it changes
$scope.$watch('noembed', function() {
$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) {
models.setActiveBuffer(key);