diff --git a/CHANGELOG.md b/CHANGELOG.md
index 6ee76be7..9f0cc2d6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -58,6 +58,7 @@ This project adheres to [Semantic Versioning](http://semver.org/).
- Added meta tags to support fullscreen mode on iOS (for server mode)
- Added `ignoreOldItems` and `ignoreOlderThan` options to the News Feed module
- Added test for MM_PORT enviroment variable.
+- Added a configurable Week section to the clock module.
### Fixed
- Update .gitignore to not ignore default modules folder.
diff --git a/js/server.js b/js/server.js
index cf9de6e1..36ebf740 100644
--- a/js/server.js
+++ b/js/server.js
@@ -15,6 +15,7 @@ var fs = require("fs");
var helmet = require("helmet");
var Server = function(config, callback) {
+ console.log("Starting server on port " + config.port + " ... ");
var port = config.port;
if (process.env.MM_PORT) {
diff --git a/modules/default/clock/README.md b/modules/default/clock/README.md
index f518a2b2..5c803316 100644
--- a/modules/default/clock/README.md
+++ b/modules/default/clock/README.md
@@ -30,6 +30,7 @@ The following properties can be configured:
| `showPeriodUpper` | Show the period (AM/PM) with 12 hour format as uppercase.
**Possible values:** `true` or `false`
**Default value:** `false`
| `clockBold` | Remove the colon and bold the minutes to make a more modern look.
**Possible values:** `true` or `false`
**Default value:** `false`
| `showDate` | Turn off or on the Date section.
**Possible values:** `true` or `false`
**Default value:** `true`
+| `showWeek` | Turn off or on the Week section.
**Possible values:** `true` or `false`
**Default value:** `false`
| `dateFormat` | Configure the date format as you like.
**Possible values:** [Docs](http://momentjs.com/docs/#/displaying/format/)
**Default value:** `"dddd, LL"`
| `displayType` | Display a digital clock, analog clock, or both together.
**Possible values:** `digital`, `analog`, or `both`
**Default value:** `digital`
| `analogSize` | **Specific to the analog clock.** Defines how large the analog display is.
**Possible values:** A positive number of pixels`
**Default value:** `200px`
diff --git a/modules/default/clock/clock.js b/modules/default/clock/clock.js
index 21e665e7..761f3948 100644
--- a/modules/default/clock/clock.js
+++ b/modules/default/clock/clock.js
@@ -16,6 +16,7 @@ Module.register("clock",{
showPeriodUpper: false,
clockBold: false,
showDate: true,
+ showWeek: false,
dateFormat: "dddd, LL",
/* specific to the analog clock */
@@ -61,10 +62,12 @@ Module.register("clock",{
var timeWrapper = document.createElement("div");
var secondsWrapper = document.createElement("sup");
var periodWrapper = document.createElement("span");
+ var weekWrapper = document.createElement("div")
// Style Wrappers
dateWrapper.className = "date normal medium";
timeWrapper.className = "time bright large light";
secondsWrapper.className = "dimmed";
+ weekWrapper.className = "week dimmed medium"
// Set content of wrappers.
// The moment().format("h") method has a bug on the Raspberry Pi.
@@ -90,6 +93,9 @@ Module.register("clock",{
if(this.config.showDate){
dateWrapper.innerHTML = now.format(this.config.dateFormat);
}
+ if (this.config.showWeek) {
+ weekWrapper.innerHTML = this.translate("WEEK") + " " + now.week();
+ }
timeWrapper.innerHTML = timeString;
secondsWrapper.innerHTML = now.format("ss");
if (this.config.showPeriodUpper) {
@@ -172,16 +178,25 @@ Module.register("clock",{
// Display only a digital clock
wrapper.appendChild(dateWrapper);
wrapper.appendChild(timeWrapper);
+ wrapper.appendChild(weekWrapper);
} else if (this.config.displayType === "analog") {
// Display only an analog clock
dateWrapper.style.textAlign = "center";
- dateWrapper.style.paddingBottom = "15px";
+
+ if (this.config.showWeek) {
+ weekWrapper.style.paddingBottom = "15px";
+ } else {
+ dateWrapper.style.paddingBottom = "15px";
+ }
+
if (this.config.analogShowDate === "top") {
wrapper.appendChild(dateWrapper);
+ wrapper.appendChild(weekWrapper);
wrapper.appendChild(clockCircle);
} else if (this.config.analogShowDate === "bottom") {
wrapper.appendChild(clockCircle);
wrapper.appendChild(dateWrapper);
+ wrapper.appendChild(weekWrapper);
} else {
wrapper.appendChild(clockCircle);
}
@@ -198,6 +213,7 @@ Module.register("clock",{
digitalWrapper.style.cssFloat = "none";
digitalWrapper.appendChild(dateWrapper);
digitalWrapper.appendChild(timeWrapper);
+ digitalWrapper.appendChild(weekWrapper);
var appendClocks = function(condition, pos1, pos2) {
var padding = [0,0,0,0];
diff --git a/tests/configs/modules/clock/clock_showWeek.js b/tests/configs/modules/clock/clock_showWeek.js
new file mode 100644
index 00000000..8a5f305a
--- /dev/null
+++ b/tests/configs/modules/clock/clock_showWeek.js
@@ -0,0 +1,32 @@
+/* Magic Mirror Test config for default clock module
+ *
+ * By Johan Hammar
+ * MIT Licensed.
+ */
+
+var config = {
+ port: 8080,
+ ipWhitelist: ["127.0.0.1", "::ffff:127.0.0.1", "::1"],
+
+ language: "en",
+ timeFormat: 12,
+ units: "metric",
+ electronOptions: {
+ webPreferences: {
+ nodeIntegration: true,
+ },
+ },
+
+ modules: [
+ {
+ module: "clock",
+ position: "middle_center",
+ config: {
+ showWeek: true
+ }
+ }
+ ]
+};
+
+/*************** DO NOT EDIT THE LINE BELOW ***************/
+if (typeof module !== "undefined") {module.exports = config;}
diff --git a/tests/e2e/modules/clock_spec.js b/tests/e2e/modules/clock_spec.js
index 8c6d9ff6..a24b38d6 100644
--- a/tests/e2e/modules/clock_spec.js
+++ b/tests/e2e/modules/clock_spec.js
@@ -100,4 +100,25 @@ describe("Clock module", function () {
});
});
+ describe("with showWeek config enabled", function() {
+ before(function() {
+ // Set config sample for use in test
+ process.env.MM_CONFIG_FILE = "tests/configs/modules/clock/clock_showWeek.js";
+ });
+
+ beforeEach(function (done) {
+ app.start().then(function() { done(); } );
+ });
+
+ afterEach(function (done) {
+ app.stop().then(function() { done(); });
+ });
+
+ it("shows week with correct format", function() {
+ const weekRegex = /^Week [0-9]{1,2}$/;
+ return app.client.waitUntilWindowLoaded()
+ .getText(".clock .week").should.eventually.match(weekRegex);
+ });
+ });
+
});
diff --git a/translations/en.json b/translations/en.json
index 46061738..a1472cf1 100644
--- a/translations/en.json
+++ b/translations/en.json
@@ -7,6 +7,8 @@
"RUNNING": "Ends in",
"EMPTY": "No upcoming events.",
+ "WEEK": "Week",
+
"N": "N",
"NNE": "NNE",
"NE": "NE",
diff --git a/translations/es.json b/translations/es.json
index 914a72ce..adee4dfc 100644
--- a/translations/es.json
+++ b/translations/es.json
@@ -7,6 +7,8 @@
"RUNNING": "Termina en",
"EMPTY": "No hay eventos programados.",
+ "WEEK": "Semana",
+
"N": "N",
"NNE": "NNE",
"NE": "NE",
diff --git a/translations/sv.json b/translations/sv.json
index 1fe3d48d..8025e51e 100644
--- a/translations/sv.json
+++ b/translations/sv.json
@@ -7,6 +7,8 @@
"RUNNING": "Slutar",
"EMPTY": "Inga kommande händelser.",
+ "WEEK": "Vecka",
+
"N": "N",
"NNE": "NNO",
"NE": "NO",
diff --git a/translations/zh_cn.json b/translations/zh_cn.json
index e7f69616..5efbb691 100644
--- a/translations/zh_cn.json
+++ b/translations/zh_cn.json
@@ -3,6 +3,7 @@
"TODAY": "今天",
"TOMORROW": "明天",
+ "DAYAFTERTOMORROW": "后天",
"RUNNING": "结束日期",
"EMPTY": "没有更多的活动。",
@@ -21,5 +22,9 @@
"W": "西风",
"WNW": "西偏北风",
"NW": "西北风",
- "NNW": "北偏西风"
+ "NNW": "北偏西风",
+
+ "UPDATE_NOTIFICATION": "MagicMirror² 有新的更新",
+ "UPDATE_NOTIFICATION_MODULE": "模块 MODULE_NAME 可更新",
+ "UPDATE_INFO": "当前已安装版本为 COMMIT_COUNT 落后于分支 BRANCH_NAME "
}