diff options
author | Scott González <scott.gonzalez@gmail.com> | 2008-07-15 01:32:24 +0000 |
---|---|---|
committer | Scott González <scott.gonzalez@gmail.com> | 2008-07-15 01:32:24 +0000 |
commit | de8a6ea866e596e7777cc70300a906eb54e6794a (patch) | |
tree | 97a40990eb842ac1f80a1714aba1b1cb1488781e | |
parent | 5750375701b0e15d8010208fad5f912c44adaba9 (diff) | |
download | jquery-ui-de8a6ea866e596e7777cc70300a906eb54e6794a.tar.gz jquery-ui-de8a6ea866e596e7777cc70300a906eb54e6794a.zip |
Magnifier: Partial cleanup.
-rw-r--r-- | ui/ui.magnifier.js | 118 |
1 files changed, 54 insertions, 64 deletions
diff --git a/ui/ui.magnifier.js b/ui/ui.magnifier.js index e40e6f3f4..754db9273 100644 --- a/ui/ui.magnifier.js +++ b/ui/ui.magnifier.js @@ -12,74 +12,80 @@ */
(function($) {
+var counter = 0;
+
$.widget("ui.magnifier", {
init: function() {
-
- var self = this, o = this.options;
- this.items = [];
+ var self = this,
+ o = this.options;
+
this.element.addClass("ui-magnifier");
- if(!(/^(r|a)/).test(this.element.css("position"))) this.element.css("position", "relative");
+ if (!(/^(r|a)/).test(this.element.css("position"))) {
+ this.element.css("position", "relative");
+ }
this.pp = this.element.offset();
- $(o.items, this.element).each(function() {
-
+ this.items = [];
+ this.element.find(o.items).each(function() {
+ var $this = $(this);
+ // TODO: use a hash so references to this data is readable
self.items.push([
this,
- $(this).offset(),
- [$(this).width(),$(this).height()],
- (o.overlap ? $(this).position() : null)
+ $this.offset(),
+ [$this.width(),$this.height()],
+ (o.overlap ? $this.position() : null)
]);
-
- if(o.opacity)
- $(this).css('opacity', o.opacity.min);
-
+
+ (o.opacity && $this.css('opacity', o.opacity.min));
});
-
- if(o.overlap) {
- for(var i=0;i<this.items.length;i++) {
+
+ if (o.overlap) {
+ for (var i=0; i<this.items.length; i++) {
//Absolutize
$(this.items[i][0]).css({
position: "absolute",
top: this.items[i][3].top,
left: this.items[i][3].left
});
- };
+ }
}
- this.identifier = ++$.ui.magnifier.counter;
+ this.identifier = ++counter;
$(document).bind("mousemove.magnifier"+this.identifier, function(e) {
- if(!self.disabled) self.magnify.apply(self, [e]);
+ (self.disabled || self.magnify.apply(self, [e]));
});
- if(o.click) {
+ if (o.click) {
this.element.bind('click.magnifier', function(e) {
- if(!self.disabled) o.click.apply(this, [e, { options: self.options, current: self.current[0], currentOffset: self.current[1] }]);
+ if (!self.disabled) {
+ o.click.apply(this, [e, {
+ options: self.options,
+ current: self.current[0],
+ currentOffset: self.current[1]
+ }]);
+ }
});
}
-
},
-
destroy: function() {
this.reset();
this.element
- .removeClass("ui-magnifier")
- .removeClass("ui-magnifier-disabled")
+ .removeClass("ui-magnifier ui-magnifier-disabled")
.unbind(".magnifier");
$(document).unbind("mousemove.magnifier"+this.identifier);
},
+
disable: function() {
this.reset();
- this.element.addClass("ui-magnifier-disabled");
- this.options.disabled = true;
+ $.widget.prototype.disable.apply(this, arguments);
},
+
reset: function(e) {
+ var o = this.options, c;
- var o = this.options, c, distance = 1;
-
- for(var i=0; i < this.items.length; i++) {
-
+ for (var i=0; i < this.items.length; i++) {
c = this.items[i];
$(c[0]).css({
@@ -89,26 +95,20 @@ $.widget("ui.magnifier", { left: (c[3] ? c[3].left : 0)
});
- if(o.opacity)
- $(c[0]).css('opacity', o.opacity.min);
-
- if(o.zIndex)
- $(c[0]).css("z-index", "");
-
+ (o.opacity && $(c[0]).css('opacity', o.opacity.min));
+ (o.zIndex && $(c[0]).css("z-index", ""));
}
-
},
+
magnify: function(e) {
-
var p = [e.pageX,e.pageY], o = this.options, c, distance = 1;
this.current = this.items[0];
-
+
//Compute the parents distance, because we don't need to fire anything if we are not near the parent
var overlap = ((p[0] > this.pp.left-o.distance && p[0] < this.pp.left + this.element[0].offsetWidth + o.distance) && (p[1] > this.pp.top-o.distance && p[1] < this.pp.top + this.element[0].offsetHeight + o.distance));
- if(!overlap) return false;
-
- for(var i=0;i<this.items.length;i++) {
-
+ if (!overlap) { return false; }
+
+ for (var i=0; i<this.items.length; i++) {
c = this.items[i];
var olddistance = distance;
@@ -125,29 +125,27 @@ $.widget("ui.magnifier", { }
}
- if(distance < o.distance) {
-
+ if (distance < o.distance) {
this.current = distance < olddistance ? this.items[i] : this.current;
- if(!o.axis || o.axis != "y") {
+ if (!o.axis || o.axis != "y") {
$(c[0]).css({
width: c[2][0]+ (c[2][0] * (o.magnification-1)) - (((distance/o.distance)*c[2][0]) * (o.magnification-1)),
left: (c[3] ? (c[3].left + o.verticalLine * ((c[2][1] * (o.magnification-1)) - (((distance/o.distance)*c[2][1]) * (o.magnification-1)))) : 0)
});
}
- if(!o.axis || o.axis != "x") {
+ if (!o.axis || o.axis != "x") {
$(c[0]).css({
height: c[2][1]+ (c[2][1] * (o.magnification-1)) - (((distance/o.distance)*c[2][1]) * (o.magnification-1)),
top: (c[3] ? c[3].top : 0) + (o.baseline-0.5) * ((c[2][0] * (o.magnification-1)) - (((distance/o.distance)*c[2][0]) * (o.magnification-1)))
});
}
- if(o.opacity)
+ if (o.opacity) {
$(c[0]).css('opacity', o.opacity.max-(distance/o.distance) < o.opacity.min ? o.opacity.min : o.opacity.max-(distance/o.distance));
-
+ }
} else {
-
$(c[0]).css({
width: c[2][0],
height: c[2][1],
@@ -155,33 +153,25 @@ $.widget("ui.magnifier", { left: (c[3] ? c[3].left : 0)
});
- if(o.opacity)
- $(c[0]).css('opacity', o.opacity.min);
-
+ (o.opacity && $(c[0]).css('opacity', o.opacity.min));
}
- if(o.zIndex)
- $(c[0]).css("z-index", "");
-
+ (o.zIndex && $(c[0]).css("z-index", ""));
}
- if(this.options.zIndex)
- $(this.current[0]).css("z-index", this.options.zIndex);
-
+ (this.options.zIndex &&
+ $(this.current[0]).css("z-index", this.options.zIndex));
}
-
-
});
$.extend($.ui.magnifier, {
- counter: 0,
defaults: {
distance: 150,
magnification: 2,
baseline: 0,
verticalLine: -0.5,
items: "> *"
- }
+ }
});
})(jQuery);
|