Skip to content

Commit bbaceb1

Browse files
committed
fix(console): load widget init missing
1 parent 31aac4a commit bbaceb1

File tree

4 files changed

+23
-18
lines changed

4 files changed

+23
-18
lines changed

console/packages/starwhale-core/src/widget/WidgetFactory.tsx

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { WidgetGroupType, WidgetType } from '../types'
22
import WidgetPlugin from './WidgetPlugin'
33
import { generateId } from '../utils/generators'
4+
import modules from './WidgetModules'
45

56
export type DerivedPropertiesMap = Record<string, string>
67

@@ -16,6 +17,10 @@ class WidgetFactory {
1617
}
1718
}
1819

20+
static hasWidget(widgetType: WidgetType) {
21+
return this.widgetMap.has(widgetType)
22+
}
23+
1924
static getWidgetTypes(): WidgetType[] {
2025
return Array.from(this.widgetMap.keys())
2126
}
@@ -27,12 +32,12 @@ class WidgetFactory {
2732
}
2833

2934
static getWidget(widgetType: WidgetType) {
30-
if (!this.widgetTypes[widgetType]) return null
35+
if (!this.widgetTypes[widgetType]) return undefined
3136
return this.widgetMap.get(widgetType)
3237
}
3338

3439
static newWidget(widgetType: WidgetType) {
35-
if (!this.widgetMap.has(widgetType)) return null
40+
if (!this.widgetMap.has(widgetType)) return undefined
3641
const widget = this.widgetMap.get(widgetType) as WidgetPlugin
3742
const id = generateId(widget.defaults?.group ?? '')
3843

@@ -47,4 +52,10 @@ class WidgetFactory {
4752
}
4853
}
4954

55+
modules.forEach((w: WidgetPlugin<any>) => {
56+
if (!w.getType()) return
57+
if (WidgetFactory.hasWidget(w.getType())) return
58+
WidgetFactory.register(w.getType(), w)
59+
})
60+
5061
export default WidgetFactory
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import DNDListWidget from '@starwhale/widgets/DNDListWidget'
2+
import SectionWidget from '@starwhale/widgets/SectionWidget'
3+
import PanelTableWidget from '@starwhale/widgets/PanelTableWidget'
4+
import PanelRocAucWidget from '@starwhale/widgets/PanelRocAucWidget'
5+
import PanelHeatmapWidget from '@starwhale/widgets/PanelConfusionMatrixWidget'
6+
7+
export default [DNDListWidget, SectionWidget, PanelTableWidget, PanelRocAucWidget, PanelHeatmapWidget]

console/packages/starwhale-core/src/widget/hooks/useWidget.tsx

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,12 @@
11
import { useEffect, useState } from 'react'
2-
import DNDListWidget from '@starwhale/widgets/DNDListWidget'
3-
import SectionWidget from '@starwhale/widgets/SectionWidget'
4-
import PanelTableWidget from '@starwhale/widgets/PanelTableWidget'
5-
import PanelRocAucWidget from '@starwhale/widgets/PanelRocAucWidget'
6-
import PanelHeatmapWidget from '@starwhale/widgets/PanelConfusionMatrixWidget'
72
import WidgetFactory from '../WidgetFactory'
83
import WidgetPlugin from '../WidgetPlugin'
94

10-
const modules = [DNDListWidget, SectionWidget, PanelTableWidget, PanelRocAucWidget, PanelHeatmapWidget]
11-
125
export function useWidget(widgetType: string) {
13-
const [widget, setWidget] = useState<WidgetPlugin | undefined>(WidgetFactory.widgetMap.get(widgetType))
6+
const [widget, setWidget] = useState<WidgetPlugin | undefined>(WidgetFactory.getWidget(widgetType))
147

158
useEffect(() => {
16-
if (!WidgetFactory.widgetMap.has(widgetType)) {
17-
modules.forEach((w: WidgetPlugin<any>) => {
18-
if (w.getType() === widgetType) WidgetFactory.register(w.getType(), w)
19-
})
20-
}
21-
22-
const temp = WidgetFactory.widgetMap.get(widgetType)
9+
const temp = WidgetFactory.getWidget(widgetType)
2310

2411
if (temp && temp !== widget) {
2512
setWidget(temp)

console/src/domain/model/services/modelVersion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export async function fetchModelVersionPanelSetting(
121121
token: string
122122
) {
123123
return fetchModelVersionFile(projectName, modelName, modelVersionId, token, 'eval_panel_layout.json').then((raw) =>
124-
JSON.parse(raw)
124+
raw ? JSON.parse(raw) : undefined
125125
)
126126
}
127127

0 commit comments

Comments
 (0)