Add edit pipeline as JSON option

This commit is contained in:
Shadowfacts 2020-07-18 10:44:14 -04:00
parent a10f1bea30
commit 6c9247873f
Signed by: shadowfacts
GPG Key ID: 94A5AB95422746E5
6 changed files with 15 additions and 6 deletions

View File

@ -3,6 +3,7 @@ defmodule FrenzyWeb.PipelineController do
alias Frenzy.{Repo, Pipeline} alias Frenzy.{Repo, Pipeline}
alias FrenzyWeb.Endpoint alias FrenzyWeb.Endpoint
import Ecto.Query import Ecto.Query
import Phoenix.LiveView.Controller
plug :user_owns_pipeline plug :user_owns_pipeline
@ -77,7 +78,7 @@ defmodule FrenzyWeb.PipelineController do
redirect(conn, to: Routes.pipeline_path(Endpoint, :index)) redirect(conn, to: Routes.pipeline_path(Endpoint, :index))
end end
def edit(conn, _params) do def edit(conn, %{"json" => _}) do
pipeline = conn.assigns[:pipeline] pipeline = conn.assigns[:pipeline]
{:ok, stages_json} = Jason.encode(pipeline.stages, pretty: true) {:ok, stages_json} = Jason.encode(pipeline.stages, pretty: true)
@ -89,6 +90,11 @@ defmodule FrenzyWeb.PipelineController do
}) })
end end
def edit(conn, _params) do
pipeline = conn.assigns[:pipeline]
live_render(conn, FrenzyWeb.EditPipelineLive, session: %{"pipeline_id" => pipeline.id})
end
def update(conn, %{"pipeline" => %{"name" => name, "stages" => stages_json}}) do def update(conn, %{"pipeline" => %{"name" => name, "stages" => stages_json}}) do
pipeline = conn.assigns[:pipeline] pipeline = conn.assigns[:pipeline]

View File

@ -12,7 +12,7 @@ defmodule FrenzyWeb.EditPipelineLive do
def stages, do: @stages def stages, do: @stages
@impl true @impl true
def mount(%{"id" => pipeline_id}, _session, socket) do def mount(_, %{"pipeline_id" => pipeline_id}, socket) do
pipeline = Repo.get(Pipeline, pipeline_id) pipeline = Repo.get(Pipeline, pipeline_id)
{:ok, {:ok,

View File

@ -1,5 +1,7 @@
<h1>Edit <%= @pipeline.name %></h1> <h1>Edit <%= @pipeline.name %></h1>
<a href="<%= Routes.pipeline_path(FrenzyWeb.Endpoint, :edit, @pipeline.id, json: "") %>" class="btn btn-primary">Edit as JSON</a>
<%= for {stage, index} <- Enum.with_index(@pipeline.stages) do %> <%= for {stage, index} <- Enum.with_index(@pipeline.stages) do %>
<div class="card mt-4"> <div class="card mt-4">
<div class="card-header container-fluid"> <div class="card-header container-fluid">
@ -22,7 +24,7 @@
</div> </div>
<% end %> <% end %>
<%= f = form_for :stage, "#", [class: "mt-4", phx_submit: :add_stage] %> <%= f = form_for :stage, "#", [class: "mt-4 mb-4", phx_submit: :add_stage] %>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-2 col-form-label" for="module_name">Module</label> <label class="col-sm-2 col-form-label" for="module_name">Module</label>
<div class="col-sm-10"> <div class="col-sm-10">

View File

@ -54,8 +54,7 @@ defmodule FrenzyWeb.Router do
resources "/feeds", FeedController, except: [:index, :new] resources "/feeds", FeedController, except: [:index, :new]
post "/feeds/:id/refresh", FeedController, :refresh post "/feeds/:id/refresh", FeedController, :refresh
resources "/pipelines", PipelineController, except: [:edit] resources "/pipelines", PipelineController
live "/pipelines/:id/edit", EditPipelineLive
resources "/items", ItemController, only: [:show] resources "/items", ItemController, only: [:show]
post "/items/:id/read", ItemController, :read post "/items/:id/read", ItemController, :read

View File

@ -1,5 +1,7 @@
<h1>Edit Pipeline</h1> <h1>Edit Pipeline</h1>
<a href="<%= Routes.pipeline_path(@conn, :edit, @pipeline.id) %>" class="btn btn-primary">Edit UI</a>
<%= form_tag Routes.pipeline_path(@conn, :update, @pipeline.id), method: :put do %> <%= form_tag Routes.pipeline_path(@conn, :update, @pipeline.id), method: :put do %>
<div class="form-group row"> <div class="form-group row">
<label class="col-sm-2 col-form-label" for="name">Name</label> <label class="col-sm-2 col-form-label" for="name">Name</label>

View File

@ -1,7 +1,7 @@
<h1><%= @pipeline.name %></h1> <h1><%= @pipeline.name %></h1>
<h2>Stages: <%= @pipeline.stages |> Enum.count() %></h2> <h2>Stages: <%= @pipeline.stages |> Enum.count() %></h2>
<a href="<%= Routes.live_path(@conn, FrenzyWeb.EditPipelineLive, @pipeline.id) %>" class="btn btn-primary">Edit Pipeline</a> <a href="<%= Routes.pipeline_path(@conn, :edit, @pipeline.id) %>" class="btn btn-primary">Edit Pipeline</a>
<%= form_tag Routes.pipeline_path(@conn, :delete, @pipeline.id), method: :delete do %> <%= form_tag Routes.pipeline_path(@conn, :delete, @pipeline.id), method: :delete do %>
<%= submit "Delete Pipeline", class: "btn btn-danger mt-2" %> <%= submit "Delete Pipeline", class: "btn btn-danger mt-2" %>
<% end %> <% end %>