More actions
m fixing mouse movement event handler for tooltip |
No edit summary |
||
| (42 intermediate revisions by 5 users not shown) | |||
| Line 10: | Line 10: | ||
var collapseCaption = 'hide'; | var collapseCaption = 'hide'; | ||
var expandCaption = 'show'; | var expandCaption = 'show'; | ||
function collapseTable( tableIndex ) { | function collapseTable( tableIndex ) { | ||
var Button = document.getElementById( 'collapseButton' + tableIndex ); | var Button = document.getElementById( 'collapseButton' + tableIndex ); | ||
| Line 33: | Line 33: | ||
} | } | ||
} | } | ||
function createCollapseButtons() { | function createCollapseButtons() { | ||
var tableIndex = 0; | var tableIndex = 0; | ||
| Line 76: | Line 77: | ||
} | } | ||
} | } | ||
addOnloadHook( createCollapseButtons ); | |||
//addOnloadHook( createCollapseButtons ); | |||
$( createCollapseButtons ); //RayEdit1.33 | |||
/** Test if an element has a certain class ************************************** | /** Test if an element has a certain class ************************************** | ||
* | * | ||
| Line 101: | Line 104: | ||
var _tooltipFrameClassName = 'uniwiki-tooltip-frame'; | var _tooltipFrameClassName = 'uniwiki-tooltip-frame'; | ||
var _activeTooltipIdx = -1; | var _activeTooltipIdx = -1; | ||
var _posCorrectionX = 20; var _posCorrectionY = 10; | |||
var _ratioWidth = 5; var _ratioHeight = 1; | |||
function checkElementByClassComp() { | function checkElementByClassComp() { | ||
if (document.getElementsByClassName == undefined) { | if (document.getElementsByClassName == undefined) { | ||
| Line 123: | Line 128: | ||
for(var i=0;i<tooltips.length;i++) { | for(var i=0;i<tooltips.length;i++) { | ||
tooltips[i].setAttribute( 'id', 'tooltipidx-' + i ); | tooltips[i].setAttribute( 'id', 'tooltipidx-' + i ); | ||
tooltips[i].setAttribute( ' | tooltips[i].setAttribute( 'onmouseover', 'showTooltip(' + i + ')' ); | ||
tooltips[i].setAttribute( ' | tooltips[i].setAttribute( 'onmouseout', 'hideTooltip()'); | ||
var matchFrameClassName = new RegExp("(?:^|\\s)" + _tooltipFrameClassName + "(?:$|\\s)"); | var matchFrameClassName = new RegExp("(?:^|\\s)" + _tooltipFrameClassName + "(?:$|\\s)"); | ||
| Line 137: | Line 142: | ||
function tooltipMouseHandler(e) { | function tooltipMouseHandler(e) { | ||
if (!e){ e = window.event; } | if (!e){ e = window.event; } | ||
mouseX = e.clientX + document. | mouseX = null; mouseY = null; | ||
if(e.pageX && e.pageY) { mouseX = e.pageX; mouseY = e.pageY; } | |||
else if(e.clientX && e.clientY) { | |||
mouseX = e.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); | |||
mouseY = e.clientY + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); | |||
} | |||
moveTooltip(mouseX, mouseY); | moveTooltip(mouseX, mouseY); | ||
} | } | ||
function moveTooltip(x, y) { | function moveTooltip(x, y) { | ||
if(_activeTooltipIdx != -1) { | if(_activeTooltipIdx != -1) { | ||
document.getElementById('tooltipframeidx-' + _activeTooltipIdx).style.left = x + | var parentObj = document.getElementById('tooltipidx-' + _activeTooltipIdx); | ||
var parentPos = findPos(parentObj); | |||
var frameObj = document.getElementById('tooltipframeidx-' + _activeTooltipIdx); | |||
var windowSize = getWindowSize(); | |||
if(frameObj.offsetWidth < frameObj.offsetHeight) | |||
{ | |||
frameObj.style.width = (_ratioWidth / (_ratioWidth + _ratioHeight)) * (frameObj.offsetWidth + frameObj.offsetHeight) + 'px'; | |||
} | |||
var maxTooltipWidth = windowSize.width > 800 ? (0.6 * windowSize.width) : (0.8 * windowSize.width); | |||
if((frameObj.offsetWidth + 20) > maxTooltipWidth) | |||
{ | |||
frameObj.style.width = maxTooltipWidth + 'px'; | |||
frameObj.style.left = ((x - parentPos.x) + _posCorrectionX) + 'px'; | |||
} | |||
if((frameObj.offsetWidth + parentPos.x + 70) < windowSize.width) { | |||
frameObj.style.left = ((x - parentPos.x) + _posCorrectionX) + 'px'; | |||
}else { | |||
frameObj.style.left = ((x - parentPos.x) - frameObj.offsetWidth - _posCorrectionX) + 'px'; | |||
} | |||
frameObj.style.top = ((y - parentPos.y) + _posCorrectionY) + 'px'; | |||
} | } | ||
return false; | return false; | ||
} | } | ||
function findPos(obj) { | |||
var curleft = curtop = 0; | |||
var position = new Object(); | |||
if (obj.offsetParent) { | |||
curleft = obj.offsetLeft | |||
curtop = obj.offsetTop | |||
while (obj = obj.offsetParent) { | |||
curleft += obj.offsetLeft | |||
curtop += obj.offsetTop | |||
} | |||
} | |||
position.x = curleft; | |||
position.y = curtop; | |||
return position; | |||
} | |||
function getWindowSize() { | |||
var size = new Object(); | |||
if( typeof( window.innerWidth ) == 'number' ) { | |||
//Non-IE | |||
size.width = window.innerWidth; | |||
size.height = window.innerHeight; | |||
} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) { | |||
//IE 6+ in 'standards compliant mode' | |||
size.width = document.documentElement.clientWidth; | |||
size.height = document.documentElement.clientHeight; | |||
} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) { | |||
//IE 4 compatible | |||
size.width = document.body.clientWidth; | |||
size.height = document.body.clientHeight; | |||
} | |||
return size; | |||
} | |||
function showTooltip(id) { | function showTooltip(id) { | ||
_activeTooltipIdx = id; | |||
document.onmousemove = tooltipMouseHandler; | document.onmousemove = tooltipMouseHandler; | ||
document.getElementById( 'tooltipframeidx-' + id ).style.display = 'block'; | |||
document.getElementById( 'tooltipframeidx-' + | |||
} | } | ||
function hideTooltip() { | function hideTooltip() { | ||
_activeTooltipIdx = -1; | _activeTooltipIdx = -1; | ||
document.onmousemove = null; | document.onmousemove = null; | ||
var allTooltip = document.getElementsByClassName(_tooltipFrameClassName); | |||
for(var i=0;(tooltipEl = allTooltip[i]) != null;i++) { | |||
tooltipEl.style.display = 'none'; | |||
} | |||
} | } | ||
addOnloadHook(checkElementByClassComp); | //addOnloadHook(checkElementByClassComp); | ||
addOnloadHook(createTooltipTrigger); | $( checkElementByClassComp ); //RayEdit1.33 | ||
//addOnloadHook(createTooltipTrigger); | |||
$( createTooltipTrigger ); //RayEdit1.33 | |||
/** Eve University New Fitting Template ******************* | |||
* | |||
* Description: Allows showing and hiding of EFT, recommended skills, and notes section | |||
* Allows viewing of fit and module info in game | |||
* Adds titles to modules for viewing when hovering over picture | |||
* | |||
* Maintainers: Miranda McLaughlin | |||
**********************************************************/ | |||
try{ | |||
(function($) { | |||
$(function() { | |||
$(function() { | |||
//$('.shipFitting .button.eve').on('click', showFitInGame); | |||
$('.shipFitting .button.eft').on('click', toggleEFT); | |||
$('.shipFitting .button.skills').on('click', toggleSkills); | |||
$('.shipFitting .button.notes').on('click', toggleNotes); | |||
//$('.shipFitting .module').not('.open, .inactive').on('click', showItemInfoInGame); | |||
//$('.shipFitting .subMod').not('.open, .inactive').on('click', showItemInfoInGame); | |||
//$('.shipFitting .shipInfo').on('click', showItemInfoInGame); | |||
$('.shipFitting .module:not(.open, .inactive)').each(addTitle); | |||
$('.shipFitting .subMod:not(.open, .inactive)').each(addTitle); | |||
}); | |||
//function showFitInGame() { | |||
//var dna = $(this).attr("data-shipdna"); | |||
//CCPEVE.showFitting(dna); | |||
//} | |||
function toggleEFT() { | |||
$(this).toggleClass('active'); | |||
$(this).parents('.shipFitting').find('.moreInfo.eftData').toggleClass('show'); | |||
$(this).parents('.shipFitting').toggleClass('showEFT'); | |||
} | |||
function toggleSkills() { | |||
$(this).toggleClass('active'); | |||
$(this).parents('.shipFitting').find('.moreInfo.skills').toggleClass('show'); | |||
$(this).parents('.shipFitting').toggleClass('showSkills'); | |||
} | |||
function toggleNotes() { | |||
$(this).toggleClass('active'); | |||
$(this).parents('.shipFitting').find('.moreInfo.notes').toggleClass('show'); | |||
$(this).parents('.shipFitting').toggleClass('showNotes'); | |||
} | |||
//function showItemInfoInGame() { | |||
//var typeID = $(this).attr('data-typeid'); | |||
//CCPEVE.showInfo(typeID); | |||
//} | |||
function addTitle(index, element) { | |||
var name = $(element).attr('data-name'); | |||
$(element).find('img').attr('title', name); | |||
} | |||
}); | |||
})(jQuery); | |||
}catch(e){console.log("Joel screwed up! Contact Miranda McLaughlin.", e);} | |||
/** EVE-University - Fitting Template ******************* | |||
* | |||
* Description: Opens Fleet-Up in a new window | |||
* | |||
* Maintainers: Pehuen | |||
**********************************************************/ | |||
try{ | |||
(function($) { | |||
$(function() { | |||
$(function() { | |||
$('.shipFitting .button.fleetup').on('click', showFleetUp); | |||
}); | |||
function showFleetUp() { | |||
var fleetup = $(this).attr("data-fleetup"); | |||
var fleetup_url = fleetup; | |||
window.open(fleetup_url, fleetup); | |||
return false; | |||
} | |||
}); | |||
})(jQuery); | |||
}catch(e){console.log("Pehuen screwed up! Post on the forums.", e);} | |||
mw.loader.using(['mediawiki.util'], function () { | |||
$(function () { | |||
console.log("✅ Citizen Search Trigger Loaded"); | |||
const fakeSearchBox = document.getElementById('skin-citizen-search-trigger'); | |||
const realSearchToggle = document.getElementById('citizen-search-details'); | |||
if (!fakeSearchBox) { | |||
console.log("⚠️ Fake search box not found."); | |||
return; | |||
} | |||
fakeSearchBox.addEventListener('click', function () { | |||
console.log("🔍 Search trigger clicked"); | |||
if (realSearchToggle) { | |||
realSearchToggle.open = true; | |||
setTimeout(() => { | |||
const input = document.getElementById('searchInput'); | |||
if (input) input.focus(); | |||
}, 100); | |||
} else { | |||
console.log("❌ Real search toggle not found, falling back to / key"); | |||
const event = new KeyboardEvent('keydown', { | |||
key: '/', | |||
keyCode: 191, | |||
code: 'Slash', | |||
which: 191, | |||
bubbles: true, | |||
cancelable: true | |||
}); | |||
document.dispatchEvent(event); | |||
} | |||
}); | |||
}); | |||
}); | |||
mw.loader.using(['jquery', 'mediawiki.api'], function () { | |||
$(function () { | |||
$('.main-banner[data-files]').each(function () { | |||
var $box = $(this); | |||
var list = String($box.attr('data-files')) | |||
.split(/\s*\|\s*|\s*,\s*/) | |||
.filter(Boolean); | |||
if (!list.length) return; | |||
var pick = list[Math.floor(Math.random() * list.length)]; | |||
// Use MediaWiki API to resolve actual file path | |||
new mw.Api().get({ | |||
action: 'query', | |||
titles: 'File:' + pick, | |||
prop: 'imageinfo', | |||
iiprop: 'url', | |||
format: 'json' | |||
}).done(function (data) { | |||
var pages = data.query.pages; | |||
for (var pageId in pages) { | |||
if (pages.hasOwnProperty(pageId) && pages[pageId].imageinfo) { | |||
var url = pages[pageId].imageinfo[0].url; | |||
var $img = $('<img>', { | |||
src: url, | |||
width: 2450, | |||
height: 450, | |||
alt: '' | |||
}); | |||
$box.empty().append($img); | |||
} | |||
} | |||
}); | |||
}); | |||
}); | |||
}); | |||