Skip to content

Commit fc07007

Browse files
committed
refactor: scale in DataChartWidgetCore
refactor: chartWidget get scale
1 parent 1c8c44c commit fc07007

File tree

9 files changed

+29
-20
lines changed

9 files changed

+29
-20
lines changed

frontend/src/app/components/ChartDrill/ChartDrillContextMenu.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,6 @@ const ChartDrillContextMenu: FC<{}> = memo(({ children }) => {
9898
overlay={contextMenu}
9999
destroyPopupOnHide={true}
100100
trigger={['contextMenu']}
101-
getPopupContainer={triggerNode => triggerNode}
102101
>
103102
<div style={{ height: '100%' }}>{children}</div>
104103
</Dropdown>

frontend/src/app/components/ChartDrill/ChartDrillPaths.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ export default ChartDrillPaths;
6464

6565
const StyledChartDrillPaths = styled.div`
6666
padding: ${SPACE_XS} ${SPACE_SM};
67-
background-color: ${p => p.theme.componentBackground};
6867
`;
6968

7069
const StyledDrillNode = styled(Breadcrumb.Item)<{ isActive: boolean }>`

frontend/src/app/components/ChartIFrameContainer/ChartIFrameContainer.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ const ChartIFrameContainer: FC<{
3939
isShown?: boolean;
4040
drillOption?: IChartDrillOption;
4141
widgetSpecialConfig?: any;
42+
scale?: [number, number];
4243
}> = memo(props => {
4344
const iframeContainerId = `chart-iframe-root-${props.containerId}`;
4445

@@ -115,15 +116,19 @@ const ChartIFrameContainer: FC<{
115116

116117
var iframe = document.getElementById(iframeContainerId);
117118
if (iframe) {
119+
const [scaleX = 1, scaleY = 1] = props.scale || [];
118120
var boundingClientRect = iframe.getBoundingClientRect();
119121
var evt = new CustomEvent('contextmenu', {
120122
bubbles: true,
121123
cancelable: false,
122124
}) as any;
123-
evt.clientX = event.clientX + boundingClientRect.left;
124-
evt.pageX = event.clientX + boundingClientRect.left;
125-
evt.clientY = event.clientY + boundingClientRect.top;
126-
evt.pageY = event.clientY + boundingClientRect.top;
125+
evt.clientX =
126+
event.clientX * scaleX + boundingClientRect.left;
127+
evt.pageX =
128+
event.clientX * scaleX + boundingClientRect.left;
129+
evt.clientY =
130+
event.clientY * scaleY + boundingClientRect.top;
131+
evt.pageY = event.clientY * scaleY + boundingClientRect.top;
127132
iframe.dispatchEvent(evt);
128133
}
129134
}}

frontend/src/app/pages/DashBoardPage/components/BoardDrillManager/BoardDrillManager.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
import { ChartDrillOption } from 'app/models/ChartDrillOption';
2-
31
/**
42
* Datart
53
*
@@ -17,7 +15,9 @@ import { ChartDrillOption } from 'app/models/ChartDrillOption';
1715
* See the License for the specific language governing permissions and
1816
* limitations under the License.
1917
*/
18+
import { ChartDrillOption } from 'app/models/ChartDrillOption';
2019
type WidgetDrillMap = Record<string, ChartDrillOption | undefined>;
20+
export const EDIT_PREFIX = '@EDIT@';
2121
export class BoardDrillManager {
2222
private static _manager: BoardDrillManager;
2323
private boardMap: Record<string, WidgetDrillMap> = {};
@@ -59,4 +59,3 @@ export class BoardDrillManager {
5959
}
6060

6161
export const boardDrillManager = BoardDrillManager.getInstance();
62-
export const EDIT_PREFIX = '@EDIT@';

frontend/src/app/pages/DashBoardPage/components/FreeBoardBackground.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import StyledBackground from '../pages/Board/components/StyledBackground';
2222
import { BoardConfigContext } from './BoardProvider/BoardConfigProvider';
2323
import { BoardContext } from './BoardProvider/BoardProvider';
2424

25-
export const scaleContext = createContext<[number, number]>([1, 1]);
25+
export const BoardScaleContext = createContext<[number, number]>([1, 1]);
2626
export interface IProps {
2727
scale: [number, number];
2828
slideTranslate: [number, number];
@@ -60,9 +60,9 @@ const SlideBackground: React.FC<IProps> = props => {
6060

6161
return (
6262
<Wrapper bg={background} style={slideStyle} editing={editing}>
63-
<scaleContext.Provider value={scale}>
63+
<BoardScaleContext.Provider value={scale}>
6464
{props.children}
65-
</scaleContext.Provider>
65+
</BoardScaleContext.Provider>
6666
</Wrapper>
6767
);
6868
};

frontend/src/app/pages/DashBoardPage/components/Widgets/DataChartWidget/DataChartWidgetCore.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,19 +40,20 @@ import React, {
4040
useRef,
4141
} from 'react';
4242
import styled from 'styled-components/macro';
43-
import { BORDER_RADIUS } from 'styles/StyleConstants';
4443
import { WidgetActionContext } from '../../ActionProvider/WidgetActionProvider';
4544
import {
4645
boardDrillManager,
4746
EDIT_PREFIX,
4847
} from '../../BoardDrillManager/BoardDrillManager';
4948
import { BoardContext } from '../../BoardProvider/BoardProvider';
49+
import { BoardScaleContext } from '../../FreeBoardBackground';
5050
import { WidgetChartContext } from '../../WidgetProvider/WidgetChartProvider';
5151
import { WidgetDataContext } from '../../WidgetProvider/WidgetDataProvider';
5252
import { WidgetContext } from '../../WidgetProvider/WidgetProvider';
5353

5454
export const DataChartWidgetCore: React.FC<{}> = memo(() => {
5555
const dataChart = useContext(WidgetChartContext);
56+
const scale = useContext(BoardScaleContext);
5657
const { data } = useContext(WidgetDataContext);
5758
const { renderMode } = useContext(BoardContext);
5859
const widget = useContext(WidgetContext);
@@ -211,18 +212,19 @@ export const DataChartWidgetCore: React.FC<{}> = memo(() => {
211212
drillOption={drillOption}
212213
containerId={wid}
213214
widgetSpecialConfig={widgetSpecialConfig}
215+
scale={scale}
214216
/>
215217
);
216218
}, [
217219
config,
218220
cacheH,
219221
cacheW,
220222
errText,
221-
drillOptionRef,
222-
wid,
223223
dataset,
224224
chart,
225+
wid,
225226
widgetSpecialConfig,
227+
scale,
226228
]);
227229

228230
return (
@@ -262,8 +264,6 @@ const ChartWrapper = styled.div`
262264
position: relative;
263265
display: flex;
264266
flex: 1;
265-
background-color: ${p => p.theme.componentBackground};
266-
border-radius: ${BORDER_RADIUS};
267267
.chart-drill-menu-container {
268268
height: 100%;
269269
}

frontend/src/app/pages/DashBoardPage/pages/Board/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import { DndProvider } from 'react-dnd';
2323
import { HTML5Backend } from 'react-dnd-html5-backend';
2424
import { useDispatch, useSelector } from 'react-redux';
2525
import styled from 'styled-components/macro';
26+
import { boardDrillManager } from '../../components/BoardDrillManager/BoardDrillManager';
2627
import { TitleHeader } from '../../components/BoardHeader/TitleHeader';
2728
import { BoardLoading } from '../../components/BoardLoading';
2829
import { BoardInitProvider } from '../../components/BoardProvider/BoardInitProvider';
@@ -151,6 +152,7 @@ export const Board: FC<BoardProps> = memo(
151152
// 销毁组件 清除该对象缓存
152153
return () => {
153154
dispatch(boardActions.clearBoardStateById(boardId));
155+
boardDrillManager.clearMapByBoardId(boardId);
154156
};
155157
}, [boardId, dispatch, fetchData, searchParams]);
156158

frontend/src/app/pages/DashBoardPage/pages/BoardEditor/FreeEditor/WidgetOfFreeEdit.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ import { useDispatch, useSelector } from 'react-redux';
3434
import { Resizable, ResizeCallbackData } from 'react-resizable';
3535
import styled from 'styled-components/macro';
3636
import { WidgetActionContext } from '../../../components/ActionProvider/WidgetActionProvider';
37-
import { scaleContext } from '../../../components/FreeBoardBackground';
37+
import { BoardScaleContext } from '../../../components/FreeBoardBackground';
3838
import { editBoardStackActions } from '../slice';
3939
import { widgetMove, widgetMoveEnd } from '../slice/events';
4040
import { selectSelectedIds } from '../slice/selectors';
@@ -48,7 +48,7 @@ export const WidgetOfFreeEdit: React.FC<{}> = () => {
4848
const { onUpdateWidgetConfig } = useContext(WidgetActionContext);
4949

5050
const dispatch = useDispatch();
51-
const scale = useContext(scaleContext);
51+
const scale = useContext(BoardScaleContext);
5252
const { x, y, width, height } = widget.config.rect;
5353
const [curXY, setCurXY] = useState<[number, number]>([
5454
widget.config.rect.x,

frontend/src/app/pages/DashBoardPage/pages/BoardEditor/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ import { useHistory } from 'react-router-dom';
2424
import styled from 'styled-components/macro';
2525
import { LEVEL_50 } from 'styles/StyleConstants';
2626
import { uuidv4 } from 'utils/utils';
27+
import {
28+
boardDrillManager,
29+
EDIT_PREFIX,
30+
} from '../../components/BoardDrillManager/BoardDrillManager';
2731
import EditorHeader from '../../components/BoardHeader/EditorHeader';
2832
import { BoardLoading } from '../../components/BoardLoading';
2933
import { BoardInitProvider } from '../../components/BoardProvider/BoardInitProvider';
@@ -142,12 +146,13 @@ export const BoardEditor: React.FC<{
142146
useEffect(() => {
143147
initialization();
144148
return () => {
145-
console.log('__ 销毁 ed');
146149
// fix issue: #800
147150
onCloseChartEditor();
148151
dispatch(clearEditBoardState());
149152
//销毁时 更新view界面数据
150153
dispatch(fetchBoardDetail({ dashboardRelId: boardId }));
154+
//
155+
boardDrillManager.clearMapByBoardId(EDIT_PREFIX + boardId);
151156
};
152157
// eslint-disable-next-line react-hooks/exhaustive-deps
153158
}, [onCloseChartEditor]);

0 commit comments

Comments
 (0)