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

Making text etc clickable

Scheduled Pinned Locked Moved Development
14 Posts 3 Posters 9.5k Views 4 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.
  • B Offline
    bhepler Module Developer
    last edited by Nov 27, 2016, 9:48 PM

    You’ll probably want to create a customized version of the Newsfeed module. The part of the code that actually puts the text on the screen is in the newsfeed.js file, specifically in the getDom: function() {...} portion of the code.

    If you look at it, it’s already creating a <DIV> element and changing the innerHTML to the value of the title from the newsfeed (line 149) title.innerHTML = this.newsItems[this.activeItem].title; It should be relatively easy to modify this area of the code to add the anchor tag & url.

    B 1 Reply Last reply Nov 27, 2016, 10:31 PM Reply Quote 0
    • B Offline
      broberg Project Sponsor @bhepler
      last edited by Nov 27, 2016, 10:31 PM

      @bhepler said in Making text etc clickable:

      If you look at it, it’s already creating a <DIV> element and changing the innerHTML to the value of the title from the newsfeed (line 149) title.innerHTML = this.newsItems[this.activeItem].title; It should be relatively easy to modify this area of the code to add the anchor tag & url.

      I’ve found the part where it creates the actual content, I’ve tried adding onclick to text, to buttons, tried making functions to act on the onclick event etc. maybe it’s a z-index issue and something is in the way. because it doesn’t react at all to any clicks. I tried the anchor tag just to see if it would react, but no. Something is blocking the “clickability” of the MM module

      1 Reply Last reply Reply Quote 0
      • B Offline
        broberg Project Sponsor
        last edited by Nov 28, 2016, 11:11 PM

        I can report yes, it was a z-index issue.
        setting the region.fullscreen to z-index -1 made everything clickable.

        But I’ll probably just change the newsfeed to z-index 1
        I used a eventlistener to register the click and change the contents of this.innerhtml from title to description.

        Next up, make it draw a new div and pause the timer for the headlines.

        1 Reply Last reply Reply Quote 0
        • B Offline
          broberg Project Sponsor
          last edited by Nov 29, 2016, 5:38 PM

          Any suggestions on how I pause the updateInterval ?

          I’ve tried just to change the var to another value when clicked, but it doesn’t change the current item interval.

          S 1 Reply Last reply Nov 29, 2016, 10:14 PM Reply Quote 0
          • S Offline
            strawberry 3.141 Project Sponsor Module Developer @broberg
            last edited by Nov 29, 2016, 10:14 PM

            @broberg when you save the interval into a variabke you can stop/clear the interval

            this.interval = setInterval(...);
            
            clearInterval(this.interval);
            

            Please create a github issue if you need help, so I can keep track

            B 1 Reply Last reply Dec 20, 2016, 7:37 PM Reply Quote 0
            • B Offline
              broberg Project Sponsor @strawberry 3.141
              last edited by Dec 20, 2016, 7:37 PM

              @strawberry-3.141 Sorry to bother you with the poking stick, but, I’m having no luck in getting it to work.

              this is the code that updates the newsfeed item

              	scheduleUpdateInterval: function() {
              		var self = this;
              
              		self.updateDom(self.config.animationSpeed);
              
              		setInterval(function() {
              			self.activeItem++;
              			self.updateDom(self.config.animationSpeed);
              		}, this.config.updateInterval);
              	},
              

              This also loads the first feed item when the page loads for the first time.

              how should I implement this in another function to pause/reset the scheduleUpdateInterval function?

              S 1 Reply Last reply Dec 20, 2016, 7:57 PM Reply Quote 0
              • S Offline
                strawberry 3.141 Project Sponsor Module Developer @broberg
                last edited by Dec 20, 2016, 7:57 PM

                @broberg

                scheduleUpdateInterval: function() {
                  var self = this;
                
                  self.updateDom(self.config.animationSpeed);
                
                  self.interval = setInterval(function() {
                    self.activeItem++;
                    self.updateDom(self.config.animationSpeed);
                  }, this.config.updateInterval);
                },
                
                pause: function(){
                  clearInterval(this.interval);
                },
                
                resume: function(){
                  this.scheduleUpdateInterval();
                },
                

                Please create a github issue if you need help, so I can keep track

                B 1 Reply Last reply Dec 20, 2016, 9:55 PM Reply Quote 0
                • B Offline
                  broberg Project Sponsor @strawberry 3.141
                  last edited by Dec 20, 2016, 9:55 PM

                  @strawberry-3.141

                  No go on that either, this.interval is undefined it says.
                  I have to research this some more, it’s giving me a headache.

                  Could it have something to do with the fact that the interval is set in the scheduleUpdateInterval function and it can’t be reached from another function outside that?

                  this.scheduleUpdateInterval(); works, I think. (I get more updates on top of each other if I click several times)

                  S 1 Reply Last reply Dec 20, 2016, 9:56 PM Reply Quote 0
                  • S Offline
                    strawberry 3.141 Project Sponsor Module Developer @broberg
                    last edited by Dec 20, 2016, 9:56 PM

                    @broberg what about this?

                    this.interval = setInterval(function() {
                        self.activeItem++;
                        self.updateDom(self.config.animationSpeed);
                      }, this.config.updateInterval);
                    

                    Please create a github issue if you need help, so I can keep track

                    B 1 Reply Last reply Dec 20, 2016, 10:06 PM Reply Quote 1
                    • B Offline
                      broberg Project Sponsor @strawberry 3.141
                      last edited by Dec 20, 2016, 10:06 PM

                      @strawberry-3.141

                      using that code snippet in the pause function just adds a new item with the updateInterval time,

                      So I can change the interval on the next loaded news item, but not the current :(

                      1 Reply Last reply Reply Quote 0
                      • 1
                      • 2
                      • 1 / 2
                      • 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