WME Places Name Normalizer

Normaliza nombres de lugares en Waze Map Editor (WME) por ahora solo con reglas de Colombia

目前為 2025-03-27 提交的版本,檢視 最新版本

// ==UserScript==
// @name         WME Places Name Normalizer
// @namespace    https://gf.qytechs.cn/en/users/mincho77
// @version      2.1
// @description  Normaliza nombres de lugares en Waze Map Editor (WME) por ahora solo con reglas de Colombia
// @author       mincho77
// @match        https://www.waze.com/*editor*
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @license      MIT
// @run-at       document-end
// ==/UserScript==
/*global W*/

(() => {
    "use strict";
    if (!Array.prototype.flat)
    {
        Array.prototype.flat = function(depth = 1)
        {
            return this.reduce(function (flat, toFlatten)
            {
                return flat.concat(Array.isArray(toFlatten) ? toFlatten.flat(depth - 1) : toFlatten);
            }, []);
        };
    }
    const SCRIPT_NAME = "PlacesNameNormalizer";
    const VERSION = "2.1";
    let placesToNormalize = [];
    let excludeWords = [];
    let maxPlaces = 20;
    let normalizeArticles = true;

    // Expresión regular para detectar siglas (por ejemplo, "S.a.s", "L.T.D.A")
    const siglaRegex = /^[A-Za-z](\.[A-Za-z])+\.?$/;

    function waitForSidebar(retries = 20, delay = 1000) {
        return new Promise((resolve, reject) => {
            const check = (attempt = 1) => {
                const sidebar = document.querySelector("#sidebar");
                if (sidebar) {
                    console.log("✅ Sidebar disponible.");
                    resolve(sidebar);
                } else if (attempt <= retries) {
                    console.warn(`⚠️ Sidebar no disponible aún. Reintentando... (${attempt})`);
                    setTimeout(() => check(attempt + 1), delay);
                } else {
                    reject("❌ Sidebar no disponible después de múltiples intentos.");
                }
            };
            check();
        });
    }

    function initializeExcludeWords()
    {
         const saved = JSON.parse(localStorage.getItem("excludeWords")) || [];
        excludeWords = [...new Set([...excludeWords, ...saved])].sort((a, b) => a.localeCompare(b));
        localStorage.setItem("excludeWords", JSON.stringify(excludeWords));
    }

     unsafeWindow.normalizePlaceName = function(name)
     {
        if (!name) return "";

        const normalizeArticles = !document.getElementById("normalizeArticles")?.checked;
        const articles = ["el", "la", "los", "las", "de", "del", "al", "y"];

        const words = name.trim().split(/\s+/);
        const normalizedWords = words.map((word, index) => {
            const lowerWord = word.toLowerCase();

            // Saltar palabras excluidas
            if (excludeWords.includes(word)) return word;

            // Saltar artículos si el checkbox está activo y no es la primera palabra
            if (!normalizeArticles && articles.includes(lowerWord) && index !== 0) {
                return lowerWord;
            }

            return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
        });

        name = normalizedWords.join(" ");
        name = name.replace(/\s*\|\s*/g, " - ");
        name = name.replace(/\s{2,}/g, " ").trim();

        return name;
    };

   function checkSpelling(text)
    {
        return new Promise((resolve, reject) =>
        {
            GM_xmlhttpRequest(
            {
                method: "POST",
                url: "https://api.languagetool.org/v2/check",
                data: `text=${encodeURIComponent(text)}&language=es`,
                headers:
                {
                    "Content-Type": "application/x-www-form-urlencoded"
                },
                onload: function(response)
                {
                    if (response.status === 200) {
                        try {
                            const data = JSON.parse(response.responseText);
                            resolve(data);
                        } catch (err) {
                            reject(err);
                        }
                    } else {
                        reject(`Error HTTP: ${response.status}`);
                    }
                },
                onerror: function(err) {
                    reject(err);
                }
            });
        });
    }

    function applySpellCorrection(text) {
        return checkSpelling(text).then(data => {
            let corrected = text;
            // Ordenar los matches de mayor a menor offset
            const matches = data.matches.sort((a, b) => b.offset - a.offset);
            matches.forEach(match => {
                if (match.replacements && match.replacements.length > 0) {
                    const replacement = match.replacements[0].value;
                    corrected = corrected.substring(0, match.offset) + replacement + corrected.substring(match.offset + match.length);
                }
            });
            return corrected;
        });
    }

    function renderExcludedWordsSidebar() {
        const container = document.getElementById("normalizer-sidebar");
        if (!container) return;

        const excludeListSection = document.createElement("div");
        excludeListSection.style.marginTop = "20px";

        excludeListSection.innerHTML = `
    <h4 style="margin-bottom: 5px;">Palabras Excluidas</h4>
    <div style="max-height: 150px; overflow-y: auto; border: 1px solid #ccc; padding: 8px; font-size: 13px; border-radius: 4px;">
      <ul style="margin: 0; padding-left: 18px;" id="excludeWordsList">
        ${excludeWords.sort((a, b) => a.localeCompare(b)).map(w => `<li>${w}</li>`).join("")}
      </ul>
    </div>
  `;
        container.appendChild(excludeListSection);

    }

    

    function createSidebarTab() {
        const { tabLabel, tabPane } = W.userscripts.registerSidebarTab("PlacesNormalizer");

        if (!tabPane) {
            console.error(`[${SCRIPT_NAME}] Error: No se pudo registrar el sidebar tab.`);
            return;
        }

        tabLabel.innerHTML = `
  <img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAASABIAAD/4QC8RXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAeQAAAHAAAABDAyMjGRAQAHAAAABAECAwCgAAAHAAAABDAxMDCgAQADAAAAAQABAACgAgAEAAAAAQAAAoCgAwAEAAAAAQAAAqmkBgADAAAAAQAAAAAAAAAA/8AAEQgCqQKAAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/bAEMAAgICAgICAwICAwQDAwMEBgQEBAQGBwYGBgYGBwgHBwcHBwcICAgICAgICAoKCgoKCgwMDAwMDQ0NDQ0NDQ0NDf/bAEMBAgICAwMDBgMDBg4JCAkODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODv/dAAQAKP/aAAwDAQACEQMRAD8A/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9D9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/0f38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopu70oAdRTTkjpRk+lADqKQHNLQAUUUUAFFNwaOenSgB1FIM96XrQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//S/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAopCcUhKnvQA7PaisHxB4j8P+FNIufEHifUrTSdMsozLcXl9KkEESL1Z5JCFUDuScCvgT4n/8FHvhN4aWWz+Gen33jm/AxHcRD7FpwJDYJubhVeRFYAN5MbnByARXVhsHWru1KNzajh51fgVz9Gc5rnte8UeGfC1qt54n1Wx0m3c7RLfTxwISBnAaRlBOOwr8D/iH+3H+0T8QHlgttci8G6a+R9i8ORASlGUBo5L+5WSZ8HJV4I7ZxnrkZr5K1SaXXb1tQ1+e61m7dgzXWrTy305IGATNdNLITjjJPSvfw3DFWVvay5T1aOTTkrzdj9+fEv7e37LfhtFNv4v/AOEgbzDGyeHrW51NoyM8yC2iYICQQCeK+fNe/wCCoHhRRcReEfh5rt26sRb3GrXFlZW0gGcMRHLcXUYPHBt9w7gEYr8hmlkcAFjgcAdgPamk59Sa9ilwzhYtc2p3Qyait9T9KNQ/4KbfFC6jMeneBvDmlSchZZNRvNQAPGMxiysuB7P+VcCf+CjH7TZJwfAwB+6P7G1A4+v/ABORn9K+EtwHUjim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IIz8M7qAcfNNqejhR9fLvXbH0B+len6L/wAEqv2rdQiEt9p3hzT2wPlutZYHp3EFlKPyNf05YFFAH4D+C/8Agjv45uPsU/j7x9pOmo5DXlvo9lNcyoOu2G4uZFiY543NbjI7AkY+4PhX/wAEwf2Xfh68GoeJtJufH2pw5Il8RustsG3E5WxiWO1AxhdrIwIAyM5NfoxRQBm6ZpWmaLp9vpOjWcFhZWkaxW9tbRrFFEigKqpGgVVVQAAAAAOBWlRRQAUUUUAFFFFABRRRQAYxXAfET4X/AA8+LPhybwj8SvDun+I9In5a11CJZArYIDxsRuikAJ2uhVl6gg139FAH41/F7/gkT4H1h5L/AOCXiefw0WYt/ZWsxtf2Y4fAilDx3MQB2KoLuiqD8pJzX5tfEr/gnd+1b8PVuLqTwRL4gsrWETtdeGrmLUVwSQUELfZ715FxkrHavkEYJOQP6uaKAP4kPEfw4+IXg+TyfFnhPxDokmB8uo6VfWx9vllgU9q4aaQWpK3KTQkdfMikT+aiv7qMZrMuNH0q6O66sreY+skaMf1U0Afw2wb7of6NBPOPWOCVh+aqa7Xw18OviB4yuDa+EfCniDW5EG4xabpV9cuB6kQwMQK/thttN0+zG20tIYB6Roqj9AKvcdPSgD+Ur4df8E6f2rvH/wBku/8AhCZPD1ldW5nS68SXMOnIBxtV4EN1fRyNnOyS2TAByVOAf0g+EH/BInwTpFwmo/GzxNL4l2EH+ydGjfT7RhhSVmlZ5LiQE7lYK6IykfKCM1+y1FAHBfDz4Z/D/wCE/huDwh8N/D+n+HNHt+UtdPiWJS2AC8hA3SSNgbncszYySTXe0UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAf//V/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9b9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/1/38ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//Q/fyiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD/9H9/KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAP/2Q=="
  style="height: 16px; vertical-align: middle; margin-right: 5px;">
  NrmliZer
`;
        tabLabel.title = "Places Name Normalizer";
        tabPane.innerHTML = getSidebarHTML();


        setTimeout(() => {
            // Llamar a la función para esperar el DOM antes de ejecutar eventos
            waitForDOM("#normalizer-tab", attachEvents);
            //attachEvents();
        }, 500);


    }


    function waitForDOM(selector, callback, interval = 500, maxAttempts = 10)
    {
        let attempts = 0;
        const checkExist = setInterval(() => {
            const element = document.querySelector(selector);
            if (element) {
                clearInterval(checkExist);
                callback(element);
            } else if (attempts >= maxAttempts) {
                clearInterval(checkExist);
                console.error(`[${SCRIPT_NAME}] Error: No se encontraron elementos en el DOM después de ${maxAttempts} intentos.`);
            }
            attempts++;
        }, interval);
    }

    function getSidebarHTML() {
        return `
    <div id="normalizer-tab">
      <h4>Places Name Normalizer <span style="font-size:11px;">v${VERSION}</span></h4>

      <div>
        <input type="checkbox" id="normalizeArticles" ${normalizeArticles ? "checked" : ""}>
        <label for="normalizeArticles">No Normalizar artículos (el, la, los, ...)</label>
      </div>

      <div>
        <label>Máximo de Places a buscar: </label>
        <input type='number' id='maxPlacesInput' value='${maxPlaces}' min='1' max='500' style='width: 60px;'>
      </div>

      <div>
        <label>Palabras Excluidas:</label>
        <input type='text' id='excludeWord' style='width: 120px;'>
        <button id='addExcludeWord'>Add Word</button>

        <div style="max-height: 100px; overflow-y: auto; border: 1px solid #ccc; padding: 5px; margin-top: 5px;">
          <ul id="excludedWordsList" style="padding-left: 20px; margin: 0;">
            ${excludeWords.sort((a, b) => a.localeCompare(b)).map(w => `<li>${w}</li>`).join("")}
          </ul>
        </div>

        <button id="exportExcludeWords" style="margin-top: 5px;">Export Words</button>
        <br>
        <button id="importExcludeWordsUnifiedBtn" style="margin-top: 5px;">Import List...</button>
        <input type="file" id="hiddenImportInput" accept=".xml" style="display: none;">
      </div>

      <hr>
      <button id="scanPlaces">Scan...</button>
    </div>
  `;
    }


 function getSidebarHTML2() {
  return `
    <div id="normalizer-tab">
      <h4>Places Name Normalizer <span style="font-size:11px;">v${VERSION}</span></h4>

      <div>
        <input type="checkbox" id="normalizeArticles" ${normalizeArticles ? "checked" : ""}>
        <label for="normalizeArticles">No Normalizar artículos (el, la, los, ...)</label>
      </div>

      <div>
        <label>Máximo de Places a buscar: </label>
        <input type='number' id='maxPlacesInput' value='${maxPlaces}' min='1' max='500' style='width: 60px;'>
      </div>

     <div>
  <label>Palabras Excluidas:</label>
  <input type='text' id='excludeWord' style='width: 120px;'>
  <button id='addExcludeWord'>Add Word</button>

  <div style="max-height: 100px; overflow-y: auto; border: 1px solid #ccc; padding: 5px; margin-top: 5px;">
    <ul id="excludedWordsList" style="padding-left: 20px; margin: 0;">
      ${excludeWords.sort((a, b) => a.localeCompare(b)).map(w => `<li>${w}</li>`).join("")}
    </ul>
  </div>

  <button id="exportExcludeWords" style="margin-top: 5px;">Export Words</button>
  <br>
 <button id="importExcludeWordsUnifiedBtn" style="margin-top: 5px;">Import List...</button>
<input type="file" id="hiddenImportInput" accept=".xml" style="display: none;">
</div>

      <hr>
      <button id="scanPlaces">Scan...</button>
    </div>
  `;
}

    function attachEvents()
    {
        console.log(`[${SCRIPT_NAME}] Adjuntando eventos...`);

        const normalizeArticlesCheckbox = document.getElementById("normalizeArticles");
        const maxPlacesInput = document.getElementById("maxPlacesInput");
        const addExcludeWordButton = document.getElementById("addExcludeWord");
        const scanPlacesButton = document.getElementById("scanPlaces");
        const hiddenInput = document.getElementById("hiddenImportInput");
        const importButtonUnified = document.getElementById("importExcludeWordsUnifiedBtn");

        // Validación de elementos necesarios
        if (!normalizeArticlesCheckbox || !maxPlacesInput || !addExcludeWordButton || !scanPlacesButton) {
            console.error(`[${SCRIPT_NAME}] Error: No se encontraron elementos en el DOM.`);
            return;
        }

        // ✅ Evento: cambiar estado de "no normalizar artículos"
        normalizeArticlesCheckbox.addEventListener("change", (e) => {
            normalizeArticles = e.target.checked;
        });

        // ✅ Evento: cambiar número máximo de places
        maxPlacesInput.addEventListener("input", (e) => {
            maxPlaces = parseInt(e.target.value, 10);
        });

        // ✅ Evento: exportar palabras excluidas a XML
        document.getElementById("exportExcludeWords").addEventListener("click", () => {
            const savedWords = JSON.parse(localStorage.getItem("excludeWords")) || [];
            if (savedWords.length === 0) {
                alert("No hay palabras excluidas para exportar.");
                return;
            }
            const sortedWords = [...savedWords].sort((a, b) => a.localeCompare(b));

            const xmlContent = `<?xml version="1.0" encoding="UTF-8"?>
<ExcludedWords>
  ${sortedWords.map(word => `  <word>${word}</word>`).join("\n  ")}
</ExcludedWords>`;

            const blob = new Blob([xmlContent], { type: "application/xml" });
            const url = URL.createObjectURL(blob);
            const link = document.createElement("a");

            link.href = url;
            link.download = "excluded_words.xml";
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        });

        // ✅ Evento: añadir palabra excluida sin duplicados
        addExcludeWordButton.addEventListener("click", () => {
            const wordInput = document.getElementById("excludeWord") || document.getElementById("excludedWord");
            const word = wordInput?.value.trim();

            if (!word) return;

            const alreadyExists = excludeWords.some(w => w.toLowerCase() === word.toLowerCase());
            if (!alreadyExists) {
                excludeWords.push(word);
                localStorage.setItem("excludeWords", JSON.stringify(excludeWords));
                updateExcludeList();
            }

            wordInput.value = "";
        });

        // ✅ Evento: nuevo botón unificado de importación
        importButtonUnified.addEventListener("click", () => {
            hiddenInput.click(); // abre el file input oculto
        });

        hiddenInput.addEventListener("change", () => {
            const file = hiddenInput.files[0];
            if (!file) return;

            const reader = new FileReader();
            reader.onload = function (event) {
                const parser = new DOMParser();
                const xml = parser.parseFromString(event.target.result, "application/xml");
                const words = Array.from(xml.getElementsByTagName("word")).map(node => node.textContent.trim());

                if (words.length > 0) {
                    excludeWords = words;
                    localStorage.setItem("excludeWords", JSON.stringify(excludeWords));
                    updateExcludeList();
                    alert(`Palabras excluidas importadas correctamente: ${words.length}`);
                } else {
                    alert("No se encontraron palabras en el archivo XML.");
                }
            };
            reader.readAsText(file);
        });

        // ✅ Evento: escanear lugares
        scanPlacesButton.addEventListener("click", scanPlaces);
    }

  
    function updateExcludeList() {
        const list = document.getElementById("excludedWordsList");
        if (!list) return;

        // Ordena una copia del array para no alterar el original
        const sortedWords = [...excludeWords].sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()));

        list.innerHTML = sortedWords.map(word => `<li>${word}</li>`).join("");
    }
    

    function scanPlaces() {
        const allPlaces = W.model.venues.getObjectArray();
        console.log(`[${SCRIPT_NAME}] Iniciando escaneo de lugares...`);

        // const inputValue = document.getElementById("maxPlacesInput")?.value;
        maxPlaces = parseInt(document.getElementById("maxPlacesInput").value, 10) || 20;

        console.log("➡️ Usando maxPlaces =", maxPlaces);

        const venues = Object.values(W.model.venues.objects);
        const sliced = venues.slice(0, maxPlaces);

        if (!W || !W.model || !W.model.venues || !W.model.venues.objects) {
            console.error(`[${SCRIPT_NAME}] WME no está listo.`);
            return;
        }

        // Obtener el nivel del editor; si no existe, usamos Infinity para incluir todos.
        let editorLevel = (W.model.user && typeof W.model.user.level === "number")
        ? W.model.user.level
        : Infinity;

        let places = Object.values(W.model.venues.objects);
        console.log(`[${SCRIPT_NAME}] Total de lugares encontrados: ${places.length}`);

        if (places.length === 0) {
            alert("No se encontraron Places en WME.");
            return;
        }

        placesToNormalize = allPlaces
            .filter(place =>
                    place &&
                    typeof place.getID === "function" &&
                    place.attributes &&
                    typeof place.attributes.name === "string"
                   )
            .map(place => ({
            id: place.getID(),
            name: place.attributes.name,
            attributes: place.attributes,
            place: place
        }));


        // Luego se mapea y se sigue con el flujo habitual...
        let placesMapped = placesToNormalize.map(place => {
            let originalName = place.attributes.name;
            let newName = normalizePlaceName(originalName);
            return {
                id: place.attributes.id,
                originalName,
                newName
            };
        });

        let filteredPlaces = placesMapped.filter(p =>
                                                 p.newName.trim() !== p.originalName.trim()
                                                );

        console.log(`[${SCRIPT_NAME}] Lugares que cambiarán: ${filteredPlaces.length}`);

        if (filteredPlaces.length === 0) {
            alert("No se encontraron Places que requieran cambio.");
            return;
        }

        openFloatingPanel(filteredPlaces);
    }


    function NameChangeAction(venue, oldName, newName)
    {
        // Referencia al Place y los nombres
        this.venue = venue;
        this.oldName = oldName;
        this.newName = newName;

        // ID único del Place
        this.venueId = venue.attributes.id;

        // Metadatos que WME/Plugins pueden usar
        this.type = "NameChangeAction";
        this.isGeometryEdit = false; // no es una edición de geometría
    }

    /**
 * 1) getActionName: nombre de la acción en el historial.
 */
    NameChangeAction.prototype.getActionName = function() {
        return "Update place name";
    };

    /** 2) getActionText: texto corto que WME a veces muestra. */
    NameChangeAction.prototype.getActionText = function() {
        return "Update place name";
    };

    /** 3) getName: algunas versiones llaman a getName(). */
    NameChangeAction.prototype.getName = function() {
        return "Update place name";
    };

    /** 4) getDescription: descripción detallada de la acción. */
    NameChangeAction.prototype.getDescription = function() {
        return `Place name changed from "${this.oldName}" to "${this.newName}".`;
    };

    /** 5) getT: título (a veces requerido por plugins). */
    NameChangeAction.prototype.getT = function() {
        return "Update place name";
    };

    /** 6) getID: si un plugin llama a e.getID(). */
    NameChangeAction.prototype.getID = function() {
        return `NameChangeAction-${this.venueId}`;
    };

    /** 7) doAction: asigna el nuevo nombre (WME llama a esto al crear la acción). */
    NameChangeAction.prototype.doAction = function() {
        this.venue.attributes.name = this.newName;
        this.venue.isDirty = true;
        if (typeof W.model.venues.markObjectEdited === "function") {
            W.model.venues.markObjectEdited(this.venue);
        }
    };

    /** 8) undoAction: revertir al nombre anterior (Ctrl+Z). */
    NameChangeAction.prototype.undoAction = function() {
        this.venue.attributes.name = this.oldName;
        this.venue.isDirty = true;
        if (typeof W.model.venues.markObjectEdited === "function") {
            W.model.venues.markObjectEdited(this.venue);
        }
    };

    /** 9) redoAction: rehacer (Ctrl+Shift+Z), vuelve a doAction. */
    NameChangeAction.prototype.redoAction = function() {
        this.doAction();
    };

    /** 10) undoSupported / redoSupported: indica si se puede des/rehacer. */
    NameChangeAction.prototype.undoSupported = function() {
        return true;
    };
    NameChangeAction.prototype.redoSupported = function() {
        return true;
    };

    /** 11) accept / supersede: evita fusionar con otras acciones. */
    NameChangeAction.prototype.accept = function() {
        return false;
    };
    NameChangeAction.prototype.supersede = function() {
        return false;
    };

    /** 12) isEditAction: true => habilita "Guardar". */
    NameChangeAction.prototype.isEditAction = function() {
        return true;
    };

    /** 13) getAffectedUniqueIds: objetos que se alteran. */
    NameChangeAction.prototype.getAffectedUniqueIds = function() {
        return [this.venueId];
    };

    /** 14) isSerializable: si no implementas serialize(), pon false. */
    NameChangeAction.prototype.isSerializable = function() {
        return false;
    };

    /** 15) isActionStackable: false => no combina con otras ediciones. */
    NameChangeAction.prototype.isActionStackable = function() {
        return false;
    };

    /** 16) getFocusFeatures: WME/Plugins pueden usarlo para "enfocar" el objeto. */
    NameChangeAction.prototype.getFocusFeatures = function() {
        // Devolvemos el venue para indicar que ese es el foco (o un array vacío si prefieres).
        return [this.venue];
    };

    /** 17) Métodos vacíos para evitar futuros "no es una función" si WME pide estos. */
    NameChangeAction.prototype.getFocusSegments = function() {
        return [];
    };
    NameChangeAction.prototype.getFocusNodes = function() {
        return [];
    };
    NameChangeAction.prototype.getFocusClosures = function() {
        return [];
    };

    /** 18) getTimestamp: método nuevo que WME/Plugins están llamando. */
    NameChangeAction.prototype.getTimestamp = function() {
        // Devolvemos un timestamp numérico (ms desde época UNIX).
        return Date.now();
    };


    function applyNormalization() {
        const normalizeCheckboxes = document.querySelectorAll(".normalize-checkbox:checked");
        const deleteCheckboxes = document.querySelectorAll(".delete-checkbox:checked");
        let changesMade = false;

        if (normalizeCheckboxes.length === 0 && deleteCheckboxes.length === 0) {
            console.log("ℹ️ No hay lugares seleccionados para normalizar o eliminar.");
            return;
        }

        // Confirmación antes de procesar todo si TODOS están seleccionados para eliminar
        const allDeleteBoxes = document.querySelectorAll(".delete-checkbox");
        if (deleteCheckboxes.length === allDeleteBoxes.length) {
            const confirmDeleteAll = confirm("⚠️ Has seleccionado TODOS los lugares para eliminar. ¿Estás seguro?");
            if (!confirmDeleteAll) {
                console.log("🚫 Eliminación masiva cancelada por el usuario.");
                return;
            }
        }

        // Normalizar nombres
        normalizeCheckboxes.forEach(cb => {
            const index = cb.dataset.index;
            const input = document.querySelector(`.new-name-input[data-index="${index}"]`);
            const newName = input?.value?.trim();
            const placeId = input?.getAttribute("data-place-id");
            const place = W.model.venues.getObjectById(placeId);

            if (!place || !place.attributes?.name) {
                console.warn(`⛔ No se encontró el lugar con ID: ${placeId}`);
                return;
            }

            const currentName = place.attributes.name.trim();

            if (currentName !== newName) {
                try {
                    const UpdateObject = require("Waze/Action/UpdateObject");
                    const action = new UpdateObject(place, { name: newName });
                    W.model.actionManager.add(action);
                    console.log(`✅ Acción aplicada: "${currentName}" → "${newName}"`);
                    changesMade = true;
                } catch (error) {
                    console.error("⛔ Error aplicando la acción de actualización:", error);
                }
            } else {
                console.log(`⏭ Sin cambios reales para ID ${placeId}`);
            }
        });

        // Eliminar lugares marcados
        deleteCheckboxes.forEach(cb => {
            const index = cb.dataset.index;
            const input = document.querySelector(`.new-name-input[data-index="${index}"]`);
            const placeId = input?.getAttribute("data-place-id");
            const place = W.model.venues.getObjectById(placeId);

            if (!place) {
                console.warn(`⛔ No se encontró el lugar con ID para eliminar: ${placeId}`);
                return;
            }

            try {
                const DeleteObject = require("Waze/Action/DeleteObject");
                const deleteAction = new DeleteObject(place);
                W.model.actionManager.add(deleteAction);
                console.log(`🗑️ Lugar eliminado: ${placeId}`);
                changesMade = true;
            } catch (error) {
                console.error("⛔ Error eliminando el lugar con ID:", placeId, error);
            }
        });

        if (changesMade) {
            console.log("💾 Cambios marcados. Recuerda presionar el botón de guardar en el editor.");
        } else {
            console.log("ℹ️ No hubo cambios para aplicar.");
        }

        // ✅ Cerrar panel flotante
        const panel = document.getElementById("normalizer-floating-panel");
        if (panel) panel.remove();
    }

    


    // Función de similitud leve entre palabras
    function isSimilar(a, b)
    {
        if (a === b) return true;
        if (Math.abs(a.length - b.length) > 2) return false;

        let mismatches = 0;
        for (let i = 0; i < Math.min(a.length, b.length); i++) {
            if (a[i] !== b[i]) mismatches++;
            if (mismatches > 2) return false;
        }

        return true;
    }

    function normalizePlaceName(name)
    {
        if (!name) return "";

        const normalizeArticles = !document.getElementById("normalizeArticles")?.checked;
        const articles = ["el", "la", "los", "las", "de", "del", "al", "y"];
        const words = name.trim().split(/\s+/);

        const isRoman = (word) => /^(i|ii|iii|iv|v|vi|vii|viii|ix|x|xi|xii|xiii|xiv|xv|xvi|xvii|xviii|xix|xx|xxi|xxii|xxiii|xxiv|xxv)$/i.test(word);

        const normalizedWords = words.map((word, index) =>
        {
            const lowerWord = word.toLowerCase();

            // Si la palabra está en la lista de excluidas (ignorando mayúsculas)
            const matchExcluded = excludeWords.find(w => w.toLowerCase() === lowerWord);
            if (matchExcluded) return matchExcluded;

            // Si es número romano
            if (isRoman(word)) return word.toUpperCase();

            // Artículos (si opción marcada y no es la primera palabra)
            if (!normalizeArticles && articles.includes(lowerWord) && index !== 0) {
                return lowerWord;
            }

            // Capitalización normal
            return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
        });

        // Reemplazar pipes con guiones
        name = normalizedWords.join(" ").replace(/\s*\|\s*/g, " - ");

        // Mayúscula después de (, ", [, '
        name = name.replace(/([(\["'])(\s*)(\p{L})/gu, (match, p1, p2, p3) => p1 + p2 + p3.toUpperCase());

        // Asegurar espacios alrededor del guion
        name = name.replace(/\s*-\s*/g, " - ");

        // Preservar mayúsculas en letras pegadas a números (ej: 45A)
        name = name.replace(/\b(\d+)([A-Z])\b/g, (match, num, letter) => num + letter.toUpperCase());

        // Limpiar espacios dobles
        return name.replace(/\s{2,}/g, " ").trim();
    }

    // Para exponer al contexto global real desde Tampermonkey
    unsafeWindow.normalizePlaceName = normalizePlaceName;



    function openFloatingPanel(placesToNormalize) {
        console.log(`[${SCRIPT_NAME}] Creando panel flotante...`);

        if (!placesToNormalize || placesToNormalize.length === 0) {
            console.warn(`[${SCRIPT_NAME}] No hay lugares para normalizar.`);
            return;
        }

        // Elimina cualquier panel flotante previo
        let existingPanel = document.getElementById("normalizer-floating-panel");
        if (existingPanel) existingPanel.remove();

        // Crear el panel flotante
        let panel = document.createElement("div");
        panel.id = "normalizer-floating-panel";
        panel.style.position = "fixed";
        panel.style.top = "100px";
        panel.style.left = "300px"; // deja espacio para la barra lateral
        panel.style.width = "calc(100vw - 400px)"; // margen adicional para que no se desborde
        panel.style.maxWidth = "calc(100vw - 30px)";
        panel.style.zIndex = 10000;
        panel.style.backgroundColor = "white";
        panel.style.border = "1px solid #ccc";
        panel.style.padding = "15px";
        panel.style.boxShadow = "0 2px 10px rgba(0,0,0,0.3)";
        panel.style.borderRadius = "8px";

        // Contenido del panel
        let panelContent = `

  <h3 style="text-align: center;">Lugares para Normalizar</h3>
        <div style="max-height: 60vh; overflow-y: auto; margin-bottom: 10px;">
           <table style="width: 100%; border-collapse: collapse;">
    <thead>
  <tr style="border-bottom: 2px solid black;">
    <th style="width: 40px; text-align: center;">
      <input type="checkbox" id="selectAllCheckbox" title="Seleccionar todos para aplicar normalización">
    </th>
    <th style="width: 40px; text-align: center;">
      <input type="checkbox" id="selectAllDeleteCheckbox" title="Seleccionar todos para eliminar">
    </th>

  </tr>
  <tr style="border-bottom: 2px solid #ccc;">
    <th style="text-align: center;" title="Aplicar normalización">🛠️</th>
    <th style="text-align: center;" title="Marcar para eliminar">🗑️</th>
    <th style="text-align: left;">Nombre Actual</th>
    <th style="text-align: left;">Nuevo Nombre</th>
  </tr>
</thead>
            <tbody>
    `;

        maxPlaces = parseInt(document.getElementById("maxPlacesInput").value, 10) || 20;
        placesToNormalize.sort((a, b) => a.originalName.localeCompare(b.originalName));
        placesToNormalize.slice(0, maxPlaces).forEach((place, index) => {
            // placesToNormalize.forEach((place, index) => {
            if (place && place.originalName) {
                const originalName = place.originalName;
                let newName = normalizePlaceName(originalName);
                // Escapa comillas dobles para evitar romper el HTML
                newName = newName.replace(/"/g, '&quot;');
                const placeId = place.id;
                panelContent += `
  <tr>
    <td style="text-align: center;"><input type="checkbox" class="normalize-checkbox" data-index="${index}"></td>
    <td style="text-align: center;"><input type="checkbox" class="delete-checkbox" data-index="${index}"></td>
    <td id="name-cell-${index}">${originalName}</td>
    <td><input type="text" class="new-name-input" data-index="${index}" data-place-id="${place.id}" value="${newName}" style="width: 100%;"></td>
  </tr>
`;
            }
        });
        panelContent += `</tbody></table>`;

        // Agregar botones al panel sin eventos inline
        // Ejemplo de la sección de botones en panelContent:
        panelContent += `
    <button id="applyNormalizationBtn" style="margin-top: 10px; width: 100%; padding: 8px; background: #4CAF50; color: white; border: none; cursor: pointer;">
        Aplicar Normalización
    </button>
    <button id="closeFloatingPanelBtn" style="margin-top: 5px; width: 100%; padding: 8px; background: #d9534f; color: white; border: none; cursor: pointer;">
        Cerrar
    </button>
`;

        panel.innerHTML = panelContent;
        document.body.appendChild(panel);

        // Sincroniza comportamiento entre eliminar y normalizar
        document.querySelectorAll(".delete-checkbox").forEach(deleteCheckbox => {
            deleteCheckbox.addEventListener("change", function () {
                const index = this.dataset.index;
                const normalizeCheckbox = document.querySelector(`.normalize-checkbox[data-index="${index}"]`);
                const originalNameCell = this.closest("tr").querySelector("td:nth-child(3)");

                if (this.checked) {
                    normalizeCheckbox.checked = true;
                    originalNameCell.style.color = "red";
                    originalNameCell.style.fontWeight = "bold";
                } else {
                    normalizeCheckbox.checked = false; // ❗ Desmarcar también el de normalizar
                    originalNameCell.style.color = "";
                    originalNameCell.style.fontWeight = "";
                }
            });
     /*   document.querySelectorAll(".delete-checkbox").forEach(deleteCheckbox => {
            deleteCheckbox.addEventListener("change", function () {
                const index = this.dataset.index;
                const normalizeCheckbox = document.querySelector(`.normalize-checkbox[data-index="${index}"]`);
                const originalNameCell = this.closest("tr").querySelector("td:nth-child(3)");

                if (this.checked) {
                    normalizeCheckbox.checked = true;
                    originalNameCell.style.color = "red";
                    originalNameCell.style.fontWeight = "bold";
                } else {
                    originalNameCell.style.color = "";
                    originalNameCell.style.fontWeight = "";
                }
            });*/
        });

        // ✅ Seleccionar todos para normalizar
        document.getElementById("selectAllCheckbox").addEventListener("change", function () {
            const isChecked = this.checked;
            document.querySelectorAll(".normalize-checkbox").forEach(cb => {
                cb.checked = isChecked;
            });
        });

      /*  // ✅ Seleccionar todos para eliminar
        document.getElementById("selectAllDeleteCheckbox").addEventListener("change", function () {
            const isChecked = this.checked;
            document.querySelectorAll(".delete-checkbox").forEach(cb => {
                cb.checked = isChecked;
            });
        });*/
        // Evento para seleccionar todos los eliminar
document.getElementById("selectAllDeleteCheckbox").addEventListener("change", function () {
  const isChecked = this.checked;
  const deleteCheckboxes = document.querySelectorAll(".delete-checkbox");

  if (isChecked) {
    const confirmDeleteAll = confirm("⚠️ ¿Estás seguro de seleccionar TODOS los lugares para eliminar?");
    if (!confirmDeleteAll) {
      this.checked = false;
      return;
    }
  }

  deleteCheckboxes.forEach(cb => {
    const index = cb.dataset.index;
    const normalizeCheckbox = document.querySelector(`.normalize-checkbox[data-index="${index}"]`);
    const nameCell = document.getElementById(`name-cell-${index}`);

    cb.checked = isChecked;

    if (isChecked) {
      if (normalizeCheckbox) normalizeCheckbox.checked = true;
      if (nameCell) nameCell.style.color = "red";
    } else {
      if (normalizeCheckbox) normalizeCheckbox.checked = false;
      if (nameCell) nameCell.style.color = "";
    }
  });
});

        // ✅ Seleccionar para cerrar
        document.getElementById("closeFloatingPanelBtn").addEventListener("click", function() {
            let panel = document.getElementById("normalizer-floating-panel");
            if (panel) panel.remove();
        });
       /* // Evento para corregir ortografía en cada input del panel:
        document.getElementById("checkSpellingBtn").addEventListener("click", function() {
            const inputs = document.querySelectorAll(".new-name-input");
            inputs.forEach(input => {
                const text = input.value;
                applySpellCorrection(text).then(corrected => {
                    input.value = corrected;
                });
            });
        });*/

        // Evento para aplicar normalización
    document.getElementById("applyNormalizationBtn").addEventListener("click", function () {
  const confirmed = confirm("¿Estás seguro de que deseas aplicar los cambios?");
  if (!confirmed) return;

  let changesMade = false;

  document.querySelectorAll(".normalize-checkbox").forEach(cb => {
    const index = cb.dataset.index;

    const placeId = document.querySelector(`.new-name-input[data-index="${index}"]`)?.getAttribute("data-place-id");
    const newName = document.querySelector(`.new-name-input[data-index="${index}"]`)?.value?.trim();
    const deleteCb = document.querySelector(`.delete-checkbox[data-index="${index}"]`);
    const place = W.model.venues.getObjectById(placeId);

    if (!place || !place.attributes?.name) return;

    // ✅ Eliminar si está seleccionado para eliminar
    if (deleteCb?.checked) {
      try {
        const DeleteObject = require("Waze/Action/DeleteObject");
        W.model.actionManager.add(new DeleteObject(place));
        console.log(`🗑 Eliminado: ${place.attributes.name}`);
        changesMade = true;
        return; // Saltar normalización si se elimina
      } catch (error) {
        console.error("⛔ Error al eliminar:", error);
      }
    }

    // ✅ Normalizar si está seleccionado para ello y no fue eliminado
    if (cb.checked && place.attributes.name.trim() !== newName) {
      try {
        const UpdateObject = require("Waze/Action/UpdateObject");
        const action = new UpdateObject(place, { name: newName });
        W.model.actionManager.add(action);
        console.log(`✅ Normalizado: ${place.attributes.name} → ${newName}`);
        changesMade = true;
      } catch (error) {
        console.error("⛔ Error al actualizar:", error);
      }
    }
  });

  // ✅ Marcar cambios si hubo acciones
  if (changesMade) {
    if (W.controller && typeof W.controller.setModified === "function") {
      W.controller.setModified(true);
    }
    console.log("💾 Cambios marcados para guardar.");
  } else {
    console.log("ℹ️ No hubo cambios para aplicar.");
  }

  // ✅ Cerrar panel flotante
  const panel = document.getElementById("normalizer-floating-panel");
  if (panel) panel.remove();
});
    }

    function loadExcludeWordsFromXML(callback) {
  fetch("excludeWords.xml")
    .then(response => {
      if (!response.ok) throw new Error("No se encontró el archivo XML");
      return response.text();
    })
    .then(xmlText => {
      const parser = new DOMParser();
      const xmlDoc = parser.parseFromString(xmlText, "text/xml");
      const wordNodes = xmlDoc.getElementsByTagName("word");
      const wordsFromXML = Array.from(wordNodes).map(node => node.textContent.trim());

      const existing = JSON.parse(localStorage.getItem("excludeWords")) || [];
      excludeWords = [...new Set([...existing, ...wordsFromXML])].sort((a, b) => a.localeCompare(b));
      localStorage.setItem("excludeWords", JSON.stringify(excludeWords));

      if (callback) callback();
    })
    .catch(() => {
      console.warn("⚠️ No se pudo cargar excludeWords.xml. Solo se usará localStorage.");
      excludeWords = JSON.parse(localStorage.getItem("excludeWords")) || ["EDS", "IPS", "McDonald's", "EPS"];
      localStorage.setItem("excludeWords", JSON.stringify(excludeWords));
      if (callback) callback();
    });
}


    function loadExcludeWordsFromXML2(callback) {
        fetch("excludeWords.xml")
            .then(response => {
            if (!response.ok) throw new Error("No se encontró el archivo XML");
            return response.text();
        })
           .then(xmlText => {
            const parser = new DOMParser();
            const xmlDoc = parser.parseFromString(xmlText, "text/xml");
            const wordNodes = xmlDoc.getElementsByTagName("word");
            const wordsFromXML = Array.from(wordNodes).map(node => node.textContent.trim());

            // Fusionar palabras actuales con las del archivo, eliminar duplicados y ordenar
            const current = JSON.parse(localStorage.getItem("excludeWords")) || [];
            const merged = [...new Set([...current, ...wordsFromXML])].sort((a, b) => a.localeCompare(b));

            excludeWords = merged;
            localStorage.setItem("excludeWords", JSON.stringify(merged));
            updateExcludeList();

            exportExcludeWordsToXML(); // vuelve a exportar el XML actualizado

            if (callback) callback();
        })
            .catch(() => {
            console.warn("⚠️ No se pudo cargar excludeWords.xml. Usando lista por defecto.");
            excludeWords = ["EDS", "IPS", "McDonald's", "EPS"];
            localStorage.setItem("excludeWords", JSON.stringify(excludeWords));
            updateExcludeList();
            if (callback) callback();
        });
    }
    function exportExcludeWordsToXML() {
        const xmlContent = `<?xml version="1.0" encoding="UTF-8"?>
<ExcludedWords>
${excludeWords.map(word => `  <word>${word}</word>`).join("\n")}
</ExcludedWords>`;

        const blob = new Blob([xmlContent], { type: "application/xml" });
        const url = URL.createObjectURL(blob); // ✅ ESTA LÍNEA ESTABA FALTANDO
        const link = document.createElement("a");
        link.href = url;
        link.download = "excludeWords.xml";
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
}


    function showFloatingMessage(message) {
        const msg = document.createElement("div");
        msg.textContent = message;
        msg.style.position = "fixed";
        msg.style.bottom = "30px";
        msg.style.left = "50%";
        msg.style.transform = "translateX(-50%)";
        msg.style.backgroundColor = "#333";
        msg.style.color = "#fff";
        msg.style.padding = "10px 20px";
        msg.style.borderRadius = "5px";
        msg.style.zIndex = 9999;
        msg.style.opacity = "0.95";
        msg.style.transition = "opacity 1s ease-in-out";

        document.body.appendChild(msg);

        setTimeout(() => {
            msg.style.opacity = "0";
            setTimeout(() => document.body.removeChild(msg), 1000);
        }, 3000);
    }

    function waitForWME() {
        if (W && W.userscripts && W.model && W.model.venues) {
            console.log(`[${SCRIPT_NAME}] Inicializando v${VERSION}`);
            loadExcludeWordsFromXML(() =>
            {
               // initializeExcludeWords();     // 1. Carga de localStorage o palabras por defecto
                createSidebarTab();           // 3. Ya tienes excludeWords listas para usar
                renderExcludedWordsSidebar(); // 4. Renderiza la lista actual (ordenada)
            });
        }
        else {
            console.log(`[${SCRIPT_NAME}] Esperando que WME esté listo...`);
            setTimeout(waitForWME, 1000);
        }
    }
    console.log(window.applyNormalization);
window.applyNormalization = applyNormalization;
    waitForWME();
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址