123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242 |
- using System;
- using System.Collections.ObjectModel;
- using System.Threading.Tasks;
- using System.Windows;
- using System.Windows.Controls;
- using AIPlatform.Protocol.Entities;
- using AIPlatform.Protocol.Utilities;
- namespace aipdev
- {
- public class TrainTaskEx : TrainTask
- {
- /// <summary>
- /// Gets the task status string.
- /// </summary>
- public string Status { get; private set; }
- public TrainTaskEx(TrainTask task)
- {
- Id = task.Id;
- Name = task.Name;
- Developer = task.Developer;
- Organization = task.Organization;
- ScriptPackage = task.ScriptPackage;
- TrainFolder = task.TrainFolder;
- TestFolder = task.TestFolder;
- StartArgs = task.StartArgs;
- ModelName = task.ModelName;
- }
- public async Task UpdateStatusAsync()
- {
- Status = "未执行";
- var taskStatus = await DeveloperManager.Shared.GetTrainTaskStatusResultAsync(Id);
- if (taskStatus != null)
- {
- if (taskStatus.Assigned)
- {
- switch (taskStatus.Result)
- {
- case TaskResult.Done:
- Status = "已完成";
- break;
- case TaskResult.Canceled:
- Status = "已取消";
- break;
- case TaskResult.Processing:
- Status = "处理中";
- break;
- case TaskResult.Failed:
- Status = "执行失败";
- break;
- case TaskResult.Waiting:
- Status = "等待处理";
- break;
- }
- }
- }
- }
- }
- /// <summary>
- /// Interaction logic for TaskManagement.xaml
- /// </summary>
- public partial class TaskManagement : UserControl, IContentPage
- {
- private readonly ObservableCollection<TrainTaskEx> _tasks = new ObservableCollection<TrainTaskEx>();
- private bool _isOpenTask { get; set; }
- public string PageName { get; set; }
- public bool IsHomePage { get; set; }
- public bool IsModalPage { get; set; }
- public TaskManagement()
- {
- InitializeComponent();
- PageName = "TaskManagement";
- IsHomePage = false;
- IsModalPage = false;
- TaskList.ItemsSource = _tasks;
- ContentManager.VisiblePageChanged += OnVisiblePageChanged;
- }
- private async void OnVisiblePageChanged(object sender, EventArgs e)
- {
- if (_isOpenTask && ContentManager.CurrentVisiblePage.PageName == PageName)
- {
- await LoadTasksAsync();
- _isOpenTask = false;
- }
- }
- public void Close()
- {
- //DoNothing
- }
- private async Task LoadTasksAsync()
- {
- _tasks.Clear();
- ContentManager.ShowLoading();
- try
- {
- var tasks = await DeveloperManager.Shared.GetTrainTasksAsync();
- foreach (var task in tasks)
- {
- var taskEx = new TrainTaskEx(task);
- try
- {
- await taskEx.UpdateStatusAsync();
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"{task.Name}更新失败:{ex.Translate()}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- _tasks.Add(taskEx);
- }
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"加载任务列表失败:{ex.Translate()}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- ContentManager.HideLoading();
- }
- }
- public async void OnShow(object arg)
- {
- await LoadTasksAsync();
- }
- public void OnHide()
- {
- _tasks.Clear();
- }
- private void OnOpenTaskClick(object sender, RoutedEventArgs e)
- {
- var button = (Button)sender;
- var trainTaskEx = (TrainTaskEx)button.DataContext;
- ContentManager.Show("TaskViewer", trainTaskEx);
- _isOpenTask = true;
- }
- private async void OnCreateNewTaskClick(object sender, RoutedEventArgs e)
- {
- var createNewTaskWindow = new CreateNewTaskWindow() { Owner = Application.Current.MainWindow };
- createNewTaskWindow.ShowDialog();
- if (!string.IsNullOrEmpty(createNewTaskWindow.NewTaskName))
- {
- var taskName = createNewTaskWindow.NewTaskName;
- var organization = createNewTaskWindow.Organization;
- var folder = createNewTaskWindow.Folder;
- var testFolder = createNewTaskWindow.TestFolder;
- var scriptPackage = createNewTaskWindow.Package;
- var startArgs = createNewTaskWindow.TaskStartArgs;
- var modelName = createNewTaskWindow.ResultModelName;
- var framework = createNewTaskWindow.TrainScriptPackageFramework;
- ContentManager.ShowLoading();
- try
- {
- var task = await DeveloperManager.Shared.CreateTrainTaskAsync(taskName, organization, folder, testFolder, scriptPackage, framework, startArgs, modelName);
- var taskEx = new TrainTaskEx(task);
- await taskEx.UpdateStatusAsync();
- _tasks.Add(taskEx);
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"创建任务失败:{ex.Translate()}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- ContentManager.HideLoading();
- }
- }
- }
- private async void OnRefreshClick(object sender, RoutedEventArgs e)
- {
- await LoadTasksAsync();
- }
- private async void OnDeleteTaskClick(object sender, RoutedEventArgs e)
- {
- var result = MessageBox.Show(Application.Current.MainWindow, "确定删除此任务吗?", "删除任务", MessageBoxButton.YesNo, MessageBoxImage.Question);
- if (result == MessageBoxResult.Yes)
- {
- var menuItem = (MenuItem)sender;
- var task = (TrainTaskEx)menuItem.DataContext;
- ContentManager.ShowLoading();
- try
- {
- await DeveloperManager.Shared.DeleteTrainTaskAsync(task.Id);
- _tasks.Remove(task);
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"删除任务失败:{ex.Translate()}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- ContentManager.HideLoading();
- }
- }
- }
- private async void OnOpenTaskConflictImageClick(object sender, RoutedEventArgs e)
- {
- try
- {
- ContentManager.ShowLoading();
- var menuItem = (MenuItem)sender;
- var trainTaskEx = (TrainTaskEx)menuItem.DataContext;
- var content = await DeveloperManager.Shared.GetTestResultFromFileAsync(trainTaskEx.Id);
- if (string.IsNullOrEmpty(content))
- {
- MessageBox.Show(Application.Current.MainWindow, $"未找到图像文件或图像文件为空", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
- return;
- }
- ContentManager.Show("TaskConflictImageBrowser", trainTaskEx);
- }
- catch (Exception ex)
- {
- MessageBox.Show(Application.Current.MainWindow, $"查看结果图像失败:{ex.Translate()}", "错误", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- finally
- {
- ContentManager.HideLoading();
- }
- }
- }
- }
|