frenzy/lib/frenzy_web/live/configure_stage/conditional_stage_live.html...

69 lines
2.6 KiB
Plaintext

<div id={@id}>
<%= if Mix.env == :dev do %>
<pre><%= Jason.encode!(@opts, pretty: true) %></pre>
<% end %>
<%= form_for @opts, "#", [as: :opts, phx_change: :update_stage, phx_target: @myself], fn f -> %>
<div class="row mb-2">
<label class="col-sm-2 col-form-label" for={"#{@id}-stage"}>Module</label>
<div class="col-sm-10">
<%= select f, :stage, @stages, prompt: "Select a stage...", id: "#{@id}-stage", class: "form-select" %>
</div>
</div>
<% end %>
<div class="card mb-2">
<div class="card-header">
<h4 class="m-0"><%= @opts["stage"] %></h4>
</div>
<div class="card-body">
<% component = component_module(@opts["stage"]) %>
<%= unless is_nil(component) do %>
<%= live_component(@socket, component, index: @index, id: "#{@id}-conditional", stage: @stage, keypath: @keypath ++ ["opts"]) %>
<% end %>
</div>
</div>
<%= if @opts["condition"]["mode"] in ["accept", "reject"] do %>
<div class="card">
<div class="card-header container-fluid">
<div class="row">
<div class="col">
<h4 class="m-0">Condition: Filter</h4>
</div>
<div class="col text-end">
<button phx-click="convert_to_rule" phx-target={@id} class="btn btn-primary btn-sm">Convert to Rule</button>
</div>
</div>
</div>
<div class="card-body">
<%= if @confirm_convert_to_rule do %>
<div class="alert alert-danger mb-2">
<p>This will modify the conditional stage to only run when the first rule is met. Are you sure you want to proceed?</p>
<button class="btn btn-danger btn-sm" phx-click="confirm_convert_to_rule" phx-target={@id}>Convert to Rule</button>
<button class="btn btn-secondary btn-sm" phx-click="cancel_convert_to_rule" phx-target={@id}>Cancel</button>
</div>
<% end %>
<%= live_component @socket, FrenzyWeb.FilterLive, id: "##{@id}-filter", parent_id: @id, filter: @opts["condition"] %>
</div>
</div>
<% else %>
<div class="card">
<div class="card-header container-fluid">
<div class="row">
<div class="col">
<h4 class="m-0">Condition: Rule</h4>
</div>
<div class="col text-end">
<button phx-click="convert_to_filter" phx-target={@id} class="btn btn-primary btn-sm">Convert to Filter</button>
</div>
</div>
</div>
<div class="card-body">
<%= live_component @socket, FrenzyWeb.FilterRuleLive, id: "##{@id}-rule", parent_id: @id, rule: @opts["condition"], index: :no_index %>
</div>
</div>
<% end %>
</div>