MediaWiki:IndicatorsHint.js: mudanças entre as edições

De Wikincat
Ir para navegação Ir para pesquisar
Sem resumo de edição
Sem resumo de edição
 
(2 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
/* jshint esversion: 10 */
/* jshint esversion: 10 */
function findTagFromDropdown(event) {
const indicatorsByTags = {
'022': {
ind1: [
'# - Nível não especificado',
'0 - Recurso contínuo de interesse internacional',
'1 - Recurso contínuo sem interesse internacional',
],
},
'041': {
ind1: [
'# - Informação não fornecida',
'0 - Não é tradução/não inclui tradução',
'1 - É ou inclui tradução',
],
ind2: [
'# - Código MARC para idiomas',
'7 - Fonte especificada no subcampo $2',
],
},
'045': {
ind1: [
'# - subcampos $b ou $c não estão presentes',
'0 - data/período únicos',
'1 - data/período múltiplos',
'2 - extensão de datas/períodos',
],
},
'080': {
ind1: ['# - Informação não fornecida', '0 - Completa', '1 - Abreviada'],
},
'082': {
ind1: [
'0 - Edição completa',
'1 - Edição abreviada',
'7 - Outra edição especificada no subcampo $2',
],
ind2: [
'# - Informação não fornecida',
'0 - Atribuído pela LC',
'4 - Atribuído por outra agência',
],
},
100: {
ind1: ['1 - Sobrenome', '0 - Prenome', '3 - Nome de família'],
},
245: {
ind1: [
'0 - Entrada principal para o título (sem entrada principal para uma autoria)',
'1 - Entrada secundária para o título (entrada principal para uma autoria)',
],
ind2: [
'0 - Caracteres a serem desprezados',
'1 - Caracteres a serem desprezados',
'2 - Caracteres a serem desprezados',
'3 - Caracteres a serem desprezados',
'4 - Caracteres a serem desprezados',
'5 - Caracteres a serem desprezados',
'6 - Caracteres a serem desprezados',
'7 - Caracteres a serem desprezados',
'8 - Caracteres a serem desprezados',
'9 - Caracteres a serem desprezados',
],
},
260: {
ind1: [
'# - Não se aplica/nenhuma informação fornecida/editor mais antigo',
'2 - Editor intermediário',
'3 - Editor atual',
],
},
650: {
ind1: [
'# - Nenhuma informação fornecida',
'0 - Nível não especificado',
'1 - Primário',
'2 - Secundário',
],
ind2: [
'4 - Fonte não especificada',
'0 - Library of Congress Subject Headings (LCSH)',
"1 - LC subject headings for children's literature",
'2 - Medical Subject Headings',
'3 - National Agricultural Library subject authority file',
'5 - Canadian Subject Headings',
'6 - Répertoire de vedettes-matière',
'7 - Fonte especificada no subcampo 2',
],
},
700: {
ind1: ['1 - Sobrenome', '0 - Prenome', '3 - Nome de família'],
ind2: ['# - Nenhuma informação fornecida', '2 - Entrada analítica'],
},
};

function setIndOptions(event, ind) {
const { target } = event;
const { target } = event;
let tagFromDropdown = '';
let tagFromDropdown = '';
Linha 100: Linha 6:
target
target
.closest('.instanceMain')
.closest('.instanceMain')
.querySelector('[mappingtemplate="BibRecord/tags"]')
.querySelector('[mappingtemplate$="Record/tags"]')
.getAttribute('title') ?? ' ';
.getAttribute('title') ?? ' ';
tagFromDropdown = tagFromDropdown.substring(0, 3);
return tagFromDropdown.substring(0, 3);
}

function setIndOptions(event, ind) {
const { target } = event;
const tagFromDropdown = findTagFromDropdown(event);


if (tagFromDropdown in indicatorsByTags) {
if (tagFromDropdown in indicatorsByTags) {
Linha 120: Linha 31:
option.innerText = '# - Indefinido';
option.innerText = '# - Indefinido';
target.appendChild(option);
target.appendChild(option);
}
}

function setPlaceholder(event) {
const { target } = event;
const tagFromDropdown = findTagFromDropdown(event);

if (tagFromDropdown in indicatorsByTags) {
const placeholder =
indicatorsByTags[tagFromDropdown].placeholder ?? '$a ... $b ... $c ...';
target.setAttribute('placeholder', placeholder);
}
}
}
}
Linha 126: Linha 48:
const inds1 = document.body.querySelectorAll('[origname="Field[ind1]"');
const inds1 = document.body.querySelectorAll('[origname="Field[ind1]"');
const inds2 = document.body.querySelectorAll('[origname="Field[ind2]"');
const inds2 = document.body.querySelectorAll('[origname="Field[ind2]"');
const textareas = document.body.querySelectorAll('textarea');

inds1.forEach((ind1Elem) => {
inds1.forEach((ind1Elem) => {
ind1Elem.addEventListener('focusin', (event) => {
ind1Elem.addEventListener('focusin', (event) => {
Linha 134: Linha 58:
elem.addEventListener('focusin', (event) => {
elem.addEventListener('focusin', (event) => {
setIndOptions(event, 'ind2');
setIndOptions(event, 'ind2');
});
});
textareas.forEach((elem) => {
elem.addEventListener('focusin', (event) => {
setPlaceholder(event);
});
});
});
});

Edição atual tal como às 18h10min de 22 de março de 2024

/* jshint esversion: 10 */
function findTagFromDropdown(event) {
  const { target } = event;
  let tagFromDropdown = '';
  tagFromDropdown =
    target
      .closest('.instanceMain')
      .querySelector('[mappingtemplate$="Record/tags"]')
      .getAttribute('title') ?? '   ';
  return tagFromDropdown.substring(0, 3);
}

function setIndOptions(event, ind) {
  const { target } = event;
  const tagFromDropdown = findTagFromDropdown(event);

  if (tagFromDropdown in indicatorsByTags) {
    target.innerHTML = '';
    const indArr = indicatorsByTags[tagFromDropdown][ind] ?? ['# - Indefinido'];

    for (let i = 0; i < indArr.length; i += 1) {
      const option = document.createElement('option');
      option.setAttribute('value', indArr[i][0]);
      option.innerText = indArr[i];
      target.appendChild(option);
    }
  } else {
    target.innerHTML = '';
    const option = document.createElement('option');
    option.setAttribute('value', '#');
    option.innerText = '# - Indefinido';
    target.appendChild(option);
  }
}

function setPlaceholder(event) {
  const { target } = event;
  const tagFromDropdown = findTagFromDropdown(event);

  if (tagFromDropdown in indicatorsByTags) {
    const placeholder =
      indicatorsByTags[tagFromDropdown].placeholder ?? '$a ... $b ... $c ...';
    target.setAttribute('placeholder', placeholder);
  }
}

function setIndicators() {
  const inds1 = document.body.querySelectorAll('[origname="Field[ind1]"');
  const inds2 = document.body.querySelectorAll('[origname="Field[ind2]"');
  const textareas = document.body.querySelectorAll('textarea');

  inds1.forEach((ind1Elem) => {
    ind1Elem.addEventListener('focusin', (event) => {
      setIndOptions(event, 'ind1');
    });
  });
  inds2.forEach((elem) => {
    elem.addEventListener('focusin', (event) => {
      setIndOptions(event, 'ind2');
    });
  });
  textareas.forEach((elem) => {
    elem.addEventListener('focusin', (event) => {
      setPlaceholder(event);
    });
  });
}