function addKeyValue(event) { console.log(row.content); const newRow = row.content.cloneNode(true); const tbody = table.tBodies.item(0); tbody.appendChild(newRow); } function saveForm(formData) { const formId = getFormId(); console.log('save', formData); localStorage.setItem(`form_${formId}`, JSON.stringify(formData)); } function getFormData() { const formData = {} for (tr of table.getElementsByTagName('tr')) { let inputs = tr.getElementsByTagName('input') // console.log(inputs.item(0).value, inputs.item(1).value) let key = inputs.item(0).value; let value = inputs.item(1).value || '-'; if (key) { formData[key] = value; } } return formData; } function getSavedFormData(formId) { let formData = localStorage.getItem(`form_${formId}`); if (formData) { console.log(formData); formData = JSON.parse(formData); } return formData; } function getViewUrl() { const formData = getFormData(); saveForm(formData); let flatFormData = []; for (const formKey in formData) { let value = encodeURIComponent(formData[formKey]); let key = encodeURIComponent(formKey); flatFormData.push(`${key}=${value}`) } const url = flatFormData.join("&"); return `/view#${url}`; } function updateTelegramUrl(url) { const formData = getFormData(); let flatFormData = []; for (const formKey in formData) { let key = escapeMarkdownV2(formKey); let value = formData[formKey]; flatFormData.push(`**${key}**: \`${value}\``) } const keys = flatFormData.join("\n"); // const keys = '**Ключ**: `значение`'; // const origin = location.origin; const origin = 'https://shareform.gimaev-nd.ru'; // const siteUrl = encodeURIComponent(origin); const viewUrl = encodeURIComponent(`${origin}${url}`); const text = encodeURIComponent(`${keys}`); const telegramUrl = `https://t.me/share/url?text=${text}&url=${viewUrl}`; telegramLink.href = telegramUrl; } function updatePreview() { const url = getViewUrl(); if (url != lastViewURL) { iframe.src = url; lastViewURL = url; messageEl.innerHTML = '' } updateTelegramUrl(url); } function copyViewLink(event) { const text = getViewUrl(); const fullUrl = `${location.origin}${text}`; navigator.clipboard.writeText(fullUrl); messageEl.innerHTML = `Ссылка на копи-пасту скопирована. Можете её вставить и сохранить`; } function popParam(params, paramName) { const value = params[paramName]; if (value != undefined) { delete params[paramName]; } return value; } function getFormId() { if (window.formId) { return window.formId; } const params = getParams(); let formId = popParam(params, '_formId'); if (formId === undefined) { formId = getRandomStr(); const new_href = `${location.href}&_formId=${formId}` history.replaceState({}, '', new_href); } window.formId = formId; return window.formId; } function initApp() { window.lastViewURL = ''; addRowButton.addEventListener("click", addKeyValue); delete window.params; params = getParams(); window.title = popParam(params, '_title'); const formId = getFormId(); const formData = getSavedFormData(formId) || params; let rows = []; for (const key in formData) { if (key[0] != '_') { const tr = `