{"id":13830576,"url":"https://github.com/heskja/MMM-CalendarWeek","last_synced_at":"2025-07-09T12:30:25.008Z","repository":{"id":34759452,"uuid":"145740533","full_name":"heskja/MMM-CalendarWeek","owner":"heskja","description":"Alternative calendar module for MagicMirror.","archived":false,"fork":false,"pushed_at":"2022-02-16T20:26:56.000Z","size":236,"stargazers_count":54,"open_issues_count":31,"forks_count":21,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-20T12:09:47.850Z","etag":null,"topics":["magicmirror2"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heskja.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-22T17:21:00.000Z","updated_at":"2024-10-16T12:23:50.000Z","dependencies_parsed_at":"2022-08-08T02:00:29.068Z","dependency_job_id":null,"html_url":"https://github.com/heskja/MMM-CalendarWeek","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/heskja/MMM-CalendarWeek","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heskja%2FMMM-CalendarWeek","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heskja%2FMMM-CalendarWeek/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heskja%2FMMM-CalendarWeek/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heskja%2FMMM-CalendarWeek/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heskja","download_url":"https://codeload.github.com/heskja/MMM-CalendarWeek/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heskja%2FMMM-CalendarWeek/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264458040,"owners_count":23611471,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["magicmirror2"],"created_at":"2024-08-04T10:01:02.392Z","updated_at":"2025-07-09T12:30:24.635Z","avatar_url":"https://github.com/heskja.png","language":"JavaScript","funding_links":[],"categories":["Calendar"],"sub_categories":[],"readme":"# Module: MMM-CalendarWeek\nThis calendar module for [Magic Mirror²](https://github.com/MichMich/MagicMirror) is functionally the same as the default calendar app, however its presentation is different as it uses week view.\nThis module displays events from a public .ical calendar. It can combine multiple calendars.\nNote that calendars may not contain any entry before 1st January 1970, otherwise the calendar won't be displayed and the module will crash.\n\n![ScreenShot](/screenshots/mm.png)\n\n## Installation\n\n1. Navigate to the `MagicMirror/modules` directory.\n2. Execute `git clone https://github.com/heskja/MMM-CalendarWeek`\n3. Configure the module as per below\n4. Restart MagicMirror\n\n## Using the module\n\nTo use this module, add it to the modules array in the `config/config.js` file:\n````javascript\nmodules: [\n\t{\n\t\tmodule: \"MMM-CalendarWeek\",\n\t\tposition: \"bottom_bar\",\t// This can be any of the regions. Best results in bottom region.\n\t\tconfig: {\n\t\t\t// The config property is optional.\n\t\t\t// If no config is set, an example calendar is shown.\n\t\t\t// See 'Configuration options' for more information.\n\t\t}\n\t}\n]\n````\n\n## Configuration options\n\nThe following properties can be configured:\n\n\n| Option                       | Description\n| ---------------------------- | -----------\n| `calendarTitle`              | Adds a centralized title / header above the calendar. / **Possible values:** `Any text` or `false` (off) \u003cbr\u003e **Default value:** `false`\n| `maximumEntries`             | The maximum number of events shown. / **Possible values:** `0` - `100` \u003cbr\u003e **Default value:** `20`\n| `maximumNumberOfDays`        | The maximum number of days in the future. \u003cbr\u003e\u003cbr\u003e **Default value:** `4`\n| `maximumDaysPerLine`         | The maximum number of days displayed per line. If set less than `maximumNumberOfDays`, it will display multiple rows with events.\u003cbr\u003e\u003cbr\u003e **Default value:** `maximumNumberOfDays`\n| `displaySymbol`              | Display a symbol in front of an entry. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `true`\n| `displaySymbol`              | Display a symbol in front of an entry. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `true`\n| `showEndDate`                | Display event end date. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `true`\n| `allowDuplicate`             | Display events from multiple calendars with matching title and start date. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `maxTitleLength`             | The maximum title length. \u003cbr\u003e\u003cbr\u003e **Possible values:** `10` - `50` \u003cbr\u003e **Default value:** `25`\n| `hideEmptyDays`              | Hide days without events. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `wrapEvents`                 | Wrap event titles to multiple lines. Breaks lines at the length defined by `maxTitleLength`. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `fetchInterval`              | How often does the content needs to be fetched? (Milliseconds) \u003cbr\u003e\u003cbr\u003e **Possible values:** `1000` - `86400000` \u003cbr\u003e **Default value:** `300000` (5 minutes)\n| `animationSpeed`             | Speed of the update animation. (Milliseconds) \u003cbr\u003e\u003cbr\u003e **Possible values:** `0` - `5000` \u003cbr\u003e **Default value:** `2000` (2 seconds)\n| `tableClass`                  | Name of the classes issued from `main.css`. \u003cbr\u003e\u003cbr\u003e **Possible values:** xsmall, small, medium, large, xlarge. \u003cbr\u003e **Default value:** _small._\n| `calendars`                  | The list of calendars. \u003cbr\u003e\u003cbr\u003e **Possible values:** An array, see _calendar configuration_ below. \u003cbr\u003e **Default value:** _An example calendar._\n| `titleReplace`               | An object of textual replacements applied to the tile of the event. This allow to remove or replace certains words in the title. \u003cbr\u003e\u003cbr\u003e **Example:** `{'Birthday of ' : '', 'foo':'bar'}` \u003cbr\u003e **Default value:** `{\t\"De verjaardag van \": \"\", \"'s birthday\": \"\"\t}`\n| `displayRepeatingCountTitle` | Show count title for yearly repeating events (e.g. \"X. Birthday\", \"X. Anniversary\") \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `displayLocation` | Display the event location, if set in the calendar event. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `displayDescription` | Display the event description, if set in the calendar event. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `dateFormat`                 | Format to use for the date of events (when using absolute dates) \u003cbr\u003e\u003cbr\u003e **Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/) \u003cbr\u003e **Default value:** `dddd Do MMM` (e.g. Wednesday 21. aug)\n| `fullDayEventDateFormat`     | Format to use for the date of full day events (when using absolute dates) \u003cbr\u003e\u003cbr\u003e **Possible values:** See [Moment.js formats](http://momentjs.com/docs/#/parsing/string-format/) \u003cbr\u003e **Default value:** `MMM Do` (e.g. Jan 18th)\n| `timeFormat`                 | Display event times as absolute dates, or relative time, or using absolute date headers with times for each event next to it \u003cbr\u003e\u003cbr\u003e **Possible values:** `absolute` or `relative` or `dateheaders` \u003cbr\u003e **Default value:** `dateheaders`\n| `getRelative`                | How much time (in hours) should be left until calendar events start getting relative? \u003cbr\u003e\u003cbr\u003e **Possible values:** `0` (events stay absolute) - `48` (48 hours before the event starts) \u003cbr\u003e **Default value:** `6`\n| `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 \u003cbr\u003e\u003cbr\u003e **Possible values:** a positive integer representing the number of days for which you want a relative date, for example `7` (for 7 days) \u003cbr\u003e\u003cbr\u003e **Default value:** `7`\n| `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`. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true`, `false` \u003cbr\u003e\u003cbr\u003e **Default value:** `true`\n| `hidePrivate`                | Hides private calendar events. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `hideOngoing`                | Hides calendar events that have already started. \u003cbr\u003e\u003cbr\u003e **Possible values:** `true` or `false` \u003cbr\u003e **Default value:** `false`\n| `excludedEvents`             | An array of words / phrases from event titles that will be excluded from being shown. \u003cbr\u003e\u003cbr\u003eAdditionally advanced filter objects can be passed in. Below is the configuration for the advance filtering object.\u003cbr\u003e**Required**\u003cbr\u003e`filterBy` - string used to determine if filter is applied.\u003cbr\u003e**Optional**\u003cbr\u003e`until` - Time before an event to display it  Ex: [`'3 days'`, `'2 months'`, `'1 week'`]\u003cbr\u003e`caseSensitive` - By default, excludedEvents are case insensitive, set this to true to enforce case sensitivity\u003cbr\u003e`regex` - set to `true` if filterBy is a regex. For those not familiar with regex it is used for pattern matching, please see [here](https://regexr.com/) for more info.\u003cbr\u003e\u003cbr\u003e **Example:** `['Birthday', 'Hide This Event', {filterBy: 'Payment', until: '6 days', caseSensitive: true}, {filterBy: '^[0-9]{1,}.*', regex: true}]` \u003cbr\u003e **Default value:** `[]`\n\n### Calendar configuration\n\nThe `calendars` property contains an array of the configured calendars.\nThe `colored` property gives the option for an individual color for each calendar.\nThe `coloredSymbolOnly` property will apply color to the symbol only, not the whole line. This is only applicable when `colored` is also enabled.\n\n#### Default value:\n````javascript\nconfig: {\n\tcolored: false,\n\tcoloredSymbolOnly: false,\n\tcalendars: [\n\t\t{\n\t\t\turl: 'http://www.calendarlabs.com/templates/ical/US-Holidays.ics',\n\t\t\tsymbol: 'calendar',\n\t\t\tauth: {\n\t\t\t    user: 'username',\n\t\t\t    pass: 'superstrongpassword',\n\t\t\t    method: 'basic'\n\t\t\t}\n\t\t},\n\t],\n}\n````\n\n#### Calendar configuration options:\n| Option                | Description\n| --------------------- | -----------\n| `url`\t                | The url of the calendar .ical. This property is required. \u003cbr\u003e\u003cbr\u003e **Possible values:** Any public accessble .ical calendar.\n| `symbol`              | The symbol to show in front of an event. This property is optional. \u003cbr\u003e\u003cbr\u003e **Possible values:** See [Font Awesome](http://fontawesome.io/icons/) website. To have multiple symbols you can define them in an array e.g. `[\"calendar\", \"plane\"]`\n| `color`              | The font color of an event from this calendar. This property should be set if the config is set to colored: true. \u003cbr\u003e\u003cbr\u003e **Possible values:** HEX, RGB or RGBA values (#efefef, rgb(242,242,242), rgba(242,242,242,0.5)).\n| `repeatingCountTitle`\t| The count title for yearly repating events in this calendar.  \u003cbr\u003e\u003cbr\u003e **Example:** `'Birthday'`\n| `maximumEntries`      | The maximum number of events shown.  Overrides global setting. **Possible values:** `0` - `100`\n| `maximumNumberOfDays` | The maximum number of days in the future.  Overrides global setting\n| `auth`                | The object containing options for authentication against the calendar.\n\n\n#### Calendar authentication options:\n| Option                | Description\n| --------------------- | -----------\n| `user`                | The username for HTTP authentication.\n| `pass`                | The password for HTTP authentication. (If you use Bearer authentication, this should be your BearerToken.)\n| `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`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheskja%2FMMM-CalendarWeek","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheskja%2FMMM-CalendarWeek","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheskja%2FMMM-CalendarWeek/lists"}