using HeuristicLab.Clients.Hive.WebJobManager.Services; using HeuristicLab.Optimization; using Microsoft.AspNet.SignalR; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace HeuristicLab.Clients.Hive.WebJobManager { public class ProgressHub : Hub { private RefreshableJob Job; public void HandleMessage(string receivedString) { Clients.All.processMessage("Connection Established"); Job = FileOpeningService.Instance.Job; Job.Progress.StatusChanged += runHub; } public void ChangeName(string name) { FileOpeningService.Instance.Job.Job.Name = name; } public void ToggleChild(int[][] arr) { Job = FileOpeningService.Instance.Job; HiveTask current = Job.HiveTasks.ToList()[0]; // IOptimizer current = Job.HiveTasks.ToArray() ; for (var i = 0; i < arr.Length; i++) { if(i == arr.Length - 1) { current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel = !current.ChildHiveTasks[arr[i][1]].ItemTask.ComputeInParallel; } else current = current.ChildHiveTasks[arr[i][0]]; } } public void runHub(object sender, EventArgs e) { int value = 0; switch (Job.Progress.Status) { case "Connecting to server...": value = 0; break; case "Uploading Job...": value = 10; break; case "Uploading plugins...": value = 30; break; case "Uploading tasks...": value = 50; break; case "Upload finished": value = 100; break; default: value = (int)(50 + (40 * Job.Progress.ProgressValue));//steps break; } Clients.All.processMessage(Job.Progress.Status, value); } } }