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.4k 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.
    • 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