@xh/hoist 71.0.0-SNAPSHOT.1735861709598 → 71.0.0-SNAPSHOT.1736119965537

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.
Files changed (64) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/admin/AppModel.ts +15 -8
  3. package/admin/tabs/cluster/ClusterTab.ts +14 -63
  4. package/admin/tabs/cluster/{BaseInstanceModel.ts → instances/BaseInstanceModel.ts} +2 -2
  5. package/admin/tabs/cluster/instances/InstancesTab.ts +73 -0
  6. package/admin/tabs/cluster/{ClusterTabModel.ts → instances/InstancesTabModel.ts} +16 -16
  7. package/admin/tabs/cluster/{connpool → instances/connpool}/ConnPoolMonitorModel.ts +1 -1
  8. package/admin/tabs/cluster/{connpool → instances/connpool}/ConnPoolMonitorPanel.ts +1 -1
  9. package/admin/tabs/cluster/{environment → instances/environment}/ServerEnvModel.ts +1 -1
  10. package/admin/tabs/cluster/{environment → instances/environment}/ServerEnvPanel.ts +1 -1
  11. package/admin/tabs/cluster/{logs → instances/logs}/LogViewer.ts +1 -1
  12. package/admin/tabs/cluster/{logs → instances/logs}/LogViewerModel.ts +1 -1
  13. package/admin/tabs/cluster/{logs → instances/logs}/levels/LogLevelDialog.ts +1 -1
  14. package/admin/tabs/cluster/{logs → instances/logs}/levels/LogLevelDialogModel.ts +1 -1
  15. package/admin/tabs/cluster/{memory → instances/memory}/MemoryMonitorModel.ts +1 -1
  16. package/admin/tabs/cluster/{memory → instances/memory}/MemoryMonitorPanel.ts +1 -1
  17. package/admin/tabs/cluster/{services → instances/services}/DetailsPanel.ts +1 -1
  18. package/admin/tabs/cluster/{services → instances/services}/ServiceModel.ts +3 -3
  19. package/admin/tabs/cluster/{services → instances/services}/ServicePanel.ts +1 -1
  20. package/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketModel.ts +1 -1
  21. package/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketPanel.ts +1 -1
  22. package/admin/tabs/cluster/objects/ClusterObjects.scss +25 -0
  23. package/admin/tabs/cluster/objects/ClusterObjectsModel.ts +427 -0
  24. package/admin/tabs/cluster/objects/ClusterObjectsPanel.ts +114 -0
  25. package/admin/tabs/cluster/objects/DetailModel.ts +158 -0
  26. package/admin/tabs/cluster/objects/DetailPanel.ts +51 -0
  27. package/build/types/admin/tabs/cluster/ClusterTab.d.ts +1 -4
  28. package/build/types/admin/tabs/cluster/{BaseInstanceModel.d.ts → instances/BaseInstanceModel.d.ts} +2 -2
  29. package/build/types/admin/tabs/cluster/instances/InstancesTab.d.ts +4 -0
  30. package/build/types/admin/tabs/cluster/{ClusterTabModel.d.ts → instances/InstancesTabModel.d.ts} +2 -1
  31. package/build/types/admin/tabs/cluster/{connpool → instances/connpool}/ConnPoolMonitorModel.d.ts +1 -1
  32. package/build/types/admin/tabs/cluster/{connpool → instances/connpool}/ConnPoolMonitorPanel.d.ts +1 -1
  33. package/build/types/admin/tabs/cluster/{environment → instances/environment}/ServerEnvModel.d.ts +1 -1
  34. package/build/types/admin/tabs/cluster/{environment → instances/environment}/ServerEnvPanel.d.ts +1 -1
  35. package/build/types/admin/tabs/cluster/{logs → instances/logs}/LogViewerModel.d.ts +1 -1
  36. package/build/types/admin/tabs/cluster/{logs → instances/logs}/levels/LogLevelDialog.d.ts +1 -1
  37. package/build/types/admin/tabs/cluster/{logs → instances/logs}/levels/LogLevelDialogModel.d.ts +1 -1
  38. package/build/types/admin/tabs/cluster/{memory → instances/memory}/MemoryMonitorModel.d.ts +1 -1
  39. package/build/types/admin/tabs/cluster/{memory → instances/memory}/MemoryMonitorPanel.d.ts +1 -1
  40. package/build/types/admin/tabs/cluster/{services → instances/services}/DetailsPanel.d.ts +1 -1
  41. package/build/types/admin/tabs/cluster/{services → instances/services}/ServiceModel.d.ts +1 -1
  42. package/build/types/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketModel.d.ts +1 -1
  43. package/build/types/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketPanel.d.ts +1 -1
  44. package/build/types/admin/tabs/cluster/objects/ClusterObjectsModel.d.ts +30 -0
  45. package/build/types/admin/tabs/cluster/objects/ClusterObjectsPanel.d.ts +3 -0
  46. package/build/types/admin/tabs/cluster/objects/DetailModel.d.ts +19 -0
  47. package/build/types/admin/tabs/cluster/objects/DetailPanel.d.ts +3 -0
  48. package/package.json +1 -1
  49. package/tsconfig.tsbuildinfo +1 -1
  50. package/admin/tabs/cluster/distobjects/DistributedObjectsModel.ts +0 -199
  51. package/admin/tabs/cluster/distobjects/DistributedObjectsPanel.ts +0 -99
  52. package/build/types/admin/tabs/cluster/distobjects/DistributedObjectsModel.d.ts +0 -16
  53. package/build/types/admin/tabs/cluster/distobjects/DistributedObjectsPanel.d.ts +0 -2
  54. /package/admin/tabs/cluster/{logs → instances/logs}/LogDisplay.ts +0 -0
  55. /package/admin/tabs/cluster/{logs → instances/logs}/LogDisplayModel.ts +0 -0
  56. /package/admin/tabs/cluster/{logs → instances/logs}/LogViewer.scss +0 -0
  57. /package/admin/tabs/cluster/{services → instances/services}/DetailsModel.ts +0 -0
  58. /package/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketColumns.ts +0 -0
  59. /package/build/types/admin/tabs/cluster/{logs → instances/logs}/LogDisplay.d.ts +0 -0
  60. /package/build/types/admin/tabs/cluster/{logs → instances/logs}/LogDisplayModel.d.ts +0 -0
  61. /package/build/types/admin/tabs/cluster/{logs → instances/logs}/LogViewer.d.ts +0 -0
  62. /package/build/types/admin/tabs/cluster/{services → instances/services}/DetailsModel.d.ts +0 -0
  63. /package/build/types/admin/tabs/cluster/{services → instances/services}/ServicePanel.d.ts +0 -0
  64. /package/build/types/admin/tabs/cluster/{websocket → instances/websocket}/WebSocketColumns.d.ts +0 -0
