3 Commits
6 changed files with 36 additions and 8 deletions
+17 -1
View File
@@ -12,6 +12,7 @@
overflow: hidden; overflow: hidden;
padding: 42px 48px; padding: 42px 48px;
background: #11110f; background: #11110f;
text-align: left;
} }
.MMM-NextcloudCookbook .ncc-qr { .MMM-NextcloudCookbook .ncc-qr {
@@ -46,8 +47,14 @@
height: 144px; height: 144px;
} }
.MMM-NextcloudCookbook .ncc-recipe header {
box-sizing: border-box;
min-height: 175px;
padding-right: 220px;
}
.MMM-NextcloudCookbook .ncc-recipe h1 { .MMM-NextcloudCookbook .ncc-recipe h1 {
margin: 0 220px calc(26px * var(--ncc-type-scale)) 0; margin: 0 0 calc(26px * var(--ncc-type-scale));
color: #fff6d8; color: #fff6d8;
font-size: calc(82px * var(--ncc-type-scale)); font-size: calc(82px * var(--ncc-type-scale));
line-height: 1.08; line-height: 1.08;
@@ -55,6 +62,7 @@
.MMM-NextcloudCookbook .ncc-meta { .MMM-NextcloudCookbook .ncc-meta {
display: flex; display: flex;
flex-wrap: wrap;
gap: 10px 22px; gap: 10px 22px;
align-items: baseline; align-items: baseline;
margin: 0 0 calc(36px * var(--ncc-type-scale)); margin: 0 0 calc(36px * var(--ncc-type-scale));
@@ -71,6 +79,14 @@
} }
.MMM-NextcloudCookbook .ncc-columns { .MMM-NextcloudCookbook .ncc-columns {
display: block;
}
.MMM-NextcloudCookbook .ncc-layout-stacked section:first-child {
margin-bottom: calc(42px * var(--ncc-type-scale));
}
.MMM-NextcloudCookbook .ncc-layout-side-by-side {
display: grid; display: grid;
grid-template-columns: minmax(260px, 0.8fr) minmax(400px, 1.4fr); grid-template-columns: minmax(260px, 0.8fr) minmax(400px, 1.4fr);
gap: 42px; gap: 42px;
+6 -2
View File
@@ -5,6 +5,7 @@ Module.register("MMM-NextcloudCookbook", {
controlPath: "/MMM-NextcloudCookbook/control", controlPath: "/MMM-NextcloudCookbook/control",
controlUrl: "", controlUrl: "",
animationSpeed: 400, animationSpeed: 400,
layout: "stacked",
shareUrl: "", shareUrl: "",
sharePassword: "" sharePassword: ""
}, },
@@ -97,7 +98,9 @@ Module.register("MMM-NextcloudCookbook", {
const qrLabel = document.createElement("span"); const qrLabel = document.createElement("span");
qrLabel.textContent = "Recipe mode control:"; qrLabel.textContent = "Recipe mode control:";
const qrImage = document.createElement("img"); const qrImage = document.createElement("img");
qrImage.src = "/MMM-NextcloudCookbook/qr.svg"; const qrParameters = new URLSearchParams();
if (this.config.controlUrl) qrParameters.set("url", this.config.controlUrl);
qrImage.src = `/MMM-NextcloudCookbook/qr.svg${qrParameters.size ? `?${qrParameters}` : ""}`;
qrImage.alt = "Recipe controller QR code"; qrImage.alt = "Recipe controller QR code";
qr.append(qrLabel, qrImage); qr.append(qrLabel, qrImage);
root.appendChild(qr); root.appendChild(qr);
@@ -154,7 +157,8 @@ Module.register("MMM-NextcloudCookbook", {
article.appendChild(header); article.appendChild(header);
const columns = document.createElement("div"); const columns = document.createElement("div");
columns.className = "ncc-columns"; const layout = this.config.layout === "side-by-side" ? "side-by-side" : "stacked";
columns.className = `ncc-columns ncc-layout-${layout}`;
const ingredients = document.createElement("section"); const ingredients = document.createElement("section");
const ingredientsTitle = document.createElement("h2"); const ingredientsTitle = document.createElement("h2");
+8 -1
View File
@@ -16,11 +16,18 @@ link; it should look like `https://cloud.example.test/s/SHARE_TOKEN`.
position: "bottom_right", position: "bottom_right",
config: { config: {
shareUrl: "https://cloud.example.test/s/SHARE_TOKEN", shareUrl: "https://cloud.example.test/s/SHARE_TOKEN",
controlUrl: "http://mirror.example.test:8080/MMM-NextcloudCookbook/control" controlUrl: "http://mirror.example.test:8080/MMM-NextcloudCookbook/control",
layout: "stacked"
} }
} }
``` ```
`layout` controls the full-screen recipe arrangement. Its default value,
`"stacked"`, displays the ingredients above the instructions. Set it to
`"side-by-side"` to display ingredients and instructions in two columns. Both
layouts automatically enlarge the recipe to make the best use of the available
screen while keeping all of its content visible.
The configured `position` controls where the QR controller appears during the The configured `position` controls where the QR controller appears during the
normal MagicMirror layout. When a recipe is activated, the module displays a normal MagicMirror layout. When a recipe is activated, the module displays a
fixed full-screen overlay regardless of that region. Exiting recipe mode fixed full-screen overlay regardless of that region. Exiting recipe mode
+2 -1
View File
@@ -57,7 +57,8 @@ module.exports = NodeHelper.create({
); );
this.expressApp.get("/MMM-NextcloudCookbook/qr.svg", async (request, response, next) => { this.expressApp.get("/MMM-NextcloudCookbook/qr.svg", async (request, response, next) => {
try { try {
const url = this.config.controlUrl const url = request.query.url
|| this.config.controlUrl
|| `${request.protocol}://${request.get("host")}${this.config.controlPath}`; || `${request.protocol}://${request.get("host")}${this.config.controlPath}`;
response.type("image/svg+xml").send(await QRCode.toString(url, { type: "svg", margin: 1 })); response.type("image/svg+xml").send(await QRCode.toString(url, { type: "svg", margin: 1 }));
} catch (error) { } catch (error) {
+2 -2
View File
@@ -1,12 +1,12 @@
{ {
"name": "mmm-nextcloud-cookbook", "name": "mmm-nextcloud-cookbook",
"version": "0.1.0", "version": "0.2.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "mmm-nextcloud-cookbook", "name": "mmm-nextcloud-cookbook",
"version": "0.1.0", "version": "0.2.0",
"dependencies": { "dependencies": {
"fast-xml-parser": "5.10.1", "fast-xml-parser": "5.10.1",
"qrcode": "1.5.4" "qrcode": "1.5.4"
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "mmm-nextcloud-cookbook", "name": "mmm-nextcloud-cookbook",
"version": "0.1.0", "version": "0.2.0",
"private": true, "private": true,
"description": "Display recipes from a Nextcloud Cookbook share on MagicMirror", "description": "Display recipes from a Nextcloud Cookbook share on MagicMirror",
"main": "node_helper.js", "main": "node_helper.js",