User:Polygnotus/DuplicateReferences.js: Difference between revisions

Content deleted Content added
No edit summary
No edit summary
Line 83:
summary += ': ';
duplicateInfo.forEach((info, index) => {
summary += `${info.url} (refs: ${info.refs.map(r => r.number).join(', ')})`;
if (index < duplicateInfo.length - 1) {
summary += '; ';
Line 114:
const duplicates = [];
 
referenceItems.forEach((item, index) => {
const refNumber = index + 1;
const refId = item.id;
console.log(`Processing reference item ${refNumber} (${refId})`);
const span = item.querySelector('span.reference-text');
if (!span) {
console.log(` No reference-text span found in item ${refIdrefNumber}`);
return;
}
Line 144 ⟶ 145:
const url = validLink.href;
if (urlMap.has(url)) {
urlMap.get(url).push({id: refId, number: refNumber});
console.log(` Duplicate found for URL: ${url}`);
} else {
urlMap.set(url, [{id: refId, number: refNumber}]);
console.log(` New URL added to map: ${url}`);
}
Line 212 ⟶ 213:
paragraphInfo.appendChild(document.createTextNode(' in refs: '));
refs.forEach((refIdref, index) => {
let link = document.createElement('a');
link.href = `#${refIdref.id}`;
link.textContent = refIdref.replace('cite_note-', '')number;
paragraphInfo.appendChild(link);
 
link.addEventListener('mouseover', () => {
refs.forEach(refr => {
const citationElement = document.getElementById(refr.id);
if (citationElement) {
if (refr.id === refIdref.id) {
citationElement.classList.add('duplicate-citation-hover');
} else {
Line 231 ⟶ 232:
});
link.addEventListener('mouseout', () => {
refs.forEach(refr => {
const citationElement = document.getElementById(refr.id);
if (citationElement) {
citationElement.classList.remove('duplicate-citation-hover');
Line 244 ⟶ 245:
el.classList.remove('duplicate-citation-clicked');
});
refs.forEach(refr => {
const citationElement = document.getElementById(refr.id);
if (citationElement) {
citationElement.classList.add('duplicate-citation-clicked');