@@ -566,6 +566,9 @@ defmodule LightningWeb.WorkflowLive.Edit do
566
566
< . live_component
567
567
id = "cron-run-button "
568
568
module = { LightningWeb.JobLive.CronRunButton }
569
+ workflow = { @ workflow }
570
+ follow_run = { @ follow_run }
571
+ snapshot_version_tag = { @ snapshot_version_tag }
569
572
/>
570
573
</ div >
571
574
</ div >
@@ -1670,80 +1673,7 @@ defmodule LightningWeb.WorkflowLive.Edit do
1670
1673
# The manual_run_submit event is for create a new work order from a dataclip and
1671
1674
# a job.
1672
1675
def handle_event ( "manual_run_submit" , params , socket ) do
1673
- % {
1674
- project: project ,
1675
- selected_job: selected_job ,
1676
- current_user: current_user ,
1677
- workflow_params: workflow_params ,
1678
- has_presence_edit_priority: has_presence_edit_priority ,
1679
- workflow: workflow ,
1680
- manual_run_form: form
1681
- } = socket . assigns
1682
-
1683
- manual_params = Map . get ( params , "manual" , % { } )
1684
-
1685
- params =
1686
- case form do
1687
- nil -> manual_params
1688
- % { params: form_params } -> Map . merge ( form_params , manual_params )
1689
- end
1690
-
1691
- socket = socket |> apply_params ( workflow_params , :workflow )
1692
-
1693
- workflow_or_changeset =
1694
- if has_presence_edit_priority do
1695
- socket . assigns . changeset
1696
- else
1697
- get_workflow_by_id ( workflow . id )
1698
- end
1699
-
1700
- with :ok <- check_user_can_manual_run_workflow ( socket ) do
1701
- case Helpers . run_workflow (
1702
- workflow_or_changeset ,
1703
- params ,
1704
- project: project ,
1705
- selected_job: selected_job ,
1706
- created_by: current_user
1707
- ) do
1708
- { :ok , % { workorder: workorder , workflow: workflow } } ->
1709
- % { runs: [ run ] } = workorder
1710
-
1711
- Runs . subscribe ( run )
1712
-
1713
- snapshot = snapshot_by_version ( workflow . id , workflow . lock_version )
1714
-
1715
- { :noreply ,
1716
- socket
1717
- |> assign_workflow ( workflow , snapshot )
1718
- |> follow_run ( run )
1719
- |> push_event ( "push-hash" , % { "hash" => "log" } ) }
1720
-
1721
- { :error , % Ecto.Changeset { data: % WorkOrders.Manual { } } = changeset } ->
1722
- { :noreply ,
1723
- socket
1724
- |> assign_manual_run_form ( changeset ) }
1725
-
1726
- { :error , % Ecto.Changeset { data: % Workflow { } } = changeset } ->
1727
- {
1728
- :noreply ,
1729
- socket
1730
- |> assign_changeset ( changeset )
1731
- |> mark_validated ( )
1732
- |> put_flash ( :error , "Workflow could not be saved" )
1733
- }
1734
-
1735
- { :error , % { text: message } } ->
1736
- { :noreply , put_flash ( socket , :error , message ) }
1737
-
1738
- { :error , :workflow_deleted } ->
1739
- { :noreply ,
1740
- put_flash (
1741
- socket ,
1742
- :error ,
1743
- "Oops! You cannot modify a deleted workflow"
1744
- ) }
1745
- end
1746
- end
1676
+ handle_manual_run_submit ( socket , params )
1747
1677
end
1748
1678
1749
1679
def handle_event ( "toggle_workflow_state" , % { "workflow_state" => state } , socket ) do
@@ -1800,6 +1730,15 @@ defmodule LightningWeb.WorkflowLive.Edit do
1800
1730
end
1801
1731
end
1802
1732
1733
+ def handle_info (
1734
+ { LightningWeb.JobLive.CronRunButton , "cron_trigger_manual_run" ,
1735
+ dataclip_id } ,
1736
+ socket
1737
+ ) do
1738
+ params = % { "manual" => % { "dataclip_id" => dataclip_id } }
1739
+ handle_manual_run_submit ( socket , params )
1740
+ end
1741
+
1803
1742
def handle_info ( { "form_changed" , % { "workflow" => params } } , socket ) do
1804
1743
{ :noreply , handle_new_params ( socket , params , :workflow ) }
1805
1744
end
@@ -2637,4 +2576,83 @@ defmodule LightningWeb.WorkflowLive.Edit do
2637
2576
end
2638
2577
2639
2578
defp loaded? ( % Workflow { } = workflow ) , do: workflow . __meta__ . state == :loaded
2579
+
2580
+ defp handle_manual_run_submit ( socket , params ) do
2581
+ IO . inspect ( params )
2582
+
2583
+ % {
2584
+ project: project ,
2585
+ selected_job: selected_job ,
2586
+ current_user: current_user ,
2587
+ workflow_params: workflow_params ,
2588
+ has_presence_edit_priority: has_presence_edit_priority ,
2589
+ workflow: workflow ,
2590
+ manual_run_form: form
2591
+ } = socket . assigns
2592
+
2593
+ manual_params = Map . get ( params , "manual" , % { } )
2594
+
2595
+ params =
2596
+ case form do
2597
+ nil -> manual_params
2598
+ % { params: form_params } -> Map . merge ( form_params , manual_params )
2599
+ end
2600
+
2601
+ socket = socket |> apply_params ( workflow_params , :workflow )
2602
+
2603
+ workflow_or_changeset =
2604
+ if has_presence_edit_priority do
2605
+ socket . assigns . changeset
2606
+ else
2607
+ get_workflow_by_id ( workflow . id )
2608
+ end
2609
+
2610
+ with :ok <- check_user_can_manual_run_workflow ( socket ) do
2611
+ case Helpers . run_workflow (
2612
+ workflow_or_changeset ,
2613
+ params ,
2614
+ project: project ,
2615
+ selected_job: selected_job ,
2616
+ created_by: current_user
2617
+ ) do
2618
+ { :ok , % { workorder: workorder , workflow: workflow } } ->
2619
+ % { runs: [ run ] } = workorder
2620
+
2621
+ Runs . subscribe ( run )
2622
+
2623
+ snapshot = snapshot_by_version ( workflow . id , workflow . lock_version )
2624
+
2625
+ { :noreply ,
2626
+ socket
2627
+ |> assign_workflow ( workflow , snapshot )
2628
+ |> follow_run ( run )
2629
+ |> push_event ( "push-hash" , % { "hash" => "log" } ) }
2630
+
2631
+ { :error , % Ecto.Changeset { data: % WorkOrders.Manual { } } = changeset } ->
2632
+ { :noreply ,
2633
+ socket
2634
+ |> assign_manual_run_form ( changeset ) }
2635
+
2636
+ { :error , % Ecto.Changeset { data: % Workflow { } } = changeset } ->
2637
+ {
2638
+ :noreply ,
2639
+ socket
2640
+ |> assign_changeset ( changeset )
2641
+ |> mark_validated ( )
2642
+ |> put_flash ( :error , "Workflow could not be saved" )
2643
+ }
2644
+
2645
+ { :error , % { text: message } } ->
2646
+ { :noreply , put_flash ( socket , :error , message ) }
2647
+
2648
+ { :error , :workflow_deleted } ->
2649
+ { :noreply ,
2650
+ put_flash (
2651
+ socket ,
2652
+ :error ,
2653
+ "Oops! You cannot modify a deleted workflow"
2654
+ ) }
2655
+ end
2656
+ end
2657
+ end
2640
2658
end
0 commit comments