Difference between revisions of "MediaWiki:Common.js"
Jump to navigation
Jump to search
(4 intermediate revisions by the same user not shown) | |||
Line 45: | Line 45: | ||
} | } | ||
function clickClose(i) { $('#close-'+ i).trigger('click'); } | function clickClose(i) { $('#close-'+ i).trigger('click'); } | ||
− | function getID(el) { return el.text().replace(/ /g, '').replace(':','').replace('-',''); } | + | function getID(el) { console.log(el.text().replace(/\u00a0/g,'').replace(/ /g, '').replace(':','').replace('-','')); return el.text().replace(/\u00a0/g,'').replace(/ /g, '').replace(':','').replace('-',''); } |
function showHover(hover, lnk) { | function showHover(hover, lnk) { | ||
− | var posleft = lnk.offset().left; | + | console.log(container.innerWidth()); |
− | var postop = lnk.offset().top; | + | cW = container.innerWidth(); |
+ | var posleft = lnk.offset().left + lnk.width(); | ||
+ | if (posleft <= 50) posleft = 10; | ||
+ | else if (posleft >= (cW -250)) posleft = cW - 500; | ||
+ | else posleft = posleft - 160; | ||
+ | var postop = lnk.offset().top; | ||
+ | postop = postop <= 200 ? 10 : postop - 200; | ||
hover.css({"z-index":count, | hover.css({"z-index":count, | ||
Line 55: | Line 61: | ||
"visibility":"visible"}) | "visibility":"visible"}) | ||
.addClass("mwe-popups-fade-in-up"); | .addClass("mwe-popups-fade-in-up"); | ||
− | |||
} | } | ||
function processHover (lnk, id) { | function processHover (lnk, id) { | ||
Line 63: | Line 68: | ||
timeOutShow = null; | timeOutShow = null; | ||
if (lnk.data('verse')) verse = lnk.data('verse'); | if (lnk.data('verse')) verse = lnk.data('verse'); | ||
− | else verse = lnk.text(); | + | else verse = lnk.text().replace(/\u00a0/g,' '); |
//id = getID(lnk); | //id = getID(lnk); | ||
var hover = $('#' + id); | var hover = $('#' + id); | ||
Line 108: | Line 113: | ||
} | } | ||
− | }, | + | }, 500); |
} | } | ||
Line 121: | Line 126: | ||
id = getID($(this)); | id = getID($(this)); | ||
mouseWhere = 'out-' + id; | mouseWhere = 'out-' + id; | ||
− | timeOut = setTimeout( clickClose, | + | timeOut = setTimeout( clickClose, 800, id); |
+ | }) | ||
+ | .on( 'mouseover', '.hover', function() { | ||
+ | clearTimeout( timeOut ); | ||
}) | }) | ||
− | + | .on( 'mouseout', '.hover', function() { | |
− | .on( 'mouseout', | + | timeOut = setTimeout( clickClose, 800, id ); |
− | |||
− | |||
− | timeOut = setTimeout( clickClose, | ||
}); | }); | ||
// end document | // end document |
Latest revision as of 09:52, 5 May 2021
var id, timeOut, timeOutShow, origin, mouseWhere='', container = $("body"), count=0; // endvar function dragElement(elmnt) { var pos1 = 0, pos2 = 0, pos3 = 0, pos4 = 0; if ($('#'+elmnt[0].id + "header")) { /* if present, the header is where you move the DIV from:*/ $('#'+elmnt[0].id + "header").on('mousedown', dragMouseDown); } else { /* otherwise, move the DIV from anywhere inside the DIV:*/ elmnt.on('mousedown',dragMouseDown); } function dragMouseDown(e) { e = e || window.event; e.preventDefault(); // get the mouse cursor position at startup: pos3 = e.clientX; pos4 = e.clientY; $(document).on('mouseup',closeDragElement); // call a function whenever the cursor moves: $(document).on('mousemove',elementDrag); } function elementDrag(e) { e = e || window.event; e.preventDefault(); // calculate the new cursor position: pos1 = pos3 - e.clientX; pos2 = pos4 - e.clientY; pos3 = e.clientX; pos4 = e.clientY; // set the element's new position: elmnt.css('top', (elmnt[0].offsetTop - pos2) + "px"); elmnt.css('left', (elmnt[0].offsetLeft - pos1) + "px"); } function closeDragElement() { /* stop moving when mouse button is released:*/ $(document).off('mouseup',closeDragElement); $(document).off('mousemove',elementDrag); } } function clickClose(i) { $('#close-'+ i).trigger('click'); } function getID(el) { console.log(el.text().replace(/\u00a0/g,'').replace(/ /g, '').replace(':','').replace('-','')); return el.text().replace(/\u00a0/g,'').replace(/ /g, '').replace(':','').replace('-',''); } function showHover(hover, lnk) { console.log(container.innerWidth()); cW = container.innerWidth(); var posleft = lnk.offset().left + lnk.width(); if (posleft <= 50) posleft = 10; else if (posleft >= (cW -250)) posleft = cW - 500; else posleft = posleft - 160; var postop = lnk.offset().top; postop = postop <= 200 ? 10 : postop - 200; hover.css({"z-index":count, "left":posleft+"px", "top":postop+"px", "visibility":"visible"}) .addClass("mwe-popups-fade-in-up"); } function processHover (lnk, id) { // delay showing the verse hover box timeOutShow = setTimeout(function(){ if (mouseWhere == 'hover-'+id) { timeOutShow = null; if (lnk.data('verse')) verse = lnk.data('verse'); else verse = lnk.text().replace(/\u00a0/g,' '); //id = getID(lnk); var hover = $('#' + id); count++; if (hover.length === 0) { $.ajax({ url: '/chronology/index.php?route=common/home/sa', type: 'get', data: '&verse=' + verse, dataType: 'html', beforeSend: function() { // set the verse hover box: content is loading lnk.after('<div id="' + id +'" class="hover"><div id="'+ id +'header" class="hvr-header">' + verse + '<div id="close-' + id + '" class="close">×</div></div><div class="hvr-content"><img src="/natnee/images/6.gif" /></div></div>'); }, success: function(json) { // verse hover box: content is the verse $('#' + id + ' .hvr-content').html(json); // important to redefine the hover; it becomes null if it isn't defined hover = $('#' + id); origin = 'top'; showHover(hover, lnk); // make it draggable dragElement(hover); // when [x] of verse hover is clicked $('#close-'+id).on('click', function() { if (origin == 'top') hover.removeClass("mwe-popups-fade-in-up").addClass("mwe-popups-fade-out-down"); else hover.removeClass("mwe-popups-fade-in-down").hover.addClass("mwe-popups-fade-out-up"); hover.on("animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd", function(e){ hover.off(e); if (hover.attr('class').indexOf('mwe-popups-fade-out') >= 0 ) { hover.removeClass("mwe-popups-fade-out-down").css({'visibility':'hidden','top':'0','left':'0', 'z-index':'0'}); } });//end hover animation });//end close on click return false; }, error: function(xhr, ajaxOptions, thrownError) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } }); } else if (hover.css('visibility') == 'hidden') { showHover(hover, lnk); } } }, 500); } $(document).on( 'mouseover keyup', '.verse', function () { id = getID($(this)); mouseWhere = 'hover-' + id; processHover($(this), id); }) .on( 'mouseout blur', '.verse', function () { id = getID($(this)); mouseWhere = 'out-' + id; timeOut = setTimeout( clickClose, 800, id); }) .on( 'mouseover', '.hover', function() { clearTimeout( timeOut ); }) .on( 'mouseout', '.hover', function() { timeOut = setTimeout( clickClose, 800, id ); }); // end document $('.verse').on('click', function(){ if (timeOutShow === null) { id = getID($(this)); mouseWhere = 'click-' + id; processHover($(this), id); } }); // end .verse