Выберите проект слева или добавьте новый.
"; var el = document.getElementById("installSnippet"); if (el) el.textContent = snippet; } function getCurrentCounter() { for (var i = 0; i < counters.length; i++) { if (counters[i].id === currentCounterId) return counters[i]; } return null; } var copyInstallEl = document.getElementById('copyInstall'); if (copyInstallEl) copyInstallEl.onclick = function() { var snip = document.getElementById('installSnippet'); if (snip) navigator.clipboard.writeText(snip.textContent); copyInstallEl.textContent = 'Скопировано'; setTimeout(function() { copyInstallEl.textContent = 'Копировать'; }, 1500); }; var submitBtn = document.getElementById('modalSubmit'); if (submitBtn) submitBtn.onclick = async function() { var name = document.getElementById('modalProjectName').value.trim(); var domain = document.getElementById('modalAllowedDomain').value.trim(); var metrikaId = document.getElementById('modalMetrikaId').value.trim(); if (!metrikaId || !name) { alert('Укажите название и ID счётчика Метрики.'); return; } var allowedDomains = domain ? [domain.replace(/^https?:\/\//i, '').split('/')[0].toLowerCase()] : []; try { var r = await fetch(apiUrl('/api/counters'), { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ metrikaId: metrikaId, name: name, allowedDomains: allowedDomains }) }); if (!r.ok) { var err = await r.json().catch(function() { return {}; }); throw new Error(err.error || 'HTTP ' + r.status); } var created = await r.json(); if (!created || !created.id) { alert('Сервер вернул неверный ответ. Обновите страницу (Ctrl+F5) и попробуйте снова.'); return; } await fetchCounters(); document.getElementById('modalAddCounter').classList.add('hidden'); document.getElementById('fetchError').classList.add('hidden'); document.getElementById('noCounter').classList.add('hidden'); selectCounter(created.id); } catch (e) { alert('Ошибка: ' + (e.message || e)); } }; var btnChangeUrl = document.getElementById('btnChangeServerUrl'); if (btnChangeUrl) btnChangeUrl.onclick = function() { var url = prompt('URL сервера аналитики', API); if (url) { localStorage.setItem('rca_server', url.trim()); location.reload(); } }; if (!localStorage.getItem('rca_server')) { var url = prompt('URL сервера аналитики (например http://localhost:3333)', 'http://localhost:3333'); if (url) { localStorage.setItem('rca_server', url.trim()); location.reload(); } } fetchCounters().then(function() { if (counters.length && !currentCounterId) { document.getElementById('fetchError').classList.add('hidden'); selectCounter(counters[0].id); } }).catch(function(err) { if (document.getElementById('fetchError')) { document.getElementById('fetchError').classList.remove('hidden'); document.getElementById('noCounter').classList.add('hidden'); } });