Keybinds, Werk Tyme, more Mayhem-X-like IDColor
This commit is contained in:
parent
8c1ac1710a
commit
dc0b4d3d41
2
LICENSE
2
LICENSE
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.2.35 - 2013-08-23
|
* 4chan X - Version 1.2.35 - 2013-08-24
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.2.35 - 2013-08-23
|
* 4chan X - Version 1.2.35 - 2013-08-24
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
||||||
@ -161,7 +161,8 @@
|
|||||||
'Replace PNG': [false, 'Replace pngs.'],
|
'Replace PNG': [false, 'Replace pngs.'],
|
||||||
'Replace JPG': [false, 'Replace jpgs.'],
|
'Replace JPG': [false, 'Replace jpgs.'],
|
||||||
'Image Prefetching': [false, 'Preload images'],
|
'Image Prefetching': [false, 'Preload images'],
|
||||||
'Fappe Tyme': [false, 'Hide posts without images. *hint* *hint*']
|
'Fappe Tyme': [false, 'Hide posts without images. *hint* *hint*'],
|
||||||
|
'Werk Tyme': [false, 'Hide all post images.']
|
||||||
},
|
},
|
||||||
'Menu': {
|
'Menu': {
|
||||||
'Menu': [true, 'Add a drop-down menu to posts.'],
|
'Menu': [true, 'Add a drop-down menu to posts.'],
|
||||||
@ -287,7 +288,9 @@
|
|||||||
'Update': ['r', 'Update the thread now.'],
|
'Update': ['r', 'Update the thread now.'],
|
||||||
'Expand image': ['Shift+e', 'Expand selected image.'],
|
'Expand image': ['Shift+e', 'Expand selected image.'],
|
||||||
'Expand images': ['e', 'Expand all images.'],
|
'Expand images': ['e', 'Expand all images.'],
|
||||||
|
'Open Gallery': ['g', 'Opens the gallery.'],
|
||||||
'fappeTyme': ['f', 'Fappe Tyme.'],
|
'fappeTyme': ['f', 'Fappe Tyme.'],
|
||||||
|
'werkTyme': ['Shift+w', 'Werk Tyme'],
|
||||||
'Front page': ['0', 'Jump to page 0.'],
|
'Front page': ['0', 'Jump to page 0.'],
|
||||||
'Open front page': ['Shift+0', 'Open page 0 in a new tab.'],
|
'Open front page': ['Shift+0', 'Open page 0 in a new tab.'],
|
||||||
'Next page': ['Shift+Right', 'Jump to the next page.'],
|
'Next page': ['Shift+Right', 'Jump to the next page.'],
|
||||||
@ -6455,20 +6458,35 @@
|
|||||||
init: function() {
|
init: function() {
|
||||||
var el, input;
|
var el, input;
|
||||||
|
|
||||||
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
|
if (!(Conf['Fappe Tyme'] || Conf['Werk Tyme']) || g.VIEW === 'catalog' || g.BOARD === 'f') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
el = $.el('label', {
|
if (Conf['Fappe Tyme']) {
|
||||||
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme",
|
el = $.el('label', {
|
||||||
title: 'Fappe Tyme'
|
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme",
|
||||||
});
|
title: 'Fappe Tyme'
|
||||||
FappeTyme.input = input = el.firstElementChild;
|
});
|
||||||
$.on(input, 'change', FappeTyme.toggle);
|
FappeTyme.fappe = input = el.firstElementChild;
|
||||||
$.event('AddMenuEntry', {
|
$.on(input, 'change', FappeTyme.cb.fappe);
|
||||||
type: 'header',
|
$.event('AddMenuEntry', {
|
||||||
el: el,
|
type: 'header',
|
||||||
order: 97
|
el: el,
|
||||||
});
|
order: 97
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (Conf['Werk Tyme']) {
|
||||||
|
el = $.el('label', {
|
||||||
|
innerHTML: "<input type=checkbox name=werk-tyme> Werk Tyme",
|
||||||
|
title: 'Werk Tyme'
|
||||||
|
});
|
||||||
|
FappeTyme.werk = input = el.firstElementChild;
|
||||||
|
$.on(input, 'change', FappeTyme.cb.werk);
|
||||||
|
$.event('AddMenuEntry', {
|
||||||
|
type: 'header',
|
||||||
|
el: el,
|
||||||
|
order: 98
|
||||||
|
});
|
||||||
|
}
|
||||||
return Post.prototype.callbacks.push({
|
return Post.prototype.callbacks.push({
|
||||||
name: 'Fappe Tyme',
|
name: 'Fappe Tyme',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
@ -6480,9 +6498,15 @@
|
|||||||
}
|
}
|
||||||
return $.addClass(this.nodes.root, "noFile");
|
return $.addClass(this.nodes.root, "noFile");
|
||||||
},
|
},
|
||||||
toggle: function() {
|
cb: {
|
||||||
$.event('CloseMenu');
|
fappe: function() {
|
||||||
return (this.checked ? $.addClass : $.rmClass)(doc, 'fappeTyme');
|
$.toggleClass(doc, 'fappeTyme');
|
||||||
|
return FappeTyme.fappe.checked = $.hasClass(doc, 'fappeTyme');
|
||||||
|
},
|
||||||
|
werk: function() {
|
||||||
|
$.toggleClass(doc, 'werkTyme');
|
||||||
|
return FappeTyme.werk.checked = $.hasClass(doc, 'werkTyme');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -9357,36 +9381,40 @@
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var str, uid;
|
var rgb, span, style, uid;
|
||||||
|
|
||||||
if (this.isClone || !(str = this.info.uniqueID)) {
|
if (this.isClone || !(uid = this.info.uniqueID)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uid = $('.hand', this.nodes.uniqueID);
|
span = $('.hand', this.nodes.uniqueID);
|
||||||
if (!(uid && uid.nodeName === 'SPAN')) {
|
if (!(span && span.nodeName === 'SPAN')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return uid.style.cssText = IDColor.css(IDColor.ids[str] || IDColor.compute(str));
|
rgb = IDColor.compute(uid);
|
||||||
|
style = span.style;
|
||||||
|
style.color = rgb[3];
|
||||||
|
style.backgroundColor = "rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + ")";
|
||||||
|
$.addClass(span, painted);
|
||||||
|
return span.title = 'Highlight posts by this ID';
|
||||||
},
|
},
|
||||||
compute: function(str) {
|
compute: function(uid) {
|
||||||
var hash, rgb;
|
var hash, rgb;
|
||||||
|
|
||||||
hash = IDColor.hash(str);
|
if (IDColor.ids[uid]) {
|
||||||
|
return IDColor.ids[uid];
|
||||||
|
}
|
||||||
|
hash = IDColor.hash(uid);
|
||||||
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
|
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
|
||||||
rgb[3] = ((rgb[0] * 0.299) + (rgb[1] * 0.587) + (rgb[2] * 0.114)) > 125;
|
rgb[3] = (rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114) > 125 ? '#000' : '#fff';
|
||||||
this.ids[str] = rgb;
|
return this.ids[uid] = rgb;
|
||||||
return rgb;
|
|
||||||
},
|
},
|
||||||
css: function(rgb) {
|
hash: function(uid) {
|
||||||
return "background-color: rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "); color: " + (rgb[3] ? "#000" : "#fff") + "; border-radius: 3px; padding: 0px 2px;";
|
|
||||||
},
|
|
||||||
hash: function(str) {
|
|
||||||
var i, msg;
|
var i, msg;
|
||||||
|
|
||||||
msg = 0;
|
msg = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < 8) {
|
while (i < 8) {
|
||||||
msg = ((msg << 5) - msg) + str.charCodeAt(i++);
|
msg = (msg << 5) - msg + uid.charCodeAt(i++);
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
@ -10026,11 +10054,14 @@
|
|||||||
case Conf['Expand images']:
|
case Conf['Expand images']:
|
||||||
Keybinds.img(threadRoot, true);
|
Keybinds.img(threadRoot, true);
|
||||||
break;
|
break;
|
||||||
|
case Conf['Open Gallery']:
|
||||||
|
Gallery.cb.toggle();
|
||||||
|
break;
|
||||||
case Conf['fappeTyme']:
|
case Conf['fappeTyme']:
|
||||||
if (!$('#menu.left')) {
|
FappeTyme.cb.fappe();
|
||||||
Header.menuButton.click();
|
break;
|
||||||
}
|
case Conf['werkTyme']:
|
||||||
FappeTyme.input.click();
|
FappeTyme.cb.werk();
|
||||||
break;
|
break;
|
||||||
case Conf['Front page']:
|
case Conf['Front page']:
|
||||||
window.location = "/" + g.BOARD + "/0#delform";
|
window.location = "/" + g.BOARD + "/0#delform";
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.2.35 - 2013-08-23
|
* 4chan X - Version 1.2.35 - 2013-08-24
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
* https://github.com/seaweedchan/4chan-x/blob/master/LICENSE
|
||||||
@ -140,7 +140,8 @@
|
|||||||
'Replace PNG': [false, 'Replace pngs.'],
|
'Replace PNG': [false, 'Replace pngs.'],
|
||||||
'Replace JPG': [false, 'Replace jpgs.'],
|
'Replace JPG': [false, 'Replace jpgs.'],
|
||||||
'Image Prefetching': [false, 'Preload images'],
|
'Image Prefetching': [false, 'Preload images'],
|
||||||
'Fappe Tyme': [false, 'Hide posts without images. *hint* *hint*']
|
'Fappe Tyme': [false, 'Hide posts without images. *hint* *hint*'],
|
||||||
|
'Werk Tyme': [false, 'Hide all post images.']
|
||||||
},
|
},
|
||||||
'Menu': {
|
'Menu': {
|
||||||
'Menu': [true, 'Add a drop-down menu to posts.'],
|
'Menu': [true, 'Add a drop-down menu to posts.'],
|
||||||
@ -266,7 +267,9 @@
|
|||||||
'Update': ['r', 'Update the thread now.'],
|
'Update': ['r', 'Update the thread now.'],
|
||||||
'Expand image': ['Shift+e', 'Expand selected image.'],
|
'Expand image': ['Shift+e', 'Expand selected image.'],
|
||||||
'Expand images': ['e', 'Expand all images.'],
|
'Expand images': ['e', 'Expand all images.'],
|
||||||
|
'Open Gallery': ['g', 'Opens the gallery.'],
|
||||||
'fappeTyme': ['f', 'Fappe Tyme.'],
|
'fappeTyme': ['f', 'Fappe Tyme.'],
|
||||||
|
'werkTyme': ['Shift+w', 'Werk Tyme'],
|
||||||
'Front page': ['0', 'Jump to page 0.'],
|
'Front page': ['0', 'Jump to page 0.'],
|
||||||
'Open front page': ['Shift+0', 'Open page 0 in a new tab.'],
|
'Open front page': ['Shift+0', 'Open page 0 in a new tab.'],
|
||||||
'Next page': ['Shift+Right', 'Jump to the next page.'],
|
'Next page': ['Shift+Right', 'Jump to the next page.'],
|
||||||
@ -6440,20 +6443,35 @@
|
|||||||
init: function() {
|
init: function() {
|
||||||
var el, input;
|
var el, input;
|
||||||
|
|
||||||
if (!Conf['Fappe Tyme'] || g.VIEW === 'catalog' || g.BOARD === 'f') {
|
if (!(Conf['Fappe Tyme'] || Conf['Werk Tyme']) || g.VIEW === 'catalog' || g.BOARD === 'f') {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
el = $.el('label', {
|
if (Conf['Fappe Tyme']) {
|
||||||
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme",
|
el = $.el('label', {
|
||||||
title: 'Fappe Tyme'
|
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme",
|
||||||
});
|
title: 'Fappe Tyme'
|
||||||
FappeTyme.input = input = el.firstElementChild;
|
});
|
||||||
$.on(input, 'change', FappeTyme.toggle);
|
FappeTyme.fappe = input = el.firstElementChild;
|
||||||
$.event('AddMenuEntry', {
|
$.on(input, 'change', FappeTyme.cb.fappe);
|
||||||
type: 'header',
|
$.event('AddMenuEntry', {
|
||||||
el: el,
|
type: 'header',
|
||||||
order: 97
|
el: el,
|
||||||
});
|
order: 97
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (Conf['Werk Tyme']) {
|
||||||
|
el = $.el('label', {
|
||||||
|
innerHTML: "<input type=checkbox name=werk-tyme> Werk Tyme",
|
||||||
|
title: 'Werk Tyme'
|
||||||
|
});
|
||||||
|
FappeTyme.werk = input = el.firstElementChild;
|
||||||
|
$.on(input, 'change', FappeTyme.cb.werk);
|
||||||
|
$.event('AddMenuEntry', {
|
||||||
|
type: 'header',
|
||||||
|
el: el,
|
||||||
|
order: 98
|
||||||
|
});
|
||||||
|
}
|
||||||
return Post.prototype.callbacks.push({
|
return Post.prototype.callbacks.push({
|
||||||
name: 'Fappe Tyme',
|
name: 'Fappe Tyme',
|
||||||
cb: this.node
|
cb: this.node
|
||||||
@ -6465,9 +6483,15 @@
|
|||||||
}
|
}
|
||||||
return $.addClass(this.nodes.root, "noFile");
|
return $.addClass(this.nodes.root, "noFile");
|
||||||
},
|
},
|
||||||
toggle: function() {
|
cb: {
|
||||||
$.event('CloseMenu');
|
fappe: function() {
|
||||||
return (this.checked ? $.addClass : $.rmClass)(doc, 'fappeTyme');
|
$.toggleClass(doc, 'fappeTyme');
|
||||||
|
return FappeTyme.fappe.checked = $.hasClass(doc, 'fappeTyme');
|
||||||
|
},
|
||||||
|
werk: function() {
|
||||||
|
$.toggleClass(doc, 'werkTyme');
|
||||||
|
return FappeTyme.werk.checked = $.hasClass(doc, 'werkTyme');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -9348,36 +9372,40 @@
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
node: function() {
|
node: function() {
|
||||||
var str, uid;
|
var rgb, span, style, uid;
|
||||||
|
|
||||||
if (this.isClone || !(str = this.info.uniqueID)) {
|
if (this.isClone || !(uid = this.info.uniqueID)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
uid = $('.hand', this.nodes.uniqueID);
|
span = $('.hand', this.nodes.uniqueID);
|
||||||
if (!(uid && uid.nodeName === 'SPAN')) {
|
if (!(span && span.nodeName === 'SPAN')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
return uid.style.cssText = IDColor.css(IDColor.ids[str] || IDColor.compute(str));
|
rgb = IDColor.compute(uid);
|
||||||
|
style = span.style;
|
||||||
|
style.color = rgb[3];
|
||||||
|
style.backgroundColor = "rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + ")";
|
||||||
|
$.addClass(span, painted);
|
||||||
|
return span.title = 'Highlight posts by this ID';
|
||||||
},
|
},
|
||||||
compute: function(str) {
|
compute: function(uid) {
|
||||||
var hash, rgb;
|
var hash, rgb;
|
||||||
|
|
||||||
hash = IDColor.hash(str);
|
if (IDColor.ids[uid]) {
|
||||||
|
return IDColor.ids[uid];
|
||||||
|
}
|
||||||
|
hash = IDColor.hash(uid);
|
||||||
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
|
rgb = [(hash >> 24) & 0xFF, (hash >> 16) & 0xFF, (hash >> 8) & 0xFF];
|
||||||
rgb[3] = ((rgb[0] * 0.299) + (rgb[1] * 0.587) + (rgb[2] * 0.114)) > 125;
|
rgb[3] = (rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114) > 125 ? '#000' : '#fff';
|
||||||
this.ids[str] = rgb;
|
return this.ids[uid] = rgb;
|
||||||
return rgb;
|
|
||||||
},
|
},
|
||||||
css: function(rgb) {
|
hash: function(uid) {
|
||||||
return "background-color: rgb(" + rgb[0] + "," + rgb[1] + "," + rgb[2] + "); color: " + (rgb[3] ? "#000" : "#fff") + "; border-radius: 3px; padding: 0px 2px;";
|
|
||||||
},
|
|
||||||
hash: function(str) {
|
|
||||||
var i, msg;
|
var i, msg;
|
||||||
|
|
||||||
msg = 0;
|
msg = 0;
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < 8) {
|
while (i < 8) {
|
||||||
msg = ((msg << 5) - msg) + str.charCodeAt(i++);
|
msg = (msg << 5) - msg + uid.charCodeAt(i++);
|
||||||
}
|
}
|
||||||
return msg;
|
return msg;
|
||||||
}
|
}
|
||||||
@ -10017,11 +10045,14 @@
|
|||||||
case Conf['Expand images']:
|
case Conf['Expand images']:
|
||||||
Keybinds.img(threadRoot, true);
|
Keybinds.img(threadRoot, true);
|
||||||
break;
|
break;
|
||||||
|
case Conf['Open Gallery']:
|
||||||
|
Gallery.cb.toggle();
|
||||||
|
break;
|
||||||
case Conf['fappeTyme']:
|
case Conf['fappeTyme']:
|
||||||
if (!$('#menu.left')) {
|
FappeTyme.cb.fappe();
|
||||||
Header.menuButton.click();
|
break;
|
||||||
}
|
case Conf['werkTyme']:
|
||||||
FappeTyme.input.click();
|
FappeTyme.cb.werk();
|
||||||
break;
|
break;
|
||||||
case Conf['Front page']:
|
case Conf['Front page']:
|
||||||
window.location = "/" + g.BOARD + "/0#delform";
|
window.location = "/" + g.BOARD + "/0#delform";
|
||||||
|
|||||||
@ -179,6 +179,10 @@ Config =
|
|||||||
false
|
false
|
||||||
'Hide posts without images. *hint* *hint*'
|
'Hide posts without images. *hint* *hint*'
|
||||||
]
|
]
|
||||||
|
'Werk Tyme': [
|
||||||
|
false
|
||||||
|
'Hide all post images.'
|
||||||
|
]
|
||||||
|
|
||||||
'Menu':
|
'Menu':
|
||||||
'Menu': [
|
'Menu': [
|
||||||
@ -604,10 +608,18 @@ q-replace
|
|||||||
'e'
|
'e'
|
||||||
'Expand all images.'
|
'Expand all images.'
|
||||||
]
|
]
|
||||||
|
'Open Gallery': [
|
||||||
|
'g'
|
||||||
|
'Opens the gallery.'
|
||||||
|
]
|
||||||
'fappeTyme': [
|
'fappeTyme': [
|
||||||
'f'
|
'f'
|
||||||
'Fappe Tyme.'
|
'Fappe Tyme.'
|
||||||
]
|
]
|
||||||
|
'werkTyme': [
|
||||||
|
'Shift+w'
|
||||||
|
'Werk Tyme'
|
||||||
|
]
|
||||||
# Board Navigation
|
# Board Navigation
|
||||||
'Front page': [
|
'Front page': [
|
||||||
'0'
|
'0'
|
||||||
|
|||||||
@ -1,18 +1,34 @@
|
|||||||
FappeTyme =
|
FappeTyme =
|
||||||
init: ->
|
init: ->
|
||||||
return if !Conf['Fappe Tyme'] or g.VIEW is 'catalog' or g.BOARD is 'f'
|
return if !(Conf['Fappe Tyme'] or Conf['Werk Tyme']) or g.VIEW is 'catalog' or g.BOARD is 'f'
|
||||||
el = $.el 'label',
|
|
||||||
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme"
|
|
||||||
title: 'Fappe Tyme'
|
|
||||||
|
|
||||||
FappeTyme.input = input = el.firstElementChild
|
|
||||||
|
|
||||||
$.on input, 'change', FappeTyme.toggle
|
if Conf['Fappe Tyme']
|
||||||
|
el = $.el 'label',
|
||||||
|
innerHTML: "<input type=checkbox name=fappe-tyme> Fappe Tyme"
|
||||||
|
title: 'Fappe Tyme'
|
||||||
|
|
||||||
$.event 'AddMenuEntry',
|
FappeTyme.fappe = input = el.firstElementChild
|
||||||
type: 'header'
|
|
||||||
el: el
|
$.on input, 'change', FappeTyme.cb.fappe
|
||||||
order: 97
|
|
||||||
|
$.event 'AddMenuEntry',
|
||||||
|
type: 'header'
|
||||||
|
el: el
|
||||||
|
order: 97
|
||||||
|
|
||||||
|
if Conf['Werk Tyme']
|
||||||
|
el = $.el 'label',
|
||||||
|
innerHTML: "<input type=checkbox name=werk-tyme> Werk Tyme"
|
||||||
|
title: 'Werk Tyme'
|
||||||
|
|
||||||
|
FappeTyme.werk = input = el.firstElementChild
|
||||||
|
|
||||||
|
$.on input, 'change', FappeTyme.cb.werk
|
||||||
|
|
||||||
|
$.event 'AddMenuEntry',
|
||||||
|
type: 'header'
|
||||||
|
el: el
|
||||||
|
order: 98
|
||||||
|
|
||||||
Post::callbacks.push
|
Post::callbacks.push
|
||||||
name: 'Fappe Tyme'
|
name: 'Fappe Tyme'
|
||||||
@ -22,6 +38,10 @@ FappeTyme =
|
|||||||
return if @file
|
return if @file
|
||||||
$.addClass @nodes.root, "noFile"
|
$.addClass @nodes.root, "noFile"
|
||||||
|
|
||||||
toggle: ->
|
cb:
|
||||||
$.event 'CloseMenu'
|
fappe: ->
|
||||||
(if @checked then $.addClass else $.rmClass) doc, 'fappeTyme'
|
$.toggleClass doc, 'fappeTyme'
|
||||||
|
FappeTyme.fappe.checked = $.hasClass doc, 'fappeTyme'
|
||||||
|
werk: ->
|
||||||
|
$.toggleClass doc, 'werkTyme'
|
||||||
|
FappeTyme.werk.checked = $.hasClass doc, 'werkTyme'
|
||||||
@ -1,7 +1,6 @@
|
|||||||
IDColor =
|
IDColor =
|
||||||
init: ->
|
init: ->
|
||||||
return if g.VIEW is 'catalog' or !Conf['Color User IDs']
|
return if g.VIEW is 'catalog' or not Conf['Color User IDs']
|
||||||
|
|
||||||
@ids = {}
|
@ids = {}
|
||||||
|
|
||||||
Post::callbacks.push
|
Post::callbacks.push
|
||||||
@ -9,30 +8,34 @@ IDColor =
|
|||||||
cb: @node
|
cb: @node
|
||||||
|
|
||||||
node: ->
|
node: ->
|
||||||
return if @isClone or not str = @info.uniqueID
|
return if @isClone or not uid = @info.uniqueID
|
||||||
uid = $ '.hand', @nodes.uniqueID
|
span = $ '.hand', @nodes.uniqueID
|
||||||
return unless uid and uid.nodeName is 'SPAN'
|
return unless span and span.nodeName is 'SPAN'
|
||||||
uid.style.cssText = IDColor.css IDColor.ids[str] or IDColor.compute str
|
rgb = IDColor.compute uid
|
||||||
|
{style} = span
|
||||||
|
style.color = rgb[3]
|
||||||
|
style.backgroundColor = "rgb(#{rgb[0]},#{rgb[1]},#{rgb[2]})"
|
||||||
|
$.addClass span, painted
|
||||||
|
span.title = 'Highlight posts by this ID'
|
||||||
|
|
||||||
compute: (str) ->
|
compute: (uid) ->
|
||||||
hash = IDColor.hash str
|
return IDColor.ids[uid] if IDColor.ids[uid]
|
||||||
|
|
||||||
|
hash = IDColor.hash uid
|
||||||
rgb = [
|
rgb = [
|
||||||
(hash >> 24) & 0xFF
|
(hash >> 24) & 0xFF
|
||||||
(hash >> 16) & 0xFF
|
(hash >> 16) & 0xFF
|
||||||
(hash >> 8) & 0xFF
|
(hash >> 8) & 0xFF
|
||||||
]
|
]
|
||||||
|
rgb[3] = if (rgb[0] * 0.299 + rgb[1] * 0.587 + rgb[2] * 0.114) > 125
|
||||||
|
'#000'
|
||||||
|
else
|
||||||
|
'#fff'
|
||||||
|
@ids[uid] = rgb
|
||||||
|
|
||||||
rgb[3] = ((rgb[0] * 0.299) + (rgb[1] * 0.587) + (rgb[2] * 0.114)) > 125
|
hash: (uid) ->
|
||||||
|
|
||||||
@ids[str] = rgb
|
|
||||||
rgb
|
|
||||||
|
|
||||||
css: (rgb) -> "background-color: rgb(#{rgb[0]},#{rgb[1]},#{rgb[2]}); color: #{if rgb[3] then "#000" else "#fff"}; border-radius: 3px; padding: 0px 2px;"
|
|
||||||
|
|
||||||
hash: (str) ->
|
|
||||||
msg = 0
|
msg = 0
|
||||||
i = 0
|
i = 0
|
||||||
while i < 8
|
while i < 8
|
||||||
msg = ((msg << 5) - msg) + str.charCodeAt i++
|
msg = (msg << 5) - msg + uid.charCodeAt i++
|
||||||
msg
|
msg
|
||||||
@ -69,10 +69,12 @@ Keybinds =
|
|||||||
Keybinds.img threadRoot
|
Keybinds.img threadRoot
|
||||||
when Conf['Expand images']
|
when Conf['Expand images']
|
||||||
Keybinds.img threadRoot, true
|
Keybinds.img threadRoot, true
|
||||||
|
when Conf['Open Gallery']
|
||||||
|
Gallery.cb.toggle()
|
||||||
when Conf['fappeTyme']
|
when Conf['fappeTyme']
|
||||||
unless $('#menu.left')
|
FappeTyme.cb.fappe()
|
||||||
Header.menuButton.click()
|
when Conf['werkTyme']
|
||||||
FappeTyme.input.click()
|
FappeTyme.cb.werk()
|
||||||
# Board Navigation
|
# Board Navigation
|
||||||
when Conf['Front page']
|
when Conf['Front page']
|
||||||
window.location = "/#{g.BOARD}/0#delform"
|
window.location = "/#{g.BOARD}/0#delform"
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user