]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/pybind/mgr/dashboard/frontend/src/app/shared/services/task-manager.service.ts
import 15.2.5
[ceph.git] / ceph / src / pybind / mgr / dashboard / frontend / src / app / shared / services / task-manager.service.ts
index 5bbe9810221245b10fa1c2d1dcab96a44c333733..7e99e5aad9000327797b76912b354ab68394d38d 100644 (file)
@@ -5,7 +5,6 @@ import * as _ from 'lodash';
 import { ExecutingTask } from '../models/executing-task';
 import { FinishedTask } from '../models/finished-task';
 import { Task } from '../models/task';
-import { ServicesModule } from './services.module';
 import { SummaryService } from './summary.service';
 
 class TaskSubscription {
@@ -13,7 +12,7 @@ class TaskSubscription {
   metadata: object;
   onTaskFinished: (finishedTask: FinishedTask) => any;
 
-  constructor(name, metadata, onTaskFinished) {
+  constructor(name: string, metadata: object, onTaskFinished: any) {
     this.name = name;
     this.metadata = metadata;
     this.onTaskFinished = onTaskFinished;
@@ -21,18 +20,15 @@ class TaskSubscription {
 }
 
 @Injectable({
-  providedIn: ServicesModule
+  providedIn: 'root'
 })
 export class TaskManagerService {
   subscriptions: Array<TaskSubscription> = [];
 
-  constructor(summaryService: SummaryService) {
-    summaryService.subscribe((data: any) => {
-      if (!data) {
-        return;
-      }
-      const executingTasks = data.executing_tasks;
-      const finishedTasks = data.finished_tasks;
+  init(summaryService: SummaryService) {
+    return summaryService.subscribe((summary) => {
+      const executingTasks = summary.executing_tasks;
+      const finishedTasks = summary.finished_tasks;
       const newSubscriptions: Array<TaskSubscription> = [];
       for (const subscription of this.subscriptions) {
         const finishedTask = <FinishedTask>this._getTask(subscription, finishedTasks);
@@ -48,11 +44,11 @@ export class TaskManagerService {
     });
   }
 
-  subscribe(name, metadata, onTaskFinished: (finishedTask: FinishedTask) => any) {
+  subscribe(name: string, metadata: object, onTaskFinished: (finishedTask: FinishedTask) => any) {
     this.subscriptions.push(new TaskSubscription(name, metadata, onTaskFinished));
   }
 
-  _getTask(subscription: TaskSubscription, tasks: Array<Task>): Task {
+  private _getTask(subscription: TaskSubscription, tasks: Array<Task>): Task {
     for (const task of tasks) {
       if (task.name === subscription.name && _.isEqual(task.metadata, subscription.metadata)) {
         return task;