react-dashstream 0.1.1 → 0.1.3
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 +74 -8
- package/dashstream-skill.md +72 -18
- package/dist/AIOPsDashboard.d.ts +13 -0
- package/dist/AIOPsDashboard.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.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/ServiceNode.d.ts.map +1 -1
- package/dist/components/index.d.ts +2 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/index.js +1781 -1680
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -145,13 +145,13 @@ If you already have events data, pass them directly — no API call is made:
|
|
|
145
145
|
|
|
146
146
|
### EventView props
|
|
147
147
|
|
|
148
|
-
| Prop
|
|
149
|
-
|
|
|
150
|
-
| `apiConfig`
|
|
151
|
-
| `events`
|
|
152
|
-
| `credentials`
|
|
153
|
-
| `
|
|
154
|
-
| `title`
|
|
148
|
+
| Prop | Type | Default | Description |
|
|
149
|
+
| -------------------- | ---------------- | ----------------- | --------------------------------------------------------------------------- |
|
|
150
|
+
| `apiConfig` | `EventApiConfig` | — | API configuration (base URL, payload, field mapping). Required for API mode |
|
|
151
|
+
| `events` | `AIOpsEvent[]` | — | Pre-fetched events. When provided, `apiConfig` is not used |
|
|
152
|
+
| `credentials` | `Credentials` | — | Explicit credentials. Falls back to DataProvider context, then modal |
|
|
153
|
+
| `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name used to persist user-defined column widths |
|
|
154
|
+
| `title` | `string` | `"Event Console"` | Title displayed in the component header |
|
|
155
155
|
|
|
156
156
|
### EventApiConfig
|
|
157
157
|
|
|
@@ -210,12 +210,78 @@ const fieldMapping: EventFieldMapping = {
|
|
|
210
210
|
- **Severity filter chips** — toggle Critical, Major, Minor with live counts
|
|
211
211
|
- **Free-text search** — filters across message, host, owner, and incident ID
|
|
212
212
|
- **Sortable columns** — click any header to cycle ascending / descending / none
|
|
213
|
-
- **
|
|
213
|
+
- **Infinite scroll** — all matching events render in a single scrollable table
|
|
214
|
+
- **Resizable columns** — drag column edges to resize; widths are persisted in cookies
|
|
214
215
|
- **Loading / error states** — spinner, error badge, last-refresh timestamp, manual refresh button
|
|
215
216
|
- **Holographic theme** — dark translucent panels, glowing severity indicators, scan-line header animation
|
|
216
217
|
|
|
217
218
|
---
|
|
218
219
|
|
|
220
|
+
## Event-to-dashboard bridge
|
|
221
|
+
|
|
222
|
+
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.
|
|
223
|
+
|
|
224
|
+
### Quick start
|
|
225
|
+
|
|
226
|
+
```tsx
|
|
227
|
+
<AIOPsDashboard
|
|
228
|
+
brandName="MY DASHBOARD"
|
|
229
|
+
services={services}
|
|
230
|
+
liveData
|
|
231
|
+
dataEndpoint="https://prometheus.example.com/api/v1/query"
|
|
232
|
+
dataBindings={dataBindings}
|
|
233
|
+
eventApiConfig={eventApiConfig} // ← same config used for EventView
|
|
234
|
+
>
|
|
235
|
+
<MyService name="My Service" />
|
|
236
|
+
</AIOPsDashboard>
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### How it works
|
|
240
|
+
|
|
241
|
+
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).
|
|
242
|
+
2. Each fetched event has a `host` field (mapped via `fieldMapping`).
|
|
243
|
+
3. Every `ServiceNode` in the topology checks if its `componentInfo.name` matches any event host (**case-insensitive**).
|
|
244
|
+
4. If a match is found, the node's severity is updated and a `NodeCallout` appears with the event message.
|
|
245
|
+
|
|
246
|
+
### Severity mapping
|
|
247
|
+
|
|
248
|
+
| Event severity | Dashboard status | Callout color |
|
|
249
|
+
| -------------- | ---------------- | ------------- |
|
|
250
|
+
| Critical | `"critical"` | Red |
|
|
251
|
+
| Major | `"warning"` | Orange |
|
|
252
|
+
| Minor | `"warning"` | Orange |
|
|
253
|
+
|
|
254
|
+
When multiple events exist on the same host, the highest severity wins and the callout shows `"N events – <message>"`.
|
|
255
|
+
|
|
256
|
+
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.
|
|
257
|
+
|
|
258
|
+
### Node name matching
|
|
259
|
+
|
|
260
|
+
For the bridge to work, the `name` prop on your nodes must match the `host` field in the event data:
|
|
261
|
+
|
|
262
|
+
```tsx
|
|
263
|
+
// If your events API returns host: "SAP-PRD-APP01", name your node:
|
|
264
|
+
<ServerNode name="SAP-PRD-APP01" ... />
|
|
265
|
+
|
|
266
|
+
// Matching is case-insensitive, so these also work:
|
|
267
|
+
<ServerNode name="sap-prd-app01" ... />
|
|
268
|
+
<ServerNode name="Sap-Prd-App01" ... />
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### Credential resolution
|
|
272
|
+
|
|
273
|
+
The `EventAlertsProvider` inside `AIOPsDashboard` resolves credentials in this order:
|
|
274
|
+
|
|
275
|
+
1. Parent `DataProvider` context (when `liveData` is enabled — **same credentials, single login**)
|
|
276
|
+
2. Built-in credentials modal (when `liveData` is not enabled)
|
|
277
|
+
|
|
278
|
+
### Opt-in behavior
|
|
279
|
+
|
|
280
|
+
- **Without `eventApiConfig`** — no events are fetched, no alerts are injected, zero overhead.
|
|
281
|
+
- **Without `EventView`** — the bridge still works. You can use event-based alerts on the 3D dashboard without ever rendering an `EventView`.
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
219
285
|
## External data source monitoring
|
|
220
286
|
|
|
221
287
|
DashStream can connect to any HTTP monitoring endpoint (Prometheus, Grafana, custom APIs) and feed live values into your dashboard. This section covers **every** data path — from node props to service dialogs, component dialogs, alerts, drill-down internals, and graphs.
|
package/dashstream-skill.md
CHANGED
|
@@ -82,11 +82,13 @@ src/
|
|
|
82
82
|
│ ├── Internal3DComponents.tsx, HistoricalGraphPanel.tsx
|
|
83
83
|
│ ├── ComponentDrillView.tsx, SvgConnection.tsx, SyncBridge.tsx
|
|
84
84
|
│ ├── NodeCallout.tsx, HoloBase.tsx, CarouselContext.ts
|
|
85
|
-
│ ├── EventView/
|
|
86
|
-
│ │ ├── EventView.tsx
|
|
87
|
-
│ │ ├── EventView.css
|
|
88
|
-
│ │ ├──
|
|
89
|
-
│ │ ├──
|
|
85
|
+
│ ├── EventView/ # Operations event console
|
|
86
|
+
│ │ ├── EventView.tsx # Table component (filter, sort, search, infinite scroll)
|
|
87
|
+
│ │ ├── EventView.css # Holographic table styles
|
|
88
|
+
│ │ ├── EventAlertsContext.tsx # EventAlertsProvider + per-host alert map
|
|
89
|
+
│ │ ├── fetchEvents.ts # Shared fetch/mapping logic (used by both EventView & provider)
|
|
90
|
+
│ │ ├── types.ts # AIOpsEvent, EventSeverity, EventApiConfig, etc.
|
|
91
|
+
│ │ ├── mockData.ts # 28 realistic mock events
|
|
90
92
|
│ │ └── index.ts
|
|
91
93
|
│ └── index.ts
|
|
92
94
|
├── services/
|
|
@@ -102,7 +104,7 @@ example/
|
|
|
102
104
|
|
|
103
105
|
## Complete data flow reference
|
|
104
106
|
|
|
105
|
-
There are **
|
|
107
|
+
There are **10 distinct data paths** in this package. Understanding them is critical for building live dashboards.
|
|
106
108
|
|
|
107
109
|
### 1. Data bindings — live props injected into service components
|
|
108
110
|
|
|
@@ -419,7 +421,52 @@ alert?: {
|
|
|
419
421
|
}
|
|
420
422
|
```
|
|
421
423
|
|
|
422
|
-
### 7.
|
|
424
|
+
### 7. Event-to-dashboard bridge — automatic node alerts from events API
|
|
425
|
+
|
|
426
|
+
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.
|
|
427
|
+
|
|
428
|
+
```tsx
|
|
429
|
+
<AIOPsDashboard
|
|
430
|
+
eventApiConfig={eventApiConfig} // same EventApiConfig used for EventView
|
|
431
|
+
liveData
|
|
432
|
+
dataEndpoint="..."
|
|
433
|
+
dataBindings={dataBindings}
|
|
434
|
+
services={services}
|
|
435
|
+
>
|
|
436
|
+
<MyService name="My Service" />
|
|
437
|
+
</AIOPsDashboard>
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
**How it works internally:**
|
|
441
|
+
|
|
442
|
+
1. `AIOPsDashboard` wraps children in `EventAlertsProvider` (inside `DataProvider` when `liveData` is set — shares credentials automatically)
|
|
443
|
+
2. `EventAlertsProvider` fetches events using the same `fetchEvents` + `mapRawEvent` logic as `EventView`
|
|
444
|
+
3. Events are grouped by **lower-cased hostname** into a `Map<string, EventHostAlert>`
|
|
445
|
+
4. `ServiceNode` reads from `EventAlertsContext` via `useEventAlertsOptional()`
|
|
446
|
+
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)
|
|
447
|
+
6. Highest severity among all three sources wins
|
|
448
|
+
7. `NodeCallout` appears automatically with the event message; multi-event hosts show `"N events – message"`
|
|
449
|
+
|
|
450
|
+
**Severity mapping:**
|
|
451
|
+
|
|
452
|
+
| Event severity | → ComponentStatus |
|
|
453
|
+
| -------------- | ----------------- |
|
|
454
|
+
| Critical | `"critical"` |
|
|
455
|
+
| Major | `"warning"` |
|
|
456
|
+
| Minor | `"warning"` |
|
|
457
|
+
|
|
458
|
+
**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" ... />`.
|
|
459
|
+
|
|
460
|
+
**Credential resolution order** (for EventAlertsProvider inside AIOPsDashboard):
|
|
461
|
+
|
|
462
|
+
1. `DataProvider` context credentials (when `liveData` is enabled — same credentials, one login)
|
|
463
|
+
2. Built-in `CredentialsModal` (when `liveData` is not enabled)
|
|
464
|
+
|
|
465
|
+
**Opt-in:** Without `eventApiConfig`, no events are fetched — zero overhead.
|
|
466
|
+
|
|
467
|
+
**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`.
|
|
468
|
+
|
|
469
|
+
### 8. Drill-down internals — custom subComponents
|
|
423
470
|
|
|
424
471
|
When clicking a node, the drill-down shows internal 3D sub-components. Default sub-components are auto-generated per type. Override with `subComponents`:
|
|
425
472
|
|
|
@@ -455,7 +502,7 @@ interface SubComponentConfig {
|
|
|
455
502
|
|
|
456
503
|
All compound nodes accept `subComponents`.
|
|
457
504
|
|
|
458
|
-
###
|
|
505
|
+
### 9. Graph series — custom sparklines
|
|
459
506
|
|
|
460
507
|
The drill-down's historical panel shows sparkline charts. Default graphs are auto-generated. Override with `graphSeries`:
|
|
461
508
|
|
|
@@ -483,7 +530,7 @@ interface GraphSeries {
|
|
|
483
530
|
|
|
484
531
|
All compound nodes accept `graphSeries`.
|
|
485
532
|
|
|
486
|
-
###
|
|
533
|
+
### 10. Data hooks — programmatic access
|
|
487
534
|
|
|
488
535
|
Access live data context anywhere inside the dashboard:
|
|
489
536
|
|
|
@@ -562,6 +609,10 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
|
|
|
562
609
|
|
|
563
610
|
`DataProvider`, `useAIOpsData`, `useAIOpsDataOptional`, `useQueryResult`, `defaultDataTransform`
|
|
564
611
|
|
|
612
|
+
### Event alerts
|
|
613
|
+
|
|
614
|
+
`EventAlertsProvider`, `useEventAlerts`, `useEventAlertsOptional`
|
|
615
|
+
|
|
565
616
|
### Theme
|
|
566
617
|
|
|
567
618
|
`STATUS_CFG`, `HOLO_CYAN` (`"#00e5ff"`), `HOLO_BLUE` (`"#0055cc"`), `HOLO_SURFACE`, `HOLO_GLASS`, `makeFaceStyles(W, H, D)`
|
|
@@ -572,7 +623,7 @@ SAP sub-component helpers: `getServerSubComponents`, `getServerGraphSeries`, `ge
|
|
|
572
623
|
|
|
573
624
|
### Type exports
|
|
574
625
|
|
|
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`
|
|
626
|
+
`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`, `EventHostAlert`, `EventAlertsContextValue`, `EventAlertsProviderProps`
|
|
576
627
|
|
|
577
628
|
---
|
|
578
629
|
|
|
@@ -596,6 +647,7 @@ interface AIOPsDashboardProps {
|
|
|
596
647
|
dataTransform?: (raw: unknown) => unknown;
|
|
597
648
|
dataRefreshInterval?: number; // Default: 60000
|
|
598
649
|
serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
|
|
650
|
+
eventApiConfig?: EventApiConfig; // Enable event-to-dashboard bridge
|
|
599
651
|
children: React.ReactNode;
|
|
600
652
|
}
|
|
601
653
|
```
|
|
@@ -871,13 +923,13 @@ const apiConfig: EventApiConfig = {
|
|
|
871
923
|
|
|
872
924
|
### Props
|
|
873
925
|
|
|
874
|
-
| Prop
|
|
875
|
-
|
|
|
876
|
-
| `apiConfig`
|
|
877
|
-
| `events`
|
|
878
|
-
| `credentials`
|
|
879
|
-
| `
|
|
880
|
-
| `title`
|
|
926
|
+
| Prop | Type | Default | Notes |
|
|
927
|
+
| -------------------- | ---------------- | ----------------- | -------------------------------------------------- |
|
|
928
|
+
| `apiConfig` | `EventApiConfig` | — | Required for API mode |
|
|
929
|
+
| `events` | `AIOpsEvent[]` | — | Pre-fetched events (skips API calls) |
|
|
930
|
+
| `credentials` | `Credentials` | — | Explicit creds; falls back to DataProvider → modal |
|
|
931
|
+
| `columnWidthsCookie` | `string` | `"ev_col_widths"` | Cookie name for persisting column widths |
|
|
932
|
+
| `title` | `string` | `"Event Console"` | Header title |
|
|
881
933
|
|
|
882
934
|
### EventApiConfig
|
|
883
935
|
|
|
@@ -942,7 +994,8 @@ interface AIOpsEvent {
|
|
|
942
994
|
- Severity filter chips with live counts
|
|
943
995
|
- Free-text search across message, host, owner, incident ID
|
|
944
996
|
- Sortable columns (click header: asc → desc → none)
|
|
945
|
-
-
|
|
997
|
+
- Infinite scroll — all matching events in a single scrollable table
|
|
998
|
+
- Resizable columns — drag column edges; widths persist in cookies
|
|
946
999
|
- Loading spinner, error badge, last-refresh timestamp
|
|
947
1000
|
- Holographic theme: scan-line header, glowing rows, severity badges
|
|
948
1001
|
|
|
@@ -983,3 +1036,4 @@ Output: `dist/index.js` (ESM), `dist/index.d.ts`, `dist/index.css`.
|
|
|
983
1036
|
8. **`dialogMetrics` replaces defaults** — When provided, all default gauges (CPU/Memory/Storage) are removed.
|
|
984
1037
|
9. **`subComponents` replaces defaults** — When provided, all auto-generated sub-components are removed.
|
|
985
1038
|
10. **`graphSeries` replaces defaults** — When provided, all auto-generated sparklines are removed.
|
|
1039
|
+
11. **Event bridge matching** — Node `name` must match event `host` (case-insensitive) for `eventApiConfig` to highlight nodes automatically.
|
package/dist/AIOPsDashboard.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
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';
|
|
5
6
|
/**
|
|
@@ -120,6 +121,18 @@ export interface AIOPsDashboardProps {
|
|
|
120
121
|
* ```
|
|
121
122
|
*/
|
|
122
123
|
serviceDataBindings?: Record<string, ServiceMetricBinding[]>;
|
|
124
|
+
/**
|
|
125
|
+
* Event API configuration.
|
|
126
|
+
*
|
|
127
|
+
* When provided, the dashboard fetches events in the background and
|
|
128
|
+
* automatically highlights nodes whose `componentInfo.name` (case-insensitive)
|
|
129
|
+
* matches an event's `host` field.
|
|
130
|
+
*
|
|
131
|
+
* Uses the same `access-key` / `access-secret-key` credentials as the
|
|
132
|
+
* live-data pipeline. If `liveData` is not enabled, a credentials modal
|
|
133
|
+
* is shown on first load.
|
|
134
|
+
*/
|
|
135
|
+
eventApiConfig?: EventApiConfig;
|
|
123
136
|
/**
|
|
124
137
|
* Service components to display in the carousel.
|
|
125
138
|
* 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,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,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,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 +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;AAKjB,OAAO,iBAAiB,CAAC;AAuPzB,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAC9B,SAAS,EACT,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,SAAS,EACtB,kBAAmC,EACnC,KAAuB,GAC1B,EAAE,cAAc,2CAqRhB"}
|
|
@@ -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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceNode.d.ts","sourceRoot":"","sources":["../../src/components/ServiceNode.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAA2D,MAAM,OAAO,CAAC;AAIhF,OAAO,KAAK,EAAE,iBAAiB,EAA2C,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ServiceNode.d.ts","sourceRoot":"","sources":["../../src/components/ServiceNode.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AAEH,OAAO,KAA2D,MAAM,OAAO,CAAC;AAIhF,OAAO,KAAK,EAAE,iBAAiB,EAA2C,MAAM,UAAU,CAAC;AAI3F,MAAM,WAAW,gBAAgB;IAC7B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,6EAA6E;IAC7E,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,aAAa,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAI1B,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG;QACnD,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IAIF;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,KAAK,CAAC,EAAE;QACJ,2GAA2G;QAC3G,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,mFAAmF;QACnF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,iFAAiF;QACjF,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,0DAA0D;QAC1D,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;QAC5C,iEAAiE;QACjE,WAAW,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;CACL;AAuKD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAChC,EAAE,EACF,EAAE,EACF,aAAa,EACb,MAAM,EACN,QAAQ,EACR,KAAiB,EACjB,KAAK,EACL,QAAQ,EACR,KAAY,EACZ,aAAa,EACb,cAAkB,EAClB,UAAU,EACV,IAAY,EACZ,KAAK,GACR,EAAE,gBAAgB,2CAmOlB"}
|
|
@@ -82,7 +82,8 @@ export { default as ComponentDrillView } from './ComponentDrillView';
|
|
|
82
82
|
export type { ComponentDrillViewProps } from './ComponentDrillView';
|
|
83
83
|
export { CPU3D, Memory3D, DriveBay3D, NetworkBlock3D, ThreadPool3D, Platter3D, Port3D, } from './Internal3DComponents';
|
|
84
84
|
export { EventView } from './EventView';
|
|
85
|
-
export
|
|
85
|
+
export { EventAlertsProvider, useEventAlerts, useEventAlertsOptional } from './EventView';
|
|
86
|
+
export type { AIOpsEvent, EventSeverity, EventClass, SMSStatus, MonitoringCategory, EventFieldMapping, EventSeverityMap, EventApiConfig, EventViewProps, EventHostAlert, EventAlertsContextValue, EventAlertsProviderProps, } from './EventView';
|
|
86
87
|
export { CarouselContext, CarouselItemContext, useCarouselContext, useCarouselItemContext, } from './CarouselContext';
|
|
87
88
|
export type { CarouselContextValue, CarouselItemContextValue } from './CarouselContext';
|
|
88
89
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEnE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,YAAY,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGlE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAEnG,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGtD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAEpE,OAAO,EACH,KAAK,EACL,QAAQ,EACR,UAAU,EACV,cAAc,EACd,YAAY,EACZ,SAAS,EACT,MAAM,GACT,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC1F,YAAY,EACR,UAAU,EACV,aAAa,EACb,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,wBAAwB,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACH,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC"}
|