GHChess / src /pages /analysis.js
GHHG10's picture
Upload 529 files
f0c8ada verified
Raw
History Blame Contribute Delete
2.69 kB
import { GameLoader } from '../components/games/GameLoader.js';
import { ChessUI } from '../components/ChessUI.js';
import { GameGraph } from '../components/report/GameGraph.js';
async function loadPlayerData(white, black) {
if (!white || !black) return;
if (!white.name || !black.name) return;
$("#white-name").text(white.name);
$("#black-name").text(black.name);
if (!white.elo || !black.elo) return;
$("#white-rating").text(white.elo);
$("#black-rating").text(black.elo);
if (!white.avatar || !black.avatar) return;
const whiteAvatar = await white.avatar;
const blackAvatar = await black.avatar;
$('#white-profile').attr('src', whiteAvatar);
$('#black-profile').attr('src', blackAvatar);
}
// Initialize the application when the document is ready
$(document).ready(async () => {
const chessUI = new ChessUI();
let game;
// Check if there's a PGN parameter in the URL
const urlParams = new URLSearchParams(window.location.search);
const pgnParam = urlParams.get('pgn');
if (pgnParam) {
// Load game from PGN parameter
game = GameLoader.loadGameFromPGN(decodeURIComponent(pgnParam));
} else {
// Load game from URL (Chess.com or Lichess)
game = await GameLoader.loadGameFromURL();
if (!game) {
game = GameLoader.loadEmptyGame();
}
}
chessUI.load(game);
loadPlayerData(game.white, game.black);
// Listen for PGN game loading events
window.addEventListener('loadPGNGame', (event) => {
const gameData = event.detail;
//GameLoader.matchGameURL()
console.log(gameData)
chessUI.load(gameData);
loadPlayerData(gameData.white, gameData.black);
});
// Tab switching
$('.tab-button').on('click', function () {
$('.tab-button').removeClass('active');
$('.tab-panel').removeClass('active');
$(this).addClass('active');
const tabName = $(this).data('tab');
$('#' + tabName + '-tab').addClass('active');
GameGraph.render();
});
// Navigation toggle
const toggleElement = (elem) => elem.classList.toggle("active");
const navToggleBtn = document.querySelector("[data-nav-toggle-btn]");
const navbar = document.querySelector("[data-navbar]");
const overlay = document.querySelector("[data-overlay]");
const toggleNav = () => {
toggleElement(navToggleBtn);
toggleElement(navbar);
toggleElement(document.body);
overlay.classList.toggle("active");
};
navToggleBtn.addEventListener("click", toggleNav);
overlay.addEventListener("click", toggleNav);
});