mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Canvas: Avoid refreshing elements while dragging (#52120)
This commit is contained in:
parent
429ed4b4ee
commit
074bcf8599
@ -60,6 +60,7 @@ export class Scene {
|
|||||||
currentLayer?: FrameState;
|
currentLayer?: FrameState;
|
||||||
isEditingEnabled?: boolean;
|
isEditingEnabled?: boolean;
|
||||||
skipNextSelectionBroadcast = false;
|
skipNextSelectionBroadcast = false;
|
||||||
|
ignoreDataUpdate = false;
|
||||||
|
|
||||||
isPanelEditing = locationService.getSearchObject().editPanel !== undefined;
|
isPanelEditing = locationService.getSearchObject().editPanel !== undefined;
|
||||||
|
|
||||||
@ -326,6 +327,12 @@ export class Scene {
|
|||||||
.on('clickGroup', (event) => {
|
.on('clickGroup', (event) => {
|
||||||
this.selecto!.clickTarget(event.inputEvent, event.inputTarget);
|
this.selecto!.clickTarget(event.inputEvent, event.inputTarget);
|
||||||
})
|
})
|
||||||
|
.on('dragStart', (event) => {
|
||||||
|
this.ignoreDataUpdate = true;
|
||||||
|
})
|
||||||
|
.on('dragGroupStart', (event) => {
|
||||||
|
this.ignoreDataUpdate = true;
|
||||||
|
})
|
||||||
.on('drag', (event) => {
|
.on('drag', (event) => {
|
||||||
const targetedElement = this.findElementByTarget(event.target);
|
const targetedElement = this.findElementByTarget(event.target);
|
||||||
targetedElement!.applyDrag(event);
|
targetedElement!.applyDrag(event);
|
||||||
@ -336,6 +343,17 @@ export class Scene {
|
|||||||
targetedElement!.applyDrag(event);
|
targetedElement!.applyDrag(event);
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
.on('dragGroupEnd', (e) => {
|
||||||
|
e.events.forEach((event) => {
|
||||||
|
const targetedElement = this.findElementByTarget(event.target);
|
||||||
|
if (targetedElement) {
|
||||||
|
targetedElement.setPlacementFromConstraint();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
this.moved.next(Date.now());
|
||||||
|
this.ignoreDataUpdate = false;
|
||||||
|
})
|
||||||
.on('dragEnd', (event) => {
|
.on('dragEnd', (event) => {
|
||||||
const targetedElement = this.findElementByTarget(event.target);
|
const targetedElement = this.findElementByTarget(event.target);
|
||||||
if (targetedElement) {
|
if (targetedElement) {
|
||||||
@ -343,6 +361,7 @@ export class Scene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.moved.next(Date.now());
|
this.moved.next(Date.now());
|
||||||
|
this.ignoreDataUpdate = false;
|
||||||
})
|
})
|
||||||
.on('resizeStart', (event) => {
|
.on('resizeStart', (event) => {
|
||||||
const targetedElement = this.findElementByTarget(event.target);
|
const targetedElement = this.findElementByTarget(event.target);
|
||||||
|
@ -139,7 +139,8 @@ export class CanvasPanel extends Component<Props, State> {
|
|||||||
this.scene.updateSize(nextProps.width, nextProps.height);
|
this.scene.updateSize(nextProps.width, nextProps.height);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
if (data !== nextProps.data) {
|
|
||||||
|
if (data !== nextProps.data && !this.scene.ignoreDataUpdate) {
|
||||||
this.scene.updateData(nextProps.data);
|
this.scene.updateData(nextProps.data);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user