MediaWiki:MarcEditorDynamicLinks.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
 
(9 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 1: Linha 1:
/* jshint esversion: 8 */
/* jshint esversion: 10 */
function main() {
function main() {
// calls main functions
// calling main functions
makeMarcFieldHelpLink();
makeMarcFieldHelpLink();
authorityLinks();
authorityLinks();
setIndicators();
rmCarriageReturn();
rmCarriageReturn();
rmHtmlTags();
rmHtmlTags();
Linha 20: Linha 21:
if (newNodes.length !== 0) {
if (newNodes.length !== 0) {
// if there are new nodes added
// if there are new nodes added
console.log('observer before');
makeMarcFieldHelpLink();
makeMarcFieldHelpLink();
authorityLinks();
authorityLinks();
console.log('observer after');
setIndicators();
}
}
});
});
Linha 49: Linha 49:
rmHtmlTags();
rmHtmlTags();
normalizeInput();
normalizeInput();
});

// when clicking adding field...
const addBtn = document.body.querySelector('.multipleTemplateAdder');
addBtn.addEventListener('click', () => {
setTimeout(makeMarcFieldHelpLink, 1000);
console.log('adding btm');
});
});
}
}


document.addEventListener('DOMContentLoaded', () => main());
if (document.readyState === 'complete' || document.readyState !== 'loading') {
main();
} else {
document.addEventListener('DOMContentLoaded', main);
}


// for no obvious reason to me, the first call to the "main" function is not
// for no obvious reason to me, the first call to the "main" function is not

Edição atual tal como às 14h03min de 19 de agosto de 2024

/* jshint esversion: 10 */
function main() {
  // calling main functions
  makeMarcFieldHelpLink();
  authorityLinks();
  setIndicators();
  rmCarriageReturn();
  rmHtmlTags();

  // Como instâncias do formulário são criadas pelo botão "Adicionar campo",
  // é necessário observar o DOM a partir da classe ".multipleTemplateList".
  // Toda vez que o DOM é alterado (mais especificamente, quando uma nova
  // child de ".multipleTemplateList" é criada), as funções
  // makeMarcFieldHelpLink() e authorityLinks() são novamente chamadas.
  // https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver

  // create an observer instance
  const observer = new MutationObserver((mutations) => {
    mutations.forEach((mutation) => {
      const newNodes = mutation.addedNodes; // DOM NodeList
      if (newNodes.length !== 0) {
        // if there are new nodes added
        makeMarcFieldHelpLink();
        authorityLinks();
        setIndicators();
      }
    });
  });

  // select the target node
  const target = document.querySelector('.multipleTemplateList');

  // configuration of the observer
  const config = {
    childList: true,
    attributes: false,
    subtree: false,
  };

  // pass in the target node, as well as the observer options
  observer.observe(target, config);

  // when clicking save...
  const saveBtn = document.body.querySelector('#wpSave');
  saveBtn.addEventListener('click', () => {
    observer.disconnect();
    rmTxtFromHiddenFields();
    rmCarriageReturn();
    rmHtmlTags();
    normalizeInput();
  });
}

document.addEventListener('DOMContentLoaded', () => main());

// for no obvious reason to me, the first call to the "main" function is not
// occurring, so wait 3 seconds and call it anyway.
setTimeout(main, 3000);