Интегрирован wesp в сайт
CI / quality (push) Canceled after 0s

This commit is contained in:
влад
2026-07-17 12:57:18 +03:00
parent 5dfa06ddbe
commit 355c0ef9f1
883 changed files with 194576 additions and 177 deletions
+82
View File
@@ -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,
};
}