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.8k 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
      last edited by

      Hi! I’m trying to hack down the google maps modules. I made a node_helper.js to capture the latitude and longitude of desired location, using url.

      the code of main file looks like this

      getDom: function() {
             
             
      		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;
      	}
      
      

      The latitude and longitude is stored in payload. All I require is ho to use socketNotificationReceived to parse both values as “lat” and “long” in script??

      ? 2 Replies Last reply Reply Quote 0
      • ? 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

                    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                    With your input, this post could be even better 💗

                    Register Login
                    • 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