diff --git a/src/designer/elsa-workflows-studio/src/components/screens/workflow-instances-list/elsa-workflow-instances-list-screen/elsa-workflow-instances-list-screen.tsx b/src/designer/elsa-workflows-studio/src/components/screens/workflow-instances-list/elsa-workflow-instances-list-screen/elsa-workflow-instances-list-screen.tsx index cdce24425..d13746ac5 100644 --- a/src/designer/elsa-workflows-studio/src/components/screens/workflow-instances-list/elsa-workflow-instances-list-screen/elsa-workflow-instances-list-screen.tsx +++ b/src/designer/elsa-workflows-studio/src/components/screens/workflow-instances-list/elsa-workflow-instances-list-screen/elsa-workflow-instances-list-screen.tsx @@ -21,6 +21,7 @@ export class ElsaWorkflowInstancesListScreen { @State() selectedWorkflowStatus?: WorkflowStatus; @State() selectedOrderBy?: OrderBy = OrderBy.Started; @State() selectedWorkflowInstanceIds: Array = []; + @State() selectAllChecked: boolean; confirmDialog: HTMLElsaConfirmDialogElement; @@ -31,14 +32,6 @@ export class ElsaWorkflowInstancesListScreen { await this.loadWorkflowBlueprints(); await this.loadWorkflowInstances(); } - - async routeChanged(e: LocationSegments) { - if(!e.pathname.toLowerCase().indexOf('workflow-instances')) - return; - - this.applyQueryString(e.search); - await this.loadWorkflowInstances(); - } applyQueryString(queryString?: string){ const query = parseQuery(queryString); @@ -106,6 +99,37 @@ export class ElsaWorkflowInstancesListScreen { } } + async routeChanged(e: LocationSegments) { + if(!e.pathname.toLowerCase().indexOf('workflow-instances')) + return; + + this.applyQueryString(e.search); + await this.loadWorkflowInstances(); + } + + onSelectAllCheckChange(e: Event){ + const checkBox = e.target as HTMLInputElement; + const isChecked = checkBox.checked; + + this.selectAllChecked = isChecked; + this.selectedWorkflowInstanceIds = []; + + if(isChecked) + this.selectedWorkflowInstanceIds = this.workflowInstances.items.map(x => x.id); + } + + onWorkflowInstanceCheckChange(e: Event, workflowInstance: WorkflowInstanceSummary){ + const checkBox = e.target as HTMLInputElement; + const isChecked = checkBox.checked; + + if (isChecked) + this.selectedWorkflowInstanceIds = [...this.selectedWorkflowInstanceIds, workflowInstance.id]; + else + this.selectedWorkflowInstanceIds = this.selectedWorkflowInstanceIds.filter(x => x != workflowInstance.id); + + this.selectAllChecked = this.workflowInstances.items.findIndex(x => this.selectedWorkflowInstanceIds.findIndex(id => id == x.id) < 0) < 0; + } + render() { const workflowInstances = this.workflowInstances.items; const workflowBlueprints = this.workflowBlueprints; @@ -130,7 +154,7 @@ export class ElsaWorkflowInstancesListScreen { - + this.onSelectAllCheckChange(e)} class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300 rounded"/> ID @@ -175,7 +199,7 @@ export class ElsaWorkflowInstancesListScreen { return - + this.onWorkflowInstanceCheckChange(e, workflowInstance)} class="focus:ring-blue-500 h-4 w-4 text-blue-600 border-gray-300 rounded"/> {workflowInstance.id}