Skip to content

Commit bb0f6f8

Browse files
authored
Merge pull request #9 from nealterrell/fromnow
Add two options copied from CalendarExt2 View options: fromNow and transform
2 parents 6f805ae + f9885f8 commit bb0f6f8

2 files changed

Lines changed: 27 additions & 7 deletions

File tree

MMM-CalendarExtTimeline.js

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ Module.register("MMM-CalendarExtTimeline",{
2020
table_title_format: "ddd, MMM Do",
2121
begin_hour: 8,
2222
end_hour: 20,
23+
fromNow: 0,
2324
time_display_section_count: 6,
2425
time_display_section_format: "hh:mm a",
2526
calendars: [],
@@ -48,8 +49,8 @@ Module.register("MMM-CalendarExtTimeline",{
4849
this.endTime = moment().startOf("hour")
4950
.add(this.config.end_hour, "hours").startOf("hour")
5051
} else {
51-
this.startTime = moment().hour(this.config.begin_hour).startOf("hour")
52-
this.endTime = moment().hour(this.config.end_hour).startOf("hour")
52+
this.startTime = moment().hour(this.config.begin_hour).startOf("hour").add(this.config.fromNow, "days")
53+
this.endTime = moment().hour(this.config.end_hour).startOf("hour").add(this.config.fromNow, "days")
5354
}
5455
this.hour_diff_sec = Math.round(
5556
this.endTime.diff(this.startTime, "seconds")
@@ -65,7 +66,7 @@ Module.register("MMM-CalendarExtTimeline",{
6566
var frameHeader = document.createElement("thead")
6667
var frameHeaderRow = document.createElement("tr")
6768
var headerTitleCell = document.createElement("th")
68-
headerTitleCell.innerHTML = moment().format(this.config.table_title_format)
69+
headerTitleCell.innerHTML = this.startTime.format(this.config.table_title_format)
6970
headerTitleCell.className = "titleCol"
7071
var headerTimeCell = document.createElement("th")
7172
headerTimeCell.className = "timeCol"
@@ -288,20 +289,25 @@ Module.register("MMM-CalendarExtTimeline",{
288289

289290
updateRequest2: function() {
290291
var payload = {
291-
filter: (e) => {
292-
var from = moment().startOf("day").format("X")
293-
var to = moment().endOf("day").format("X")
292+
filter: (e) => {
293+
var from = moment().startOf("day").add(this.config.fromNow, 'days').format("X")
294+
var to = moment().endOf("day").add(this.config.fromNow, 'days').format("X")
294295
if (this.names.indexOf(e.calendarName) < 0) return false
295296
if (e.startDate > to || e.endDate < from) return false
296297
return true
297298
},
298-
callback: (events) => {
299+
callback: (events) => {
299300
if (events.length > 0) {
300301
for (i = 0; i < events.length; i++) {
301302
events[i].name = events[i].calendarName
302303
events[i].startDate = events[i].startDate * 1000
303304
events[i].endDate = events[i].endDate * 1000
304305
events[i].styleName = events[i].className
306+
307+
if (typeof this.config.transform == "function") {
308+
var ev = Object.assign({}, events[i])
309+
events[i] = this.config.transform(ev)
310+
}
305311
}
306312
var payload = {
307313
message: "SCHEDULE_FOUND",

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ git clone https://github.com/eouia/MMM-CalendarExtTimeline
2929
table_title_format: "ddd, MMM Do",
3030
begin_hour: 0, //ignored when you set type to 'dynamic'
3131
end_hour: 6, //how many hours to show.
32+
fromNow: 0, // add this many days to today's current date, e.g., 1 is tomorrow, -1 is yesterday
3233
time_display_section_count: 6,
3334
time_display_section_format: "HH:mm",
3435
calendars: ["your calendar name", "another name"] //in your `MMM-CalendarExt` configuration
@@ -57,6 +58,19 @@ end_hour: 6,
5758
If current time be 13:45, This would show schedules which goes from 13:00 to 19:00. The view will be changed automatically by time.
5859
`begin_hour` will be ignored when type is set to `dynamic`.
5960

61+
### transform
62+
See [Transforming in MMM-CalendarExt2](https://github.com/MMM-CalendarExt2/MMM-CalendarExt2/blob/master/docs/Filtering-and-Sorting.md#transforming). A `transform` key can be added to the MMM-CalendarExtTimeline config in the same way, for example:
63+
64+
```javascript
65+
transform: (event) => {
66+
if (event.title.includes("Meeting")) {
67+
event.styleName = "meeting-style" // Change the CSS class name to highlight meetings
68+
}
69+
return event
70+
}
71+
```
72+
73+
6074
### I just want to display only this module, not `MMM-CalendarExt` ###
6175
In your configuration of `MMM-CalendarExt`, modify this.
6276
```javascript

0 commit comments

Comments
 (0)