You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
226 lines
6.9 KiB
226 lines
6.9 KiB
/* |
|
Copyright (c) 2012-2017 Open Lab |
|
Permission is hereby granted, free of charge, to any person obtaining |
|
a copy of this software and associated documentation files (the |
|
"Software"), to deal in the Software without restriction, including |
|
without limitation the rights to use, copy, modify, merge, publish, |
|
distribute, sublicense, and/or sell copies of the Software, and to |
|
permit persons to whom the Software is furnished to do so, subject to |
|
the following conditions: |
|
|
|
The above copyright notice and this permission notice shall be |
|
included in all copies or substantial portions of the Software. |
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
|
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
*/ |
|
|
|
//----------------------------------positioning----------------------------------------------- |
|
jQuery.fn.centerOnScreen = function () { |
|
return this.each(function () { |
|
var container = $(this); |
|
//console.debug($(window).height(), container.outerHeight(),(($(window).height() - container.outerHeight()) / 2)) |
|
container.css("position", "fixed"); |
|
container.css("top", (($(window).height() - container.outerHeight()) / 2) + 'px'); |
|
container.css("left", (($(window).width() - container.outerWidth()) / 2) + 'px'); |
|
}); |
|
}; |
|
|
|
|
|
function nearBestPosition(whereId, theObjId, centerOnEl) { |
|
|
|
var el = whereId; |
|
var target = theObjId; |
|
|
|
if (typeof whereId != "object") { |
|
el = $("#" + whereId); |
|
} |
|
if (typeof theObjId != "object") { |
|
target = $("#" + theObjId); |
|
} |
|
|
|
if (el) { |
|
target.css("visibility", "hidden"); |
|
var hasContainment = false; |
|
|
|
target.parents().each(function () { |
|
if ($(this).css("position") == "static") |
|
return; |
|
|
|
hasContainment = true; |
|
}); |
|
|
|
var trueX = hasContainment ? el.position().left : el.offset().left; |
|
var trueY = hasContainment ? el.position().top : el.offset().top; |
|
var h = el.outerHeight(); |
|
var elHeight = parseFloat(h); |
|
|
|
if (centerOnEl) { |
|
var elWidth = parseFloat(el.outerWidth()); |
|
var targetWidth = parseFloat(target.outerWidth()); |
|
trueX += (elWidth - targetWidth) / 2; |
|
} |
|
|
|
trueY += parseFloat(elHeight); |
|
|
|
var left = trueX; |
|
var top = trueY; |
|
var barHeight = 45 ; |
|
var barWidth = 20 ; |
|
|
|
if (trueX && trueY) { |
|
target.css("left", left); |
|
target.css("top", top); |
|
} |
|
|
|
if (target.offset().left >= ( ($(window).width() + $(window).scrollLeft()) - target.outerWidth())) { |
|
|
|
left = ( ($(window).width() + $(window).scrollLeft()) - target.outerWidth() - 10 ); |
|
target.css({left:left, marginTop: 0}); |
|
} |
|
|
|
if (target.offset().left < 0) { |
|
left = 10; |
|
target.css("left", left); |
|
} |
|
|
|
if ((target.offset().top + target.outerHeight() >= ( ($(window).height() + $(window).scrollTop()) - barHeight)) && (target.outerHeight() < $(window).height())) { |
|
var marginTop = -(target.outerHeight() + el.outerHeight()); |
|
target.css("margin-top", marginTop); |
|
} |
|
|
|
if (target.offset().top < 0) { |
|
top = 0; |
|
target.css("top", top); |
|
} |
|
|
|
|
|
target.css("visibility", "visible"); |
|
} |
|
} |
|
|
|
$.fn.keepItVisible = function (ref) { |
|
var thisTop = $(this).offset().top; |
|
var thisLeft = $(this).offset().left; |
|
var fromTop =0; |
|
var fromLeft =0; |
|
|
|
var windowH = $(window).height() + $(window).scrollTop(); |
|
var windowW = $(window).width() + $(window).scrollLeft(); |
|
|
|
if (ref){ |
|
fromTop = windowH - (ref.offset().top); |
|
fromLeft = windowW - (ref.offset().left + ref.outerWidth()); |
|
} |
|
|
|
if (thisTop + $(this).outerHeight() > windowH){ |
|
var mt = (thisTop + $(this).outerHeight()) - windowH; |
|
// $(this).css("margin-top", -$(this).outerHeight() - fromTop); |
|
$(this).css("margin-top", -mt - fromTop); |
|
} |
|
if (thisLeft + $(this).outerWidth() > windowW){ |
|
var mL = (thisLeft + $(this).outerWidth()) - windowW; |
|
// $(this).css("margin-left", -$(this).outerWidth() - fromLeft); |
|
$(this).css("margin-left", -mL - fromLeft); |
|
} |
|
$(this).css("visibility", "visible"); |
|
}; |
|
|
|
//END positioning |
|
|
|
|
|
/* Caret Functions |
|
Use setSelection with start = end to set caret |
|
*/ |
|
function setSelection(input, start, end) { |
|
input.setSelectionRange(start, end); |
|
} |
|
|
|
$.fn.setCursorPosition = function(pos) { |
|
this.each(function(index, elem) { |
|
if (elem.setSelectionRange) { |
|
elem.setSelectionRange(pos, pos); |
|
} else if (elem.createTextRange) { |
|
var range = elem.createTextRange(); |
|
range.collapse(true); |
|
range.moveEnd('character', pos); |
|
range.moveStart('character', pos); |
|
range.select(); |
|
} |
|
}); |
|
return this; |
|
}; |
|
|
|
//-- Caret Functions END ---------------------------------------------------------------------------- -- |
|
|
|
|
|
|
|
/*----------------------------------------------------------------- manage bbButtons*/ |
|
$.buttonBar = { |
|
defaults: {}, |
|
|
|
init: function(){ |
|
setTimeout(function(){ |
|
$.buttonBar.manageButtonBar(); |
|
},100); |
|
|
|
$(window).on("scroll.ButtonBar",function(){ |
|
$.buttonBar.manageButtonBar(); |
|
}); |
|
$(window).on("resize.ButtonBar",function(){ |
|
$.buttonBar.manageButtonBar(); |
|
}); |
|
}, |
|
|
|
manageButtonBar: function(anim) { |
|
|
|
$(".buttonArea").not(".bbCloned").not(".notFix").each(function(){ |
|
var bb = this; |
|
|
|
//se usiamo questi si rompe la button bar flottante del save sulla issue list |
|
//bb.originalHeigh=bb.originalHeigh || $(bb).height(); |
|
//bb.originalOffsetTop=bb.originalOffsetTop||$(bb).offset().top; |
|
|
|
bb.originalHeigh= $(bb).height(); |
|
bb.originalOffsetTop=$(bb).offset().top; |
|
|
|
bb.isOut = $(window).scrollTop() + $(window).height() - bb.originalHeigh < bb.originalOffsetTop; |
|
|
|
if (bb.bbHolder) |
|
bb.bbHolder.css({width: $(bb).outerWidth(),left:$(bb).offset().left}); |
|
|
|
if (bb.isOut && !bb.isCloned){ |
|
if (bb.bbHolder) |
|
bb.bbHolder.remove(); |
|
bb.isCloned = true; |
|
bb.bbHolder = $(bb).clone().addClass("bbCloned clone bottom").css({width: $(bb).outerWidth(), marginTop:0,left:$(bb).offset().left}); |
|
bb.bbHolder.hide(); |
|
bb.bbHolder.css({position:"fixed", bottom:0, left:$(bb).offset().left}); |
|
$(bb).after(bb.bbHolder); |
|
bb.bbHolder.show(); |
|
$(bb).css("visibility","hidden"); |
|
|
|
} else if (!bb.isOut && bb.isCloned) { |
|
//} else { |
|
bb.isCloned = false; |
|
bb.bbHolder.remove(); |
|
$(bb).css("visibility","visible"); |
|
} |
|
}); |
|
}, |
|
|
|
refreshButtonBar: function() { |
|
$(".bbCloned").remove(); |
|
$(".buttonArea").not(".bbCloned").each(function(){ |
|
var bb = this; |
|
bb.isCloned = false; |
|
}); |
|
|
|
$.buttonBar.manageButtonBar(false); |
|
} |
|
};
|
|
|