Autor Zpráva
blahapet
Profil
Ahoj, momentálně řeším nový widget PPL, návod zde.

Potřeboval bych nějakým způsobem "někde" vypsat na stránce výdejní místo, které si uživatel vybere. Mám svůj kód, kde na konci skriptu vkládám onen kus kódu s metodou addEventListener:

<h1>PPL</h1>

    <style>

      /* CSS for the modal overlay */
      .modal-overlay {
        position: fixed;
        top: 0;
        left: 0;
        width: 100%;
        height: 100%;
        background-color: rgba(0, 0, 0, 0.75);
        display: none;
      }

      /* CSS for the modal box */
      .modal-box {
        position: absolute;
        width:98%;
        left:15px;
        margin: 0 auto;
        height: 720px;
        display: none;
        z-index:99999;
      }

      #close-modal-button {
        position: absolute;
        top: 10px;
        right: 10px;
        z-index: 9999;
        font-weight:bold;color:#fff; background:#174290; padding:.5em;width:100px;cursor:pointer
      }

      .ppl-parcelshop-map {
        height: 100%;
        max-height: 640px;
      }
    </style>
    


    <button id="modal-button">Open Modal</button>

    <!-- Modal overlay -->
    <div class="modal-overlay"></div>

    <!-- Modal box -->
    <div class="modal-box">
      <input id="close-modal-button" value="Zavřít okno" />
      <div id="ppl-parcelshop-map" data-countries="cz"></div>
    </div>

    <script>
    
    
    
      // Get the modal elements
      var modalOverlay = document.querySelector(".modal-overlay");
      var modalBox = document.querySelector(".modal-box");
      var closeButton = document.querySelector("#close-modal-button");

      // Get the button that opens the modal
      var modalButton = document.querySelector("#modal-button");

      // When the user clicks the button, show the modal
      modalButton.addEventListener("click", function () {
        modalOverlay.style.display = "block";
        modalBox.style.display = "block";
        modalBox.style.top = window.pageYOffset + 15 + "px";

        // Create a link element to load the main.css file
        var link = document.createElement("link");
        link.rel = "stylesheet";
        link.href = "https://www.ppl.cz/sources/map/main.css";

        // Create a script element to load the main.js file
        var script = document.createElement("script");
        script.src = "https://www.ppl.cz/sources/map/main.js";

        // Add the script+href link to the document head
        document.head.appendChild(link);
        document.head.appendChild(script);
      });

      // When the user clicks the close button, hide the modal
      closeButton.addEventListener("click", function () {
        modalOverlay.style.display = "none";
        modalBox.style.display = "none";
      });
      
      
     document.addEventListener( "Ppl-parcelshop-map", (event) => { console.log("Vybraný parcel shop:", event.detail) } );    
     
          
    </script>

Mapa výdejních míst se normálně zobrazí, když nějaké místo vyberu a potvrdím, tak po kliku klávesou F12 v Goggle Chrome na consolu, se mi nic nezobrazí. Potřeboval bych to ale spíš vypsat do nějakého ID elementu na stránce. Omlouvám se, jsem v tomto neznalec a děkuji za každou radu.
Kajman
Profil
Konzoli (F12) si musíte otevřít před vybráním místa. Pokud není otevřená, log se nemá kam zapsat.
blahapet
Profil
Díky moc, ono to to hlavně vypisovalo tuto hlášku níže již před tím, ale moc jsem tomu nevěnoval pozornost, protože PPL používalo do února tohoto roku starší widget, který mi bez problémů fungoval a nahradili to tímto. Je mi to divné, proč by používali nově zastaralou knihovnu? Jinak se nic nezměnilo, tuto hlášku to vypisuje i když konzolu otevřu před vybráním výdejního místa.

Používáte zastaralou verzi knihovny JS SDK Mapy.cz. Tato knihovna přestane být v blízké době podporována. Doporučujeme přejít na nové REST API Mapy.cz. Více informací najdete zde: developer.mapy.cz/js-api/ukonceni-podpory-js-sdk
blahapet
Profil
Je možné prosím to nějak vypsat do elementu na stránce? Zkoušel jsem toto:

document.addEventListener( "Ppl-parcelshop-map", (event) => { document.getElementById('element').innerHTML = "Vybraný parcel shop:" + event.detail });

Ale nic se neděje, asi dělám něco blbě...
Keeehi
Profil
blahapet:
Na první pohled nevidím nic, co by bylo špatně. Byl by odkaz přímo na stránku? Jednodušeji by se to debugovalo.
blahapet
Profil
Jistě, je to celé zde.
Kajman
Profil
V té dokumentaci mají chybu. Když změníte jméno události na malé p "ppl-parcelshop-map", tak si už můžete vrátit objekt event.detail do console a z něho pak si pak musíte vybrat, které údaje z toho místa tam chcete.

document.addEventListener( "ppl-parcelshop-map", (event) => { document.getElementById('element').innerHTML = "Vybraný parcel shop:" + event.detail["name"] + ", " + event.detail["street"] });
blahapet
Profil
Strašně moc děkuju. Je někde prosím seznam těch všech vrácených hodnot? "name", "street" ?
Keeehi
Profil
blahapet:
Ideální to bude prozkoumat v konzoli.
document.addEventListener( "ppl-parcelshop-map", (event) => { console.log(event) } );
blahapet
Profil
Děkuji moc všem za pomoc, už mám vše, co jsem potřeboval.
Kajman
Profil
blahapet:
Příště si vezměte aktuální návod přímo od nich, ušetříte si starosti. V novější verzi už mají překlep opravený.
www.ppl.cz/documents/20122/1732536/PPL_CZ_Integrace_PPL_mapy_widget_v1.5.2.pdf
blahapet
Profil
Jéé, tak ten jsem nikde na internetu nenašel, ale děkuju.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0