blob: 3041e41ec1f2f7d03bb0f6aa700ddd422fc30d8a [file] [log] [blame]
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +02001import './TwptWorkflowsMenu.js';
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +02002import './TwptConfirmDialog.js';
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +02003
4import {css, html, LitElement} from 'lit';
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +02005import {createRef, ref} from 'lit/directives/ref.js';
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +02006
7import WorkflowsStorage from '../../../../workflows/workflowsStorage.js';
8
9export default class TwptWorkflowsInject extends LitElement {
10 static properties = {
11 _workflows: {type: Object},
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +020012 _selectedWorkflowUuid: {type: String},
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +020013 };
14
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +020015 confirmDialogRef = createRef();
16 workflowDialogRef = createRef();
17
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +020018 constructor() {
19 super();
20 this._workflows = null;
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +020021 this._selectedWorkflowUuid = null;
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +020022 this.addEventListener('twpt-workflows-update', e => {
23 const workflows = e.detail?.workflows ?? [];
24 WorkflowsStorage.convertRawListToProtobuf(workflows);
25 this._workflows = workflows;
26 });
27 }
28
29 render() {
30 return html`
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +020031 <twpt-workflows-menu
32 .workflows=${this._workflows}
33 @select=${this._workflowSelected}>
34 </twpt-workflows-menu>
35 <twpt-confirm-dialog ${ref(this.confirmDialogRef)}
36 .workflow=${this._selectedWorkflow}
37 @confirm=${this._startWorkflow}>
38 </twpt-confirm-dialog>
39 <twpt-workflow-dialog ${ref(this.workflowDialogRef)}>
40 </twpt-workflow-dialog>
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +020041 `;
42 }
Adrià Vilanova Martínezca25b682022-10-24 00:11:03 +020043
44 _workflowSelected(e) {
45 const uuid = e.detail?.selectedWorkflowUuid;
46 if (!uuid) {
47 console.error('Didn\'t get a correct uuid for the selected workflow.');
48 return;
49 }
50 this._selectedWorkflowUuid = uuid;
51 this.confirmDialogRef.value.open = true;
52 }
53
54 _startWorkflow() {
55 // @TODO
56 console.log(`Start workflow ${this._selectedWorkflowUuid}!`);
57 }
58
59 get _selectedWorkflow() {
60 for (const w of this._workflows) {
61 if (w.uuid == this._selectedWorkflowUuid)
62 return w.proto;
63 }
64
65 return null;
66 }
Adrià Vilanova Martínez96ae96f2022-10-17 23:50:36 +020067}
68window.customElements.define('twpt-workflows-inject', TwptWorkflowsInject);