From 1747c31ba30395b42d7044c2cc261c62dd7b043d Mon Sep 17 00:00:00 2001 From: Ruslan Date: Tue, 12 May 2026 12:20:38 +0300 Subject: [PATCH] =?UTF-8?q?UI:=20=D1=81=D1=82=D0=B8=D0=BB=D1=8C=20=D0=B3?= =?UTF-8?q?=D0=BB=D0=B0=D0=B2=D0=BD=D0=BE=D0=B9=20=D1=81=D1=82=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D1=86=D1=8B,=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BB=D0=BE=D0=B3=D0=BE=20=D0=B8=20favicon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Заменён логотип на новый (MONT Group of companies) - Favicon взят с stend.4mont.ru, перенесён в static/ - Лого фиксировано в левом верхнем углу (position:fixed), уменьшено на 30% - Добавлена кнопка «Инфраструктурный полигон МОНТ» → stend.4mont.ru - Градиентный текст h1, анимация fadeUp при загрузке - Акцент-полоски в заголовках карточек, hover-эффекты на row-card - Статистика переведена на таблетки (stat-pill) - Счётчики-бейджи рядом с «Вендоры» и «Категории» - Кастомный скроллбар в панелях чипов - Улучшены теги продуктов, кнопка сброса фильтров --- favicon.png | Bin 13111 -> 451 bytes static/css/index.css | 372 ++++++++++++++++++++++++++++++++++++++++--- static/favicon.png | Bin 0 -> 451 bytes static/js/index.js | 94 ++++++++++- static/mont_logo.png | Bin 0 -> 32423 bytes templates/index.html | 18 ++- 6 files changed, 448 insertions(+), 36 deletions(-) create mode 100644 static/favicon.png create mode 100644 static/mont_logo.png diff --git a/favicon.png b/favicon.png index 68f00262ee6284e3cd7e556842d4da7087f38e6d..ad5ffbf49adc0a8cb5b7d81d87e5e8ca7926ac41 100644 GIT binary patch literal 451 zcmV;!0X+VRP)i_@%33O6UQviQ|e}I61pUP!ypvEaZ3(?Y=t|y^*J(ixXazr*T~xl2YOutS$xW>iKa2< z!>N!zzZz@RnDe;ZjXbQApWnQf3G2O60GY5Ua0;*y-Gc=-VqAD25nTum7D&Vx!omaI z|Aasg8F=T9V+s}$$UzqZLD(Z0w_u@W@IHWsutzYKU?E;11#<~jVhvKzmtZ2+AWw4U zfi38HU|*=21@<5lFY;H|f<&ytod8M@iD_^IPy#crW~jT<5*lSZ4e172hRMRga6+;@)I=R#ql&PaUK}I3KT#jFwYhgKp=2`VNd{;z`ACj z01Sa&yBZXLB=Gd-2L&JqYz`n$fD3__Ll6|8A&@wTK>h;JW|-002ovPDHLkV1il1vK#;a literal 13111 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 iev||LE6hKy?j2^=pz$sG@LFzC_mi;eP>Au5}Cm diff --git a/static/css/index.css b/static/css/index.css index 491b091..2488bf5 100644 --- a/static/css/index.css +++ b/static/css/index.css @@ -26,37 +26,39 @@ } body.scope-ib { background: - radial-gradient(1200px 700px at -10% -10%, #ffb3b3 0%, transparent 58%), - radial-gradient(900px 500px at 110% -20%, #ffbeb3 0%, transparent 52%), - linear-gradient(160deg, #ffd7d7 0%, #ffb8b8 100%); + radial-gradient(1200px 700px at -10% -10%, #b8f3cf 0%, transparent 58%), + radial-gradient(900px 500px at 110% -20%, #b2efd6 0%, transparent 52%), + linear-gradient(160deg, #daf8e8 0%, #bdeecf 100%); } body.scope-ib .hero { background: linear-gradient(160deg, rgba(255,255,255,.09), rgba(255,255,255,0) 45%), - linear-gradient(125deg, #7a1f2a 0%, #b43444 55%, #d34d57 100%); + linear-gradient(125deg, #1f7a4a 0%, #2f9c61 55%, #47b879 100%); } body.scope-ib .hero::after { - background-color: rgba(90, 15, 28, .45); + background-color: rgba(10, 74, 45, .42); } body.scope-ib .hero::before { background: linear-gradient(to top, rgba(255,255,255,.9) 0 2px, rgba(255,255,255,0) 2px), - rgba(74, 9, 24, .42); + rgba(10, 61, 38, .40); } body.scope-ib .mode-btn.active { - background: linear-gradient(140deg, #9a2331, #c03d4c); - box-shadow: 0 8px 18px rgba(158, 33, 51, .35); + background: linear-gradient(140deg, #1d8d54, #2fac6d); + box-shadow: 0 8px 18px rgba(24, 124, 72, .35); } .wrap { width: min(1400px, calc(100% - 32px)); margin: 18px auto 28px; + padding-top: 68px; } .brand-strip { - margin-bottom: 12px; - display: flex; - justify-content: flex-start; + position: fixed; + top: 14px; + left: 16px; + z-index: 200; } .hero { @@ -106,10 +108,14 @@ font-size: clamp(26px, 4.8vw, 48px); letter-spacing: .3px; line-height: 1.02; + background: linear-gradient(115deg, #ffffff 25%, #b8d8ff 100%); + -webkit-background-clip: text; + background-clip: text; + -webkit-text-fill-color: transparent; } .brand-logo { - width: clamp(170px, 24vw, 280px); + width: clamp(119px, 16.8vw, 196px); padding: 0; border: 0; background: transparent; @@ -138,6 +144,14 @@ gap: 16px; } + .mode-switch-row { + display: flex; + align-items: center; + flex-wrap: wrap; + gap: 10px; + margin-top: 12px; + } + .mode-switch { display: inline-flex; gap: 6px; @@ -146,7 +160,36 @@ background: #ffffff; border: 1px solid #d9e6ff; box-shadow: 0 8px 24px rgba(26, 58, 118, .08); - margin-top: 12px; + } + + .polygon-btn { + display: inline-flex; + align-items: center; + gap: 6px; + padding: 9px 16px; + border-radius: 10px; + margin-left: auto; + font-size: 13px; + font-weight: 800; + letter-spacing: .2px; + color: #fff; + background: linear-gradient(140deg, #e05c1f, #e08c39); + box-shadow: 0 8px 18px rgba(200, 80, 20, .28); + text-decoration: none; + transition: .18s ease; + white-space: nowrap; + } + + .polygon-btn::after { + content: "↗"; + font-size: 12px; + opacity: .85; + } + + .polygon-btn:hover { + background: linear-gradient(140deg, #c94f15, #d4782e); + box-shadow: 0 10px 22px rgba(200, 80, 20, .38); + transform: translateY(-1px); } .mode-btn { @@ -180,11 +223,23 @@ .card h2 { margin: 0 0 10px; - font-size: 14px; + font-size: 12px; text-transform: uppercase; - letter-spacing: .9px; + letter-spacing: 1.1px; color: #234782; font-weight: 800; + display: flex; + align-items: center; + gap: 7px; + } + .card h2::before { + content: ""; + display: inline-block; + width: 3px; + height: 14px; + border-radius: 2px; + background: linear-gradient(180deg, #3978e0, #1f4ea3); + flex-shrink: 0; } .search { @@ -256,9 +311,18 @@ border-radius: 10px; background: linear-gradient(140deg, #0d7e59, #0a6648); color: #fff; - padding: 9px 14px; - font-weight: 700; + padding: 9px 18px; + font-weight: 800; + font-size: 13px; + font-family: Manrope, sans-serif; cursor: pointer; + transition: .18s ease; + letter-spacing: .2px; + } + button.action:hover { + transform: translateY(-1px); + box-shadow: 0 8px 18px rgba(10, 100, 70, .30); + background: linear-gradient(140deg, #0e8d64, #0c7551); } .result { @@ -274,14 +338,65 @@ display: flex; justify-content: space-between; align-items: center; - margin-bottom: 12px; + margin-bottom: 14px; gap: 12px; + padding-bottom: 12px; + border-bottom: 1px solid #e2ecff; } .result-head h3 { margin: 0; - font-size: 17px; + font-size: 16px; color: #1f3f77; + font-weight: 800; + letter-spacing: .2px; + } + .active-filters { + display: flex; + flex-wrap: wrap; + gap: 8px; + margin: 0 0 12px; + padding: 9px; + border-radius: 12px; + border: 1px solid #c9dafd; + background: linear-gradient(145deg, #e8f0ff, #dbe8ff); + box-shadow: inset 0 1px 0 rgba(255,255,255,.65); + } + .active-filter { + display: inline-flex; + align-items: center; + gap: 7px; + border-radius: 999px; + padding: 6px 8px 6px 10px; + border: 1px solid #cfe0ff; + background: linear-gradient(145deg, #f8fbff, #edf4ff); + color: #21457f; + font-size: 12px; + font-weight: 700; + } + .active-filter .kind { + opacity: .7; + font-weight: 600; + letter-spacing: .2px; + } + .active-filter .remove { + display: inline-grid; + place-items: center; + width: 20px; + height: 20px; + border: 0; + border-radius: 999px; + background: #dbe9ff; + color: #1f4a8f; + font-size: 14px; + line-height: 1; + cursor: pointer; + padding: 0; + transition: .16s ease; + } + .active-filter .remove:hover { + background: #c4dbff; + transform: scale(1.05); } .rows { @@ -295,17 +410,46 @@ background: linear-gradient(180deg, #ffffff, #f5f9ff); border-radius: 12px; padding: 10px; + position: relative; + overflow: hidden; + transition: .2s ease; + } + .row-card::before { + content: ""; + position: absolute; + top: 0; left: 0; right: 0; + height: 2px; + background: linear-gradient(90deg, #3978e0 0%, #7bb4ff 60%, transparent 100%); + } + .row-card:hover { + transform: translateY(-2px); + box-shadow: 0 10px 28px rgba(24, 56, 116, .13); + border-color: #c4d8ff; } - .row-card strong { color: #1a3e79; font-size: 14px; } + .row-card strong { + color: #1a3e79; + font-size: 13px; + font-weight: 800; + display: block; + padding-bottom: 8px; + margin-bottom: 8px; + border-bottom: 1px solid #e8f0ff; + letter-spacing: .1px; + } .tags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; } .tag { font-size: 12px; border-radius: 999px; - background: #eaf2ff; - color: #234b89; - padding: 4px 8px; - border: 1px solid #d2e3ff; + background: linear-gradient(135deg, #f0f6ff, #e4efff); + color: #1e4a8d; + padding: 4px 10px; + border: 1px solid #c8dcff; + font-weight: 600; + transition: .16s ease; + } + .tag:hover { + background: linear-gradient(135deg, #e4efff, #d4e6ff); } a.tag { text-decoration: none; @@ -316,7 +460,12 @@ a.tag::after { content: "↗"; font-size: 11px; - opacity: .85; + opacity: .8; + } + a.tag:hover { + background: linear-gradient(135deg, #daeaff, #c8ddff); + transform: translateY(-1px); + box-shadow: 0 4px 8px rgba(30, 74, 141, .12); } .credit { @@ -340,10 +489,181 @@ } @media (max-width: 980px) { - .brand-logo { max-width: 240px; } + .brand-logo { max-width: 160px; } .board { grid-template-columns: 1fr; } .hero { padding: 20px; } .credit { right: 8px; bottom: 6px; } .credit .name { font-size: 8px; } .credit a { font-size: 6px; } } + + @media (max-width: 768px) { + .wrap { + width: calc(100% - 16px); + margin: 10px auto 18px; + } + .brand-strip { + margin-bottom: 8px; + } + .brand-logo { + width: clamp(132px, 42vw, 190px); + } + .hero { + padding: 16px 14px 20px; + border-radius: 16px; + } + .hero h1 { + font-size: clamp(22px, 7vw, 32px); + line-height: 1.06; + } + .hero p { + font-size: 14px; + } + .mode-switch-row { + flex-direction: column; + align-items: stretch; + } + .mode-switch { + width: 100%; + display: grid; + grid-template-columns: 1fr 1fr; + } + .polygon-btn { + width: 100%; + justify-content: center; + box-sizing: border-box; + } + .mode-btn { + width: 100%; + min-height: 42px; + } + .card { + min-height: 0; + padding: 12px; + } + .chip-grid { + max-height: 260px; + } + .chip { + font-size: 12px; + padding: 8px 10px; + } + .footer-bar { + flex-direction: column; + align-items: stretch; + gap: 8px; + background: rgba(255, 255, 255, .78); + border: 1px solid #dbe7ff; + border-radius: 12px; + padding: 10px; + } + button.action { + width: 100%; + min-height: 42px; + } + .result { + margin-top: 12px; + padding: 12px; + } + .active-filters { + margin-bottom: 10px; + } + .active-filter { + width: 100%; + justify-content: space-between; + } + .result-head h3 { + font-size: 15px; + } + .rows { + grid-template-columns: 1fr; + gap: 10px; + } + .credit { + right: 8px; + bottom: 8px; + background: rgba(255, 255, 255, .86); + border: 1px solid #dbe6ff; + border-radius: 10px; + padding: 4px 6px; + } + } + + @media (max-width: 420px) { + .hero::before, + .hero::after { + opacity: .72; + } + .search { + padding: 10px 11px; + } + .tag { + font-size: 11px; + } + } + + /* Custom scrollbar */ + .chip-grid { + scrollbar-width: thin; + scrollbar-color: #c5d8f7 transparent; + } + .chip-grid::-webkit-scrollbar { width: 5px; } + .chip-grid::-webkit-scrollbar-track { background: transparent; } + .chip-grid::-webkit-scrollbar-thumb { background: #c5d8f7; border-radius: 4px; } + .chip-grid::-webkit-scrollbar-thumb:hover { background: #a8c4f0; } + + /* Stat pills */ + .stat-pill { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 4px 10px; + background: rgba(30, 74, 141, .06); + border: 1px solid #d0e0ff; + border-radius: 999px; + font-size: 12px; + color: #2a4e8d; + font-weight: 600; + } + .stat-pill b { + color: #1a3e79; + font-weight: 800; + } + + /* Footer stats row */ + #stats { + display: flex; + flex-wrap: wrap; + gap: 6px; + } + + /* Entrance animations */ + @keyframes fadeUp { + from { opacity: 0; transform: translateY(10px); } + to { opacity: 1; transform: translateY(0); } + } + .hero { animation: fadeUp .35s ease both; } + .board { animation: fadeUp .45s ease .06s both; } + .footer-bar { animation: fadeUp .45s ease .09s both; } + .result { animation: fadeUp .45s ease .12s both; } + + /* Chip count badge */ + .card-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + } + .card-header h2 { margin: 0; } + .count-badge { + font-size: 11px; + font-weight: 700; + color: #3978e0; + background: #e8f0ff; + border: 1px solid #cddeff; + border-radius: 999px; + padding: 2px 8px; + min-width: 28px; + text-align: center; + } + diff --git a/static/favicon.png b/static/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..ad5ffbf49adc0a8cb5b7d81d87e5e8ca7926ac41 GIT binary patch literal 451 zcmV;!0X+VRP)i_@%33O6UQviQ|e}I61pUP!ypvEaZ3(?Y=t|y^*J(ixXazr*T~xl2YOutS$xW>iKa2< z!>N!zzZz@RnDe;ZjXbQApWnQf3G2O60GY5Ua0;*y-Gc=-VqAD25nTum7D&Vx!omaI z|Aasg8F=T9V+s}$$UzqZLD(Z0w_u@W@IHWsutzYKU?E;11#<~jVhvKzmtZ2+AWw4U zfi38HU|*=21@<5lFY;H|f<&ytod8M@iD_^IPy#crW~jT<5*lSZ4e172hRMRga6+;@)I=R#ql&PaUK}I3KT#jFwYhgKp=2`VNd{;z`ACj z01Sa&yBZXLB=Gd-2L&JqYz`n$fD3__Ll6|8A&@wTK>h;JW|-002ovPDHLkV1il1vK#;a literal 0 HcmV?d00001 diff --git a/static/js/index.js b/static/js/index.js index c3118b8..ea1132d 100644 --- a/static/js/index.js +++ b/static/js/index.js @@ -17,6 +17,11 @@ clearBtn: document.getElementById("clearBtn"), modeInfra: document.getElementById("modeInfra"), modeIb: document.getElementById("modeIb"), + resultSection: document.querySelector(".result"), + filtersSection: document.querySelector(".board"), + activeFilters: document.getElementById("activeFilters"), + vendorBadge: document.getElementById("vendorBadge"), + categoryBadge: document.getElementById("categoryBadge"), }; let clickAudioCtx = null; @@ -130,9 +135,12 @@ else if (!allowedVendors.has(vendor.id)) node.classList.add("dim"); node.textContent = vendor.name; node.addEventListener("click", () => { - if (state.selectedVendors.has(vendor.id)) state.selectedVendors.delete(vendor.id); + const wasSelected = state.selectedVendors.has(vendor.id); + if (wasSelected) state.selectedVendors.delete(vendor.id); else state.selectedVendors.add(vendor.id); render(); + if (wasSelected) scrollAfterDeselect(); + else scrollToResultsSmooth(); }); el.vendorList.appendChild(node); } @@ -148,14 +156,20 @@ else if (!allowedCategories.has(category.id)) node.classList.add("dim"); node.textContent = category.name; node.addEventListener("click", () => { - if (state.selectedCategories.has(category.id)) state.selectedCategories.delete(category.id); + const wasSelected = state.selectedCategories.has(category.id); + if (wasSelected) state.selectedCategories.delete(category.id); else state.selectedCategories.add(category.id); render(); + if (wasSelected) scrollAfterDeselect(); + else scrollToResultsSmooth(); }); el.categoryList.appendChild(node); } - el.stats.textContent = `Вендоров: ${allowedVendors.size}/${state.data.vendors.length} | Категорий: ${allowedCategories.size}/${state.data.categories.length} | Продуктов: ${visibleSets().allowedProducts.size}/${state.data.products.length}`; + const ps = visibleSets().allowedProducts.size; + el.stats.innerHTML = `Вендоры ${allowedVendors.size} / ${state.data.vendors.length}Категории ${allowedCategories.size} / ${state.data.categories.length}Продукты ${ps} / ${state.data.products.length}`; + if (el.vendorBadge) el.vendorBadge.textContent = allowedVendors.size; + if (el.categoryBadge) el.categoryBadge.textContent = allowedCategories.size; } function renderResults() { @@ -213,9 +227,82 @@ el.modeIb.classList.toggle("active", state.scope === "ib"); document.body.classList.toggle("scope-ib", state.scope === "ib"); renderChips(); + renderActiveFilters(); renderResults(); } + function scrollToResultsSmooth() { + if (!el.resultSection) return; + const top = Math.max(el.resultSection.getBoundingClientRect().top + window.scrollY - 10, 0); + window.scrollTo({ top, behavior: "smooth" }); + } + + function scrollToFiltersSmooth() { + if (!el.filtersSection) return; + const top = Math.max(el.filtersSection.getBoundingClientRect().top + window.scrollY - 8, 0); + window.scrollTo({ top, behavior: "smooth" }); + } + + function scrollToTopSmooth() { + window.scrollTo({ top: 0, behavior: "smooth" }); + } + + function scrollAfterDeselect() { + if (window.innerWidth > 980) { + scrollToTopSmooth(); + return; + } + scrollToFiltersSmooth(); + } + + function renderActiveFilters() { + if (!el.activeFilters) return; + el.activeFilters.innerHTML = ""; + + const vendorsById = new Map(state.data.vendors.map(v => [v.id, v.name])); + const categoriesById = new Map(state.data.categories.map(c => [c.id, c.name])); + + const items = []; + for (const id of state.selectedVendors) { + const name = vendorsById.get(id); + if (name) items.push({ kind: "Вендор", name, id, type: "vendor" }); + } + for (const id of state.selectedCategories) { + const name = categoriesById.get(id); + if (name) items.push({ kind: "Категория", name, id, type: "category" }); + } + + if (items.length === 0) { + el.activeFilters.style.display = "none"; + return; + } + el.activeFilters.style.display = "flex"; + + for (const item of items) { + const node = document.createElement("div"); + node.className = "active-filter"; + + const text = document.createElement("span"); + text.innerHTML = `${item.kind}: ${item.name}`; + node.appendChild(text); + + const remove = document.createElement("button"); + remove.className = "remove"; + remove.type = "button"; + remove.setAttribute("aria-label", `Убрать фильтр ${item.name}`); + remove.textContent = "×"; + remove.addEventListener("click", () => { + if (item.type === "vendor") state.selectedVendors.delete(item.id); + else state.selectedCategories.delete(item.id); + render(); + scrollToFiltersSmooth(); + }); + node.appendChild(remove); + + el.activeFilters.appendChild(node); + } + } + async function loadScopeData(scope) { const res = await fetch(`/api/data?scope=${encodeURIComponent(scope)}`); state.data = await res.json(); @@ -258,6 +345,7 @@ el.vendorSearch.value = ""; el.categorySearch.value = ""; render(); + scrollAfterDeselect(); }); el.modeInfra.addEventListener("click", () => { diff --git a/static/mont_logo.png b/static/mont_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..49805c4f6ec460b26e4b21a0225aedaff5cbf051 GIT binary patch literal 32423 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�VtPCOY#dNO3@&hcN`f)sZb+f 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�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 NbhQjMtJNJI|38Qrob> Корзина МОНТ - + @@ -14,7 +14,7 @@
@@ -23,9 +23,12 @@

Вендоры в корзине МОНТ

Актуальная матрица вендоров, продуктов и категорий. Выбирайте вендоров или категории, чтобы видеть релевантные продуктовые линейки в Инфраструктуре и ИБ.

-
- - +
+
+ + +
+ Инфраструктурный полигон МОНТ
@@ -33,13 +36,13 @@
-

Вендоры

+

Вендоры

...
-

Категории

+

Категории

...
@@ -54,6 +57,7 @@

Вендоры и продукты (после фильтрации)

+