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 |