1
0
mirror of synced 2024-12-11 06:16:01 +01:00
TaikoLocalServer/TaikoWebUI/wwwroot/js/updateTextFit.js
Farewell_ 0010a3eb34 Added Profile visualizer
Dan graphic still isn't displayed but disabling dan display on the nameplate updates the name disposition properly

Still haven't figured where the texture for AI 2, 3 and 4 are; useable in it's current state
2023-11-02 12:43:27 +01:00

81 lines
2.3 KiB
JavaScript

// Function to be called when the viewfinder size changes
var title;
var myDonName;
var myDonNameOutline;
var init = false
const observer = new ResizeObserver(handleResize);
function handleResize() {
updateFit()
}
function waitForElm(selector) {
return new Promise(resolve => {
if (document.querySelector(selector)) {
return resolve(document.querySelector(selector));
}
const observer = new MutationObserver(mutations => {
if (document.querySelector(selector)) {
observer.disconnect();
resolve(document.querySelector(selector));
}
});
observer.observe(document.body, {
childList: true,
subtree: true
});
});
}
// This is a monkey hack to detect when the page has changed (to stop the observer events)
var pushState = history.pushState;
history.pushState = function () {
pushState.apply(history, arguments);
init = false;
observer.disconnect();
};
// Fetches all the relevant objects on the page so updateFit can reference them later
function initNameplate() {
if (window.location.href.indexOf("Profile") > -1) {
waitForElm('#nameplate-title').then((elm) => {
title = elm
waitForElm('#nameplate-name').then((elm) => {
myDonName = elm
waitForElm('#nameplate-name-outline').then((elm) => {
myDonNameOutline = elm
observer.observe(document.getElementById('nameplate'));
init = true
});
});
});
}
}
function updateFit() {
textFit(title, { alignHoriz: true, alignVert: true });
textFit(myDonName, { alignHoriz: true, alignVert: true });
textFit(myDonNameOutline, { alignHoriz: true, alignVert: true });
}
// Used to individually update texts on the nameplate
function updateMyDonName(elm) {
if (init) {
myDonName.textContent = elm
myDonNameOutline.textContent = elm
updateFit()
}
}
function updateTitle(elm) {
if (init) {
title.textContent = elm
updateFit()
}
}
// Called by html onload when the image of the nameplate is loaded (this ensures the first fit is properly done)
function nameplateLoaded() {
initNameplate()
}