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.

    MMM-ProfileSwitcher, A Profile/User/Layout Switching Module

    Scheduled Pinned Locked Moved Utilities
    userswitchprofilelayoutmodule
    91 Posts 21 Posters 133.3k Views 23 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.
    • M Offline
      Mar @strawberry 3.141
      last edited by

      @strawberry-3.141

      So ive broken out those functions to the following and now get no errors:

      
      *OLD*
                      value = value.map((x) => {
                          return x === true ? translated : x;
                      });
      
      
      *NEW*
                      value = value.map(
                              function(x){
                                      return x === true ? translated :x;
                              }
                      );				
      
      
      
      
      
      *OLD*
                      classes.split(" ").forEach((key) => {
                          if (result[key] === undefined) {
                              result[key] = [];
                          }
      
                          result[key] = result[key].concat(value);
                      });
      
      *NEW*
      				classes.split(" ").forEach(
      					function(key) {
      	                    if (result[key] === undefined) {
      	                        result[key] = [];
      	                    }
      
      	                    result[key] = result[key].concat(value);
      	                }
      	            );
      

      Now the only error i am getting is on line 89

      TypeError: undefined is not a function (evaluating 'classes.includes(self.current_profile)')
      

      But im not sure how to fix this one. And this is the function that decides what to show which could be where Midori cannot parse it properly.

      strawberry 3.141S 1 Reply Last reply Reply Quote 0
      • strawberry 3.141S Offline
        strawberry 3.141 Project Sponsor Module Developer @Mar
        last edited by

        @Mar that is also an es6 feature try classes.indexOf(self.current_profile) !== -1

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

        M 1 Reply Last reply Reply Quote 1
        • M Offline
          Mar @strawberry 3.141
          last edited by Mar

          @strawberry-3.141 Thanks, I couldnt figure that one out.

          return classes.indexOf(self.current_profile) !== -1;
          

          Along with the changes in the previous post I’ve have fully loaded ProfileSwitcher Midori without any errors. It also is showing the correct modules on load (classes = default).

          Thanks for the help through this @strawberry-3-141

          Managed to figure this all out so thanks to everyone!

          1 Reply Last reply Reply Quote 0
          • tosti007T Offline
            tosti007 Module Developer
            last edited by

            @strawberry-3-141 thank you for helping @Mar

            @All @Mar I didn’t know that that browser doesn’t support those features. I will rewite those parts so then it should work out of the box.

            If there is anything don't hesitate to contact me!
            ProfileSwitcher, TouchNotifications

            1 Reply Last reply Reply Quote 1
            • tosti007T Offline
              tosti007 Module Developer
              last edited by

              @all I pushed a small update so that older browers should also be able to use this module.
              @Mar They are the same changes that you made.

              If there is anything don't hesitate to contact me!
              ProfileSwitcher, TouchNotifications

              M 1 Reply Last reply Reply Quote 1
              • M Offline
                Mar @tosti007
                last edited by

                @tosti007 Thanks for updating your module so quickly! and obviously thanks for taking the time to respond and maintain.

                1 Reply Last reply Reply Quote 1
                • tosti007T Offline
                  tosti007 Module Developer
                  last edited by

                  @all Thanks to @roramirez we now have Spanish translations! :D

                  If there is anything don't hesitate to contact me!
                  ProfileSwitcher, TouchNotifications

                  1 Reply Last reply Reply Quote 1
                  • M Offline
                    mortenbirkelund
                    last edited by

                    @tosti007 When switching between profiles, there is a short timespan where both the modules of the old profile and of the new profile, is present at the screen at the same time. Is there a way to ensure that the old modules fadeout first, and once they are gone, the new modules will fade in?

                    tosti007T 1 Reply Last reply Reply Quote 0
                    • tosti007T Offline
                      tosti007 Module Developer @mortenbirkelund
                      last edited by tosti007

                      @mortenbirkelund Yes there is, however that would mean that the code has to loop over the modules twice, which isn’t a great thing to do performance wise. I will write a bit of code that does it for you and post it here soon.

                      Edit: here is the code, all you need to do it replace the whole set_profile function inside the MMM-ProfileSwitcher.js file.

                      The code:

                      // Change the current layout into the new layout given the current profile
                      set_profile: function (useEveryone) {
                          var self = this;
                      
                          var options = {};
                          if (self.config.useLockStrings) {
                              options.lockString = self.identifier;
                          }
                      
                          MM.getModules().exceptWithClass(self.config.ignoreModules).enumerate(function (module) {
                              if (!self.isVisible(self, useEveryone, module.data.classes)) {
                                  module.hide(self.config.animationDuration, function () {
                                      Log.log(module.name + " is hidden.");
                                  }, options);
                              }
                          });
                      
                          MM.getModules().exceptWithClass(self.config.ignoreModules).enumerate(function (module) {
                              if (self.isVisible(self, useEveryone, module.data.classes)) {
                                  module.show(self.config.animationDuration, function () {
                                      Log.log(module.name + " is shown.");
                                  }, options);
                              }
                          });
                      },
                      

                      Note: Once again this is not so great performance wise, but I dont think you will notice much of it

                      If there is anything don't hesitate to contact me!
                      ProfileSwitcher, TouchNotifications

                      M 2 Replies Last reply Reply Quote 1
                      • M Offline
                        mortenbirkelund @tosti007
                        last edited by

                        @tosti007 Thank you very much. Very kind of you to create the code for me.

                        I am new to using Git. How do i alter your my copy of your module, without risking that it will be overwritten on an update? Or is that not something that i should be concerned about?

                        tosti007T 1 Reply Last reply Reply Quote 0
                        • 1
                        • 2
                        • 3
                        • 4
                        • 5
                        • 9
                        • 10
                        • 3 / 10
                        • 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