Panelowy jezyk strony: statusy, paski tempa, os przestojow, fonty, wersjonowanie assetow
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
-- Seed v4 strony `home`: instrument i sekcje w języku panelu Sensory
|
||||
-- (karty KPI, wiersze statusów, paski tempa, oś przestojów). Wszystko z tagiem demo.
|
||||
-- TYLKO elementy dialektu CMS (div/p/span/h1-h6/a/ul/ol/li/strong/em/table...).
|
||||
UPDATE cms_pages SET
|
||||
title = 'Strona główna',
|
||||
draft_json = '{}',
|
||||
draft_html = '',
|
||||
draft_css = '',
|
||||
draft_seo_title = 'FDMTech — monitoring produkcji | BlackBox Sensory, OEE',
|
||||
draft_seo_description = 'Monitoring produkcji: rzeczywisty odczyt nakładu, czas pracy i przestoje maszyn, OEE i raporty. Urządzenie BlackBox Sensory.',
|
||||
published_html = '<div class="hero" aria-labelledby="hero-title"><div class="hero-inner"><div><h1 id="hero-title">Porządek w pomiarach Twojej produkcji</h1><p class="hero-lede">FDMTech buduje <strong>BlackBox Sensory</strong>, licznik produkcji przy maszynie. Zlicza sztuki z czujników, zapisuje je z czasem i pokazuje, kiedy maszyna pracuje, a kiedy stoi.</p><p class="hero-actions"><a class="btn btn-primary" href="/kontakt">Zapytaj o bezpłatny audyt</a><a class="btn btn-ghost" href="#panel">Zobacz panel</a></p></div><div class="counter-panel"><div class="counter-row"><div class="counter-cell"><b>1 024</b><span>szt. w sesji*</span></div><div class="counter-cell"><b>750</b><span>szt./h tempa*</span></div><div class="counter-cell"><b>PRACUJE</b><span>status*</span></div></div><span class="demo-tag">* podgląd demonstracyjny</span></div></div></div><div class="wrap"><div class="section" id="panel" aria-labelledby="panel-title"><h2 id="panel-title">Tak wygląda panel</h2><p><span class="demo-tag">Podgląd demonstracyjny</span></p><p>Statusy maszyn, tempo względem taktu i oś przestojów — na żywo, z dowolnego miejsca.</p><div class="machine-row"><div><b>Maszyna arkuszowa B2</b><small>nakład 12 400 egz.</small><div class="bar"><span class="good w82"></span></div></div><span class="pill pill--ok">PRACUJE</span></div><div class="machine-row"><div><b>Linia oprawy</b><small>klejenie · czeka na tekturę</small><div class="bar"><span class="bad w31"></span></div></div><span class="pill pill--bad">PRZESTÓJ</span></div><div class="stripes"><i class="w"></i><i class="s"></i><i class="w"></i><i class="p"></i><i class="w"></i></div><p class="timeline-legend"><span><i class="w"></i>Praca</span><span><i class="s"></i>Przerwa > 2 min</span><span><i class="p"></i>Przerwa > 10 min</span></p></div><div class="section" id="pomiary" aria-labelledby="pomiary-title"><h2 id="pomiary-title">Co mierzy BlackBox</h2><p>BlackBox Sensory zlicza impulsy z czujników przy maszynie i zamienia je na sztuki. Z pomiaru powstają liczba produkcji, tempo, czas pracy i przestoje.</p><ul class="measure-list"><li><h3>Liczba sztuk</h3><p>Impulsy z czujnika optycznego lub enkodera, przeliczone na sztuki. Licznik całkowity i licznik sesji.</p></li><li><h3>Takt i tempo</h3><p>Odstępy między impulsami dają takt maszyny i tempo w sztukach na godzinę, do porównania z normą.</p></li><li><h3>Praca i przestoje</h3><p>Strumień impulsów rozróżnia pracę od postoju. Przerwy w sygnale trafiają do rejestru z czasem trwania.</p></li><li><h3>Znacznik czasu</h3><p>Każdy odczyt niesie czas, więc wracasz do konkretnej zmiany, godziny i nakładu.</p></li></ul></div><div class="section" aria-labelledby="druk-title"><div class="print-grid"><div><h2 id="druk-title">Drukarnie i powtarzalna produkcja książek</h2><p>Ten sam tytuł wraca po miesiącach — porównaj tempo i przestoje z poprzednim nakładem zamiast zgadywać.</p><ul><li>Ten sam zestaw pomiarów dla pierwszego nakładu i dodruku.</li><li>Liczba sztuk i tempo z czasem, do własnej dokumentacji partii.</li><li>Audyt zaczyna się od Twoich potrzeb, nie od cennika.</li></ul></div><div><h2>Od czego zacząć</h2><p>Opowiedz, co produkujesz i co chcesz sprawdzać. Oddzwaniamy z propozycją rozmowy.</p><p><a href="/kontakt">Umów bezpłatny audyt</a></p></div></div></div><div class="audit-band" aria-labelledby="audyt-title"><div><h2 id="audyt-title">Bezpłatny audyt</h2><p>Zapytanie trafia do zespołu FDMTech. Odpowiadamy zwykle w ciągu jednego dnia roboczego.</p></div><a class="btn btn-primary" href="/kontakt">Przejdź do formularza</a></div><div class="section" aria-labelledby="kontakt-title"><h2 id="kontakt-title">Kontakt</h2><p>FDMTech Bartosz Pulchny, Krakowska 67/1, 71-017 Szczecin, NIP 852-251-80-36, tel. <a href="tel:+48533873555">533 873 555</a>. Pełny formularz na stronie <a href="/kontakt">Kontakt</a>.</p></div></div>',
|
||||
published_css = '.w82{width:82%}.w31{width:31%}',
|
||||
published_title = 'FDMTech — monitoring produkcji',
|
||||
seo_title = 'FDMTech — monitoring produkcji | BlackBox Sensory, OEE',
|
||||
seo_description = 'Monitoring produkcji: rzeczywisty odczyt nakładu, czas pracy i przestoje maszyn, OEE i raporty. Urządzenie BlackBox Sensory.',
|
||||
status = 'published',
|
||||
published_at = UTC_TIMESTAMP(),
|
||||
version = 4,
|
||||
updated_by = 1,
|
||||
updated_at = UTC_TIMESTAMP()
|
||||
WHERE slug = 'home';
|
||||
INSERT INTO cms_revisions (page_id, version, snapshot_json, created_by, created_at)
|
||||
SELECT id, 4, '{}', 1, UTC_TIMESTAMP() FROM cms_pages WHERE slug = 'home';
|
||||
@@ -0,0 +1,23 @@
|
||||
-- Seed v4 strony `home`: instrument i sekcje w języku panelu Sensory
|
||||
-- (karty KPI, wiersze statusów, paski tempa, oś przestojów). Wszystko z tagiem demo.
|
||||
-- TYLKO elementy dialektu CMS (div/p/span/h1-h6/a/ul/ol/li/strong/em/table...).
|
||||
UPDATE cms_pages SET
|
||||
title = 'Strona główna',
|
||||
draft_json = '{}',
|
||||
draft_html = '',
|
||||
draft_css = '',
|
||||
draft_seo_title = 'FDMTech — monitoring produkcji | BlackBox Sensory, OEE',
|
||||
draft_seo_description = 'Monitoring produkcji: rzeczywisty odczyt nakładu, czas pracy i przestoje maszyn, OEE i raporty. Urządzenie BlackBox Sensory.',
|
||||
published_html = '<div class="hero" aria-labelledby="hero-title"><div class="hero-inner"><div><h1 id="hero-title">Porządek w pomiarach Twojej produkcji</h1><p class="hero-lede">FDMTech buduje <strong>BlackBox Sensory</strong>, licznik produkcji przy maszynie. Zlicza sztuki z czujników, zapisuje je z czasem i pokazuje, kiedy maszyna pracuje, a kiedy stoi.</p><p class="hero-actions"><a class="btn btn-primary" href="/kontakt">Zapytaj o bezpłatny audyt</a><a class="btn btn-ghost" href="#panel">Zobacz panel</a></p></div><div class="counter-panel"><div class="counter-row"><div class="counter-cell"><b>1 024</b><span>szt. w sesji*</span></div><div class="counter-cell"><b>750</b><span>szt./h tempa*</span></div><div class="counter-cell"><b>PRACUJE</b><span>status*</span></div></div><span class="demo-tag">* podgląd demonstracyjny</span></div></div></div><div class="wrap"><div class="section" id="panel" aria-labelledby="panel-title"><h2 id="panel-title">Tak wygląda panel</h2><p><span class="demo-tag">Podgląd demonstracyjny</span></p><p>Statusy maszyn, tempo względem taktu i oś przestojów — na żywo, z dowolnego miejsca.</p><div class="machine-row"><div><b>Maszyna arkuszowa B2</b><span class="sub">nakład 12 400 egz.</span><div class="bar"><span class="good w82"></span></div></div><span class="pill pill--ok">PRACUJE</span></div><div class="machine-row"><div><b>Linia oprawy</b><span class="sub">klejenie · czeka na tekturę</span><div class="bar"><span class="bad w31"></span></div></div><span class="pill pill--bad">PRZESTÓJ</span></div><div class="stripes"><i class="w"></i><i class="s"></i><i class="w"></i><i class="p"></i><i class="w"></i></div><p class="timeline-legend"><span><i class="w"></i>Praca</span><span><i class="s"></i>Przerwa > 2 min</span><span><i class="p"></i>Przerwa > 10 min</span></p></div><div class="section" id="pomiary" aria-labelledby="pomiary-title"><h2 id="pomiary-title">Co mierzy BlackBox</h2><p>BlackBox Sensory zlicza impulsy z czujników przy maszynie i zamienia je na sztuki. Z pomiaru powstają liczba produkcji, tempo, czas pracy i przestoje.</p><ul class="measure-list"><li><h3>Liczba sztuk</h3><p>Impulsy z czujnika optycznego lub enkodera, przeliczone na sztuki. Licznik całkowity i licznik sesji.</p></li><li><h3>Takt i tempo</h3><p>Odstępy między impulsami dają takt maszyny i tempo w sztukach na godzinę, do porównania z normą.</p></li><li><h3>Praca i przestoje</h3><p>Strumień impulsów rozróżnia pracę od postoju. Przerwy w sygnale trafiają do rejestru z czasem trwania.</p></li><li><h3>Znacznik czasu</h3><p>Każdy odczyt niesie czas, więc wracasz do konkretnej zmiany, godziny i nakładu.</p></li></ul></div><div class="section" aria-labelledby="druk-title"><div class="print-grid"><div><h2 id="druk-title">Drukarnie i powtarzalna produkcja książek</h2><p>Ten sam tytuł wraca po miesiącach — porównaj tempo i przestoje z poprzednim nakładem zamiast zgadywać.</p><ul><li>Ten sam zestaw pomiarów dla pierwszego nakładu i dodruku.</li><li>Liczba sztuk i tempo z czasem, do własnej dokumentacji partii.</li><li>Audyt zaczyna się od Twoich potrzeb, nie od cennika.</li></ul></div><div><h2>Od czego zacząć</h2><p>Opowiedz, co produkujesz i co chcesz sprawdzać. Oddzwaniamy z propozycją rozmowy.</p><p><a href="/kontakt">Umów bezpłatny audyt</a></p></div></div></div><div class="audit-band" aria-labelledby="audyt-title"><div><h2 id="audyt-title">Bezpłatny audyt</h2><p>Zapytanie trafia do zespołu FDMTech. Odpowiadamy zwykle w ciągu jednego dnia roboczego.</p></div><a class="btn btn-primary" href="/kontakt">Przejdź do formularza</a></div><div class="section" aria-labelledby="kontakt-title"><h2 id="kontakt-title">Kontakt</h2><p>FDMTech Bartosz Pulchny, Krakowska 67/1, 71-017 Szczecin, NIP 852-251-80-36, tel. <a href="tel:+48533873555">533 873 555</a>. Pełny formularz na stronie <a href="/kontakt">Kontakt</a>.</p></div></div>',
|
||||
published_css = '.w82{width:82%}.w31{width:31%}',
|
||||
published_title = 'FDMTech — monitoring produkcji',
|
||||
seo_title = 'FDMTech — monitoring produkcji | BlackBox Sensory, OEE',
|
||||
seo_description = 'Monitoring produkcji: rzeczywisty odczyt nakładu, czas pracy i przestoje maszyn, OEE i raporty. Urządzenie BlackBox Sensory.',
|
||||
status = 'published',
|
||||
published_at = UTC_TIMESTAMP(),
|
||||
version = 5,
|
||||
updated_by = 1,
|
||||
updated_at = UTC_TIMESTAMP()
|
||||
WHERE slug = 'home';
|
||||
INSERT INTO cms_revisions (page_id, version, snapshot_json, created_by, created_at)
|
||||
SELECT id, 5, '{}', 1, UTC_TIMESTAMP() FROM cms_pages WHERE slug = 'home';
|
||||
+2
-2
@@ -54,12 +54,12 @@ final class View
|
||||
. '<title>' . $e($meta['title']) . '</title><meta name="description" content="' . $e($meta['description']) . '">'
|
||||
. '<meta name="robots" content="' . $e($meta['robots']) . '">'
|
||||
. ($meta['canonical'] !== '' ? '<link rel="canonical" href="' . $e($meta['canonical']) . '">' : '')
|
||||
. '<link rel="stylesheet" href="/assets/css/site.css?v=2">' . $cmsStyleTag . '</head><body>'
|
||||
. '<link rel="stylesheet" href="/assets/css/site.css?v=4">' . $cmsStyleTag . '</head><body>'
|
||||
. '<header><a href="/">' . $e($site['name']) . '</a><nav aria-label="Nawigacja główna">' . $navigation . '</nav></header>'
|
||||
. $content . '<footer><p>' . $e($site['name']) . '</p>'
|
||||
. ($site['contact_email'] !== '' ? '<a href="mailto:' . $e($site['contact_email']) . '">' . $e($site['contact_email']) . '</a>' : '')
|
||||
. ($site['contact_phone'] !== '' ? '<p>' . $e($site['contact_phone']) . '</p>' : '')
|
||||
. '</footer><script src="/assets/js/site.js?v=2" defer></script></body></html>';
|
||||
. '</footer><script src="/assets/js/site.js?v=4" defer></script></body></html>';
|
||||
}
|
||||
|
||||
public static function form(array $data): string
|
||||
|
||||
@@ -542,6 +542,94 @@ button.btn-primary:disabled { opacity: 0.55; cursor: not-allowed; }
|
||||
.nav-scrim[hidden] { display: none; }
|
||||
}
|
||||
|
||||
/* Instrumenty z panelu Sensory (podgląd demonstracyjny w treści CMS) */
|
||||
.kpi-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 1rem;
|
||||
margin-top: 1.4rem;
|
||||
}
|
||||
.kpi-card {
|
||||
background: var(--paper);
|
||||
border: 1px solid var(--line);
|
||||
border-radius: var(--radius);
|
||||
padding: 1.1rem 1.2rem;
|
||||
box-shadow: 0 10px 24px rgba(16, 44, 50, 0.08);
|
||||
}
|
||||
.kpi-card b {
|
||||
display: block;
|
||||
font-family: var(--font-display);
|
||||
font-variant-numeric: tabular-nums;
|
||||
font-size: 1.9rem;
|
||||
line-height: 1.1;
|
||||
color: var(--teal);
|
||||
}
|
||||
.kpi-card span { font-size: 0.92rem; color: var(--ink-soft); }
|
||||
.machine-row {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr auto;
|
||||
gap: 0.35rem 1rem;
|
||||
align-items: center;
|
||||
padding: 0.85rem 0;
|
||||
border-top: 1px solid var(--line);
|
||||
}
|
||||
.machine-row:first-of-type { border-top: 0; }
|
||||
.machine-row b { color: var(--ink); }
|
||||
.machine-row .sub { display: block; color: var(--ink-soft); font-size: 0.88rem; font-weight: 400; }
|
||||
.pill {
|
||||
display: inline-block;
|
||||
font-size: 0.78rem;
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.07em;
|
||||
padding: 0.3rem 0.75rem;
|
||||
border-radius: 999px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
.pill--ok { background: #ddf0c8; color: #2c4a00; }
|
||||
.pill--bad { background: #fbe0d6; color: #8f2b16; }
|
||||
.pill--idle { background: #f4e9c8; color: #6b4e00; }
|
||||
.bar {
|
||||
height: 0.65rem;
|
||||
background: #dde5dd;
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
grid-column: 1 / -1;
|
||||
}
|
||||
.bar > span { display: block; height: 100%; border-radius: 999px; }
|
||||
.bar > span.good { background: #3f9e4d; }
|
||||
.bar > span.bad { background: #d95f4b; }
|
||||
.stripes {
|
||||
display: flex;
|
||||
height: 15px;
|
||||
border-radius: 999px;
|
||||
overflow: hidden;
|
||||
background: #dde5dd;
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
.stripes i { display: block; height: 100%; }
|
||||
.stripes .w { background: #3f9e4d; flex: 5; }
|
||||
.stripes .s { background: #d9a441; flex: 2; }
|
||||
.stripes .p { background: #d95f4b; flex: 3; }
|
||||
.timeline-legend {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.4rem 1.2rem;
|
||||
font-size: 0.88rem;
|
||||
color: var(--ink-soft);
|
||||
margin-top: 0.8rem;
|
||||
}
|
||||
.timeline-legend i {
|
||||
display: inline-block;
|
||||
width: 0.75rem;
|
||||
height: 0.75rem;
|
||||
border-radius: 3px;
|
||||
margin-right: 0.35rem;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
@media (max-width: 900px) {
|
||||
.kpi-row { grid-template-columns: repeat(2, 1fr); }
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html { scroll-behavior: auto; }
|
||||
*, *::before, *::after {
|
||||
|
||||
@@ -16,7 +16,7 @@ $isError = ($statusCode ?? 200) >= 400;
|
||||
<?php if (($meta['canonical'] ?? '') !== '') : ?>
|
||||
<link rel="canonical" href="<?= $e($meta['canonical']) ?>">
|
||||
<?php endif; ?>
|
||||
<link rel="stylesheet" href="/assets/css/site.css?v=2">
|
||||
<link rel="stylesheet" href="/assets/css/site.css?v=4">
|
||||
<?= $cmsStyleTag ?>
|
||||
<link rel="icon" type="image/svg+xml" href="/assets/img/logo-pulse.svg">
|
||||
</head>
|
||||
@@ -81,6 +81,6 @@ $isError = ($statusCode ?? 200) >= 400;
|
||||
<span>BlackBox Sensory to nazwa produktu FDMTech.</span>
|
||||
</div>
|
||||
</footer>
|
||||
<script src="/assets/js/site.js?v=2" nonce="<?= $e($nonce ?? '') ?>" defer></script>
|
||||
<script src="/assets/js/site.js?v=4" nonce="<?= $e($nonce ?? '') ?>" defer></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user