drawCircle '+ (+(new Date()) - tm) +'ms');
};
-
+
/**
* Draw the saturation/luminance mask.
*/
@@ -232,9 +232,9 @@ $._farbtastic = function (container, options) {
outputPixel(x, y, c, a);
}
- }
+ }
}
-
+
// Method #1: direct pixel access (new Canvas).
if (fb.ctxMask.getImageData) {
// Create half-resolution buffer.
@@ -295,7 +295,7 @@ $._farbtastic = function (container, options) {
}
cache.push([c, a]);
});
- }
+ }
__debug && $('body').append('
drawMask '+ (+(new Date()) - tm) +'ms');
}
@@ -343,7 +343,7 @@ $._farbtastic = function (container, options) {
// Draw markers
fb.drawMarkers();
-
+
// Linked elements or callback
if (typeof fb.callback == 'object') {
// Set background/foreground color
@@ -363,15 +363,15 @@ $._farbtastic = function (container, options) {
fb.callback.call(fb, fb.color);
}
}
-
+
/**
* Helper for returning coordinates relative to the center.
*/
fb.widgetCoords = function (event) {
return {
- x: event.pageX - fb.offset.left - fb.mid,
+ x: event.pageX - fb.offset.left - fb.mid,
y: event.pageY - fb.offset.top - fb.mid
- };
+ };
}
/**
@@ -434,7 +434,7 @@ $._farbtastic = function (container, options) {
fb.packDX = function (c, a) {
return '#' + fb.dec2hex(a) + fb.dec2hex(c) + fb.dec2hex(c) + fb.dec2hex(c);
};
-
+
fb.pack = function (rgb) {
var r = Math.round(rgb[0] * 255);
var g = Math.round(rgb[1] * 255);
diff --git a/src/static/js/gritter.js b/src/static/js/gritter.js
index 7f8c5b6eb..f37650d1f 100644
--- a/src/static/js/gritter.js
+++ b/src/static/js/gritter.js
@@ -14,7 +14,7 @@
* Set it up as an object under the jQuery namespace
*/
$.gritter = {};
-
+
/**
* Set up global options that the user can over-ride
*/
@@ -23,7 +23,7 @@
class_name: '', // could be set to 'gritter-light' to use white notifications
time: 6000 // hang on the screen for...
}
-
+
/**
* Add a gritter notification to the screen
* @see Gritter#add();
@@ -33,16 +33,16 @@
try {
return Gritter.add(params || {});
} catch(e) {
-
+
var err = 'Gritter Error: ' + e;
- (typeof(console) != 'undefined' && console.error) ?
- console.error(err, params) :
+ (typeof(console) != 'undefined' && console.error) ?
+ console.error(err, params) :
alert(err);
-
+
}
-
+
}
-
+
/**
* Remove a gritter notification from the screen
* @see Gritter#removeSpecific();
@@ -50,7 +50,7 @@
$.gritter.remove = function(id, params){
Gritter.removeSpecific(id, params || {});
}
-
+
/**
* Remove all notifications
* @see Gritter#stop();
@@ -58,19 +58,19 @@
$.gritter.removeAll = function(params){
Gritter.stop(params || {});
}
-
+
/**
* Big fat Gritter object
* @constructor (not really since its object literal)
*/
var Gritter = {
-
+
// Public - options to over-ride with $.gritter.options in "add"
position: '',
fade_in_speed: '',
fade_out_speed: '',
time: '',
-
+
// Private - no touchy the private parts
_custom_timer: 0,
_item_count: 0,
@@ -79,7 +79,7 @@
_tpl_title: '
[[title]]',
_tpl_item: '
',
_tpl_wrap: '
',
-
+
/**
* Add a gritter notification to the screen
* @param {Object} params The object that contains all the options for drawing the notification
@@ -93,16 +93,16 @@
// We might have some issues if we don't have a title or text!
if(!params.text){
- throw 'You must supply "text" parameter.';
+ throw 'You must supply "text" parameter.';
}
-
+
// Check the options and set them once
if(!this._is_setup){
this._runSetup();
}
-
+
// Basics
- var title = params.title,
+ var title = params.title,
text = params.text,
image = params.image || '',
sticky = params.sticky || false,
@@ -111,11 +111,11 @@
time_alive = params.time || '';
this._verifyWrapper();
-
+
this._item_count++;
- var number = this._item_count,
+ var number = this._item_count,
tmp = this._tpl_item;
-
+
// Assign callbacks
$(['before_open', 'after_open', 'before_close', 'after_close']).each(function(i, val){
Gritter['_' + val + '_' + number] = ($.isFunction(params[val])) ? params[val] : function(){}
@@ -123,22 +123,22 @@
// Reset
this._custom_timer = 0;
-
+
// A custom fade time set
if(time_alive){
this._custom_timer = time_alive;
}
-
+
var image_str = (image != '') ? '
' : '',
class_name = (image != '') ? 'gritter-with-image' : 'gritter-without-image';
-
+
// String replacements on the template
if(title){
title = this._str_replace('[[title]]',title,this._tpl_title);
}else{
title = '';
}
-
+
tmp = this._str_replace(
['[[title]]', '[[text]]', '[[close]]', '[[image]]', '[[number]]', '[[class_name]]', '[[item_class]]'],
[title, text, this._tpl_close, image_str, this._item_count, class_name, item_class], tmp
@@ -150,21 +150,21 @@
}
$('#gritter-notice-wrapper').addClass(position).append(tmp);
-
+
var item = $('#gritter-item-' + this._item_count);
-
+
item.fadeIn(this.fade_in_speed, function(){
Gritter['_after_open_' + number]($(this));
});
-
+
if(!sticky){
this._setFadeTimer(item, number);
}
-
+
// Bind the hover/unhover states
$(item).bind('mouseenter mouseleave', function(event){
if(event.type == 'mouseenter'){
- if(!sticky){
+ if(!sticky){
Gritter._restoreItemIfFading($(this), number);
}
}
@@ -175,16 +175,16 @@
}
Gritter._hoverState($(this), event.type);
});
-
+
// Clicking (X) makes the perdy thing close
$(item).find('.gritter-close').click(function(){
Gritter.removeSpecific(number, {}, null, true);
});
-
+
return number;
-
+
},
-
+
/**
* If we don't have any more gritter notifications, get rid of the wrapper using this check
* @private
@@ -193,18 +193,18 @@
* @param {Boolean} manual_close Did we close the gritter dialog with the (X) button
*/
_countRemoveWrapper: function(unique_id, e, manual_close){
-
+
// Remove it then run the callback function
e.remove();
this['_after_close_' + unique_id](e, manual_close);
-
+
// Check if the wrapper is empty, if it is.. remove the wrapper
if($('.gritter-item-wrapper').length == 0){
$('#gritter-notice-wrapper').remove();
}
-
+
},
-
+
/**
* Fade out an element after it's been on the screen for x amount of time
* @private
@@ -221,15 +221,15 @@
manual_close = unbind_events;
this['_before_close_' + unique_id](e, manual_close);
-
+
// If this is true, then we are coming from clicking the (X)
if(unbind_events){
e.unbind('mouseenter mouseleave');
}
-
+
// Fade it out or remove it
if(fade){
-
+
e.animate({
opacity: 0
}, fade_out_speed, function(){
@@ -237,45 +237,45 @@
Gritter._countRemoveWrapper(unique_id, e, manual_close);
})
})
-
+
}
else {
-
+
this._countRemoveWrapper(unique_id, e);
-
+
}
-
+
},
-
+
/**
- * Perform actions based on the type of bind (mouseenter, mouseleave)
+ * Perform actions based on the type of bind (mouseenter, mouseleave)
* @private
* @param {Object} e The jQuery element
* @param {String} type The type of action we're performing: mouseenter or mouseleave
*/
_hoverState: function(e, type){
-
+
// Change the border styles and add the (X) close button when you hover
if(type == 'mouseenter'){
-
+
e.addClass('hover');
-
+
// Show close button
e.find('.gritter-close').show();
-
+
}
// Remove the border styles and hide (X) close button when you mouse out
else {
-
+
e.removeClass('hover');
-
+
// Hide close button
e.find('.gritter-close').hide();
-
+
}
-
+
},
-
+
/**
* Remove a specific notification based on an ID
* @param {Integer} unique_id The ID used to delete a specific notification
@@ -284,17 +284,17 @@
* @param {Boolean} unbind_events If we clicked on the (X) we set this to true to unbind mouseenter/mouseleave
*/
removeSpecific: function(unique_id, params, e, unbind_events){
-
+
if(!e){
var e = $('#gritter-item-' + unique_id);
}
- // We set the fourth param to let the _fade function know to
+ // We set the fourth param to let the _fade function know to
// unbind the "mouseleave" event. Once you click (X) there's no going back!
this._fade(e, unique_id, params || {}, unbind_events);
-
+
},
-
+
/**
* If the item is fading out and we hover over it, restore it!
* @private
@@ -302,25 +302,25 @@
* @param {Integer} unique_id The ID of the element
*/
_restoreItemIfFading: function(e, unique_id){
-
+
clearTimeout(this['_int_id_' + unique_id]);
e.stop().css({ opacity: '', height: '' });
-
+
},
-
+
/**
* Setup the global options - only once
* @private
*/
_runSetup: function(){
-
+
for(opt in $.gritter.options){
this[opt] = $.gritter.options[opt];
}
this._is_setup = 1;
-
+
},
-
+
/**
* Set the notification to fade out after a certain amount of time
* @private
@@ -328,88 +328,88 @@
* @param {Integer} unique_id The ID of the element
*/
_setFadeTimer: function(e, unique_id){
-
+
var timer_str = (this._custom_timer) ? this._custom_timer : this.time;
- this['_int_id_' + unique_id] = setTimeout(function(){
+ this['_int_id_' + unique_id] = setTimeout(function(){
Gritter._fade(e, unique_id);
}, timer_str);
-
+
},
-
+
/**
* Bring everything to a halt
* @param {Object} params A list of callback functions to pass when all notifications are removed
- */
+ */
stop: function(params){
-
+
// callbacks (if passed)
var before_close = ($.isFunction(params.before_close)) ? params.before_close : function(){};
var after_close = ($.isFunction(params.after_close)) ? params.after_close : function(){};
-
+
var wrap = $('#gritter-notice-wrapper');
before_close(wrap);
wrap.fadeOut(function(){
$(this).remove();
after_close();
});
-
+
},
-
+
/**
* An extremely handy PHP function ported to JS, works well for templating
* @private
* @param {String/Array} search A list of things to search for
* @param {String/Array} replace A list of things to replace the searches with
* @return {String} sa The output
- */
+ */
_str_replace: function(search, replace, subject, count){
-
+
var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
f = [].concat(search),
r = [].concat(replace),
s = subject,
ra = r instanceof Array, sa = s instanceof Array;
s = [].concat(s);
-
+
if(count){
this.window[count] = 0;
}
-
+
for(i = 0, sl = s.length; i < sl; i++){
-
+
if(s[i] === ''){
continue;
}
-
+
for (j = 0, fl = f.length; j < fl; j++){
-
+
temp = s[i] + '';
repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
s[i] = (temp).split(f[j]).join(repl);
-
+
if(count && s[i] !== temp){
this.window[count] += (temp.length-s[i].length) / f[j].length;
}
-
+
}
}
-
+
return sa ? s : s[0];
-
+
},
-
+
/**
* A check to make sure we have something to wrap our notices with
* @private
- */
+ */
_verifyWrapper: function(){
-
+
if($('#gritter-notice-wrapper').length == 0){
$('body').append(this._tpl_wrap);
}
-
+
}
-
+
}
-
+
})(jQuery);
diff --git a/tests/frontend/specs/change_user_color.js b/tests/frontend/specs/change_user_color.js
index 46a63637d..1ec1d8b72 100644
--- a/tests/frontend/specs/change_user_color.js
+++ b/tests/frontend/specs/change_user_color.js
@@ -12,7 +12,7 @@ describe("change user color", function(){
//click on the settings button to make settings visible
var $userButton = chrome$(".buttonicon-showusers");
$userButton.click();
-
+
var $userSwatch = chrome$("#myswatch");
$userSwatch.click();
@@ -66,7 +66,7 @@ describe("change user color", function(){
//click on the settings button to make settings visible
var $userButton = chrome$(".buttonicon-showusers");
$userButton.click();
-
+
var $userSwatch = chrome$("#myswatch");
$userSwatch.click();