atom_css_classes(atom)
click to toggle source
def atom_css_classes(atom)
classes = ["atom"]
step = @plan.steps[atom.step_id]
case step.state
when :success
classes << "success"
when :error
classes << "error"
when :skipped, :skipping
classes << "skipped"
end
return classes.join(" ")
end
duration_to_s(duration)
click to toggle source
def duration_to_s(duration)
h("%0.2fs" % duration)
end
filter_checkbox(field, values)
click to toggle source
def filter_checkbox(field, values)
out = "<p>#{field}: %s</p>"
checkboxes = values.map do |value|
field_filter = filtering_options[:filters][field]
checked = field_filter && field_filter.include?(value)
%Q{<input type="checkbox" name="filters[#{field}][]" value="#{value}" #{ "checked" if checked }/>#{value}}
end.join(' ')
out = checkboxes
return out
end
flow_css_classes(flow, sub_flow = nil)
click to toggle source
def flow_css_classes(flow, sub_flow = nil)
classes = []
case flow
when Flows::Sequence
classes << "sequence"
when Flows::Concurrence
classes << "concurrence"
when Flows::Atom
classes << atom_css_classes(flow)
else
raise "Unknown run plan #{run_plan.inspect}"
end
classes << atom_css_classes(sub_flow) if sub_flow.is_a? Flows::Atom
return classes.join(" ")
end
load_action(step)
click to toggle source
def load_action(step)
world.persistence.load_action_for_presentation(@plan, step.action_id, step)
end
order_link(attr, label)
click to toggle source
def order_link(attr, label)
return h(label) unless supported_ordering?(attr)
new_ordering_options = { order_by: attr.to_s,
desc: false }
arrow = ""
if ordering_options[:order_by].to_s == attr.to_s
arrow = ordering_options[:desc] ? "▼" : "▲"
new_ordering_options[:desc] = !ordering_options[:desc]
end
url = updated_url(new_ordering_options)
return %Q{<a href="#{url}"> #{arrow} #{h(label)}</a>}
end
paginated_url(delta)
click to toggle source
def paginated_url(delta)
h(updated_url(page: [0, page + delta].max.to_s))
end
prettify_value(value)
click to toggle source
def prettify_value(value)
YAML.dump(value)
end
prettyprint(value)
click to toggle source
def prettyprint(value)
value = prettyprint_references(value)
if value
pretty_value = prettify_value(value)
<<-HTML
<pre class="prettyprint lang-yaml">#{h(pretty_value)}</pre>
HTML
else
""
end
end
prettyprint_references(value)
click to toggle source
def prettyprint_references(value)
case value
when Hash
value.reduce({}) do |h, (key, val)|
h.update(key => prettyprint_references(val))
end
when Array
value.map { |val| prettyprint_references(val) }
when ExecutionPlan::OutputReference
value.inspect
else
value
end
end
progress_width(step)
click to toggle source
def progress_width(step)
if step.state == :error
100
else
step.progress_done * 100
end
end
show_action_data(label, value)
click to toggle source
def show_action_data(label, value)
value_html = prettyprint(value)
if !value_html.empty?
<<-HTML
<p>
<b>#{h(label)}</b>
#{value_html}
</p>
HTML
else
""
end
end
show_world(world_id)
click to toggle source
def show_world(world_id)
if registered_world = world.coordinator.find_worlds(false, id: world_id).first
"%{world_id} %{world_meta}" % { world_id: world_id, world_meta: registered_world.meta.inspect }
else
world_id
end
end
step(step_id)
click to toggle source
def step(step_id)
@plan.steps[step_id]
end
step_css_class(step)
click to toggle source
def step_css_class(step)
case step.state
when :success
"success"
when :error
"danger"
else
"default"
end
end
step_error(step)
click to toggle source
def step_error(step)
if step.error
['<pre>',
"#{h(step.error.message)} (#{h(step.error.exception_class)})\n",
h(step.error.backtrace.join("\n")),
'</pre>'].join
end
end
updated_url(new_params)
click to toggle source
def updated_url(new_params)
url(request.path_info + "?" + Rack::Utils.build_nested_query(params.merge(Utils.stringify_keys(new_params))))
end
validation_result_css_class(result)
click to toggle source
def validation_result_css_class(result)
if result == :valid
"success"
else
"danger"
end
end