mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
154 lines
5.1 KiB
JavaScript
154 lines
5.1 KiB
JavaScript
/*
|
||
Global Profiler-related functions
|
||
*/
|
||
|
||
function g_cleanCharacterName(name) {
|
||
return (name.match && name.match(/^[A-Z]/) ? name.charAt(0).toLowerCase() + name.substr(1) : name);
|
||
}
|
||
|
||
function g_getProfileUrl(profile) {
|
||
if (profile.region) // Armory character
|
||
return '?profile=' + profile.region + '.' + profile.realm + '.' + g_cleanCharacterName(profile.name) + (profile.renameItr ? '-' + profile.renameItr : '');
|
||
// return '?profile=' + profile.region + '.' + profile.realm + '.' + g_cleanCharacterName(profile.name); // aowow custom
|
||
else // Custom profile
|
||
return '?profile=' + profile.id;
|
||
}
|
||
|
||
function g_getProfileRealmUrl(profile) {
|
||
return '?profiles=' + profile.region + '.' + profile.realm;
|
||
}
|
||
|
||
$WH.prepInfobox = function () {
|
||
$('.infobox').each(function ()
|
||
{
|
||
var row = $(this);
|
||
if (row.data('infobox-completion-info-added') !== true && g_user.characters &&
|
||
typeof g_pageInfo == 'object' && typeof g_pageInfo.type == 'number' && typeof g_pageInfo.typeId == 'number')
|
||
{
|
||
var wardrobe = $('.compact-completion-display', row);
|
||
if (wardrobe.length)
|
||
{
|
||
var completionIcon = $('span', wardrobe);
|
||
if (completionIcon.length)
|
||
{
|
||
var i = 0;
|
||
completionIcon.each(function ()
|
||
{
|
||
var e = $(this);
|
||
var t = e.html();
|
||
|
||
try { t = JSON.parse(t) }
|
||
catch (e) { return }
|
||
|
||
var a;
|
||
for (var n = 0, s; s = g_user.characters[n]; n++)
|
||
{
|
||
if (s.id == t.id)
|
||
{
|
||
a = s;
|
||
break
|
||
}
|
||
}
|
||
|
||
if (a)
|
||
{
|
||
e.parent().append($WH.createCompletionIcon(a, t.completed ? 1 : 0, t.rel));
|
||
e.remove();
|
||
i++
|
||
}
|
||
});
|
||
|
||
if (i)
|
||
wardrobe.parent().parent().show()
|
||
}
|
||
else if (wardrobe.is(':empty') && $WH.addCompletionIcons(wardrobe.get(0), g_pageInfo.type, g_pageInfo.typeId))
|
||
wardrobe.parent().parent().show()
|
||
}
|
||
|
||
row.data('infobox-completion-info-added', true)
|
||
}
|
||
});
|
||
};
|
||
|
||
$WH.addCompletionIcons = function (parent, type, typeIdOrData, skipIncomplete) {
|
||
var nComplete = 0;
|
||
|
||
for (var i in g_user.characters)
|
||
{
|
||
if (!g_user.characters.hasOwnProperty(i))
|
||
continue;
|
||
|
||
let profile = g_user.characters[i];
|
||
|
||
let completion = 0;
|
||
let completionData = g_user.completion?.hasOwnProperty(type) ? g_user.completion[type] : {};
|
||
if (!completionData.hasOwnProperty(profile.id))
|
||
continue;
|
||
|
||
completion = completionData[profile.id].includes(typeIdOrData) ? 1 : 0;
|
||
|
||
if (skipIncomplete && !completion)
|
||
continue;
|
||
|
||
$WH.ae(parent, $WH.createCompletionIcon(profile, completion));
|
||
nComplete++;
|
||
}
|
||
|
||
return nComplete;
|
||
};
|
||
|
||
$WH.createCompletionIcon = function (profile, completePct, rel) {
|
||
var icon = $WH.ce('a');
|
||
icon.href = '?profile=' + profile.region + '.' + profile.realm + '.' + profile.name;
|
||
|
||
// aowow - so the generic tooltips dont override our completion tooltip
|
||
icon.setAttribute('data-disable-wowhead-tooltip', true);
|
||
|
||
icon.className = 'progress-icon progress-' + (completePct ? Math.max(1, Math.floor(completePct * 8)) : 0);
|
||
$WH.Tooltip.simple(icon, $WH.getCompletionTooltip(profile, completePct), null, true);
|
||
|
||
if (rel)
|
||
icon.rel = rel;
|
||
|
||
return icon;
|
||
};
|
||
|
||
$WH.getCompletionTooltip = function (profile, completePct) {
|
||
let tooltip = $WH.ce('div');
|
||
$WH.ae(tooltip, $WH.ce('span', { className: 'q' }, $WH.ct((completePct >= 1 ? LANG.complete : LANG.incomplete) + LANG.colon)));
|
||
$WH.ae(tooltip, $WH.ce('br'));
|
||
|
||
let charRow = $WH.ce('span', { style: { whiteSpace: 'nowrap' } });
|
||
$WH.ae(tooltip, charRow);
|
||
$WH.ae(charRow, $WH.ce('b', { className: 'c' + profile.classs }, $WH.ct(profile.name)));
|
||
|
||
let server = [' ', profile.realmname];
|
||
|
||
if (profile.hasOwnProperty('region'))
|
||
server.push(profile.region.toUpperCase());
|
||
|
||
$WH.ae(charRow, $WH.ce('span', { className: 'q0' }, $WH.ct(server.join(' '))));
|
||
|
||
if (completePct > 0 && completePct < 1)
|
||
$WH.ae(charRow, $WH.ct( $WH.sprintf(LANG.parens_format, '', Math.round(completePct * 100) + '%') ));
|
||
|
||
return tooltip.innerHTML;
|
||
};
|
||
|
||
$WH.getCompletionFlags = function (type, typeId) {
|
||
var flags = 0;
|
||
var profiles = g_user.characters || [];
|
||
let completionData = g_user.completion?.hasOwnProperty(type) ? g_user.completion[type] : {};
|
||
|
||
for (var i = profiles.length - 1; i >= 0; i--)
|
||
{
|
||
var profile = profiles[i];
|
||
if (!(profile.id in completionData))
|
||
continue
|
||
|
||
flags = flags << 1 | (completionData[profile.id].includes(typeId) ? 1 : 0)
|
||
}
|
||
|
||
return flags;
|
||
};
|