Browse Source

Ajusta a escala de fonte conforme a revisão do PR

- Agrupa as constantes no objeto congelado EscalaFonte, com o valor
  padrão em EscalaFonte.PADRAO.
- Extrai o helper clamp() para limitar a escala ao intervalo permitido.
- Separa, no log, a falha de acesso ao localStorage do valor salvo
  inválido, e registra também a falha ao salvar.
- Renomeia aplicaEscalaFonte/salvaEscalaFonte para o infinitivo.
pull/3862/head
João Moraes 2 weeks ago
parent
commit
4a742414a7
  1. 52
      frontend/src/__apps/compilacao/js/old/compilacao.js
  2. 2
      frontend/src/__apps/compilacao/js/old/compilacao_edit.js

52
frontend/src/__apps/compilacao/js/old/compilacao.js

@ -282,26 +282,44 @@ function DispositivoSearch (opts) {
// Escala de leitura do texto articulado, preferência de cada navegador. // Escala de leitura do texto articulado, preferência de cada navegador.
// Aplicada via variável CSS (--cp-font-scale) para não alterar o conteúdo // Aplicada via variável CSS (--cp-font-scale) para não alterar o conteúdo
// dos dispositivos e para valer também nos que são recarregados via ajax. // dos dispositivos e para valer também nos que são recarregados via ajax.
const ESCALA_FONTE_CHAVE = 'compilacao_escala_fonte' const EscalaFonte = Object.freeze({
const ESCALA_FONTE_PASSO = 0.1 CHAVE: 'compilacao_escala_fonte',
const ESCALA_FONTE_MIN = 0.8 PADRAO: 1,
const ESCALA_FONTE_MAX = 2.5 PASSO: 0.1,
MIN: 0.8,
MAX: 2.5
})
let escalaFonteAtual = null let escalaFonteAtual = null
// Limita num ao intervalo [lower, upper].
function clamp (num, lower, upper) {
return Math.max(lower, Math.min(num, upper))
}
function lerEscalaFonte () { function lerEscalaFonte () {
if (escalaFonteAtual !== null) { if (escalaFonteAtual !== null) {
return escalaFonteAtual return escalaFonteAtual
} }
let escala = 1 let valor = null
try { try {
escala = parseFloat(window.localStorage.getItem(ESCALA_FONTE_CHAVE)) || 1 valor = window.localStorage.getItem(EscalaFonte.CHAVE)
} catch (e) { } catch (e) {
// localStorage indisponível (ex.: navegação privada bloqueada) // localStorage indisponível (ex.: navegação privada bloqueada)
console.warn('Escala de fonte: não foi possível ler o localStorage.', e)
return EscalaFonte.PADRAO
}
if (valor === null) {
return EscalaFonte.PADRAO
}
const escala = parseFloat(valor)
if (!Number.isFinite(escala)) {
console.warn('Escala de fonte: valor inválido no localStorage, usando o padrão.', valor)
return EscalaFonte.PADRAO
} }
return Math.min(ESCALA_FONTE_MAX, Math.max(ESCALA_FONTE_MIN, escala)) return clamp(escala, EscalaFonte.MIN, EscalaFonte.MAX)
} }
function aplicaEscalaFonte (escala) { function aplicarEscalaFonte (escala) {
document.documentElement.style.setProperty('--cp-font-scale', escala) document.documentElement.style.setProperty('--cp-font-scale', escala)
if (window.tinymce) { if (window.tinymce) {
window.tinymce.get().forEach(function (editor) { window.tinymce.get().forEach(function (editor) {
@ -312,16 +330,16 @@ function aplicaEscalaFonte (escala) {
} }
} }
function salvaEscalaFonte (escala) { function salvarEscalaFonte (escala) {
escala = Math.round( escala = Math.round(clamp(escala, EscalaFonte.MIN, EscalaFonte.MAX) * 10) / 10
Math.min(ESCALA_FONTE_MAX, Math.max(ESCALA_FONTE_MIN, escala)) * 10) / 10
try { try {
window.localStorage.setItem(ESCALA_FONTE_CHAVE, escala) window.localStorage.setItem(EscalaFonte.CHAVE, escala)
} catch (e) { } catch (e) {
// localStorage indisponível: a escala vale apenas até recarregar a página // localStorage indisponível: a escala vale apenas até recarregar a página
console.warn('Escala de fonte: não foi possível salvar no localStorage.', escala, e)
} }
escalaFonteAtual = escala escalaFonteAtual = escala
aplicaEscalaFonte(escala) aplicarEscalaFonte(escala)
} }
function InitViewTAs () { function InitViewTAs () {
@ -342,12 +360,12 @@ function InitViewTAs () {
} }
}, 100) }, 100)
aplicaEscalaFonte(lerEscalaFonte()) aplicarEscalaFonte(lerEscalaFonte())
$('#btn_font_menos').click(function () { $('#btn_font_menos').click(function () {
salvaEscalaFonte(lerEscalaFonte() - ESCALA_FONTE_PASSO) salvarEscalaFonte(lerEscalaFonte() - EscalaFonte.PASSO)
}) })
$('#btn_font_mais').click(function () { $('#btn_font_mais').click(function () {
salvaEscalaFonte(lerEscalaFonte() + ESCALA_FONTE_PASSO) salvarEscalaFonte(lerEscalaFonte() + EscalaFonte.PASSO)
}) })
$('.dpt.bloco_alteracao .dpt').each(function () { $('.dpt.bloco_alteracao .dpt').each(function () {
@ -374,6 +392,6 @@ export default {
insertWaitAjax, insertWaitAjax,
InitViewTAs, InitViewTAs,
lerEscalaFonte, lerEscalaFonte,
aplicaEscalaFonte, aplicarEscalaFonte,
DispositivoSearch DispositivoSearch
} }

2
frontend/src/__apps/compilacao/js/old/compilacao_edit.js

@ -245,7 +245,7 @@ window.DispositivoEdit = function () {
dpt_form.html(data) dpt_form.html(data)
if (editortype === 'tinymce') { if (editortype === 'tinymce') {
window.initTextRichEditor(null, false, false).then(function () { window.initTextRichEditor(null, false, false).then(function () {
window.aplicaEscalaFonte(window.lerEscalaFonte()) window.aplicarEscalaFonte(window.lerEscalaFonte())
}) })
} }
// OptionalCustomFrontEnd().init() // OptionalCustomFrontEnd().init()

Loading…
Cancel
Save