Сортуйте завдання за стовпцем у графіку Ганта
Огляд
Під час візуалізації діаграм Ганта часто корисно відображати завдання в певному порядку - за датою початку, пріоритетності, тривалості або спеціальних полях - а не за їх ідентифікатором завдань за замовчуванням. Aspose.tasks for .net дозволяє застосувати користувацьку логіку сортування перед наданням за допомогою saveoptions.taskcomparer
делегат.
Це дозволяє сортувати завдання за будь -якого стовпця, визначеного у поданні діаграми Ганта, гарантуючи, що остаточний візуальний вихід відповідає звітності або презентаційних потребах.
Aspose.tasks for .NET надає можливість сортувати завдання за будь -яким стовпцем у поданні діаграми Ганта. Це здійснюється за допомогою порівняльного методу SaveOption.TasksComparer перед наданням у графіку Ганта. Порівняльний за замовчуванням сортує завдання за ідентифікатором завдання, якщо не вказано іншого опції.
За замовчуванням проти користувацького сортування завдань
За замовчуванням завдання в проекті виконуються в порядку їх “task.id”. Щоб перекрити цю поведінку, ви можете призначити властивість iComparer <Sack>
`` TassComparer ‘.
Приклади полів, які ви можете сортувати:
Task.name
- алфавітно по іменіTask.start
- хронологічно за датою початкуTask.priority
- за пріоритетом завдання- Спеціальні поля - такі як
text1
,number1
, тощо.
Приклад: сортувати завдання за датою початку
Наступний приклад демонструє, як сортувати завдання за їх властивістю `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
ви можете повністю контролювати порядок завдань на відображеній діаграмі Ганта, забезпечуючи гнучкість для звітності, друку або візуального аналізу.