Skip to content

Commit

Permalink
fix: exclusão de agrupador em alteração de norma
Browse files Browse the repository at this point in the history
Refs #847
  • Loading branch information
robsonbarrosdf committed Feb 29, 2024
1 parent bf293a7 commit 0e4a2b5
Show file tree
Hide file tree
Showing 8 changed files with 62 additions and 9 deletions.
12 changes: 12 additions & 0 deletions src/assets/css/editor.css.ts
Original file line number Diff line number Diff line change
Expand Up @@ -492,6 +492,18 @@ export const editorStyles = html`
font-weight: bold;
}
.nota-alteracao[exibir],
.abre-aspas[exibir],
.fecha-aspas[exibir] {
display: inline;
}
.nota-alteracao:not([exibir]),
.abre-aspas:not([exibir]),
.fecha-aspas:not([exibir]) {
display: none;
}
.nota-alteracao-editavel {
text-decoration: underline;
cursor: pointer;
Expand Down
10 changes: 10 additions & 0 deletions src/model/lexml/hierarquia/hierarquiaUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@ export function getArticulacao(dispositivo: Dispositivo): Articulacao {
return getArticulacao(dispositivo.pai);
}

export function getArticulacaoAlteracao(dispositivo: Dispositivo): Articulacao {
if (isArticulacaoAlteracao(dispositivo)) {
return dispositivo as Articulacao;
}
if (dispositivo.pai === undefined) {
throw new Error('Não foi encontrada a articulação alteração');
}
return getArticulacaoAlteracao(dispositivo.pai);
}

export function getDispositivo(uuid: number, dispositivo: Dispositivo | Articulacao): Dispositivo | Articulacao | null {
if (dispositivo.uuid === uuid) {
return dispositivo;
Expand Down
9 changes: 7 additions & 2 deletions src/redux/elemento/evento/eventosUtil.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { createElementoValidado } from './../../../model/elemento/elementoUtil';
import { findRevisaoByElementoUuid, isRevisaoDeExclusao } from './../util/revisaoUtil';
import { Artigo } from './../../../model/dispositivo/dispositivo';
import { hasFilhos, getAgrupadorAntes } from './../../../model/lexml/hierarquia/hierarquiaUtil';
import { hasFilhos, getAgrupadorAntes, getArticulacaoAlteracao } from './../../../model/lexml/hierarquia/hierarquiaUtil';
import { Articulacao, Dispositivo } from '../../../model/dispositivo/dispositivo';
import { DescricaoSituacao } from '../../../model/dispositivo/situacao';
import { isAgrupador, isArticulacao, isArtigo, isCaput } from '../../../model/dispositivo/tipo';
Expand Down Expand Up @@ -157,6 +157,8 @@ export const removeAgrupadorAndBuildEvents = (articulacao: Articulacao, atual: D
const removido = createElemento(atual, false, true);
const irmaoAnterior = getDispositivoAnteriorMesmoTipo(atual);

const notaAlteracao = isDispositivoAlteracao(atual) && isDispositivoCabecaAlteracao(atual) ? atual.notaAlteracao : undefined;

const agrupadorAntes = getAgrupadorAntes(atual);

const pai = agrupadoresAnteriorMesmoTipo?.length > 0 ? agrupadoresAnteriorMesmoTipo.reverse()[0] : atual.pai!;
Expand All @@ -170,7 +172,7 @@ export const removeAgrupadorAndBuildEvents = (articulacao: Articulacao, atual: D
atual.filhos.forEach(d => {
let novoPai: Dispositivo;
if (isArtigo(d)) {
novoPai = agrupadorAntes ?? articulacao;
novoPai = agrupadorAntes ?? (isDispositivoAlteracao(d) ? getArticulacaoAlteracao(d) : articulacao);
} else if (pai.tiposPermitidosFilhos?.includes(d.tipo)) {
novoPai = pai;
} else if (dispositivoAnterior.tiposPermitidosFilhos?.includes(d.tipo)) {
Expand All @@ -180,6 +182,9 @@ export const removeAgrupadorAndBuildEvents = (articulacao: Articulacao, atual: D
}

d.pai = novoPai;
if (isDispositivoAlteracao(d) && isArtigo(d) && isArticulacaoAlteracao(d.pai!)) {
d.notaAlteracao = notaAlteracao;
}
atual.removeFilho(d);

if (agrupadoresAnteriorMesmoTipo?.length > 0) {
Expand Down
13 changes: 11 additions & 2 deletions src/util/eta-quill/eta-blot-abre-aspas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export class EtaBlotAbreAspas extends EtaBlot {
node.setAttribute('contenteditable', 'false');
node.setAttribute('class', EtaBlotAbreAspas.className);

node.innerHTML = EtaBlotAbreAspas.montarHTML(elemento);
EtaBlotAbreAspas.__atualizarAtributos(elemento, node);

return node;
}
Expand All @@ -33,7 +33,16 @@ export class EtaBlotAbreAspas extends EtaBlot {

public atualizarAtributos(elemento: Elemento): void {
this.elemento = elemento;
this.domNode.innerHTML = EtaBlotAbreAspas.montarHTML(elemento);
EtaBlotAbreAspas.__atualizarAtributos(elemento, this.domNode);
}

private static __atualizarAtributos(elemento: Elemento, node: HTMLElement): void {
if (elemento.abreAspas) {
node.setAttribute('exibir', '');
} else {
node.removeAttribute('exibir');
}
node.innerHTML = EtaBlotAbreAspas.montarHTML(elemento);
}

private static montarHTML(elemento: Elemento): string {
Expand Down
13 changes: 11 additions & 2 deletions src/util/eta-quill/eta-blot-fecha-aspas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export class EtaBlotFechaAspas extends EtaBlot {
node.setAttribute('contenteditable', 'false');
node.setAttribute('class', EtaBlotFechaAspas.className);

node.innerHTML = EtaBlotFechaAspas.montarHTML(elemento);
EtaBlotFechaAspas.__atualizarAtributos(elemento, node);

return node;
}
Expand All @@ -33,7 +33,16 @@ export class EtaBlotFechaAspas extends EtaBlot {

public atualizarAtributos(elemento: Elemento): void {
this.elemento = elemento;
this.domNode.innerHTML = EtaBlotFechaAspas.montarHTML(elemento);
EtaBlotFechaAspas.__atualizarAtributos(elemento, this.domNode);
}

private static __atualizarAtributos(elemento: Elemento, node: HTMLElement): void {
if (elemento.fechaAspas) {
node.setAttribute('exibir', '');
} else {
node.removeAttribute('exibir');
}
node.innerHTML = EtaBlotFechaAspas.montarHTML(elemento);
}

private static montarHTML(elemento: Elemento): string {
Expand Down
5 changes: 5 additions & 0 deletions src/util/eta-quill/eta-blot-nota-alteracao.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,10 @@ export class EtaBlotNotaAlteracao extends EtaBlot {

if (elemento.notaAlteracao) {
node.setAttribute('nota-alteracao', elemento.notaAlteracao || '');
node.setAttribute('exibir', '');
} else {
node.removeAttribute('nota-alteracao');
node.removeAttribute('exibir');
}

if (elemento.podeEditarNotaAlteracao) {
Expand All @@ -50,6 +52,9 @@ export class EtaBlotNotaAlteracao extends EtaBlot {
}

private static montarHTML(elemento: Elemento): string {
if (!elemento.dispositivoAlteracao) {
return '';
}
return elemento.notaAlteracao ? '(' + elemento.notaAlteracao + ')' : ' ';
// if (!elemento.notaAlteracao) {
// return '';
Expand Down
3 changes: 2 additions & 1 deletion src/util/eta-quill/eta-container-table.ts
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,8 @@ export class EtaContainerTable extends EtaContainer {
}

get blotAbreAspas(): EtaBlotAbreAspas {
return this.findBlot(EtaBlotAbreAspas.blotName) as EtaBlotAbreAspas;
const blot = this.blotRotulo?.prev;
return blot?.instanceBlotName === EtaBlotAbreAspas.blotName ? blot : undefined;
}

get blotFechaAspas(): EtaBlotFechaAspas {
Expand Down
6 changes: 4 additions & 2 deletions src/util/eta-quill/eta-quill-util.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,15 @@ export class EtaQuillUtil {
const etaTdTexto: EtaContainerTdEsquerdo = new EtaContainerTdEsquerdo(elemento);
const etaTdEspaco: EtaContainerTdDireito = new EtaContainerTdDireito(this.alinhamentoMenu);

if (elemento.abreAspas) {
const isDispositivoAlteracaoAdicionado = elemento.dispositivoAlteracao && elemento.descricaoSituacao === DescricaoSituacao.DISPOSITIVO_ADICIONADO;

if (elemento.abreAspas || isDispositivoAlteracaoAdicionado) {
new EtaBlotAbreAspas(elemento).insertInto(etaTdTexto);
}

new EtaBlotRotulo(elemento).insertInto(etaTdTexto);

if (elemento.dispositivoAlteracao === true && elemento.descricaoSituacao === DescricaoSituacao.DISPOSITIVO_ADICIONADO) {
if (isDispositivoAlteracaoAdicionado) {
new EtaBlotExistencia(elemento).insertInto(etaTdTexto);
}

Expand Down

0 comments on commit 0e4a2b5

Please sign in to comment.