Сортуйте завдання за стовпцем у графіку Ганта

Огляд

Під час візуалізації діаграм Ганта часто корисно відображати завдання в певному порядку - за датою початку, пріоритетності, тривалості або спеціальних полях - а не за їх ідентифікатором завдань за замовчуванням. Aspose.tasks for .net дозволяє застосувати користувацьку логіку сортування перед наданням за допомогою saveoptions.taskcomparer делегат.

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

Aspose.tasks for .NET надає можливість сортувати завдання за будь -яким стовпцем у поданні діаграми Ганта. Це здійснюється за допомогою порівняльного методу SaveOption.TasksComparer перед наданням у графіку Ганта. Порівняльний за замовчуванням сортує завдання за ідентифікатором завдання, якщо не вказано іншого опції.

За замовчуванням проти користувацького сортування завдань

За замовчуванням завдання в проекті виконуються в порядку їх “task.id”. Щоб перекрити цю поведінку, ви можете призначити властивість iComparer <Sack> `` TassComparer ‘.

Приклади полів, які ви можете сортувати:

Приклад: сортувати завдання за датою початку

Наступний приклад демонструє, як сортувати завдання за їх властивістю `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.