Ordenar tareas por columna en Gantt Chart
Descripción general
Al hacer gráficos Gantt, a menudo es útil mostrar tareas en un orden específico, por fecha de inicio, prioridad, duración o campos personalizados, en lugar de por su ID de tarea predeterminada. Aspose.Tasks para .NET le permite aplicar Lógica de clasificación personalizada Antes de reproducir el delegado SaveAptions.TasksComparer
.
Esto permite clasificar las tareas de cualquier columna definida en la vista del gráfico Gantt, asegurando que la salida visual final se alinee con las necesidades de informes o presentación.
Aspose.Tasks para .NET proporciona la capacidad de ordenar tareas por cualquier columna en la vista del gráfico Gantt. Esto se logra con la ayuda de los métodos comparadores SaveOptions.TasksComparer antes de representar en Gantt Chart. El comparador predeterminado clasifica las tareas por ID de tarea si no se especifica otra opción.
Ordenación de tareas predeterminada vs personalizada
Por defecto, las tareas en un proyecto se representan en el orden de su task.id
. Para anular este comportamiento, puede asignar una propiedad personalizada icomparer <arke>
a la propiedad `tareas comparas ‘.
Ejemplos de campos que desee ordenar:
Task.name
- alfabéticamente por su nombreTask.start
- cronológicamente por fecha de inicio- `Tarea. Prioridad ’ - Por prioridad de la tarea
- Campos personalizados, como
Text1
,Number1
, etc.
Ejemplo: ordene tareas por fecha de inicio
El siguiente ejemplo demuestra cómo clasificar las tareas por su propiedad ‘Start` antes de representar a una imagen.
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);
Summary
Using TasksComparer
, you can fully control how tasks are ordered in the rendered Gantt chart, providing flexibility for reporting, printing, or visual analysis.