Module: Naf::ApplicationHelper

Includes:
ActionView::Helpers::TextHelper
Included in:
HistoricalJobsController, MachinesController
Defined in:
app/helpers/naf/application_helper.rb

Constant Summary collapse

NAF_DESTROY_BLOCKED_RESOURCES =
["historical_jobs",
"applications",
"machines",
"historical_job_affinity_tabs",
"janitorial_assignments"]
NAF_READ_ONLY_RESOURCES =
[]
NAF_CREATE_BLOCKED_RESOURCES =
[]
NAF_ALL_VISIBLE_RESOURCES =
{
  "historical_jobs" => "",
  "applications" => "",
  "machines" => "",
  "runners" => ["machine_runners",
                "machine_runner_invocations"],
  "affinities" => "",
  "loggers" => ["logger_styles", "logger_names"],
  "janitorial_assignments" => ["janitorial_archive_assignments",
                               "janitorial_create_assignments",
                               "janitorial_drop_assignments"]
}

Instance Method Summary collapse

Instance Method Details

#add_color(status) ⇒ Object



264
265
266
267
268
269
270
271
272
# File 'app/helpers/naf/application_helper.rb', line 264

def add_color(status)
  if status == 'Running'
    'running'
  elsif status == 'Queued' || status == 'Waiting'
    'queued'
  elsif status =~ /Terminat/ || status == 'Error' || status == 'Failed to Start'
    'dead'
  end
end

#include_actions_in_table?Boolean

Returns:

  • (Boolean)


224
225
226
227
228
# File 'app/helpers/naf/application_helper.rb', line 224

def include_actions_in_table?
  current_page?(naf.root_url) or
  current_page?(controller: 'applications', action: 'index') or
    current_page?(controller: 'historical_jobs', action: 'index')
end

#naf_display_job_search_link?Boolean

Returns:

  • (Boolean)


180
181
182
# File 'app/helpers/naf/application_helper.rb', line 180

def naf_display_job_search_link?
  current_page?(naf.root_url) or current_page?(controller: 'historical_jobs', action: 'index')
end


199
200
201
# File 'app/helpers/naf/application_helper.rb', line 199

def naf_generate_back_link
  link_to "Back to #{naf_make_header(controller_name)}", { controller: controller_name, action: 'index' }, class: 'back'
end


126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'app/helpers/naf/application_helper.rb', line 126

def naf_generate_child_resources_link
  case controller_name
    when "historical_jobs"
      link_to "Historical Job Affinity Tabs",
        controller: 'historical_job_affinity_tabs',
        action: 'index',
        historical_job_id: params[:id]
    when "applications"
      if @record.application_schedule
        link_to "Application Schedule Affinity Tabs",
          controller: 'application_schedule_affinity_tabs',
          action: 'index',
          application_schedule_id: @record.application_schedule.id,
          application_id: @record.id
      else
        ""
      end
    when "machines"
      link_to "Machine Affinity Slots",
        controller: 'machine_affinity_slots',
        action: 'index',
        machine_id: params[:id]
    else
      ""
  end
end


174
175
176
177
178
# File 'app/helpers/naf/application_helper.rb', line 174

def naf_generate_create_link
  return "" if NAF_READ_ONLY_RESOURCES.include?(controller_name) or NAF_CREATE_BLOCKED_RESOURCES.include?(controller_name)
  return link_to "Add a Job", naf.new_historical_job_path, { class: 'add_job' } if naf_display_job_search_link?
  link_to "Create new #{naf_model_name}", { controller: controller_name, action: 'new' }
end


203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'app/helpers/naf/application_helper.rb', line 203

def naf_generate_destroy_link
  return "" if NAF_READ_ONLY_RESOURCES.include?(controller_name) or NAF_DESTROY_BLOCKED_RESOURCES.include?(controller_name)
  case controller_name
    when "application_schedule_affinity_tabs"
      link_to "Destroy", application_application_schedule_application_schedule_affinity_tab_url(@application, @application_schedule, @record),
        { confirm: "Are you sure you want to destroy this #{naf_model_name}?",
          method: :delete,
          class: 'destroy' }
    when "machine_affinity_slots"
      link_to "Destroy", machine_machine_affinity_slot_url(@machine, @record),
        { confirm: "Are you sure you want to destroy this #{naf_model_name}?",
          method: :delete,
          class: 'destroy' }
    else
      link_to "Destroy", @record,
        { confirm: "Are you sure you want to destroy this #{naf_model_name}?",
          method: :delete,
          class: 'destroy' }
  end
end


194
195
196
197
# File 'app/helpers/naf/application_helper.rb', line 194

def naf_generate_edit_link
  return "" if NAF_READ_ONLY_RESOURCES.include?(controller_name)
  link_to "Edit", { controller: controller_name, action: 'edit', id: params[:id] }, class: 'edit'
end


153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
# File 'app/helpers/naf/application_helper.rb', line 153

def naf_generate_index_link(name)
  case name
    when "historical_jobs"
      link_to "Jobs", main_app.naf_path
    when "loggers"
      link_to "Loggers", naf.logger_styles_path
    when "runners"
      link_to "Runners", naf.machine_runners_path
    when "janitorial_assignments"
      link_to "Janitorial Assignments", naf.janitorial_archive_assignments_path
    when "janitorial_archive_assignments"
      link_to "Janitorial Archive Assignments", naf.janitorial_archive_assignments_path
    when "janitorial_create_assignments"
      link_to "Janitorial Create Assignments", naf.janitorial_create_assignments_path
    when "janitorial_drop_assignments"
      link_to "Janitorial Drop Assignments", naf.janitorial_drop_assignments_path
    else
      link_to name.split('_').map(&:capitalize).join(' '), { controller: name, action: 'index'}
  end
