MagicMirror Forum
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • 3rd-Party-Modules
    • Donate
    • Discord
    • Register
    • Login
    A New Chapter for MagicMirror: The Community Takes the Lead
    Read the statement by Michael Teeuw here.

    Including socketNotificationReceived in getDom function

    Scheduled Pinned Locked Moved Development
    8 Posts 2 Posters 3.6k Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ? Offline
      A Former User @yours.mukul
      last edited by

      @yours.mukul
      getDom() in node_helper.js?

      Y 1 Reply Last reply Reply Quote 0
      • Y Offline
        yours.mukul @Guest
        last edited by

        @Sean getDom() in Maps.js

        1 Reply Last reply Reply Quote 0
        • ? Offline
          A Former User @yours.mukul
          last edited by

          @yours.mukul
          try this

          in your node_helper.js

          var geo = {
            lat: 12.34567
            lng: 23.45678
          }
          this.sendSocketNotification("REFRESH_GEO", geo)
          

          in your Main Module

          start: function(){
            this.geo = {
              lat: 0, //default latitude
              lng: 0, //default longitude
            }
          },
          
          socketNotificationReceived: function(noti, payload) {
            if (noti == "REFRESH_GEO") {
              this.geo.lat = payload.lat
              this.geo.lng = payload.lng
              this.updateDom()
            }
          },
          
          getDom: function() {
            var lat = this.geo.lat
            var lng = this.geo.lng
          
            var wrapper = ...
          },
          
          1 Reply Last reply Reply Quote 1
          • Y Offline
            yours.mukul
            last edited by

            @Sean said in Including socketNotificationReceived in getDom function:

            var lat = this.geo.lat
            var lng = this.geo.lng

            not working, it always shows up 0,0 latitude and longitude…

            ? 1 Reply Last reply Reply Quote 0
            • ? Offline
              A Former User @yours.mukul
              last edited by A Former User

              @yours.mukul said in Including socketNotificationReceived in getDom function:

              @Sean said in Including socketNotificationReceived in getDom function:

              var lat = this.geo.lat
              var lng = this.geo.lng

              not working, it always shows up 0,0 latitude and longitude…

              It means, your socketNotificationReceived() in module is not working properly. Try this.

              socketNotificationReceived: function(noti, payload) {
                console.log("NOTIFICATION IS FIRED:", noti)
                if (noti == "REFRESH_GEO") {
                  console.log("PAYLOAD IS TREANFERED:", payload)
                  this.geo.lat = payload.lat
                  this.geo.lng = payload.lng
                  console.log("I'LL UPDATE DOM BY REFRESHED GEO")
                  this.updateDom()
                }
              },
              

              See how the log says. Check correct Socket Notification is fired with correct payload. If not, check your this.sendSocketNotification() in node_helper.js

              Y 1 Reply Last reply Reply Quote 0
              • Y Offline
                yours.mukul @Guest
                last edited by

                @Sean
                node_helper.js

                var NodeHelper = require("node_helper");
                module.exports = NodeHelper.create({
                start: function() {
                
                var geo = {
                  lat: 12.34567,
                  lng: 23.45678
                }
                this.sendSocketNotification("REFRESH_GEO", geo);
                }
                }
                );
                

                main.js

                /* global Module */
                
                /* Magic Mirror
                 * Module: MMM-GoogleMapsTraffic
                 *
                 * By Victor Mora
                 * MIT Licensed.
                 */
                
                Module.register("MMM-GoogleMapsTraffic", {
                       start: function(){
                  this.geo = {
                    lat: 0, //default latitude
                    lng: 0 //default longitude
                  }
                     },
                socketNotificationReceived: function(noti, payload) {
                  console.log("NOTIFICATION IS FIRED:", noti)
                  if (noti == "REFRESH_GEO") {
                    console.log("PAYLOAD IS TREANFERED:", payload)
                    this.geo.lat = payload.lat,
                    this.geo.lng = payload.lng
                    console.log("I'LL UPDATE DOM BY REFRESHED GEO")
                    this.updateDom();
                  }
                },
                	getDom: function() {
                        var lat = this.geo.lat;
                        var lng = this.geo.lng;
                
                		var wrapper = document.createElement("div");
                        wrapper.setAttribute("id", "map");
                
                        wrapper.style.height = this.config.height;
                        wrapper.style.width = this.config.width;
                
                        var script = document.createElement("script");
                        script.type = "text/javascript";
                        script.src = "https://maps.googleapis.com/maps/api/js?key=" + this.config.key;
                        document.body.appendChild(script);
                
                        script.onload = function () {
                            var map = new google.maps.Map(document.getElementById("map"), {
                            	zoom: 13,
                            	center: {
                            		lat: lat,
                            		lng: lng
                            	}
                            });
                
                            var trafficLayer = new google.maps.TrafficLayer();
                            trafficLayer.setMap(map);
                        };
                
                		return wrapper;
                	}
                
                });
                
                ? 1 Reply Last reply Reply Quote 0
                • ? Offline
                  A Former User @yours.mukul
                  last edited by

                  @yours.mukul
                  I think it is not good to put the noti into start() of node_helper.js.
                  Because after finishing module loaded and DOM created, updateDOM() would be working properly, but your code tried too early.
                  As you’ve said, you had your code in node_helper.js to get REAL latitude & longitude, isn’t it? My code was just an example. Send your REAL lat & lng to main module when your node_helper code gathers real target values.

                  1 Reply Last reply Reply Quote 0
                  • 1 / 1
                  • First post
                    Last post
                  Enjoying MagicMirror? Please consider a donation!
                  MagicMirror created by Michael Teeuw.
                  Forum managed by Sam, technical setup by Karsten.
                  This forum is using NodeBB as its core | Contributors
                  Contact | Privacy Policy