Compare commits

...

447 Commits

Author SHA1 Message Date
Michael Teeuw
93abaed0c2 Merge pull request #333 from MichMich/develop
v2.0.1
2016-05-18 11:04:31 +02:00
Michael Teeuw
b7fff6d452 Update CHANGELOG.md 2016-05-18 11:03:19 +02:00
Michael Teeuw
d09f01db90 Update PULL_REQUEST_TEMPLATE.md 2016-05-13 22:06:07 +02:00
Michael Teeuw
e0c1a58b84 Italian Translation 2016-05-13 22:01:51 +02:00
Michael Teeuw
1b82649cca Merge pull request #326 from MichMich/master
Italian translation.
2016-05-13 22:00:28 +02:00
Michael Teeuw
9317e2a36b Merge pull request #325 from iosonopersia/master
Italian translation
2016-05-13 21:54:48 +02:00
iosonopersia
51aff8ccdc Italian translation 2016-05-13 20:45:55 +02:00
iosonopersia
bdd3ea45af Added italian language 2016-05-13 20:42:56 +02:00
Michael Teeuw
3eb5c77ac4 Merge pull request #323 from MichMich/master
Remove BETA warning.
2016-05-13 10:21:19 +02:00
Michael Teeuw
ccc85784c6 Remove BETA warning. 2016-05-13 10:20:37 +02:00
Michael Teeuw
46806e8607 Merge pull request #322 from MichMich/master
Update PULL_REQUEST_TEMPLATE.md
2016-05-13 09:13:15 +02:00
Michael Teeuw
95f914d6bd Update PULL_REQUEST_TEMPLATE.md 2016-05-13 09:12:26 +02:00
Michael Teeuw
0f86011106 Create CHANGELOG.md 2016-05-13 09:10:54 +02:00
Michael Teeuw
acdd3c0602 Merge pull request #321 from jordi2830/patch-1
Fetch the latest Node.js without any 3rd party interferences
2016-05-13 07:35:04 +02:00
Jordi De Poortere
05b7237add Fixing various typo's in the installer 2016-05-13 00:02:36 +02:00
Jordi De Poortere
51f4e9e160 Get the latest Node.js
This will get the latest Node.js from the selected branch.
I do recommend only using a stable and tested version as newer ones might break MM.
Branch can be changed by simply editing the NODE_STABLE_BRANCH variable.

