class clSequencia { constructor(parametros) { for (let chave in parametros) this[chave] = parametros[chave]; if (!this.onde) this.onde = obj('main'); this.monta(); this.colocaAbreFecha(); this.seleciona(); } monta() { const ulSequencia = $(""); //for (let chave in this.lista) $("
  • " + this.lista[chave] + "
  • ").appendTo(ulSequencia); const lista = this.lista; lista.ord.map(alias => $("
  • " + "" + (lista[alias].detalhes || "") + "
  • ").appendTo(ulSequencia)); ulSequencia.prependTo(this.onde); this.ul = ulSequencia; } seleciona(alias, texto) { this.deseleciona(); let pos = (alias) ? this.lista.ord.indexOf(alias) : 0; if (pos < 0) pos = this.inclui(alias, texto); colocaClasse(this.ul.children("li")[pos], "selecionado"); this.posAtual = pos; this.diferenciaAnteriores(); } deseleciona() { this.ul.find("li.selecionado").removeClass("selecionado"); } inclui(alias, texto) { // inclui após o selecionado atual const pos = this.posAtual + 1; this.lista[alias] = texto; this.lista.ord.splice(pos, 0, alias); $(this.ul.children("li")[this.posAtual]).after("
  • " + texto + "
  • "); return pos; } diferenciaAnteriores() { this.ul.find("li.jaPassou").removeClass("jaPassou"); for (let i = 0; i < this.posAtual; i++) colocaClasse(this.ul.children("li")[i], "jaPassou"); } colocaAbreFecha() { if (this.comAbreFecha) { const este = this; this.botAbreFecha = $("").appendTo(this.ul).on("click", function() { este.abreFecha.call(este); }); } } abreFecha() { if (this.ul.hasClass("horizontal")) { this.ul.removeClass("horizontal").addClass("vertical"); } else { this.ul.removeClass("vertical").addClass("horizontal"); } } mudaMensagem(passo, mensagem, status) { this.lista[passo].detalhes = mensagem; const li = this.ul.find("li." + passo).removeClass("certo").removeClass("errado"); if (typeof(status) != "undefined" && status != 0) li.addClass((status == 1) ? "certo" : "errado"); li.find("span.detalhes").html(mensagem); } }