# MagicMirror Helper Methods

The MagicMirror core object MM has some handy methods to help you control your and other modules. Most of the MM methods are available via the convenience methods on the Module instance.

# Module selection

The only additional method available for your module, is the feature to retrieve references to other modules. This can be used to hide and show other modules.

# MM.getModules()

Returns Array - An array with module instances.

To make a selection of all currently loaded module instances, run the MM.getModules() method. It will return an array with all currently loaded module instances. The returned array has a lot of filtering methods. See below for more info.

Note: This method returns an empty array if not all modules are started yet. Wait for the ALL_MODULES_STARTED notification.

# .withClass(classnames)

classnames String or Array - The class names on which you want to filter. Returns Array - An array with module instances.

If you want to make a selection based on one or more class names, use the withClass method on a result of the MM.getModules() method. The argument of the withClass(classname) method can be an array, or space separated string.

Examples:

var modules = MM.getModules().withClass("classname");
var modules = MM.getModules().withClass("classname1 classname2");
var modules = MM.getModules().withClass(["classname1", "classname2"]);

# .exceptWithClass(classnames)

classnames String or Array - The class names of the modules you want to remove from the results. Returns Array - An array with module instances.

If you to remove some modules from a selection based on a classname, use the exceptWithClass method on a result of the MM.getModules() method. The argument of the exceptWithClass(classname) method can be an array, or space separated string.

Examples:

var modules = MM.getModules().exceptWithClass("classname");
var modules = MM.getModules().exceptWithClass("classname1 classname2");
var modules = MM.getModules().exceptWithClass(["classname1", "classname2"]);

# .exceptModule(module)

module Module Object - The reference to a module you want to remove from the results. Returns Array - An array with module instances.

If you to remove a specific module instance from a selection based on a classname, use the exceptWithClass method on a result of the MM.getModules() method. This can be helpful if you want to select all module instances except the instance of your module.

Examples:

var modules = MM.getModules().exceptModule(this);

Of course, you can combine all of the above filters:

Example:

var modules = MM.getModules()
  .withClass("classname1")
  .exceptwithClass("classname2")
  .exceptModule(aModule);

# .enumerate(callback)

callback Function(module) - The callback run on every instance.

If you want to perform an action on all selected modules, you can use the enumerate function:

MM.getModules().enumerate(function (module) {
  Log.log(module.name);
});

Example: To hide all modules except your module instance, you could write something like:

Module.register("modulename", {
  //...
  notificationReceived: function (notification, payload, sender) {
    if (notification === "DOM_OBJECTS_CREATED") {
      MM.getModules()
        .exceptModule(this)
        .enumerate(function (module) {
          module.hide(1000, function () {
            //Module hidden.
          });
        });
    }
  },
  //...
});