Compare commits

..

77 Commits

Author SHA1 Message Date
Michael Teeuw
b8167f89e5 Merge pull request #448 from MichMich/develop
Release 2.0.5
2016-09-20 16:41:12 +02:00
Michael Teeuw
c916472b22 Release 2.0.5 2016-09-20 16:32:45 +02:00
Michael Teeuw
bdfe7c5e69 Merge pull request #447 from valmassoi/develop
Fix default weather forecast module api URL
2016-09-19 15:27:32 +02:00
valmassoi
749475799a Fix default weather forecast module api URL 2016-09-18 10:54:20 -07:00
Michael Teeuw
daf9c807b5 Merge pull request #446 from contra/patch-1
fix typo
2016-09-18 08:42:03 +02:00
contra
5dfecfdee3 fix typo 2016-09-17 17:54:38 -04:00
Michael Teeuw
d267c03ee2 Merge pull request #435 from nhubbard/develop
Add all the linters!
2016-09-13 09:33:06 +02:00
Michael Teeuw
864e3c7a50 Merge pull request #437 from andyipod1437/develop
Able to turn off and on the date display the clock module.
2016-09-11 21:16:07 +02:00
Andrew Chumchal
747e1a818d Able to turn off and on the clock module 2016-09-11 08:14:28 -07:00
Andrew Chumchal
f468dbf427 Update CHANGELOG.md 2016-09-11 08:04:33 -07:00
Nicholas Hubbard
88572e90d4 Add all the linters 2016-09-10 16:41:57 -04:00
Michael Teeuw
41fc7dd73d Merge pull request #434 from nhubbard/develop
Clean Up the Contributing Documentation and Process: An Opera, Reincarnated
2016-09-09 08:56:34 +02:00
Nicholas Hubbard
c87c588c79 Clean Up the Contributing Documentation and Process: Part VII.LXVI.IV
* Fix yet another out-of-the-blue error that Stylelint found.
2016-09-08 16:00:48 -04:00
Nicholas Hubbard
5ab4b57411 Clean Up the Contributing Documentation and Process: Part VII.LXVI.III
* Fix the errors that popped up out of the blue from Stylelint.
2016-09-08 15:57:25 -04:00
Michael Teeuw
3c936c6957 Merge pull request #433 from icewind1991/webcal-auth
add support for http basic auth for calendars
2016-09-08 21:54:53 +02:00
Nicholas Hubbard
0ca903a146 Clean Up the Contributing Documentation and Process: Part VII.LXVI.II
* Fix the indentation in the clock CSS.
2016-09-08 15:51:58 -04:00
Nicholas Hubbard
4e91919990 Clean Up the Contributing Documentation and Process: Part VII.LXVI.I
* Fix the StyleLint config to allow the empty blocks in the clock module CSS.
2016-09-08 15:49:24 -04:00
Nicholas Hubbard
e023a68780 Clean Up the Contributing Documentation and Process: Part VII.LXVI
* Fix the issues in css/main.css.
2016-09-08 15:47:16 -04:00
Nicholas Hubbard
17452cd5b6 Clean Up the Contributing Documentation and Process: Part VII.XXXIII
* Fix the css/custom.css issues.
2016-09-08 15:44:43 -04:00
Nicholas Hubbard
c76f2c8483 Clean Up the Contributing Documentation and Process: Part VII
* Fix the globbing error in the previous commits.
2016-09-08 15:41:12 -04:00
Robin Appelman
90207f9b68 add support for http basic auth for calendars 2016-09-08 21:29:17 +02:00
Nicholas Hubbard
0ec5371b61 Clean Up the Contributing Documentation and Process: Part VII
* Update the changelog to mention my changes.
2016-09-08 15:26:50 -04:00
Nicholas Hubbard
8549aeb466 Clean Up the Contributing Documentation and Process: Part VI
* Alter the pull request template to look a little better.
2016-09-08 15:24:52 -04:00
Nicholas Hubbard
504d3cd131 Clean Up the Contributing Documentation and Process: Part V
* Replace the contribution instructions with the ones from CONTRIBUTING.md.
2016-09-08 15:23:45 -04:00
Nicholas Hubbard
83ed298eba Clean Up the Contributing Documentation and Process: Part IV
* Replace `postcss:lint` with `stylelint`.
* Update the contribution instructions.
2016-09-08 15:22:40 -04:00
Nicholas Hubbard
a90f2cb156 Clean Up the Contributing Documentation and Process: Part III
* Remove PostCSS from Grunt.
* Add StyleLint to Grunt.
2016-09-08 15:17:20 -04:00
Nicholas Hubbard
1a54bafdd5 Clean Up the Contributing Documentation and Process: Part II
* Add `grunt-stylelint` over the complicated PostCSS method previously used.
* Remove PostCSS dependencies.
2016-09-08 15:14:00 -04:00
Nicholas Hubbard
3cc186f7e4 Clean Up the Contributing Documentation and Process: Part I
* Remove the HTML Validator
* Replace JSCS with ESLint
* Replace `npm` commands with equivalent `grunt` commands
2016-09-08 15:10:17 -04:00
Michael Teeuw
a2497d7564 Merge pull request #430 from nhubbard/develop
Close #374
2016-09-07 08:31:06 +02:00
Nicholas Hubbard
c01c882081 Update the Changelog 2016-09-06 19:25:16 -04:00
Nicholas Hubbard
af279df5c9 Closes #374.
ARMv6 is not supported by recent versions of Chrome, and by extent, this means recent versions of Electron as well.
2016-09-06 19:23:52 -04:00
Michael Teeuw
1ea7ce2589 Fix typo. 2016-09-06 10:09:11 +02:00
Michael Teeuw
476c577bc1 Add fixes. 2016-09-06 10:08:12 +02:00
Michael Teeuw
e3b91c4d71 Merge pull request #428 from callumdmay/master
Fix typos in raspberry.sh
2016-09-06 10:06:52 +02:00
Michael Teeuw
1e2d7acf4a Merge pull request #427 from pOakley/patch-1
currentweather module api url bugfix
2016-09-06 10:06:17 +02:00
Callum
1def120616 Fix typos in raspberry.sh 2016-09-05 22:47:49 -04:00
Phil Oakley
25ddf2c651 currentweather module api url bugfix
Running this on Raspberry Pi 2, node version v6.5.0, magicmirror@2.0.0

