Module: Dynflow::Web::ConsoleHelpers
- Defined in:
 - lib/dynflow/web/console_helpers.rb
 
Instance Method Summary collapse
- #atom_css_classes(atom) ⇒ Object
 - #duration_to_s(duration) ⇒ Object
 - #filter_checkbox(field, values) ⇒ Object
 - #flow_css_classes(flow, sub_flow = nil) ⇒ Object
 - #load_action(step) ⇒ Object
 - #order_link(attr, label) ⇒ Object
 - #paginated_url(delta) ⇒ Object
 - #prettify_value(value) ⇒ Object
 - #prettyprint(value) ⇒ Object
 - #prettyprint_references(value) ⇒ Object
 - #progress_width(step) ⇒ Object
 - #show_action_data(label, value) ⇒ Object
 - #show_world(world_id) ⇒ Object
 - #step(step_id) ⇒ Object
 - #step_css_class(step) ⇒ Object
 - #step_error(step) ⇒ Object
 - #strip_heredoc(str) ⇒ Object
 - #updated_url(new_params) ⇒ Object
 - #validation_result_css_class(result) ⇒ Object
 - #value_field(key, value) ⇒ Object
 
Instance Method Details
#atom_css_classes(atom) ⇒ Object
      100 101 102 103 104 105 106 107 108 109 110 111 112  | 
    
      # 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) ⇒ Object
      61 62 63  | 
    
      # File 'lib/dynflow/web/console_helpers.rb', line 61 def duration_to_s(duration) h("%0.2fs" % duration) end  | 
  
#filter_checkbox(field, values) ⇒ Object
      176 177 178 179 180 181 182 183 184 185  | 
    
      # 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 = [: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) ⇒ Object
      114 115 116 117 118 119 120 121 122 123 124 125 126 127 128  | 
    
      # 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) ⇒ Object
      65 66 67  | 
    
      # 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  | 
  
#order_link(attr, label) ⇒ Object
      163 164 165 166 167 168 169 170 171 172 173 174  | 
    
      # File 'lib/dynflow/web/console_helpers.rb', line 163 def order_link(attr, label) return h(label) unless supported_ordering?(attr) = { order_by: attr.to_s, desc: false } arrow = "" if [:order_by].to_s == attr.to_s arrow = [:desc] ? "▼" : "▲" [:desc] = ![:desc] end url = updated_url() return %{<a href="#{url}"> #{arrow} #{h(label)}</a>} end  | 
  
#paginated_url(delta) ⇒ Object
      159 160 161  | 
    
      # 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) ⇒ Object
      30 31 32  | 
    
      # File 'lib/dynflow/web/console_helpers.rb', line 30 def prettify_value(value) YAML.dump(value) end  | 
  
#prettyprint(value) ⇒ Object
      34 35 36 37 38 39 40 41 42 43 44  | 
    
      # 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) ⇒ Object
      46 47 48 49 50 51 52 53 54 55 56 57 58 59  | 
    
      # 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) ⇒ Object
      143 144 145 146 147 148 149  | 
    
      # 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) ⇒ Object
      86 87 88 89 90 91 92 93 94 95 96 97 98  | 
    
      # 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) ⇒ Object
      78 79 80 81 82 83 84  | 
    
      # 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..inspect } else world_id end end  | 
  
#step(step_id) ⇒ Object
      151 152 153  | 
    
      # File 'lib/dynflow/web/console_helpers.rb', line 151 def step(step_id) @plan.steps[step_id] end  | 
  
#step_css_class(step) ⇒ Object
      130 131 132 133 134 135 136 137 138 139 140 141  | 
    
      # 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) ⇒ Object
      69 70 71 72 73 74 75 76  | 
    
      # File 'lib/dynflow/web/console_helpers.rb', line 69 def step_error(step) if step.error ['<pre>', "#{h(step.error.)} (#{h(step.error.exception_class)})\n", h(step.error.backtrace.join("\n")), '</pre>'].join end end  | 
  
#strip_heredoc(str) ⇒ Object
      23 24 25 26 27 28  | 
    
      # 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) ⇒ Object
      155 156 157  | 
    
      # 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) ⇒ Object
      6 7 8 9 10 11 12  | 
    
      # 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) ⇒ Object
      14 15 16 17 18 19 20 21  | 
    
      # 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  |