mirror of
https://github.com/wasrusgen/zov-tech.git
synced 2026-06-03 17:44:48 +00:00
fix(podbor): HTML format + sticky header + home button at report bottom
- _ai(): markdown→HTML fallback (**, *, _, `) when no HTML tags found - podbor-header: position:sticky so back/home always visible while scrolling - renderReport(): footer with "← Главное меню" + "+ Новый подбор" buttons Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
3e7ae7764a
commit
12dec17ed1
@ -8,6 +8,11 @@
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: var(--s4);
|
||||
position: sticky;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
background: var(--bg);
|
||||
padding: 8px 0 4px;
|
||||
}
|
||||
|
||||
.podbor-back,
|
||||
|
||||
@ -1410,6 +1410,29 @@ const Podbor = (function () {
|
||||
exportNode.querySelector("#exportPrint").addEventListener("click", () => _exportReportPrint(wrap, leadId));
|
||||
wrap.appendChild(exportNode);
|
||||
|
||||
// Кнопка «Домой» в самом конце отчёта — без скролла вверх
|
||||
const footerNav = el(`
|
||||
<div style="margin:16px 0 24px;display:flex;gap:10px;">
|
||||
<button class="btn-secondary" style="flex:1;" id="reportNewPodbor">+ Новый подбор</button>
|
||||
<button class="btn-primary" style="flex:1;" id="reportGoHome">← Главное меню</button>
|
||||
</div>
|
||||
`);
|
||||
footerNav.querySelector("#reportGoHome").addEventListener("click", () => {
|
||||
haptic && haptic("impact");
|
||||
_goHome();
|
||||
});
|
||||
footerNav.querySelector("#reportNewPodbor").addEventListener("click", () => {
|
||||
haptic && haptic("impact");
|
||||
// Сбрасываем state и начинаем заново
|
||||
state = defaultState();
|
||||
saveState();
|
||||
currentStep = "intro";
|
||||
detailView = "menu";
|
||||
render();
|
||||
window.scrollTo({ top: 0, behavior: "smooth" });
|
||||
});
|
||||
wrap.appendChild(footerNav);
|
||||
|
||||
return wrap;
|
||||
}
|
||||
|
||||
@ -1842,12 +1865,24 @@ ${reportEl.outerHTML}
|
||||
}
|
||||
|
||||
/* AI-generated text — trusted backend output, render as HTML.
|
||||
Strip script/on* to be safe, but allow <b><em><ul><li><br>. */
|
||||
Strip script/on* to be safe, but allow <b><em><ul><li><br>.
|
||||
Markdown fallback: если GigaChat всё же вернул ** или *, конвертируем. */
|
||||
function _ai(s) {
|
||||
if (s == null) return "";
|
||||
return String(s)
|
||||
let t = String(s)
|
||||
.replace(/<script[\s\S]*?<\/script>/gi, "")
|
||||
.replace(/\son\w+\s*=/gi, " data-stripped=");
|
||||
// Markdown → HTML только если нет HTML-тегов (GigaChat иногда игнорирует инструкцию)
|
||||
if (!/<[a-zA-Z]/.test(t)) {
|
||||
t = t
|
||||
.replace(/\*\*\*(.+?)\*\*\*/g, "<b><em>$1</em></b>") // ***bold-italic***
|
||||
.replace(/\*\*(.+?)\*\*/g, "<b>$1</b>") // **bold**
|
||||
.replace(/\*([^*\n]+?)\*/g, "<em>$1</em>") // *italic*
|
||||
.replace(/_([^_\n]+?)_/g, "<em>$1</em>") // _italic_
|
||||
.replace(/`([^`]+?)`/g, "<code>$1</code>") // `code`
|
||||
.replace(/\n/g, "<br>"); // newlines
|
||||
}
|
||||
return t;
|
||||
}
|
||||
|
||||
/* ===================== Helpers ===================== */
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800&family=Geist:wght@400;500;600&family=Manrope:wght@400;500;600;700&family=Newsreader:ital,wght@0,400..600;1,400..600&family=Instrument+Serif:ital@0;1&family=JetBrains+Mono:wght@400;500&family=Cormorant+Garamond:ital,wght@1,400;1,500;1,600&family=Caveat:wght@500;700&display=swap">
|
||||
<script src="https://telegram.org/js/telegram-web-app.js"></script>
|
||||
<link rel="stylesheet" href="assets/styles.css?v=20260518o">
|
||||
<link rel="stylesheet" href="assets/podbor.css?v=20260519a">
|
||||
<link rel="stylesheet" href="assets/podbor.css?v=20260519c">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Splash — лого @wasrusgen1 + опилки (16) + вращающийся диск -->
|
||||
@ -39,7 +39,7 @@
|
||||
<script src="assets/icons.js?v=20260516h"></script>
|
||||
<script src="assets/podbor.config.js?v=20260516h"></script>
|
||||
<script src="assets/podbor.picts.js?v=20260516h"></script>
|
||||
<script src="assets/podbor.js?v=20260519b"></script>
|
||||
<script src="assets/podbor.js?v=20260519c"></script>
|
||||
<script src="assets/clients.js?v=20260518e"></script>
|
||||
<script src="assets/zamer-picts.js?v=20260516h"></script>
|
||||
<script src="assets/measurements.js?v=20260518f"></script>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user