@meshmakers/octo-meshboard 3.4.1490 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -278,6 +278,29 @@ interface TableWidgetConfig {
|
|
|
278
278
|
}
|
|
279
279
|
```
|
|
280
280
|
|
|
281
|
+
**Texts (AB#5622).** The list inside the table (`mm-list-view`) takes its texts from
|
|
282
|
+
`MESHBOARD_MESSAGES` — "No records available.", pager texts, toolbar labels — merged over the
|
|
283
|
+
English defaults; the host sets them once (fixed object or a signal for a runtime language switch):
|
|
284
|
+
|
|
285
|
+
```typescript
|
|
286
|
+
providers: [
|
|
287
|
+
provideMeshBoard({ messages: { tableList: { noRecords: 'Keine Einträge vorhanden.', pagerItemsPerPage: 'Einträge pro Seite' } } }),
|
|
288
|
+
// or, when the widgets are registered lazily (no provideMeshBoard()):
|
|
289
|
+
provideMeshBoardMessages(appMeshBoardMessages),
|
|
290
|
+
]
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
`tableNotConfigured` translates the placeholder of an unconfigured table.
|
|
294
|
+
|
|
295
|
+
**Enum labels (AB#5622).** `MESHBOARD_LABEL_RESOLVER` (same pattern as the entity forms'
|
|
296
|
+
`ENTITY_FORM_LABEL_RESOLVER`) translates enum values: `(request) => string | null | undefined`
|
|
297
|
+
with `request = { kind: 'tableCell' | 'chartCategory', ckTypeId?, attribute, value, valueType?,
|
|
298
|
+
defaultText }`; `null` / `undefined` / `''` keep `defaultText` (today's text), a throwing resolver
|
|
299
|
+
is logged once and ignored. Tables offer string cells of text columns (persistent-query columns
|
|
300
|
+
only when their value type is `ENUM`); pie / donut charts offer every category — the resolved text
|
|
301
|
+
is the slice name in data labels, legend and tooltips, the status colour still follows the raw
|
|
302
|
+
value. A resolver that reads a signal re-labels the charts when it changes.
|
|
303
|
+
|
|
281
304
|
### Pie Chart Widget
|
|
282
305
|
Displays data as pie or donut chart.
|
|
283
306
|
|
|
@@ -291,9 +314,25 @@ interface PieChartWidgetConfig {
|
|
|
291
314
|
showLegend?: boolean;
|
|
292
315
|
legendPosition?: 'top' | 'bottom' | 'left' | 'right';
|
|
293
316
|
filters?: WidgetFilterConfig[];
|
|
317
|
+
categoryColors?: Record<string, string>; // AB#5622
|
|
318
|
+
labelPosition?: 'inside' | 'outside' | 'none'; // AB#5622
|
|
319
|
+
hideLabelsBelowPercent?: number; // AB#5622
|
|
294
320
|
}
|
|
295
321
|
```
|
|
296
322
|
|
|
323
|
+
Colours and labels (AB#5622): every slice gets an explicit colour — a `categoryColors` entry
|
|
324
|
+
(key = raw category value, case-insensitive, or the displayed label; value = hex / CSS colour,
|
|
325
|
+
custom property `--brand-paid` / `var(--brand-paid, #2fb37a)`, or a status name `success` /
|
|
326
|
+
`warning` / `error` / `info`), else the status colour of a well-known state, else the theme
|
|
327
|
+
palette colour of its position (`chartSeriesColors()`: `--theme-chart-1…12`, then
|
|
328
|
+
`--kendo-chart-series-1…12`, then `--kendo-color-series-a…f`, then a fixed palette; unresolved or
|
|
329
|
+
invalid tokens are skipped, so no slice falls back to black in dark mode). The palette is part of
|
|
330
|
+
the theme signature, so a live theme switch re-colours the chart without a redraw loop.
|
|
331
|
+
`labelPosition` (labels mode only) maps to Kendo `outsideEnd` (theme-coloured connector lines) /
|
|
332
|
+
`insideEnd` / hidden; `hideLabelsBelowPercent` drops the labels of small slices so neighbours do
|
|
333
|
+
not overlap. All three are optional, written to the board JSON only when set, and edited in the
|
|
334
|
+
config dialog (Label Position, Hide labels below, Category Colours).
|
|
335
|
+
|
|
297
336
|
Display rules (`utils/chart-categories.ts`): enum-style categories read as words (`RESOLVE_FAILED` →
|
|
298
337
|
"Resolve failed"); well-known state categories get the theme status colours (`--theme-status-*`,
|
|
299
338
|
then `--kendo-color-*`; e.g. Resolve failed / Error → error, Available / Online → success,
|
|
@@ -420,11 +459,15 @@ providers: [
|
|
|
420
459
|
|
|
421
460
|
| Type | Label | Shows | Gate (per check / KPI) | Persisted `config` |
|
|
422
461
|
|------|-------|-------|------------------------|--------------------|
|
|
423
|
-
| `attentionList` | Attention List | Findings, errors first: CK models in ResolveFailed, adapters in error / offline > 10 min, failed pipeline executions in 24 h above a threshold,
|
|
462
|
+
| `attentionList` | Attention List | Findings, errors first: CK models in ResolveFailed, adapters in error / offline > 10 min, failed pipeline executions in 24 h above a threshold, deployment sites not registered (provider id `pools-unregistered`, kept stable for persisted `providerIds`), features enabled but not installed, plus host checks (Refinery Studio: secrets needing re-entry) | each provider: AdminPanelManagement / CommunicationManagement + `System.Communication` / TenantManagement | `{ "providerIds"?: string[], "maxItems"?: number, "showExplain"?: boolean }` — no `providerIds` = all checks, including ones added later |
|
|
424
463
|
| `adapterStatus` | Adapter Status | Adapters online / expected to run (shared rule `utils/adapter-online.ts`) | CommunicationManagement + `System.Communication` | `{ "showDetail"?: boolean }` |
|
|
425
464
|
| `ckModelState` | CK Model State | CK models available / all; ResolveFailed = error, importing = warning | AdminPanelManagement | `{ "showDetail"?: boolean }` |
|
|
426
465
|
| `recentItems` | Recent Items | The viewer's recently opened pages, entities and boards (most recent first, glyph, kind, relative time as `<time>`), real links; optional "⌘K shows the same list" | none — per user, from the host's `COCKPIT_RECENT_ITEMS`; without it "Not available" + collapsed | `{ "maxItems"?: number }` (default 8, 1–20) |
|
|
427
466
|
| `pipelineExecutions` | Pipeline Executions 24 h | Executions of all data flows, failed count, hourly sparkline (same counting as the Studio's Data Flows list) | CommunicationManagement + `System.Communication` | `{ "showDetail"?: boolean, "showSparkline"?: boolean }` |
|
|
467
|
+
| `tenantCount` | Tenants | Child tenants of the tenant (on the system tenant: all tenants), first ids; links `tenants` | TenantManagement | `{ "showDetail"?: boolean }` |
|
|
468
|
+
| `blueprintUpdates` | Blueprint Updates | Installed blueprints with a newer catalog version (warning); service-managed `System.*` ones only in the detail; links `blueprints` | AdminPanelManagement | `{ "showDetail"?: boolean }` |
|
|
469
|
+
| `servicesHealth` | Services Healthy | Identity, Asset Repository, Bot, Communication Controller (when installed) healthy / all; unhealthy or silent = error, degraded = warning; links `serviceHealth` of the first problem | none | `{ "showDetail"?: boolean }` |
|
|
470
|
+
| `versionInfo` | Version | The host's versions (`COCKPIT_VERSION_SOURCE` / `provideCockpitWidgetHost({ versions })`), first = value; no link | none — without the source "Not available" + collapsed | `{ "showDetail"?: boolean }` |
|
|
428
471
|
|
|
429
472
|
- **Role abstraction.** The library never imports the host's auth: `COCKPIT_VIEWER_ACCESS`
|
|
430
473
|
(`isInRole(role)`) answers role checks, `CkModelService.isModelAvailable` the CK models.
|
|
@@ -436,8 +479,11 @@ providers: [
|
|
|
436
479
|
close up, `collapseEmptyRows`). An attention list never claims "All clear" without visible checks.
|
|
437
480
|
- **Errors** never show raw messages: tiles say "The figure could not be loaded." (details in the console).
|
|
438
481
|
- **Links.** Findings and KPI tiles carry semantic `CockpitLinkTarget`s (`adapter`, `adapters`,
|
|
439
|
-
`
|
|
440
|
-
`
|
|
482
|
+
`deployment-site`, `deployment-sites`, `dataFlows`, `ckModels`, `tenantSettings`, `secretsReEntry`;
|
|
483
|
+
`pool` / `pools` are the deprecated pre-System.Communication-4.x aliases); the host's
|
|
484
|
+
`COCKPIT_LINK_RESOLVER` maps them to URLs, `null` drops the chip. When the resolver answers `null`
|
|
485
|
+
for a deployment-site kind, the context asks once more with the legacy alias
|
|
486
|
+
(`legacyCockpitLinkTarget`), so hosts that only map `pool` / `pools` keep their links (AB#5842). Host providers may also link
|
|
441
487
|
straight to their own pages (AB#5622): `{ kind: 'route', path, queryParams? }` — `path` is a URL
|
|
442
488
|
path or router commands (`['/', tenantId, 'documents']`), navigated with `routerLink` +
|
|
443
489
|
`queryParams`; relative paths resolve against the route that renders the board. The resolver
|
|
@@ -467,6 +513,13 @@ providers: [
|
|
|
467
513
|
error from `errorFailed` failures (default 1,000) or a failure share of `errorRatio` (default
|
|
468
514
|
0.2); `null` disables an error rule. Override with `{ provide: COCKPIT_FAILED_EXECUTIONS_OPTIONS,
|
|
469
515
|
useValue: { minFailed: 50 } }`. Links to `dataFlows` (the list has no "failed only" filter).
|
|
516
|
+
- **System cockpit checks** (AB#5558). `services-unhealthy` (one finding per platform service
|
|
517
|
+
that is not Healthy, links `serviceHealth`) and `blueprint-updates` (info, count badge, links
|
|
518
|
+
`blueprints`; AdminPanelManagement) are visible on the system tenant only
|
|
519
|
+
(`CockpitContextService.isSystemTenant`, from `systemTenantId` of the platform configuration,
|
|
520
|
+
`octosystem` without it) — tenant cockpits are unchanged. Texts: `attentionService*`,
|
|
521
|
+
`attentionBlueprintUpdates*`, `kpiTenants*`, `kpiBlueprints*`, `kpiServices*`, `kpiVersion*`
|
|
522
|
+
(optional members). Seeded by `System.UI.SystemCockpit` ≥ 1.1.0.
|
|
470
523
|
- **Data.** Lean documents with explicit fields in `graphQL/cockpit*.graphql`; the adapter states
|
|
471
524
|
and the data flow executions are shared per tenant for 10 s between the KPI and the attention
|
|
472
525
|
list (`CockpitAdapterStatesService`, `CockpitDataFlowExecutionsService`).
|