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);
}
}