By using this setup script, Node.js will be downloaded from the official repository provided by NodeSource.
2016-05-12 23:39:11 +02:00
Michael Teeuw
7bbac35d6b Merge pull request #317 from MichMich/master
Fix installer URL.
2016-05-12 14:47:53 +02:00
Michael Teeuw
d280fe457c Fix installer URL. 2016-05-12 14:47:36 +02:00
Michael Teeuw
b5772af4c3 Merge pull request #316 from MichMich/master
Merge master changes.
2016-05-12 13:31:35 +02:00
Michael Teeuw
7ab79bb76e Update PULL_REQUEST_TEMPLATE.md 2016-05-12 13:30:41 +02:00
Michael Teeuw
00e3cc26de Update ISSUE_TEMPLATE.md 2016-05-12 13:29:59 +02:00
Michael Teeuw
4b491c43ff Update CONTRIBUTING.md 2016-05-12 13:29:36 +02:00
Michael Teeuw
41233a933e Merge pull request #315 from MichMich/master
v2-beta references.
2016-05-12 13:04:45 +02:00
Michael Teeuw
b84e553d34 Remove v2-beta reference. 2016-05-12 13:03:13 +02:00
Michael Teeuw
19b9fa1996 Remove v2-beta references. 2016-05-12 13:01:44 +02:00
Michael Teeuw
6abdc4172b remove reference to v2-beta 2016-05-12 12:59:24 +02:00
Michael Teeuw
5e0c0137d3 Fix news parsing when no description is given. #314 2016-05-12 12:30:45 +02:00
Michael Teeuw
3e468d1348 Improved installer. #311 #314 2016-05-12 12:20:02 +02:00
Michael Teeuw
051af521b2 Merge pull request #309 from jordi2830/patch-1
Added Spanish translations
2016-05-11 18:54:12 +02:00
Jordi De Poortere
19b6ad3568 Update es.json
This one should be fine, sorry for the inconvenience.
2016-05-11 18:50:12 +02:00
Jordi De Poortere
5ae514e9b8 Update es.json 2016-05-11 18:49:09 +02:00
Jordi De Poortere
826ee98165 Update es.json
Quotes fixed
2016-05-11 18:46:48 +02:00
Michael Teeuw
f4c021a634 Merge pull request #310 from roxasvalor/v2-beta
Fix deg2Cardinal function in currentweather module
2016-05-11 18:43:59 +02:00
roxasvalor
717ae1903e Fix deg2Cardinal function in currentweather module 2016-05-11 11:36:06 -05:00
Jordi De Poortere
3cd7cdd4fb Update translations.js
Add Spanish translations
2016-05-11 18:34:56 +02:00
Jordi De Poortere
ff612799c0 Create es.json
Added Spanish translations
2016-05-11 18:33:25 +02:00
Michael Teeuw
d364b04cad supscript wind direction 2016-05-11 18:01:34 +02:00
Michael Teeuw
212aef79aa Merge pull request #307 from Wilco89/v2-beta
Update fy.json
2016-05-11 15:14:03 +02:00
Wilco Land
9ca2b08a0e Update fy.json
Fixed Typo,
2016-05-11 15:09:40 +02:00
Michael Teeuw
fc3ac88806 Merge pull request #306 from Wilco89/v2-beta
Frisian translation
2016-05-11 14:03:13 +02:00
Wilco Land
c550c4c212 Update translations.js
Added Frisian to translation file
2016-05-11 13:59:52 +02:00
Wilco Land
f0df8a4a09 Create fy.json
Frisian Translation
2016-05-11 13:58:42 +02:00
Michael Teeuw
65923abcae Add travis shield. 2016-05-11 13:54:52 +02:00
Michael Teeuw
c4f3009bb5 Add suspend and resume methods. 2016-05-11 13:49:40 +02:00
Michael Teeuw
405a81c8f0 Translation info. 2016-05-11 12:42:36 +02:00
Michael Teeuw
7a067a0f6e Finish translation system. #191 2016-05-11 12:38:41 +02:00
Michael Teeuw
32c9f197b1 Fix wind direction. #303 2016-05-11 09:25:16 +02:00
Michael Teeuw
85151b23d3 Add user agent to request. Fix: 231 2016-05-11 09:07:10 +02:00
Michael Teeuw
fc0a4d90df Merge pull request #304 from KirAsh4/v2-beta
V2 beta [Calendar Module]: Time display options
2016-05-10 22:42:01 +02:00
Ashley M. Kirchner
9558616f59 Minor text changes, and updating README file 2016-05-10 11:58:05 -06:00
Michael Teeuw
5be5741ac3 Possible fix for #181 2016-05-10 16:18:35 +02:00
Michael Teeuw
80c0e6a4e0 Add support for (some) Atom feeds. #231 2016-05-10 13:35:13 +02:00
Michael Teeuw
9bc8f54233 Fix issue with calendar events without title. #221 2016-05-10 12:24:49 +02:00
Ashley M. Kirchner
a4c02cef54 Absolute or Relative time display on Calendar module
User can now choose between an 'absolute' or 'relative time display on
events. Furthermore, when set to 'absolute', there's an option to set an
'urgency' range of days and only those events within that period will be
displayed with a relative time (in x days) while all others will have an
absolute date.
2016-05-10 01:01:00 -06:00
Ashley M. Kirchner
935f4132ab Filemode changes? 2016-05-10 00:46:21 -06:00
Michael Teeuw
a1cb82e7db Merge pull request #296 from paviro/v2-beta
Use node v5.9.1
2016-05-06 16:58:13 +02:00
Paul-Vincent Roll
146d782729 Use node v5.9.1 2016-05-06 16:57:14 +02:00
Paul-Vincent Roll
ac8bf5e939 Merge pull request #22 from MichMich/v2-beta
Update from Master
2016-05-06 16:55:09 +02:00
Michael Teeuw
2a70620844 Typo. 2016-05-06 11:29:17 +02:00
Michael Teeuw
7494b867a7 Merge pull request #291 from jordi2830/patch-1
Fixing the hardcoded Node.js version number
2016-05-05 19:14:52 +02:00
Jordi De Poortere
2874ee8609 Fixing the hardcoded Node.js version number 2016-05-05 19:12:35 +02:00
Michael Teeuw
e61145eabe Merge pull request #289 from paviro/patch-5
Added module showcase link.
2016-05-04 15:26:20 +02:00
Paul-Vincent Roll
4f01c574d2 Added module showcase link. 2016-05-04 15:25:23 +02:00
Michael Teeuw
06a471033c Merge pull request #287 from nhubbard/v2-beta
Close #281: ESLint and using the force, Luke
2016-05-04 07:19:56 +02:00
Michael Teeuw
3761bfd26f Merge pull request #286 from roxasvalor/v2-beta
Added option for using the Beaufort scale or raw wind speed
2016-05-04 07:17:26 +02:00
roxasvalor
07ad1b1de4 Update Readme for useBeaufort option 2016-05-03 19:21:58 -05:00
Warwolf8.9
5725af55a8 Make Beaufort wind speed optional 2016-05-03 19:14:27 -05:00
Nicholas Hubbard
d0f75ffda9 TravisFix2 2016-05-03 20:00:32 -04:00
Nicholas Hubbard
4117938140 Merge branch 'v2-beta' of https://github.com/nhubbard/MagicMirror into v2-beta 2016-05-03 19:56:28 -04:00
Nicholas Hubbard
f50c206d4f Travis fixer. 2016-05-03 19:56:14 -04:00
Nicholas Hubbard
ed95cb791c Force Travis 2016-05-03 19:52:49 -04:00
Nicholas Hubbard
9d0bf6d409 Grunt and Travis, you\'re late 2016-05-03 19:51:07 -04:00
roxasvalor
5e68a8200d Merge pull request #1 from MichMich/v2-beta
V2 beta
2016-05-03 18:38:38 -05:00
Nicholas Hubbard
15887994fe JSCS Says Goodbye 2016-05-03 19:13:46 -04:00
Michael Teeuw
8bec8281d2 Merge pull request #285 from danito/v2-beta
V2 beta - module calendar - french translation
2016-05-03 17:07:05 +02:00
Daniel nix
2e5a5812a9 Update calendar.js
add fr translation for calendar
2016-05-03 17:04:45 +02:00
Daniel nix
744f9316a9 Create fr.json
adding fr translation
2016-05-03 17:01:48 +02:00
Michael Teeuw
a6da9e8943 Fix #283 2016-05-03 16:59:18 +02:00
Michael Teeuw
14d3bb273c Load custom.css after the modules. Fix: #284 2016-05-03 16:42:09 +02:00
Michael Teeuw
37f8c0783d Fix facebook dates. #271 2016-05-03 11:56:24 +02:00
Michael Teeuw
05a946e2bf Formatting. 2016-05-03 11:19:01 +02:00
Michael Teeuw
a1b3e0778a Add info about malformed config files. Fix: #249 2016-05-03 11:18:06 +02:00
Michael Teeuw
93f8ade350 Merge pull request #253 from momo13292/v2-beta
calendar events repeating count title for birthdayd etc
2016-05-02 19:36:51 +02:00
momo13292
2a3a942b8e Delete nohup.out 2016-05-02 19:32:18 +02:00
Michael Teeuw
796583c0be Merge pull request #280 from paviro/v2-beta
Added forum to README
2016-05-02 17:10:39 +02:00
Paul-Vincent Roll
df31b56cf3 Added forum to README. 2016-05-02 17:02:03 +02:00
Paul-Vincent Roll
e5f4446c82 Merge pull request #21 from MichMich/v2-beta
Update from Master
2016-05-02 16:50:05 +02:00
Michael Teeuw
0252495eca Missing , 2016-05-01 23:30:01 +02:00
Michael Teeuw
5e75a6b4a0 Merge pull request #276 from nhubbard/v2-beta
Extend the Logger
2016-05-01 19:54:44 +02:00
Michael Teeuw
3002a4f9b3 Merge pull request #274 from KirAsh4/v2-beta
V2 beta - weatherforecast maxNumberOfDays
2016-05-01 19:53:46 +02:00
Nicholas Hubbard
f627c5e5a1 Extend the Logger
Add Timing, Grouping, and Warning to the logger.
2016-05-01 13:46:41 -04:00
Ashley M. Kirchner
4d0a93fc3b Update README.md
Added the maxNumberOfDays config option to change the amount of forecasted days returned by the OpenWeatherAPI.
2016-04-29 12:58:03 -06:00
Ashley M. Kirchner
3f040e7744 Update weatherforecast.js
Added the option to change the amount of forecasted days returned by the OpenWeatherAPI.
2016-04-29 12:52:10 -06:00
Michael Teeuw
e572d544ef Merge pull request #269 from nhubbard/v2-beta
clockBold's Re-Incarnation
2016-04-29 18:55:55 +02:00
Nicholas Hubbard
ab3f585a2b clockBold's Re-Incarnation: Part II 2016-04-29 11:25:05 -04:00
Nicholas Hubbard
8b792c5fe0 clockBold's Re-Incarnation: Part I 2016-04-29 11:24:14 -04:00
Michael Teeuw
f184116824 Remove slack. 2016-04-27 14:39:21 +02:00
Michael Teeuw
ab2c91ba20 Add slack channel (experimental) 2016-04-27 14:37:12 +02:00
Michael Teeuw
f2a786254e Merge pull request #256 from djsunrise19/v2-beta
Update de.json
2016-04-27 11:05:19 +02:00
djsunrise19
7cbc8a0ede Update de.json
Cause ´morgen um ***` and other words are written lowercased, it makes sense to write ´noch` lowercased too. Days und whole day events have to be as they are.
2016-04-27 10:45:15 +02:00
Michael Teeuw
08bc644de1 Fix #245 2016-04-27 09:42:13 +02:00
Michael Teeuw
f12125f2a4 Update to node 6.0.0 2016-04-27 09:37:44 +02:00
Mona Schüch
4e86de7fc2 calendar events repeating count title for birthdayd etc 2016-04-26 22:34:12 +02:00
Michael Teeuw
38796a0d40 Merge pull request #243 from roxasvalor/v2-beta
Add optional wind direction in currentweather module
2016-04-25 13:27:59 +02:00
roxasvalor
8562bdfc4a Removed trailing comma 2016-04-25 06:27:26 -05:00
roxasvalor
74c96d8521 Removed showWindDirection 2016-04-25 06:23:55 -05:00
roxasvalor
5f8ef64ca4 showDirection to showWindDirection 2016-04-24 18:34:39 -05:00
roxasvalor
5a5f5318d1 Update README.md 2016-04-24 18:31:46 -05:00
roxasvalor
db9e615e4d Update README.md 2016-04-24 18:30:54 -05:00
Warwolf8.9
2aae0528b5 Added wind direction in Current Weather module 2016-04-24 18:06:12 -05:00
roxasvalor
8d29bd5c32 Update currentweather.js 2016-04-24 17:40:18 -05:00
roxasvalor
77cb8530e5 Update currentweather.js 2016-04-24 16:55:39 -05:00
Michael Teeuw
bfd7404c85 Merge pull request #241 from paviro/patch-4
Moved this.translate() to the instance methods
2016-04-24 23:21:22 +02:00
roxasvalor
836148a335 Update currentweather.js 2016-04-24 16:15:05 -05:00
Paul-Vincent Roll
1ab00ac804 Moved this.translate() to the instance methods 2016-04-24 23:14:24 +02:00
Michael Teeuw
7a3db8f670 Merge pull request #240 from paviro/patch-3
Added translation fallback note to documentation
2016-04-24 23:07:35 +02:00
Paul-Vincent Roll
fd3676067a Added translation fallback note to documentation 2016-04-24 23:06:49 +02:00
Michael Teeuw
de61e4bf8c Merge pull request #239 from roxasvalor/v2-beta
Fixed module Readmes for #237
2016-04-24 23:05:24 +02:00
roxasvalor
3d0de834e0 Units now configured by config.js 2016-04-24 16:01:27 -05:00
roxasvalor
a897772df2 Units now configured by config.js 2016-04-24 16:00:13 -05:00
Michael Teeuw
5726d796f9 Merge pull request #237 from roxasvalor/v2-beta
Added option for units inside of config.js
2016-04-24 22:56:19 +02:00
roxasvalor
8381960737 Added "units" configuration instructions
Added instructions for configuring the units variable in config.js.
2016-04-24 15:38:50 -05:00
Michael Teeuw
b61d41f569 Merge pull request #238 from paviro/patch-3
Added getTranslations() to the documentation
2016-04-24 22:34:29 +02:00
Paul-Vincent Roll
af827b5645 Added getTranslations() to the documentation 2016-04-24 22:33:30 +02:00
roxasvalor
13a01d76f7 Added default units variable
Added a default units variable if users do not configure in config.js.
2016-04-24 15:33:22 -05:00
roxasvalor
2007f5ece4 Units from config.js 2016-04-24 15:25:35 -05:00
roxasvalor
a91a2c2609 Units configurable from Config.js 2016-04-24 15:24:44 -05:00
roxasvalor
0890fd521e Added units variable 2016-04-24 15:23:07 -05:00
Michael Teeuw
4338cb305d Merge pull request #235 from paviro/patch-2
Wheezy supported
2016-04-24 14:20:30 +02:00
Paul-Vincent Roll
84e02c828f Wheezy is supported now isn't it? 2016-04-24 14:18:41 +02:00
Michael Teeuw
be8707570c Merge pull request #234 from paviro/patch-1
custom.css will be ignored
2016-04-24 13:59:14 +02:00
Paul-Vincent Roll
39602e0a98 Update custom.css 2016-04-24 13:53:21 +02:00
Michael Teeuw
bc2f2f5323 Merge pull request #229 from djsunrise19/v2-beta
Update README.md
2016-04-23 20:28:58 +02:00
djsunrise19
66e71282a0 Update README.md
Not necessary anymore, because we made that with "de.json" in calendar
2016-04-23 20:26:05 +02:00
Michael Teeuw
bca56f88af Merge pull request #228 from djsunrise19/v2-beta
Update de.json in calendar
2016-04-23 20:17:51 +02:00
djsunrise19
35068631ec Merge pull request #1 from djsunrise19/djsunrise19-patch-1
Update de.json
2016-04-23 17:45:58 +02:00
Michael Teeuw
bd9557b11e Prevent display of events in the past. #162 2016-04-23 17:40:46 +02:00
djsunrise19
0f2c19f40f Update de.json
"Noch" is grammatically better than "Endet in" for running events.
2016-04-23 17:36:59 +02:00
Michael Teeuw
4248ae7792 Merge pull request #225 from paviro/v2-beta
Added translaions to the alert module
2016-04-23 17:32:06 +02:00
Paul-Vincent Roll
535a4205b1 Added translaions to the alert module. 2016-04-23 17:27:36 +02:00
Michael Teeuw
ab14fc8440 fix #223 2016-04-23 17:20:58 +02:00
Paul-Vincent Roll
86eea16271 Merge pull request #20 from MichMich/v2-beta
Fix for #222
2016-04-23 16:58:53 +02:00
Michael Teeuw
52a9caa96e Fix for #222 2016-04-23 16:57:03 +02:00
Paul-Vincent Roll
d8fe1a6e44 Merge pull request #19 from MichMich/v2-beta
Update from Master
2016-04-23 16:22:51 +02:00
Michael Teeuw
ae86090a03 Update to Node 5.11 2016-04-22 19:21:50 +02:00
Michael Teeuw
87aa887b2f Fix missing module. 2016-04-22 08:32:07 +02:00
Michael Teeuw
81378b5e25 Add update information. 2016-04-21 09:16:53 +02:00
Michael Teeuw
6f615b8202 Add NL translation & Convert config property to lowercase. 2016-04-21 09:02:41 +02:00
Michael Teeuw
44c1266a8c Merge pull request #211 from CFenner/l10n
implements l10n
2016-04-21 08:53:10 +02:00
Christopher
920f720699 fix indent 2016-04-21 08:47:07 +02:00
Christopher
a7c394de6c use translator 2016-04-21 01:04:00 +02:00
Christopher
4529675ca6 add l18n ability
fixes #191
2016-04-21 01:03:26 +02:00
Christopher
935909f24b fix typo 2016-04-20 23:13:31 +02:00
Christopher
7b61a0253c Merge branch 'v2-beta' into v2 2016-04-20 22:51:23 +02:00
Michael Teeuw
64e039cf8f Show 'tomorrow' when a full day event is planned for tomorrow. 2016-04-20 21:40:56 +02:00
Paul-Vincent Roll
65ae1f6f5a Merge pull request #18 from MichMich/v2-beta
Update form Master
2016-04-20 15:22:22 +02:00
Michael Teeuw
fa38ad3a74 Fix for #207 2016-04-20 15:19:36 +02:00
Michael Teeuw
fd500ac411 Allow the subscription to multiple news feeds in one newsfeed instance. 2016-04-20 14:39:38 +02:00
Paul-Vincent Roll
c6b5bb84e9 Merge pull request #17 from MichMich/v2-beta
V2 beta
2016-04-20 14:26:36 +02:00
Michael Teeuw
3b1f1a41dc Fix period display when using 24 hour mode. 2016-04-20 12:16:41 +02:00
Michael Teeuw
d778f2dd8b fix: #206 2016-04-20 11:42:01 +02:00
Michael Teeuw
287452169b Fix for #197 and #185 2016-04-20 11:32:48 +02:00
Michael Teeuw
6fdcd7f7e9 Add darkTheme. 2016-04-19 20:26:22 +02:00
Michael Teeuw
b16a49109f Possible fix for #185 2016-04-19 16:45:57 +02:00
Michael Teeuw
7d8cde2f0f Move exception handling to the core app. 2016-04-19 11:25:50 +02:00
Michael Teeuw
a3fedb47cb Fix socket reference bug. #196 2016-04-19 11:04:36 +02:00
Michael Teeuw
095f08d443 Fix: #162, Possible fix for: #197 2016-04-19 10:34:15 +02:00
Michael Teeuw
a7948ee1da Merge pull request #198 from Intecpsp/v2-beta
Allow 12 hour period config
2016-04-19 07:48:10 +02:00
Cody
54eeb27f09 Add documentation for 12 hour period config
Add the documentation for the 12 hour period config
2016-04-18 20:03:26 -04:00
Cody
d0e57df1d8 Add documentation for 12 hour period config
Add the documentation for the 12 hour period config
2016-04-18 20:01:53 -04:00
Cody
b4df63f37f Allow 12 hour period config
Allow for configuring the 12 hour format period (AM/PM).
2016-04-18 19:53:34 -04:00
Cody
16a7ea2b75 Allow 12 hour period config
Allow for configuring the 12 hour format period (AM/PM).
2016-04-18 19:52:40 -04:00
Michael Teeuw
3892ce3ed4 Fix for #188, #194 2016-04-18 20:03:12 +02:00
Michael Teeuw
6c47de0170 Merge branch 'v2-beta' of https://github.com/MichMich/MagicMirror into v2-beta 2016-04-18 19:12:56 +02:00
Michael Teeuw
8793196bb3 Possible fix for #181 2016-04-18 19:12:24 +02:00
Michael Teeuw
a3a9a8e3f1 Info about the supported OS. 2016-04-18 17:16:06 +02:00
Michael Teeuw
bef5b48fce Prevent crash when no internet connection is available. #193 2016-04-18 16:25:00 +02:00
Michael Teeuw
bc0ba2f524 fix typo. #190 2016-04-17 17:12:40 +02:00
Michael Teeuw
1b387dabde Merge pull request #189 from nhubbard/snyk
Add Snyk
2016-04-17 15:10:22 +02:00
Nicholas Hubbard
fe8cb7c461 Add Snyk 2016-04-17 08:55:48 -04:00
Michael Teeuw
bfbf62d398 Merge pull request #183 from nhubbard/gitignore
Standardize the GitIgnore
2016-04-17 14:41:58 +02:00
Michael Teeuw
b22b845d57 Merge pull request #184 from nhubbard/no-eslint
No More ESLint!
2016-04-17 14:40:56 +02:00
Nicholas Hubbard
104a62e24d Remove ESLint: Part II 2016-04-16 21:40:05 -04:00
Nicholas Hubbard
4639911a04 Remove ESLint: Part I 2016-04-16 21:38:42 -04:00
Nicholas Hubbard
6677f2f5d4 Standardize the GitIgnore 2016-04-16 21:36:46 -04:00
Michael Teeuw
8adb16e1f6 Change formatting. #181 2016-04-16 21:42:44 +02:00
Michael Teeuw
9c9e93974e possible fix #181 2016-04-16 20:01:02 +02:00
Michael Teeuw
44a6604fe8 Possible fix for #181 2016-04-16 19:55:19 +02:00
Michael Teeuw
47a18666b6 Possible fix for #180 2016-04-15 22:10:00 +02:00
Michael Teeuw
a231ebc408 Cleanup. 2016-04-15 14:27:50 +02:00
Michael Teeuw
33ab2f9cc5 Move module list to wiki. 2016-04-15 14:26:06 +02:00
Michael Teeuw
e56c1a5853 Disable logging. 2016-04-15 13:16:02 +02:00
Michael Teeuw
27a47d4e4a Show text when event is still running. 2016-04-15 13:13:06 +02:00
Michael Teeuw
614e5e62af Show relative time to non full day events. Fix: #162 2016-04-15 12:50:34 +02:00
Michael Teeuw
f45a2e7806 Fix repeating appointments, Fix: #169 2016-04-15 12:19:00 +02:00
Michael Teeuw
c03485b93e Add information about the Raspberry Pi support. 2016-04-15 11:36:36 +02:00
Michael Teeuw
900e668cd6 Merge pull request #177 from CFenner/addModule
add link to Netatmo module
2016-04-15 10:42:22 +02:00
Christopher
2657e1194c add link to Netatmo module 2016-04-15 10:02:03 +02:00
Michael Teeuw
ec5ad089a3 Merge pull request #175 from CFenner/ignoreFile
ignore .DS_Store files
2016-04-15 09:57:32 +02:00
Christopher
69a3354617 ignore .DS_Store files
ignore Desktop Services Store file for OS X
2016-04-15 09:53:34 +02:00
Michael Teeuw
6e60d30970 Prevent autostart after installation. 2016-04-13 15:00:05 +02:00
Michael Teeuw
d6fa1f9cbc Improve scrollbar hiding. 2016-04-13 09:58:56 +02:00
Michael Teeuw
bc8dccd4b5 Fix #153 2016-04-13 09:27:30 +02:00
Michael Teeuw
14f48ec440 Prevent clipping of header. Fixes: #167 2016-04-13 09:23:54 +02:00
Michael Teeuw
fd1b847077 Merge pull request #164 from paviro/v2-beta
Added Font Awesome Support to alerts
2016-04-12 21:03:33 +02:00
Paul-Vincent Roll
ed3c0e42fb Added Font Awesome Support into alerts. 2016-04-12 20:54:30 +02:00
Paul-Vincent Roll
d72d6d925e Merge pull request #16 from MichMich/v2-beta
Update form Master
2016-04-12 20:23:58 +02:00
Michael Teeuw
4ae034b21c Merge pull request #163 from laurio/patch-1
Fix some typos in README.md file
2016-04-12 20:06:44 +02:00
Lauri Oherd
bbc7a1fff0 Fix some typos in README.md file 2016-04-12 20:16:04 +03:00
Michael Teeuw
68ed3e4996 Prevent scrollbars. 2016-04-12 13:59:19 +02:00
Michael Teeuw
03ae6366ea Add module to readme. 2016-04-12 12:07:31 +02:00
Michael Teeuw
af2f469b84 Add possibility to display item description. #157 2016-04-12 11:06:59 +02:00
Michael Teeuw
a64699d064 Remove background. 2016-04-11 15:01:01 +02:00
Michael Teeuw
ac96baae66 Remove bold. 2016-04-11 11:50:36 +02:00
Michael Teeuw
15d9569fa4 Text change. 2016-04-11 11:50:13 +02:00
Michael Teeuw
bd99affb13 Fix Link. 2016-04-11 11:36:30 +02:00
Michael Teeuw
88166b7c73 Add list of known issues. 2016-04-11 11:35:56 +02:00
Michael Teeuw
3543ebb9a6 Add project description. Remove TODO's. 2016-04-11 11:27:44 +02:00
Michael Teeuw
924f239d1b Merge pull request #156 from nhubbard/v2-beta
Markdown Refresh
2016-04-11 11:14:57 +02:00
Michael Teeuw
b641285cf4 Text change. 2016-04-11 11:11:36 +02:00
Nicholas Hubbard
c22ce3b9a2 Markdown Refresh: Part V 2016-04-10 18:02:03 -04:00
Nicholas Hubbard
64091b5463 Markdown Refresh: Part IV 2016-04-10 17:59:31 -04:00
Nicholas Hubbard
09f0b251ab Markdown Refresh: Part III 2016-04-10 17:49:50 -04:00
Michael Teeuw
9bf22e5e13 Brighter headers.
The headers were to dark to be visible thru the mirror.
2016-04-10 23:42:03 +02:00
Nicholas Hubbard
360e1e327e Markdown Refresh: Part II 2016-04-10 17:14:19 -04:00
Nicholas Hubbard
4b8bc65fb7 Markdown Refresh: Part I 2016-04-10 17:11:31 -04:00
Nicholas Hubbard
1b9d91936b Centered badges... now? 2016-04-10 17:06:21 -04:00
Nicholas Hubbard
7457432c2a Finally... centered badges! 2016-04-10 17:05:54 -04:00
Michael Teeuw
30bcc8e7f0 Merge pull request #155 from nhubbard/v2-beta
Update the README and other things
2016-04-10 22:14:01 +02:00
Nicholas Hubbard
6232bf070d Update README.md 2016-04-10 16:07:47 -04:00
Nicholas Hubbard
978b0ed811 Update README.md 2016-04-10 16:07:30 -04:00
Nicholas Hubbard
24acd14da0 Update README
Add centering.
2016-04-10 16:07:10 -04:00
Nicholas Hubbard
4950b69152 Add Synk Policy 2016-04-10 16:04:51 -04:00
Michael Teeuw
f25da27c58 Add header, add wiki links. 2016-04-10 20:39:42 +02:00
Michael Teeuw
12a5c4a311 Merge pull request #154 from nhubbard/v2-beta
Contribution and Updates
2016-04-10 10:16:59 +02:00
Nicholas Hubbard
3fcc163261 Contribution Policy Changes: Part II 2016-04-09 19:08:07 -04:00
Nicholas Hubbard
18a670ae29 Contribution Policy Changes: Part I
Add ESLint.
2016-04-09 19:03:10 -04:00
Nicholas Hubbard
f443fef091 Contribution: Part III 2016-04-09 18:56:26 -04:00
Michael Teeuw
58adf75c18 Add info about config in node helper. 2016-04-09 20:59:55 +02:00
Michael Teeuw
bee04bec44 Add link to documentation. 2016-04-09 20:58:07 +02:00
Michael Teeuw
01cc32004a Remove TOC. (Links not working.) 2016-04-09 20:56:46 +02:00
Michael Teeuw
5ede0d35f2 Add TOC 2016-04-09 20:56:16 +02:00
Michael Teeuw
a1b8d951c1 Add node helper documentation. 2016-04-09 20:54:33 +02:00
Michael Teeuw
880e2401e1 Merge pull request #152 from nhubbard/v2-beta
Update Contributions
2016-04-09 20:32:44 +02:00
Michael Teeuw
3434bd8460 Add documentation. 2016-04-09 20:31:59 +02:00
Nicholas Hubbard
239db35ba0 Contribution: Part II 2016-04-09 14:21:40 -04:00
Michael Teeuw
6310750168 header update 2016-04-09 18:08:35 +02:00
Michael Teeuw
133e41e3be typo 2016-04-09 18:07:44 +02:00
Michael Teeuw
b616cfa75c Typo. 2016-04-09 18:03:12 +02:00
Michael Teeuw
86a0b5f59a change header description. 2016-04-09 17:58:57 +02:00
Michael Teeuw
becf029583 Add header info. 2016-04-09 17:58:10 +02:00
Michael Teeuw
f36f2357ef Start of Module Development Documentation 2016-04-09 17:04:08 +02:00
Michael Teeuw
faa6d91f7c Add ordering information. 2016-04-09 16:00:34 +02:00
Michael Teeuw
be5ecc6d0d Add configuration instructions. 2016-04-09 15:59:05 +02:00
Michael Teeuw
00a18d54bb Cleanup. 2016-04-09 15:51:18 +02:00
Michael Teeuw
bad20c3e0b change git ignore 2016-04-09 15:51:04 +02:00
Michael Teeuw
14a72dec15 Change Class behavior of hello world. 2016-04-09 15:49:39 +02:00
Michael Teeuw
7ef43caa1e minor fix 2016-04-09 15:34:18 +02:00
Michael Teeuw
244c4c6201 fix typo 2016-04-09 15:32:31 +02:00
Nicholas Hubbard
8d29947e32 Templating: Part III
Create pull request template.
2016-04-09 09:17:25 -04:00
Michael Teeuw
29fc705672 Minor change. 2016-04-09 15:15:27 +02:00
Michael Teeuw
2859db15fe Update install instructions. 2016-04-09 15:14:01 +02:00
Nicholas Hubbard
9ab020518e Templating: Part II
Remove the improperly titled and saved issue template.
2016-04-09 09:13:31 -04:00
Nicholas Hubbard
838635ae4d Templating: Part I
Create the issue template in the proper folder.
2016-04-09 09:12:51 -04:00
Michael Teeuw
a88e4932e6 Update installer. 2016-04-09 15:10:47 +02:00
Nicholas Hubbard
56c94a2986 Contribution: Part I 2016-04-08 20:45:14 -04:00
Michael Teeuw
a4c3d9cb17 Remove trailing dot. 2016-04-08 23:05:45 +02:00
Michael Teeuw
c31d392e19 Change branding on default config. 2016-04-08 22:21:14 +02:00
Michael Teeuw
a34a5c4db0 Separate server core from Electron. 2016-04-08 22:16:22 +02:00
Michael Teeuw
0441b9fb50 Update README.md 2016-04-08 20:24:08 +02:00
Michael Teeuw
3e871ea33d Add issue template. 2016-04-08 19:53:57 +02:00
Michael Teeuw
54dda91726 fix issue with show/hide callbacks 2016-04-08 17:27:03 +02:00
Michael Teeuw
0a19570f2c Merge pull request #148 from nhubbard/v2-beta
A Mishmash of Fixes
2016-04-08 10:06:25 +02:00
Nicholas Hubbard
f280aa227e Update Alert Spelling 2016-04-07 21:20:34 -04:00
Nicholas Hubbard
af34dc4d4d HTML Love 2016-04-07 21:19:29 -04:00
Nicholas Hubbard
0ab1079c9c Markdown Love: Part III 2016-04-07 21:14:11 -04:00
Nicholas Hubbard
d2cb0bde91 Fix Packages 2016-04-07 21:10:29 -04:00
Nicholas Hubbard
5b34f7cf8c Markdown Love: Part II 2016-04-07 21:06:35 -04:00
Nicholas Hubbard
9e6e34eda0 Markdown Love: Part I 2016-04-07 21:04:24 -04:00
Michael Teeuw
cfd6cdc50f Remove debugging. Fixes: #146 2016-04-07 09:22:54 +02:00
Michael Teeuw
78346cda46 Update latest version. 2016-04-06 16:20:34 +02:00
Michael Teeuw
c547ab4570 Merge pull request #142 from nhubbard/v2-beta
Standardization and Issue Fixes
2016-04-05 22:05:11 +02:00
Nicholas Hubbard
939b54787e Update installation script.
- (possibly?) Fix issue that sha256sum does not work.
- Add shebang for good reasons.
- Fix continuing even after an error happens.
2016-04-05 15:52:10 -04:00
Nicholas Hubbard
7b5b81504b Standardize: TO STYLELINT! 2016-04-05 15:43:52 -04:00
Michael Teeuw
5578a274f6 Merge pull request #141 from CFenner/npmStart2
describe how to run npm start on SHH
2016-04-05 21:43:01 +02:00
Christopher
9e0c4a89f3 add comment about ssh & npm start 2016-04-05 21:39:56 +02:00
Nicholas Hubbard
426728058c Standardize: TO JSCS! 2016-04-05 14:35:11 -04:00
Michael Teeuw
18390503b5 Merge pull request #139 from SVendittelli/v2-beta
Add MMM-wordnik to README
2016-04-05 16:29:22 +02:00
Sam Vendittelli
6e79b8404a Add MMM-wordnik to the README 2016-04-05 15:24:46 +01:00
Sam Vendittelli
4567272baa Merge pull request #1 from MichMich/v2-beta
V2 beta
2016-04-05 15:01:36 +01:00
Michael Teeuw
6ff3a37665 Prevent memory leaks. 2016-04-05 14:54:40 +02:00
Michael Teeuw
5420314784 Register the express app to allow registration of urls. 2016-04-05 14:22:34 +02:00
Michael Teeuw
f1dad4c9fb Merge pull request #138 from paviro/v2-beta
Change slide position based on notification position - closes #137
2016-04-05 13:47:57 +02:00
Paul-Vincent Roll
aba0b29c77 Change slide position based on notification position - closes #137 2016-04-05 13:45:18 +02:00
Michael Teeuw
638263e8eb Add two special regions. 2016-04-05 13:39:52 +02:00
Michael Teeuw
e2040b7194 Remove old version. 2016-04-05 13:33:59 +02:00
Paul-Vincent Roll
0006e3b4bd Merge pull request #15 from MichMich/v2-beta
Update from Master
2016-04-05 13:24:38 +02:00
Michael Teeuw
06efd01032 Configurable encoding. #126 2016-04-05 13:16:23 +02:00
Michael Teeuw
1a20bd2f4d add an align-left class 2016-04-05 12:22:01 +02:00
Michael Teeuw
598cf61eb4 Fix Facebook Birthdays - Fix: #97 2016-04-05 11:20:47 +02:00
Michael Teeuw
7b6772e77b Allow custom css styling. 2016-04-05 10:26:18 +02:00
Michael Teeuw
c4bfa6d4d8 Finish loading empty calendars. Fixes issue: #124 2016-04-05 10:01:54 +02:00
Michael Teeuw
700ebc53f8 Merge pull request #135 from Domi-G/v2-beta
Font Improvements - closes #133
2016-04-05 09:44:35 +02:00
Domi-G
4db83293e5 Reorder the fonts for optimized loading 2016-04-05 00:35:30 +02:00
Domi-G
0fcdc2e118 Define fallback fonts 2016-04-05 00:33:29 +02:00
Domi-G
4b8d44aa2e Cleanup fonts, larger charset - fixes #133 2016-04-05 00:09:11 +02:00
Michael Teeuw
915e716936 Merge pull request #134 from nhubbard/v2-beta
Clean up the project's README and installation instructions.
2016-04-04 20:25:15 +02:00
Nicholas Hubbard
bb63232f55 Update the installer to allow condensed installation.
Condensed installation is where the user Git Clones the repo and runs the installer there.
2016-04-04 13:57:09 -04:00
Nicholas Hubbard
43288b2e97 Update the README for better disclosure of installation script. 2016-04-04 13:54:49 -04:00
Nicholas Hubbard
824eade8b2 Update installation script for Pi 3 support. 2016-04-04 12:28:07 -04:00
Nicholas Hubbard
df26058172 Add installation script for ease of installation. 2016-04-04 12:19:13 -04:00
Nicholas Hubbard
2f3219704e Add badges and fix Usage list formatting. 2016-04-03 20:39:01 -04:00
Nicholas Hubbard
5c0532e6c6 Some branding, grammar and spelling updates. 2016-04-03 19:43:31 -04:00
Michael Teeuw
a4d5b74b57 Fixes encoding issues: #125 & #126 2016-04-03 23:16:59 +02:00
Michael Teeuw
864106d336 Merge pull request #132 from paviro/v2-beta
Fixed mistake that happens when no type is given
2016-04-03 20:43:35 +02:00
Paul-Vincent Roll
5a612e792e Fixed mistake that happens when no type is given 2016-04-03 20:41:03 +02:00
Michael Teeuw
e473dfc15e Merge pull request #131 from paviro/v2-beta
Use SHOW_ALERT for all type of notifications
2016-04-03 20:36:18 +02:00
Paul-Vincent Roll
f931316dc8 No type = alert 2016-04-03 20:34:47 +02:00
Paul-Vincent Roll
e323a315e1 README ms not seconds 2016-04-03 20:31:09 +02:00
Paul-Vincent Roll
a55a2bcca0 Use SHOW_ALERT for all type of notifications 2016-04-03 20:28:51 +02:00
Michael Teeuw
f0c739c94c Add Contributing. 2016-04-03 20:27:56 +02:00
Michael Teeuw
60db5abb54 Change default port to port 8080. 2016-04-03 20:27:56 +02:00
Michael Teeuw
9ab7356730 Merge pull request #130 from paviro/v2-beta
Removed no longer existing params
2016-04-03 20:15:50 +02:00
Paul-Vincent Roll
7f2537f9b1 Removed no longer existing params 2016-04-03 20:13:22 +02:00
Michael Teeuw
6fe3ca1058 Merge pull request #129 from paviro/v2-beta
Added alert todos
2016-04-03 20:12:34 +02:00
Paul-Vincent Roll
99dbb3abed Added alert todos 2016-04-03 20:08:22 +02:00
Paul-Vincent Roll
053bdd0467 Merge pull request #14 from MichMich/v2-beta
Update from Master
2016-04-03 20:05:55 +02:00
Michael Teeuw
5554dce924 Fix merge conflict. 2016-04-03 19:56:01 +02:00
Michael Teeuw
ec7a4734df Merge branch 'v2-beta' of https://github.com/MichMich/MagicMirror into pr/120
# Conflicts:
#	README.md
2016-04-03 19:55:35 +02:00
Michael Teeuw
40e3e71b48 Fix merge conflict. 2016-04-03 19:53:36 +02:00
Michael Teeuw
5eed80c28e Squashed commit of the following:
commit e38dd346d9
Author: Michael Teeuw <michael@xonaymedia.nl>
Date:   Sat Apr 2 19:17:30 2016 +0200

    Add the possibility to set the maximum number of days.

