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
 
(Sem diferença)

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