Support weechat extended colors, sort buffers

This commit is contained in:
Tor Hveem 2013-10-06 13:42:45 +02:00
parent e88c1084ca
commit 8520c7251a
2 changed files with 75 additions and 8 deletions

View file

@ -46,12 +46,12 @@
</div> </div>
<div ng-show="connected"> <div ng-show="connected">
<span class="label" ng-class="{'label-success': content.notification }" ng-repeat="(key, content) in buffers"> <span class="label" ng-class="{'label-success': content.notification }" ng-repeat="(key, content) in buffers | toArray | orderBy:'content.number':true">
<a ng-click="setActiveBuffer(key)">{{ content.full_name }}</a> <a ng-click="setActiveBuffer(key)">{{ content.full_name }}</a>
</span> </span>
<div ng-repeat="bufferline in activeBuffer.lines"> <div ng-repeat="bufferline in activeBuffer.lines">
<span ng-repeat="part in bufferline.message" class="text {{ part.fg }}"> <span ng-repeat="part in bufferline.message" class="text" style="{{ part.fg }}">
{{ part.text }} {{ part.text }}
</span> </span>

View file

@ -1,9 +1,77 @@
var weechat = angular.module('weechat', ['localStorage']); var weechat = angular.module('weechat', ['localStorage']);
weechat.filter('toArray', function () {
'use strict';
return function (obj) {
if (!(obj instanceof Object)) {
return obj;
}
return Object.keys(obj).map(function (key) {
return Object.defineProperty(obj[key], '$key', {__proto__: null, value: key});
});
}
});
weechat.factory('colors', [function($scope) { weechat.factory('colors', [function($scope) {
// http://weechat.org/files/doc/devel/weechat_dev.en.html#color_codes_in_strings // http://weechat.org/files/doc/devel/weechat_dev.en.html#color_codes_in_strings
var part, fg, bg, attrs, colors = ['', 'black', 'dark gray', 'dark red', 'light red', 'dark green', 'light green', 'brown', 'yellow', 'dark blue', 'light blue', 'dark magenta', 'light magenta', 'dark cyan', 'light cyan', 'gray', 'white']; var part, fg, bg, attrs, colors = ['', 'black', 'dark gray', 'dark red', 'light red', 'dark green', 'light green', 'brown', 'yellow', 'dark blue', 'light blue', 'dark magenta', 'light magenta', 'dark cyan', 'light cyan', 'gray', 'white'];
// XTerm 8-bit pallete
var colors = [
'#000000', '#AA0000', '#00AA00', '#AA5500', '#0000AA',
'#AA00AA', '#00AAAA', '#AAAAAA', '#555555', '#FF5555',
'#55FF55', '#FFFF55', '#5555FF', '#FF55FF', '#55FFFF',
'#FFFFFF', '#000000', '#00005F', '#000087', '#0000AF',
'#0000D7', '#0000FF', '#005F00', '#005F5F', '#005F87',
'#005FAF', '#005FD7', '#005FFF', '#008700', '#00875F',
'#008787', '#0087AF', '#0087D7', '#00AF00', '#00AF5F',
'#00AF87', '#00AFAF', '#00AFD7', '#00AFFF', '#00D700',
'#00D75F', '#00D787', '#00D7AF', '#00D7D7', '#00D7FF',
'#00FF00', '#00FF5F', '#00FF87', '#00FFAF', '#00FFD7',
'#00FFFF', '#5F0000', '#5F005F', '#5F0087', '#5F00AF',
'#5F00D7', '#5F00FF', '#5F5F00', '#5F5F5F', '#5F5F87',
'#5F5FAF', '#5F5FD7', '#5F5FFF', '#5F8700', '#5F875F',
'#5F8787', '#5F87AF', '#5F87D7', '#5F87FF', '#5FAF00',
'#5FAF5F', '#5FAF87', '#5FAFAF', '#5FAFD7', '#5FAFFF',
'#5FD700', '#5FD75F', '#5FD787', '#5FD7AF', '#5FD7D7',
'#5FD7FF', '#5FFF00', '#5FFF5F', '#5FFF87', '#5FFFAF',
'#5FFFD7', '#5FFFFF', '#870000', '#87005F', '#870087',
'#8700AF', '#8700D7', '#8700FF', '#875F00', '#875F5F',
'#875F87', '#875FAF', '#875FD7', '#875FFF', '#878700',
'#87875F', '#878787', '#8787AF', '#8787D7', '#8787FF',
'#87AF00', '#87AF5F', '#87AF87', '#87AFAF', '#87AFD7',
'#87AFFF', '#87D700', '#87D75F', '#87D787', '#87D7AF',
'#87D7D7', '#87D7FF', '#87FF00', '#87FF5F', '#87FF87',
'#87FFAF', '#87FFD7', '#87FFFF', '#AF0000', '#AF005F',
'#AF0087', '#AF00AF', '#AF00D7', '#AF00FF', '#AF5F00',
'#AF5F5F', '#AF5F87', '#AF5FAF', '#AF5FD7', '#AF5FFF',
'#AF8700', '#AF875F', '#AF8787', '#AF87AF', '#AF87D7',
'#AF87FF', '#AFAF00', '#AFAF5F', '#AFAF87', '#AFAFAF',
'#AFAFD7', '#AFAFFF', '#AFD700', '#AFD75F', '#AFD787',
'#AFD7AF', '#AFD7D7', '#AFD7FF', '#AFFF00', '#AFFF5F',
'#AFFF87', '#AFFFAF', '#AFFFD7', '#AFFFFF', '#D70000',
'#D7005F', '#D70087', '#D700AF', '#D700D7', '#D700FF',
'#D75F00', '#D75F5F', '#D75F87', '#D75FAF', '#D75FD7',
'#D75FFF', '#D78700', '#D7875F', '#D78787', '#D787AF',
'#D787D7', '#D787FF', '#D7AF00', '#D7AF5F', '#D7AF87',
'#D7AFAF', '#D7AFD7', '#D7AFFF', '#D7D700', '#D7D75F',
'#D7D787', '#D7D7AF', '#D7D7D7', '#D7D7FF', '#D7FF00',
'#D7FF5F', '#D7FF87', '#D7FFAF', '#D7FFD7', '#D7FFFF',
'#FF0000', '#FF005F', '#FF0087', '#FF00AF', '#FF00D7',
'#FF00FF', '#FF5F00', '#FF5F5F', '#FF5F87', '#FF5FAF',
'#FF5FD7', '#FF5FFF', '#FF8700', '#FF875F', '#FF8787',
'#FF87AF', '#FF87D7', '#FF87FF', '#FFAF00', '#FFAF5F',
'#FFAF87', '#FFAFAF', '#FFAFD7', '#FFAFFF', '#FFD700',
'#FFD75F', '#FFD787', '#FFD7AF', '#FFD7D7', '#FFD7FF',
'#FFFF00', '#FFFF5F', '#FFFF87', '#FFFFAF', '#FFFFD7',
'#FFFFFF', '#080808', '#121212', '#1C1C1C', '#262626',
'#303030', '#3A3A3A', '#444444', '#4E4E4E', '#585858',
'#626262', '#6C6C6C', '#767676', '#808080', '#8A8A8A',
'#949494', '#9E9E9E', '#A8A8A8', '#B2B2B2', '#BCBCBC',
'#C6C6C6', '#D0D0D0', '#DADADA', '#E4E4E4', '#EEEEEE'
]
function setAttrs() { function setAttrs() {
while (part.match(/^[\*\/\_\|]/)) { while (part.match(/^[\*\/\_\|]/)) {
@ -15,8 +83,8 @@ weechat.factory('colors', [function($scope) {
function getColor() { function getColor() {
var c; var c;
if (part.match(/^@/)) { if (part.match(/^@/)) {
c = part.slice(1, 5); c = part.slice(1, 6);
part = part.slice(5); part = part.slice(6);
} else { } else {
c = part.slice(0, 2); c = part.slice(0, 2);
part = part.slice(2); part = part.slice(2);
@ -26,9 +94,9 @@ weechat.factory('colors', [function($scope) {
function prepareCss(color) { function prepareCss(color) {
/* /*
* Translates a weechat color string to CSS * Translates a weechat color to CSS
*/ */
return'color-' + color.replace(' ', '-'); return 'color: ' + color;
} }
var prefixes = { var prefixes = {
@ -208,7 +276,6 @@ weechat.factory('handlers', ['$rootScope', 'colors', 'pluginManager', function($
var tags_array = message['objects'][0]['content'][0]['tags_array']; var tags_array = message['objects'][0]['content'][0]['tags_array'];
var displayed = message['objects'][0]['content'][0]['displayed']; var displayed = message['objects'][0]['content'][0]['displayed'];
var highlight = message['objects'][0]['content'][0]['highlight']; var highlight = message['objects'][0]['content'][0]['highlight'];
console.log(highlight, tags_array);
var message = _.union(prefix, text); var message = _.union(prefix, text);
message =_.map(message, function(message) { message =_.map(message, function(message) {
if ('fg' in message) { if ('fg' in message) {
@ -342,7 +409,7 @@ weechat.factory('connection', ['$rootScope', '$log', 'handlers', 'colors', funct
send += "init compression=off,password=" + password + "\n"; send += "init compression=off,password=" + password + "\n";
} }
send += "(bufinfo) hdata buffer:gui_buffers(*) full_name\n"; send += "(bufinfo) hdata buffer:gui_buffers(*) number,full_name\n";
send += "sync\n"; send += "sync\n";
} else { } else {