Read the statement by Michael Teeuw here.
MMM-ProfileSwitcher, A Profile/User/Layout Switching Module
-
@strawberry-3.141 Yeah seems to be a midori thing, unfortunately I’m using a pi zero so need to use midori as it runs pretty amazing with the pi. Electron really slows it down.
Wondering if there is a way around this at all? Maybe breaking out the arrow functions to normal one might work?
-
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.
-
@Mar that is also an es6 feature try
classes.indexOf(self.current_profile) !== -1
-
@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!
-
@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.
-
@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. -
@tosti007 Thanks for updating your module so quickly! and obviously thanks for taking the time to respond and maintain.
-
@all Thanks to @roramirez we now have Spanish translations! :D
-
@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?
-
@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 theMMM-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