mirror of
https://github.com/ansible/awx.git
synced 2026-03-11 06:29:31 -02:30
add message service
This commit is contained in:
@@ -8,6 +8,7 @@ import RenderService from '~features/output/render.service';
|
|||||||
import ScrollService from '~features/output/scroll.service';
|
import ScrollService from '~features/output/scroll.service';
|
||||||
import EngineService from '~features/output/engine.service';
|
import EngineService from '~features/output/engine.service';
|
||||||
import StatusService from '~features/output/status.service';
|
import StatusService from '~features/output/status.service';
|
||||||
|
import MessageService from '~features/output/message.service';
|
||||||
import LegacyRedirect from '~features/output/legacy.route';
|
import LegacyRedirect from '~features/output/legacy.route';
|
||||||
|
|
||||||
import DetailsDirective from '~features/output/details.directive';
|
import DetailsDirective from '~features/output/details.directive';
|
||||||
@@ -221,6 +222,7 @@ angular
|
|||||||
.service('JobRenderService', RenderService)
|
.service('JobRenderService', RenderService)
|
||||||
.service('JobEventEngine', EngineService)
|
.service('JobEventEngine', EngineService)
|
||||||
.service('JobStatusService', StatusService)
|
.service('JobStatusService', StatusService)
|
||||||
|
.service('JobMessageService', MessageService)
|
||||||
.directive('atJobDetails', DetailsDirective)
|
.directive('atJobDetails', DetailsDirective)
|
||||||
.directive('atJobSearch', SearchDirective)
|
.directive('atJobSearch', SearchDirective)
|
||||||
.directive('atJobStats', StatsDirective)
|
.directive('atJobStats', StatsDirective)
|
||||||
|
|||||||
41
awx/ui/client/features/output/message.service.js
Normal file
41
awx/ui/client/features/output/message.service.js
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
function MessageService () {
|
||||||
|
const listeners = {};
|
||||||
|
const registry = {};
|
||||||
|
|
||||||
|
this.subscribe = (key, listener) => {
|
||||||
|
registry[key] = registry[key] || 0;
|
||||||
|
|
||||||
|
listeners[key] = listeners[key] || {};
|
||||||
|
listeners[key][registry[key]] = listener;
|
||||||
|
|
||||||
|
const unsubscribe = this.createCallback(key, registry[key]);
|
||||||
|
|
||||||
|
registry[key]++;
|
||||||
|
|
||||||
|
return unsubscribe;
|
||||||
|
};
|
||||||
|
|
||||||
|
this.dispatch = (key, data) => {
|
||||||
|
if (!listeners[key]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const indices = Object.keys(listeners[key]);
|
||||||
|
|
||||||
|
for (let i = 0; i < indices.length; i++) {
|
||||||
|
listeners[key][indices[i]](data);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
this.createCallback = (key, index) => {
|
||||||
|
const callback = () => {
|
||||||
|
if (listeners[key]) {
|
||||||
|
delete listeners[key][index];
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return callback;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export default MessageService;
|
||||||
Reference in New Issue
Block a user