/** * Fetches CSRF Token from page */ function getCsrfToken() { return { 'X-XSRF-TOKEN': document.getElementsByName('__RequestVerificationToken')[0].value } } async function setLanguage(language) { const hasLang = await fetch('/api/localization/lang', { method: 'GET', headers: { 'Content-Type': 'application/json' } }) .then(res => res.json()) .then(langs => langs.includes(language)) .catch(err => false); if (hasLang) return await fetch(`/api/localization/lang/${language}`, { method: 'POST', headers: { 'Content-Type': 'application/json' } }) .then(response => { if (response.redirected) window.location.href = response.url; else if (!response.ok) return Promise.reject('Failed to set language'); }); } async function logout() { return await fetch(`/auth/logout`, { method: 'POST', headers: { 'Content-Type': 'application/json' } }).then(res => { if (res.ok) window.location.href = "/"; }); } async function getAnnotationParams(leftInInch = 0, topInInch = 0, inchToPointFactor = 72) { const annotParams = await fetch(`${window.location.origin}/api/Config/Annotations`, { credentials: 'include', method: 'GET' }) .then(res => res.json()); for (var key in annotParams) { var annot = annotParams[key]; annot.width *= inchToPointFactor; annot.height *= inchToPointFactor; annot.left += leftInInch - 0.7; annot.left *= inchToPointFactor; annot.top += topInInch - 0.5; annot.top *= inchToPointFactor; } return annotParams; }