| import './TwptConfirmDialog.js'; |
| import './TwptCRImportButton.js'; |
| import './TwptWorkflowDialog.js'; |
| import './TwptWorkflowsMenu.js'; |
| |
| import {css, html, LitElement} from 'lit'; |
| import {createRef, ref} from 'lit/directives/ref.js'; |
| |
| import WorkflowsStorage from '../../../../workflows/workflowsStorage.js'; |
| |
| export default class TwptWorkflowsInject extends LitElement { |
| static properties = { |
| _workflows: {type: Object}, |
| _selectedWorkflowUuid: {type: String}, |
| }; |
| |
| confirmDialogRef = createRef(); |
| workflowDialogRef = createRef(); |
| |
| constructor() { |
| super(); |
| this._workflows = null; |
| this._selectedWorkflowUuid = null; |
| this.addEventListener('twpt-workflows-update', e => { |
| const workflows = e.detail?.workflows ?? []; |
| WorkflowsStorage.convertRawListToProtobuf(workflows); |
| this._workflows = workflows; |
| }); |
| } |
| |
| render() { |
| return html` |
| <twpt-workflows-menu |
| .workflows=${this._workflows} |
| @select=${this._workflowSelected}> |
| </twpt-workflows-menu> |
| <twpt-confirm-dialog ${ref(this.confirmDialogRef)} |
| .workflow=${this._selectedWorkflow} |
| @confirm=${this._startWorkflow}> |
| </twpt-confirm-dialog> |
| <twpt-workflow-dialog ${ref(this.workflowDialogRef)}> |
| </twpt-workflow-dialog> |
| `; |
| } |
| |
| _workflowSelected(e) { |
| const uuid = e.detail?.selectedWorkflowUuid; |
| if (!uuid) { |
| console.error('Didn\'t get a correct uuid for the selected workflow.'); |
| return; |
| } |
| this._selectedWorkflowUuid = uuid; |
| this.confirmDialogRef.value.open = true; |
| } |
| |
| _startWorkflow() { |
| this.workflowDialogRef.value.workflow = |
| this._selectedWorkflow.cloneMessage(); |
| this.workflowDialogRef.value.start(); |
| } |
| |
| get _selectedWorkflow() { |
| if (!this._workflows) return null; |
| |
| for (const w of this._workflows) { |
| if (w.uuid == this._selectedWorkflowUuid) return w.proto; |
| } |
| |
| return null; |
| } |
| } |
| window.customElements.define('twpt-workflows-inject', TwptWorkflowsInject); |