rocketjob_mission_control 3.0.3 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/README.md +4 -0
- data/app/assets/fonts/webfonts/fa-brands-400.eot +0 -0
- data/app/assets/fonts/webfonts/fa-brands-400.woff +0 -0
- data/app/assets/fonts/webfonts/fa-brands-400.woff2 +0 -0
- data/app/assets/fonts/webfonts/fa-regular-400.eot +0 -0
- data/app/assets/fonts/webfonts/fa-regular-400.woff +0 -0
- data/app/assets/fonts/webfonts/fa-regular-400.woff2 +0 -0
- data/app/assets/fonts/webfonts/fa-solid-900.eot +0 -0
- data/app/assets/fonts/webfonts/fa-solid-900.woff +0 -0
- data/app/assets/fonts/webfonts/fa-solid-900.woff2 +0 -0
- data/app/assets/images/rocket_job_mission_control/android-chrome-192x192.png +0 -0
- data/app/assets/images/rocket_job_mission_control/android-chrome-512x512.png +0 -0
- data/app/assets/images/rocket_job_mission_control/apple-touch-icon.png +0 -0
- data/app/assets/images/rocket_job_mission_control/favicon-16x16.png +0 -0
- data/app/assets/images/rocket_job_mission_control/favicon-32x32.png +0 -0
- data/app/assets/images/rocket_job_mission_control/favicon.ico +0 -0
- data/app/assets/images/rocket_job_mission_control/favicon.png +0 -0
- data/app/assets/images/rocket_job_mission_control/mstile-150x150.png +0 -0
- data/app/assets/images/rocket_job_mission_control/safari-pinned-tab.svg +188 -0
- data/app/assets/javascripts/rocket_job_mission_control/datatable.js +2 -1
- data/app/assets/stylesheets/rocket_job_mission_control/application.scss +5 -4
- data/app/assets/stylesheets/rocket_job_mission_control/base.scss +39 -65
- data/app/assets/stylesheets/rocket_job_mission_control/callout.scss +14 -2
- data/app/datatables/rocket_job_mission_control/active_workers_datatable.rb +1 -1
- data/app/datatables/rocket_job_mission_control/dirmon_entries_datatable.rb +1 -1
- data/app/datatables/rocket_job_mission_control/jobs_datatable.rb +21 -16
- data/app/datatables/rocket_job_mission_control/servers_datatable.rb +1 -1
- data/app/helpers/rocket_job_mission_control/application_helper.rb +18 -16
- data/app/helpers/rocket_job_mission_control/jobs_helper.rb +11 -6
- data/app/views/layouts/rocket_job_mission_control/application.html.erb +30 -28
- data/app/views/layouts/rocket_job_mission_control/partials/_flash.html.erb +5 -4
- data/app/views/layouts/rocket_job_mission_control/partials/_header.html.erb +23 -19
- data/app/views/layouts/rocket_job_mission_control/partials/_sidebar.html.erb +5 -4
- data/app/views/rocket_job_mission_control/active_workers/index.html.erb +13 -8
- data/app/views/rocket_job_mission_control/dirmon_entries/_form.html.erb +31 -21
- data/app/views/rocket_job_mission_control/dirmon_entries/_sidebar.html.erb +12 -9
- data/app/views/rocket_job_mission_control/dirmon_entries/_status.html.erb +5 -2
- data/app/views/rocket_job_mission_control/dirmon_entries/edit.html.erb +4 -3
- data/app/views/rocket_job_mission_control/dirmon_entries/index.html.erb +16 -14
- data/app/views/rocket_job_mission_control/dirmon_entries/new.html.erb +5 -4
- data/app/views/rocket_job_mission_control/dirmon_entries/show.html.erb +19 -14
- data/app/views/rocket_job_mission_control/jobs/_pagination.html.erb +9 -5
- data/app/views/rocket_job_mission_control/jobs/_sidebar.html.erb +9 -8
- data/app/views/rocket_job_mission_control/jobs/_status.html.erb +18 -10
- data/app/views/rocket_job_mission_control/jobs/edit.html.erb +22 -15
- data/app/views/rocket_job_mission_control/jobs/exception.html.erb +14 -10
- data/app/views/rocket_job_mission_control/jobs/exceptions.html.erb +27 -25
- data/app/views/rocket_job_mission_control/jobs/index.html.erb +16 -13
- data/app/views/rocket_job_mission_control/jobs/show.html.erb +25 -20
- data/app/views/rocket_job_mission_control/servers/_sidebar.html.erb +8 -6
- data/app/views/rocket_job_mission_control/servers/index.html.erb +18 -14
- data/config/initializers/assets.rb +13 -0
- data/lib/rocket_job_mission_control/version.rb +1 -1
- data/test/controllers/rocket_job_mission_control/dirmon_entries_controller_test.rb +4 -6
- data/test/controllers/rocket_job_mission_control/jobs_controller_test.rb +18 -15
- data/test/helpers/rocket_job_mission_control/jobs_helper_test.rb +12 -6
- data/test/helpers/rocket_job_mission_control/servers_helper_test.rb +3 -4
- data/vendor/assets/stylesheets/fontawesome-all.min.css +5 -0
- data/vendor/assets/stylesheets/{selectize.default.css → selectize.bootstrap3.css} +134 -113
- metadata +39 -13
@@ -4,9 +4,9 @@
|
|
4
4
|
border-left-width: 0.5em;
|
5
5
|
}
|
6
6
|
.callout-queued {
|
7
|
-
border-left-color:
|
7
|
+
border-left-color: #A29F00;
|
8
8
|
a {
|
9
|
-
color:
|
9
|
+
color: #A29F00;
|
10
10
|
}
|
11
11
|
}
|
12
12
|
.callout-running {
|
@@ -15,6 +15,18 @@
|
|
15
15
|
color: #337ab7;
|
16
16
|
}
|
17
17
|
}
|
18
|
+
.callout-sleeping {
|
19
|
+
border-left-color: darkcyan;
|
20
|
+
a {
|
21
|
+
color: darkcyan;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
.callout-scheduled {
|
25
|
+
border-left-color: #92001B;
|
26
|
+
a {
|
27
|
+
color: #92001B;
|
28
|
+
}
|
29
|
+
}
|
18
30
|
.callout-completed {
|
19
31
|
border-left-color: green;
|
20
32
|
a {
|
@@ -21,7 +21,7 @@ module RocketJobMissionControl
|
|
21
21
|
def worker_name_with_icon(active_worker, job)
|
22
22
|
state = active_worker.zombie? ? :zombie : job.state
|
23
23
|
<<-EOS
|
24
|
-
<i class="
|
24
|
+
<i class="#{state_icon(state)}" style="font-size: 75%" title="#{state}"></i>
|
25
25
|
#{active_worker.name}
|
26
26
|
EOS
|
27
27
|
end
|
@@ -16,7 +16,7 @@ module RocketJobMissionControl
|
|
16
16
|
def name_with_link(dirmon)
|
17
17
|
<<-EOS
|
18
18
|
<a href="#{dirmon_entry_path(dirmon.id)}">
|
19
|
-
<i class="
|
19
|
+
<i class="#{state_icon(dirmon.state)}" style="font-size: 75%" title="#{dirmon.state}"></i>
|
20
20
|
#{dirmon.name}
|
21
21
|
</a>
|
22
22
|
EOS
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module RocketJobMissionControl
|
2
2
|
class JobsDatatable < AbstractDatatable
|
3
|
-
delegate :job_path, :job_icon, :edit_job_path,
|
3
|
+
delegate :job_path, :job_icon, :edit_job_path, :state_icon, :job_state,
|
4
4
|
:abort_job_path, :job_path, :fail_job_path, :run_now_job_path, :pause_job_path,
|
5
5
|
:resume_job_path, :retry_job_path, :exception_job_path, :job_action_link, :exceptions_job_path, to: :@view
|
6
6
|
|
7
|
-
COMMON_FIELDS = [:id, :_type, :description, :completed_at, :created_at, :started_at, :state].freeze
|
7
|
+
COMMON_FIELDS = [:id, :_type, :description, :completed_at, :created_at, :started_at, :state, :worker_name].freeze
|
8
8
|
|
9
9
|
ABORTED_COLUMNS = [
|
10
10
|
{display: 'Class', value: :class_with_link, field: '_type', width: '30%'},
|
@@ -13,15 +13,6 @@ module RocketJobMissionControl
|
|
13
13
|
{display: 'Actions', value: :action_buttons, orderable: false}
|
14
14
|
]
|
15
15
|
|
16
|
-
ALL_COLUMNS = [
|
17
|
-
{display: 'Class', value: :class_with_link, field: '_type'},
|
18
|
-
{display: 'Description', value: :description, field: 'description'},
|
19
|
-
{display: 'Created', value: :created_at, field: 'created_at'},
|
20
|
-
{display: 'Duration', value: :duration, field: 'duration', orderable: false},
|
21
|
-
{display: 'Actions', value: :action_buttons, orderable: false}
|
22
|
-
]
|
23
|
-
ALL_FIELDS = COMMON_FIELDS + [:run_at].freeze
|
24
|
-
|
25
16
|
COMPLETED_COLUMNS = [
|
26
17
|
{display: 'Class', value: :class_with_link, field: '_type', width: '30%'},
|
27
18
|
{display: 'Description', value: :description, field: 'description', width: '30%'},
|
@@ -43,17 +34,18 @@ module RocketJobMissionControl
|
|
43
34
|
{display: 'Queued For', value: :duration, field: 'duration', orderable: false},
|
44
35
|
{display: 'Actions', value: :action_buttons, orderable: false}
|
45
36
|
]
|
46
|
-
QUEUED_FIELDS = COMMON_FIELDS + [:run_at, :priority].freeze
|
37
|
+
QUEUED_FIELDS = (COMMON_FIELDS + [:run_at, :priority]).freeze
|
47
38
|
|
48
39
|
RUNNING_COLUMNS = [
|
49
40
|
{display: 'Class', value: :class_with_link, field: '_type'},
|
50
41
|
{display: 'Description', value: :description, field: 'description'},
|
51
42
|
{display: 'Progress', value: :progress, field: 'percent_complete', orderable: false},
|
43
|
+
{display: 'Workers', value: :worker_count, field: 'worker_count', orderable: false},
|
52
44
|
{display: 'Priority', value: :priority, field: 'priority'},
|
53
45
|
{display: 'Started', value: :started, field: 'started_at'},
|
54
46
|
{display: 'Actions', value: :action_buttons, orderable: false}
|
55
47
|
]
|
56
|
-
RUNNING_FIELDS = COMMON_FIELDS + [:record_count, :collect_output, :input_categories, :output_categories, :encrypt, :compress, :slice_size, :priority, :sub_state, :percent_complete].freeze
|
48
|
+
RUNNING_FIELDS = (COMMON_FIELDS + [:record_count, :collect_output, :input_categories, :output_categories, :encrypt, :compress, :slice_size, :priority, :sub_state, :percent_complete]).freeze
|
57
49
|
|
58
50
|
SCHEDULED_COLUMNS = [
|
59
51
|
{display: 'Class', value: :class_with_link, field: '_type'},
|
@@ -62,7 +54,16 @@ module RocketJobMissionControl
|
|
62
54
|
{display: 'Cron Schedule', value: :cron_schedule, field: 'cron_schedule'},
|
63
55
|
{display: 'Actions', value: :action_buttons, orderable: false}
|
64
56
|
]
|
65
|
-
SCHEDULED_FIELDS = COMMON_FIELDS + [:run_at, :cron_schedule].freeze
|
57
|
+
SCHEDULED_FIELDS = (COMMON_FIELDS + [:run_at, :cron_schedule]).freeze
|
58
|
+
|
59
|
+
ALL_COLUMNS = [
|
60
|
+
{display: 'Class', value: :class_with_link, field: '_type'},
|
61
|
+
{display: 'Description', value: :description, field: 'description'},
|
62
|
+
{display: 'Created', value: :created_at, field: 'created_at'},
|
63
|
+
{display: 'Duration', value: :duration, field: 'duration', orderable: false},
|
64
|
+
{display: 'Actions', value: :action_buttons, orderable: false}
|
65
|
+
]
|
66
|
+
ALL_FIELDS = (QUEUED_FIELDS + RUNNING_FIELDS + SCHEDULED_FIELDS).uniq.freeze
|
66
67
|
|
67
68
|
def initialize(view, query, columns)
|
68
69
|
@columns = columns
|
@@ -83,7 +84,7 @@ module RocketJobMissionControl
|
|
83
84
|
h[index.to_s] = send(column[:value], job)
|
84
85
|
index += 1
|
85
86
|
end
|
86
|
-
h['DT_RowClass'] = "card callout callout-#{job
|
87
|
+
h['DT_RowClass'] = "card callout callout-#{job_state(job)}"
|
87
88
|
h
|
88
89
|
end
|
89
90
|
|
@@ -91,7 +92,7 @@ module RocketJobMissionControl
|
|
91
92
|
def class_with_link(job)
|
92
93
|
<<-EOS
|
93
94
|
<a class='job-link' href="#{job_path(job.id)}">
|
94
|
-
<i class="
|
95
|
+
<i class="#{job_icon(job)}" style="font-size: 75%" title="#{job_state(job)}"></i>
|
95
96
|
#{job.class.name}
|
96
97
|
</a>
|
97
98
|
EOS
|
@@ -113,6 +114,10 @@ module RocketJobMissionControl
|
|
113
114
|
h(job.priority)
|
114
115
|
end
|
115
116
|
|
117
|
+
def worker_count(job)
|
118
|
+
h(job.worker_count)
|
119
|
+
end
|
120
|
+
|
116
121
|
def started(job)
|
117
122
|
"#{RocketJob.seconds_as_duration(Time.now - (job.started_at || Time.now))} ago" if job.started_at
|
118
123
|
end
|
@@ -23,7 +23,7 @@ module RocketJobMissionControl
|
|
23
23
|
|
24
24
|
def name_with_icon(server)
|
25
25
|
<<-EOS
|
26
|
-
<i class="
|
26
|
+
<i class="#{server_icon(server)}" style="font-size: 75%" title="#{server.state}"></i>
|
27
27
|
#{server.name}
|
28
28
|
EOS
|
29
29
|
end
|
@@ -1,19 +1,20 @@
|
|
1
1
|
module RocketJobMissionControl
|
2
2
|
module ApplicationHelper
|
3
3
|
STATE_ICON_MAP = {
|
4
|
-
aborted: 'fa-stop',
|
5
|
-
completed: 'fa-check',
|
6
|
-
disabled: 'fa-stop',
|
7
|
-
enabled: 'fa-check',
|
8
|
-
failed: 'fa-exclamation-triangle',
|
9
|
-
paused: 'fa-pause',
|
10
|
-
pending: 'fa-inbox',
|
11
|
-
queued: 'fa-inbox',
|
12
|
-
running: 'fa-play',
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
4
|
+
aborted: 'fas fa-stop',
|
5
|
+
completed: 'fas fa-check',
|
6
|
+
disabled: 'fas fa-stop',
|
7
|
+
enabled: 'fas fa-check',
|
8
|
+
failed: 'fas fa-exclamation-triangle',
|
9
|
+
paused: 'fas fa-pause',
|
10
|
+
pending: 'fas fa-inbox',
|
11
|
+
queued: 'fas fa-inbox',
|
12
|
+
running: 'fas fa-play',
|
13
|
+
sleeping: 'fas fa-hourglass',
|
14
|
+
scheduled: 'fas fa-clock',
|
15
|
+
starting: 'fas fa-cogs',
|
16
|
+
stopping: 'fas fa-stop',
|
17
|
+
zombie: 'fas fa-hourglass'
|
17
18
|
}
|
18
19
|
|
19
20
|
def state_icon(state)
|
@@ -43,12 +44,14 @@ module RocketJobMissionControl
|
|
43
44
|
# Returns nil when there are no inclusion values for this attribute.
|
44
45
|
def extract_inclusion_values(klass, attribute)
|
45
46
|
values = nil
|
47
|
+
|
46
48
|
klass.validators_on(attribute).each do |validator|
|
47
49
|
case validator
|
48
50
|
when ActiveModel::Validations::InclusionValidator
|
49
51
|
values = validator.options[:in]
|
50
52
|
end
|
51
53
|
end
|
54
|
+
|
52
55
|
values
|
53
56
|
end
|
54
57
|
|
@@ -67,7 +70,7 @@ module RocketJobMissionControl
|
|
67
70
|
options = extract_inclusion_values(klass, field_name)
|
68
71
|
str = "[#{field.type.name}]\n".html_safe
|
69
72
|
if options
|
70
|
-
str + f.select(field_name, options, {include_blank: options.include?(nil) || include_nil_selectors, selected: value}, {class: 'form-control'})
|
73
|
+
str + f.select(field_name, options, { include_blank: options.include?(nil) || include_nil_selectors, selected: value }, { class: 'selectize form-control' })
|
71
74
|
else
|
72
75
|
if field.type.name == 'Integer'
|
73
76
|
str + f.number_field(field_name, value: value, class: 'form-control', placeholder: placeholder)
|
@@ -81,7 +84,7 @@ module RocketJobMissionControl
|
|
81
84
|
when 'Array'
|
82
85
|
options = Array(value)
|
83
86
|
"[Array]\n".html_safe +
|
84
|
-
f.select(field_name, options_for_select(options, options), {include_hidden: false}, {class: 'selectize', multiple: true})
|
87
|
+
f.select(field_name, options_for_select(options, options), { include_hidden: false }, { class: 'selectize form-control', multiple: true })
|
85
88
|
when 'Mongoid::Boolean'
|
86
89
|
name = "#{field_name}_true".to_sym
|
87
90
|
value = value.to_s
|
@@ -102,6 +105,5 @@ module RocketJobMissionControl
|
|
102
105
|
f.text_field(field_name, value: value, class: 'form-control', placeholder: placeholder)
|
103
106
|
end
|
104
107
|
end
|
105
|
-
|
106
108
|
end
|
107
109
|
end
|
@@ -1,15 +1,20 @@
|
|
1
1
|
module RocketJobMissionControl
|
2
2
|
module JobsHelper
|
3
3
|
def job_icon(job)
|
4
|
-
state =
|
5
|
-
if job.scheduled?
|
6
|
-
:scheduled
|
7
|
-
else
|
8
|
-
job.state
|
9
|
-
end
|
4
|
+
state = job_state(job)
|
10
5
|
state_icon(state)
|
11
6
|
end
|
12
7
|
|
8
|
+
def job_state(job)
|
9
|
+
if job.scheduled?
|
10
|
+
:scheduled
|
11
|
+
elsif job.sleeping?
|
12
|
+
:sleeping
|
13
|
+
else
|
14
|
+
job.state
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
13
18
|
def job_states
|
14
19
|
@job_states ||= RocketJob::Job.aasm.states.map { |state| state.name.to_s }
|
15
20
|
end
|
@@ -1,43 +1,45 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
2
|
<html>
|
3
|
-
<head>
|
4
|
-
|
3
|
+
<head>
|
4
|
+
<title><%= title %></title>
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
<link rel="icon" type="image/png" sizes="16x16" href="<%= image_path('rocket_job_mission_control/favicon-16x16.png') %>">
|
7
|
+
<link rel="icon" type="image/png" sizes="32x32" href="<%= image_path('rocket_job_mission_control/favicon-32x32.png') %>">
|
8
|
+
<link rel="apple-touch-icon" sizes="180x180" href="<%= image_path('rocket_job_mission_control/apple-touch-icon.png') %>">
|
9
|
+
<link rel="mask-icon" href="<%= image_path('rocket_job_mission_control/safari-pinned-tab.svg') %>" color="#5bbad5">
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
<meta content="#da532c" name="msapplication-TileColor">
|
12
|
+
<meta content="#ffffff" name="theme-color">
|
13
|
+
<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'>
|
14
|
+
<meta content='text/javascript' http-equiv='Content-Script-Type'>
|
15
|
+
<meta content='IE=edge' http-equiv='X-UA-Compatible'>
|
16
|
+
<meta content='width=device-width, initial-scale=1' name='viewport'>
|
14
17
|
|
15
|
-
|
16
|
-
<%= javascript_include_tag "rocket_job_mission_control/application" %>
|
18
|
+
<%= yield :meta %>
|
17
19
|
|
18
|
-
|
20
|
+
<%= stylesheet_link_tag 'rocket_job_mission_control/application', media: 'all' %>
|
21
|
+
<%= javascript_include_tag 'rocket_job_mission_control/application' %>
|
19
22
|
|
20
|
-
|
21
|
-
</head>
|
23
|
+
<%= csrf_meta_tag %>
|
24
|
+
</head>
|
22
25
|
|
23
|
-
<body class=
|
24
|
-
<div id=
|
25
|
-
|
26
|
-
|
27
|
-
|
26
|
+
<body class='rocket_job'>
|
27
|
+
<div id='wrapper'>
|
28
|
+
<div class='container-fluid'>
|
29
|
+
<div class='row row-offcanvas row-offcanvas-left'>
|
30
|
+
<%= render partial: 'layouts/rocket_job_mission_control/partials/sidebar' %>
|
28
31
|
|
29
|
-
|
30
|
-
|
32
|
+
<div class='col-sm-10 col-xs-11 white-background' id='main'>
|
33
|
+
<%= render partial: 'layouts/rocket_job_mission_control/partials/header' %>
|
31
34
|
|
32
|
-
|
33
|
-
|
35
|
+
<div id='content'>
|
36
|
+
<%= render partial: 'layouts/rocket_job_mission_control/partials/flash' %>
|
34
37
|
|
35
|
-
|
38
|
+
<%= yield %>
|
39
|
+
</div>
|
40
|
+
</div>
|
36
41
|
</div>
|
37
42
|
</div>
|
38
43
|
</div>
|
39
|
-
</
|
40
|
-
</div>
|
41
|
-
|
42
|
-
</body>
|
44
|
+
</body>
|
43
45
|
</html>
|
@@ -1,12 +1,13 @@
|
|
1
1
|
<% if flash.present? %>
|
2
|
-
<div class=
|
2
|
+
<div class='flash text-center'>
|
3
3
|
<% flash.each do |key, msg| %>
|
4
|
-
<div class=
|
5
|
-
<button class=
|
4
|
+
<div class='alert alert-alert alert-dismissable' role='alert'>
|
5
|
+
<button class='close' data-dismiss='alert'>
|
6
6
|
<span>×</span>
|
7
7
|
</button>
|
8
|
+
|
8
9
|
<% if msg.kind_of? Array %>
|
9
|
-
<ul class=
|
10
|
+
<ul class='list-unstyled margin-bottom-0'>
|
10
11
|
<% msg.each do |m| %>
|
11
12
|
<li><%= m.html_safe %></li>
|
12
13
|
<% end %>
|
@@ -1,44 +1,48 @@
|
|
1
|
-
<nav class=
|
2
|
-
<div class=
|
3
|
-
<div class=
|
4
|
-
<button aria-expanded=
|
5
|
-
<span class=
|
6
|
-
<span class=
|
7
|
-
<span class=
|
8
|
-
<span class=
|
1
|
+
<nav class='navbar navbar-default' id='header'>
|
2
|
+
<div class='container-fluid'>
|
3
|
+
<div class='navbar-header'>
|
4
|
+
<button aria-expanded='false' class='navbar-toggle collapsed' data-target='.navbar-collapse' data-toggle='collapse' type='button'>
|
5
|
+
<span class='sr-only'>Toggle navigation</span>
|
6
|
+
<span class='icon-bar'></span>
|
7
|
+
<span class='icon-bar'></span>
|
8
|
+
<span class='icon-bar'></span>
|
9
9
|
</button>
|
10
|
-
|
10
|
+
|
11
|
+
<a class='navbar-brand brand' href='http://rocketjob.io' target='_blank'>
|
11
12
|
<%= image_tag('rocket_job_mission_control/rocket-icon-64x64.png') %>
|
12
13
|
Rocket Job
|
13
14
|
</a>
|
14
15
|
</div>
|
15
|
-
|
16
|
-
|
16
|
+
|
17
|
+
<div class='navbar-collapse collapse'>
|
18
|
+
<ul class='nav navbar-nav'>
|
17
19
|
<li>
|
18
20
|
<%= link_to running_jobs_path, class: active_page(running_jobs_path) do %>
|
19
|
-
<i class=
|
21
|
+
<i class='fas fa-home'></i> Jobs
|
20
22
|
<% end %>
|
21
23
|
</li>
|
24
|
+
|
22
25
|
<li>
|
23
26
|
<%= link_to servers_path, class: active_page(servers_path) do %>
|
24
|
-
<i class=
|
27
|
+
<i class='fas fa-database'></i> Servers
|
25
28
|
<% end %>
|
26
29
|
</li>
|
30
|
+
|
27
31
|
<li>
|
28
32
|
<%= link_to active_workers_path, class: active_page(active_workers_path) do %>
|
29
|
-
<i class=
|
33
|
+
<i class='fas fa-circle-notch'></i> Workers
|
30
34
|
<% end %>
|
31
35
|
</li>
|
36
|
+
|
32
37
|
<li>
|
33
38
|
<%= link_to enabled_dirmon_entries_path, class: active_page(enabled_dirmon_entries_path) do %>
|
34
|
-
<i class=
|
39
|
+
<i class='fas fa-folder'></i> Directory Monitoring
|
35
40
|
<% end %>
|
36
41
|
</li>
|
37
42
|
</ul>
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
</li>
|
43
|
+
|
44
|
+
<ul class='nav navbar-nav navbar-right'>
|
45
|
+
<li><a href='/'><i class='fas fa-home'></i> Home</a></li>
|
42
46
|
</ul>
|
43
47
|
</div>
|
44
48
|
</div>
|
@@ -1,11 +1,12 @@
|
|
1
|
-
<div class=
|
2
|
-
<ul class=
|
1
|
+
<div class='col-sm-2 col-xs-1 sidebar-offcanvas' id='sidebar'>
|
2
|
+
<ul class='nav'>
|
3
3
|
<li>
|
4
|
-
<a class=
|
5
|
-
<i class=
|
4
|
+
<a class='visible-xs' data-toggle='offcanvas' href='#'>
|
5
|
+
<i class='fas fa-chevron-right'></i>
|
6
6
|
</a>
|
7
7
|
</li>
|
8
8
|
</ul>
|
9
|
+
|
9
10
|
<%= render partial: 'rocket_job_mission_control/jobs/sidebar' if @jobs_sidebar %>
|
10
11
|
<%= render partial: 'rocket_job_mission_control/dirmon_entries/sidebar' if @dirmon_sidebar %>
|
11
12
|
<%= render partial: 'rocket_job_mission_control/servers/sidebar' if @servers_sidebar %>
|
@@ -1,21 +1,25 @@
|
|
1
|
-
<div class=
|
2
|
-
<div class=
|
3
|
-
<div class=
|
4
|
-
<div class=
|
1
|
+
<div class='job-list'>
|
2
|
+
<div class='list'>
|
3
|
+
<div class='row'>
|
4
|
+
<div class='col-sm-10'>
|
5
5
|
<h2>Active Workers</h2>
|
6
|
+
|
6
7
|
<% if @server_name %>
|
7
8
|
<h4><%= " For Server: #{@server_name}" %></h4>
|
8
9
|
<% end %>
|
10
|
+
|
9
11
|
<% if @job %>
|
10
12
|
<h4> For Job: <%= link_to(@job.class.name, job_path(@job)) %> ID:<%= link_to(@job.id, job_path(@job)) %></h4>
|
11
13
|
<% end %>
|
12
14
|
</div>
|
13
|
-
|
14
|
-
|
15
|
-
|
15
|
+
|
16
|
+
<div class='col-sm-2'>
|
17
|
+
<div class='btn btn-default pull-right dt-reload' data-behavior='reload'>
|
18
|
+
<i class='fas fa-sync'></i>
|
16
19
|
</div>
|
17
20
|
</div>
|
18
21
|
</div>
|
22
|
+
|
19
23
|
<table class='table datatable active-workers-datatable' data-source='<%= active_workers_url(format: 'json') %>' style='width: 100%'>
|
20
24
|
<thead>
|
21
25
|
<tr>
|
@@ -25,6 +29,7 @@
|
|
25
29
|
<th>Started</th>
|
26
30
|
</tr>
|
27
31
|
</thead>
|
32
|
+
|
28
33
|
<tbody></tbody>
|
29
34
|
</table>
|
30
35
|
</div>
|
@@ -35,6 +40,6 @@
|
|
35
40
|
new RjmcDatatable(
|
36
41
|
$('.active-workers-datatable'),
|
37
42
|
[{data: '0'}, {data: '1'}, {data: '2'}, {data: '3'}],
|
38
|
-
{ordering: false, searching: false});
|
43
|
+
{ ordering: false, searching: false });
|
39
44
|
});
|
40
45
|
</script>
|