mirror of
https://github.com/edward-shen/MMM-pages.git
synced 2024-11-24 11:14:29 -08:00
add support for different delays for different pages
This commit is contained in:
parent
a67625905c
commit
17f820b923
2 changed files with 40 additions and 16 deletions
50
MMM-Pages.js
50
MMM-Pages.js
|
@ -8,6 +8,7 @@ Module.register('MMM-Pages', {
|
|||
* the page indicator by default, in case people actually want to use the
|
||||
* sister module. We also don't rotate out modules by default.
|
||||
*/
|
||||
|
||||
defaults: {
|
||||
modules: [],
|
||||
excludes: [], // Keep for compatibility
|
||||
|
@ -20,8 +21,9 @@ Module.register('MMM-Pages', {
|
|||
rotationDelay: 10000,
|
||||
homePage: 0,
|
||||
useLockString: true,
|
||||
pageTimeout: []
|
||||
},
|
||||
|
||||
timer:null,
|
||||
/**
|
||||
* Apply any styles, if we have any.
|
||||
*/
|
||||
|
@ -236,35 +238,54 @@ Module.register('MMM-Pages', {
|
|||
resetTimerWithDelay: function (delay) {
|
||||
if (this.config.rotationTime > 0) {
|
||||
// This timer is the auto rotate function.
|
||||
clearInterval(this.timer);
|
||||
if(this.timer){
|
||||
(this.config.pageTimeout.length?clearTimeout:clearInterval)(this.timer);
|
||||
this.timer=null
|
||||
}
|
||||
// This is delay timer after manually updating.
|
||||
clearInterval(this.delayTimer);
|
||||
clearTimeout(this.delayTimer);
|
||||
let rotation_timeout=this.config.rotationTime
|
||||
if(this.config.pageTimeout.length){
|
||||
for(let pageInfo of this.config.pageTimeout){
|
||||
if((pageInfo.pageNumber) -1 == this.curPage){
|
||||
rotation_timeout= pageInfo.timeout
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
const self = this;
|
||||
|
||||
this.delayTimer = setTimeout(() => {
|
||||
self.timer = setInterval(() => {
|
||||
self.timer = (this.config.pageTimeout.length?setTimeout:setInterval)(() => {
|
||||
// Inform other modules and page change.
|
||||
// MagicMirror automatically excludes the sender from receiving the
|
||||
// message, so we need to trigger it for ourselves.
|
||||
self.sendNotification('PAGE_INCREMENT');
|
||||
self.notificationReceived('PAGE_INCREMENT');
|
||||
}, self.config.rotationTime);
|
||||
}, delay);
|
||||
}, rotation_timeout);
|
||||
}, delay, this);
|
||||
} else if (this.config.rotationHomePage > 0) {
|
||||
// This timer is the auto rotate function.
|
||||
clearInterval(this.timer);
|
||||
(this.config.pageTimeout.length?clearTimeout:clearInterval)(this.timer);
|
||||
// This is delay timer after manually updating.
|
||||
clearInterval(this.delayTimer);
|
||||
clearTimeout(this.delayTimer);
|
||||
let rotation_timeout=this.config.rotationHomePage
|
||||
if(this.config.pageTimeout.length){
|
||||
for(let pageInfo of this.config.pageTimeout){
|
||||
if((pageInfo.pagenumber) -1 == this.curPage){
|
||||
rotation_timeout= pageInfo.timeout
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
const self = this;
|
||||
|
||||
this.delayTimer = setTimeout(() => {
|
||||
self.timer = setInterval(() => {
|
||||
self.timer = (this.config.pageTimeout.length?setTimeout:setInterval)(() => {
|
||||
// Inform other modules and page change.
|
||||
// MagicMirror automatically excludes the sender from receiving the
|
||||
// message, so we need to trigger it for ourselves.
|
||||
self.sendNotification('PAGE_CHANGED', 0);
|
||||
self.notificationReceived('PAGE_CHANGED', self.config.homePage);
|
||||
}, self.config.rotationHomePage);
|
||||
}, rotation_timeout);
|
||||
}, delay);
|
||||
}
|
||||
},
|
||||
|
@ -284,8 +305,9 @@ Module.register('MMM-Pages', {
|
|||
} else {
|
||||
Log.log(`[Pages]: ${stateBaseString}ing rotation`);
|
||||
if (!isRotating) {
|
||||
clearInterval(this.timer);
|
||||
clearInterval(this.delayTimer);
|
||||
|
||||
this.timer_clear_function(this.timer);
|
||||
clearTimeout(this.delayTimer);
|
||||
} else {
|
||||
this.resetTimerWithDelay(this.rotationDelay);
|
||||
}
|
||||
|
|
|
@ -42,7 +42,7 @@ cd ~/MagicMirror/modules
|
|||
Clone this repository:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/edward-shen/MMM-pages.git
|
||||
git clone https://github.com/sdetweil/MMM-pages.git
|
||||
```
|
||||
|
||||
Configure the module in your config.js file.
|
||||
|
@ -154,6 +154,8 @@ if u want a modules content on multiple pages the classes would list those page
|
|||
| `rotationFirstPage` | *NA* | *NA* | **Deprecated**. Use `rotationHomePage` instead. |
|
||||
| `homePage` | `int` | `0` | Which page index is the home page. If none is set, this returns to the leftmost page instead. |
|
||||
| `useLockString` | `bool` | `true` | Whether or not to use a lock string to show or hide pages. If disabled, other modules may override when modules may be shown. _Advanced users only. Only override this if you know what you're doing._
|
||||
| `pageTimeout ` | `[]` | `{pageNumber:x,timeout:nnnn}`| array of structures, enable different timeouts for different pages
|
||||
|||| pageNumber starts at 1 for the first page, timeout is in milliseconds
|
||||
|
||||
For the `module` configuration option, the first element of the outer array
|
||||
should consist of elements that should be on the first page. The second element
|
||||
|
|
Loading…
Reference in a new issue