gush-control 0.1.1 → 0.1.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3171bdb3e43daa544ed8588ee72d2d37481ac667
4
- data.tar.gz: ae5e2f8dc1416749174539fdaf5a6159168cf987
3
+ metadata.gz: 0a589286bf32cc78c297cc5ec41a053dd9a9f97d
4
+ data.tar.gz: 3b524f58cd25e7e5db24aeecce402e4200681d77
5
5
  SHA512:
6
- metadata.gz: 790d8184780fcf8f17ffde0a96375bdaaf948f8c6af70123af7bac17553120855391c1ef92b1cd5149b50457efbe9374809706409121ba8f8dd2960af39bf279
7
- data.tar.gz: 1fb9815f197e66a45621d47630476382efc2557a4ba0b62f28e87687ac5d8ca8eec95439e668d1c18263e958c1af1e06d1f50c9ad4b5882a7e8c2d4e31c4ac2a
6
+ metadata.gz: fdd3ac0e6ad2bb937b37638043ff4580cbd4a54a212ad967a1bd413fd0152467d977439f7d195bcc7f254469df7774c4e830e294a6a4411276c6cbe47b49d3f0
7
+ data.tar.gz: a2d95dec4e0ea270c4a824a37f52008980749e0cab33c5c286e799f800f2bb6b3a27c6afaed236007c5396a19bba90687f4227f9f5ff94f2e1707ae142505ebb
@@ -96,11 +96,13 @@ module Gush
96
96
  @workflow.jobs.each do |job|
97
97
  name = job.class.to_s
98
98
  @jobs << {
99
- name: name,
100
- finished: job.finished?,
101
- running: job.running?,
102
- enqueued: job.enqueued?,
103
- failed: job.failed?
99
+ name: name,
100
+ finished: job.finished?,
101
+ started_at: format_time(job.started_at),
102
+ finished_at: format_time(job.finished_at),
103
+ running: job.running?,
104
+ enqueued: job.enqueued?,
105
+ failed: job.failed?
104
106
  }
105
107
 
106
108
  if job.incoming.empty?
@@ -168,6 +170,10 @@ module Gush
168
170
  Thread.current[:redis] ||= Redis.new(url: settings.client.configuration.redis_url)
169
171
  end
170
172
 
173
+ def format_time(timestamp)
174
+ Time.at(timestamp) if timestamp
175
+ end
176
+
171
177
  def remove_workflow_and_logs(workflow)
172
178
  remove_workflow(workflow)
173
179
  remove_logs(workflow)
@@ -1,6 +1,7 @@
1
1
  window.Gush = new Gush
2
+
2
3
  $(document).ready ->
3
- window.Gush.initialize()
4
+ window.Gush.initialize(jobs)
4
5
  Foundation.global.namespace = ''
5
6
  $(document).foundation()
6
7
 
@@ -38,17 +39,11 @@ $(document).ready ->
38
39
 
39
40
  $(this).on "click", ".jobs-filter dd a", (event) ->
40
41
  event.preventDefault()
41
- filter = $(this).html().toLowerCase()
42
- table = $("table.nodes tbody")
43
-
42
+ filter = $(this).data('filter')
44
43
  $(this).closest('dl').find('dd').removeClass('active')
45
44
  $(this).parent().addClass('active')
45
+ Gush.filterJobs(filter)
46
46
 
47
- table.find("tr").hide()
48
- if filter == "all"
49
- table.find("tr").show()
50
- else
51
- table.find("tr.#{filter}").show()
52
47
 
53
48
  $(this).on "click", "a.remove-completed", (event) ->
54
49
  event.preventDefault()
@@ -3,10 +3,10 @@ class @Gush
3
3
  @workflows = {}
4
4
  @machines = {}
5
5
 
6
- initialize: ->
6
+ initialize: (jobs) ->
7
7
  @registerSockets()
8
8
  @displayCurrentWorkflows()
9
- @displayJobsOverview()
9
+ @displayJobsOverview(jobs)
10
10
 
11
11
  registerSockets: ->
12
12
  @registerWorkersSocket()
@@ -18,11 +18,26 @@ class @Gush
18
18
  ($("table.workflows").data("workflows") || []).each (workflow) =>
19
19
  @_addWorkflow(workflow)
20
20
 
21
- displayJobsOverview: ->
21
+ filterJobs: (filter) ->
22
+ table = $("table.jobs tbody")
23
+
24
+ table.find("tr").hide()
25
+ if filter == "all"
26
+ table.find("tr").show()
27
+ else
28
+ table.find("tr.#{filter}").show()
29
+
30
+ refreshJobList: ->
31
+ filter = $('.jobs-filter dd.active a').data('filter')
32
+ @filterJobs(filter)
33
+
34
+ displayJobsOverview: (jobs) ->
22
35
  if jobs?