commit 6f5c86775b
Author: Sam Vendittelli <sam.vendittelli@hotmail.com>
Date:   Sat Apr 2 06:27:44 2016 +0100

    Fixed cursor appearing in margin

    Cursor was appearing in the margin so moved `cursor: none` property to html.

commit 576c668d84
Author: Domi-G <lessuseguy+githubdomig@gmail.com>
Date:   Fri Apr 1 22:52:32 2016 +0200

    Huge cleanup of white space
2016-04-03 19:52:13 +02:00
Paul-Vincent Roll
e2436ad796 Updated install instructions 2016-04-03 17:46:09 +02:00
Paul-Vincent Roll
7f0d82e960 Fixed README 2016-04-03 13:32:17 +02:00
Paul-Vincent Roll
5ecdca28fb Added Alert module to README 2016-04-03 13:02:49 +02:00
Paul-Vincent Roll
67bd6eac99 Use seconds instead of ms 2016-04-03 04:03:57 +02:00
Paul-Vincent Roll
f8ce8ece1e Removed SweetAlert License 2016-04-03 03:07:59 +02:00
Paul-Vincent Roll
679521c8a0 Removed sweetalert added custom alerts 2016-04-03 03:04:38 +02:00
Paul-Vincent Roll
f8c1644dee Added text alignment based on position 2016-04-03 00:20:11 +02:00
Paul-Vincent Roll
882e9731ac Added position config 2016-04-02 23:54:15 +02:00
Paul-Vincent Roll
3cd882f618 Notification styling 2016-04-02 20:27:59 +02:00
Paul-Vincent Roll
98e333cef9 Added title to notification 2016-04-02 20:05:05 +02:00
Paul-Vincent Roll
21a0063756 removed ns-style-growl.css now in default 2016-04-02 19:57:52 +02:00
Paul-Vincent Roll
76f1a82746 Allow multiple notifications 2016-04-02 19:56:19 +02:00
Michael Teeuw
e38dd346d9 Add the possibility to set the maximum number of days. 2016-04-02 19:17:30 +02:00
Paul-Vincent Roll
a8184ec17d Allow welcome_message = false 2016-04-02 19:12:59 +02:00
Paul-Vincent Roll
5fb751222b Added table to developer alert parameters 2016-04-02 14:57:29 +02:00
Paul-Vincent Roll
9910af04b0 added Configuration options as table 2016-04-02 14:46:46 +02:00
Sam Vendittelli
6f5c86775b Fixed cursor appearing in margin
Cursor was appearing in the margin so moved `cursor: none` property to html.
2016-04-02 07:27:44 +02:00
Paul-Vincent Roll
9c78af65e1 Added new option and licenses 2016-04-02 04:17:58 +02:00
Paul-Vincent Roll
e14010da35 Now supports alerts and notifications 2016-04-02 03:59:18 +02:00
Sam Vendittelli
c61278f1ad Fixed cursor appearing in margin
Cursor was appearing in the margin so moved `cursor: none` property to html.
2016-04-01 23:23:44 +01:00
Domi-G
576c668d84 Huge cleanup of white space 2016-04-01 22:52:32 +02:00
Paul-Vincent Roll
f93a464b7d Added howto for developers 2016-04-01 22:07:50 +02:00
Paul-Vincent Roll
06271678a6 Added alert module 2016-04-01 22:05:09 +02:00
Paul-Vincent Roll
af0ea4d555 Merge pull request #12 from MichMich/v2-beta
Update V2 beta from master
2016-04-01 21:59:18 +02:00
Michael Teeuw
e448e87252 Prevent weird start effect. 2016-04-01 17:49:43 +02:00
Michael Teeuw
e4c54cc655 Add module subfolder support. 2016-04-01 17:35:29 +02:00
Michael Teeuw
671338425a Add module documentation. 2016-04-01 16:43:59 +02:00
Michael Teeuw
5237cf9eb1 Fix Typos 2016-04-01 16:03:12 +02:00
Michael Teeuw
33586f4bdf Compliments documentation. 2016-04-01 16:02:59 +02:00
Michael Teeuw
2cc05e1878 Explain titleReplace. 2016-04-01 15:53:28 +02:00
Michael Teeuw
44c0f409a9 Fix link. 2016-04-01 14:22:26 +02:00
Michael Teeuw
dde6d8e623 Link to documentation. 2016-04-01 14:21:23 +02:00
Michael Teeuw
f387e28ed4 Formatting. 2016-04-01 14:19:50 +02:00
Michael Teeuw
e0072630f3 Formatting 2016-04-01 14:18:39 +02:00
Michael Teeuw
fdf80c4584 Fix missing info. 2016-04-01 14:18:07 +02:00
Michael Teeuw
68b3f1a8e6 Add documentation. 2016-04-01 14:16:39 +02:00
Paul-Vincent Roll
f044f3ece2 Merge pull request #11 from MichMich/v2-beta
Update V2 beta from master
2016-04-01 13:20:16 +02:00
Michael Teeuw
46312cb44c Fix #115 - Recurring events. 2016-04-01 13:16:29 +02:00
Michael Teeuw
167a548112 Merge pull request #119 from paviro/v2-beta
Added alerts to todo
2016-04-01 12:24:34 +02:00
Paul-Vincent Roll
a381c91af7 Added alerts to todo 2016-04-01 12:23:07 +02:00
Paul-Vincent Roll
eb0446bfe1 Merge pull request #10 from MichMich/v2-beta
Update V2 beta from master
2016-04-01 12:18:04 +02:00
Michael Teeuw
62fcf8402c Add todo. 2016-04-01 10:47:16 +02:00
Michael Teeuw
f320f6e9b6 Fix show/hide issue on content update. 2016-04-01 10:44:17 +02:00
Michael Teeuw
2c387f6ae6 visual change 2016-04-01 10:34:20 +02:00
Paul-Vincent Roll
702145dada Merge pull request #9 from MichMich/v2-beta
Update V2 beta from master
2016-04-01 10:30:33 +02:00
Michael Teeuw
a1973faa06 Fix CSS glitches. Improve show/hide. 2016-04-01 10:25:55 +02:00
Michael Teeuw
ac7fc587ee Merge pull request #116 from paviro/v2-beta
Added MMM-Wunderlist to README
2016-04-01 07:43:38 +02:00
Paul-Vincent Roll
240487c258 Added MMM-Wunderlist to README 2016-04-01 02:24:06 +02:00
Paul-Vincent Roll
4e07c7ef4b Merge pull request #8 from MichMich/v2-beta
Hide module after fade out.
2016-03-31 22:36:48 +02:00
Michael Teeuw
147791dbcd Hide module after fade out. 2016-03-31 22:34:39 +02:00
Paul-Vincent Roll
caf7056ce0 Merge pull request #7 from MichMich/v2-beta
Update V2 beta from master
2016-03-31 21:02:07 +02:00
Michael Teeuw
38e42cf71e Type check. 2016-03-31 19:25:53 +02:00
Michael Teeuw
584a12e1f5 Method to hide/show modules. 2016-03-31 19:15:58 +02:00
Michael Teeuw
d601919dc4 Minor visual changes. 2016-03-31 17:07:21 +02:00
Michael Teeuw
e5351c573b Add comments. 2016-03-31 17:06:39 +02:00
Michael Teeuw
ccff5c5921 Magic module selection. 2016-03-31 17:05:36 +02:00
Michael Teeuw
c3ef992219 Merge pull request #114 from Domi-G/v2-beta
Fixed layout for Firefox
2016-03-31 16:58:08 +02:00
Domi-G
c698d27a29 Fixed layout for Firefox 2016-03-31 15:07:55 +02:00
Michael Teeuw
05162ebd59 Update todo. 2016-03-31 14:20:43 +02:00
Michael Teeuw
6f991b3238 Merge pull request #113 from paviro/v2-beta
Added MMM-Facial-Recognition to README
2016-03-31 13:44:06 +02:00
Paul-Vincent Roll
a14373a3e6 Added MMM-Facial-Recognition to README 2016-03-31 13:37:44 +02:00
Paul-Vincent Roll
6a61dc47ac Merge pull request #6 from MichMich/v2-beta
Update V2 beta from master
2016-03-31 13:31:22 +02:00
Michael Teeuw
971729dfdd Merge pull request #112 from paviro/v2-beta
Hide cursor and updated electron params
2016-03-31 13:30:54 +02:00
Michael Teeuw
5c1feb2848 Fix issue with starting of modules. 2016-03-31 13:30:01 +02:00
Paul-Vincent Roll
4455bf13c9 Merge pull request #5 from MichMich/v2-beta
Improved module loader.
2016-03-31 13:12:49 +02:00
Michael Teeuw
f28b0316f4 Improved module loader. 2016-03-31 13:05:23 +02:00
Paul-Vincent Roll
9999b3aa0c Hide cursor and updated electron params 2016-03-31 12:44:00 +02:00
Paul-Vincent Roll
f9734dbc8b Merge pull request #4 from MichMich/v2-beta
Update V2 beta from master
2016-03-31 12:27:26 +02:00
Michael Teeuw
c1bd469086 updated readme 2016-03-31 11:08:06 +02:00
Michael Teeuw
900ba886ed Add calendar module. 2016-03-31 11:05:32 +02:00
Paul-Vincent Roll
ab0dce5dea electron params updated 2016-03-31 00:20:54 +02:00
Paul-Vincent Roll
6327670b6f Merge pull request #3 from MichMich/v2-beta
Update V2 beta from master
2016-03-31 00:20:07 +02:00
Michael Teeuw
7717b295bd Fix namespace problem. 2016-03-30 17:22:30 +02:00
Michael Teeuw
b243d25399 Improved socket connection for node_helper. 2016-03-30 16:25:24 +02:00
Michael Teeuw
59b339aba5 Add License File 2016-03-30 15:21:46 +02:00
Michael Teeuw
0d6ada13c4 Add module info to readme. 2016-03-30 15:20:14 +02:00
Michael Teeuw
dd32e61fcc Merge pull request #109 from paviro/v2-beta
Fixed typo in node_helper and added module to README
2016-03-30 15:16:42 +02:00
Michael Teeuw
cbf533aa7d Minor visual changes. 2016-03-30 15:15:11 +02:00
Paul-Vincent Roll
5bccb1a555 Added Callmonitor to README 2016-03-30 15:13:46 +02:00
Michael Teeuw
139a364da6 decrease load delay 2016-03-30 15:13:02 +02:00
Paul-Vincent Roll
60fcafa3b8 Fixed typo 2016-03-30 15:11:56 +02:00
Michael Teeuw
d7ef4adbc8 update gitignore to ignore new modules (except default modules) 2016-03-30 14:59:57 +02:00
Paul-Vincent Roll
c89e5785d8 Merge pull request #2 from MichMich/v2-beta
Update V2 beta from master
2016-03-30 14:54:21 +02:00
Michael Teeuw
af910aa3f7 New node_helper loading. 2016-03-30 14:49:37 +02:00
Michael Teeuw
7e873880f5 fix git ignore 2016-03-30 14:00:42 +02:00
Michael Teeuw
1be0edaf03 git ignore fix 2016-03-30 13:57:06 +02:00
Michael Teeuw
609e498973 git ignore fix 2016-03-30 13:56:53 +02:00
Michael Teeuw
1585b7a142 add git ignore for modules/node_modules 2016-03-30 13:52:32 +02:00
Michael Teeuw
c55ac659c1 Git ignore changes. 2016-03-30 13:47:57 +02:00
Michael Teeuw
1de52f7b64 Update gitignore. 2016-03-30 13:44:49 +02:00
Michael Teeuw
26a6eb506e Allow use of class.js in node. 2016-03-30 13:44:16 +02:00
Michael Teeuw
ede3e669c7 Minor visual change. 2016-03-30 13:29:44 +02:00
Michael Teeuw
d00aa21c96 git ignore changes 2016-03-30 13:19:54 +02:00
Paul-Vincent Roll
6181098f68 Merge pull request #1 from MichMich/v2-beta
Update from master v2 branch
2016-03-30 12:57:27 +02:00
Michael Teeuw
1d4c1624c4 update package.json 2016-03-30 12:49:41 +02:00
Michael Teeuw
899d05bc32 Add server (web/socket), create socket system, better helper loader.
- The Magic Mirror is now hosted via a express server, allowing you to
load it from an external client (for debugging.)
- It now includes a socket system to communicate between the
node_helper and the client module.
- node_helpers are now only loaded if the module is configured in the
config.
2016-03-30 12:20:46 +02:00
Michael Teeuw
15856574d7 Add fade option to weather forecast. 2016-03-29 16:10:50 +02:00
Michael Teeuw
c09f8e97f7 Add news feed module. 2016-03-29 15:44:43 +02:00
Michael Teeuw
4fb7f099de Output node_helper output to console. 2016-03-29 15:39:54 +02:00
Michael Teeuw
90c6283742 Add configuration instructions and todo. 2016-03-29 13:35:55 +02:00
Michael Teeuw
872d8584fb Git ignore changes. 2016-03-29 13:28:51 +02:00
Michael Teeuw
74afe433fb Add weather modules. 2016-03-29 13:28:15 +02:00
Michael Teeuw
e85d6a39f8 Merge pull request #108 from paviro/v2-beta
Updated README
2016-03-28 14:44:19 +02:00
Paul-Vincent Roll
2a41e55ff2 Updated README 2016-03-28 13:47:40 +02:00
Michael Teeuw
1e30811112 Merge pull request #107 from paviro/v2-beta
Start helper_scripts as childs
2016-03-28 13:25:46 +02:00
Paul-Vincent Roll
22f0d752ea Start helper_scripts as childs and not just import them into the main script 2016-03-28 13:23:02 +02:00
Michael Teeuw
4675bae804 Merge pull request #106 from paviro/v2-beta
This seems to be working perfect. I didn't test it yet on a Pi, but since you say this works I merge the pull request. Thanks for your contribution!
2016-03-28 12:17:51 +02:00
Paul-Vincent Roll
57bd3c5a4e Spelling mistake sorry... 2016-03-28 02:29:13 +02:00
Paul-Vincent Roll
29db2dcd14 Use latest electron version 2016-03-28 02:27:12 +02:00
Paul-Vincent Roll
df153ee1a1 Hide menu-bar on Raspberry Pi and some comments 2016-03-28 01:59:05 +02:00
Paul-Vincent Roll
331c12269c disable node-integration so jquery works again 2016-03-28 00:26:24 +02:00
Paul-Vincent Roll
d7844a1e39 electron now searches for node helper scripts on module folders 2016-03-27 22:22:04 +02:00
Paul-Vincent Roll
d96b82500a Added electron wrapper 2016-03-27 20:40:07 +02:00
Michael Teeuw
74f1da81f2 Initial version of the README. 2016-03-27 16:57:20 +02:00
Michael Teeuw
472bc529f9 Cleanup. 2016-03-24 18:13:09 +01:00
Michael Teeuw
4266c0b279 Initial commit of V2. 2016-03-24 17:19:32 +01:00
225 changed files with 30662 additions and 14658 deletions

