Hustler-Pixelwelt: Pult und Keller füllen die Seite (alte Hülle und Übergangsregel entfernt, CSS eingebunden)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f12866dda3
commit
4be9750f36
4 files changed
+22
-28
No files matched your search
+17
-20
@@ -12,7 +12,9 @@ import '../styles/workers.css'
|
||||
import '../styles/hustler/schrift.css'
|
||||
import '../styles/hustler/hochhaus.css'
|
||||
import '../styles/hustler/keller.css'
|
||||
import '../styles/hustler/hustler-keller-ui.css'
|
||||
import '../styles/hustler/pult.css'
|
||||
import '../styles/hustler/hustler-pult-ui.css'
|
||||
import '../styles/hustler/hustler-ui.css'
|
||||
import '../styles/hustler/hustler-welt.css'
|
||||
import '../styles/hustler/hustler-kopf.css'
|
||||
@@ -72,29 +74,24 @@ export default function WorkersPage() {
|
||||
onOpen={(tab) => setParams({ tab })}
|
||||
/>
|
||||
)}
|
||||
{/* Pult und Keller stecken bis T9/T10 noch in der alten hellen Hülle (.page.wk-page); hustler-ui.css gibt ihnen dafür normale Höhe */}
|
||||
{active.id === 'freigabe' && (
|
||||
<div className="page wk-page">
|
||||
<PultList
|
||||
api={api}
|
||||
me={{ id: user?.$id, name: user?.name }}
|
||||
kpis={state?.kpis}
|
||||
workers={workers}
|
||||
onBack={() => setParams({ tab: 'hochhaus' })}
|
||||
/>
|
||||
</div>
|
||||
<PultList
|
||||
api={api}
|
||||
me={{ id: user?.$id, name: user?.name }}
|
||||
kpis={state?.kpis}
|
||||
workers={workers}
|
||||
onBack={() => setParams({ tab: 'hochhaus' })}
|
||||
/>
|
||||
)}
|
||||
{active.id === 'botleads' && (
|
||||
<div className="page wk-page">
|
||||
<BotLeadList
|
||||
api={api}
|
||||
bot={bot}
|
||||
onClearBot={() => setParams({ tab: 'botleads' })}
|
||||
kpis={state?.kpis}
|
||||
workers={workers}
|
||||
onBack={() => setParams({ tab: 'hochhaus' })}
|
||||
/>
|
||||
</div>
|
||||
<BotLeadList
|
||||
api={api}
|
||||
bot={bot}
|
||||
onClearBot={() => setParams({ tab: 'botleads' })}
|
||||
kpis={state?.kpis}
|
||||
workers={workers}
|
||||
onBack={() => setParams({ tab: 'hochhaus' })}
|
||||
/>
|
||||
)}
|
||||
</div>
|
||||
)
|
||||
|
||||
@@ -8,11 +8,8 @@
|
||||
/* Mobilleiste aus global.css (.mobile-bar, 52 px) abziehen */
|
||||
.hk-seite { height: calc(100vh - 52px); height: calc(100dvh - 52px); }
|
||||
}
|
||||
.hk-seite > .hk-hochhaus { position: absolute; inset: 0; }
|
||||
.hk-seite > .hk-hochhaus, .hk-seite > .hk-pult, .hk-seite > .hk-keller { position: absolute; inset: 0; }
|
||||
|
||||
/* Übergang bis T9/T10: Pult und Keller stehen noch in der alten hellen Hülle (.page.wk-page), brauchen normale Höhe, Scrollen und hellen Grund.
|
||||
Entfällt, sobald PultList und BotLeadList in ihre Pixelszenen umgebaut sind (.hk-pult / .hk-keller füllen dann selbst die Seite). */
|
||||
.hk-seite[data-tab="freigabe"], .hk-seite[data-tab="botleads"] { height: auto; overflow: visible; background: none; }
|
||||
|
||||
/* ---------- Hochhaus: Laden und Leerzustand im Pixel-Stil ---------- */
|
||||
.hk-hochhaus .hk-laden,
|
||||
|
||||
@@ -268,16 +268,16 @@ test('Seite: ohne ?tab, mit ?tab=hochhaus und mit unbekanntem Tab erscheint das
|
||||
}
|
||||
})
|
||||
|
||||
test('Seite: ?tab=freigabe zeigt das Pult in der alten Hülle, ?tab=botleads den Keller; data-tab folgt', async () => {
|
||||
test('Seite: ?tab=freigabe zeigt das Pult, ?tab=botleads den Keller, beide direkt in .hk-seite (keine alte helle Hülle mehr); data-tab folgt', async () => {
|
||||
const pult = await seite('tab=freigabe')
|
||||
try {
|
||||
assert.equal(pult.root().props['data-tab'], 'freigabe'); assert.deepEqual(pult.screen(), ['pult'])
|
||||
assert.equal(byClass(pult.root(), 'page').length, 1); assert.ok(hasClass(byClass(pult.root(), 'page')[0], 'wk-page'))
|
||||
assert.equal(byClass(pult.root(), 'page').length, 0); assert.equal(byClass(pult.root(), 'wk-page').length, 0)
|
||||
} finally { pult.end() }
|
||||
const keller = await seite('tab=botleads')
|
||||
try {
|
||||
assert.equal(keller.root().props['data-tab'], 'botleads'); assert.deepEqual(keller.screen(), ['keller'])
|
||||
assert.equal(byClass(keller.root(), 'page').length, 1)
|
||||
assert.equal(byClass(keller.root(), 'page').length, 0); assert.equal(byClass(keller.root(), 'wk-page').length, 0)
|
||||
} finally { keller.end() }
|
||||
})
|
||||
|
||||
|
||||
@@ -47,7 +47,7 @@ test('WorkersPage: freigabe zeigt die PultList, botleads die BotLeadList (api, b
|
||||
})
|
||||
test('CSS-Importe der Hustler-Oberfläche stehen nur in WorkersPage, nicht in den Komponenten (sonst nicht unter Node mit fakeReact ladbar)', () => {
|
||||
const s = readFileSync(new URL('../../src/pages/WorkersPage.jsx', import.meta.url), 'utf8')
|
||||
for (const css of ['workers', 'hustler/schrift', 'hustler/hochhaus', 'hustler/keller', 'hustler/pult', 'hustler/hustler-ui', 'hustler/hustler-welt', 'hustler/hustler-kopf', 'hustler/hustler-detail', 'hustler/hustler-regie']) assert.ok(s.includes(`import '../styles/${css}.css'`), css)
|
||||
for (const css of ['workers', 'hustler/schrift', 'hustler/hochhaus', 'hustler/keller', 'hustler/pult', 'hustler/hustler-ui', 'hustler/hustler-welt', 'hustler/hustler-kopf', 'hustler/hustler-detail', 'hustler/hustler-regie', 'hustler/hustler-pult-ui', 'hustler/hustler-keller-ui']) assert.ok(s.includes(`import '../styles/${css}.css'`), css)
|
||||
const walk = (dir) => readdirSync(dir, { withFileTypes: true }).flatMap((e) => (e.isDirectory() ? walk(path.join(dir, e.name)) : [path.join(dir, e.name)]))
|
||||
const root = fileURLToPath(new URL('../../src/components/workers/', import.meta.url))
|
||||
const files = walk(root).filter((f) => /\.(jsx?|mjs)$/.test(f))
|
||||
|
||||
Reference in new issue
Block a user