r2872 - positionTo: Cleaned up code for collision option (fixed some lint errors and reduced amou...
Author: scott.gonzalez
Date: Sun Jul 5 13:32:03 2009
New Revision: 2872
Modified:
branches/dev/positionTo/ui/ui.positionTo.js
Log:
positionTo: Cleaned up code for collision option (fixed some lint errors
and reduced amount of code).
Modified: branches/dev/positionTo/ui/ui.positionTo.js
==============================================================================
--- branches/dev/positionTo/ui/ui.positionTo.js (original)
+++ branches/dev/positionTo/ui/ui.positionTo.js Sun Jul 5 13:32:03 2009
@@ -16,11 +16,11 @@
$.fn.positionTo = function(options) {
options = $.extend({
- collision: 'flip',
stackFix: true
}, options);
var target = $(options.of),
+ collision = (options.collision || 'flip').split(' '),
offset = options.offset ? options.offset.split(' ') : [0, 0],
targetWidth,
targetHeight,
@@ -58,13 +58,10 @@
pos[1] = verticalPositions.test(pos[1]) ? pos[1] : verticalDefault;
options[this] = pos;
});
-
+
// normalize collision option
- if (options.collision) {
- var collision = options.collision.split(' ');
- options.collision = collision.length == 1
- ? [collision[0], collision[0]]
- : collision
+ if (collision.length == 1) {
+ collision[1] = collision[0];
}
switch (options.at[0]) {
@@ -94,7 +91,8 @@
var elem = $(this),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
- position = $.extend({}, basePosition);
+ position = $.extend({}, basePosition),
+ over;
switch (options.my[0]) {
case 'right':
@@ -116,31 +114,29 @@
// TODO fit breaks when the window scrolls; need to take scrollLeft/Top
into account
// TODO fit works at the right/bottom edge
- if (options.collision) {
- if (options.collision[0] != "none") {
- var over = (position.left + elemWidth) - $(window).width();
- if (over > 0) {
- switch(options.collision[0]) {
- case 'fit':
- position.left -= over;
- break;
- case 'flip':
- // TODO not yet implemented
- break;
- }
+ if (collision[0] != "none") {
+ over = (position.left + elemWidth) - $(window).width();
+ if (over > 0) {
+ switch(collision[0]) {
+ case 'fit':
+ position.left -= over;
+ break;
+ case 'flip':
+ // TODO not yet implemented
+ break;
}
}
- if (options.collision[1] != "none") {
- var over = (position.top + elemHeight) - $(window).height();
- if (over > 0) {
- switch(options.collision[1]) {
- case 'fit':
- position.top -= over;
- break;
- case 'flip':
- // TODO not yet implemented
- break;
- }
+ }
+ if (collision[1] != "none") {
+ over = (position.top + elemHeight) - $(window).height();
+ if (over > 0) {
+ switch(collision[1]) {
+ case 'fit':
+ position.top -= over;
+ break;
+ case 'flip':
+ // TODO not yet implemented
+ break;
}
}
}