package/CHANGELOG.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## v71.0.0-SNAPSHOT - unreleased
4
4
 
5
- ### 💥 Breaking Changes
5
+ ### 💥 Breaking Changes (upgrade 🟢 Medium - Hoist core update, adjust imports)
6
6
 
7
7
  * Requires `hoist-core >= 26.1` with new APIs to support `ViewManager`.
8
8
  * `ErrorMessage` is now cross-platform - update imports from `@xh/hoist/desktop/cmp/error`
package/admin/AppModel.ts CHANGED
@@ -71,14 +71,21 @@ export class AppModel extends HoistAppModel {
71
71
  name: 'cluster',
72
72
  path: '/cluster',
73
73
  children: [
74
- {name: 'logs', path: '/logs'},
75
- {name: 'memory', path: '/memory'},
76
- {name: 'jdbcPool', path: '/jdbcPool'},
77
- {name: 'environment', path: '/environment'},
78
- {name: 'services', path: '/services'},
79
- {name: 'objects', path: '/objects'},
80
- {name: 'hibernate', path: '/hibernate'},
81
- {name: 'webSockets', path: '/webSockets'}
74
+ {
75
+ name: 'instances',
76
+ path: '/instances',
77
+ children: [
78
+ {name: 'logs', path: '/logs'},
79
+ {name: 'memory', path: '/memory'},
80
+ {name: 'jdbcPool', path: '/jdbcPool'},
81
+ {name: 'environment', path: '/environment'},
82
+ {name: 'services', path: '/services'},
83
+ {name: 'hibernate', path: '/hibernate'},
84
+ {name: 'consistency', path: '/consistency'},
85
+ {name: 'webSockets', path: '/webSockets'}
86
+ ]
87
+ },
88
+ {name: 'objects', path: '/objects'}
82
89
  ]
83
90
  },
