blob: c6c9a7fd9164afe93a98ab8bc5c7e0341d93a149 [file] [log] [blame]
import '@material/mwc-dialog/mwc-dialog.js';
import '@material/web/button/text-button.js';
import './TwptWorkflowProgress.js';
import {css, html, LitElement} from 'lit';
import {createRef, ref} from 'lit/directives/ref.js';
import {SHARED_MD3_STYLES} from '../../../../common/styles/md3.js';
import WorkflowRunner from '../runner.js';
export default class TwptWorkflowDialog extends LitElement {
static properties = {
open: {type: Boolean},
workflow: {type: Object},
_runner: {type: Object, state: true},
};
static styles = [
SHARED_MD3_STYLES,
css`
:host {
--mdc-dialog-content-ink-color: var(--mdc-theme-on-surface, #000);
--mdc-dialog-z-index: 200;
}
.workflow-name {
font-weight: 500;
}
`,
];
progressRef = createRef();
constructor() {
super();
this.open = false;
}
render() {
return html`
<mwc-dialog
?open=${this.open}
@opening=${this._openingDialog}
@closing=${this._closingDialog}
heading=${'Running ' + this.workflow?.getName?.() + '...'}>
<twpt-workflow-progress ${ref(this.progressRef)}
.workflow=${this.workflow}
currentThread=${this._runner?.currentThreadIndex}
numThreads=${this._runner?.numThreads}
currentAction=${this._runner?.currentActionIndex}
status=${this._runner?.status}>
</twpt-workflow-progress>
<md-text-button
?disabled=${this._runner?.status !== 'finished'}
slot="primaryAction"
dialogAction="cancel"
label="Close">
</md-text-button>
</mwc-dialog>
`;
}
start() {
this._runner =
new WorkflowRunner(this.workflow, () => this.requestUpdate());
this._runner.start();
this.open = true;
}
_openingDialog() {
this.open = true;
}
_closingDialog() {
this.open = false;
}
}
window.customElements.define('twpt-workflow-dialog', TwptWorkflowDialog);