The current url created has a typo that causes the module to only display default weather units (Kelvin). After checking the website (http://openweathermap.org/current), there is no "/" at this location in the url. Removing it fixes the issue and allows the user to see the specified units in config.js.
2016-09-05 19:06:21 -06:00
Michael Teeuw
e5d384e808 Merge pull request #426 from nhubbard/develop
CII Best Practices
2016-09-05 10:44:03 +02:00
Nicholas Hubbard
a4ba7f277e Add Change to Changelog 2016-09-02 22:00:37 -04:00
Nicholas Hubbard
c3f97a0cf1 Add CII Badge, Remove Node Version 2016-09-02 21:58:22 -04:00
Michael Teeuw
a481638c03 Add dutch translation 2016-09-01 09:42:33 +02:00
Michael Teeuw
c12dfc7b4d Merge branch 'yo-less-patch-2' into develop 2016-09-01 09:39:34 +02:00
Michael Teeuw
34bc527709 Merge branch 'patch-2' of https://github.com/yo-less/MagicMirror into yo-less-patch-2 2016-09-01 09:38:06 +02:00
yo-less
ee134d0d7c Merge branch 'patch-2' of https://github.com/yo-less/MagicMirror into patch-2 2016-08-31 22:50:09 +02:00
yo-less
f795ee7fd9 Added "day after tomorrow" changes to calendar.js 2016-08-31 22:49:31 +02:00
yo-less
1bba75881f Added 'day after tomorrow'changes to calendar.js 2016-08-31 22:46:54 +02:00
yo-less
34db2d9efa commit changes 2016-08-31 22:45:12 +02:00
yo-less
91dd308952 Added 'day after tomorrow' changes to calendar.js 2016-08-31 22:43:27 +02:00
Jens
3d97e26cde Delete CHANGELOG.md 2016-08-31 22:40:50 +02:00
Jens
104c1ecbec Added "day after tomorrow" changes to calendar.js 2016-08-31 22:18:30 +02:00
Jens
88266ec4e3 Added "day after tomorrow" changes to calendar.js 2016-08-31 22:17:43 +02:00
Jens
f5be159187 Added "DAYAFTERTOMORROW" tag if available 2016-08-31 22:11:31 +02:00
Jens
1194d86460 Merge pull request #1 from yo-less/patch-1
Added "DAYAFTERTOMORROW" tag if config language is German
2016-08-31 14:49:44 +02:00
Jens
76d6dca63f Added "Übermorgen" to show in calendar.js 2016-08-31 14:41:49 +02:00
Jens
1b69e62e2e Added "DAYAFTERTOMORROW" tag if config language is German 2016-08-31 14:39:37 +02:00
Michael Teeuw
e89839359f Merge pull request #422 from Platimir/patch-1
Update README.md
2016-08-30 16:08:01 +02:00
Platimir
177d113cd9 Update README.md 2016-08-30 15:57:52 +02:00
Michael Teeuw
a8c9926fa7 Merge pull request #420 from yo-less/patch-1
Updated README.md
2016-08-27 20:58:21 +02:00
Jens
bf5587fe09 Updated README.md
Fixed minor typo
2016-08-27 20:35:00 +02:00
Michael Teeuw
7c8a27e894 Merge pull request #419 from yo-less/patch-1
Updated README.md
2016-08-27 13:55:28 +02:00
Jens
d248b11ffc Updated README.md
Fixed inconsistencies in tag removal instructions.
2016-08-27 13:48:33 +02:00
Michael Teeuw
1282e010ee Merge pull request #417 from yo-less/patch-1
Updated README.md
2016-08-27 13:29:06 +02:00
Michael Teeuw
d5d1ca948e Merge pull request #418 from yo-less/patch-2
Updated CHANGELOG.md
2016-08-27 13:28:55 +02:00
Jens
a08704e8ed Updated CHANGELOG.md
Added tag removal description for newsfeed items
2016-08-27 13:12:08 +02:00
Jens
2a8c0c0c08 Updated README.md
Fixed inconsistencies in tag removal instructions.
2016-08-27 12:59:00 +02:00
Michael Teeuw
2ae0c98b4c Merge pull request #416 from yo-less/master
Tags at the beginning and/or end of newsfeed items
2016-08-27 12:00:28 +02:00
yo-less
c427050a92 Allow for the removal of feed tags
Added options: both, description, title
2016-08-27 01:16:31 +02:00
yo-less
43a0829f44 Allow for the removal of feed tags
legibility update
2016-08-27 00:37:19 +02:00
yo-less
e9b8b91861 Allow for removal of feed tags
Updated README.md for legibility
2016-08-27 00:35:27 +02:00
yo-less
6f104f5056 Allow for the removal of feed tags
User-specified feed tags in description and title can be removed
2016-08-27 00:32:47 +02:00
yo-less
e720efabdc Updated readme.md / Included more tag 2016-08-26 22:08:23 +02:00
yo-less
45cb770e41 Added option to remove "more" tags in description
Many feed descriptions end with with a link tag to the actual article
online (see http://www.deutschlandfunk.de/die-nachrichten.353.de.rss,
for example). The mirror news description looks strange with this tag in
the end.

I have added an option to remove the tag from the description and
updated the readme.md accordingly.
2016-08-26 22:06:03 +02:00
Michael Teeuw
3f1cc66767 Merge pull request #414 from MichMich/master
Fix typo in NL.json
2016-08-24 09:39:09 +02:00
Michael Teeuw
d1f5118bb5 Merge pull request #413 from mrvanes/patch-1
Update nl.json
2016-08-24 09:35:38 +02:00
Martin
b90f1f786e Update nl.json
Corrected typo
2016-08-24 08:51:49 +02:00
Michael Teeuw
e2ed0f5e55 Cleanup 2016-08-09 10:33:34 +02:00
Michael Teeuw
d000e3c8a9 Force fullscreen when kioskmode is active 2016-08-09 10:22:29 +02:00
26 changed files with 346 additions and 172 deletions

View File

@@ -1,6 +1,5 @@
vendor/
!/vendor/vendor.js
/modules/**
!/modules/default/**
!/modules/node_helper
!/modules/node_helper/**

View File

@@ -3,57 +3,47 @@ Contribution Policy for MagicMirror²
Thanks for contributing to MagicMirror²!
We hold our code to standard, and these standards are documented below.
We hold our code to standard, and these standards are documented below.
First, before you run the linters, you will need to install them all **and** install the development dependencies:
If you wish to run both linters, use `grunt` without any arguments.
```bash
(sudo) npm install -g jscs stylelint html-validator-cli
npm install
```
### JavaScript: Run ESLint
### JavaScript: Run JSCS
We use [ESLint](http://eslint.org) on our JavaScript files.
We use [JSCS](http://jscs.info) on our JavaScript files.
Our ESLint configuration is in our .eslintrc.json and .eslintignore files.
Our JSCS configuration is in our .jscsrc file.
To run JSCS, use `npm run jscs`.
To run ESLint, use `grunt eslint`.
### CSS: Run StyleLint
We use [StyleLint](http://stylelint.io) to lint our CSS. Our configuration is in our .stylelintrc file.
To run StyleLint, use `npm run stylelint`.
To run StyleLint, use `grunt stylelint`.
### HTML: Run HTML Validator
We use [NU Validator](https://validator.w3.org/nu) to validate our HTML. The configuration is in the command in the package.json file.
To run HTML Validator, use `npm run htmlvalidator`.
## Submitting Issues
### Submitting Issues
Please only submit reproducible issues.
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt - Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: [https://forum.magicmirror.builders/category/15/bug-hunt](https://forum.magicmirror.builders/category/15/bug-hunt)
Problems installing or configuring your MagicMirror? Check out: [https://forum.magicmirror.builders/category/10/troubleshooting](https://forum.magicmirror.builders/category/10/troubleshooting)
When submitting a new issue, please supply the following information:
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
**Platform**: Place your platform here... give us your web browser/Electron version *and* your hardware (Raspberry Pi 2/3, Windows, Mac, Linux, System V UNIX).
**Node Version** [ 0.12.13 or later ]:
**Node Version**: Make sure it's version 0.12.13 or later.
**MagicMirror Version** [ V1 / V2-Beta ]:
**MagicMirror Version**: Now that the versions have split, tell us if you are using the PHP version (v1) or the newer JavaScript version (v2).
**Description:** Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
**Description**: Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
**Steps to Reproduce:** List the step by step process to reproduce the issue.
**Steps to Reproduce**: List the step by step process to reproduce the issue.
**Expected Results:** Describe what you expected to see.
**Expected Results**: Describe what you expected to see.
**Actual Results:** Describe what you actually saw.
**Actual Results**: Describe what you actually saw.
**Configuration:** What does the used config.js file look like? (Don't forget to remove any sensitive information.)
**Configuration**: What does the used config.js file look like? Don't forget to remove any sensitive information!
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)
**Additional Notes**: Provide any other relevant notes not previously mentioned. This is optional.

View File

@@ -1,21 +1,24 @@
Please only submit reproducible issues.
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt - Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting
If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: [https://forum.magicmirror.builders/category/15/bug-hunt](https://forum.magicmirror.builders/category/15/bug-hunt)
Problems installing or configuring your MagicMirror? Check out: [https://forum.magicmirror.builders/category/10/troubleshooting](https://forum.magicmirror.builders/category/10/troubleshooting)
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
When submitting a new issue, please supply the following information:
**Node Version** [ 0.12.13 or later ]:
**Platform**: Place your platform here... give us your web browser/Electron version *and* your hardware (Raspberry Pi 2/3, Windows, Mac, Linux, System V UNIX).
**MagicMirror Version** [ V1 / V2-Beta ]:
**Node Version**: Make sure it's version 0.12.13 or later.
**Description:** Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
**MagicMirror Version**: Now that the versions have split, tell us if you are using the PHP version (v1) or the newer JavaScript version (v2).
**Steps to Reproduce:** List the step by step process to reproduce the issue.
**Description**: Provide a detailed description about the issue and include specific details to help us understand the problem. Adding screenshots will help describing the problem.
**Expected Results:** Describe what you expected to see.
**Steps to Reproduce**: List the step by step process to reproduce the issue.
**Actual Results:** Describe what you actually saw.
**Expected Results**: Describe what you expected to see.
**Configuration:** What does the used config.js file look like? (Don't forget to remove any sensitive information.)
**Actual Results**: Describe what you actually saw.
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)
**Configuration**: What does the used config.js file look like? Don't forget to remove any sensitive information!
**Additional Notes**: Provide any other relevant notes not previously mentioned. This is optional.

View File

@@ -1,9 +1,7 @@
> Please send your PR's the develop branch.
> Don't forget to add the change to changelog.md.
> Please send your pull requests the develop branch.
> Don't forget to add the change to CHANGELOG.md.
* Does the pull request solve a **related** issue? [yes | no]
* Does the pull request solve a **related** issue?
* If so, can you reference the issue?
* What does the pull request accomplish? (please list)
* What does the pull request accomplish? Use a list if needed.
* If it includes major visual changes please add screenshots.

View File

@@ -1,4 +1,5 @@
{
"extends": "stylelint-config-standard",
"font-family-name-quotes": "double-where-recommended"
}
"font-family-name-quotes": "double-where-recommended",
"block-no-empty": false
}

View File

@@ -2,11 +2,30 @@
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [2.0.5] - 2016-09-20
### Added
- Added ability to remove tags from the beginning or end of newsfeed items in 'newsfeed.js'.
- Added ability to define "the day after tomorrow" for calendar events (Definition for German and Dutch already included).
- Added CII Badge (we are compliant with the CII Best Practices)
- Add support for doing http basic auth when loading calendars
- Add the abilty to turn off and on the date display in the Clock Module
### Fixed
- Fix typo in installer.
- Add message to unsupported Pi error to mention that Pi Zeros must use server only mode, as ARMv6 is unsupported. Closes #374.
- Fix API url for weather API.
### Updated
- Force fullscreen when kioskmode is active.
- Update the .github templates and information with more modern information.
- Update the Gruntfile with a more functional StyleLint implementation.
## [2.0.4] - 2016-08-07
### Added
- Brazilian Portuguese Translation.
- Option to enable Kios mode.
- Option to enable Kiosk mode.
- Added ability to start the app with Dev Tools.
- Added ability to turn off the date display in `clock.js` when in analog mode.
- Greek Translation
@@ -71,4 +90,4 @@ It includes (but is not limited to) the following features:
## [1.0.0] - 2014-02-16
### Initial release of MagicMirror.
This was part of the blogpost: http://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the
This was part of the blogpost: [http://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the](http://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the)

View File

@@ -8,21 +8,60 @@ module.exports = function(grunt) {
},
target: ["js/*.js", "modules/default/*.js", "serveronly/*.js", "*.js"]
},
postcss: {
lint: {
stylelint: {
simple: {
options: {
processors: [
require("stylelint")({"extends": "stylelint-config-standard", "font-family-name-quotes": "double-where-recommended"}),
require("postcss-reporter")({ clearMessages: true })
]
configFile: ".stylelintrc"
},
dist: {
src: "**/**/**/**/**/**/**/**.css"
src: ["css/main.css", "modules/default/calendar/calendar.css", "modules/default/clock/clock_styles.css", "modules/default/currentweather/currentweather.css", "modules/default/weatherforcast/weatherforcast.css"]
}
},
jsonlint: {
main: {
src: ["package.json", ".eslintrc.json", ".stylelint"],
options: {
reporter: "jshint"
}
}
},
markdownlint: {
all: {
options: {
config: {
"default": true,
"line-length": false,
"blanks-around-headers": false,
"no-duplicate-header": false,
"no-inline-html": false,
"MD010": false,
"MD001": false,
"MD031": false,
"MD040": false,
"MD002": false,
"MD029": false,
"MD041": false,
"MD032": false,
"MD036": false,
"MD037": false,
"MD009": false,
"MD018": false,
"MD012": false,
"MD026": false,
"MD036": false,
"MD038": false
}
},
src: ["README.md", "CHANGELOG.md", "LICENSE.md", "modules/README.md", "modules/default/**/*.md", "!modules/default/calendar/vendor/ical.js/readme.md"]
}
},
yamllint: {
all: [".travis.yml"]
}
});
grunt.loadNpmTasks("grunt-eslint");
grunt.loadNpmTasks("grunt-postcss");
grunt.registerTask("default", ["eslint", "postcss:lint"]);
grunt.loadNpmTasks("grunt-stylelint");
grunt.loadNpmTasks("grunt-jsonlint");
grunt.loadNpmTasks("grunt-yamllint");
grunt.loadNpmTasks("grunt-markdownlint");
grunt.registerTask("default", ["eslint", "stylelint", "jsonlint", "markdownlint", "yamllint"]);
};

