Theme modern lief nicht: formWorkflow fehlte
Die Seite baute nicht mehr auf, weder headless noch im Browser. Der Grund stand im Statusfeld, aber meine Proben haben zu frueh gemessen und ihn nie zu sehen bekommen: "Fehler beim Laden: formWorkflow is not defined". Meine Ersetzung fuer Slide 3 lief von "function visWechseln" bis zum Kommentar "Slide 4". Genau dazwischen lagen die Formen fuer Workflow, Trichter und Megafon. Sie sind wieder da, diesmal als Einfuegung vor dem Kommentar statt als Bereichsersetzung. Das war derselbe Fehlertyp zum dritten Mal in diesem Projekt: ueber einen Bereich zwischen zwei Ankern loeschen, zwischen denen mehr steht als gedacht. Ich ersetze ab jetzt nur noch ueber den genauen Textabschnitt und fuege sonst ein. Zur Diagnose: node --check faellt hier nicht auf, weil eine fehlende Funktion erst zur Laufzeit auffliegt. Was es gefunden haette, ist eine Probe, die lange genug wartet und den Statustext ausliest -- die Seite schreibt ihren Ladefehler dort hinein. Slide 3 hat mehr Luft bekommen: Karte 580 statt 500 hoch, Zeilenabstand 78 statt 66, Innenrand 52 statt 48. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
43a4a394f2
commit
af6afe8e6e
1 file changed
+45
-9
+45
-9
@@ -1205,7 +1205,7 @@
|
||||
eyebrow: "Der Wechsel",
|
||||
head: 'Und wechseln?<br><span class="a">Kannst du vergessen.</span>',
|
||||
body: "Da hängen Jahre an Stammdaten, Aufträgen und Buchhaltung drin. Ein Wechsel führt ins Chaos.",
|
||||
vis: "ersetzen", visW: 896, visLeft: 92, visBottom: 240,
|
||||
vis: "ersetzen", visW: 896, visLeft: 92, visBottom: 195,
|
||||
},
|
||||
{
|
||||
key: "mehr", type: "feature",
|
||||
@@ -1948,7 +1948,7 @@
|
||||
Ein Betrieb, der ueber einen Wechsel nachdenkt, versteht eine
|
||||
abgebrochene Uebernahme sofort und braucht dafuer kein Sinnbild. */
|
||||
function visWechseln() {
|
||||
const W = 896, H = 500, P = 48;
|
||||
const W = 896, H = 580, P = 52;
|
||||
const zeilen = [
|
||||
{ t: "Stammdaten", s: "übertragen", art: "ok" },
|
||||
{ t: "Aufträge", s: "1.284 Konflikte", art: "warn" },
|
||||
@@ -1958,13 +1958,13 @@
|
||||
|
||||
let raus = chamferFlaeche(0, 0, W, H, KARTE);
|
||||
|
||||
raus += '<text x="' + P + '" y="66" font-family="Manrope, sans-serif" font-size="20" ' +
|
||||
raus += '<text x="' + P + '" y="74" font-family="Manrope, sans-serif" font-size="20" ' +
|
||||
'font-weight="700" letter-spacing="0.16em" fill="' + TEXT3 + '">MIGRATION</text>';
|
||||
raus += '<text x="' + P + '" y="118" font-family="Manrope, sans-serif" font-size="38" ' +
|
||||
raus += '<text x="' + P + '" y="134" font-family="Manrope, sans-serif" font-size="38" ' +
|
||||
'font-weight="800" letter-spacing="-0.025em" fill="' + TINTE + '">Alles mitnehmen</text>';
|
||||
|
||||
// Fortschritt: er bleibt stehen, das ist die Aussage.
|
||||
const BY = 176, BW = W - 2 * P;
|
||||
const BY = 200, BW = W - 2 * P;
|
||||
raus += '<text x="' + P + '" y="' + (BY - 14) + '" font-family="Manrope, sans-serif" ' +
|
||||
'font-size="24" font-weight="600" fill="' + TEXT2 + '">Fortschritt</text>';
|
||||
raus += '<text x="' + (W - P) + '" y="' + (BY - 14) + '" text-anchor="end" ' +
|
||||
@@ -1976,7 +1976,7 @@
|
||||
GELB + '"/>';
|
||||
|
||||
zeilen.forEach((z, i) => {
|
||||
const y = 262 + i * 66, f = ton[z.art];
|
||||
const y = 302 + i * 78, f = ton[z.art];
|
||||
raus += '<circle cx="' + (P + 17) + '" cy="' + (y - 9) + '" r="17" fill="' + f[0] + '"/>';
|
||||
const cx = P + 17, cy = y - 9;
|
||||
if (z.art === "ok") {
|
||||
@@ -1997,16 +1997,16 @@
|
||||
'font-family="Manrope, sans-serif" font-size="26" font-weight="600" fill="' +
|
||||
(z.art === "fehler" ? ROT : TEXT2) + '">' + z.s + '</text>';
|
||||
if (i < zeilen.length - 1) {
|
||||
raus += '<rect x="' + P + '" y="' + (y + 24) + '" width="' + BW + '" height="1" fill="' +
|
||||
raus += '<rect x="' + P + '" y="' + (y + 30) + '" width="' + BW + '" height="1" fill="' +
|
||||
LINIE + '"/>';
|
||||
}
|
||||
});
|
||||
|
||||
/* Noahs eigenes Argument als Fusszeile: kein Chef faehrt seinen Betrieb
|
||||
ein halbes Jahr an die Wand. */
|
||||
raus += '<text x="' + P + '" y="' + (H - 44) + '" font-family="Manrope, sans-serif" ' +
|
||||
raus += '<text x="' + P + '" y="' + (H - 54) + '" font-family="Manrope, sans-serif" ' +
|
||||
'font-size="24" font-weight="600" fill="' + TEXT3 + '">Geschätzte Dauer</text>';
|
||||
raus += '<text x="' + (W - P) + '" y="' + (H - 44) + '" text-anchor="end" ' +
|
||||
raus += '<text x="' + (W - P) + '" y="' + (H - 54) + '" text-anchor="end" ' +
|
||||
'font-family="Manrope, sans-serif" font-size="24" font-weight="800" fill="' + TINTE +
|
||||
'">ein halbes Jahr</text>';
|
||||
|
||||
@@ -2014,6 +2014,42 @@
|
||||
'" xmlns="http://www.w3.org/2000/svg">' + raus + '</svg>';
|
||||
}
|
||||
|
||||
/* ─── Formen fuer die zugespitzte Fassung ───────────────────────────────
|
||||
Workflow-Engine, Vertrieb und Marketing brauchen eigene Zeichen: die
|
||||
bestehenden zeigen Dinge, die ein Branchenprogramm schon kann.
|
||||
|
||||
Jede Form nimmt einen Massstab entgegen und taugt damit als kleines
|
||||
Listenzeichen und als grosser Satellit, sonst braeuchte es sechs
|
||||
Funktionen statt drei. */
|
||||
function formWorkflow(cx, cy, s) {
|
||||
const r = 7 * s, dx = 20 * s, dy = 14 * s;
|
||||
return kringel(cx - dx, cy, r) + kringel(cx + dx, cy - dy, r) + kringel(cx + dx, cy + dy, r) +
|
||||
strich(cx - dx + r, cy - r * 0.3, cx + dx - r, cy - dy + r * 0.5) +
|
||||
strich(cx - dx + r, cy + r * 0.3, cx + dx - r, cy + dy - r * 0.5);
|
||||
}
|
||||
|
||||
function formTrichter(cx, cy, s) {
|
||||
const b = 20 * s, h = 15 * s;
|
||||
return "M" + n1(cx - b) + "," + n1(cy - h) + "H" + n1(cx + b) +
|
||||
"L" + n1(cx + b * 0.26) + "," + n1(cy + h * 0.2) +
|
||||
"V" + n1(cy + h) + "L" + n1(cx - b * 0.26) + "," + n1(cy + h * 0.55) +
|
||||
"V" + n1(cy + h * 0.2) + "Z";
|
||||
}
|
||||
|
||||
function formMegafon(cx, cy, s) {
|
||||
const b = 18 * s, h = 15 * s;
|
||||
return "M" + n1(cx - b) + "," + n1(cy - h * 0.34) +
|
||||
"L" + n1(cx + b * 0.28) + "," + n1(cy - h) +
|
||||
"V" + n1(cy + h) + "L" + n1(cx - b) + "," + n1(cy + h * 0.34) + "Z" +
|
||||
strich(cx + b * 0.56, cy - h * 0.46, cx + b * 0.94, cy - h * 0.72) +
|
||||
strich(cx + b * 0.62, cy, cx + b * 1.02, cy) +
|
||||
strich(cx + b * 0.56, cy + h * 0.46, cx + b * 0.94, cy + h * 0.72);
|
||||
}
|
||||
|
||||
const glyWorkflow = (cx, cy) => formWorkflow(cx, cy, 0.95);
|
||||
const glyTrichter = (cx, cy) => formTrichter(cx, cy, 1.05);
|
||||
const glyMegafon = (cx, cy) => formMegafon(cx, cy, 1.05);
|
||||
|
||||
/* ─── Slide 4: wir wollten mehr ──────────────────────────────────────────
|
||||
Die alte Fassung zeigte vier Kaesten mit "fehlt". Das ist der Mangel, die
|
||||
Slide handelt aber vom Wunsch. Also ein Blatt mit einer Liste.
|
||||
|
||||
Reference in new issue
Block a user