banter 1.4.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +2 -0
- data/.travis.yml +1 -1
- data/Gemfile +1 -4
- data/README.md +0 -33
- data/Rakefile +0 -28
- data/banter.gemspec +2 -5
- data/lib/banter.rb +1 -1
- data/lib/banter/configuration.rb +2 -4
- data/lib/banter/notifier.rb +16 -0
- data/lib/banter/publisher.rb +1 -1
- data/lib/banter/railtie.rb +0 -4
- data/lib/banter/server/client_queue_listener.rb +4 -37
- data/lib/banter/server/rabbit_mq_subscriber.rb +6 -6
- data/lib/banter/server/subscriber_server.rb +0 -13
- data/lib/banter/version.rb +1 -1
- data/spec/banter/notifier_spec.rb +40 -0
- data/spec/banter/server/client_queue_listener_spec.rb +36 -84
- data/spec/banter/server/rabbitmq_subscriber_spec.rb +14 -10
- data/spec/banter/server/subscriber_server_spec.rb +0 -60
- data/spec/banter/subscriber_spec.rb +0 -81
- data/spec/spec_helper.rb +1 -8
- data/spec/support/test_notifier.rb +17 -0
- metadata +33 -100
- data/.ruby-version +0 -1
- data/lib/banter/web.rb +0 -34
- data/lib/banter/web/application.rb +0 -85
- data/lib/banter/web/helpers.rb +0 -13
- data/lib/banter/web/models/banter_message.rb +0 -124
- data/lib/banter/web/models/banter_worker.rb +0 -72
- data/lib/banter/web/serializers/banter_message_serializer.rb +0 -35
- data/lib/banter/web/serializers/banter_worker_serializer.rb +0 -40
- data/lib/banter/web/serializers/subscriber_serializer.rb +0 -26
- data/spec/banter/web/application_spec.rb +0 -181
- data/spec/banter/web/serializers/banter_message_serializer_spec.rb +0 -42
- data/spec/banter/web/serializers/banter_worker_serializer_spec.rb +0 -44
- data/spec/factories/banter_messages.rb +0 -28
- data/spec/factories/banter_workers.rb +0 -17
- data/spec/mongoid.yml +0 -7
- data/web/assets/javascripts/banter.js +0 -449
- data/web/assets/javascripts/dashboard_app/app.coffee +0 -4
- data/web/assets/javascripts/dashboard_app/controllers/message_controller.coffee +0 -28
- data/web/assets/javascripts/dashboard_app/controllers/messages_controller.coffee +0 -58
- data/web/assets/javascripts/dashboard_app/controllers/subscribers_controller.coffee +0 -25
- data/web/assets/javascripts/dashboard_app/controllers/worker_controller.coffee +0 -30
- data/web/assets/javascripts/dashboard_app/controllers/workers_list_controller.coffee +0 -28
- data/web/assets/javascripts/dashboard_app/routes.coffee +0 -82
- data/web/assets/javascripts/dashboard_app/services/common_methods_service.coffee +0 -6
- data/web/assets/javascripts/dashboard_app/services/message_methods_service.coffee +0 -18
- data/web/assets/javascripts/dashboard_app/services/messages_service.coffee +0 -17
- data/web/assets/javascripts/dashboard_app/services/subscribers_service.coffee +0 -8
- data/web/assets/javascripts/dashboard_app/services/worker_methods_service.coffee +0 -11
- data/web/assets/javascripts/dashboard_app/services/worker_service.coffee +0 -15
- data/web/assets/javascripts/ng-prettyjson.js +0 -15
- data/web/assets/stylesheets/banter.css +0 -78
- data/web/views/_message.haml +0 -74
- data/web/views/_messages.haml +0 -77
- data/web/views/_subscribers.haml +0 -22
- data/web/views/_worker.haml +0 -52
- data/web/views/_workers_list.haml +0 -35
- data/web/views/index.haml +0 -19
- data/web/views/layout.haml +0 -51
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Banter::Web::Serializers::BanterMessageSerializer do
|
4
|
-
describe '#to_hash' do
|
5
|
-
def self.it_should_have_all_the_keys
|
6
|
-
its([:id]) { should eq(banter_message.id.to_s) }
|
7
|
-
its([:subscriber_class]) { should eq(banter_message.subscriber_class) }
|
8
|
-
its([:queue_name]) { should eq(banter_message.queue_name)}
|
9
|
-
its([:subscribed_key]) { should eq(banter_message.subscribed_key)}
|
10
|
-
its([:payload_key]) { should eq(banter_message.payload_key)}
|
11
|
-
its([:context]) { should eq(banter_message.context)}
|
12
|
-
its([:payload_key]) { should eq(banter_message.payload_key)}
|
13
|
-
its([:payload]) { should eq(banter_message.payload)}
|
14
|
-
its([:started_at]) { should eq(banter_message.started_at)}
|
15
|
-
its([:error_message]) { should eq(banter_message.error_message)}
|
16
|
-
its([:worker_id]) { should eq(banter_message.worker_id)}
|
17
|
-
its([:progress_total]) { should eq(banter_message.progress_total)}
|
18
|
-
its([:progress_at]) { should eq(banter_message.progress_at)}
|
19
|
-
its([:progress]) { should eq(banter_message.progress)}
|
20
|
-
end
|
21
|
-
|
22
|
-
subject { Banter::Web::Serializers::BanterMessageSerializer.new(banter_message).to_hash }
|
23
|
-
let(:banter_message) { FactoryGirl.create(:banter_message) }
|
24
|
-
|
25
|
-
context "message is not finished" do
|
26
|
-
it_should_have_all_the_keys
|
27
|
-
its([:done_at]) { should be_nil }
|
28
|
-
end
|
29
|
-
|
30
|
-
context "finished" do
|
31
|
-
let(:banter_message) { FactoryGirl.create(:banter_message, :done) }
|
32
|
-
it_should_have_all_the_keys
|
33
|
-
its([:done_at]) { should_not be_nil }
|
34
|
-
its([:done_at]) { should eq(banter_message.done_at) }
|
35
|
-
end
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
|
42
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Banter::Web::Serializers::BanterWorkerSerializer do
|
4
|
-
describe '#to_hash' do
|
5
|
-
def self.it_should_have_all_the_keys
|
6
|
-
its([:id]) { should eq(worker.id.to_s) }
|
7
|
-
its([:process_name]) { should eq(worker.process_name) }
|
8
|
-
its([:pid]) { should eq(worker.pid) }
|
9
|
-
its([:started_at]) { should eq(worker.started_at) }
|
10
|
-
its([:stopped_at]) { should eq(worker.stopped_at) }
|
11
|
-
its([:worker_classes]) { should eq(Array.wrap(worker.worker_classes)) }
|
12
|
-
its([:hostname]) { should eq(worker.hostname) }
|
13
|
-
its([:job_count]) { should eq(worker.job_count) }
|
14
|
-
its([:success_count]) { should eq(worker.success_count) }
|
15
|
-
its([:failed_count]) { should eq(worker.failed_count) }
|
16
|
-
end
|
17
|
-
|
18
|
-
subject { Banter::Web::Serializers::BanterWorkerSerializer.new(worker).to_hash }
|
19
|
-
let(:worker) { FactoryGirl.create(:banter_worker) }
|
20
|
-
|
21
|
-
context "working" do
|
22
|
-
context "without current message" do
|
23
|
-
it_should_have_all_the_keys
|
24
|
-
its([:stopped_at]) { should be_nil }
|
25
|
-
its([:current_message]) { should be_nil }
|
26
|
-
end
|
27
|
-
|
28
|
-
context 'with current message' do
|
29
|
-
let(:message) { FactoryGirl.create(:banter_message)}
|
30
|
-
let(:worker) { FactoryGirl.create(:banter_worker, current_message: message.attributes)}
|
31
|
-
it_should_have_all_the_keys
|
32
|
-
its([:stopped_at]) { should be_nil }
|
33
|
-
it { expect(subject[:current_message]['id']).to eq(message.attributes['id'])}
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context "finished" do
|
38
|
-
let(:banter_message) { FactoryGirl.create(:banter_message, :stopped) }
|
39
|
-
it_should_have_all_the_keys
|
40
|
-
its([:stopped_at]) { should be_nil }
|
41
|
-
its([:current_message]) { should be_nil }
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :banter_message do
|
3
|
-
queue_name "fuQ"
|
4
|
-
subscribed_key "fu.Q"
|
5
|
-
payload_key "fu.Q.again"
|
6
|
-
payload { { a: 1, b: 2 } }
|
7
|
-
context {{ app: 'banter' }}
|
8
|
-
started_at { Time.now - 2 }
|
9
|
-
status BanterMessage::STATUS_STARTED
|
10
|
-
worker_id { FactoryGirl.create(:banter_worker).id }
|
11
|
-
|
12
|
-
trait :successful do
|
13
|
-
status BanterMessage::STATUS_SUCCESS
|
14
|
-
end
|
15
|
-
|
16
|
-
trait :errored do
|
17
|
-
status BanterMessage::STATUS_ERROR
|
18
|
-
end
|
19
|
-
|
20
|
-
trait :validation_failed do
|
21
|
-
status BanterMessage::STATUS_VALIDATION_FAILED
|
22
|
-
end
|
23
|
-
|
24
|
-
trait :done do
|
25
|
-
done_at { Time.now }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
FactoryGirl.define do
|
2
|
-
factory :banter_worker do
|
3
|
-
process_name "yo whats up"
|
4
|
-
pid 123
|
5
|
-
worker_classes [ 'MyTestSubscriber1', 'MyTestSubscriber2']
|
6
|
-
hostname "example.com"
|
7
|
-
started_at { Time.now }
|
8
|
-
|
9
|
-
trait :stopped do
|
10
|
-
stopped_at { Time.now }
|
11
|
-
end
|
12
|
-
|
13
|
-
trait :with_current_message do
|
14
|
-
current_message { FactoryGirl.create(:banter_message).attributes }
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
data/spec/mongoid.yml
DELETED
@@ -1,449 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license ng-prettyjson - v0.1.2
|
3
|
-
* (c) 2013 Julien VALERY https://github.com/darul75/ng-prettyjson
|
4
|
-
* License: MIT
|
5
|
-
**/
|
6
|
-
angular.module("ngPrettyJson",[]).directive("prettyJson",["ngPrettyJsonFunctions",function(a){"use strict";var b=angular.isDefined;return{restrict:"AE",scope:{json:"=",prettyJson:"="},replace:!0,template:'<div><button ng-click="edit()" ng-show="edition && !editActivated">Edit</button><button ng-click="edit()" ng-show="edition && editActivated">Cancel</button><button ng-click="update()" ng-show="editActivated && parsable">Update</button><pre id="prettyjson"></pre></div>',link:function(c,d,e){var f={},g="prettyjson",h=null;c.editActivated=!1,c.edition=e.edition;// prefer the "json" attribute over the "prettyJson" one.
|
7
|
-
// the value on the scope might not be defined yet, so look at the markup.
|
8
|
-
var i,j=b(e.json)?"json":"prettyJson",k=function(c){return b(c)?d.find("pre").html(a.syntaxHighlight(c)):d.empty()};i=c.$watch(j,function(a){// BACKWARDS COMPATIBILITY:
|
9
|
-
// if newValue is an object, and we find a `json` property,
|
10
|
-
// then stop watching on `exp`.
|
11
|
-
angular.isObject(a)&&b(a.json)?(i(),c.$watch(j+".json",function(a){k(a),f=a},!0)):(k(a),f=a)},!0);var l=function(){try{c.currentValue=JSON.parse(h.getValue()),c.parsable=!0}catch(a){c.parsable=!1}// trigger update
|
12
|
-
c.$apply(function(){})};c.edit=function(){c.editActivated?(h&&(document.getElementById(g).env=null),k(f)):(h=ace.edit(g),h.on("change",l),h.getSession().setMode("ace/mode/json")),c.editActivated=!c.editActivated},c.update=function(){c.$emit("json-updated",c.newValue)}}}}]).factory("ngPrettyJsonFunctions",function(){// cache some regular expressions
|
13
|
-
var a={entities:/((&)|(<)|(>))/g,json:/"(\\u[a-zA-Z0-9]{4}|\\[^u]|[^\\"])*"(\s*:)?|\b(true|false|(null))\b|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g},b=["&","<",">"],c=["number","string","key","boolean","null"],d=function(){var a=arguments.length-2;do a--;while(!arguments[a]);return a},e=function(a){var b;// the final two arguments are the length, and the entire string itself;
|
14
|
-
// we don't care about those.
|
15
|
-
if(arguments.length<7)throw new Error("markup() must be called from String.prototype.replace()");return b=d.apply(null,arguments),'<span class="'+c[b]+'">'+a+"</span>"},f=function(){var a;if(arguments.length<5)throw new Error("makeEntities() must be called from String.prototype.replace()");return a=d.apply(null,arguments),b[a-2]},g=function(b){return angular.isString(b)||(b=JSON.stringify(b,null,2)),angular.isDefined(b)?b.replace(a.entities,f).replace(a.json,e):void 0};return{syntaxHighlight:g,makeEntities:f,markup:e,rx:a}});
|
16
|
-
(function() {
|
17
|
-
window.Banter || (window.Banter = {});
|
18
|
-
|
19
|
-
angular.module('dashboardApp', ['angularMoment', 'ngRoute', 'ngPrettyJson']);
|
20
|
-
|
21
|
-
angular.module('dashboardApp').constant('rootPath', Banter.rootPath);
|
22
|
-
|
23
|
-
}).call(this);
|
24
|
-
(function() {
|
25
|
-
angular.module('dashboardApp').controller('messageController', function($scope, $rootScope, $http, $routeParams, $timeout, message, messagesService, commonMethodsService, messageMethodsService) {
|
26
|
-
var autoUpdate;
|
27
|
-
commonMethodsService.setup($scope);
|
28
|
-
messageMethodsService.setup($scope);
|
29
|
-
$scope.message = message;
|
30
|
-
$rootScope.$on('start-messageController', function() {
|
31
|
-
if (autoUpdate) {
|
32
|
-
return $scope.resumeUpdating();
|
33
|
-
}
|
34
|
-
});
|
35
|
-
$rootScope.$on('stop-messageController', function() {
|
36
|
-
return $scope.pauseUpdating();
|
37
|
-
});
|
38
|
-
$scope.updateMessage = function() {
|
39
|
-
if (autoUpdate) {
|
40
|
-
messagesService.getMessage($scope.message.id).success(function(response) {
|
41
|
-
return $scope.message = response.message;
|
42
|
-
});
|
43
|
-
return $scope.resumeUpdating();
|
44
|
-
}
|
45
|
-
};
|
46
|
-
$scope.pauseUpdating = function() {
|
47
|
-
var autoUpdate;
|
48
|
-
return autoUpdate = false;
|
49
|
-
};
|
50
|
-
$scope.resumeUpdating = function() {
|
51
|
-
var autoUpdate;
|
52
|
-
autoUpdate = true;
|
53
|
-
return $timeout($scope.updateMessage, 5000);
|
54
|
-
};
|
55
|
-
autoUpdate = $scope.isMessageExecuting();
|
56
|
-
if ($scope.isMessageExecuting()) {
|
57
|
-
$scope.resumeUpdating();
|
58
|
-
}
|
59
|
-
});
|
60
|
-
|
61
|
-
}).call(this);
|
62
|
-
(function() {
|
63
|
-
angular.module('dashboardApp').controller('messagesController', function($scope, $rootScope, $http, $routeParams, $timeout, messages, messagesService, workersService, commonMethodsService, messageMethodsService, workerMethodsService) {
|
64
|
-
var autoUpdate, fetchMessages, workerId;
|
65
|
-
commonMethodsService.setup($scope);
|
66
|
-
messageMethodsService.setup($scope);
|
67
|
-
workerMethodsService.setup($scope);
|
68
|
-
$scope.messages = messages;
|
69
|
-
$scope.page = 1;
|
70
|
-
$scope.worker = null;
|
71
|
-
workerId = $routeParams.worker_id;
|
72
|
-
$scope.subscriber = $routeParams.subscriber;
|
73
|
-
autoUpdate = true;
|
74
|
-
if (workerId) {
|
75
|
-
workersService.getWorker(workerId).success(function(response) {
|
76
|
-
return $scope.worker = response.worker;
|
77
|
-
});
|
78
|
-
}
|
79
|
-
fetchMessages = function() {
|
80
|
-
return messagesService.getMessages($scope.page, workerId, $scope.subscriber).success(function(response) {
|
81
|
-
$scope.messages = response.messages;
|
82
|
-
return $scope.worker = response.worker;
|
83
|
-
});
|
84
|
-
};
|
85
|
-
$rootScope.$on('start-messagesController', function() {
|
86
|
-
return $scope.resumeUpdating();
|
87
|
-
});
|
88
|
-
$rootScope.$on('stop-messagesController', function() {
|
89
|
-
return $scope.pauseUpdating();
|
90
|
-
});
|
91
|
-
$scope.updateMessages = function(resumeUpdate) {
|
92
|
-
if (resumeUpdate == null) {
|
93
|
-
resumeUpdate = true;
|
94
|
-
}
|
95
|
-
if (autoUpdate) {
|
96
|
-
fetchMessages();
|
97
|
-
return $scope.resumeUpdating();
|
98
|
-
}
|
99
|
-
};
|
100
|
-
$scope.pauseUpdating = function() {
|
101
|
-
return autoUpdate = false;
|
102
|
-
};
|
103
|
-
$scope.resumeUpdating = function() {
|
104
|
-
autoUpdate = true;
|
105
|
-
return $timeout($scope.updateMessages, 5000);
|
106
|
-
};
|
107
|
-
if (autoUpdate) {
|
108
|
-
$scope.resumeUpdating();
|
109
|
-
}
|
110
|
-
$scope.isAutoUpdating = function() {
|
111
|
-
return autoUpdate;
|
112
|
-
};
|
113
|
-
$scope.getNextPage = function() {
|
114
|
-
$scope.page += 1;
|
115
|
-
return fetchMessages();
|
116
|
-
};
|
117
|
-
$scope.getPreviousPage = function() {
|
118
|
-
$scope.page -= 1;
|
119
|
-
if ($scope.page < 1) {
|
120
|
-
$scope.page = 1;
|
121
|
-
}
|
122
|
-
return fetchMessages();
|
123
|
-
};
|
124
|
-
$scope.getFirstPage = function() {
|
125
|
-
$scope.page = 1;
|
126
|
-
return fetchMessages();
|
127
|
-
};
|
128
|
-
});
|
129
|
-
|
130
|
-
}).call(this);
|
131
|
-
(function() {
|
132
|
-
angular.module('dashboardApp').controller('subscribersController', function($scope, $rootScope, subscribers, $timeout, subscribersService) {
|
133
|
-
var autoUpdate;
|
134
|
-
$scope.subscribers = subscribers;
|
135
|
-
$rootScope.$on('start-subscribersController', function() {
|
136
|
-
if (autoUpdate) {
|
137
|
-
return $scope.resumeUpdating();
|
138
|
-
}
|
139
|
-
});
|
140
|
-
$rootScope.$on('stop-subscribersController', function() {
|
141
|
-
return $scope.pauseUpdating();
|
142
|
-
});
|
143
|
-
$scope.updateSubscribers = function() {
|
144
|
-
if (autoUpdate) {
|
145
|
-
subscribersService.getIndex().success(function(response) {
|
146
|
-
return $scope.subscribers = response.subscribers;
|
147
|
-
});
|
148
|
-
return $scope.resumeUpdating();
|
149
|
-
}
|
150
|
-
};
|
151
|
-
$scope.pauseUpdating = function() {
|
152
|
-
var autoUpdate;
|
153
|
-
return autoUpdate = false;
|
154
|
-
};
|
155
|
-
$scope.resumeUpdating = function() {
|
156
|
-
var autoUpdate;
|
157
|
-
autoUpdate = true;
|
158
|
-
return $timeout($scope.updateSubscribers, 10000);
|
159
|
-
};
|
160
|
-
autoUpdate = true;
|
161
|
-
$scope.resumeUpdating();
|
162
|
-
});
|
163
|
-
|
164
|
-
}).call(this);
|
165
|
-
(function() {
|
166
|
-
angular.module('dashboardApp').controller('workerController', function($scope, $rootScope, $http, $routeParams, $timeout, worker, workersService, commonMethodsService, workerMethodsService) {
|
167
|
-
var autoUpdate;
|
168
|
-
commonMethodsService.setup($scope);
|
169
|
-
workerMethodsService.setup($scope);
|
170
|
-
$scope.worker = worker;
|
171
|
-
autoUpdate = false;
|
172
|
-
$rootScope.$on('start-workerController', function() {
|
173
|
-
if (autoUpdate) {
|
174
|
-
return $scope.resumeUpdating();
|
175
|
-
}
|
176
|
-
});
|
177
|
-
$rootScope.$on('stop-workerController', function() {
|
178
|
-
return $scope.pauseUpdating();
|
179
|
-
});
|
180
|
-
$scope.updateWorker = function() {
|
181
|
-
if (autoUpdate) {
|
182
|
-
workersService.getWorker(worker.id).success(function(response) {
|
183
|
-
return $scope.worker = response.worker;
|
184
|
-
});
|
185
|
-
return $scope.resumeUpdating();
|
186
|
-
}
|
187
|
-
};
|
188
|
-
$scope.pauseUpdating = function() {
|
189
|
-
return autoUpdate = false;
|
190
|
-
};
|
191
|
-
$scope.resumeUpdating = function() {
|
192
|
-
autoUpdate = true;
|
193
|
-
return $timeout($scope.updateWorker, 5000);
|
194
|
-
};
|
195
|
-
autoUpdate = $scope.isWorkerAlive($scope.worker);
|
196
|
-
if ($scope.isWorkerAlive($scope.worker)) {
|
197
|
-
$scope.resumeUpdating();
|
198
|
-
}
|
199
|
-
});
|
200
|
-
|
201
|
-
}).call(this);
|
202
|
-
(function() {
|
203
|
-
angular.module('dashboardApp').controller('workersListController', function($scope, $rootScope, $timeout, $http, workers, rootPath, workersService, commonMethodsService) {
|
204
|
-
var autoUpdate;
|
205
|
-
commonMethodsService.setup($scope);
|
206
|
-
$scope.workers = workers;
|
207
|
-
autoUpdate = true;
|
208
|
-
$rootScope.$on('start-workersListController', function() {
|
209
|
-
return $scope.resumeUpdating();
|
210
|
-
});
|
211
|
-
$rootScope.$on('stop-workersListController', function() {
|
212
|
-
return $scope.pauseUpdating();
|
213
|
-
});
|
214
|
-
$scope.updateWorkers = function() {
|
215
|
-
if (autoUpdate) {
|
216
|
-
workersService.getCurrentList().success(function(response) {
|
217
|
-
return $scope.workers = response.workers;
|
218
|
-
});
|
219
|
-
return $scope.resumeUpdating();
|
220
|
-
}
|
221
|
-
};
|
222
|
-
$scope.pauseUpdating = function() {
|
223
|
-
return autoUpdate = false;
|
224
|
-
};
|
225
|
-
$scope.resumeUpdating = function() {
|
226
|
-
autoUpdate = true;
|
227
|
-
return $timeout($scope.updateWorkers, 5000);
|
228
|
-
};
|
229
|
-
$scope.resumeUpdating();
|
230
|
-
});
|
231
|
-
|
232
|
-
}).call(this);
|
233
|
-
(function() {
|
234
|
-
angular.module('dashboardApp').config([
|
235
|
-
'$routeProvider', '$locationProvider', function($routeProvider, $locationProvider, workersService, messagesService) {
|
236
|
-
var messageResolver, messagesResolver, subscribersResolver, workerResolver, workersResolver;
|
237
|
-
messagesResolver = function($q, messagesService, $route) {
|
238
|
-
var deferred, subscriber, workerId;
|
239
|
-
deferred = $q.defer();
|
240
|
-
workerId = $route.current.params.worker_id;
|
241
|
-
subscriber = $route.current.params.subscriber;
|
242
|
-
messagesService.getMessages(1, workerId, subscriber).success(function(response) {
|
243
|
-
return deferred.resolve(response.messages);
|
244
|
-
});
|
245
|
-
return deferred.promise;
|
246
|
-
};
|
247
|
-
messageResolver = function($q, messagesService, $route) {
|
248
|
-
var deferred;
|
249
|
-
deferred = $q.defer();
|
250
|
-
messagesService.getMessage($route.current.params.message_id).success(function(response) {
|
251
|
-
return deferred.resolve(response.message);
|
252
|
-
});
|
253
|
-
return deferred.promise;
|
254
|
-
};
|
255
|
-
workerResolver = function($q, $route, workersService) {
|
256
|
-
var deferred;
|
257
|
-
deferred = $q.defer();
|
258
|
-
workersService.getWorker($route.current.params.worker_id).success(function(response) {
|
259
|
-
return deferred.resolve(response.worker);
|
260
|
-
});
|
261
|
-
return deferred.promise;
|
262
|
-
};
|
263
|
-
workersResolver = function($q, workersService) {
|
264
|
-
var deferred;
|
265
|
-
deferred = $q.defer();
|
266
|
-
workersService.getCurrentList().success(function(response) {
|
267
|
-
return deferred.resolve(response.workers);
|
268
|
-
});
|
269
|
-
return deferred.promise;
|
270
|
-
};
|
271
|
-
subscribersResolver = function($q, subscribersService) {
|
272
|
-
var deferred;
|
273
|
-
deferred = $q.defer();
|
274
|
-
subscribersService.getIndex().success(function(response) {
|
275
|
-
return deferred.resolve(response.subscribers);
|
276
|
-
});
|
277
|
-
return deferred.promise;
|
278
|
-
};
|
279
|
-
$routeProvider.when("/", {
|
280
|
-
templateUrl: 'banter/workers-list.html',
|
281
|
-
controller: 'workersListController',
|
282
|
-
resolve: {
|
283
|
-
workers: workersResolver
|
284
|
-
}
|
285
|
-
}).when("/workers/:worker_id", {
|
286
|
-
templateUrl: 'banter/worker.html',
|
287
|
-
controller: 'workerController',
|
288
|
-
resolve: {
|
289
|
-
worker: workerResolver
|
290
|
-
}
|
291
|
-
}).when("/workers/:worker_id/messages", {
|
292
|
-
templateUrl: 'banter/messages.html',
|
293
|
-
controller: 'messagesController',
|
294
|
-
resolve: {
|
295
|
-
messages: messagesResolver
|
296
|
-
}
|
297
|
-
}).when("/subscribers/:subscriber/messages", {
|
298
|
-
templateUrl: 'banter/messages.html',
|
299
|
-
controller: 'messagesController',
|
300
|
-
resolve: {
|
301
|
-
messages: messagesResolver
|
302
|
-
}
|
303
|
-
}).when("/messages/:message_id", {
|
304
|
-
templateUrl: 'banter/message.html',
|
305
|
-
controller: 'messageController',
|
306
|
-
resolve: {
|
307
|
-
message: messageResolver
|
308
|
-
}
|
309
|
-
}).when("/messages", {
|
310
|
-
templateUrl: 'banter/messages.html',
|
311
|
-
controller: 'messagesController',
|
312
|
-
resolve: {
|
313
|
-
messages: messagesResolver
|
314
|
-
}
|
315
|
-
}).when("/subscribers", {
|
316
|
-
templateUrl: 'banter/subscribers.html',
|
317
|
-
controller: 'subscribersController',
|
318
|
-
resolve: {
|
319
|
-
subscribers: subscribersResolver
|
320
|
-
}
|
321
|
-
}).otherwise({
|
322
|
-
redirectTo: "/"
|
323
|
-
});
|
324
|
-
return $locationProvider.html5Mode(true);
|
325
|
-
}
|
326
|
-
]);
|
327
|
-
|
328
|
-
angular.module('dashboardApp').run([
|
329
|
-
'$rootScope', '$route', '$location', function($rootScope, $route, $location) {
|
330
|
-
return $rootScope.$on('$routeChangeStart', function(event, next, current) {
|
331
|
-
var _ref, _ref1;
|
332
|
-
if ((_ref = next.$$route) != null ? _ref.controller : void 0) {
|
333
|
-
$rootScope.$broadcast("start-" + next.$$route.controller);
|
334
|
-
}
|
335
|
-
if (current != null ? (_ref1 = current.$$route) != null ? _ref1.controller : void 0 : void 0) {
|
336
|
-
return $rootScope.$broadcast("stop-" + current.$$route.controller);
|
337
|
-
}
|
338
|
-
});
|
339
|
-
}
|
340
|
-
]);
|
341
|
-
|
342
|
-
}).call(this);
|
343
|
-
(function() {
|
344
|
-
angular.module('dashboardApp').service('commonMethodsService', [
|
345
|
-
function() {
|
346
|
-
this.setup = function(scope) {
|
347
|
-
return scope.asTime = function(time) {
|
348
|
-
return new Date(time);
|
349
|
-
};
|
350
|
-
};
|
351
|
-
}
|
352
|
-
]);
|
353
|
-
|
354
|
-
}).call(this);
|
355
|
-
(function() {
|
356
|
-
angular.module('dashboardApp').service('messageMethodsService', [
|
357
|
-
function() {
|
358
|
-
this.setup = function(scope) {
|
359
|
-
scope.isMessageFailed = function(message) {
|
360
|
-
return message.status === 'failed' || message.status === 'validation_failed';
|
361
|
-
};
|
362
|
-
scope.timeElapsed = function(message) {
|
363
|
-
if (!message.done_at) {
|
364
|
-
return 0;
|
365
|
-
}
|
366
|
-
return scope.asTime(message.done_at) - scope.asTime(message.started_at);
|
367
|
-
};
|
368
|
-
scope.isMessageExecuting = function(message) {
|
369
|
-
return scope.message.status === 'started';
|
370
|
-
};
|
371
|
-
return scope.isMessageSuccessful = function(message) {
|
372
|
-
return scope.message.status === 'success';
|
373
|
-
};
|
374
|
-
};
|
375
|
-
}
|
376
|
-
]);
|
377
|
-
|
378
|
-
}).call(this);
|
379
|
-
(function() {
|
380
|
-
angular.module('dashboardApp').service('messagesService', [
|
381
|
-
'$http', function($http) {
|
382
|
-
this.getMessages = function(page, workerId, subscriber) {
|
383
|
-
return $http({
|
384
|
-
method: 'get',
|
385
|
-
url: Banter.rootPath + "messages.json",
|
386
|
-
params: {
|
387
|
-
page: page,
|
388
|
-
worker_id: workerId,
|
389
|
-
subscriber: subscriber
|
390
|
-
}
|
391
|
-
});
|
392
|
-
};
|
393
|
-
this.getMessage = function(messageId) {
|
394
|
-
return $http({
|
395
|
-
method: 'get',
|
396
|
-
url: Banter.rootPath + ("messages/" + messageId + ".json")
|
397
|
-
});
|
398
|
-
};
|
399
|
-
}
|
400
|
-
]);
|
401
|
-
|
402
|
-
}).call(this);
|
403
|
-
(function() {
|
404
|
-
angular.module('dashboardApp').service('subscribersService', [
|
405
|
-
'$http', function($http) {
|
406
|
-
this.getIndex = function() {
|
407
|
-
return $http({
|
408
|
-
method: 'get',
|
409
|
-
url: Banter.rootPath + "subscribers.json"
|
410
|
-
});
|
411
|
-
};
|
412
|
-
}
|
413
|
-
]);
|
414
|
-
|
415
|
-
}).call(this);
|
416
|
-
(function() {
|
417
|
-
angular.module('dashboardApp').service('workerMethodsService', [
|
418
|
-
function() {
|
419
|
-
this.setup = function(scope) {
|
420
|
-
scope.isWorkerExecuting = function(worker) {
|
421
|
-
return worker != null ? worker.current_message : void 0;
|
422
|
-
};
|
423
|
-
return scope.isWorkerAlive = function(worker) {
|
424
|
-
return !(worker != null ? worker.stopped_at : void 0);
|
425
|
-
};
|
426
|
-
};
|
427
|
-
}
|
428
|
-
]);
|
429
|
-
|
430
|
-
}).call(this);
|
431
|
-
(function() {
|
432
|
-
angular.module('dashboardApp').service('workersService', [
|
433
|
-
'$http', function($http) {
|
434
|
-
this.getCurrentList = function() {
|
435
|
-
return $http({
|
436
|
-
method: 'get',
|
437
|
-
url: Banter.rootPath + "workers.json"
|
438
|
-
});
|
439
|
-
};
|
440
|
-
this.getWorker = function(workerId) {
|
441
|
-
return $http({
|
442
|
-
method: 'get',
|
443
|
-
url: "" + Banter.rootPath + "workers/" + workerId + ".json"
|
444
|
-
});
|
445
|
-
};
|
446
|
-
}
|
447
|
-
]);
|
448
|
-
|
449
|
-
}).call(this);
|