36
+ $("table.jobs tbody").html("")
23
37
  jobs.each (job) ->
24
38
  j = new Job(job)
25
39
  $("table.jobs tbody").append(j.render())
40
+ @refreshJobList()
26
41
 
27
42
  registerWorkersSocket: ->
28
43
  workersSocket = new WebSocket(@_socketUrl("subscribe/workers.status"))
@@ -156,6 +171,7 @@ class @Gush
156
171
 
157
172
  _onStatus: (message) =>
158
173
  message = JSON.parse(message.data)
174
+ console.log message
159
175
  switch message.status
160
176
  when "started"
161
177
  @_onJobStart(message)
@@ -168,6 +184,7 @@ class @Gush
168
184
  else
169
185
  console.error("Unkown job status:", message.status, "data: ", message)
170
186
 
187
+
171
188
  _onWorkflowStatusChange: (message) =>
172
189
  message = JSON.parse(message.data)
173
190
  workflow = @workflows[message.workflow_id]
@@ -185,11 +202,9 @@ class @Gush
185
202
 
186
203
  _onJobStart: (message) =>
187
204
  @_updateGraphStatus(message.workflow_id)
188
- @_updateJobStatus(message.job, "Running")
189
205
 
190
206
  _onJobSuccess: (message) =>
191
207
  @_updateGraphStatus(message.workflow_id)
192
- @_updateJobStatus(message.job, "Finished")
193
208
 
194
209
  workflow = @workflows[message.workflow_id]
195
210
  if workflow
@@ -200,7 +215,6 @@ class @Gush
200
215
 
201
216
  _onJobFail: (message) =>
202
217
  @_updateGraphStatus(message.workflow_id)
203
- @_updateJobStatus(message.job, "Failed")
204
218
 
205
219
  workflow = @workflows[message.workflow_id]
206
220
  if workflow
@@ -221,16 +235,14 @@ class @Gush
221
235
  console.log(response)
222
236
  success: (response) =>
223
237
  graph = new Graph("canvas-#{workflow_id}")
238
+ @displayJobsOverview(response.jobs)
224
239
  response.jobs.each (job) ->
225
240
  klasses = switch
226
241
  when job.failed then "status-finished status-failed"
227
242
  when job.finished then "status-finished"
228
- when job.enqueued then "status-running"
243
+ when job.enqueued then "status-enqueued"
229
244
  graph.markNode(job.name, klasses)
230
245
 
231
- _updateJobStatus: (name, status) ->
232
- $(".jobs tbody").find("td:contains('#{name}')").next("td").html(status).parent().removeClass().addClass(status.toLowerCase())
233
-
234
246
  _socketUrl: (path) ->
235
247
  "ws://#{window.location.host}/#{path}"
236
248
 
@@ -33,4 +33,11 @@ class @Job
33
33
  @data.hasOwnProperty("finished")
34
34
 
35
35
  render: ->
36
- Templates.job({name: @data.name, status: @status(), class: @status().toLowerCase()} ) if @isValid()
36
+ if @isValid()
37
+ Templates.job
38
+ name: @data.name
39
+ started_at: @data.started_at
40
+ finished_at: @data.finished_at
41
+ status: @status()
42
+ class: @status().toLowerCase()
43
+
@@ -45,11 +45,6 @@ text {
45
45
  }
46
46
 
47
47
  .node.status-enqueued rect {
48
- stroke: yellow;
49
- fill: yellow;
50
- }
51
-
52
- .node.status-running rect {
53
48
  stroke: lightblue;
54
49
  fill: lightblue;
55
50
  }
@@ -1,5 +1,5 @@
1
1
  module Gush
2
2
  module Control
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
@@ -32,17 +32,15 @@
32
32
  dl.sub-nav.jobs-filter
33
33
  dt Filter:
34
34
  dd.active
35
- a All
35
+ a data-filter="all" All
36
36
  dd
37
- a Waiting
37
+ a data-filter="waiting" Waiting
38
38
  dd
39
- a Enqueued
39
+ a data-filter="enqueued" Enqueued
40
40
  dd
41
- a Running
41
+ a data-filter="failed" Failed
42
42
  dd
43
- a Failed
44
- dd
45
- a Finished
43
+ a data-filter="finished" Finished
46
44
  table.jobs
47
45
  thead
48
46
  th Name
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gush-control
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Krzyzanowski