7
.eslintignore Normal file
View File

@@ -0,0 +1,7 @@
vendor/
!/vendor/vendor.js
/modules/**
!/modules/default/**
!/modules/node_helper
!/modules/node_helper/**
!/modules/default/defaultmodules.js

14
.eslintrc.json Normal file
View File

@@ -0,0 +1,14 @@
{
"rules": {
"indent": ["error", "tab"],
"quotes": ["error", "double"],
"max-len": ["error", 250],
"curly": "error",
"camelcase": ["error", {"properties": "never"}]
},
"env": {
"browser": true,
"node": true,
"es6": true
}
}

59
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,59 @@
Contribution Policy for MagicMirror²
====================================
Thanks for contributing to MagicMirror²!
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:
```bash
(sudo) npm install -g jscs stylelint html-validator-cli
npm install
```
### JavaScript: Run JSCS
We use [JSCS](http://jscs.info) on our JavaScript files.
Our JSCS configuration is in our .jscsrc file.
To run JSCS, use `npm run jscs`.
### 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`.
### 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
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
When submitting a new issue, please supply the following information:
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
**Node Version** [ 0.12.13 or later ]:
**MagicMirror Version** [ V1 / V2-Beta ]:
**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.
**Expected Results:** Describe what you expected to see.
**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.)
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)

21
.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,21 @@
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
**Platform** [ Raspberry Pi 2/3, Windows, Mac OS X, Linux, Etc ... ]:
**Node Version** [ 0.12.13 or later ]:
**MagicMirror Version** [ V1 / V2-Beta ]:
**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.
**Expected Results:** Describe what you expected to see.
**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.)
**Additional Notes:** Provide any other relevant notes not previously mentioned (optional)

9
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

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

BIN
.github/header.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
.github/header.psd vendored Normal file

Binary file not shown.

66
.gitignore vendored Normal file
View File

@@ -0,0 +1,66 @@
# Various Node ignoramuses.
logs
*.log
npm-debug.log*
pids
*.pid
*.seed
lib-cov
coverage
.grunt
.lock-wscript
build/Release
node_modules
jspm_modules
.npm
.node_repl_history
# Various Windows ignoramuses.
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.cab
*.msi
*.msm
*.msp
*.lnk
# Various OSX ignoramuses.
.DS_Store
.AppleDouble
.LSOverride
Icon
._*
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
# Various Linux ignoramuses.
.fuse_hidden*
.directory
.Trash-*
# Various Magic Mirror ignoramuses and anti-ignoramuses.
# Don't ignore the node_helper nore module.
!/modules/node_helper
!/modules/node_helper/**
# Ignore all modules except the default modules.
/modules/**
!/modules/default/**
!/modules/README.md**
# Ignore changes to the custom css files.
/css/custom.css

1
.snyk Normal file
View File

@@ -0,0 +1 @@
version: v1

4
.stylelintrc Normal file
View File

@@ -0,0 +1,4 @@
{
"extends": "stylelint-config-standard",
"font-family-name-quotes": "double-where-recommended"
}

9
.travis.yml Normal file
View File

@@ -0,0 +1,9 @@
language: node_js
node_js:
- "6"
- "5.1"
- "4"
- "0.12"
before_script:
- npm install grunt-cli -g
script: grunt

23
CHANGELOG.md Normal file
View File

@@ -0,0 +1,23 @@
# MagicMirror² Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).
## [2.0.1] - 2016-05-18
### Added
- Changelog
- Italian Translation
### Changed
- Improve the installer by fetching the latest Node.js without any 3rd party interferences.
## [2.0.0] - 2016-05-03
### Initial release of MagicMirror²
It includes (but is not limited to) the following features:
- Modular system allowing 3rd party plugins.
- An Node/Electron based application taking away the need for external servers or browsers.
- A complete development API documentation.
- Small cute fairies that kiss you while you sleep.
## [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

28
Gruntfile.js Normal file
View File

@@ -0,0 +1,28 @@
module.exports = function(grunt) {
require("time-grunt")(grunt);
grunt.initConfig({
pkg: grunt.file.readJSON("package.json"),
eslint: {
options: {
configFile: ".eslintrc.json"
},
target: ["js/*.js", "modules/default/*.js", "serveronly/*.js", "*.js"]
},
postcss: {
lint: {
options: {
processors: [
require("stylelint")({"extends": "stylelint-config-standard", "font-family-name-quotes": "double-where-recommended"}),
require("postcss-reporter")({ clearMessages: true })
]
},
dist: {
src: "**/**/**/**/**/**/**/**.css"
}
}
}
});
grunt.loadNpmTasks("grunt-eslint");
grunt.loadNpmTasks("grunt-postcss");
grunt.registerTask("default", ["eslint", "postcss:lint"]);
};

