mirror of
https://github.com/MichMich/MagicMirror.git
synced 2025-07-04 14:47:20 +00:00
Merge branch 'develop' into master
This commit is contained in:
commit
c3bfaa31ee
@ -14,6 +14,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Replace HTML tables with markdown tables in README files.
|
- Replace HTML tables with markdown tables in README files.
|
||||||
- Added `DAYAFTERTOMORROW`, `UPDATE_NOTIFICATION` and `UPDATE_NOTIFICATION_MODULE` to Finnish translations.
|
- Added `DAYAFTERTOMORROW`, `UPDATE_NOTIFICATION` and `UPDATE_NOTIFICATION_MODULE` to Finnish translations.
|
||||||
- Run `npm test` on Travis automatically
|
- Run `npm test` on Travis automatically
|
||||||
|
- Show the splash screen image even when is reboot or halted.
|
||||||
|
- Added some missing translaton strings in the sv.json file.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
- Add loaded function to modules, providing an async callback.
|
- Add loaded function to modules, providing an async callback.
|
||||||
@ -30,6 +32,8 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Enable ability to set configuration file by the enviroment variable called MM_CONFIG_FILE.
|
- Enable ability to set configuration file by the enviroment variable called MM_CONFIG_FILE.
|
||||||
- Option to give each calendar a different color
|
- Option to give each calendar a different color
|
||||||
- Option for colored min-temp and max-temp
|
- Option for colored min-temp and max-temp
|
||||||
|
- Add test e2e helloworld
|
||||||
|
- Add test e2e enviroment
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
- Update .gitignore to not ignore default modules folder.
|
- Update .gitignore to not ignore default modules folder.
|
||||||
@ -38,6 +42,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
|
|||||||
- Fix an issue where the analog clock looked scrambled. ([#611](https://github.com/MichMich/MagicMirror/issues/611))
|
- Fix an issue where the analog clock looked scrambled. ([#611](https://github.com/MichMich/MagicMirror/issues/611))
|
||||||
- If units is set to imperial, the showRainAmount option of weatherforecast will show the correct unit.
|
- If units is set to imperial, the showRainAmount option of weatherforecast will show the correct unit.
|
||||||
- Module currentWeather: check if temperature received from api is defined.
|
- Module currentWeather: check if temperature received from api is defined.
|
||||||
|
- Fix an issue with module hidden status changing to `true` although lock string prevented showing it
|
||||||
|
|
||||||
## [2.1.0] - 2016-12-31
|
## [2.1.0] - 2016-12-31
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
<div class="region fullscreen above"><div class="container"></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="/socket.io/socket.io.js"></script>
|
||||||
<script type="text/javascript" src="js/defaults.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="#CONFIG_FILE#"></script>
|
||||||
<script type="text/javascript" src="vendor/vendor.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="modules/default/defaultmodules.js"></script>
|
||||||
<script type="text/javascript" src="js/logger.js"></script>
|
<script type="text/javascript" src="js/logger.js"></script>
|
||||||
|
@ -49,7 +49,7 @@ var App = function() {
|
|||||||
// For this check proposed to TestSuite
|
// For this check proposed to TestSuite
|
||||||
// https://forum.magicmirror.builders/topic/1456/test-suite-for-magicmirror/8
|
// https://forum.magicmirror.builders/topic/1456/test-suite-for-magicmirror/8
|
||||||
var configFilename = path.resolve(global.root_path + "/config/config.js");
|
var configFilename = path.resolve(global.root_path + "/config/config.js");
|
||||||
if (typeof(global.configuration_file) === "undefined" ) {
|
if (typeof(global.configuration_file) !== "undefined") {
|
||||||
configFilename = path.resolve(global.configuration_file);
|
configFilename = path.resolve(global.configuration_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,6 +232,8 @@ var MM = (function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module.hidden = false;
|
||||||
|
|
||||||
// If forced show, clean current lockstrings.
|
// If forced show, clean current lockstrings.
|
||||||
if (module.lockStrings.length !== 0 && options.force === true) {
|
if (module.lockStrings.length !== 0 && options.force === true) {
|
||||||
Log.log("Force show of module: " + module.name);
|
Log.log("Force show of module: " + module.name);
|
||||||
@ -504,7 +506,7 @@ var MM = (function() {
|
|||||||
* argument options object - Optional settings for the hide method.
|
* argument options object - Optional settings for the hide method.
|
||||||
*/
|
*/
|
||||||
showModule: function(module, speed, callback, options) {
|
showModule: function(module, speed, callback, options) {
|
||||||
module.hidden = false;
|
// do not change module.hidden yet, only if we really show it later
|
||||||
showModule(module, speed, callback, options);
|
showModule(module, speed, callback, options);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -37,6 +37,7 @@ var Server = function(config, callback) {
|
|||||||
app.use("/modules", express.static(path.resolve(global.root_path + "/modules")));
|
app.use("/modules", express.static(path.resolve(global.root_path + "/modules")));
|
||||||
app.use("/vendor", express.static(path.resolve(global.root_path + "/vendor")));
|
app.use("/vendor", express.static(path.resolve(global.root_path + "/vendor")));
|
||||||
app.use("/translations", express.static(path.resolve(global.root_path + "/translations")));
|
app.use("/translations", express.static(path.resolve(global.root_path + "/translations")));
|
||||||
|
app.use("/tests/confs", express.static(path.resolve(global.root_path + "/tests/confs")));
|
||||||
|
|
||||||
app.get("/version", function(req,res) {
|
app.get("/version", function(req,res) {
|
||||||
res.send(global.version);
|
res.send(global.version);
|
||||||
@ -46,6 +47,12 @@ var Server = function(config, callback) {
|
|||||||
var html = fs.readFileSync(path.resolve(global.root_path + "/index.html"), {encoding: "utf8"});
|
var html = fs.readFileSync(path.resolve(global.root_path + "/index.html"), {encoding: "utf8"});
|
||||||
html = html.replace("#VERSION#", global.version);
|
html = html.replace("#VERSION#", global.version);
|
||||||
|
|
||||||
|
configFile = "config/config.js";
|
||||||
|
if (typeof(global.configuration_file) !== "undefined") {
|
||||||
|
configFile = global.configuration_file;
|
||||||
|
}
|
||||||
|
html = html.replace("#CONFIG_FILE#", configFile);
|
||||||
|
|
||||||
res.send(html);
|
res.send(html);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -6,7 +6,8 @@
|
|||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "sh run-start.sh",
|
"start": "sh run-start.sh",
|
||||||
"postinstall": "sh installers/postinstall/postinstall.sh",
|
"postinstall": "sh installers/postinstall/postinstall.sh",
|
||||||
"test": "./node_modules/mocha/bin/mocha tests --recursive"
|
"test": "./node_modules/mocha/bin/mocha $(find tests -path '*js*' ! -ipath '*e2e*')",
|
||||||
|
"test:e2e": "./node_modules/mocha/bin/mocha tests/e2e --recursive"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
@ -36,6 +37,7 @@
|
|||||||
"grunt-stylelint": "latest",
|
"grunt-stylelint": "latest",
|
||||||
"grunt-yamllint": "latest",
|
"grunt-yamllint": "latest",
|
||||||
"mocha": "^3.2.0",
|
"mocha": "^3.2.0",
|
||||||
|
"spectron": "^3.4.1",
|
||||||
"stylelint-config-standard": "latest",
|
"stylelint-config-standard": "latest",
|
||||||
"time-grunt": "latest"
|
"time-grunt": "latest"
|
||||||
},
|
},
|
||||||
|
@ -1,7 +1,15 @@
|
|||||||
screen_width = Window.GetWidth();
|
screen_width = Window.GetWidth();
|
||||||
screen_height = Window.GetHeight();
|
screen_height = Window.GetHeight();
|
||||||
|
|
||||||
theme_image = Image("splash.png");
|
if (Plymouth.GetMode() != "shutdown")
|
||||||
|
{
|
||||||
|
theme_image = Image("splash.png");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
theme_image = Image("splash_halt.png");
|
||||||
|
}
|
||||||
|
|
||||||
image_width = theme_image.GetWidth();
|
image_width = theme_image.GetWidth();
|
||||||
image_height = theme_image.GetHeight();
|
image_height = theme_image.GetHeight();
|
||||||
|
|
||||||
@ -30,11 +38,8 @@ else
|
|||||||
image_y = (screen_height - image_height) / 2;
|
image_y = (screen_height - image_height) / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Plymouth.GetMode() != "shutdown")
|
sprite = Sprite (resized_image);
|
||||||
{
|
sprite.SetPosition (image_x, image_y, -100);
|
||||||
sprite = Sprite (resized_image);
|
|
||||||
sprite.SetPosition (image_x, image_y, -100);
|
|
||||||
}
|
|
||||||
|
|
||||||
message_sprite = Sprite();
|
message_sprite = Sprite();
|
||||||
message_sprite.SetPosition(screen_width * 0.1, screen_height * 0.9, 10000);
|
message_sprite.SetPosition(screen_width * 0.1, screen_height * 0.9, 10000);
|
||||||
|
BIN
splashscreen/splash_halt.png
Normal file
BIN
splashscreen/splash_halt.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 22 KiB |
25
tests/confs/env.js
Normal file
25
tests/confs/env.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/* Magic Mirror Test config sample enviroment
|
||||||
|
*
|
||||||
|
* By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
|
||||||
|
* MIT Licensed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
port: 8080,
|
||||||
|
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
|
||||||
|
|
||||||
|
language: "en",
|
||||||
|
timeFormat: 24,
|
||||||
|
units: "metric",
|
||||||
|
electronOptions: {
|
||||||
|
webPreferences: {
|
||||||
|
nodeIntegration: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
modules: [
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************** DO NOT EDIT THE LINE BELOW ***************/
|
||||||
|
if (typeof module !== "undefined") {module.exports = config;}
|
32
tests/confs/helloworld.js
Normal file
32
tests/confs/helloworld.js
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/* Magic Mirror Test config sample module hello world
|
||||||
|
*
|
||||||
|
* By Rodrigo Ramírez Norambuena https://rodrigoramirez.com
|
||||||
|
* MIT Licensed.
|
||||||
|
*/
|
||||||
|
|
||||||
|
var config = {
|
||||||
|
port: 8080,
|
||||||
|
ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
|
||||||
|
|
||||||
|
language: "en",
|
||||||
|
timeFormat: 24,
|
||||||
|
units: "metric",
|
||||||
|
electronOptions: {
|
||||||
|
webPreferences: {
|
||||||
|
nodeIntegration: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
modules: [
|
||||||
|
{
|
||||||
|
module: "helloworld",
|
||||||
|
position: "bottom_bar",
|
||||||
|
config: {
|
||||||
|
text: "Test HelloWorld Module"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
};
|
||||||
|
|
||||||
|
/*************** DO NOT EDIT THE LINE BELOW ***************/
|
||||||
|
if (typeof module !== "undefined") {module.exports = config;}
|
49
tests/e2e/env.js
Normal file
49
tests/e2e/env.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
const Application = require("spectron").Application;
|
||||||
|
const path = require("path");
|
||||||
|
const chai = require("chai");
|
||||||
|
const chaiAsPromised = require("chai-as-promised");
|
||||||
|
|
||||||
|
// Set config sample for use in test
|
||||||
|
process.env.MM_CONFIG_FILE = "tests/confs/env.js";
|
||||||
|
|
||||||
|
var electronPath = path.join(__dirname, "../../", "node_modules", ".bin", "electron");
|
||||||
|
|
||||||
|
if (process.platform === "win32") {
|
||||||
|
electronPath += ".cmd";
|
||||||
|
}
|
||||||
|
|
||||||
|
var appPath = path.join(__dirname, "../../js/electron.js");
|
||||||
|
|
||||||
|
var app = new Application({
|
||||||
|
path: electronPath,
|
||||||
|
args: [appPath]
|
||||||
|
});
|
||||||
|
|
||||||
|
global.before(function () {
|
||||||
|
chai.should();
|
||||||
|
chai.use(chaiAsPromised);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Test enviroment app electron", function () {
|
||||||
|
this.timeout(10000);
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
app.start().then(function() { done(); } );
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
app.stop().then(function() { done(); });
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it("open a window app and test if is open", function () {
|
||||||
|
return app.client.waitUntilWindowLoaded()
|
||||||
|
.getWindowCount().should.eventually.equal(1);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("tests the title", function () {
|
||||||
|
return app.client.waitUntilWindowLoaded()
|
||||||
|
.getTitle().should.eventually.equal("Magic Mirror");
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
42
tests/e2e/modules/helloworld.js
Normal file
42
tests/e2e/modules/helloworld.js
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
const Application = require("spectron").Application;
|
||||||
|
const path = require("path");
|
||||||
|
const chai = require("chai");
|
||||||
|
const chaiAsPromised = require("chai-as-promised");
|
||||||
|
|
||||||
|
// Set config sample for use in test
|
||||||
|
process.env.MM_CONFIG_FILE = "tests/confs/helloworld.js";
|
||||||
|
|
||||||
|
var electronPath = path.join(__dirname, "../../../", "node_modules", ".bin", "electron");
|
||||||
|
|
||||||
|
if (process.platform === "win32") {
|
||||||
|
electronPath += ".cmd";
|
||||||
|
}
|
||||||
|
|
||||||
|
var appPath = path.join(__dirname, "../../../js/electron.js");
|
||||||
|
|
||||||
|
var app = new Application({
|
||||||
|
path: electronPath,
|
||||||
|
args: [appPath]
|
||||||
|
});
|
||||||
|
|
||||||
|
global.before(function () {
|
||||||
|
chai.should();
|
||||||
|
chai.use(chaiAsPromised);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Test helloworld module", function () {
|
||||||
|
this.timeout(10000);
|
||||||
|
|
||||||
|
beforeEach(function (done) {
|
||||||
|
app.start().then(function() { done(); } );
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(function (done) {
|
||||||
|
app.stop().then(function() { done(); });
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Test message helloworld module", function () {
|
||||||
|
return app.client.waitUntilWindowLoaded()
|
||||||
|
.getText(".helloworld").should.eventually.equal("Test HelloWorld Module");
|
||||||
|
});
|
||||||
|
});
|
@ -5,6 +5,7 @@
|
|||||||
/* CALENDAR */
|
/* CALENDAR */
|
||||||
"TODAY": "Idag",
|
"TODAY": "Idag",
|
||||||
"TOMORROW": "Imorgon",
|
"TOMORROW": "Imorgon",
|
||||||
|
"DAYAFTERTOMORROW": "Iövermorgon",
|
||||||
"RUNNING": "Slutar",
|
"RUNNING": "Slutar",
|
||||||
"EMPTY": "Inga kommande händelser.",
|
"EMPTY": "Inga kommande händelser.",
|
||||||
|
|
||||||
@ -24,5 +25,10 @@
|
|||||||
"W": "V",
|
"W": "V",
|
||||||
"WNW": "VNV",
|
"WNW": "VNV",
|
||||||
"NW": "NV",
|
"NW": "NV",
|
||||||
"NNW": "NNV"
|
"NNW": "NNV",
|
||||||
|
|
||||||
|
/* UPDATE INFO */
|
||||||
|
"UPDATE_NOTIFICATION": "MagicMirror² uppdatering finns tillgänglig.",
|
||||||
|
"UPDATE_NOTIFICATION_MODULE": "Uppdatering finns tillgänglig av MODULE_NAME modulen.",
|
||||||
|
"UPDATE_INFO": "Denna installation ligger COMMIT_COUNT steg bakom BRANCH_NAME grenen."
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user