Disable buggy copy & paste

This commit is contained in:
Sipke Schoorstra 2021-11-24 13:38:56 +01:00
parent 7554aa5357
commit 90cb9c7b99
2 changed files with 97 additions and 97 deletions

View file

@ -151,19 +151,19 @@ export class ElsaWorkflowDesigner {
this.activityContextMenuTestState = newValue;
}
@Listen('keydown', {target: 'window'})
async handleKeyDown(event: KeyboardEvent) {
if (this.ignoreCopyPasteActivities)
return;
if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
await this.copyActivitiesToClipboard();
}
if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
await this.pasteActivitiesFromClipboard();
}
}
// @Listen('keydown', {target: 'window'})
// async handleKeyDown(event: KeyboardEvent) {
// if (this.ignoreCopyPasteActivities)
// return;
//
// if ((event.ctrlKey || event.metaKey) && event.key === 'c') {
// await this.copyActivitiesToClipboard();
// }
// if ((event.ctrlKey || event.metaKey) && event.key === 'v') {
//
// await this.pasteActivitiesFromClipboard();
// }
// }
@Method()
async removeActivity(activity: ActivityModel) {
@ -186,19 +186,19 @@ export class ElsaWorkflowDesigner {
await this.showActivityEditorInternal(activity, animate);
}
async copyActivitiesToClipboard() {
await navigator.clipboard.writeText(JSON.stringify(this.selectedActivities));
await eventBus.emit(EventTypes.ClipboardCopied, this);
}
// async copyActivitiesToClipboard() {
// await navigator.clipboard.writeText(JSON.stringify(this.selectedActivities));
// await eventBus.emit(EventTypes.ClipboardCopied, this);
// }
async pasteActivitiesFromClipboard() {
let copiedActivities: Array<ActivityModel> = [];
await navigator.clipboard.readText().then(data => {
copiedActivities = JSON.parse(data);
});
await this.addActivitiesFromClipboard(copiedActivities)
}
// async pasteActivitiesFromClipboard() {
// let copiedActivities: Array<ActivityModel> = [];
//
// await navigator.clipboard.readText().then(data => {
// copiedActivities = JSON.parse(data);
// });
// await this.addActivitiesFromClipboard(copiedActivities)
// }
async addActivitiesFromClipboard(copiedActivities: Array<ActivityModel>) {
let sourceActivityId: string;
@ -233,18 +233,18 @@ export class ElsaWorkflowDesigner {
connectedCallback() {
eventBus.on(EventTypes.ActivityPicked, this.onActivityPicked);
eventBus.on(EventTypes.UpdateActivity, this.onUpdateActivity);
eventBus.on(EventTypes.PasteActivity, this.onPasteActivity);
eventBus.on(EventTypes.HideModalDialog, this.onCopyPasteActivityEnabled);
eventBus.on(EventTypes.ShowWorkflowSettings, this.onCopyPasteActivityDisabled);
//eventBus.on(EventTypes.PasteActivity, this.onPasteActivity);
// eventBus.on(EventTypes.HideModalDialog, this.onCopyPasteActivityEnabled);
// eventBus.on(EventTypes.ShowWorkflowSettings, this.onCopyPasteActivityDisabled);
eventBus.on(EventTypes.WorkflowExecuted, this.onWorkflowExecuted);
}
disconnectedCallback() {
eventBus.detach(EventTypes.ActivityPicked, this.onActivityPicked);
eventBus.detach(EventTypes.UpdateActivity, this.onUpdateActivity);
eventBus.detach(EventTypes.PasteActivity, this.onPasteActivity);
eventBus.detach(EventTypes.HideModalDialog, this.onCopyPasteActivityEnabled);
eventBus.detach(EventTypes.ShowWorkflowSettings, this.onCopyPasteActivityDisabled);
//eventBus.detach(EventTypes.PasteActivity, this.onPasteActivity);
// eventBus.detach(EventTypes.HideModalDialog, this.onCopyPasteActivityEnabled);
// eventBus.detach(EventTypes.ShowWorkflowSettings, this.onCopyPasteActivityDisabled);
eventBus.detach(EventTypes.WorkflowExecuted, this.onWorkflowExecuted);
d3.selectAll('.node').on('click', null);
d3.selectAll('.edgePath').on('contextmenu', null);
@ -663,22 +663,22 @@ export class ElsaWorkflowDesigner {
}
};
onPasteActivity = async args => {
const activityModel = args as ActivityModel;
this.selectedActivities = {};
activityModel.outcomes[0] = this.parentActivityOutcome;
this.selectedActivities[activityModel.activityId] = activityModel;
await this.pasteActivitiesFromClipboard();
};
onCopyPasteActivityEnabled = () => {
this.ignoreCopyPasteActivities = false
}
onCopyPasteActivityDisabled = () => {
this.ignoreCopyPasteActivities = true
}
// onPasteActivity = async args => {
// const activityModel = args as ActivityModel;
//
// this.selectedActivities = {};
// activityModel.outcomes[0] = this.parentActivityOutcome;
// this.selectedActivities[activityModel.activityId] = activityModel;
// await this.pasteActivitiesFromClipboard();
// };
//
// onCopyPasteActivityEnabled = () => {
// this.ignoreCopyPasteActivities = false
// }
//
// onCopyPasteActivityDisabled = () => {
// this.ignoreCopyPasteActivities = true
// }
onWorkflowExecuted = () => {
const firstNode = d3.select(this.el).select('.node.activity');

View file

@ -71,12 +71,12 @@ export class ElsaWorkflowDefinitionEditorScreen {
selectedActivities: {}
};
@State() connectionContextMenuState: ActivityContextMenuState = {
shown: false,
x: 0,
y: 0,
activity: null,
};
// @State() connectionContextMenuState: ActivityContextMenuState = {
// shown: false,
// x: 0,
// y: 0,
// activity: null,
// };
@State() activityContextMenuTestState: ActivityContextMenuState = {
shown: false,
@ -92,7 +92,7 @@ export class ElsaWorkflowDefinitionEditorScreen {
helpDialog: HTMLElsaModalDialogElement;
activityContextMenu: HTMLDivElement;
componentCustomButton: HTMLDivElement;
connectionContextMenu: HTMLDivElement;
//connectionContextMenu: HTMLDivElement;
@Method()
async getServerUrl(): Promise<string> {
@ -187,8 +187,8 @@ export class ElsaWorkflowDefinitionEditorScreen {
if (!this.activityContextMenu.contains(target))
this.handleContextMenuChange({x: 0, y: 0, shown: false, activity: null, selectedActivities: {}});
if (!this.connectionContextMenu.contains(target))
this.handleConnectionContextMenuChange({x: 0, y: 0, shown: false, activity: null});
// if (!this.connectionContextMenu.contains(target))
// this.handleConnectionContextMenuChange({x: 0, y: 0, shown: false, activity: null});
}
async componentWillLoad() {
@ -414,9 +414,9 @@ export class ElsaWorkflowDefinitionEditorScreen {
this.activityContextMenuState = state;
}
handleConnectionContextMenuChange(state: ActivityContextMenuState) {
this.connectionContextMenuState = state;
}
// handleConnectionContextMenuChange(state: ActivityContextMenuState) {
// this.connectionContextMenuState = state;
// }
handleContextMenuTestChange(x: number, y: number, shown: boolean, activity: ActivityModel) {
this.activityContextMenuTestState = {
@ -467,12 +467,12 @@ export class ElsaWorkflowDefinitionEditorScreen {
this.handleContextMenuChange({x: 0, y: 0, shown: false, activity: null});
}
async onPasteActivityClick(e: Event) {
e.preventDefault();
let activityModel = this.connectionContextMenuState.activity;
await eventBus.emit(EventTypes.PasteActivity, this, activityModel);
this.handleConnectionContextMenuChange({x: 0, y: 0, shown: false, activity: null});
}
// async onPasteActivityClick(e: Event) {
// e.preventDefault();
// let activityModel = this.connectionContextMenuState.activity;
// await eventBus.emit(EventTypes.PasteActivity, this, activityModel);
// this.handleConnectionContextMenuChange({x: 0, y: 0, shown: false, activity: null});
// }
async onActivityContextMenuButtonClicked(e: CustomEvent<ActivityContextMenuState>) {
this.activityContextMenuState = e.detail;
@ -499,9 +499,9 @@ export class ElsaWorkflowDefinitionEditorScreen {
this.selectedActivityId = null;
}
onConnectionContextMenuButtonClicked(e: CustomEvent<ActivityContextMenuState>) {
this.connectionContextMenuState = e.detail;
}
// onConnectionContextMenuButtonClicked(e: CustomEvent<ActivityContextMenuState>) {
// this.connectionContextMenuState = e.detail;
// }
onTestActivityMessageReceived = async args => {
const message = args as WorkflowTestActivityMessage;
@ -662,7 +662,7 @@ export class ElsaWorkflowDefinitionEditorScreen {
{this.renderWorkflowHelpButton()}
{this.renderPanel()}
{this.renderActivityContextMenu()}
{this.renderConnectionContextMenu()}
{/*{this.renderConnectionContextMenu()}*/}
<elsa-workflow-settings-modal workflowDefinition={this.workflowDefinition}/>
<elsa-workflow-definition-editor-notifications/>
<div class="elsa-fixed elsa-bottom-10 elsa-right-12">
@ -894,34 +894,34 @@ export class ElsaWorkflowDefinitionEditorScreen {
</div>
}
renderConnectionContextMenu() {
const t = this.t;
return <div
data-transition-enter="elsa-transition elsa-ease-out elsa-duration-100"
data-transition-enter-start="elsa-transform elsa-opacity-0 elsa-scale-95"
data-transition-enter-end="elsa-transform elsa-opacity-100 elsa-scale-100"
data-transition-leave="elsa-transition elsa-ease-in elsa-duration-75"
data-transition-leave-start="elsa-transform elsa-opacity-100 elsa-scale-100"
data-transition-leave-end="elsa-transform elsa-opacity-0 elsa-scale-95"
class={`${this.connectionContextMenuState.shown ? '' : 'hidden'} context-menu elsa-z-10 elsa-mx-3 elsa-w-48 elsa-mt-1 elsa-rounded-md elsa-shadow-lg elsa-absolute`}
style={{left: `${this.connectionContextMenuState.x}px`, top: `${this.connectionContextMenuState.y - 64}px`}}
ref={el => this.connectionContextMenu = el}
>
<div class="elsa-rounded-md elsa-bg-white elsa-shadow-xs" role="menu" aria-orientation="vertical"
aria-labelledby="pinned-project-options-menu-0">
<div class="elsa-py-1">
<a
onClick={e => this.onPasteActivityClick(e)}
href="#"
class="elsa-block elsa-px-4 elsa-py-2 elsa-text-sm elsa-leading-5 elsa-text-gray-700 hover:elsa-bg-gray-100 hover:elsa-text-gray-900 focus:elsa-outline-none focus:elsa-bg-gray-100 focus:elsa-text-gray-900"
role="menuitem">
{t('ConnectionContextMenu.Paste')}
</a>
</div>
</div>
</div>
}
// renderConnectionContextMenu() {
// const t = this.t;
//
// return <div
// data-transition-enter="elsa-transition elsa-ease-out elsa-duration-100"
// data-transition-enter-start="elsa-transform elsa-opacity-0 elsa-scale-95"
// data-transition-enter-end="elsa-transform elsa-opacity-100 elsa-scale-100"
// data-transition-leave="elsa-transition elsa-ease-in elsa-duration-75"
// data-transition-leave-start="elsa-transform elsa-opacity-100 elsa-scale-100"
// data-transition-leave-end="elsa-transform elsa-opacity-0 elsa-scale-95"
// class={`${this.connectionContextMenuState.shown ? '' : 'hidden'} context-menu elsa-z-10 elsa-mx-3 elsa-w-48 elsa-mt-1 elsa-rounded-md elsa-shadow-lg elsa-absolute`}
// style={{left: `${this.connectionContextMenuState.x}px`, top: `${this.connectionContextMenuState.y - 64}px`}}
// ref={el => this.connectionContextMenu = el}
// >
// <div class="elsa-rounded-md elsa-bg-white elsa-shadow-xs" role="menu" aria-orientation="vertical"
// aria-labelledby="pinned-project-options-menu-0">
// <div class="elsa-py-1">
// <a
// onClick={e => this.onPasteActivityClick(e)}
// href="#"
// class="elsa-block elsa-px-4 elsa-py-2 elsa-text-sm elsa-leading-5 elsa-text-gray-700 hover:elsa-bg-gray-100 hover:elsa-text-gray-900 focus:elsa-outline-none focus:elsa-bg-gray-100 focus:elsa-text-gray-900"
// role="menuitem">
// {t('ConnectionContextMenu.Paste')}
// </a>
// </div>
// </div>
// </div>
// }
renderActivityPicker() {
return <elsa-activity-picker-modal/>;