end

#naf_highlight_tab?(tab) ⇒ Boolean

Returns:

  • (Boolean)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'app/helpers/naf/application_helper.rb', line 48

def naf_highlight_tab?(tab)
  case tab
    when "machines"
      [tab, "machine_affinity_slots"].include?(controller_name)
    when "runners"
      ["machine_runners", "machine_runner_invocations"].include?(controller_name)
    when "historical_jobs"
      [tab, "historical_job_affinity_tabs"].include?(controller_name)
    when "applications"
      [tab, "application_schedule_affinity_tabs"].include?(controller_name)
    when "loggers"
      ["logger_styles", "logger_names"].include?(controller_name)
    when "janitorial_assignments"
      ["Naf::JanitorialArchiveAssignment",
       "Naf::JanitorialCreateAssignment",
       "Naf::JanitorialDropAssignment"].include?(params[:type])
    when "janitorial_archive_assignments"
      "Naf::JanitorialArchiveAssignment" == params[:type]
    when "janitorial_create_assignments"
      "Naf::JanitorialCreateAssignment" == params[:type]
    when "janitorial_drop_assignments"
      "Naf::JanitorialDropAssignment" == params[:type]
    else
      tab == controller_name
  end
end


39
40
41
42
43
44
45
46
# File 'app/helpers/naf/application_helper.rb', line 39

def naf_last_queued_at_link(app)
  if historical_job = app.last_queued_job
    link_to "#{time_ago_in_words(historical_job.created_at, true)} ago, #{historical_job.created_at.localtime.strftime("%Y-%m-%d %r")}",
      naf.historical_job_path(historical_job)
  else
    ""
  end
end


256
257
258
259
260
261
262
# File 'app/helpers/naf/application_helper.rb', line 256

def naf_link_to_add_fields(name, f, association)
  new_object = f.object.class.reflect_on_association(association).klass.new
  fields = f.fields_for(association, new_object, child_index: "new_#{association}") do |builder|
    render(association.to_s, f: builder)
  end
  link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields)}\")", id: 'add_prerequisite')
end


252
253
254
# File 'app/helpers/naf/application_helper.rb', line 252

def naf_link_to_remove_fields(name, f)
  f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)")
end

#naf_make_header(attribute) ⇒ Object



190
191
192
# File 'app/helpers/naf/application_helper.rb', line 190

def naf_make_header(attribute)
  attribute.to_s.split('_').map(&:capitalize).join(' ')
end

#naf_model_nameObject



184
185
186
187
188
# File 'app/helpers/naf/application_helper.rb', line 184

def naf_model_name
  name_pieces = controller_name.split('_')
  name_pieces[name_pieces.size - 1] = name_pieces.last.singularize
  name_pieces.map(&:capitalize).join(' ')
end

#naf_nested_resource_index?Boolean

Returns:

  • (Boolean)


97
98
99
100
101
# File 'app/helpers/naf/application_helper.rb', line 97

def naf_nested_resource_index?
  ["historical_job_affinity_tabs",
   "application_schedule_affinity_tabs",
   "machine_affinity_slots"].include?(controller_name) and !params[:id]
end


230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
# File 'app/helpers/naf/application_helper.rb', line 230

def naf_papertrail_link(record, runner = false)
  if group_id = Naf.papertrail_group_id
    url = "http://www.papertrailapp.com/groups/#{group_id}/events"
    if record.kind_of?(::Naf::HistoricalJob) || record.kind_of?(::Logical::Naf::Job)
      if record.pid.present?
        query = "jid(#{record.id})"
        url << "?q=#{CGI.escape(query)}"
      end
    elsif record.kind_of?(::Naf::Machine) || record.kind_of?(::Logical::Naf::Machine)
      query = record.server_name
      unless query.nil?
        query << " runner" if runner
        url << "?q=#{CGI.escape(query)}"
      end
    end
  else
    url = "http://www.papertrailapp.com/dashboard"
  end

  return url
end


75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/helpers/naf/application_helper.rb', line 75

def naf_parent_resource_link
  case controller_name
    when "historical_job_affinity_tabs"
      link_to "Back to Historical Job",
        controller: 'historical_jobs',
        action: 'show',
        id: params[:historical_job_id]
    when "application_schedule_affinity_tabs"
      link_to "Back to Application",
        controller: 'applications',
        action: 'show',
        id: params[:application_id]
    when "machine_affinity_slots"
      link_to "Back to Machine",
        controller: 'machines',
        action: 'show',
        id: params[:machine_id]
    else
      ""
  end
end

#naf_table_titleObject



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'app/helpers/naf/application_helper.rb', line 103

def naf_table_title
  if current_page?(naf.janitorial_archive_assignments_path)
    "Janitorial Archive Assignment"
  elsif current_page?(naf.janitorial_create_assignments_path)
    "Janitorial Create Assignment"
  elsif current_page?(naf.janitorial_drop_assignments_path)
    "Janitorial Drop Assignment"
  elsif current_page?(main_app.naf_path)
    "Jobs"
  else
    case controller_name
      when "application_schedule_affinity_tabs"
        Application.find(params[:application_id]).title + ", Affinity Tabs"
      when "machine_affinity_slots"
        machine = Machine.find(params[:machine_id])
        name = machine.server_name
        ((name and name.length > 0) ? name : machine.server_address) + ", Affinity Slots"
      else
        naf_make_header(controller_name)
    end
  end
end

#naf_tabsObject



35
36
37
# File 'app/helpers/naf/application_helper.rb', line 35

def naf_tabs
  NAF_ALL_VISIBLE_RESOURCES
end