Сортировка задач по столбцу в диаграмме Gantt

Обзор

При рендеринге диаграмм Gantt часто полезно отображать задачи в определенном порядке - по дате начала, приоритета, продолжительности или пользовательским полям, а не по идентификатору задачи по умолчанию. Aspose.tasks для .net позволяет применять пользовательскую логику сортировки перед рендерингом, используя делегат saveptions.taskscomprer.

Это позволяет сортировать задачи по любым столбцом, определенным в представлении диаграммы Гантта, обеспечивая, чтобы конечный визуальный выход был соответствовать потребностям отчетности или презентации.

Aspose.tasks для .net предоставляет возможность сортировать задачи по любому столбцу в представлении диаграммы Гантта. Это достигается с помощью метода сравнения SaveOptions.taskscomparer перед рендерингом в диаграмме Gantt. Сравнитель по умолчанию сортирует задачи по идентификатору задачи, если не указано другая опция.

По умолчанию против пользовательской сортировки задач

По умолчанию задачи в проекте отображаются в порядке их task.id. Чтобы переопределить это поведение, вы можете назначить пользовательское icomparer <sask> свойство taskscomprer.

Примеры полей, которые вы можете захотеть сортировать по:

Пример: Сортировка задач по дате начала

В следующем примере демонстрируется, как сортировать задачи с помощью их свойства «Start», прежде чем привести к изображению.

 1class SortTasksByColumnInGanttChart
 2{
 3    public static void Run()
 4    {
 5        Project project = new Project("New Project.mpp");
 6        SaveOptions options = new PdfSaveOptions();
 7        options.Timescale = Timescale.Months;
 8
 9        options.TasksComparer = new TasksNameComparer();
10        project.Save("SortedByNames_out.pdf", options);
11
12        options.TasksComparer = new TasksDurationComparer();
13        project.Save("SortedByDurations_out.pdf", options);
14    }
15
16    public class TasksNameComparer : IComparer<Task>
17    {
18        public int Compare(Task x, Task y)
19        {
20            return x.Get(Tsk.Name).CompareTo(y.Get(Tsk.Name));
21        }
22    }
23
24    public class TasksDurationComparer : IComparer<Task>
25    {
26        public int Compare(Task x, Task y)
27        {
28            Duration durX = x.Get(Tsk.Duration);
29            Duration durY = y.Get(Tsk.Duration);
30            return durX.TimeSpan.CompareTo(durY.TimeSpan);
31        }
32    }
33}

Custom Comparer Implementation

Below is a simple custom comparer you can plug into SaveOptions.TasksComparer:

1class SortByStartDate : IComparer<Task>
2{
3    public int Compare(Task x, Task y)
4    {
5        return DateTime.Compare(x.Get(Tsk.Start), y.Get(Tsk.Start));
6    }
7}

Assign the comparer:

1var options = new ImageSaveOptions(SaveFileFormat.Png)
2{
3    TasksComparer = new SortByStartDate()
4};
5project.Save("sorted-output.png", options);

Резюме

Используя TasksComparer, вы можете полностью контролировать порядок задач в отображаемой диаграмме Ганта, обеспечивая гибкость для отчетности, печати или визуального анализа.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.