Packages
step_flow
0.2.11
1.9.0-rc2
1.9.0-rc1
1.9.0-rc0
1.8.2
1.8.1
1.8.1-rc8
1.8.1-rc7
1.8.1-rc6
1.8.1-rc5
1.8.1-rc4
1.8.1-rc3
1.8.1-rc2
1.8.1-rc1
1.8.1-rc0
1.8.0
1.8.0-rc3
1.8.0-rc2
1.8.0-rc1
1.8.0-rc0
1.7.3
1.7.3-rc4
1.7.3-rc3
1.7.3-rc2
1.7.3-rc1
1.7.3-rc0
1.7.2
1.7.2-rc4
1.7.2-rc3
1.7.2-rc2
1.7.2-rc1
1.7.2-rc0
1.7.1
1.7.0
1.7.0-rc1
1.7.0-rc0
1.6.1
1.6.1-rc1
1.6.1-rc0
1.6.0
1.6.0-rc9
1.6.0-rc8
1.6.0-rc7
1.6.0-rc6
1.6.0-rc5
1.6.0-rc4
1.6.0-rc3
1.6.0-rc20
1.6.0-rc2
1.6.0-rc19
1.6.0-rc18
1.6.0-rc17
1.6.0-rc16
1.6.0-rc15
1.6.0-rc14
1.6.0-rc13
1.6.0-rc12
1.6.0-rc11
1.6.0-rc10
1.6.0-rc1
1.5.0
1.5.0-rc1
1.4.2-rc2
1.4.2-rc1
1.4.1
1.4.1-rc1
1.4.0
1.4.0-rc4
1.4.0-rc3
1.4.0-rc2
1.4.0-rc1
1.3.1
1.3.0
1.3.0-rc
1.2.0
1.1.0
1.0.0
1.0.0-rc9
1.0.0-rc8
1.0.0-rc7
1.0.0-rc6
1.0.0-rc5
1.0.0-rc1
0.2.13
0.2.12
0.2.11
0.2.10
0.2.9
0.2.8
0.2.7
0.2.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.4
0.0.3
0.0.2
0.0.1
Step flow manager for Elixir applications
Current section
Files
Jump to
Current section
Files
lib/step_flow/view/workflow_view.ex
defmodule StepFlow.WorkflowView do
use StepFlow, :view
alias StepFlow.{ArtifactView, JobView, RightView, WorkflowView}
require Logger
def render("index.json", %{workflows: %{data: workflows, total: total}}) do
%{
data: render_many(workflows, WorkflowView, "workflow.json"),
total: total
}
end
def render("show.json", %{workflow: workflow}) do
%{data: render_one(workflow, WorkflowView, "workflow.json")}
end
def render("created.json", %{workflow: workflow}) do
%{data: render_one(workflow, WorkflowView, "workflow_created.json")}
end
def render("workflow.json", %{workflow: workflow}) do
result = %{
schema_version: workflow.schema_version,
id: workflow.id,
identifier: workflow.identifier,
version_major: workflow.version_major,
version_minor: workflow.version_minor,
version_micro: workflow.version_micro,
tags: workflow.tags,
reference: workflow.reference,
steps: workflow.steps,
parameters: workflow.parameters,
created_at: workflow.inserted_at
}
result =
if is_list(workflow.artifacts) do
artifacts = render_many(workflow.artifacts, ArtifactView, "artifact.json")
Map.put(result, :artifacts, artifacts)
else
result
end
result =
if is_list(workflow.jobs) do
jobs = render_many(workflow.jobs, JobView, "job.json")
Map.put(result, :jobs, jobs)
else
result
end
if is_list(workflow.rights) do
rights = render_many(workflow.rights, RightView, "right.json")
Map.put(result, :rights, rights)
else
result
end
end
def render("workflow_created.json", %{workflow: workflow}) do
%{
schema_version: workflow.schema_version,
id: workflow.id,
identifier: workflow.identifier,
version_major: workflow.version_major,
version_minor: workflow.version_minor,
version_micro: workflow.version_micro,
tags: workflow.tags,
reference: workflow.reference,
parameters: workflow.parameters,
created_at: workflow.inserted_at
}
end
def render("statistics.json", %{workflows_status: []}) do
%{
data: %{
processing: 0,
error: 0,
completed: 0,
bins: []
}
}
end
def render("statistics.json", %{
workflows_status: workflows_status,
time_interval: time_interval,
end_date: end_date
}) do
%{
data: %{
processing:
workflows_status
|> Enum.filter(fn s -> s.state == :processing end)
|> length(),
error:
workflows_status
|> Enum.filter(fn s -> s.state == :error end)
|> length(),
completed:
workflows_status
|> Enum.filter(fn s -> s.state == :completed end)
|> length(),
bins:
workflows_status
|> Enum.group_by(fn s ->
NaiveDateTime.diff(end_date, s.inserted_at, :second)
|> Kernel.div(time_interval)
end)
|> Enum.map(fn {bin, group} ->
%{
bin: bin,
start_date:
NaiveDateTime.add(end_date, -(bin + 1) * time_interval, :second)
|> NaiveDateTime.to_string(),
end_date:
NaiveDateTime.add(end_date, -bin * time_interval, :second)
|> NaiveDateTime.to_string(),
processing:
group
|> Enum.filter(fn s -> s.state == :processing end)
|> length(),
error:
group
|> Enum.filter(fn s -> s.state == :error end)
|> length(),
completed:
group
|> Enum.filter(fn s -> s.state == :completed end)
|> length()
}
end)
}
}
end
end