я косяк, поправил веб. Капитан, работайте!

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
влад
2026-07-16 11:06:47 +03:00
co-authored by Cursor
parent 148d645760
commit 2c294424ef
85 changed files with 17410 additions and 110 deletions
@@ -0,0 +1,82 @@
/** Progress 0100 for logo loader during setup wizard. */
const STEP_WEIGHTS = {
theme: 10,
welcome: 5,
device: 12,
network: 18,
sync: 18,
users: 22,
hardware: 10,
kiosk: 10,
bootstrap: 25,
done: 8,
};
const FLOWS = {
server: ["theme", "welcome", "device", "network", "users", "done"],
client: ["theme", "welcome", "device", "sync", "hardware", "kiosk", "bootstrap", "done"],
};
export function getFlow(deviceRole) {
return FLOWS[deviceRole] || FLOWS.server;
}
export function createSetupOrchestrator() {
let deviceRole = "server";
let currentStep = "welcome";
let extraPercent = 0;
function flow() {
return getFlow(deviceRole);
}
function basePercent() {
const steps = flow();
const idx = steps.indexOf(currentStep);
if (idx < 0) return 0;
let total = 0;
for (const s of steps) total += STEP_WEIGHTS[s] || 10;
let done = 0;
for (let i = 0; i < idx; i += 1) done += STEP_WEIGHTS[steps[i]] || 10;
const curWeight = STEP_WEIGHTS[currentStep] || 10;
return Math.min(100, Math.round(((done + curWeight * 0.35) / total) * 100));
}
return {
get percent() {
return Math.min(100, Math.max(basePercent(), extraPercent));
},
get currentStep() {
return currentStep;
},
get deviceRole() {
return deviceRole;
},
setDeviceRole(role) {
deviceRole = role;
},
setStep(step) {
currentStep = step;
extraPercent = 0;
},
bumpExtra(delta) {
extraPercent = Math.min(100, extraPercent + delta);
},
setBootstrapProgress(p) {
const steps = flow();
const idx = steps.indexOf("bootstrap");
if (idx < 0) return;
let total = 0;
let before = 0;
for (let i = 0; i < steps.length; i += 1) {
const w = STEP_WEIGHTS[steps[i]] || 10;
if (i < idx) before += w;
total += w;
}
const w = STEP_WEIGHTS.bootstrap || 25;
extraPercent = Math.round(((before + w * Math.min(1, p)) / total) * 100);
},
flow,
};
}