From 8207d7801064bcc9642a1741d1040448733147bd Mon Sep 17 00:00:00 2001 From: Ewan Lyon Date: Mon, 22 Sep 2025 09:04:41 +1000 Subject: [PATCH 1/2] docs: add new dashboard and graphics properties --- docs/concepts-and-terminology.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/concepts-and-terminology.md b/docs/concepts-and-terminology.md index ba8b650a..1188122b 100644 --- a/docs/concepts-and-terminology.md +++ b/docs/concepts-and-terminology.md @@ -27,6 +27,10 @@ Graphics are defined in your bundle's `package.json` file, in the `nodecg.graphi - `singleInstance`, an optional property, that only allows your graphic to be open in one place at a time. - This is useful in scenarios where your graphic has fragile or highly stateful logic. - Ideally, you'd never need to use `singleInstance`. However, it is sometimes hard to avoid, and can be the fastest route to shipping a complex graphic. +- `name`, optional, a custom display name. +- `description`, optional, text that displays below the graphic +- `group`, optional, what sub-group the graphic should be in. (Graphics are already grouped by bundle). +- `order`, optional, a number which determines where the graphic should be in the list ### Related Docs {#graphics-manifest} @@ -51,6 +55,7 @@ The dashboard is where all your controls for your graphics end up. Each panel is - Each `fullbleed` panel gets its own dedicated workspace. - `dialog`, an optional property, that will turn the panel into a dialog that other panels are able to open. - `dialogButtons`, an optional property, that will show buttons for `confirm`, `dismiss`, or both on the dialog. +- `workspaceOrder`, an optional property, that sets the order of the workspace as it appears in the tab list. ### Related Docs {#dashboard-manifest} From f85c749b45fe0b20259297bdecca95522dd2393e Mon Sep 17 00:00:00 2001 From: Ewan Lyon Date: Mon, 22 Sep 2025 09:54:01 +1000 Subject: [PATCH 2/2] docs: added config table and example image --- .vscode/settings.json | 3 +- docs/manifest.md | 65 +++++++++++++++++++++++++++++++++-- static/img/graphics-page.png | Bin 0 -> 36157 bytes 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 static/img/graphics-page.png diff --git a/.vscode/settings.json b/.vscode/settings.json index a6de2e48..e2f7900d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,4 @@ { - "prettier.enable": false + "prettier.enable": false, + "markdown.validate.enabled": false } diff --git a/docs/manifest.md b/docs/manifest.md index d35ef287..b8a49286 100644 --- a/docs/manifest.md +++ b/docs/manifest.md @@ -118,11 +118,70 @@ less boilerplate. This field is only required if your bundle has dashboard panels. +### Config {#dashboard-panel-config} + +| Name | Type | Attributes | Default | Description | +| -------------- | ------- | ---------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | +| name | string | | | Internal name of the dashboard panel. | +| title | string | | | Title of the dashboard panel as it appears in the NodeCG workspace. | +| file | string | | | The location of the dashboard panel relative to "/dashboard". | +| width | number | optional | 2 | The width of the panel on the dashboard. Valid values are 1-8. | +| headerColor | string | optional | | A hexadecimal color value that will change the color of the panel's header. | +| workspace | string | optional | | The name of the workspace the panel should be placed in. (Workspaces are shared between bundles). | +| workspaceOrder | number | optional | | A number which sets the order of the workspace as it appears in the tab list. | +| fullbleed | boolean | optional | false | Whether or not the panel should be fullbleed in its own workspace. | +| dialog | boolean | optional | false | Whether or not the panel is a dialog. | +| dialogButtons | array | optional | | An array of buttons to show on the dialog. Each button is an object with a `name` and `type` property. The `type` can be either `confirm` or `dismiss`. | + +### Example {#dashboard-panels-example} + +```json +"dashboardPanels": [ + { + "name": "sample-panel", + "title": "Sample Panel", + "file": "sample-panel.html", + "width": 2, + "headerColor": "#2d4e8a", + "workspace": "My Workspace", + "workspaceOrder": 1 + }, +] +``` + ## nodecg.graphics {#graphics} An array of objects, each object describing a graphic. -Each graphic must have a `file`, `width`, and `height`. `file` is relative to the bundle's `graphics` folder. -If you wish to enforce that your graphic only ever be open in one place at a time, set `singleInstance` to `true` -(defaults to `false`). This field is only required if your bundle has graphics. + +### Config {#graphics-config} + +| Name | Type | Attributes | Default | Description | +| -------------- | ------- | ---------- | ------- | ---------------------------------------------------------------------------------- | +| file | string | | | The location of the graphic relative to "/graphics". | +| width | number | | | The designed width of the graphic. | +| height | number | | | The designed height of the graphic. | +| name | string | optional | | A custom display name for the graphic. | +| description | string | optional | | Text that displays below the graphic in the dashboard. | +| group | string | optional | | What sub-group the graphic should be in. (Graphics are already grouped by bundle). | +| order | number | optional | | A number which determines where the graphic should be in the list. | +| singleInstance | boolean | optional | false | Whether or not the graphic can be opened in multiple places at once. | + +### Example {#graphics-example} + +```json +"graphics": [ + { + "file": "main.html", + "width": 1920, + "height": 1080, + "name": "Main Graphic", + "description": "This is the main graphic.", + "group": "Overlays", + "order": 1, + } +] +``` + +![Graphics page example](/img/graphics-page.png) diff --git a/static/img/graphics-page.png b/static/img/graphics-page.png new file mode 100644 index 0000000000000000000000000000000000000000..20fdf07627fee89c7a1b626527b1b809bd70194b GIT binary patch literal 36157 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 VUz@V;4&RS}l$g9|k?<$4{|kPJat{Ci literal 0 HcmV?d00001