84
91
  {
@@ -4,70 +4,21 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {grid} from '@xh/hoist/cmp/grid';
7
+ import {clusterObjectsPanel} from '@xh/hoist/admin/tabs/cluster/objects/ClusterObjectsPanel';
8
+ import {instancesTab} from '@xh/hoist/admin/tabs/cluster/instances/InstancesTab';
8
9
  import {tabContainer} from '@xh/hoist/cmp/tab';
9
- import {creates, hoistCmp} from '@xh/hoist/core';
10
- import {mask} from '@xh/hoist/cmp/mask';
11
- import {panel} from '@xh/hoist/desktop/cmp/panel';
12
- import {tabSwitcher} from '@xh/hoist/desktop/cmp/tab';
13
- import {box, div, hspacer, p, placeholder, vframe} from '@xh/hoist/cmp/layout';
14
- import {ClusterTabModel} from './ClusterTabModel';
10
+ import {hoistCmp} from '@xh/hoist/core';
15
11
  import {Icon} from '@xh/hoist/icon';
16
12
 
17
- export const clusterTab = hoistCmp.factory({
18
- model: creates(ClusterTabModel),
19
- render({model}) {
20
- return vframe(
21
- panel({
22
- modelConfig: {
23
- side: 'top',
24
- defaultSize: 105,
25
- minSize: 75,
26
- collapsible: false,
27
- persistWith: model.persistWith
28
- },
29
- item: grid()
30
- }),
31
- detailPanel(),
32
- failedConnectionMask()
33
- );
34
- }
35
- });
36
-
37
- export const detailPanel = hoistCmp.factory<ClusterTabModel>({
38
- render({model}) {
39
- const {instance, lastLoadException} = model;
40
- if (!instance?.isReady) {
41
- return placeholder({
42
- items: [Icon.server(), 'Select a running instance above.'],
43
- omit: lastLoadException
44
- });
13
+ export const clusterTab = hoistCmp.factory(() =>
14
+ tabContainer({
15
+ modelConfig: {
16
+ route: 'default.cluster',
17
+ switcher: {orientation: 'left', testId: 'cluster-tab-switcher'},
18
+ tabs: [
19
+ {id: 'instances', icon: Icon.info(), content: instancesTab},
20
+ {id: 'objects', icon: Icon.diff(), content: clusterObjectsPanel}
21
+ ]
45
22
  }
46
-
47
- return panel({
48
- compactHeader: true,
49
- tbar: [
50
- Icon.server(),
51
- box({width: 150, item: model.formatInstance(instance)}),
52
- hspacer(25),
53
- tabSwitcher()
54
- ],
55
- flex: 1,
56
- item: tabContainer()
57
- });
58
- }
59
- });
60
-
61
- export const failedConnectionMask = hoistCmp.factory<ClusterTabModel>({
62
- render({model}) {
63
- return mask({
64
- message: div(
65
- p('Attempting to connect to cluster.'),
66
- p('Local instance may be unavailable, please wait.')
67
- ),
68
- isDisplayed: true,
69
- spinner: true,
70
- omit: !model.lastLoadException
71
- });
72
- }
73
- });
23
+ })
24
+ );
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {ClusterTabModel} from '@xh/hoist/admin/tabs/cluster/ClusterTabModel';
7
+ import {InstancesTabModel} from '@xh/hoist/admin/tabs/cluster/instances/InstancesTabModel';
8
8
  import {HoistModel, LoadSpec, lookup, PlainObject, XH} from '@xh/hoist/core';
9
9
  import {fmtDateTimeSec, fmtJson} from '@xh/hoist/format';
10
10
  import {DAYS} from '@xh/hoist/utils/datetime';
@@ -15,7 +15,7 @@ import {isDisplayed} from '@xh/hoist/utils/js';
15
15
  export class BaseInstanceModel extends HoistModel {
16
16
  viewRef = createRef<HTMLElement>();
17
17
 
18
- @lookup(() => ClusterTabModel) parent: ClusterTabModel;
18
+ @lookup(() => InstancesTabModel) parent: InstancesTabModel;
19
19
 
20
20
  get instanceName(): string {
21
21
  return this.parent.instanceName;
@@ -0,0 +1,73 @@
1
+ /*
2
+ * This file belongs to Hoist, an application development toolkit
3
+ * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
+ *
5
+ * Copyright © 2024 Extremely Heavy Industries Inc.
6
+ */
7
+ import {grid} from '@xh/hoist/cmp/grid';
8
+ import {tabContainer} from '@xh/hoist/cmp/tab';
9
+ import {creates, hoistCmp} from '@xh/hoist/core';
10
+ import {mask} from '@xh/hoist/cmp/mask';
11
+ import {panel} from '@xh/hoist/desktop/cmp/panel';
12
+ import {tabSwitcher} from '@xh/hoist/desktop/cmp/tab';
13
+ import {box, div, hspacer, p, placeholder, vframe} from '@xh/hoist/cmp/layout';
14
+ import {InstancesTabModel} from '@xh/hoist/admin/tabs/cluster/instances/InstancesTabModel';
15
+ import {Icon} from '@xh/hoist/icon';
16
+
17
+ export const instancesTab = hoistCmp.factory({
18
+ model: creates(InstancesTabModel),
19
+ render({model}) {
20
+ return vframe(
21
+ panel({
22
+ modelConfig: {
23
+ side: 'top',
24
+ defaultSize: 105,
25
+ minSize: 75,
26
+ collapsible: false,
27
+ persistWith: model.persistWith
28
+ },
29
+ item: grid()
30
+ }),
31
+ detailPanel(),
32
+ failedConnectionMask()
33
+ );
34
+ }
35
+ });
36
+
37
+ export const detailPanel = hoistCmp.factory<InstancesTabModel>({
38
+ render({model}) {
39
+ const {instance, lastLoadException} = model;
40
+ if (!instance?.isReady) {
41
+ return placeholder({
42
+ items: [Icon.server(), 'Select a running instance above.'],
43
+ omit: lastLoadException
44
+ });
45
+ }
46
+
47
+ return panel({
48
+ compactHeader: true,
49
+ tbar: [
50
+ Icon.server(),
51
+ box({width: 150, item: model.formatInstance(instance)}),
52
+ hspacer(25),
53
+ tabSwitcher()
54
+ ],
55
+ flex: 1,
56
+ item: tabContainer()
57
+ });
58
+ }
59
+ });
60
+
61
+ export const failedConnectionMask = hoistCmp.factory<InstancesTabModel>({
62
+ render({model}) {
63
+ return mask({
64
+ message: div(
65
+ p('Attempting to connect to cluster.'),
66
+ p('Local instance may be unavailable, please wait.')
67
+ ),
68
+ isDisplayed: true,
69
+ spinner: true,
70
+ omit: !model.lastLoadException
71
+ });
72
+ }
73
+ });
@@ -6,14 +6,16 @@
6
6
  */
7
7
  import {AppModel} from '@xh/hoist/admin/AppModel';
8
8
  import {timestampNoYear} from '@xh/hoist/admin/columns';
9
- import {connPoolMonitorPanel} from '@xh/hoist/admin/tabs/cluster/connpool/ConnPoolMonitorPanel';
10
- import {distributedObjectsPanel} from '@xh/hoist/admin/tabs/cluster/distobjects/DistributedObjectsPanel';
11
- import {serverEnvPanel} from '@xh/hoist/admin/tabs/cluster/environment/ServerEnvPanel';
12
- import {logViewer} from '@xh/hoist/admin/tabs/cluster/logs/LogViewer';
13
- import {usedHeapMb, usedPctMax} from '@xh/hoist/admin/tabs/cluster/memory/MemoryMonitorModel';
14
- import {memoryMonitorPanel} from '@xh/hoist/admin/tabs/cluster/memory/MemoryMonitorPanel';
15
- import {servicePanel} from '@xh/hoist/admin/tabs/cluster/services/ServicePanel';
16
- import {webSocketPanel} from '@xh/hoist/admin/tabs/cluster/websocket/WebSocketPanel';
9
+ import {connPoolMonitorPanel} from '@xh/hoist/admin/tabs/cluster/instances/connpool/ConnPoolMonitorPanel';
10
+ import {serverEnvPanel} from '@xh/hoist/admin/tabs/cluster/instances/environment/ServerEnvPanel';
11
+ import {logViewer} from '@xh/hoist/admin/tabs/cluster/instances/logs/LogViewer';
12
+ import {
13
+ usedHeapMb,
14
+ usedPctMax
15
+ } from '@xh/hoist/admin/tabs/cluster/instances/memory/MemoryMonitorModel';
16
+ import {memoryMonitorPanel} from '@xh/hoist/admin/tabs/cluster/instances/memory/MemoryMonitorPanel';
17
+ import {servicePanel} from '@xh/hoist/admin/tabs/cluster/instances/services/ServicePanel';
18
+ import {webSocketPanel} from '@xh/hoist/admin/tabs/cluster/instances/websocket/WebSocketPanel';
17
19
  import {badge} from '@xh/hoist/cmp/badge';
18
20
  import {GridModel, numberCol} from '@xh/hoist/cmp/grid';
19
21
  import {hbox} from '@xh/hoist/cmp/layout';
@@ -27,7 +29,7 @@ import {Timer} from '@xh/hoist/utils/async';
27
29
  import {SECONDS} from '@xh/hoist/utils/datetime';
28
30
  import {ReactNode} from 'react';
29
31
 
30
- export class ClusterTabModel extends HoistModel {
32
+ export class InstancesTabModel extends HoistModel {
31
33
  override persistWith = {localStorageKey: 'xhAdminClusterTabState'};
32
34
 
33
35
  @lookup(TabModel) private tabModel: TabModel;
@@ -57,6 +59,10 @@ export class ClusterTabModel extends HoistModel {
57
59
  return this.gridModel.store.allCount > 1;
58
60
  }
59
61
 
62
+ get instanceNames(): string[] {
63
+ return this.gridModel.store.records.map(r => r.data.name);
64
+ }
65
+
60
66
  override async doLoadAsync(loadSpec: LoadSpec) {
61
67
  const {gridModel} = this;
62
68
 
@@ -182,7 +188,7 @@ export class ClusterTabModel extends HoistModel {
182
188
 
183
189
  private createTabContainerModel() {
184
190
  return new TabContainerModel({
185
- route: 'default.cluster',
191
+ route: 'default.cluster.instances',
186
192
  switcher: false,
187
193
  tabs: [
188
194
  {id: 'logs', icon: Icon.fileText(), content: logViewer},
@@ -195,12 +201,6 @@ export class ClusterTabModel extends HoistModel {
195
201
  },
196
202
  {id: 'environment', icon: Icon.globe(), content: serverEnvPanel},
197
203
  {id: 'services', icon: Icon.gears(), content: servicePanel},
198
- {
199
- id: 'objects',
200
- title: 'Distributed Objects',
201
- icon: Icon.grip(),
202
- content: distributedObjectsPanel
203
- },
204
204
  {id: 'webSockets', title: 'WebSockets', icon: Icon.bolt(), content: webSocketPanel}
205
205
  ]
206
206
  });
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import {timestampNoYear} from '@xh/hoist/admin/columns';
9
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
9
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
10
10
  import {ChartModel} from '@xh/hoist/cmp/chart';
11
11
  import {GridModel} from '@xh/hoist/cmp/grid';
12
12
  import {LoadSpec, managed, PlainObject, XH} from '@xh/hoist/core';
@@ -5,7 +5,7 @@
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {AppModel} from '@xh/hoist/admin/AppModel';
8
- import {ConnPoolMonitorModel} from '@xh/hoist/admin/tabs/cluster/connpool/ConnPoolMonitorModel';
8
+ import {ConnPoolMonitorModel} from '@xh/hoist/admin/tabs/cluster/instances/connpool/ConnPoolMonitorModel';
9
9
  import {chart} from '@xh/hoist/cmp/chart';
10
10
  import {grid, gridCountLabel} from '@xh/hoist/cmp/grid';
11
11
  import {filler, hframe, vframe} from '@xh/hoist/cmp/layout';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
7
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
8
8
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
9
9
  import {GridModel} from '@xh/hoist/cmp/grid';
10
10
  import {LoadSpec, managed, XH} from '@xh/hoist/core';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {ServerEnvModel} from '@xh/hoist/admin/tabs/cluster/environment/ServerEnvModel';
7
+ import {ServerEnvModel} from '@xh/hoist/admin/tabs/cluster/instances/environment/ServerEnvModel';
8
8
  import {grid, gridCountLabel} from '@xh/hoist/cmp/grid';
9
9
  import {filler} from '@xh/hoist/cmp/layout';
10
10
  import {storeFilterField} from '@xh/hoist/cmp/store';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {logLevelDialog} from '@xh/hoist/admin/tabs/cluster/logs/levels/LogLevelDialog';
7
+ import {logLevelDialog} from '@xh/hoist/admin/tabs/cluster/instances/logs/levels/LogLevelDialog';
8
8
  import {grid} from '@xh/hoist/cmp/grid';
9
9
  import {hframe} from '@xh/hoist/cmp/layout';
10
10
  import {storeFilterField} from '@xh/hoist/cmp/store';
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import {AppModel} from '@xh/hoist/admin/AppModel';
9
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
9
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
10
10
  import {GridModel} from '@xh/hoist/cmp/grid';
11
11
  import {LoadSpec, managed, XH} from '@xh/hoist/core';
12
12
  import {RecordActionSpec} from '@xh/hoist/data';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {LogLevelDialogModel} from '@xh/hoist/admin/tabs/cluster/logs/levels/LogLevelDialogModel';
7
+ import {LogLevelDialogModel} from '@xh/hoist/admin/tabs/cluster/instances/logs/levels/LogLevelDialogModel';
8
8
  import {filler, span} from '@xh/hoist/cmp/layout';
9
9
  import {creates, hoistCmp} from '@xh/hoist/core';
10
10
  import {button} from '@xh/hoist/desktop/cmp/button';
@@ -7,7 +7,7 @@
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import {AppModel} from '@xh/hoist/admin/AppModel';
9
9
  import * as Col from '@xh/hoist/admin/columns/Rest';
10
- import {LogViewerModel} from '@xh/hoist/admin/tabs/cluster/logs/LogViewerModel';
10
+ import {LogViewerModel} from '@xh/hoist/admin/tabs/cluster/instances/logs/LogViewerModel';
11
11
  import {HoistModel, managed, lookup, LoadSpec} from '@xh/hoist/core';
12
12
  import {FieldSpec} from '@xh/hoist/data';
13
13
  import {textInput} from '@xh/hoist/desktop/cmp/input';
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import {timestampNoYear} from '@xh/hoist/admin/columns';
9
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
9
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
10
10
  import {ChartModel} from '@xh/hoist/cmp/chart';
11
11
  import {ColumnSpec, GridModel} from '@xh/hoist/cmp/grid';
12
12
  import {LoadSpec, managed, XH} from '@xh/hoist/core';
@@ -5,7 +5,7 @@
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
7
  import {AppModel} from '@xh/hoist/admin/AppModel';
8
- import {MemoryMonitorModel} from '@xh/hoist/admin/tabs/cluster/memory/MemoryMonitorModel';
8
+ import {MemoryMonitorModel} from '@xh/hoist/admin/tabs/cluster/instances/memory/MemoryMonitorModel';
9
9
  import {chart} from '@xh/hoist/cmp/chart';
10
10
  import {grid, gridCountLabel} from '@xh/hoist/cmp/grid';
11
11
  import {code, filler, fragment, hbox, hspacer, span, vframe} from '@xh/hoist/cmp/layout';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {DetailsModel} from '@xh/hoist/admin/tabs/cluster/services/DetailsModel';
7
+ import {DetailsModel} from '@xh/hoist/admin/tabs/cluster/instances/services/DetailsModel';
8
8
  import {placeholder} from '@xh/hoist/cmp/layout';
9
9
  import {creates, hoistCmp, XH} from '@xh/hoist/core';
10
10
  import {errorMessage} from '@xh/hoist/cmp/error';
@@ -7,7 +7,7 @@
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import {AppModel} from '@xh/hoist/admin/AppModel';
9
9
  import {timestampNoYear} from '@xh/hoist/admin/columns';
10
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
10
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
11
11
  import {GridModel} from '@xh/hoist/cmp/grid';
12
12
  import {br, fragment} from '@xh/hoist/cmp/layout';
13
13
  import {LoadSpec, managed, XH} from '@xh/hoist/core';
@@ -25,7 +25,7 @@ export class ServiceModel extends BaseInstanceModel {
25
25
  textFilter: FilterTestFn = null;
26
26
 
27
27
  clearCachesAction: RecordActionSpec = {
28
- text: 'Clear Caches',
28
+ text: 'Clear Service Caches',
29
29
  icon: Icon.reset(),
30
30
  intent: 'warning',
31
31
  actionFn: () => this.clearCachesAsync(false),
@@ -37,7 +37,7 @@ export class ServiceModel extends BaseInstanceModel {
37
37
  };
38
38
 
39
39
  clearClusterCachesAction: RecordActionSpec = {
40
- text: 'Clear Caches (entire cluster)',
40
+ text: 'Clear Service Caches (entire cluster)',
41
41
  icon: Icon.reset(),
42
42
  intent: 'warning',
43
43
  actionFn: () => this.clearCachesAsync(true),
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {detailsPanel} from '@xh/hoist/admin/tabs/cluster/services/DetailsPanel';
7
+ import {detailsPanel} from '@xh/hoist/admin/tabs/cluster/instances/services/DetailsPanel';
8
8
  import {grid, gridCountLabel} from '@xh/hoist/cmp/grid';
9
9
  import {filler, hframe} from '@xh/hoist/cmp/layout';
10
10
  import {storeFilterField} from '@xh/hoist/cmp/store';
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import {exportFilenameWithDate} from '@xh/hoist/admin/AdminUtils';
8
8
  import * as Col from '@xh/hoist/admin/columns';
9
- import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/BaseInstanceModel';
9
+ import {BaseInstanceModel} from '@xh/hoist/admin/tabs/cluster/instances/BaseInstanceModel';
10
10
  import {GridModel} from '@xh/hoist/cmp/grid';
11
11
  import {div, p} from '@xh/hoist/cmp/layout';
12
12
  import {LoadSpec, managed, XH} from '@xh/hoist/core';
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {WebSocketModel} from '@xh/hoist/admin/tabs/cluster/websocket/WebSocketModel';
7
+ import {WebSocketModel} from '@xh/hoist/admin/tabs/cluster/instances/websocket/WebSocketModel';
8
8
  import {grid, gridCountLabel} from '@xh/hoist/cmp/grid';
9
9
  import {box, filler, fragment, p} from '@xh/hoist/cmp/layout';
10
10
  import {relativeTimestamp} from '@xh/hoist/cmp/relativetimestamp';
@@ -0,0 +1,25 @@
1
+ /*
2
+ * This file belongs to Hoist, an application development toolkit
3
+ * developed by Extremely Heavy Industries (www.xh.io | info@xh.io)
4
+ *
5
+ * Copyright © 2024 Extremely Heavy Industries Inc.
6
+ */
7
+
8
+ .xh-cluster-objects-row-has-break:not(.ag-row-selected) {
9
+ background-color: var(--xh-intent-danger-trans1) !important;
10
+ }
11
+
12
+ .xh-cluster-objects-cell-danger {
13
+ background-color: var(--xh-intent-danger-trans1) !important;
14
+ }
15
+
16
+ .xh-cluster-objects-cell-success {
17
+ background-color: var(--xh-intent-success-trans1) !important;
18
+ }
19
+
20
+ .xh-cluster-objects-result-count {
21
+ align-items: center;
22
+ .xh-icon {
23
+ margin-right: 0.5em;
24
+ }
25
+ }