Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ planned for 2025-07-01

- [config] Allow to change module order for final renderer (or dynamicaly with CSS): Feature `order` in config. (#3762)
- [clock] Added option 'disableNextEvent' to hide next sun event (#3769)
- [clock] Implement short syntax for clock week (#3775)

### Changed

Expand Down
9 changes: 7 additions & 2 deletions modules/default/clock/clock.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Module.register("clock", {
clockBold: false,
showDate: true,
showTime: true,
showWeek: false,
showWeek: false, // options: true, false, 'short'
dateFormat: "dddd, LL",
sendNotifications: false,

Expand Down Expand Up @@ -224,7 +224,12 @@ Module.register("clock", {
}

if (this.config.showWeek) {
weekWrapper.innerHTML = this.translate("WEEK", { weekNumber: now.week() });
if (this.config.showWeek === "short") {
weekWrapper.innerHTML = this.translate("WEEK_SHORT", { weekNumber: now.week() });
} else {
weekWrapper.innerHTML = this.translate("WEEK", { weekNumber: now.week() });
}

digitalWrapper.appendChild(weekWrapper);
}

Expand Down
20 changes: 20 additions & 0 deletions tests/configs/modules/clock/clock_showWeek_short.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
let config = {
address: "0.0.0.0",
ipWhitelist: [],
timeFormat: 12,

modules: [
{
module: "clock",
position: "middle_center",
config: {
showWeek: "short"
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
21 changes: 21 additions & 0 deletions tests/configs/modules/clock/de/clock_showWeek.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
let config = {
address: "0.0.0.0",
ipWhitelist: [],
language: "de",
timeFormat: 12,

modules: [
{
module: "clock",
position: "middle_center",
config: {
showWeek: true
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
21 changes: 21 additions & 0 deletions tests/configs/modules/clock/de/clock_showWeek_short.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
let config = {
address: "0.0.0.0",
ipWhitelist: [],
language: "de",
timeFormat: 12,

modules: [
{
module: "clock",
position: "middle_center",
config: {
showWeek: "short"
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
21 changes: 21 additions & 0 deletions tests/configs/modules/clock/es/clock_showWeek_short.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
let config = {
address: "0.0.0.0",
ipWhitelist: [],
language: "es",
timeFormat: 12,

modules: [
{
module: "clock",
position: "middle_center",
config: {
showWeek: "short"
}
}
]
};

/*************** DO NOT EDIT THE LINE BELOW ***************/
if (typeof module !== "undefined") {
module.exports = config;
}
31 changes: 31 additions & 0 deletions tests/e2e/modules/clock_de_spec.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
const helpers = require("../helpers/global-setup");

describe("Clock set to german language module", () => {
afterAll(async () => {
await helpers.stopApplication();
});

describe("with showWeek config enabled", () => {
beforeAll(async () => {
await helpers.startApplication("tests/configs/modules/clock/de/clock_showWeek.js");
await helpers.getDocument();
});

it("shows week with correct format", async () => {
const weekRegex = /^[0-9]{1,2}. Kalenderwoche$/;
await expect(helpers.testMatch(".clock .week", weekRegex)).resolves.toBe(true);
});
});

describe("with showWeek short config enabled", () => {
beforeAll(async () => {
await helpers.startApplication("tests/configs/modules/clock/de/clock_showWeek_short.js");
await helpers.getDocument();
});

it("shows week with correct format", async () => {
const weekRegex = /^[0-9]{1,2}KW$/;
await expect(helpers.testMatch(".clock .week", weekRegex)).resolves.toBe(true);
});
});
});
12 changes: 12 additions & 0 deletions tests/e2e/modules/clock_es_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,16 @@ describe("Clock set to spanish language module", () => {
await expect(helpers.testMatch(".clock .week", weekRegex)).resolves.toBe(true);
});
});

describe("with showWeek short config enabled", () => {
beforeAll(async () => {
await helpers.startApplication("tests/configs/modules/clock/es/clock_showWeek_short.js");
await helpers.getDocument();
});

it("shows week with correct format", async () => {
const weekRegex = /^S[0-9]{1,2}$/;
await expect(helpers.testMatch(".clock .week", weekRegex)).resolves.toBe(true);
});
});
});
20 changes: 20 additions & 0 deletions tests/e2e/modules/clock_spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,26 @@ describe("Clock module", () => {
});
});

describe("with showWeek short config enabled", () => {
beforeAll(async () => {
await helpers.startApplication("tests/configs/modules/clock/clock_showWeek_short.js");
await helpers.getDocument();
});

it("should show the week in the correct format", async () => {
const weekRegex = /^W[0-9]{1,2}$/;
await expect(helpers.testMatch(".clock .week", weekRegex)).resolves.toBe(true);
});

it("should show the week with the correct number of week of year", async () => {
const currentWeekNumber = moment().week();
const weekToShow = `W${currentWeekNumber}`;
const elem = await helpers.waitForElement(".clock .week");
expect(elem).not.toBeNull();
expect(elem.textContent).toBe(weekToShow);
});
});

describe("with analog clock face enabled", () => {
beforeAll(async () => {
await helpers.startApplication("tests/configs/modules/clock/clock_analog.js");
Expand Down
1 change: 1 addition & 0 deletions translations/de.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"RUNNING": "noch",
"EMPTY": "Keine Termine.",
"WEEK": "{weekNumber}. Kalenderwoche",
"WEEK_SHORT": "{weekNumber}KW",

"N": "N",
"NNE": "NNO",
Expand Down
1 change: 1 addition & 0 deletions translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"RUNNING": "Ends in",
"EMPTY": "No upcoming events.",
"WEEK": "Week {weekNumber}",
"WEEK_SHORT": "W{weekNumber}",

"N": "N",
"NNE": "NNE",
Expand Down
1 change: 1 addition & 0 deletions translations/es.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"RUNNING": "Termina en",
"EMPTY": "No hay eventos programados.",
"WEEK": "Semana {weekNumber}",
"WEEK_SHORT": "S{weekNumber}",

"N": "N",
"NNE": "NNE",
Expand Down
1 change: 1 addition & 0 deletions translations/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"RUNNING": "Se termine dans",
"EMPTY": "Aucun RDV à venir.",
"WEEK": "Semaine {weekNumber}",
"WEEK_SHORT": "S{weekNumber}",

"N": "N",
"NNE": "NNE",
Expand Down