Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/jclarke0000/MMM-MyCalendar

Alternative calendar module for MagicMirror.
https://github.com/jclarke0000/MMM-MyCalendar

Last synced: 4 months ago
JSON representation

Alternative calendar module for MagicMirror.

Lists

README

        

# Module: MMM-MyCalendar

This calendar module is functionally the same as the default calendar app, however its presentation is different.

This module displays events from a public .ical calendar. It can combine multiple calendars.

## Installation

1. Navigate to the `MagicMirror/modules` directory.
2. Execute `git clone https://github.com/jclarke0000/MMM-MyCalendar.git`
3. Configure the module as per below
4. Restart MagicMirror

## Using the module

**NOTE: Some configuration parameters have changed. See below if you are updating from a previous version.**

To use this module, add it to the modules array in the `config/config.js` file:
````javascript
modules: [
{
module: "MMM-MyCalendar",
position: "top_left", // This can be any of the regions. Best results in left or right regions.
config: {
// The config property is optional.
// If no config is set, an example calendar is shown.
// See 'Configuration options' for more information.
}
}
]
````

## Configuration options

The following properties can be configured:

**Note** if you are updating, some of the configuration options have changed, as follows:

* `timeFormat` no longer refers to whether you would like to see 'relative' or 'absolute' dates. You now use `useRelativeDates` and specifiy either `true` or `false`.
* `timeFormat` is now used to specify the display format for time (e.g.: `"h:mm A"` for 12 hour time, `"HH:mm"` for 24 hour time, etc.)
* `dateFormat` is now just used for specifying how date portions of the display should format (e.g.: `"MMMM D"` for January 1, `"DD-MMM"` for 01-Jan, etc.).
* `dayOfWeekFormat` is new and allows you to specify a format for weekday names (e.g. `"dddd"` for Tuesday, `"ddd"` for Tue, etc.)
* `joiningWord` is new and allows you to specify the word to be displayed between the day/date and time of the event (e.g.: specify `"at"` for Tuesday `at` 1:15 PM). If you do not want a joining word, then specify an empty string (i.e.: `""`).

| Option | Description
| ---------------------------- | -----------
| `maximumEntries` | The maximum number of events shown. / **Possible values:** `0` - `100`
**Default value:** `10`
| `maximumNumberOfDays` | The maximum number of days in the future.

**Default value:** `365`
| `maxTitleLength` | The maximum title length.

**Possible values:** `10` - `50`
**Default value:** `25`
| `fetchInterval` | How often does the content needs to be fetched? (Milliseconds)

**Possible values:** `1000` - `86400000`
**Default value:** `300000` (5 minutes)
| `animationSpeed` | Speed of the update animation. (Milliseconds)

**Possible values:**`0` - `5000`
**Default value:** `2000` (2 seconds)
| `fade` | Fade the future events to black. (Gradient)

**Possible values:** `true` or `false`
**Default value:** `true`
| `fadePoint` | Where to start fade?

**Possible values:** `0` (top of the list) - `1` (bottom of list)
**Default value:** `0.25`
| `calendars` | The list of calendars.

**Possible values:** An array, see _calendar configuration_ below.
**Default value:** _An example calendar._
| `titleReplace` | An object of textual replacements applied to the tile of the event. This allow to remove or replace certains words in the title.

**Example:** `{'Birthday of ' : '', 'foo':'bar'}`
**Default value:** `{ "De verjaardag van ": "", "'s birthday": "" }`
| `displayRepeatingCountTitle` | Show count title for yearly repeating events (e.g. "X. Birthday", "X. Anniversary")

**Possible values:** `true` or `false`
**Default value:** `false`
| `dayOfWeekFormat` | Format to use for weekday names.

**Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/)
**Default value:** `dddd` (e.g. Tuesday)
| `timeFormat` | Format to use for time display.

**Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/)
**Default value:** `h:mm A` (e.g. 1:15 PM)
| `dateFormat` | Format to use for the date of events (when using absolute dates)

**Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/)
**Default value:** `MMMM D` (e.g. January 18)
| `joiningWord` | Word to display between the day/date and the time of the event (e.g.: Tuesday `at` 1:15 PM). If you do not want one, you need to explicitly specify an epmty string (i.e.: `""`)
**Default value:** `at`
| `useRelativeDates` | Display event times as relative time (`true`) or absolute dates (`false`)

**Possible values:** `true` or `false`
**Default value:** `false`
**NOTE** This used to be named `timeFormat`, but I felt that din't make a lot of sense. So `timeFormat` is now used to specify the format for time display (as one would expect).
| `getRelative` | How much time (in hours) should be left until calendar events start getting relative?

**Possible values:** `0` (events stay absolute) - `48` (48 hours before the event starts)
**Default value:** `6`
| `urgency` | When using a timeFormat of `absolute`, the `urgency` setting allows you to display events within a specific time frame as `relative`. This allows events within a certain time frame to be displayed as relative (in xx days) while others are displayed as absolute dates

**Possible values:** a positive integer representing the number of days for which you want a relative date, for example `7` (for 7 days)

**Default value:** `7`
| `broadcastEvents` | If this property is set to true, the calendar will broadcast all the events to all other modules with the notification message: `CALENDAR_EVENTS`. The event objects are stored in an array and contain the following fields: `title`, `startDate`, `endDate`, `fullDayEvent`, `location` and `geo`.

**Possible values:** `true`, `false`

**Default value:** `true`
| `hidePrivate` | Hides private calendar events.

**Possible values:** `true` or `false`
**Default value:** `false`
| `excludedEvents` | An array of words / phrases from event titles that will be excluded from being shown.

**Example:** `['Birthday', 'Hide This Event']`
**Default value:** `[]`
| `showLocation` | Whether to show the event's location.

**Possible values:** `true` or `false`.
**Default value:** `true`

### Calendar configuration

The `calendars` property contains an array of the configured calendars.
The `colored` property gives the option for an individual color for each calendar.

#### Default value:
````javascript
config: {
colored: false,
calendars: [
{
url: 'http://www.calendarlabs.com/templates/ical/US-Holidays.ics',
symbol: 'calendar',
auth: {
user: 'username',
pass: 'superstrongpassword',
method: 'basic'
}
},
],
}
````

#### Calendar configuration options:
| Option | Description
| --------------------- | -----------
| `url` | The url of the calendar .ical. This property is required.

**Possible values:** Any public accessble .ical calendar.
| `color` | The font color of an event from this calendar. This property should be set if the config is set to colored: true.

**Possible values:** HEX, RGB or RGBA values (#efefef, rgb(242,242,242), rgba(242,242,242,0.5)).
| `repeatingCountTitle` | The count title for yearly repating events in this calendar.

**Example:** `'Birthday'`
| `maximumEntries` | The maximum number of events shown. Overrides global setting. **Possible values:** `0` - `100`
| `maximumNumberOfDays` | The maximum number of days in the future. Overrides global setting
| `auth` | The object containing options for authentication against the calendar.

#### Calendar authentication options:
| Option | Description
| --------------------- | -----------
| `user` | The username for HTTP authentication.
| `pass` | The password for HTTP authentication. (If you use Bearer authentication, this should be your BearerToken.)
| `method` | Which authentication method should be used. HTTP Basic, Digest and Bearer authentication methods are supported. Basic authentication is used by default if this option is omitted. **Possible values:** `digest`, `basic`, `bearer` **Default value:** `basic`