diff --git a/public/admin.html b/public/admin.html index cdea6fa..953df2f 100644 --- a/public/admin.html +++ b/public/admin.html @@ -78,7 +78,12 @@ }catch(e){ msg.style.color='#f0a05a'; msg.textContent='Connection hiccup.'; } $('agGo').disabled=false; } - document.addEventListener('DOMContentLoaded',function(){ boot(); var b=$('agGo'); if(b) b.addEventListener('click',award); }); + window.agBoot=boot; + document.addEventListener('DOMContentLoaded',function(){ + var b=$('agGo'); if(b) b.addEventListener('click',award); + // Belt and braces: if the select is still empty when it's opened, try again. + var sel=$('agTool'); if(sel) sel.addEventListener('focus',function(){ if(!sel.options.length) boot(); }); + }); })(); diff --git a/public/admin.js b/public/admin.js index 0877c5f..1df5838 100644 --- a/public/admin.js +++ b/public/admin.js @@ -43,6 +43,7 @@ function render(){ const orgEl=document.getElementById('orgRoot');if(orgEl&&!orgEl.value)orgEl.value=state.config.orgRootId||'21'; if(!orgShareAutoLoaded&&orgEl&&orgEl.value){orgShareAutoLoaded=true;loadOrgShare();} if(!coachAutoLoaded){coachAutoLoaded=true;loadCoaching();} + if(!grantAutoLoaded){grantAutoLoaded=true;if(window.agBoot)window.agBoot();} if(!msgsAutoLoaded){msgsAutoLoaded=true;loadAdminMsgs();} const efi=document.getElementById('emailFromInput');if(efi&&!efi.value)efi.value=state.config.emailFrom||em.from||''; const f=document.getElementById('configForm'),c=state.config;for(const k of ['siteName','programName','bridgeHeadline','bridgeSubheadline','premiumEntryPol','dappReferralBaseUrl','telegramUrl','supportLabel','bemobPostbackUrl','telegramBotToken','telegramChatId','telegramTopicId','teamRootId','teamAlertEmail','ownerAlertEmail'])if(f.elements[k])f.elements[k].value=c[k]??'';f.elements.showSponsorName.checked=!!c.showSponsorName;f.elements.showQueueProgress.checked=!!c.showQueueProgress; @@ -124,6 +125,7 @@ async function loadCoaching(){ } const cr=document.getElementById('coachRefresh');if(cr)cr.addEventListener('click',loadCoaching); let coachAutoLoaded=false; +let grantAutoLoaded=false; async function loadAdminMsgs(){ const tb=document.getElementById('msgRows');if(!tb)return; try{