react-dashstream 0.1.2 → 0.2.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 +146 -10
- package/dashstream-skill.md +97 -20
- package/dist/AIOPsDashboard.d.ts +20 -0
- package/dist/AIOPsDashboard.d.ts.map +1 -1
- package/dist/ThemeContext.d.ts +4 -0
- package/dist/ThemeContext.d.ts.map +1 -0
- package/dist/components/ComponentDialog.d.ts.map +1 -1
- package/dist/components/Database3D.d.ts.map +1 -1
- package/dist/components/EventView/EventAlertsContext.d.ts +32 -0
- package/dist/components/EventView/EventAlertsContext.d.ts.map +1 -0
- package/dist/components/EventView/EventView.d.ts +1 -1
- package/dist/components/EventView/EventView.d.ts.map +1 -1
- package/dist/components/EventView/fetchEvents.d.ts +10 -0
- package/dist/components/EventView/fetchEvents.d.ts.map +1 -0
- package/dist/components/EventView/index.d.ts +2 -0
- package/dist/components/EventView/index.d.ts.map +1 -1
- package/dist/components/EventView/types.d.ts +3 -0
- package/dist/components/EventView/types.d.ts.map +1 -1
- package/dist/components/NodeCallout.d.ts.map +1 -1
- package/dist/components/Server3D.d.ts.map +1 -1
- package/dist/components/Service.d.ts.map +1 -1
- package/dist/components/ServiceDialog.d.ts.map +1 -1
- package/dist/components/ServiceNode.d.ts.map +1 -1
- package/dist/components/WebDispatcher3D.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/data/CredentialsModal.d.ts.map +1 -1
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3188 -2635
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -69,6 +69,64 @@ Click a service to expand its topology. Click a component to drill into its inte
|
|
|
69
69
|
|
|
70
70
|
---
|
|
71
71
|
|
|
72
|
+
## Theme (light / dark)
|
|
73
|
+
|
|
74
|
+
The dashboard ships with **light** and **dark** visual modes. `AIOPsDashboard` defaults to **light**; the header includes a control to toggle modes.
|
|
75
|
+
|
|
76
|
+
### Background images
|
|
77
|
+
|
|
78
|
+
| Prop | When used |
|
|
79
|
+
| ---------------------- | -------------------------------------------------- |
|
|
80
|
+
| `backgroundImage` | Dark mode, and light mode if no light asset is set |
|
|
81
|
+
| `lightBackgroundImage` | Light mode when provided |
|
|
82
|
+
|
|
83
|
+
### Controlled theme (sync with your app shell)
|
|
84
|
+
|
|
85
|
+
Pass **`theme`** and **`onThemeChange`** to drive the dashboard from parent state (for example, to keep tabs, sidebars, and `EventView` in sync):
|
|
86
|
+
|
|
87
|
+
```tsx
|
|
88
|
+
import { useState } from "react";
|
|
89
|
+
import { AIOPsDashboard, ThemeProvider, type DashboardTheme, type ServiceMeta } from "react-dashstream";
|
|
90
|
+
import lightBg from "./light.webp";
|
|
91
|
+
import darkBg from "./dark.webp";
|
|
92
|
+
|
|
93
|
+
const services: ServiceMeta[] = [
|
|
94
|
+
/* …same shape as Quick start… */
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
export default function App() {
|
|
98
|
+
const [theme, setTheme] = useState<DashboardTheme>("light");
|
|
99
|
+
|
|
100
|
+
return (
|
|
101
|
+
<ThemeProvider value={theme}>
|
|
102
|
+
<AIOPsDashboard
|
|
103
|
+
theme={theme}
|
|
104
|
+
onThemeChange={setTheme}
|
|
105
|
+
lightBackgroundImage={lightBg}
|
|
106
|
+
backgroundImage={darkBg}
|
|
107
|
+
brandName="MY DASHBOARD"
|
|
108
|
+
services={services}
|
|
109
|
+
>
|
|
110
|
+
{/* Service / node tree — see Quick start */}
|
|
111
|
+
</AIOPsDashboard>
|
|
112
|
+
</ThemeProvider>
|
|
113
|
+
);
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
When both props are set, the dashboard is **controlled**; the header toggle calls `onThemeChange`. Omit them to use **internal** theme state.
|
|
118
|
+
|
|
119
|
+
### `ThemeProvider`, `EventView`, and the credentials modal
|
|
120
|
+
|
|
121
|
+
**`ServiceDialog`**, **`ComponentDialog`**, **`EventView`**, and **`CredentialsModal`** (access-key prompt) read the active mode from **`useTheme()`**.
|
|
122
|
+
|
|
123
|
+
- Wrap any subtree that includes **`EventView`** or standalone credential prompts in **`ThemeProvider`** with the same `value` as your dashboard so the event console and lock screen match.
|
|
124
|
+
- Optionally pass **`theme="light"` \| `"dark"`** on **`EventView`** to override context (useful when embedding without a provider).
|
|
125
|
+
|
|
126
|
+
Exports: `ThemeProvider`, `useTheme`, type `DashboardTheme`.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
72
130
|
## Full example — multi-service, multi-layer
|
|
73
131
|
|
|
74
132
|
See `example/Dashboard.tsx` in this package for a complete two-service example with Payment Gateway and Auth Service topologies rotating in a 3D carousel.
|
|
@@ -145,13 +203,14 @@ If you already have events data, pass them directly — no API call is made:
|
|
|
145
203
|
|
|
146
204
|
### EventView props
|
|
147
205
|
|
|
148
|
-
| Prop
|
|
149
|
-
|
|
|
150
|
-
| `apiConfig`
|
|
151
|
-
| `events`
|
|
152
|
-
| `credentials`
|
|
153
|
-
| `
|
|
154
|
-
| `title`
|
|
206
|
+
| Prop | Type | Default | Description |
|
|
207
|
+
| -------------------- | --------------------- | ----------------- | ---------------------------------------------------------------------------- |
|
|
208
|
+
| `apiConfig` | `EventApiConfig` | — | API configuration (base URL, payload, field mapping). Required for API mode |
|
|
209
|
+
| `events` | `AIOpsEvent[]` | — | Pre-fetched events. When provided, `apiConfig` is not used |
|
|
210
|
+
| `credentials` | `Credentials` | — | Explicit credentials. Falls back to DataProvider context, then modal |
|
|
211
|
+
| `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name used to persist user-defined column widths |
|
|
212
|
+
| `title` | `string` | `"Event Console"` | Title displayed in the component header |
|
|
213
|
+
| `theme` | `"light"` \| `"dark"` | — | Optional override; otherwise uses `ThemeProvider` / defaults to dark context |
|
|
155
214
|
|
|
156
215
|
### EventApiConfig
|
|
157
216
|
|
|
@@ -210,9 +269,75 @@ const fieldMapping: EventFieldMapping = {
|
|
|
210
269
|
- **Severity filter chips** — toggle Critical, Major, Minor with live counts
|
|
211
270
|
- **Free-text search** — filters across message, host, owner, and incident ID
|
|
212
271
|
- **Sortable columns** — click any header to cycle ascending / descending / none
|
|
213
|
-
- **
|
|
272
|
+
- **Infinite scroll** — all matching events render in a single scrollable table
|
|
273
|
+
- **Resizable columns** — drag column edges to resize; widths are persisted in cookies
|
|
214
274
|
- **Loading / error states** — spinner, error badge, last-refresh timestamp, manual refresh button
|
|
215
|
-
- **
|
|
275
|
+
- **Theming** — dark holographic styling or **light** mode (panels, table, and credentials modal follow `ThemeProvider` / optional `theme` prop)
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
279
|
+
## Event-to-dashboard bridge
|
|
280
|
+
|
|
281
|
+
When the same `EventApiConfig` is passed to `AIOPsDashboard`, events are fetched in the background and **automatically highlight nodes** in the 3D topology whose hostname matches an open event. No extra code, no manual wiring — just pass the config.
|
|
282
|
+
|
|
283
|
+
### Quick start
|
|
284
|
+
|
|
285
|
+
```tsx
|
|
286
|
+
<AIOPsDashboard
|
|
287
|
+
brandName="MY DASHBOARD"
|
|
288
|
+
services={services}
|
|
289
|
+
liveData
|
|
290
|
+
dataEndpoint="https://prometheus.example.com/api/v1/query"
|
|
291
|
+
dataBindings={dataBindings}
|
|
292
|
+
eventApiConfig={eventApiConfig} // ← same config used for EventView
|
|
293
|
+
>
|
|
294
|
+
<MyService name="My Service" />
|
|
295
|
+
</AIOPsDashboard>
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### How it works
|
|
299
|
+
|
|
300
|
+
1. `AIOPsDashboard` wraps its children in an `EventAlertsProvider` that fetches events in the background (using the same polling interval and credentials as the Event Console).
|
|
301
|
+
2. Each fetched event has a `host` field (mapped via `fieldMapping`).
|
|
302
|
+
3. Every `ServiceNode` in the topology checks if its `componentInfo.name` matches any event host (**case-insensitive**).
|
|
303
|
+
4. If a match is found, the node's severity is updated and a `NodeCallout` appears with the event message.
|
|
304
|
+
|
|
305
|
+
### Severity mapping
|
|
306
|
+
|
|
307
|
+
| Event severity | Dashboard status | Callout color |
|
|
308
|
+
| -------------- | ---------------- | ------------- |
|
|
309
|
+
| Critical | `"critical"` | Red |
|
|
310
|
+
| Major | `"warning"` | Orange |
|
|
311
|
+
| Minor | `"warning"` | Orange |
|
|
312
|
+
|
|
313
|
+
When multiple events exist on the same host, the highest severity wins and the callout shows `"N events – <message>"`.
|
|
314
|
+
|
|
315
|
+
The event alert is a **third severity source** alongside the node's own `status` prop and metric threshold breaches. The highest severity among all three always wins.
|
|
316
|
+
|
|
317
|
+
### Node name matching
|
|
318
|
+
|
|
319
|
+
For the bridge to work, the `name` prop on your nodes must match the `host` field in the event data:
|
|
320
|
+
|
|
321
|
+
```tsx
|
|
322
|
+
// If your events API returns host: "SAP-PRD-APP01", name your node:
|
|
323
|
+
<ServerNode name="SAP-PRD-APP01" ... />
|
|
324
|
+
|
|
325
|
+
// Matching is case-insensitive, so these also work:
|
|
326
|
+
<ServerNode name="sap-prd-app01" ... />
|
|
327
|
+
<ServerNode name="Sap-Prd-App01" ... />
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### Credential resolution
|
|
331
|
+
|
|
332
|
+
The `EventAlertsProvider` inside `AIOPsDashboard` resolves credentials in this order:
|
|
333
|
+
|
|
334
|
+
1. Parent `DataProvider` context (when `liveData` is enabled — **same credentials, single login**)
|
|
335
|
+
2. Built-in credentials modal (when `liveData` is not enabled)
|
|
336
|
+
|
|
337
|
+
### Opt-in behavior
|
|
338
|
+
|
|
339
|
+
- **Without `eventApiConfig`** — no events are fetched, no alerts are injected, zero overhead.
|
|
340
|
+
- **Without `EventView`** — the bridge still works. You can use event-based alerts on the 3D dashboard without ever rendering an `EventView`.
|
|
216
341
|
|
|
217
342
|
---
|
|
218
343
|
|
|
@@ -1042,13 +1167,24 @@ type ComponentStatus = "online" | "warning" | "critical" | "offline";
|
|
|
1042
1167
|
## Theme constants
|
|
1043
1168
|
|
|
1044
1169
|
```ts
|
|
1045
|
-
import {
|
|
1170
|
+
import {
|
|
1171
|
+
STATUS_CFG,
|
|
1172
|
+
HOLO_CYAN,
|
|
1173
|
+
HOLO_BLUE,
|
|
1174
|
+
HOLO_SURFACE,
|
|
1175
|
+
HOLO_GLASS,
|
|
1176
|
+
makeFaceStyles,
|
|
1177
|
+
ThemeProvider,
|
|
1178
|
+
useTheme,
|
|
1179
|
+
type DashboardTheme,
|
|
1180
|
+
} from "react-dashstream";
|
|
1046
1181
|
```
|
|
1047
1182
|
|
|
1048
1183
|
- `STATUS_CFG` — status-to-color lookup table
|
|
1049
1184
|
- `HOLO_CYAN` / `HOLO_BLUE` — accent colors
|
|
1050
1185
|
- `HOLO_SURFACE` / `HOLO_GLASS` — CSS gradient backgrounds for 3D faces
|
|
1051
1186
|
- `makeFaceStyles(W, H, D)` — generates CSS transforms for the 6 faces of a 3D box
|
|
1187
|
+
- `ThemeProvider`, `useTheme`, `DashboardTheme` — light/dark for dashboard UI, dialogs, `EventView`, and credentials modal (see **Theme (light / dark)** above)
|
|
1052
1188
|
|
|
1053
1189
|
---
|
|
1054
1190
|
|
package/dashstream-skill.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# React DashStream — AI Coding Assistant Skill
|
|
2
2
|
|
|
3
3
|
> **Package**: `react-dashstream` (npm)
|
|
4
|
-
> **Version**: 0.0
|
|
4
|
+
> **Version**: 0.2.0
|
|
5
5
|
> **Peer deps**: `react` ^18 || ^19, `react-dom` ^18 || ^19
|
|
6
6
|
> **License**: MIT
|
|
7
7
|
|
|
@@ -35,6 +35,19 @@ import { AIOPsDashboard, Service, ServerNode, DatabaseNode } from "react-dashstr
|
|
|
35
35
|
|
|
36
36
|
---
|
|
37
37
|
|
|
38
|
+
## Light / dark theme
|
|
39
|
+
|
|
40
|
+
The dashboard supports **`"light"`** and **`"dark"`** modes.
|
|
41
|
+
|
|
42
|
+
- **`AIOPsDashboard`** defaults to **light** and exposes a header toggle. Use **`backgroundImage`** (dark) and **`lightBackgroundImage`** (light when set).
|
|
43
|
+
- **Controlled mode:** pass **`theme`** and **`onThemeChange`** (`DashboardTheme`) so parent state owns the mode (e.g. sync app chrome + `EventView`).
|
|
44
|
+
- **`ThemeProvider`** (export) + **`useTheme()`** — wrap subtrees so **`EventView`**, **`CredentialsModal`**, **`ServiceDialog`**, and **`ComponentDialog`** match the dashboard. Without a provider, `useTheme()` defaults to **`"dark"`**; prefer wrapping when using `EventView` or the lock screen next to a light dashboard.
|
|
45
|
+
- **`EventView`** accepts optional **`theme`** to override context.
|
|
46
|
+
|
|
47
|
+
When generating multi-view apps (3D + Event Console + credentials), wrap the root in **`ThemeProvider`** with the same value passed to **`AIOPsDashboard`**’s controlled props.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
38
51
|
## Architecture
|
|
39
52
|
|
|
40
53
|
```
|
|
@@ -69,6 +82,7 @@ src/
|
|
|
69
82
|
├── AIOPsDashboard.tsx # Dashboard shell + live-data wiring
|
|
70
83
|
├── types.ts # Shared topology/drill-down types
|
|
71
84
|
├── theme.ts # Status tokens, holo palette, 3D face helpers
|
|
85
|
+
├── ThemeContext.ts # DashboardTheme, ThemeProvider, useTheme
|
|
72
86
|
├── styles.css / index.css # Library + dashboard styles
|
|
73
87
|
├── data/
|
|
74
88
|
│ ├── DataProvider.tsx # Polling engine, context, hooks
|
|
@@ -82,11 +96,13 @@ src/
|
|
|
82
96
|
│ ├── Internal3DComponents.tsx, HistoricalGraphPanel.tsx
|
|
83
97
|
│ ├── ComponentDrillView.tsx, SvgConnection.tsx, SyncBridge.tsx
|
|
84
98
|
│ ├── NodeCallout.tsx, HoloBase.tsx, CarouselContext.ts
|
|
85
|
-
│ ├── EventView/
|
|
86
|
-
│ │ ├── EventView.tsx
|
|
87
|
-
│ │ ├── EventView.css
|
|
88
|
-
│ │ ├──
|
|
89
|
-
│ │ ├──
|
|
99
|
+
│ ├── EventView/ # Operations event console
|
|
100
|
+
│ │ ├── EventView.tsx # Table component (filter, sort, search, infinite scroll)
|
|
101
|
+
│ │ ├── EventView.css # Holographic table styles
|
|
102
|
+
│ │ ├── EventAlertsContext.tsx # EventAlertsProvider + per-host alert map
|
|
103
|
+
│ │ ├── fetchEvents.ts # Shared fetch/mapping logic (used by both EventView & provider)
|
|
104
|
+
│ │ ├── types.ts # AIOpsEvent, EventSeverity, EventApiConfig, etc.
|
|
105
|
+
│ │ ├── mockData.ts # 28 realistic mock events
|
|
90
106
|
│ │ └── index.ts
|
|
91
107
|
│ └── index.ts
|
|
92
108
|
├── services/
|
|
@@ -102,7 +118,7 @@ example/
|
|
|
102
118
|
|
|
103
119
|
## Complete data flow reference
|
|
104
120
|
|
|
105
|
-
There are **
|
|
121
|
+
There are **10 distinct data paths** in this package. Understanding them is critical for building live dashboards.
|
|
106
122
|
|
|
107
123
|
### 1. Data bindings — live props injected into service components
|
|
108
124
|
|
|
@@ -419,7 +435,52 @@ alert?: {
|
|
|
419
435
|
}
|
|
420
436
|
```
|
|
421
437
|
|
|
422
|
-
### 7.
|
|
438
|
+
### 7. Event-to-dashboard bridge — automatic node alerts from events API
|
|
439
|
+
|
|
440
|
+
When `eventApiConfig` is passed to `AIOPsDashboard`, events are fetched in the background and nodes whose `name` (case-insensitive) matches an event `host` automatically show alert callouts.
|
|
441
|
+
|
|
442
|
+
```tsx
|
|
443
|
+
<AIOPsDashboard
|
|
444
|
+
eventApiConfig={eventApiConfig} // same EventApiConfig used for EventView
|
|
445
|
+
liveData
|
|
446
|
+
dataEndpoint="..."
|
|
447
|
+
dataBindings={dataBindings}
|
|
448
|
+
services={services}
|
|
449
|
+
>
|
|
450
|
+
<MyService name="My Service" />
|
|
451
|
+
</AIOPsDashboard>
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
**How it works internally:**
|
|
455
|
+
|
|
456
|
+
1. `AIOPsDashboard` wraps children in `EventAlertsProvider` (inside `DataProvider` when `liveData` is set — shares credentials automatically)
|
|
457
|
+
2. `EventAlertsProvider` fetches events using the same `fetchEvents` + `mapRawEvent` logic as `EventView`
|
|
458
|
+
3. Events are grouped by **lower-cased hostname** into a `Map<string, EventHostAlert>`
|
|
459
|
+
4. `ServiceNode` reads from `EventAlertsContext` via `useEventAlertsOptional()`
|
|
460
|
+
5. If `componentInfo.name.toLowerCase()` matches an entry, event severity is factored into the existing `resolveNodeSeverity` pipeline as a **third severity source** (alongside node status and metric breaches)
|
|
461
|
+
6. Highest severity among all three sources wins
|
|
462
|
+
7. `NodeCallout` appears automatically with the event message; multi-event hosts show `"N events – message"`
|
|
463
|
+
|
|
464
|
+
**Severity mapping:**
|
|
465
|
+
|
|
466
|
+
| Event severity | → ComponentStatus |
|
|
467
|
+
| -------------- | ----------------- |
|
|
468
|
+
| Critical | `"critical"` |
|
|
469
|
+
| Major | `"warning"` |
|
|
470
|
+
| Minor | `"warning"` |
|
|
471
|
+
|
|
472
|
+
**Key requirement:** Node `name` props must match event `host` values from the API (case-insensitive). Example: if the API returns `host: "SAP-PRD-APP01"`, the node must be `<ServerNode name="SAP-PRD-APP01" ... />`.
|
|
473
|
+
|
|
474
|
+
**Credential resolution order** (for EventAlertsProvider inside AIOPsDashboard):
|
|
475
|
+
|
|
476
|
+
1. `DataProvider` context credentials (when `liveData` is enabled — same credentials, one login)
|
|
477
|
+
2. Built-in `CredentialsModal` (when `liveData` is not enabled)
|
|
478
|
+
|
|
479
|
+
**Opt-in:** Without `eventApiConfig`, no events are fetched — zero overhead.
|
|
480
|
+
|
|
481
|
+
**When generating an `AIOPsDashboard` with event bridge:** Reuse the same `EventApiConfig` object that the user already has for their `EventView`. Just add it as `eventApiConfig` on `AIOPsDashboard`.
|
|
482
|
+
|
|
483
|
+
### 8. Drill-down internals — custom subComponents
|
|
423
484
|
|
|
424
485
|
When clicking a node, the drill-down shows internal 3D sub-components. Default sub-components are auto-generated per type. Override with `subComponents`:
|
|
425
486
|
|
|
@@ -455,7 +516,7 @@ interface SubComponentConfig {
|
|
|
455
516
|
|
|
456
517
|
All compound nodes accept `subComponents`.
|
|
457
518
|
|
|
458
|
-
###
|
|
519
|
+
### 9. Graph series — custom sparklines
|
|
459
520
|
|
|
460
521
|
The drill-down's historical panel shows sparkline charts. Default graphs are auto-generated. Override with `graphSeries`:
|
|
461
522
|
|
|
@@ -483,7 +544,7 @@ interface GraphSeries {
|
|
|
483
544
|
|
|
484
545
|
All compound nodes accept `graphSeries`.
|
|
485
546
|
|
|
486
|
-
###
|
|
547
|
+
### 10. Data hooks — programmatic access
|
|
487
548
|
|
|
488
549
|
Access live data context anywhere inside the dashboard:
|
|
489
550
|
|
|
@@ -562,17 +623,23 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
|
|
|
562
623
|
|
|
563
624
|
`DataProvider`, `useAIOpsData`, `useAIOpsDataOptional`, `useQueryResult`, `defaultDataTransform`
|
|
564
625
|
|
|
626
|
+
### Event alerts
|
|
627
|
+
|
|
628
|
+
`EventAlertsProvider`, `useEventAlerts`, `useEventAlertsOptional`
|
|
629
|
+
|
|
565
630
|
### Theme
|
|
566
631
|
|
|
567
632
|
`STATUS_CFG`, `HOLO_CYAN` (`"#00e5ff"`), `HOLO_BLUE` (`"#0055cc"`), `HOLO_SURFACE`, `HOLO_GLASS`, `makeFaceStyles(W, H, D)`
|
|
568
633
|
|
|
634
|
+
`ThemeProvider`, `useTheme`, type `DashboardTheme` (`"light" | "dark"`)
|
|
635
|
+
|
|
569
636
|
### Context hooks
|
|
570
637
|
|
|
571
638
|
`CarouselContext`, `CarouselItemContext`, `useCarouselContext`, `useCarouselItemContext`, `ServiceContext`
|
|
572
639
|
|
|
573
640
|
### Type exports
|
|
574
641
|
|
|
575
|
-
`AIOPsDashboardProps`, `ServiceMeta`, `ServiceMetricBinding`, `ComponentStatus`, `StatusCfg`, `FaceName`, `Base3DProps`, `ComponentType`, `ComponentContext`, `ComponentDialogMetric`, `SubComponentConfig`, `GraphSeries`, `SelectedComponent`, `ConnectionConfig`, `ViewState`, `DataBinding`, `DataBindings`, `DataProviderConfig`, `Credentials`, `DataContextValue`, `ServiceProps`, `ServiceContextValue`, `ServiceNodeProps`, `CarouselProps`, `ServerNodeProps`, `DatabaseNodeProps`, `HumanNodeProps`, `WebDispatcherNodeProps`, `MessageServerNodeProps`, `SvgConnectionProps`, `SyncBridgeProps`, `NodeCalloutProps`, `ServiceDialogProps`, `ServiceDialogMetric`, `ServiceDialogAlert`, `ComponentDialogProps`, `ComponentDrillViewProps`, `CarouselContextValue`, `CarouselItemContextValue`, `SAPServiceProps`, `SAPServiceOwnProps`, `SAPServiceConfig`, `ExchangeServiceProps`, `ExchangeServiceOwnProps`, `ExchangeServiceConfig`
|
|
642
|
+
`AIOPsDashboardProps`, `ServiceMeta`, `ServiceMetricBinding`, `DashboardTheme`, `ComponentStatus`, `StatusCfg`, `FaceName`, `Base3DProps`, `ComponentType`, `ComponentContext`, `ComponentDialogMetric`, `SubComponentConfig`, `GraphSeries`, `SelectedComponent`, `ConnectionConfig`, `ViewState`, `DataBinding`, `DataBindings`, `DataProviderConfig`, `Credentials`, `DataContextValue`, `ServiceProps`, `ServiceContextValue`, `ServiceNodeProps`, `CarouselProps`, `ServerNodeProps`, `DatabaseNodeProps`, `HumanNodeProps`, `WebDispatcherNodeProps`, `MessageServerNodeProps`, `SvgConnectionProps`, `SyncBridgeProps`, `NodeCalloutProps`, `ServiceDialogProps`, `ServiceDialogMetric`, `ServiceDialogAlert`, `ComponentDialogProps`, `ComponentDrillViewProps`, `CarouselContextValue`, `CarouselItemContextValue`, `SAPServiceProps`, `SAPServiceOwnProps`, `SAPServiceConfig`, `ExchangeServiceProps`, `ExchangeServiceOwnProps`, `ExchangeServiceConfig`, `EventHostAlert`, `EventAlertsContextValue`, `EventAlertsProviderProps`
|
|
576
643
|
|
|
577
644
|
---
|
|
578
645
|
|
|
@@ -580,6 +647,8 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
|
|
|
580
647
|
|
|
581
648
|
### AIOPsDashboardProps
|
|
582
649
|
|
|
650
|
+
`DashboardTheme` is `"light" | "dark"` (exported).
|
|
651
|
+
|
|
583
652
|
```ts
|
|
584
653
|
interface AIOPsDashboardProps {
|
|
585
654
|
title?: string;
|
|
@@ -587,6 +656,9 @@ interface AIOPsDashboardProps {
|
|
|
587
656
|
brandTag?: string; // Default: "3D MONITOR"
|
|
588
657
|
services?: ServiceMeta[];
|
|
589
658
|
backgroundImage?: string;
|
|
659
|
+
lightBackgroundImage?: string; // Used in light mode when set
|
|
660
|
+
theme?: DashboardTheme; // Controlled theme (pair with onThemeChange)
|
|
661
|
+
onThemeChange?: (theme: DashboardTheme) => void;
|
|
590
662
|
logoUrl?: string;
|
|
591
663
|
carouselSpeed?: number; // Default: 0.006
|
|
592
664
|
fontFamily?: string;
|
|
@@ -596,6 +668,7 @@ interface AIOPsDashboardProps {
|
|
|
596
668
|
dataTransform?: (raw: unknown) => unknown;
|
|
597
669
|
dataRefreshInterval?: number; // Default: 60000
|
|
598
670
|
serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
|
|
671
|
+
eventApiConfig?: EventApiConfig; // Enable event-to-dashboard bridge
|
|
599
672
|
children: React.ReactNode;
|
|
600
673
|
}
|
|
601
674
|
```
|
|
@@ -871,13 +944,14 @@ const apiConfig: EventApiConfig = {
|
|
|
871
944
|
|
|
872
945
|
### Props
|
|
873
946
|
|
|
874
|
-
| Prop
|
|
875
|
-
|
|
|
876
|
-
| `apiConfig`
|
|
877
|
-
| `events`
|
|
878
|
-
| `credentials`
|
|
879
|
-
| `
|
|
880
|
-
| `title`
|
|
947
|
+
| Prop | Type | Default | Notes |
|
|
948
|
+
| -------------------- | ---------------- | ----------------- | -------------------------------------------------- |
|
|
949
|
+
| `apiConfig` | `EventApiConfig` | — | Required for API mode |
|
|
950
|
+
| `events` | `AIOpsEvent[]` | — | Pre-fetched events (skips API calls) |
|
|
951
|
+
| `credentials` | `Credentials` | — | Explicit creds; falls back to DataProvider → modal |
|
|
952
|
+
| `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name for persisting column widths |
|
|
953
|
+
| `title` | `string` | `"Event Console"` | Header title |
|
|
954
|
+
| `theme` | `DashboardTheme` | — | Optional override; else `ThemeProvider` / default |
|
|
881
955
|
|
|
882
956
|
### EventApiConfig
|
|
883
957
|
|
|
@@ -942,9 +1016,10 @@ interface AIOpsEvent {
|
|
|
942
1016
|
- Severity filter chips with live counts
|
|
943
1017
|
- Free-text search across message, host, owner, incident ID
|
|
944
1018
|
- Sortable columns (click header: asc → desc → none)
|
|
945
|
-
-
|
|
1019
|
+
- Infinite scroll — all matching events in a single scrollable table
|
|
1020
|
+
- Resizable columns — drag column edges; widths persist in cookies
|
|
946
1021
|
- Loading spinner, error badge, last-refresh timestamp
|
|
947
|
-
-
|
|
1022
|
+
- Light / dark table chrome (via `ThemeProvider` or `theme` prop), scan-line header, severity badges
|
|
948
1023
|
|
|
949
1024
|
### Generating an EventApiConfig from the AI
|
|
950
1025
|
|
|
@@ -983,3 +1058,5 @@ Output: `dist/index.js` (ESM), `dist/index.d.ts`, `dist/index.css`.
|
|
|
983
1058
|
8. **`dialogMetrics` replaces defaults** — When provided, all default gauges (CPU/Memory/Storage) are removed.
|
|
984
1059
|
9. **`subComponents` replaces defaults** — When provided, all auto-generated sub-components are removed.
|
|
985
1060
|
10. **`graphSeries` replaces defaults** — When provided, all auto-generated sparklines are removed.
|
|
1061
|
+
11. **Event bridge matching** — Node `name` must match event `host` (case-insensitive) for `eventApiConfig` to highlight nodes automatically.
|
|
1062
|
+
12. **Theme context** — `EventView` and `CredentialsModal` use `useTheme()`. Without `ThemeProvider`, context defaults to `"dark"`. Wrap the app (or use `EventView`’s `theme` prop) so light dashboards are not paired with a dark event console or lock screen.
|
package/dist/AIOPsDashboard.d.ts
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { DataBindings } from './data/DataProvider';
|
|
3
|
+
import { EventApiConfig } from './components/EventView/types';
|
|
3
4
|
import { ComponentStatus } from './types';
|
|
4
5
|
import { ServiceDialogMetric, ServiceDialogAlert } from './components/ServiceDialog';
|
|
6
|
+
import { DashboardTheme } from './ThemeContext';
|
|
5
7
|
/**
|
|
6
8
|
* Minimal metadata for each service in the carousel.
|
|
7
9
|
* Used to populate the {@link ServiceDialog} when a service is selected.
|
|
@@ -43,6 +45,12 @@ export interface AIOPsDashboardProps {
|
|
|
43
45
|
services?: ServiceMeta[];
|
|
44
46
|
/** Optional background image URL. */
|
|
45
47
|
backgroundImage?: string;
|
|
48
|
+
/** Optional background image URL used when the light theme is active. */
|
|
49
|
+
lightBackgroundImage?: string;
|
|
50
|
+
/** Controlled theme (pairs with {@link onThemeChange}). */
|
|
51
|
+
theme?: DashboardTheme;
|
|
52
|
+
/** Fired when the user toggles theme via the header control. */
|
|
53
|
+
onThemeChange?: (theme: DashboardTheme) => void;
|
|
46
54
|
/** Optional logo/image URL displayed in the center of the carousel orbit. */
|
|
47
55
|
logoUrl?: string;
|
|
48
56
|
/** Angular speed of the carousel rotation (radians per frame). Defaults to `0.006`. */
|
|
@@ -120,6 +128,18 @@ export interface AIOPsDashboardProps {
|
|
|
120
128
|
* ```
|
|
121
129
|
*/
|
|
122
130
|
serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
|
|
131
|
+
/**
|
|
132
|
+
* Event API configuration.
|
|
133
|
+
*
|
|
134
|
+
* When provided, the dashboard fetches events in the background and
|
|
135
|
+
* automatically highlights nodes whose `componentInfo.name` (case-insensitive)
|
|
136
|
+
* matches an event's `host` field.
|
|
137
|
+
*
|
|
138
|
+
* Uses the same `access-key` / `access-secret-key` credentials as the
|
|
139
|
+
* live-data pipeline. If `liveData` is not enabled, a credentials modal
|
|
140
|
+
* is shown on first load.
|
|
141
|
+
*/
|
|
142
|
+
eventApiConfig?: EventApiConfig;
|
|
123
143
|
/**
|
|
124
144
|
* Service components to display in the carousel.
|
|
125
145
|
* Each child should be a service component (e.g. `<SAPService>`)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"AIOPsDashboard.d.ts","sourceRoot":"","sources":["../src/AIOPsDashboard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAyC,MAAM,OAAO,CAAC;AAI9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAgC,eAAe,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,aAAa,CAAC;AACrB,OAAO,cAAc,CAAC;AAOtB;;;GAGG;AACH,MAAM,WAAW,WAAW;IACxB,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,MAAM,EAAE,eAAe,CAAC;IACxB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,0CAA0C;IAC1C,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAChC,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,2DAA2D;IAC3D,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,gEAAgE;IAChE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IAChD,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uFAAuF;IACvF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC;IAC1C,oEAAoE;IACpE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;;;;;;;;;;;;;OAcG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC7D;;;;;;;;;;OAUG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC;;;;OAIG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAMD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CAqChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ThemeContext.d.ts","sourceRoot":"","sources":["../src/ThemeContext.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,OAAO,CAAC;AAI9C,eAAO,MAAM,aAAa,0CAAwB,CAAC;AAEnD,wBAAgB,QAAQ,IAAI,cAAc,CAEzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComponentDialog.d.ts","sourceRoot":"","sources":["../../src/components/ComponentDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ComponentDialog.d.ts","sourceRoot":"","sources":["../../src/components/ComponentDialog.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,UAAU,CAAC;AAKzE,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AA2BD,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACpC,SAAS,EACT,OAAO,EACP,OAAO,EACP,UAAgB,EAChB,WAAiB,GACpB,EAAE,oBAAoB,2CAwXtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Database3D.d.ts","sourceRoot":"","sources":["../../src/components/Database3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,eAAe,EAAkB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Database3D.d.ts","sourceRoot":"","sources":["../../src/components/Database3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAc,KAAK,eAAe,EAAkB,MAAM,UAAU,CAAC;AAmB5E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AA0RD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAC/B,OAAa,EACb,OAAa,EACb,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EAEjB,QAAa,EAEb,QAAQ,GACX,EAAE,eAAe,2CAqIjB"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { AIOpsEvent, EventApiConfig } from './types';
|
|
3
|
+
import { ComponentStatus } from '../../theme';
|
|
4
|
+
import { Credentials } from '../../data/DataProvider';
|
|
5
|
+
export interface EventHostAlert {
|
|
6
|
+
/** Highest severity among all events on this host. */
|
|
7
|
+
severity: ComponentStatus;
|
|
8
|
+
/** Message from the highest-severity event. */
|
|
9
|
+
message: string;
|
|
10
|
+
/** Total number of open events on this host. */
|
|
11
|
+
count: number;
|
|
12
|
+
}
|
|
13
|
+
export interface EventAlertsContextValue {
|
|
14
|
+
/** Per-host alert map. Keys are **lower-cased** hostnames. */
|
|
15
|
+
alertsByHost: Map<string, EventHostAlert>;
|
|
16
|
+
/** Raw event list from the last successful fetch. */
|
|
17
|
+
events: AIOpsEvent[];
|
|
18
|
+
isLoading: boolean;
|
|
19
|
+
error: string | null;
|
|
20
|
+
lastRefresh: Date | null;
|
|
21
|
+
}
|
|
22
|
+
/** Access event alerts. Throws when called outside an {@link EventAlertsProvider}. */
|
|
23
|
+
export declare function useEventAlerts(): EventAlertsContextValue;
|
|
24
|
+
/** Non-throwing variant — returns `null` when no provider is present. */
|
|
25
|
+
export declare function useEventAlertsOptional(): EventAlertsContextValue | null;
|
|
26
|
+
export interface EventAlertsProviderProps {
|
|
27
|
+
config: EventApiConfig;
|
|
28
|
+
credentials?: Credentials;
|
|
29
|
+
children: React.ReactNode;
|
|
30
|
+
}
|
|
31
|
+
export declare function EventAlertsProvider({ config, credentials: propCreds, children }: EventAlertsProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
32
|
+
//# sourceMappingURL=EventAlertsContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EventAlertsContext.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventAlertsContext.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAuF,MAAM,OAAO,CAAC;AAC5G,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAiB,MAAM,SAAS,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAoB3D,MAAM,WAAW,cAAc;IAC3B,sDAAsD;IACtD,QAAQ,EAAE,eAAe,CAAC;IAC1B,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACpC,8DAA8D;IAC9D,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC1C,qDAAqD;IACrD,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CAC5B;AAMD,sFAAsF;AACtF,wBAAgB,cAAc,IAAI,uBAAuB,CAIxD;AAED,yEAAyE;AACzE,wBAAgB,sBAAsB,IAAI,uBAAuB,GAAG,IAAI,CAEvE;AA+BD,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CAkEzG"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { EventViewProps } from './types';
|
|
2
|
-
export default function EventView({ apiConfig, events: externalEvents, credentials: propCreds, columnWidthsCookie, title, }: EventViewProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export default function EventView({ apiConfig, events: externalEvents, credentials: propCreds, columnWidthsCookie, title, theme: themeProp, }: EventViewProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=EventView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EventView.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKR,cAAc,
|
|
1
|
+
{"version":3,"file":"EventView.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/EventView.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAKR,cAAc,EAEjB,MAAM,SAAS,CAAC;AAMjB,OAAO,iBAAiB,CAAC;AAwPzB,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,SAAS,EACT,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,SAAS,EACtB,kBAAmC,EACnC,KAAuB,EACvB,KAAK,EAAE,SAAS,GACnB,EAAE,cAAc,2CA2RhB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AIOpsEvent, EventApiConfig } from './types';
|
|
2
|
+
import { Credentials } from '../../data/DataProvider';
|
|
3
|
+
export declare function parseTimestamp(value: unknown): string;
|
|
4
|
+
export declare function mapRawEvent(raw: Record<string, unknown>, config: EventApiConfig, index: number): AIOpsEvent;
|
|
5
|
+
export declare function fetchEvents(config: EventApiConfig, creds: Credentials, signal?: AbortSignal): Promise<{
|
|
6
|
+
events: AIOpsEvent[];
|
|
7
|
+
totalCount: number;
|
|
8
|
+
severityCounts: Record<string, number>;
|
|
9
|
+
}>;
|
|
10
|
+
//# sourceMappingURL=fetchEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fetchEvents.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/fetchEvents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAmC,MAAM,SAAS,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAU3D,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAiBrD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAwB3G;AAED,wBAAgB,WAAW,CACvB,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACrB,OAAO,CAAC;IACP,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC1C,CAAC,CAwBD"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { default as EventView } from './EventView';
|
|
2
|
+
export { EventAlertsProvider, useEventAlerts, useEventAlertsOptional } from './EventAlertsContext';
|
|
3
|
+
export type { EventHostAlert, EventAlertsContextValue, EventAlertsProviderProps } from './EventAlertsContext';
|
|
2
4
|
export type { AIOpsEvent, EventSeverity, EventClass, SMSStatus, MonitoringCategory, SortDirection, SortableColumn, EventFieldMapping, EventSeverityMap, EventApiConfig, EventViewProps, } from './types';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACjB,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnG,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAC9G,YAAY,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,GACjB,MAAM,SAAS,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Credentials } from '../../data/DataProvider';
|
|
2
|
+
import { DashboardTheme } from '../../ThemeContext';
|
|
2
3
|
export type EventSeverity = "Minor" | "Major" | "Critical";
|
|
3
4
|
export type EventClass = "Self-monitoring" | "SCOM" | "Situation" | "Alarm" | "Event";
|
|
4
5
|
export type SMSStatus = "" | "SUCCESS" | "FAILED";
|
|
@@ -122,5 +123,7 @@ export interface EventViewProps {
|
|
|
122
123
|
columnWidthsCookie?: string;
|
|
123
124
|
/** Title in the component header. @default "Event Console" */
|
|
124
125
|
title?: string;
|
|
126
|
+
/** Visual theme. When omitted, uses `ThemeContext` from the nearest provider. */
|
|
127
|
+
theme?: DashboardTheme;
|
|
125
128
|
}
|
|
126
129
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/EventView/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3D,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAEtF,MAAM,MAAM,SAAS,GAAG,EAAE,GAAG,SAAS,GAAG,QAAQ,CAAC;AAElD,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,cAAc,CAAC;AAEzD,MAAM,WAAW,UAAU;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,UAAU,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,sBAAsB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,IAAI,CAAC;AAElD,MAAM,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,UAAU,EAAE,MAAM,CAAC,CAAC;AAEjE;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC;;;OAGG;IACH,YAAY,EAAE,iBAAiB,CAAC;IAEhC;;;OAGG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAE/B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC3B;;;OAGG;IACH,SAAS,CAAC,EAAE,cAAc,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,iFAAiF;IACjF,KAAK,CAAC,EAAE,cAAc,CAAC;CAC1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeCallout.d.ts","sourceRoot":"","sources":["../../src/components/NodeCallout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"NodeCallout.d.ts","sourceRoot":"","sources":["../../src/components/NodeCallout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,0EAA0E;IAC1E,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,yEAAyE;IACzE,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAC;IAChB,kFAAkF;IAClF,SAAS,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC5C,mGAAmG;IACnG,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,EAAE,EACF,EAAE,EACF,MAAM,EACN,KAAK,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,SAAS,EACT,KAAe,EACf,WAAW,GACd,EAAE,gBAAgB,kDAkJlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Server3D.d.ts","sourceRoot":"","sources":["../../src/components/Server3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKH,KAAK,eAAe,EAEvB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Server3D.d.ts","sourceRoot":"","sources":["../../src/components/Server3D.tsx"],"names":[],"mappings":"AAOA,OAAO,EAKH,KAAK,eAAe,EAEvB,MAAM,UAAU,CAAC;AAclB,qEAAqE;AACrE,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,aAAa;IAC1B,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAklCD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC7B,OAAa,EACb,OAAY,EACZ,OAAW,EACX,KAAS,EACT,UAAkB,EAClB,MAAiB,EACjB,IAAgB,EAChB,OAAY,EACZ,OAAY,EACZ,UAAqB,EACrB,QAAQ,GACX,EAAE,aAAa,2CAmKf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/components/Service.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AAEH,OAAO,KAAyD,MAAM,OAAO,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"Service.d.ts","sourceRoot":"","sources":["../../src/components/Service.tsx"],"names":[],"mappings":"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"}
|