renderStrategyList function
Last updated: 2026-03-03T18:32:34.140Z
Metrics
LOC: 73
Complexity: 9
Params: 1
Signature
renderStrategyList(pipeline: DetectionStrategyEntry[]): : void
Source Code
function renderStrategyList(pipeline: DetectionStrategyEntry[]): void {
const list = document.getElementById("strategy-list");
if (!list) {
return;
}
list.innerHTML = "";
pipeline.forEach((entry, idx) => {
const item = document.createElement("div");
item.className = "strategy-item";
item.draggable = true;
item.dataset.idx = String(idx);
item.innerHTML = `
<span class="strategy-drag-handle" title="${escapeHtml(t("dragToReorder"))}">⠿</span>
<div class="strategy-info">
<span class="strategy-name">${escapeHtml(t(STRATEGY_LABEL_KEYS[entry.name] ?? entry.name))}</span>
<span class="strategy-desc">${escapeHtml(t(STRATEGY_DESC_KEYS[entry.name] ?? ""))}</span>
</div>
<label class="toggle" style="flex-shrink: 0;">
<input type="checkbox" class="strategy-toggle" data-name="${escapeHtml(entry.name)}" ${entry.enabled ? "checked" : ""} />
<span class="slider"></span>
</label>
`;
item.addEventListener("dragstart", (e) => {
_dragSrcIdx = idx;
item.classList.add("dragging");
if (e.dataTransfer) e.dataTransfer.effectAllowed = "move";
});
item.addEventListener("dragend", () => {
item.classList.remove("dragging");
_dragSrcIdx = null;
list
.querySelectorAll(".strategy-item")
.forEach((el) => el.classList.remove("drag-over"));
});
item.addEventListener("dragover", (e) => {
e.preventDefault();
if (e.dataTransfer) e.dataTransfer.dropEffect = "move";
item.classList.add("drag-over");
});
item.addEventListener("dragleave", () => {
item.classList.remove("drag-over");
});
item.addEventListener("drop", (e) => {
e.preventDefault();
item.classList.remove("drag-over");
if (_dragSrcIdx === null || _dragSrcIdx === idx) return;
const current = getPipelineFromDOM();
const [dragged] = current.splice(_dragSrcIdx, 1);
current.splice(idx, 0, dragged);
renderStrategyList(current);
void saveStrategiesSettings();
});
const toggle = item.querySelector<HTMLInputElement>(".strategy-toggle");
toggle?.addEventListener("change", () => {
void saveStrategiesSettings();
});
list.appendChild(item);
console.log(`[renderStrategyList] Item ${idx} adicionado ao DOM`);
});
console.log(
`[renderStrategyList] Renderização completa! Total de itens: ${pipeline.length}`,
);
}
Dependencies (Outgoing)
| Target | Type |
|---|---|
| getPipelineFromDOM | calls |
| renderStrategyList | calls |
| saveStrategiesSettings | calls |
| dragstart | dynamic_call |
| dragend | dynamic_call |
| dragover | dynamic_call |
| dragleave | dynamic_call |
| drop | dynamic_call |
| change | dynamic_call |
Impact (Incoming)
| Source | Type |
|---|---|
| renderStrategyList | calls |
| loadSettings | calls |