18
LICENSE.md Normal file
View File

@@ -0,0 +1,18 @@
The MIT License (MIT)
=====================
Copyright © 2016 Michael Teeuw
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the “Software”), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
**The software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damages or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with the software or the use or other dealings in the software.**

139
README.md
View File

@@ -1,52 +1,129 @@
MagicMirror
===========
![MagicMirror²: The open source modular smart mirror platform. ](.github/header.png)
##Introduction
<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="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>
</p>
The super magic interface of my personal Magic Mirror. More information about this project can be found on my [blog](http://michaelteeuw.nl/tagged/magicmirror).
**MagicMirror²** is an open source modular smart mirror platform. With a growing list of installable modules, the **MagicMirror²** allows you to convert your hallway or bathroom mirror into your personal assistant. **MagicMirror²** is built by the creator of [the original MagicMirror](http://michaelteeuw.nl/tagged/magicmirror) with the incredible help of a [growing community of contributors](https://github.com/MichMich/MagicMirror/graphs/contributors).
Runs as a php script on a web server with basically no external dependencies. *Can use socket.io for XBEE integration, but isn't required for basic functionality*.
MagicMirror² focuses on a modular plugin system and uses [Electron](http://electron.atom.io/) as an application wrapper. So no more web server or browser installs necessary!
## Table Of Contents
- [Usage](#usage)
- [Configuration](#configuration)
- [Modules](#modules)
- [Known Issues](#known-issues)
- [community](#community)
- [Contributing Guidelines](#contributing-guidelines)
## Usage
#### 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!)
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
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`
3. Enter the repository: `cd ~/MagicMirror`
4. Install and run the app: `npm install && npm start`
**Important:** `npm start` does **not** work via SSH, use `DISPLAY=:0 nohup npm start &` instead. This starts the mirror on the remote display.
#### 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.
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²
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:
````
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.
## Configuration
1. Duplicate `config/config.js.sample` to `config/config.js`.
2. Modify your required settings.
The following properties can be configured:
##Configuration
| **Option** | **Description** |
| --- | --- |
| `port` | The port on which the MagicMirror² server will run on. The default value is `8080`. |
| `language` | The language of the interface. (Note: Not all elements will be localized.) Possible values are `en`, `nl`, `ru`, `fr`, etc., but the default value is `en`. |
| `timeFormat` | The form of time notation that will be used. Possible values are `12` or `24`. The default is `24`. |
| `units` | The units that will be used in the default weather modules. Possible values are `metric` or `imperial`. The default is `metric`. |
| `modules` | An array of active modules. **The array must contain objects. See the next table below for more information.** |
Modify `js/config.js` to change some general variables (language, weather location, compliments, news feed RSS and to add your own ICS calendar)
Module configuration:
To use the OpenWeatherMap API, you'll need a free API key. Checkout [this blogpost](http://michaelteeuw.nl/post/131504229357/what-happened-to-the-weather) for more information.
| **Option** | **Description** |
| --- | --- |
| `module` | The name of the module. This can also contain the subfolder. Valid examples include `clock`, `default/calendar` and `custommodules/mymodule`. |
| `position` | The location of the module in which the module will be loaded. Possible values are `top_ bar`, `top_left`, `top_center`, `top_right`, `upper_third`, `middle_center`, `lower_third`, `bottom_left`, `bottom_center`, `bottom_right`, `bottom_bar`, `fullscreen_above`, and `fullscreen_below`. This field is optional but most modules require this field to set. Check the documentation of the module for more information. Multiple modules with the same position will be ordered based on the order in the configuration file. |
| `classes` | Additional classes which are passed to the module. The field is optional. |
| `header` | To display a header text above the module, add the header property. This field is optional. |
| `config` | An object with the module configuration properties. Check the documentation of the module for more information. This field is optional, unless the module requires extra configuration. |
##Code
## Modules
###[main.js](js/main.js)
The following modules are installed by default.
This file initiates the separate pieces of functionality that will appear in the view. It also includes various utility functions that are used to update what is visible.
- [**Clock**](modules/default/clock)
- [**Calendar**](modules/default/calendar)
- [**Current Weather**](modules/default/currentweather)
- [**Weather Forecast**](modules/default/weatherforecast)
- [**News Feed**](modules/default/newsfeed)
- [**Compliments**](modules/default/compliments)
- [**Hello World**](modules/default/helloworld)
- [**Alert**](modules/default/alert)
###[Calendar](js/calendar)
For more available modules, check out out the wiki page: [MagicMirror² Modules](https://github.com/MichMich/MagicMirror/wiki/MagicMirror²-Modules). If you want to build your own modules, check out the [MagicMirror² Module Development Documentation](modules) and don't forget to add it to the wiki and the [forum](https://forum.magicmirror.builders/category/7/showcase)!
Parsing functionality for the calendar that retrieves and updates the calendar based on the interval set at the top of the [calendar.js](js/calendar/calendar.js) file. This was actually a straight pull from the original main.js file but the parsing code may deserve an upgrade.
## Known issues
###[Compliments](js/compliments)
- Electron seems to have some issues on certain Raspberry Pi 2's. See [#145](https://github.com/MichMich/MagicMirror/issues/145).
- MagicMirror² (Electron) sometimes quits without an error after an extended period of use. See [#150](https://github.com/MichMich/MagicMirror/issues/150).
Functionality related to inserting compliments into the view and rotating them based on a specific interval set at the top of the [compliments.js](js/compliments/compliments.js) file.
## Community
###[News](js/news)
The community around the MagicMirror² is constantly growing. We even have a [forum](https://forum.magicmirror.builders) now where you can share your ideas, ask questions, help others and get inspired by other builders. We would love to see you there!
Takes an array of news feeds (or a single string) from the config file and retrieves each one so that it can be displayed in a loop based on the interval set at the top of the [news.js](js/news/news.js) file.
## Contributing Guidelines
###[Time](js/time)
Contributions of all kinds are welcome, not only in the form of code but also with regards bug reports and documentation.
Updates the time on the screen on one second interval.
Please keep the following in mind:
###[Version](js/version)
- **Bug Reports**: Make sure you're running the latest version. If the issue(s) still persist: please open a clearly documented issue with a clear title.
- **Minor Bug Fixes**: Please send a pull request with a clear explanation of the issue or a link to the issue it solves.
- **Major Bug Fixes**: please discuss your approach in an GitHub issue before you start to alter a big part of the code.
- **New Features**: please please discuss in a GitHub issue before you start to alter a big part of the code. Without discussion upfront, the pull request will not be accepted / merged.
Checks the git version and refreshes if a new version has been pulled.
Thanks for your help in making MagicMirror² better!
###[Weather](js/weather)
Takes the user's inserted location, language, unit type, and OpenWeatherMap API key and grabs the five day weather forecast from OpenWeatherMap. You need to set the API key in the config for this to work. (See *configuration*.)
##Extensions
###[MagicMirror-Extensions by PaViRo](https://github.com/paviro/MagicMirror-Extensions)
**Current features:** FRITZ!Box Callmonitor <br>
**Future features:** Faceregognition, personalized views, online banking through HBCI and multiple calenders based on faceregognition.

2
config/.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
*
!config.js.sample

75
config/config.js.sample Normal file
View File

@@ -0,0 +1,75 @@
/* Magic Mirror Config Sample
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*/
var config = {
port: 8080,
language: 'en',
timeFormat: 24,
units: 'metric',
modules: [
{
module: 'alert',
},
{
module: 'clock',
position: 'top_left'
},
{
module: 'calendar',
header: 'US Holidays',
position: 'top_left',
config: {
calendars: [
{
symbol: 'calendar-check-o ',
url: 'webcal://www.calendarlabs.com/templates/ical/US-Holidays.ics'
}
]
}
},
{
module: 'compliments',
position: 'lower_third'
},
{
module: 'currentweather',
position: 'top_right',
config: {
location: 'New York',
appid: 'YOUR_OPENWEATHER_API_KEY'
}
},
{
module: 'weatherforecast',
position: 'top_right',
header: 'Weather Forecast',
config: {
location: 'New York',
appid: 'YOUR_OPENWEATHER_API_KEY'
}
},
{
module: 'newsfeed',
position: 'bottom_bar',
config: {
feeds: [
{
title: "New York Times",
url: "http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml"
}
],
showSourceTitle: true,
showPublishDate: true
}
},
]
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== 'undefined') {module.exports = config;}

View File

@@ -1,5 +0,0 @@
<?php
include "functions/gzip.php";
$url = $_GET["url"];
echo get_url($url);
?>

View File

@@ -1,42 +0,0 @@
<?php
/*
* @function get_url
* @purpose To fetch GZipped web content.
* @author Michael Teeuw
*/
function get_url($url) {
/*
* @array
* Prepare the options that we need for our GZip request.
*/
$opts = array(
"http" => array(
"method" => "GET",
"header" => "Accept-Language: en-US,en;q=0.8rn" . "Accept-Encoding: gzip,deflate,sdchrn" . "Accept-Charset:UTF-8,*;q=0.5rn" . "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:19.0) Gecko/20100101 Firefox/19.0 FirePHP/0.4rn",
"ignore_errors" => true
),
/*
* @array
* Put a Band-Aid over some SSL issues.
*/
"ssl" => array(
"verify_peer" => false,
"verify_peer_name" => false
)
);
$context = stream_context_create($opts);
$content = file_get_contents($url, false, $context);
/*
* @note If http response header mentions that content is gzipped, then uncompress it.
*/
foreach($http_response_header as $c => $h) {
if(stristr($h, "content-encoding") and stristr($h, "gzip")) {
/*
* @note Now, let's begin the actual purpose of this function:
*/
$content = gzinflate(substr($content, 10, -8));
}
}
return $content;
}
?>

View File

@@ -1,7 +0,0 @@
<?php
echo json_encode(
array(
"gitHash" => trim(`git rev-parse HEAD`)
)
);
?>

14
css/custom.css Normal file
View File

@@ -0,0 +1,14 @@
/*****************************************************
* Magic Mirror *
* Custom CSS *
* *
* By Michael Teeuw http://michaelteeuw.nl *
* MIT Licensed. *
* *
* Add any custom CSS below. *
* Changes to this files will be ignored by GIT. *
*****************************************************/
body {
}

View File

@@ -1,224 +1,229 @@
body,
html {
cursor: none;
overflow:hidden;
}
::-webkit-scrollbar {
display: none;
}
body {
margin: 60px;
position: absolute;
height: calc(100% - 120px);
width: calc(100% - 120px);
background: #000;
padding: 0px;
margin: 0px;
width: 100%;
height: 100%;
font-family: "HelveticaNeue-Light", sans-serif;
letter-spacing: -2px;
color: #fff;
font-size: 75px;
color: #aaa;
font-family: "Roboto Condensed", sans-serif;
font-weight: 400;
font-size: 2em;
line-height: 1.5em;
-webkit-font-smoothing: antialiased;
text-rendering: geometricprecision;
}
.wi {
line-height: 75px;
/**
* Default styles.
*/
.dimmed {
color: #666;
}
.top {
position: absolute;
top: 50px;
.normal {
color: #999;
}
.left {
position: absolute;
left: 50px;
}
.right {
position: absolute;
right: 50px;
text-align: right;
}
.center-ver {
position: absolute;
top: 50%;
height: 200px;
margin-top: -100px;
line-height: 100px;
}
.lower-third {
position: absolute;
top: 66.666%;
height: 200px;
margin-top: -100px;
line-height: 100px;
}
.center-hor {
position: absolute;
right: 50px;
left: 50px;
text-align: center;
}
.bottom {
position: absolute;
bottom: 50px;
}
.xxsmall,
.xsmall,
.small {
font-family: "HelveticaNeue-Medium", sans-serif;
letter-spacing: 0;
}
.xxsmall {
font-size: 15px;
}
.xxsmall .wi {
line-height: 15px;
.bright {
color: #fff;
}
.xsmall {
font-size: 20px;
}
.xsmall .wi {
font-size: 15px;
line-height: 20px;
}
.small {
font-size: 25px;
}
.small .wi {
font-size: 20px;
line-height: 25px;
}
.medium {
font-size: 35px;
letter-spacing: -1px;
font-family: "HelveticaNeue-Light", sans-serif;
}
.medium .wi {
font-size: 30px;
line-height: 35px;
}
.xdimmed {
color: #666;
.large {
font-size: 65px;
line-height: 65px;
}
.dimmed {
color: #aaa;
.xlarge {
font-size: 75px;
line-height: 75px;
letter-spacing: -3px;
}
.thin {
font-family: Roboto, sans-serif;
font-weight: 100;
}
.light {
font-family: "HelveticaNeue-UltraLight", sans-serif;
font-family: "Roboto Condensed", sans-serif;
font-weight: 300;
}
.icon {
position: relative;
top: -10px;
display: inline-block;
font-size: 45px;
padding-right: 5px;
font-weight: 100;
margin-right: 10px;
}
.icon-small {
position: relative;
display: inline-block;
font-size: 20px;
padding-left: 10px;
padding-right: -10px;
font-weight: 100;
}
.time .sec {
font-size: 25px;
color: #666;
padding-left: 5px;
position: relative;
top: -35px;
}
.forecast-table {
float: right;
text-align: right;
font-size: 20px;
line-height: 20px;
}
.forecast-table .day,
.forecast-table .temp-min,
.forecast-table .temp-max {
width: 50px;
text-align: right;
}
.forecast-table .temp-max {
width: 60px;
}
.forecast-table .day {
color: #999;
}
.calendar-table {
font-size: 14px;
line-height: 20px;
margin-top: 10px;
}
.calendar-table .days {
padding-left: 20px;
text-align: right;
}
.dishwasher {
background-color: white;
color: black;
margin: 0 200px;
font-size: 60px;
border-radius: 1000px;
border-radius: 1200px;
display: none;
}
@font-face {
font-family: 'HelveticaNeue-UltraLight';
src: url('font/HelveticaNeue-UltraLight.eot');
/* IE9 Compat Modes */
src: url('font/HelveticaNeue-UltraLight.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('font/HelveticaNeue-UltraLight.woff') format('woff'), /* Modern Browsers */
url('font/HelveticaNeue-UltraLight.ttf') format('truetype'), /* Safari, Android, iOS */
url('font/HelveticaNeue-UltraLight.svg#9453ea8da727d260bcdbfa605bdbb5d2') format('svg');
/* Legacy iOS */
font-style: normal;
font-weight: 100;
}
@font-face {
font-family: 'HelveticaNeue-Medium';
src: url('font/HelveticaNeue-Medium.eot');
/* IE9 Compat Modes */
src: url('font/HelveticaNeue-Medium.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('font/HelveticaNeue-Medium.woff') format('woff'), /* Modern Browsers */
url('font/HelveticaNeue-Medium.ttf') format('truetype'), /* Safari, Android, iOS */
url('font/HelveticaNeue-Medium.svg#d7af0fd9278f330eed98b60dddea7bd6') format('svg');
/* Legacy iOS */
font-style: normal;
.regular {
font-family: "Roboto Condensed", sans-serif;
font-weight: 400;
}
@font-face {
font-family: 'HelveticaNeue-Light';
src: url('font/HelveticaNeue-Light.eot');
/* IE9 Compat Modes */
src: url('font/HelveticaNeue-Light.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */
url('font/HelveticaNeue-Light.woff') format('woff'), /* Modern Browsers */
url('font/HelveticaNeue-Light.ttf') format('truetype'), /* Safari, Android, iOS */
url('font/HelveticaNeue-Light.svg#7384ecabcada72f0e077cd45d8e1c705') format('svg');
/* Legacy iOS */
font-style: normal;
font-weight: 200;
}
.bold {
font-family: "Roboto Condensed", sans-serif;
font-weight: 700;
}
.align-right {
text-align: right;
}
.align-left {
text-align: left;
}
header {
text-transform: uppercase;
font-size: 15px;
font-family: "Roboto Condensed";
font-weight: 400;
border-bottom: 1px solid #666;
line-height: 15px;
padding-bottom: 5px;
margin-bottom: 10px;
color: #999;
}
sup {
font-size: 50%;
line-height: 50%;
}
/**
* Module styles.
*/
.module {
margin-top: 30px;
}
.module:first-child {
margin-top: 0;
}
/**
* Region Definitions.
*/
.region {
position: absolute;
}
.region.fullscreen {
position: absolute;
top: -60px;
left: -60px;
right: -60px;
bottom: -60px;
}
.region.right {
right: 0;
}
.region.top {
top: 0;
}
.region.top .container {
margin-bottom: 25px;
}
.region.top .container:empty {
margin-bottom: 0;
}
.region.top.center,
.region.bottom.center {
left: 50%;
-moz-transform: translateX(-50%);
-o-transform: translateX(-50%);
-webkit-transform: translateX(-50%);
-ms-transform: translateX(-50%);
transform: translateX(-50%);
}
.region.top.right,
.region.top.left,
.region.top.center {
top: 100%;
}
.region.bottom {
bottom: 0;
}
.region.bottom .container {
margin-top: 25px;
}
.region.bottom .container:empty {
margin-top: 0;
}
.region.bottom.right,
.region.bottom.center,
.region.bottom.left {
bottom: 100%;
}
.region.bar {
width: 100%;
text-align: center;
}
.region.third,
.region.middle.center {
width: 100%;
text-align: center;
-moz-transform: translateY(-50%);
-o-transform: translateY(-50%);
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
.region.upper.third {
top: 33%;
}
.region.middle.center {
top: 50%;
}
.region.lower.third {
top: 66%;
}
.region.left {
text-align: left;
}
.region.right {
text-align: right;
}
.region table {
width: 100%;
border-spacing: 0;
border-collapse: separate;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Binary file not shown.

202
fonts/LICENSE.txt Normal file
View File

@@ -0,0 +1,202 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

95
fonts/roboto.css Normal file
View File

@@ -0,0 +1,95 @@
@font-face {
font-family: Roboto;
font-style: normal;
font-weight: 100;
src:
local("Roboto Thin"),
local("Roboto-Thin"),
url("Roboto-Thin/Roboto-Thin.woff2") format("woff2"),
url("Roboto-Thin/Roboto-Thin.woff") format("woff"),
url("Roboto-Thin/Roboto-Thin.ttf") format("truetype");
}
@font-face {
font-family: "Roboto Condensed";
font-style: normal;
font-weight: 300;
src:
local("Roboto Condensed Light"),
local("RobotoCondensed-Light"),
url("RobotoCondensed-Light/RobotoCondensed-Light.woff2") format("woff2"),
url("RobotoCondensed-Light/RobotoCondensed-Light.woff") format("woff"),
url("RobotoCondensed-Light/RobotoCondensed-Light.ttf") format("truetype");
}
@font-face {
font-family: "Roboto Condensed";
font-style: normal;
font-weight: 400;
src:
local("Roboto Condensed"),
local("RobotoCondensed-Regular"),
url("RobotoCondensed-Regular/RobotoCondensed-Regular.woff2") format("woff2"),
url("RobotoCondensed-Regular/RobotoCondensed-Regular.woff") format("woff"),
url("RobotoCondensed-Regular/RobotoCondensed-Regular.ttf") format("truetype");
}
@font-face {
font-family: "Roboto Condensed";
font-style: normal;
font-weight: 700;
src:
local("Roboto Condensed Bold"),
local("RobotoCondensed-Bold"),
url("RobotoCondensed-Bold/RobotoCondensed-Bold.woff2") format("woff2"),
url("RobotoCondensed-Bold/RobotoCondensed-Bold.woff") format("woff"),
url("RobotoCondensed-Bold/RobotoCondensed-Bold.ttf") format("truetype");
}
@font-face {
font-family: Roboto;
font-style: normal;
font-weight: 400;
src:
local("Roboto"),
local("Roboto-Regular"),
url("Roboto-Regular/Roboto-Regular.woff2") format("woff2"),
url("Roboto-Regular/Roboto-Regular.woff") format("woff"),
url("Roboto-Regular/Roboto-Regular.ttf") format("truetype");
}
@font-face {
font-family: Roboto;
font-style: normal;
font-weight: 500;
src:
local("Roboto Medium"),
local("Roboto-Medium"),
url("Roboto-Medium/Roboto-Medium.woff2") format("woff2"),
url("Roboto-Medium/Roboto-Medium.woff") format("woff"),
url("Roboto-Medium/Roboto-Medium.ttf") format("truetype");
}
@font-face {
font-family: Roboto;
font-style: normal;
font-weight: 700;
src:
local("Roboto Bold"),
local("Roboto-Bold"),
url("Roboto-Bold/Roboto-Bold.woff2") format("woff2"),
url("Roboto-Bold/Roboto-Bold.woff") format("woff"),
url("Roboto-Bold/Roboto-Bold.ttf") format("truetype");
}
@font-face {
font-family: Roboto;
font-style: normal;
font-weight: 300;
src:
local("Roboto Light"),
local("Roboto-Light"),
url("Roboto-Light/Roboto-Light.woff2") format("woff2"),
url("Roboto-Light/Roboto-Light.woff") format("woff"),
url("Roboto-Light/Roboto-Light.ttf") format("truetype");
}

44
index.html Normal file
View File

@@ -0,0 +1,44 @@
<!DOCTYPE html>
<html>
<head>
<title>Magic Mirror</title>
<meta name="google" content="notranslate" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<link rel="stylesheet" type="text/css" href="css/main.css">
<link rel="stylesheet" type="text/css" href="fonts/roboto.css">
<!-- custom.css is loaded by the loader.js to make sure it's loaded after the module css files. -->
</head>
<body>
<div class="region fullscreen below"><div class="container"></div></div>
<div class="region top bar">
<div class="container"></div>
<div class="region top left"><div class="container"></div></div>
<div class="region top center"><div class="container"></div></div>
<div class="region top right"><div class="container"></div></div>
</div>
<div class="region upper third"><div class="container"></div></div>
<div class="region middle center"><div class="container"></div></div>
<div class="region lower third"><div class="container"><br/></div></div>
<div class="region bottom bar">
<div class="container"></div>
<div class="region bottom left"><div class="container"></div></div>
<div class="region bottom center"><div class="container"></div></div>
<div class="region bottom right"><div class="container"></div></div>
</div>
<div class="region fullscreen above"><div class="container"></div></div>
<script type="text/javascript" src="/socket.io/socket.io.js"></script>
<script type="text/javascript" src="js/defaults.js"></script>
<script type="text/javascript" src="config/config.js"></script>
<script type="text/javascript" src="vendor/vendor.js"></script>
<script type="text/javascript" src="modules/default/defaultmodules.js"></script>
<script type="text/javascript" src="js/logger.js"></script>
<script type="text/javascript" src="translations/translations.js"></script>
<script type="text/javascript" src="js/translator.js"></script>
<script type="text/javascript" src="js/class.js"></script>
<script type="text/javascript" src="js/module.js"></script>
<script type="text/javascript" src="js/loader.js"></script>
<script type="text/javascript" src="js/socketclient.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>

View File

@@ -1,39 +0,0 @@
<html>
<head>
<title>Magic Mirror</title>
<style type="text/css">
<?php include('css/main.css') ?>
</style>
<link rel="stylesheet" type="text/css" href="css/weather-icons.css">
<script type="text/javascript">
var gitHash = '<?php echo trim(`git rev-parse HEAD`) ?>';
</script>
<meta name="google" value="notranslate" />
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="top left"><div class="date small dimmed"></div><div class="time"></div><div class="calendar xxsmall"></div></div>
<div class="top right"><div class="windsun small dimmed"></div><div class="temp"></div><div class="forecast small dimmed"></div></div>
<div class="center-ver center-hor"><!-- <div class="dishwasher light">Vaatwasser is klaar!</div> --></div>
<div class="lower-third center-hor"><div class="compliment light"></div></div>
<div class="bottom center-hor"><div class="news medium"></div></div>
</div>
<script src="js/jquery.js"></script>
<script src="js/jquery.feedToJSON.js"></script>
<script src="js/ical_parser.js"></script>
<script src="js/moment-with-locales.min.js"></script>
<script src="js/config.js"></script>
<script src="js/rrule.js"></script>
<script src="js/version/version.js"></script>
<script src="js/calendar/calendar.js"></script>
<script src="js/compliments/compliments.js"></script>
<script src="js/weather/weather.js"></script>
<script src="js/time/time.js"></script>
<script src="js/news/news.js"></script>
<script src="js/main.js?nocache=<?php echo md5(microtime()) ?>"></script>
<!-- <script src="js/socket.io.min.js"></script> -->
</body>
</html>

118
installers/raspberry.sh Normal file
View File

@@ -0,0 +1,118 @@
#!/usr/bin/env bash
# This is an installer script for MagicMirror2. It works well enough
# that it can detect if you have Node installed, run a binary script
# and then download and run MagicMirror2.
echo -e "\e[0m"
echo '$$\ $$\ $$\ $$\ $$\ $$\ $$$$$$\'
echo '$$$\ $$$ | \__| $$$\ $$$ |\__| $$ __$$\'
echo '$$$$\ $$$$ | $$$$$$\ $$$$$$\ $$\ $$$$$$$\ $$$$\ $$$$ |$$\ $$$$$$\ $$$$$$\ $$$$$$\ $$$$$$\ \__/ $$ |'
echo '$$\$$\$$ $$ | \____$$\ $$ __$$\ $$ |$$ _____|$$\$$\$$ $$ |$$ |$$ __$$\ $$ __$$\ $$ __$$\ $$ __$$\ $$$$$$ |'
echo '$$ \$$$ $$ | $$$$$$$ |$$ / $$ |$$ |$$ / $$ \$$$ $$ |$$ |$$ | \__|$$ | \__|$$ / $$ |$$ | \__|$$ ____/'
echo '$$ |\$ /$$ |$$ __$$ |$$ | $$ |$$ |$$ | $$ |\$ /$$ |$$ |$$ | $$ | $$ | $$ |$$ | $$ |'
echo '$$ | \_/ $$ |\$$$$$$$ |\$$$$$$$ |$$ |\$$$$$$$\ $$ | \_/ $$ |$$ |$$ | $$ | \$$$$$$ |$$ | $$$$$$$$\'
echo '\__| \__| \_______| \____$$ |\__| \_______|\__| \__|\__|\__| \__| \______/ \__| \________|'
echo ' $$\ $$ |'
echo ' \$$$$$$ |'
echo ' \______/'
echo -e "\e[0m"
# Define the tested version of Node.js.
NODE_TESTED="v5.1.0"
#Determine which Pi is running.
ARM=$(uname -m)
#Check the Raspberry Pi version.
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."
exit;
fi
#define helper methods.
function version_gt() { test "$(echo "$@" | tr " " "\n" | sort -V | head -n 1)" != "$1"; }
function command_exists () { type "$1" &> /dev/null ;}
# Installing helper tools
echo -e "\e[96mInstalling helper tools ...\e[90m"
sudo apt-get install curl wget git build-essential unzip || exit
# Check if we need to install or upgrade Node.js.
echo -e "\e[96mCheck current Node installation ...\e[0m"
NODE_INSTALL=false
if command_exists node; then
echo -e "\e[0mNode currently installed. Checking version number.";
NODE_CURRENT=$(node -v)
echo -e "\e[0mMinimum Node version: \e[1m$NODE_TESTED\e[0m"
echo -e "\e[0mInstalled Node version: \e[1m$NODE_CURRENT\e[0m"
if version_gt $NODE_TESTED $NODE_CURRENT; then
echo -e "\e[96mNode should be upgraded.\e[0m"
NODE_INSTALL=true
#Check if a node process is currenlty running.
#If so abort installation.
if pgrep "node" > /dev/null; then
echo -e "\e[91mA Node process is currently running. Can't upgrade."
echo "Please quit all Node processes and restart the installer."
exit;
fi
else
echo -e "\e[92mNo Node.js upgrade nessecery.\e[0m"
fi
else
echo -e "\e[93mNode.js is not installed.\e[0m";
NODE_INSTALL=true
fi
# Install or upgare node if nessecery.
if $NODE_INSTALL; then
echo -e "\e[96mInstalling Node.js ...\e[90m"
#Fetch the latest version of Node.js from the selected branch
#The NODE_STABLE_BRANCH variable will need to be manually adjusted when a new branch is released. (e.g. 7.x)
#Only tested (stable) versions are recommended as newer versions could break MagicMirror.
NODE_STABLE_BRANCH="6.x"
curl -sL https://deb.nodesource.com/setup_$NODE_STABLE_BRANCH | sudo -E bash -
sudo apt-get install -y nodejs
echo -e "\e[92mNode.js installation Done!\e[0m"
fi
#Install magic mirror
cd ~
if [ -d "$HOME/MagicMirror" ] ; then
echo -e "\e[93mIt seems like MagicMirror is already installed."
echo -e "To prevent overwriting, the installer will be aborted."
echo -e "Please rename the \e[1m~/MagicMirror\e[0m\e[93m folder and try again.\e[0m"
echo ""
echo -e "If you want to upgrade your installation run \e[1m\e[97mgit pull\e[0m from the ~/MagicMirror directory."
echo ""
exit;
fi
echo -e "\e[96mCloning MagicMirror ...\e[90m"
if git clone https://github.com/MichMich/MagicMirror.git; then
echo -e "\e[92mCloning MagicMirror Done!\e[0m"
else
echo -e "\e[91mUnable to clone MagicMirror."
exit;
fi
cd ~/MagicMirror || exit
echo -e "\e[96mInstalling dependencies ...\e[90m"
if npm install; then
echo -e "\e[92mDependencies installation Done!\e[0m"
else
echo -e "\e[91mUnable to install dependencies!"
exit;
fi
echo " "
echo -e "\e[92mWe're ready! Run \e[1m\e[97mDISPLAY=:0 npm start\e[0m\e[92m from the ~/MagicMirror directory to start your MagicMirror.\e[0m"
echo " "
echo " "

142
js/app.js Normal file
View File

@@ -0,0 +1,142 @@
/* Magic Mirror
* The Core App (Server)
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*/
var fs = require("fs");
var Server = require(__dirname + "/server.js");
var defaultModules = require(__dirname + "/../modules/default/defaultmodules.js");
var path = require("path");
// The next part is here to prevent a major exception when there
// is no internet connection. This could probable be solved better.
process.on("uncaughtException", function (err) {
console.log("Whoops! There was an uncaught exception...");
console.error(err);
console.log("MagicMirror will not quit, but it might be a good idea to check why this happened. Maybe no internet connection?");
console.log("If you think this really is an issue, please open an issue on GitHub: https://github.com/MichMich/MagicMirror/issues");
});
/* App - The core app.
*/
var App = function() {
var nodeHelpers = [];
/* loadConfig(callback)
* Loads the config file. combines it with the defaults,
* and runs the callback with the found config as argument.
*
* argument callback function - The callback function.
*/
var loadConfig = function(callback) {
console.log("Loading config ...");
var defaults = require(__dirname + "/defaults.js");
var configFilename = path.resolve(__dirname + "/../config/config.js");
try {
fs.accessSync(configFilename, fs.F_OK);
var c = require(configFilename);
var config = Object.assign(defaults, c);
callback(config);
} catch (e) {
console.error("WARNING! Could not find config. Please create one.");
callback(defaults);
}
};
/* loadModule(module)
* Loads a specific module.
*
* argument module string - The name of the module (including subpath).
*/
var loadModule = function(module) {
var elements = module.split("/");
var moduleName = elements[elements.length - 1];
var moduleFolder = __dirname + "/../modules/" + module;
if (defaultModules.indexOf(moduleName) !== -1) {
moduleFolder = __dirname + "/../modules/default/" + module;
}
var helperPath = moduleFolder + "/node_helper.js";
var loadModule = true;
try {
fs.accessSync(helperPath, fs.R_OK);
} catch (e) {
loadModule = false;
console.log("No helper found for module: " + moduleName + ".");
}
if (loadModule) {
var Module = require(helperPath);
var m = new Module();
m.setName(moduleName);
m.setPath(path.resolve(moduleFolder));
nodeHelpers.push(m);
}
};
/* loadModules(modules)
* Loads all modules.
*
* argument module string - The name of the module (including subpath).
*/
var loadModules = function(modules) {
console.log("Loading module helpers ...");
for (var m in modules) {
loadModule(modules[m]);
}
console.log("All module helpers loaded.");
};
/* start(callback)
* This methods starts the core app.
* It loads the config, then it loads all modules.
* When it"s done it executs the callback with the config as argument.
*
* argument callback function - The callback function.
*/
this.start = function(callback) {
loadConfig(function(c) {
config = c;
var modules = [];
for (var m in config.modules) {
var module = config.modules[m];
if (modules.indexOf(module.module) === -1) {
modules.push(module.module);
}
}
loadModules(modules);
var server = new Server(config, function(app, io) {
console.log("Server started ...");
for (var h in nodeHelpers) {
var nodeHelper = nodeHelpers[h];
nodeHelper.setExpressApp(app);
nodeHelper.setSocketIO(io);
nodeHelper.start();
}
console.log("Sockets connected & modules started ...");
if (typeof callback === "function") {
callback(config);
}
});
});
};
};
module.exports = new App();

View File

@@ -1,139 +0,0 @@
var calendar = {
eventList: [],
calendarLocation: '.calendar',
updateInterval: 1000,
updateDataInterval: 60000,
fadeInterval: 1000,
intervalId: null,
dataIntervalId: null,
maximumEntries: config.calendar.maximumEntries || 10
}
calendar.updateData = function (callback) {
new ical_parser("controllers/calendar.php" + "?url="+encodeURIComponent(config.calendar.url), function(cal) {
var events = cal.getEvents();
this.eventList = [];
for (var i in events) {
var e = events[i];
for (var key in e) {
var value = e[key];
var seperator = key.search(';');
if (seperator >= 0) {
var mainKey = key.substring(0,seperator);
var subKey = key.substring(seperator+1);
var dt;
if (subKey == 'VALUE=DATE') {
//date
dt = new Date(value.substring(0,4), value.substring(4,6) - 1, value.substring(6,8));
} else {
//time
dt = new Date(value.substring(0,4), value.substring(4,6) - 1, value.substring(6,8), value.substring(9,11), value.substring(11,13), value.substring(13,15));
}
if (mainKey == 'DTSTART') e.startDate = dt;
if (mainKey == 'DTEND') e.endDate = dt;
}
}
if (e.startDate == undefined){
//some old events in Gmail Calendar is "start_date"
//FIXME: problems with Gmail's TimeZone
var days = moment(e.DTSTART).diff(moment(), 'days');
var seconds = moment(e.DTSTART).diff(moment(), 'seconds');
var startDate = moment(e.DTSTART);
} else {
var days = moment(e.startDate).diff(moment(), 'days');
var seconds = moment(e.startDate).diff(moment(), 'seconds');
var startDate = moment(e.startDate);
}
//only add fututre events, days doesn't work, we need to check seconds
if (seconds >= 0) {
if (seconds <= 60*60*5 || seconds >= 60*60*24*2) {
var time_string = moment(startDate).fromNow();
}else {
var time_string = moment(startDate).calendar()
}
if (!e.RRULE) {
this.eventList.push({'description':e.SUMMARY,'seconds':seconds,'days':time_string});
}
e.seconds = seconds;
}
// Special handling for rrule events
if (e.RRULE) {
var options = new RRule.parseString(e.RRULE);
options.dtstart = e.startDate;
var rule = new RRule(options);
var oneYear = new Date();
oneYear.setFullYear(oneYear.getFullYear() + 1);
var dates = rule.between(new Date(), oneYear, true, function (date, i){return i < 10});
for (date in dates) {
var dt = new Date(dates[date]);
var days = moment(dt).diff(moment(), 'days');
var seconds = moment(dt).diff(moment(), 'seconds');
var startDate = moment(dt);
if (seconds >= 0) {
if (seconds <= 60*60*5 || seconds >= 60*60*24*2) {
var time_string = moment(dt).fromNow();
} else {
var time_string = moment(dt).calendar()
}
this.eventList.push({'description':e.SUMMARY,'seconds':seconds,'days':time_string});
}
}
}
};
this.eventList = this.eventList.sort(function(a,b){return a.seconds-b.seconds});
// Limit the number of entries.
this.eventList = this.eventList.slice(0, calendar.maximumEntries);
if (callback !== undefined && Object.prototype.toString.call(callback) === '[object Function]') {
callback(this.eventList);
}
}.bind(this));
}
calendar.updateCalendar = function (eventList) {
table = $('<table/>').addClass('xsmall').addClass('calendar-table');
opacity = 1;
for (var i in eventList) {
var e = eventList[i];
var row = $('<tr/>').css('opacity',opacity);
row.append($('<td/>').html(e.description).addClass('description'));
row.append($('<td/>').html(e.days).addClass('days dimmed'));
table.append(row);
opacity -= 1 / eventList.length;
}
$(this.calendarLocation).updateWithText(table, this.fadeInterval);
}
calendar.init = function () {
this.updateData(this.updateCalendar.bind(this));
this.intervalId = setInterval(function () {
this.updateCalendar(this.eventList)
}.bind(this), this.updateInterval);
this.dataIntervalId = setInterval(function () {
this.updateData(this.updateCalendar.bind(this));
}.bind(this), this.updateDataInterval);
}

70
js/class.js Normal file
View File

@@ -0,0 +1,70 @@
/* Simple JavaScript Inheritance
* By John Resig http://ejohn.org/
* MIT Licensed.
*/
// Inspired by base2 and Prototype
(function() {
var initializing = false;
var fnTest = /xyz/.test(function() {xyz;}) ? /\b_super\b/ : /.*/;
// The base Class implementation (does nothing)
this.Class = function() {};
// Create a new Class that inherits from this class
Class.extend = function(prop) {
var _super = this.prototype;
// Instantiate a base class (but only create the instance,
// don't run the init constructor)
initializing = true;
var prototype = new this();
initializing = false;
// Copy the properties over onto the new prototype
for (var name in prop) {
// Check if we're overwriting an existing function
prototype[name] = typeof prop[name] == "function" &&
typeof _super[name] == "function" && fnTest.test(prop[name]) ?
(function(name, fn) {
return function() {
var tmp = this._super;
// Add a new ._super() method that is the same method
// but on the super-class
this._super = _super[name];
// The method only need to be bound temporarily, so we
// remove it when we're done executing
var ret = fn.apply(this, arguments);
this._super = tmp;
return ret;
};
})(name, prop[name]) :
prop[name];
}
// The dummy class constructor
function Class() {
// All construction is actually done in the init method
if (!initializing && this.init) {
this.init.apply(this, arguments);
}
}
// Populate our constructed prototype object
Class.prototype = prototype;
// Enforce the constructor to be what we expect
Class.prototype.constructor = Class;
// And make this class extendable
Class.extend = arguments.callee;
return Class;
};
})();
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = Class;}

View File

@@ -1,70 +0,0 @@
var compliments = {
complimentLocation: '.compliment',
currentCompliment: '',
complimentList: {
'morning': config.compliments.morning,
'afternoon': config.compliments.afternoon,
'evening': config.compliments.evening
},
updateInterval: config.compliments.interval || 30000,
fadeInterval: config.compliments.fadeInterval || 4000,
intervalId: null
};
/**
* Changes the compliment visible on the screen
*/
compliments.updateCompliment = function () {
var _list = [];
var hour = moment().hour();
// In the followign if statement we use .slice() on the
// compliments array to make a copy by value.
// This way the original array of compliments stays in tact.
if (hour >= 3 && hour < 12) {
// Morning compliments
_list = compliments.complimentList['morning'].slice();
} else if (hour >= 12 && hour < 17) {
// Afternoon compliments
_list = compliments.complimentList['afternoon'].slice();
} else if (hour >= 17 || hour < 3) {
// Evening compliments
_list = compliments.complimentList['evening'].slice();
} else {
// Edge case in case something weird happens
// This will select a compliment from all times of day
Object.keys(compliments.complimentList).forEach(function (_curr) {
_list = _list.concat(compliments.complimentList[_curr]).slice();
});
}
// Search for the location of the current compliment in the list
var _spliceIndex = _list.indexOf(compliments.currentCompliment);
// If it exists, remove it so we don't see it again
if (_spliceIndex !== -1) {
_list.splice(_spliceIndex, 1);
}
// Randomly select a location
var _randomIndex = Math.floor(Math.random() * _list.length);
compliments.currentCompliment = _list[_randomIndex];
$('.compliment').updateWithText(compliments.currentCompliment, compliments.fadeInterval);
}
compliments.init = function () {
this.updateCompliment();
this.intervalId = setInterval(function () {
this.updateCompliment();
}.bind(this), this.updateInterval)
}

View File

@@ -1,43 +0,0 @@
var config = {
lang: 'nl',
time: {
timeFormat: 12
},
weather: {
//change weather params here:
//units: metric or imperial
params: {
q: 'Baarn,Netherlands',
units: 'metric',
// if you want a different lang for the weather that what is set above, change it here
lang: 'nl',
APPID: 'YOUR_FREE_OPENWEATHER_API_KEY'
}
},
compliments: {
interval: 30000,
fadeInterval: 4000,
morning: [
'Good morning, handsome!',
'Enjoy your day!',
'How was your sleep?'
],
afternoon: [
'Hello, beauty!',
'You look sexy!',
'Looking good today!'
],
evening: [
'Wow, you look hot!',
'You look nice!',
'Hi, sexy!'
]
},
calendar: {
maximumEntries: 10,
url: "https://p01-calendarws.icloud.com/ca/subscribe/1/n6x7Farxpt7m9S8bHg1TGArSj7J6kanm_2KEoJPL5YIAk3y70FpRo4GyWwO-6QfHSY5mXtHcRGVxYZUf7U3HPDOTG5x0qYnno1Zr_VuKH2M"
},
news: {
feed: 'http://www.nytimes.com/services/xml/rss/nyt/HomePage.xml'
}
}

66
js/defaults.js Normal file
View File

@@ -0,0 +1,66 @@
/* exported defaults */
/* Magic Mirror
* Config Defauls
*
* By Michael Teeuw http://michaelteeuw.nl
* MIT Licensed.
*/
var defaults = {
port: 8080,
language: "en",
timeFormat: 24,
units: "metric",
modules: [
{
module: "helloworld",
position: "upper_third",
classes: "large thin",
config: {
text: "Magic Mirror<sup>2</sup>"
}
},
{
module: "helloworld",
position: "middle_center",
config: {
text: "Please create a config file."
}
},
{
module: "helloworld",
position: "middle_center",
classes: "small dimmed",
config: {
text: "See README for more information."
}
},
{
module: "helloworld",
position: "middle_center",
classes: "xsmall",
config: {
text: "If you get this message while your config file is already<br>created, your config file probably contains an error.<br>Use a JavaScript linter to validate your file."
}
},
{
module: "helloworld",
position: "bottom_bar",
classes: "xsmall dimmed",
config: {
text: "www.michaelteeuw.nl"
}
},
],
paths: {
modules: "modules",
vendor: "vendor"
},
};
/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {module.exports = defaults;}

66
js/electron.js Normal file
View File

@@ -0,0 +1,66 @@
"use strict";
const Server = require(__dirname + "/server.js");
const electron = require("electron");
const core = require(__dirname + "/app.js");
// Config
var config = {};
// Module to control application life.
const app = electron.app;
// Module to create native browser window.
const BrowserWindow = electron.BrowserWindow;
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow;
function createWindow() {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600, fullscreen: true, autoHideMenuBar: true, darkTheme: true, webPreferences: {nodeIntegration: false}});
// and load the index.html of the app.
//mainWindow.loadURL('file://' + __dirname + '../../index.html');
mainWindow.loadURL("http://localhost:" + config.port);
// Open the DevTools.
//mainWindow.webContents.openDevTools();
// Emitted when the window is closed.
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;
});
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on("ready", function() {
console.log("Launching application.");
createWindow();
});
// 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();
}
});
app.on("activate", function() {
// On OS X it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
createWindow();
}
});
// Start the core application.
// This starts all node helpers and starts the webserver.
core.start(function(c) {
config = c;
});

Some files were not shown because too many files have changed in this diff Show More