View File

@@ -3,7 +3,7 @@
<p align="center">
<a href="https://david-dm.org/MichMich/MagicMirror"><img src="https://david-dm.org/MichMich/MagicMirror.svg" alt="Dependency Status"></a>
<a href="https://david-dm.org/MichMich/MagicMirror#info=devDependencies"><img src="https://david-dm.org/MichMich/MagicMirror/dev-status.svg" alt="devDependency Status"></a>
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-v5.10.1-brightgreen.svg" alt="Node Version"></a>
<a href="https://bestpractices.coreinfrastructure.org/projects/347"><img src="https://bestpractices.coreinfrastructure.org/projects/347/badge"></a>
<a href="http://choosealicense.com/licenses/mit"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="License"></a>
<a href="https://travis-ci.org/MichMich/MagicMirror"><img src="https://travis-ci.org/MichMich/MagicMirror.svg" alt="Travis"></a>
<a href="https://snyk.io/test/github/MichMich/MagicMirror"><img src="https://snyk.io/test/github/MichMich/MagicMirror/badge.svg" alt="Known Vulnerabilities" data-canonical-src="https://snyk.io/test/github/MichMich/MagicMirror" style="max-width:100%;"></a>
@@ -24,17 +24,17 @@ MagicMirror² focuses on a modular plugin system and uses [Electron](http://elec
## Usage
#### Raspberry Pi Support
### Raspberry Pi Support
Electron, the app wrapper around MagicMirror², only supports the Raspberry Pi 2 & 3. The Raspberry Pi 1 is currently **not** supported. If you want to run this on a Raspberry Pi 1, use the [server only](#server-only) feature and setup a fullscreen browser yourself.
#### Automatic Installer (Raspberry Pi Only!)
### Automatic Installer (Raspberry Pi Only!)
Execute the following command on your Raspberry Pi to install MagicMirror²:
````
curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installers/raspberry.sh | bash
````
#### Manual Installation
### Manual Installation
1. Download and install the latest Node.js version.
2. Clone the repository and check out the beta branch: `git clone https://github.com/MichMich/MagicMirror`
@@ -45,23 +45,23 @@ curl -sL https://raw.githubusercontent.com/MichMich/MagicMirror/master/installer
**Note:** if you want to debug on Raspberry Pi you can use `npm start dev` which will start the MagicMirror app with Dev Tools enabled.
#### Server Only
### Server Only
In some cases, you want to start the application without an actual app window. In this case, execute the following command from the MagicMirror folder: `node serveronly`. This will start the server, after which you can open the application in your browser of choice.
#### Raspberry Configuration & Auto Start.
### Raspberry Configuration & Auto Start.
The following wiki links are helpful in the configuration of your MagicMirror² operating system:
- [Configuring the Raspberry Pi](https://github.com/MichMich/MagicMirror/wiki/Configuring-the-Raspberry-Pi)
- [Auto Starting MagicMirror](https://github.com/MichMich/MagicMirror/wiki/Auto-Starting-MagicMirror)
#### Updating you MagicMirror²
### Updating your MagicMirror²
If you want to update your MagicMirror² to the latest version, use your terminal to go to your Magic Mirror folder and type the following command:
````
```bash
git pull
````
```
If you changed nothing more than the config or the modules, this should work without any problems.
Type `git status` to see your changes, if there are any, you can reset them with `git reset --hard`. After that, git pull should be possible.

View File

@@ -1,10 +1,10 @@
html {
cursor: none;
overflow:hidden;
overflow: hidden;
}
::-webkit-scrollbar {
display: none;
::-webkit-scrollbar {
display: none;
}
body {

View File

@@ -28,6 +28,7 @@ ARM=$(uname -m)
if [ "$ARM" != "armv7l" ]; then
echo -e "\e[91mSorry, your Raspberry Pi is not supported."
echo -e "\e[91mPlease run MagicMirror on a Raspberry Pi 2 or 3."
echo -e "\e[91mIf this is a Pi Zero, you are in the same boat as the original Raspberry Pi. You must run in server only mode."
exit;
fi
@@ -68,7 +69,7 @@ else
NODE_INSTALL=true
fi
# Install or upgare node if nessecery.
# Install or upgrade node if necessary.
if $NODE_INSTALL; then
echo -e "\e[96mInstalling Node.js ...\e[90m"

View File

@@ -1,3 +1,5 @@
/* jshint esversion: 6 */
"use strict";
const Server = require(__dirname + "/server.js");
@@ -28,17 +30,30 @@ function createWindow() {
mainWindow.loadURL("http://localhost:" + config.port);
// Open the DevTools if run with "npm start dev"
if(process.argv[2] == "dev"){
if(process.argv[2] == "dev") {
mainWindow.webContents.openDevTools();
}
// Emitted when the window is closed.
// Set responders for window events.
mainWindow.on("closed", function() {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
});
if (config.kioskmode) {
mainWindow.on("blur", function() {
mainWindow.focus();
});
mainWindow.on("leave-full-screen", function() {
mainWindow.setFullScreen(true);
});
mainWindow.on("resize", function() {
setTimeout(function() {
mainWindow.reload();
}, 1000);
});
}
}
// This method will be called when Electron has finished
@@ -50,11 +65,7 @@ app.on("ready", function() {
// Quit when all windows are closed.
app.on("window-all-closed", function() {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== "darwin") {
app.quit();
}
createWindow();
});
app.on("activate", function() {

View File

@@ -4,7 +4,7 @@ This document describes the way to develop your own MagicMirror² modules.
## Module structure
All modules are loaded in de `modules` folder. The default modules are grouped together in the `modules/default` folder. Your module should be placed in a subfolder of `modules`. Note that any file or folder your create in the `modules` folder will be ignored by git, allowing you to upgrade the MagicMirror² without the loss of your files.
All modules are loaded in the `modules` folder. The default modules are grouped together in the `modules/default` folder. Your module should be placed in a subfolder of `modules`. Note that any file or folder your create in the `modules` folder will be ignored by git, allowing you to upgrade the MagicMirror² without the loss of your files.
A module can be placed in one single folder. Or multiple modules can be grouped in a subfoler. Note that name of the module must be unique. Even when a module with a similar name is placed in a different folder, they can't be loaded at the same time.

View File

@@ -173,7 +173,7 @@ config: {
<tr>
<td><code> symbol </code></td>
<td>The symbol to show in front of an event. This property is optional.<br>
<br><b>Possible values:</b> See <a href="http://fontawesome.io/icons/" target="_blank">Font Awsome</a> website.
<br><b>Possible values:</b> See <a href="http://fontawesome.io/icons/" target="_blank">Font Awesome</a> website.
</td>
</tr>
<tr>
@@ -183,5 +183,13 @@ config: {
<code>'Birthday'</code>
</td>
</tr>
<tr>
<td><code> user </code></td>
<td>The username for HTTP Basic authentication.</td>
</tr>
<tr>
<td><code> pass </code></td>
<td>The password for HTTP Basic authentication.</td>
</tr>
</tbody>
</table>

View File

@@ -64,7 +64,7 @@ Module.register("calendar",{
for (var c in this.config.calendars) {
var calendar = this.config.calendars[c];
calendar.url = calendar.url.replace("webcal://", "http://");
this.addCalendar(calendar.url);
this.addCalendar(calendar.url, calendar.user, calendar.pass);
}
this.calendarData = {};
@@ -150,6 +150,16 @@ Module.register("calendar",{
timeWrapper.innerHTML = this.translate("TODAY");
} else if (event.startDate - now < one_day && event.startDate - now > 0) {
timeWrapper.innerHTML = this.translate("TOMORROW");
} else if (event.startDate - now < 2*one_day && event.startDate - now > 0) {
/*Provide ability to show "the day after tomorrow" instead of "in a day"
*if "DAYAFTERTOMORROW" is configured in a language's translation .json file,
*,which can be found in MagicMirror/translations/
*/
if (this.translate('DAYAFTERTOMORROW') !== 'DAYAFTERTOMORROW') {
timeWrapper.innerHTML = this.translate("DAYAFTERTOMORROW");
} else {
timeWrapper.innerHTML = moment(event.startDate, "x").fromNow();
}
} else {
/* Check to see if the user displays absolute or relative dates with their events
* Also check to see if an event is happening within an 'urgency' time frameElement
@@ -275,12 +285,14 @@ Module.register("calendar",{
*
* argument url sting - Url to add.
*/
addCalendar: function(url) {
addCalendar: function(url, user, pass) {
this.sendSocketNotification("ADD_CALENDAR", {
url: url,
maximumEntries: this.config.maximumEntries,
maximumNumberOfDays: this.config.maximumNumberOfDays,
fetchInterval: this.config.fetchInterval
fetchInterval: this.config.fetchInterval,
user: user,
pass: pass
});
},

View File

@@ -8,7 +8,7 @@
var ical = require("./vendor/ical.js");
var moment = require("moment");
var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumberOfDays) {
var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumberOfDays, user, pass) {
var self = this;
var reloadTimer = null;
@@ -29,7 +29,16 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
headers: {
'User-Agent': 'Mozilla/5.0 (Node.js 6.0.0) MagicMirror/v2 (https://github.com/MichMich/MagicMirror/)'
}
};
if (user && pass) {
opts.auth = {
user: user,
pass: pass,
sendImmediately: true
}
}
ical.fromURL(url, opts, function(err, data) {
if (err) {
fetchFailedCallback(self, err);
@@ -239,4 +248,4 @@ var CalendarFetcher = function(url, reloadInterval, maximumEntries, maximumNumbe
};
module.exports = CalendarFetcher;
module.exports = CalendarFetcher;

View File

@@ -25,7 +25,7 @@ module.exports = NodeHelper.create({
socketNotificationReceived: function(notification, payload) {
if (notification === "ADD_CALENDAR") {
//console.log('ADD_CALENDAR: ');
this.createFetcher(payload.url, payload.fetchInterval, payload.maximumEntries, payload.maximumNumberOfDays);
this.createFetcher(payload.url, payload.fetchInterval, payload.maximumEntries, payload.maximumNumberOfDays, payload.user, payload.pass);
}
},
@@ -37,7 +37,7 @@ module.exports = NodeHelper.create({
* attribute reloadInterval number - Reload interval in milliseconds.
*/
createFetcher: function(url, fetchInterval, maximumEntries, maximumNumberOfDays) {
createFetcher: function(url, fetchInterval, maximumEntries, maximumNumberOfDays, user, pass) {
var self = this;
if (!validUrl.isUri(url)) {
@@ -48,7 +48,7 @@ module.exports = NodeHelper.create({
var fetcher;
if (typeof self.fetchers[url] === "undefined") {
console.log("Create new calendar fetcher for url: " + url + " - Interval: " + fetchInterval);
fetcher = new CalendarFetcher(url, fetchInterval, maximumEntries, maximumNumberOfDays);
fetcher = new CalendarFetcher(url, fetchInterval, maximumEntries, maximumNumberOfDays, user, pass);
fetcher.onReceive(function(fetcher) {
//console.log('Broadcast events.');

View File

@@ -66,6 +66,13 @@ The following properties can be configured:
<br><b>Default value:</b> <code>false</code>
</td>
</tr>
<tr>
<td><code>showDate</code></td>
<td>Turn off or on the Date section.<br>
<br><b>Possible values:</b> <code>true</code> or <code>false</code>
<br><b>Default value:</b> <code>true</code>
</td>
</tr>
<tr>
<td><code>displayType</code></td>
<td>Display a digital clock, analog clock, or both together.<br>
@@ -109,4 +116,4 @@ The following properties can be configured:
</td>
</tr>
</tbody>
</table>
</table>

View File

@@ -15,6 +15,7 @@ Module.register("clock",{
showPeriod: true,
showPeriodUpper: false,
clockBold: false,
showDate: true,
/* specific to the analog clock */
analogSize: '200px',
@@ -85,7 +86,9 @@ Module.register("clock",{
timeString = moment().format("h:mm");
}
}
if(this.config.showDate){
dateWrapper.innerHTML = moment().format("dddd, LL");
}
timeWrapper.innerHTML = timeString;
secondsWrapper.innerHTML = moment().format("ss");
if (this.config.showPeriodUpper) {
@@ -224,4 +227,4 @@ Module.register("clock",{
// Return the wrapper to the dom.
return wrapper;
}
});
});

View File

@@ -1,74 +1,68 @@
#analog {
}
#digital {
}
.clockCircle {
margin: 0 auto;
position: relative;
border-radius: 50%;
background-size: 100%;
margin: 0 auto;
position: relative;
border-radius: 50%;
background-size: 100%;
}
.clockFace {
width: 100%;
height: 100%;
width: 100%;
height: 100%;
}
.clockFace:after {
position: absolute;
top: 50%;
left: 50%;
width: 6px;
height: 6px;
margin: -3px 0 0 -3px;
background: white;
border-radius: 3px;
content: "";
display: block;
.clockFace::after {
position: absolute;
top: 50%;
left: 50%;
width: 6px;
height: 6px;
margin: -3px 0 0 -3px;
background: white;
border-radius: 3px;
content: "";
display: block;
}
.clockHour {
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -2px 0 -2px -25%; /* numbers much match negative length & thickness */
padding: 2px 0 2px 25%; /* indicator length & thickness */
background: white;
-webkit-transform-origin: 100% 50%;
-ms-transform-origin: 100% 50%;
transform-origin: 100% 50%;
border-radius: 3px 0 0 3px;
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -2px 0 -2px -25%; /* numbers much match negative length & thickness */
padding: 2px 0 2px 25%; /* indicator length & thickness */
background: white;
-webkit-transform-origin: 100% 50%;
-ms-transform-origin: 100% 50%;
transform-origin: 100% 50%;
border-radius: 3px 0 0 3px;
}
.clockMinute {
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -35% -2px 0; /* numbers must match negative length & thickness */
padding: 35% 2px 0; /* indicator length & thickness */
background: white;
-webkit-transform-origin: 50% 100%;
-ms-transform-origin: 50% 100%;
transform-origin: 50% 100%;
border-radius: 3px 0 0 3px;
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -35% -2px 0; /* numbers must match negative length & thickness */
padding: 35% 2px 0; /* indicator length & thickness */
background: white;
-webkit-transform-origin: 50% 100%;
-ms-transform-origin: 50% 100%;
transform-origin: 50% 100%;
border-radius: 3px 0 0 3px;
}
.clockSecond {
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -38% -1px 0 0; /* numbers must match negative length & thickness */
padding: 38% 1px 0 0; /* indicator length & thickness */
background: #888888;
-webkit-transform-origin: 50% 100%;
-ms-transform-origin: 50% 100%;
transform-origin: 50% 100%;
width: 0;
height: 0;
position: absolute;
top: 50%;
left: 50%;
margin: -38% -1px 0 0; /* numbers must match negative length & thickness */
padding: 38% 1px 0 0; /* indicator length & thickness */
background: #888;
-webkit-transform-origin: 50% 100%;
-ms-transform-origin: 50% 100%;
transform-origin: 50% 100%;
}

View File

@@ -164,7 +164,7 @@ Module.register("currentweather",{
* Calls processWeather on succesfull response.
*/
updateWeather: function() {
var url = this.config.apiBase + this.config.apiVersion + "/" + this.config.weatherEndpoint + '/' + this.getParams();
var url = this.config.apiBase + this.config.apiVersion + "/" + this.config.weatherEndpoint + this.getParams();
var self = this;
var retry = true;

View File

@@ -98,7 +98,7 @@ The following properties can be configured:
<td><code>animationSpeed</code></td>
<td>Speed of the update animation. (Milliseconds)<br>
<br><b>Possible values:</b><code>0</code> - <code>5000</code>
<br><b>Default value:</b> <code>2000</code> (2.5 seconds)
<br><b>Default value:</b> <code>2000</code> (2 seconds)
</td>
</tr>
<tr>
@@ -108,7 +108,37 @@ The following properties can be configured:
<br><b>Default value:</b> <code>0</code>
</td>
</tr>
removeStartTags: false,
removeEndTags: false,
startTags: [],
endTags: []
<tr>
<td><code>removeStartTags</code></td>
<td>Some newsfeeds feature tags at the <B>beginning</B> of their titles or descriptions, such as <em>[VIDEO]</em>.
This setting allows for the removal of specified tags from the beginning of an item's description and/or title.<br>
<br><b>Possible values:</b><code>'title'</code>, <code>'description'</code>, <code>'both'</code>
</td>
</tr>
<tr>
<td><code>startTags</code></td>
<td>List the tags you would like to have removed at the beginning of the feed item<br>
<br><b>Possible values:</b> <code>['TAG']</code> or <code>['TAG1','TAG2',...]</code>
</td>
</tr>
<tr>
<td><code>removeEndTags</code></td>
<td>Remove specified tags from the <B>end</B> of an item's description and/or title.<br>
<br><b>Possible values:</b><code>'title'</code>, <code>'description'</code>, <code>'both'</code>
</td>
</tr>
<tr>
<td><code>endTags</code></td>
<td>List the tags you would like to have removed at the end of the feed item<br>
<br><b>Possible values:</b> <code>['TAG']</code> or <code>['TAG1','TAG2',...]</code>
</td>
</tr>
</tbody>
</table>

View File

@@ -24,7 +24,12 @@ Module.register("newsfeed",{
reloadInterval: 5 * 60 * 1000, // every 5 minutes
updateInterval: 10 * 1000,
animationSpeed: 2.5 * 1000,
maxNewsItems: 0 // 0 for unlimited
maxNewsItems: 0, // 0 for unlimited
removeStartTags: '',
removeEndTags: '',
startTags: [],
endTags: []
},
// Define required scripts.
@@ -96,11 +101,54 @@ Module.register("newsfeed",{
wrapper.appendChild(sourceAndTimestamp);
}
//Remove selected tags from the beginning of rss feed items (title or description)
if (this.config.removeStartTags == 'title' || 'both') {
for (f=0; f<this.config.startTags.length;f++) {
if (this.newsItems[this.activeItem].title.slice(0,this.config.startTags[f].length) == this.config.startTags[f]) {
this.newsItems[this.activeItem].title = this.newsItems[this.activeItem].title.slice(this.config.startTags[f].length,this.newsItems[this.activeItem].title.length);
}
}
}
if (this.config.removeStartTags == 'description' || 'both') {
if (this.config.showDescription) {
for (f=0; f<this.config.startTags.length;f++) {
if (this.newsItems[this.activeItem].description.slice(0,this.config.startTags[f].length) == this.config.startTags[f]) {
this.newsItems[this.activeItem].title = this.newsItems[this.activeItem].description.slice(this.config.startTags[f].length,this.newsItems[this.activeItem].description.length);
}
}
}
}
//Remove selected tags from the end of rss feed items (title or description)
if (this.config.removeEndTags) {
for (f=0; f<this.config.endTags.length;f++) {
if (this.newsItems[this.activeItem].title.slice(-this.config.endTags[f].length)==this.config.endTags[f]) {
this.newsItems[this.activeItem].title = this.newsItems[this.activeItem].title.slice(0,-this.config.endTags[f].length);
}
}
if (this.config.showDescription) {
for (f=0; f<this.config.endTags.length;f++) {
if (this.newsItems[this.activeItem].description.slice(-this.config.endTags[f].length)==this.config.endTags[f]) {
this.newsItems[this.activeItem].description = this.newsItems[this.activeItem].description.slice(0,-this.config.endTags[f].length);
}
}
}
}
var title = document.createElement("div");
title.className = "bright medium light";
title.innerHTML = this.newsItems[this.activeItem].title;
wrapper.appendChild(title);
if (this.config.showDescription) {
var description = document.createElement("div");
description.className = "small light";
@@ -215,5 +263,7 @@ Module.register("newsfeed",{
*/
capitalizeFirstLetter: function(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
},
});

View File

@@ -102,7 +102,7 @@ Module.register("weatherforecast",{
}
if (!this.loaded) {
wrapper.innerHTML = this.translate('LOADING');
wrapper.innerHTML = this.translate("LOADING");
wrapper.className = "dimmed light small";
return wrapper;
}
@@ -161,7 +161,7 @@ Module.register("weatherforecast",{
* Calls processWeather on succesfull response.
*/
updateWeather: function() {
var url = this.config.apiBase + this.config.apiVersion + "/" + this.config.forecastEndpoint + '/' + this.getParams();
var url = this.config.apiBase + this.config.apiVersion + "/" + this.config.forecastEndpoint + this.getParams();
var self = this;
var retry = true;

View File

@@ -5,9 +5,6 @@
"main": "js/electron.js",
"scripts": {
"start": "electron js/electron.js",
"jscs": "jscs **/**/**/**/*.js",
"stylelint": "stylelint css/main.css fonts/roboto.css",
"htmlvalidator": "html-validator --file=index.html",
"test": "snyk test",
"snyk-protect": "snyk protect",
"prepublish": "npm run snyk-protect"
@@ -30,26 +27,27 @@
},
"homepage": "https://github.com/MichMich/MagicMirror#readme",
"devDependencies": {
"electron-prebuilt": "latest",
"grunt": "latest",
"grunt-eslint": "latest",
"grunt-postcss": "latest",
"postcss-reporter": "latest",
"stylelint": "latest",
"grunt-jsonlint": "latest",
"grunt-markdownlint": "^1.0.4",
"grunt-stylelint": "latest",
"grunt-yamllint": "latest",
"stylelint-config-standard": "latest",
"time-grunt": "latest"
},
"dependencies": {
"electron-prebuilt": "latest",
"express": "^4.14.0",
"feedme": "latest",
"iconv-lite": "latest",
"moment": "latest",
"request": "^2.74.0",
"rrule": "latest",
"snyk": "^1.14.1",
"socket.io": "^1.4.6",
"valid-url": "latest",
"walk": "latest"
"walk": "latest",
"snyk": "^1.14.1"
},
"snyk": true
}
}

View File

@@ -5,6 +5,7 @@
/* CALENDAR */
"TODAY": "Heute",
"TOMORROW": "Morgen",
"DAYAFTERTOMORROW": "&Uuml;bermorgen",
"RUNNING": "noch",
"EMPTY": "Keine Termine.",

View File

@@ -5,7 +5,8 @@
/* CALENDAR */
"TODAY": "Vandaag",
"TOMORROW": "Morgen",
"RUNNING": "Eindigd over",
"DAYAFTERTOMORROW": "Overmorgen",
"RUNNING": "Eindigt over",
"EMPTY": "Geen geplande afspraken.",
/* WEATHER */