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.
227 lines
6.9 KiB
227 lines
6.9 KiB
3 years ago
|
/*
|
||
|
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);
|
||
|
}
|
||
|
};
|