public ActiveTasksViewModel(TaskData taskData) { if (taskData == null) { throw new ArgumentNullException("taskData"); } base.DisplayName = Properties.Resources.Active_Tasks_DisplayName; base.DisplayImage = "pack://application:,,,/TaskConqueror;Component/Assets/Images/task_list.png"; _taskData = taskData; // Subscribe for notifications of when a new task is saved. _taskData.TaskAdded += this.OnTaskAdded; _taskData.TaskUpdated += this.OnTaskUpdated; _taskData.TaskDeleted += this.OnTaskDeleted; // Populate the AllTasks collection with TaskViewModels. this.ActiveTasks = new ObservableCollection <TaskViewModel>(); this.ActiveTasks.CollectionChanged += this.OnCollectionChanged; GetActiveTasks(); // select the first task TaskViewModel firstTask = ActiveTasks.FirstOrDefault(); if (firstTask != null) { firstTask.IsSelected = true; } }
/// <summary> /// Launches the delete task window. /// </summary> public void DeleteTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); if (selectedTaskVM != null && WPFMessageBox.Show(Properties.Resources.Delete_Confirm, Properties.Resources.Tasks_Delete_Confirm, WPFMessageBoxButtons.YesNo, WPFMessageBoxImage.Question) == WPFMessageBoxResult.Yes) { _taskData.DeleteTask(_taskData.GetTaskByTaskId(selectedTaskVM.TaskId)); selectedTaskVM.Dispose(); } }
/// <summary> /// Deactivates the selected task. /// </summary> public void DeactivateTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); if (selectedTaskVM != null) { selectedTaskVM.IsActive = false; selectedTaskVM.Save(); } }
/// <summary> /// Launches the edit task window. /// </summary> public void EditTask() { TaskView window = new TaskView(); TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); using (var viewModel = new TaskViewModel(_taskData.GetTaskByTaskId(selectedTaskVM.TaskId), _taskData)) { this.ShowWorkspaceAsDialog(window, viewModel); } }
/// <summary> /// Moves the selected task down in order within active task list. /// </summary> public void MoveDownTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); TaskViewModel nextTaskVM = ActiveTasks[ActiveTasks.IndexOf(selectedTaskVM) + 1]; if (selectedTaskVM != null && nextTaskVM != null) { int selectedSortOrder = selectedTaskVM.SortOrder.Value; int nextSortOrder = nextTaskVM.SortOrder.Value; selectedTaskVM.SortOrder = nextSortOrder; selectedTaskVM.Save(); nextTaskVM.SortOrder = selectedSortOrder; nextTaskVM.Save(); } }
/// <summary> /// Moves the selected task up in order within active task list. /// </summary> public void MoveUpTask() { TaskViewModel selectedTaskVM = ActiveTasks.FirstOrDefault(t => t.IsSelected == true); TaskViewModel previousTaskVM = ActiveTasks[ActiveTasks.IndexOf(selectedTaskVM) - 1]; if (selectedTaskVM != null && previousTaskVM != null) { int selectedSortOrder = selectedTaskVM.SortOrder.Value; int previousSortorder = previousTaskVM.SortOrder.Value; selectedTaskVM.SortOrder = previousSortorder; selectedTaskVM.Save(); previousTaskVM.SortOrder = selectedSortOrder; previousTaskVM.Save(); } }
private MessageFromServerToClient HandleFailureReport([NotNull] MessageFromClientToServer req) { var task = ActiveTasks.FirstOrDefault(x => x.Guid == req.TaskGuid); if (task == null) { throw new DistSimException("Invalid guid: " + req.TaskGuid); } task.FinishStatusMessage = req.ClientRequest + " " + req.Message; SaveExecuteHelper.Get().SaveExecuteWithWait(() => ActiveTasks.Remove(task)); SaveExecuteHelper.Get().SaveExecuteWithWait(() => FinishedTasks.Add(task)); _errorLogger.Error(task.OriginalJsonFilePath + " - no output at all at client " + req.ClientName, _threadId); Logger.Error(task.OriginalJsonFilePath + " - no output at all at client " + req.ClientName, _threadId); return(new MessageFromServerToClient(ServerResponseEnum.JobFinishAck, req.TaskGuid)); }
public bool IsTaskActive(Guid id) { return(ActiveTasks.FirstOrDefault(k => k.Id == id) != null); }
private MessageFromServerToClient HandleTaskFinishReport([NotNull] MessageFromClientToServer req) { try { _logger.Info("got a finish report from " + req.ClientName + " for " + req.HouseName, _threadId); ServerExecutionTask set = ActiveTasks.FirstOrDefault(x => x.Guid == req.TaskGuid); if (set == null) { return(new MessageFromServerToClient(ServerResponseEnum.JobFinishAck, req.TaskGuid)); //if it is an old task guid from previous run, just ignore the finish report //throw new DistSimException("No task found for guid " + req.TaskGuid); } set.ExecutionEnd = DateTime.Now; SaveExecuteHelper.Get().SaveExecuteWithWait(() => ActiveTasks.Remove(set)); SaveExecuteHelper.Get().SaveExecuteWithWait(() => { FinishedTasks.Add(set); while (FinishedTasks.Count > 20) { FinishedTasks.RemoveAt(0); } }); set.FinishStatusMessage = req.Message; var resultFileArchiveDirectory = MakeResultFileDirectory(req); DirectoryInfo di = new DirectoryInfo(resultFileArchiveDirectory); if (di.Exists) { _logger.Info("deleting previous results from " + di.FullName, _threadId); SaveDelete(di); Thread.Sleep(250); } di.Create(); _logger.Info("created " + di.FullName, _threadId); bool isFailure = false; if (req.ResultFiles != null) { foreach (var jsonfile in req.ResultFiles) { string directory = Path.Combine(resultFileArchiveDirectory, jsonfile.RelativeDirectory); DirectoryInfo subdir = new DirectoryInfo(directory); if (!subdir.Exists) { subdir.Create(); } string dstPath = Path.Combine(directory, jsonfile.FileName); _logger.Info("writing " + dstPath + "," + "\nresult archive dir: " + resultFileArchiveDirectory + "\n relative dir: " + jsonfile.RelativeDirectory, _threadId); jsonfile.WriteBytesFromJson(dstPath, Logger); if (jsonfile.FileName.ToLower(CultureInfo.InvariantCulture) == "calculationexceptions.txt") { string fileContent = File.ReadAllText(dstPath); _errorLogger.Error(set.OriginalJsonFilePath + " - error during calc " + fileContent, _threadId); _logger.Error(set.OriginalJsonFilePath + " - error during calc " + fileContent, _threadId); isFailure = true; } } } else { _logger.Error("No result files were delivered", _threadId); } ArchiveJsonFile(set, isFailure); var answer = new MessageFromServerToClient(ServerResponseEnum.JobFinishAck, req.TaskGuid); return(answer); } catch (Exception ex) { _logger.Exception(ex, "Error while handling a finish report " + ex.Message); throw; } }