Hello, Progress Telerik adminitrators.
Our team was going to apply Gantt Chart by Winform, but we have to change for this reason.
REF ) http://www.telerik.com/forums/show-multiple-tasks-on-one-line-in-gantt-view
Therefore, I am looking forward to apply Telerik WPF GanttView in our team project.
So, We tested Telerik WPF GanttView several ways.
I want to know, Are our tests doing right?
Supported : 1. Timeline in milliseconds (0.001s)
Supported : 2. Hierarchy structure + Multiple task in a line
Supported : 3. When clicking a task, show Guideline (start time, end time) / Not tasks, only one task
Supported : 4. Rearrange task (sort fast start time first etc..)
Not Supported : 1. Zoom-In Zoom-Out by [Ctrl + MouseWheel] Horizontal axis / [Shift + MouseWheel] Vertical axis
But We have a big problem, WPF is too slow in our test Project.
We made 20000 sample start time&end time data.(1 line - 10000 task).
but it is too slow to render to the screen (almost 3 minutes above)
How to make it faster? If you need our test project,
I will send you an email. if you tell me leave your e-mail address.
Regards, Hyeons
[Attached our demo projects screenshot]
16 Answers, 1 is accepted
Based on the provided information I've prepared a sample project that contains 10000 GanttTasks with about 100 recurrences for each task. The project is based on our developer focused example about Recurring tasks on single row: https://github.com/telerik/xaml-sdk/tree/master/GanttView/SameRowRecurringTask.
In it I've modified the TimeRulerRecurreceBehavior.GetAllChildren method to use only the recurrent tasks that are in the visible time range, which improves the performance significantly as it limits the containers to be rendered.
You can find the project attached. Hope this helps.
Regards,
Polya
Progress Telerik
how about mililiseconds and zoom-in & zoom-out?
(I think default setting is a minute.. I want to change minimum a second...)
I cant find any related options and settings from WPF...
Please tell me how to make it?
Regarding the use of seconds - you can use the TimeRulerLines property to customize the type of the intervals in the TimeRuler area of the RadGanttView and set its TickInterval to OneSecond or FiveSeconds. You can find more information in this help article: http://docs.telerik.com/devtools/wpf/controls/radganttview/features/timeruler/configuring#timerulerlines-property
Regarding the zoom in/out - it can be achieved by changing the PixelLength of RadGanttView. We have a great example demonstrating the zoom functionality in our QSF demos: http://demos.telerik.com/wpf/ -> GanttView -> First Look example.
Hope this helps.
Regards,
Polya
Progress Telerik
Thank you very much, Polya
I'm really satisfied for your answer.
So I resolved zoom in/out problem and time intervals.
Now, I have 2 more questions.
1.
I want to change each tasks height instantly,
In other words, I can change X-axis ratio (time interval) , but I don't know how to change Y-axis ratio.
Is It possible to change? I want to know it is support or not.
2.
I want to change RadGanttView tooltip.
In the tooltip, I can show Title, Start (date), End (date) now.
but I want to customize its contents.
I want to change (Start => yyyyMMdd hhmmss ) to ( Start => yyyyMMdd hhmmss.fff )
yes, I want to show Milliseconds information in the tooltip.
More over I want to chnage column info too. Could you tell me the mothod to solve my needs.
Thank you. I will wait your answer
+
We have an another question.
3. I move the scroll in the Gantt chart and When tasks are straddled between visible and invisible parts, there are symptoms that the tasks disappear. So long period tasks are completely disappear. how can I solve this problem?
If you want to check Code. I e-mail you.
Thank you. I will wait your answer
In order to change the row height of the RadGanttView we need to change the MinHeight of all the CellContainers so there is no discrepancy in the heights when a cell is in edit mode or when it has a set DataTemplate for it. Also in order for the RelationContainers to appear correctly positioned in the middle of the EventContainers we need to change their Margin accordingly ( = the new MinHeight/2 ):
1) Change the SimpleCellContainerStyle, CellContainerStyle, CellEditingContainerStyle and SimpleTreeCellContainerStyle to set the MinHeight to the desired value.
2) Change the RelationContainerStyle and DragRelationSlotContainerStyle to modify the Margin and set the Top and Left margin to MinHeight/2.
Regarding your second question: In order to modify the ToolTip when the mouse hovers over an event container you need to modify the default EventContainerStyle and customizing its EventToolTipTemplate in the desired way.
If you also need to modify the ToolTip when the task gets dragged or re-sized you also need to modify the GanttDragResizeVisualCueTemplate of the GanttDragResizeVisualCueStyle.
Regarding the third question, I'm afraid that we would need a project demonstrating your scenario. You will have to open a support ticket and attach the project there as in the forum only image attachments are allowed. Please have in mind that only users with an active trial or paid license are eligible to access the support ticketing system.
You could take a look at our Support Plans for more details.
Regards,
Polya
Progress Telerik
Thank you for your detail answer.
I found the cause of the third question.
When I talked about speed improvement last time, You give me a demo that renders the task quickly that i can see in the screen.
================================================ this is that demo code
private IEnumerable<IEventInfo> GetAllChildren(TimeLineVisualizationState state, int index, HierarchicalItem hierarchicalItem) {
var recurringTask = hierarchicalItem.SourceItem as RecurrenceTask;
if (recurringTask != null) {
var visibleRecurences = recurringTask.Recurrences.Where( t => t.End.Ticks <= state.VisibleTimeRange.End && t.Start.Ticks >= state.VisibleTimeRange.Start ); // this part
foreach (var recurrence in visibleRecurences) { // actually this code was actually recurringTask.Recurrences
var roundedRecurrence = state.Rounder.Round( new DateRange( recurrence.Start, recurrence.End ) );
var range = new Range<long>( roundedRecurrence.Start.Ticks, roundedRecurrence.End.Ticks );
yield return new TimeLineRecurrenceEventInfo( range, hierarchicalItem.Index ) { OriginalEvent = recurrence };
}
}
}
The problem was visible range...
if I use visibleRecurences -> I can only see tasks that fully in the screen (a part of the tasks are disappear). but fast..
On the other hand, I use recurringTask.Recurrences -> I can see all tasks without disappear
(Even things that are not visible on the screen) but it's too slow.
How can I solve this problem? I want to see without disappear and to render quickly.
I will wait for your complement answer.
After verifying all the our customer's requirements (needs), team is willing to buy telerik WPF products. (verifying first)
Oh.. Sorry never mind above question.
I solved it. Thank you.
I am glad to hear that the issue is resolved.
Regards,
Polya
Progress Telerik
Hello Polya,
I have three problems to proceed our POC.
I need your help.
1. I want to Panning Gantt View . In other words, I want to move screen (not a task) click and move mouse.
What event should I use?
2. I want to display a baseline on the GanttView. I wish the baseline can move and can measure the time-value at the point
3. how could I display progress bar (loading bar), I want a example code or detailed explanation(I can not understand description on docs)
Thanks, Sincerely
Regarding the first question about the horizontal scroll - this behavior is not supported in the non touch version of the RadGanttView control. In the WPF framework such behavior is provided by the default ScrollViewer control which uses some OS framework functionality and APIs. These functionalities and APIs are automatically enabled when a touch device is detected by the Windows OS environment. Achieving such behavior in the non touch enabled version of the RadGanttView or any default ScrollViewer control would require implementation of custom drag and drop and scrolling functionality. We are not aware of an easy approach which could be used for achieving such behavior.
Regarding the baseline - I can suggest taking a look at our Baseline developer focused example: https://github.com/telerik/xaml-sdk/tree/master/GanttView/Baseline and let us know whether this is the desired functionality. If not could you please provide more information on what you wish to achieve.
Also we would need more information regarding the loading bar - where do you wish to display it, which example are you referring to?
More detailed information and pictures will help us better understand your requirements so we can assist further.
Regards,
Polya
Progress Telerik
Hello Polya,
I have tried to apply Ctrl + Mouse Wheel Zoom, I finally make it now.
but I have a problem in this function.
The problem is
when I do Mouse wheel with Ctrl, I don't want to move Gantt-View screen up&down.
I can't not find any related method or settings.
Please tell me solutions about this problem.
+ past questions
(1) loading bar (progress bar) - when I load Gantt View, there is a gap loading the tasks, so I need progress bar to show its not problem (just loading the lots of tasks).
Thank you, Sincerely
HyeonSu
Sorry, I have to change my question.
Scroll disable -> how to focus Gantt View?
I made the Ctrl + Wheel zoom, but I cant not find focus function.
Please tell me how to do this
I've prepared a sample project demostrating how to use progress bar for loading the TaskSource of the RadGanttView and then show the control itself. Please find the project attached. I can also suggest taking a look at our QSF "Scrolling Performance" demo that demonstrates how to achieve a similar scenario using a RadBusyIndicator: http://demos.telerik.com/wpf/ : GanttView->Scrolling Performance.
Regarding the focusing of the RadGanttView - in the attached project you can take a look at the RandomTasksGeneratorCompleted() method where I'm calling the Focus() function of RadGanttView. This way when the loading is complete the focused element will be the RadGanttView. If you remove this line of code you can see that the focused element is the top-right TextBox.
Regards,
Polya
Progress Telerik
Hi Admin,
Is it possible for me to set the timeruler in Rad Gantt View using radio buttons? For example, when I click on year, the timeruler will change to 2001, 2002, 2003. When i click on month, the timeruler will change to Jan, Feb, March and so on
Hello Wei,
May I ask you to check out the TimeRulerLines property of the RadGanttView? It allows you to customize the count and the types of intervals visible in the TimeRuler portion of the RadGanttView.
I hope you find this helpful.
Regards,
Vladimir Stoyanov
Progress Telerik