Skip to content

Commit d5b75c1

Browse files
authored
Merge pull request #988 from xieliuduo/fix-fetch-info
refactor: handleServerBoardAction & boardSlice.setBoardState
2 parents ce1f5db + 22b73a3 commit d5b75c1

File tree

8 files changed

+53
-53
lines changed

8 files changed

+53
-53
lines changed

frontend/src/app/pages/DashBoardPage/pages/Board/AutoDashboard/AutoBoardCore.tsx

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ import {
2828
import useAutoBoardRenderItem from 'app/pages/DashBoardPage/hooks/useAutoBoardRenderItem';
2929
import useBoardWidthHeight from 'app/pages/DashBoardPage/hooks/useBoardWidthHeight';
3030
import useGridLayoutMap from 'app/pages/DashBoardPage/hooks/useGridLayoutMap';
31-
import { useVisibleHidden } from 'app/pages/DashBoardPage/hooks/useVisibleHidden';
3231
import {
3332
selectLayoutWidgetInfoMapById,
3433
selectLayoutWidgetMapById,
@@ -49,7 +48,7 @@ const ResponsiveGridLayout = WidthProvider(Responsive);
4948
const mobilePoints = Object.keys(BREAK_POINT_MAP).slice(3);
5049
export const AutoBoardCore: React.FC<{ boardId: string }> = memo(
5150
({ boardId }) => {
52-
const visible = useVisibleHidden();
51+
// const visible = useVisibleHidden(0);
5352
const {
5453
margin,
5554
containerPadding,
@@ -143,11 +142,7 @@ export const AutoBoardCore: React.FC<{ boardId: string }> = memo(
143142

144143
return (
145144
<Wrap>
146-
<StyledContainer
147-
bg={background}
148-
ref={ref}
149-
style={{ visibility: visible }}
150-
>
145+
<StyledContainer bg={background} ref={ref}>
151146
{sortedLayoutWidgets.length ? (
152147
<div className="grid-wrap" ref={gridWrapRef}>
153148
<div className="grid-wrap" ref={gridRef}>

frontend/src/app/pages/DashBoardPage/pages/Board/slice/asyncActions.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ export const handleServerBoardAction =
4242
}) =>
4343
async (dispatch, getState) => {
4444
const { data, renderMode, filterSearchMap } = params;
45-
4645
const dashboard = getDashBoardByResBoard(data);
4746
const { datacharts, views: serverViews, widgets: serverWidgets } = data;
4847

@@ -53,30 +52,34 @@ export const handleServerBoardAction =
5352
dataCharts,
5453
filterSearchMap,
5554
);
56-
5755
const widgetIds = Object.values(widgetMap).map(w => w.id);
58-
//
5956
let boardInfo = getInitBoardInfo({
6057
id: dashboard.id,
6158
widgetIds,
6259
controllerWidgets,
6360
});
64-
6561
if (renderMode === 'schedule') {
6662
boardInfo = getScheduleBoardInfo(boardInfo, widgetMap);
6763
}
64+
const widgetInfoMap = getWidgetInfoMapByServer(widgetMap);
6865

6966
const allDataCharts: DataChart[] = dataCharts.concat(wrappedDataCharts);
67+
7068
const viewViews = getChartDataView(serverViews, allDataCharts);
71-
const widgetInfoMap = getWidgetInfoMapByServer(widgetMap);
72-
dispatch(
73-
boardActions.setBoardDetailToState({
69+
70+
await dispatch(
71+
boardActions.setBoardState({
7472
board: dashboard,
7573
boardInfo: boardInfo,
76-
views: viewViews,
74+
}),
75+
);
76+
dispatch(boardActions.setViewMap(viewViews));
77+
dispatch(boardActions.setDataChartToMap(allDataCharts));
78+
dispatch(
79+
boardActions.setWidgetMapState({
80+
boardId: dashboard.id,
7781
widgetMap: widgetMap,
7882
widgetInfoMap: widgetInfoMap,
79-
dataCharts: allDataCharts,
8083
}),
8184
);
8285
};

frontend/src/app/pages/DashBoardPage/pages/Board/slice/index.ts

Lines changed: 29 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -46,39 +46,50 @@ const boardSlice = createSlice({
4646
name: 'board',
4747
initialState: boardInit as BoardState,
4848
reducers: {
49-
setBoardDetailToState(
49+
setBoardState(
5050
state,
5151
action: PayloadAction<{
5252
board: Dashboard;
5353
boardInfo: BoardInfo;
54-
widgetMap: Record<string, Widget>;
55-
widgetInfoMap: Record<string, WidgetInfo>;
56-
views: ChartDataView[];
57-
dataCharts: DataChart[];
5854
}>,
5955
) {
60-
const { board, boardInfo, widgetMap, widgetInfoMap, dataCharts, views } =
61-
action.payload;
56+
const { board, boardInfo } = action.payload;
6257
state.boardRecord[board.id] = board;
6358
state.boardInfoRecord[board.id] = boardInfo;
64-
// widgetRecord
65-
if (!state.widgetRecord[board.id]) {
66-
state.widgetRecord[board.id] = {};
59+
// can not del :dataCharts、views
60+
},
61+
setWidgetMapState(
62+
state,
63+
action: PayloadAction<{
64+
boardId: string;
65+
widgetMap: Record<string, Widget>;
66+
widgetInfoMap: Record<string, WidgetInfo>;
67+
}>,
68+
) {
69+
const { boardId, widgetMap, widgetInfoMap } = action.payload;
70+
if (!state.widgetRecord[boardId]) {
71+
state.widgetRecord[boardId] = {};
6772
}
68-
state.widgetRecord[board.id] = widgetMap;
69-
// widgetInfoRecord
70-
if (!state.widgetInfoRecord[board.id]) {
71-
state.widgetInfoRecord[board.id] = {};
73+
state.widgetRecord[boardId] = widgetMap;
74+
if (!state.widgetInfoRecord[boardId]) {
75+
state.widgetInfoRecord[boardId] = {};
7276
}
73-
state.widgetInfoRecord[board.id] = widgetInfoMap;
74-
75-
dataCharts.forEach(chart => {
76-
state.dataChartMap[chart.id] = chart;
77+
state.widgetInfoRecord[boardId] = widgetInfoMap;
78+
},
79+
setDataChartToMap(state, action: PayloadAction<DataChart[]>) {
80+
const dataCharts = action.payload;
81+
dataCharts.forEach(dc => {
82+
state.dataChartMap[dc.id] = dc;
7783
});
84+
},
85+
86+
setViewMap(state, action: PayloadAction<ChartDataView[]>) {
87+
const views = action.payload;
7888
views.forEach(view => {
7989
state.viewMap[view.id] = view;
8090
});
8191
},
92+
8293
clearBoardStateById(state, action: PayloadAction<string>) {
8394
const boardId = action.payload;
8495
delete state.boardRecord[boardId];
@@ -134,19 +145,7 @@ const boardSlice = createSlice({
134145
const { recordId, itemId } = action.payload;
135146
state.boardInfoRecord[recordId].fullScreenItemId = itemId;
136147
},
137-
setDataChartToMap(state, action: PayloadAction<DataChart[]>) {
138-
const dataCharts = action.payload;
139-
dataCharts.forEach(dc => {
140-
state.dataChartMap[dc.id] = dc;
141-
});
142-
},
143148

144-
setViewMap(state, action: PayloadAction<ChartDataView[]>) {
145-
const views = action.payload;
146-
views.forEach(view => {
147-
state.viewMap[view.id] = view;
148-
});
149-
},
150149
setWidgetData(state, action: PayloadAction<WidgetData>) {
151150
const widgetData = action.payload;
152151
state.widgetDataMap[widgetData.id] = widgetData;

frontend/src/app/pages/DashBoardPage/pages/Board/slice/thunk.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,13 +83,14 @@ export const fetchBoardDetail = createAsyncThunk<
8383
`/viz/dashboards/${params?.dashboardRelId}`,
8484
);
8585

86-
await dispatch(
86+
dispatch(
8787
handleServerBoardAction({
8888
data,
8989
renderMode: 'read',
9090
filterSearchMap: { params: params?.filterSearchParams },
9191
}),
9292
);
93+
9394
return null;
9495
});
9596

frontend/src/app/pages/DashBoardPage/pages/Board/slice/types.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ export interface WidgetInfo {
194194
inLinking: boolean; //是否在触发联动
195195
selected: boolean;
196196
pageInfo: Partial<PageInfo>;
197-
errInfo?: { [propName: string]: string };
197+
errInfo: { [propName: string]: string };
198198
selectItems?: string[];
199199
parameters?: any;
200200
}

frontend/src/app/pages/DashBoardPage/pages/BoardEditor/AutoEditor/AutoBoardEditor.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import {
2929
} from 'app/pages/DashBoardPage/constants';
3030
import useAutoBoardRenderItem from 'app/pages/DashBoardPage/hooks/useAutoBoardRenderItem';
3131
import useGridLayoutMap from 'app/pages/DashBoardPage/hooks/useGridLayoutMap';
32-
import { useVisibleHidden } from 'app/pages/DashBoardPage/hooks/useVisibleHidden';
3332
import { DeviceType } from 'app/pages/DashBoardPage/pages/Board/slice/types';
3433
import { dispatchResize } from 'app/utils/dispatchResize';
3534
import debounce from 'lodash/debounce';
@@ -61,7 +60,7 @@ const ResponsiveGridLayout = WidthProvider(Responsive);
6160

6261
export const AutoBoardEditor: React.FC<{}> = memo(() => {
6362
const dispatch = useDispatch();
64-
const visible = useVisibleHidden();
63+
// const visible = useVisibleHidden(100);
6564
const {
6665
margin,
6766
containerPadding,
@@ -180,7 +179,7 @@ export const AutoBoardEditor: React.FC<{}> = memo(() => {
180179
curWH={curWH}
181180
className={deviceClassName}
182181
ref={ref}
183-
style={{ visibility: visible }}
182+
// style={{ visibility: visible }}
184183
>
185184
{sortedLayoutWidgets.length ? (
186185
<div className="grid-wrap" ref={gridWrapRef}>

frontend/src/app/pages/DashBoardPage/pages/BoardEditor/slice/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,13 +250,15 @@ const widgetInfoRecordSlice = createSlice({
250250
}>,
251251
) {
252252
const { widgetId, errInfo, errorType } = action.payload;
253-
let errorObj = state[widgetId].errInfo || {};
253+
let errorObj = state[widgetId]?.errInfo || {};
254254
if (errInfo) {
255255
errorObj[errorType] = errInfo;
256256
} else {
257257
delete errorObj[errorType];
258258
}
259-
state[widgetId].errInfo = errorObj;
259+
if (state[widgetId]?.errInfo) {
260+
state[widgetId].errInfo = errorObj;
261+
}
260262
},
261263
},
262264
extraReducers: builder => {

frontend/src/app/pages/DashBoardPage/utils/widget.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ export const createWidgetInfo = (id: string): WidgetInfo => {
234234
editing: false,
235235
inLinking: false,
236236
selected: false,
237+
errInfo: {},
237238
rendered: false,
238239
pageInfo: {
239240
pageNo: 1,

0 commit comments

Comments
 (0)