module Dynflow::Web::ConsoleHelpers

Public Instance Methods

atom_css_classes(atom) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 100
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
# File lib/dynflow/web/console_helpers.rb, line 61
def duration_to_s(duration)
  h("%0.2fs" % duration)
end
filter_checkbox(field, values) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 176
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)
    %{<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
# File lib/dynflow/web/console_helpers.rb, line 114
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
# File lib/dynflow/web/console_helpers.rb, line 65
def load_action(step)
  world.persistence.load_action_for_presentation(@plan, step.action_id, step)
end
paginated_url(delta) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 159
def paginated_url(delta)
  h(updated_url(page: [0, page + delta].max.to_s))
end
prettify_value(value) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 30
def prettify_value(value)
  YAML.dump(value)
end
prettyprint(value) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 34
      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
# File lib/dynflow/web/console_helpers.rb, line 46
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
# File lib/dynflow/web/console_helpers.rb, line 143
def progress_width(step)
  if step.state == :error
    100 # we want to show the red bar in full width
  else
    step.progress_done * 100
  end
end
show_action_data(label, value) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 86
      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
# File lib/dynflow/web/console_helpers.rb, line 78
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
# File lib/dynflow/web/console_helpers.rb, line 151
def step(step_id)
  @plan.steps[step_id]
end
step_css_class(step) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 130
def step_css_class(step)
  case step.state
  when :success
    "success"
  when :error
    "danger"
  when :cancelled
    "warning"
  else
    "default"
  end
end
step_error(step) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 69
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
strip_heredoc(str) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 23
def strip_heredoc(str)
  strip_size = str.lines.reject { |l| l =~ /^\s*$/ }.map { |l| l[/^\s*/].length }.min
  str.lines.map do |line|
    line[strip_size..-1] || ''
  end.join
end
updated_url(new_params) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 155
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
# File lib/dynflow/web/console_helpers.rb, line 6
def validation_result_css_class(result)
  if result == :valid
    "success"
  else
    "danger"
  end
end
value_field(key, value) click to toggle source
# File lib/dynflow/web/console_helpers.rb, line 14
      def value_field(key, value)
        strip_heredoc(<<-HTML)
          <p>
            <b>#{key}:</b>
            #{h(value)}
          </p>
        HTML
      end