• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
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.

updateDom() blocks MagicMirror

Scheduled Pinned Locked Moved Development
28 Posts 2 Posters 5.3k 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.
  • 1 Offline
    1BlauNitrox
    last edited by 1BlauNitrox Jan 21, 2022, 7:05 PM Jan 21, 2022, 7:04 PM

    Hey,

    I am developing my own first module. Therefore I looked at some other modules and in the dev documentation.

    This is what I have right now:

    Module.register("MMM-VPlan", {
    	defaults: {
    		fadeSpeed: 2,
                    username: "",
                    password: ""
    	},
    
    	getStyles: function() {
            return ["MMM-Plan.css"];
    	},
    
        start: function() {
    		Log.log("Starting module: " + this.name);
    		
            this.response = {
                "name": "Test",
                "entries": {
                    "lessions": "Teacher Subject Room representation"
                }
            };
    
    		//this.getData();
            updateDom();
    	},
    
    	getDom: function() {
            const wrapper = document.createElement("div");
            wrapper.innerHTML = response;
            return wrapper;
    	},
    
        getData: function () {
            const request = new XMLHttpRequest();
            request.open('GET', 'http://localhost/vplan/' + username + '/' + password + '/today', true);
            request.onreadystatechange = () => {
              if (request.readyState != 4) {
                return;
              };
        
              if (request.status === 200) {
                this.response = JSON.parse(request.response);
                this.updateDom();
              } else {
                Log.error(`${this.name}: Could not load data`);
              }
        
              setTimeout(() => this.getData(), this.config.updateIntervalMs);
            };
            request.send();
          },
    })
    

    The getData() function is not in use.

    My problem is the getDom() function. If I call updateDom() in the start method, the mirror shows only a black screen without any content. Even the other modules aren`t visible.
    If I delete updateDom() in the start methode, the mirror shows all modules. But my module returns undefined:

    Undefined.PNG

    S 3 Replies Last reply Jan 21, 2022, 7:14 PM Reply Quote 0
    • S Away
      sdetweil @1BlauNitrox
      last edited by Jan 21, 2022, 7:14 PM

      @1blaunitrox said in updateDom() blocks MagicMirror:

          wrapper.innerHTML = response;
      

      where is response?

      i think u meant this.response

      don’t call updateDom() in start

      mm will call it the 1st time when the module is loaded

      note that this.response might be empty in a real life situation, but you MUST return something
      an empty div is ok… (it IS something)

      Sam

      How to add modules

      learning how to use browser developers window for css changes

      1 1 Reply Last reply Jan 21, 2022, 7:25 PM Reply Quote 0
      • S Away
        sdetweil @1BlauNitrox
        last edited by sdetweil Jan 21, 2022, 7:18 PM Jan 21, 2022, 7:17 PM

        @1blaunitrox you can walk thru the module code in the developers window sources tab

        ctrl-shift-i,

        source tab

        left nav, navigate to modules, your module name, click your modulename.js

        source on the right

        click on a source line, left edge to turn on a break point

        hit f5 to refresh , will stop

        upper right arrow is run, next is step, next is into, next is over

        mouse hover over variables for value/content

        u can use chrome (firefox/edge) on the pc if u allow remote connection in config.js

        address:"0.0.0.0".
        ipWhitelist:[],
        

        Sam

        How to add modules

        learning how to use browser developers window for css changes

        1 Reply Last reply Reply Quote 0
        • S Away
          sdetweil @1BlauNitrox
          last edited by sdetweil Jan 21, 2022, 7:20 PM Jan 21, 2022, 7:19 PM

          @1blaunitrox the black screen is cause your module source crashed the browser… oops…

          its this.updateDom()

          look at my sample module
          https://github.com/sdetweil/SampleModule

          Sam

          How to add modules

          learning how to use browser developers window for css changes

          1 Reply Last reply Reply Quote 0
          • 1 Offline
            1BlauNitrox @sdetweil
            last edited by Jan 21, 2022, 7:25 PM

            @sdetweil I changed getDom() to this:

            getDom: function() {
                    const wrapper = document.createElement("div");
                    if(response.lenght <= 0) {
                        wrapper.innerHTML = "No Entries";
                    } else {
                        wrapper.innerHTML = this.response;
                    }
                    return wrapper;
            	},
            

            There is a check if the array has any entries.

            But the mirror shows “undefined”

            S 1 Reply Last reply Jan 21, 2022, 7:26 PM Reply Quote 0
            • S Away
              sdetweil @1BlauNitrox
              last edited by sdetweil Jan 21, 2022, 7:28 PM Jan 21, 2022, 7:26 PM

              @1blaunitrox said in updateDom() blocks MagicMirror:

              if(response.lenght <= 0) {

              this.response.length

              always gotta use this.

              unless u created the variable INSIDE the routine using it…

              use the debugger

              Sam

              How to add modules

              learning how to use browser developers window for css changes

              1 1 Reply Last reply Jan 21, 2022, 7:29 PM Reply Quote 0
              • 1 Offline
                1BlauNitrox @sdetweil
                last edited by 1BlauNitrox Jan 21, 2022, 7:30 PM Jan 21, 2022, 7:29 PM

                @sdetweil
                response.PNG

                Not exectly what I wanted :joy:
                Why can getDom() not transfrom the array in a readable string?

                S 2 Replies Last reply Jan 21, 2022, 7:30 PM Reply Quote 0
                • S Away
                  sdetweil @1BlauNitrox
                  last edited by Jan 21, 2022, 7:30 PM

                  @1blaunitrox yes, this.response is an object

                          this.response = {
                              "name": "Test",
                              "entries": {
                                  "lessions": "Teacher Subject Room representation"
                              }
                          };
                  

                  html doesn’t know objects

                  Sam

                  How to add modules

                  learning how to use browser developers window for css changes

                  1 1 Reply Last reply Jan 21, 2022, 7:31 PM Reply Quote 0
                  • 1 Offline
                    1BlauNitrox @sdetweil
                    last edited by Jan 21, 2022, 7:31 PM

                    @sdetweil Is there a Json parser I can use?

                    1 Reply Last reply Reply Quote 0
                    • S Away
                      sdetweil @1BlauNitrox
                      last edited by Jan 21, 2022, 7:31 PM

                      @1blaunitrox said in updateDom() blocks MagicMirror:

                      Why can getDom() not transfrom the array in a readable string?

                      getDom() CAN do anythign YOU implement… it does NOTHING by itself…

                      Sam

                      How to add modules

                      learning how to use browser developers window for css changes

                      S 1 2 Replies Last reply Jan 21, 2022, 7:33 PM Reply Quote 0
                      • 1
                      • 2
                      • 3
                      • 1 / 3
                      1 / 3
                      • First post
                        2/28
                        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