Skip to content

Commit f28fbcd

Browse files
Add Gantt demo view to Scheduling page
1 parent b1f7d86 commit f28fbcd

File tree

5 files changed

+242
-0
lines changed

5 files changed

+242
-0
lines changed

OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
<None Remove="Samples\Controls\RadCartesianChart\RadCartesianChart_StepLineSeries_Demo.xaml" />
4747
<None Remove="Samples\Controls\RadCartesianChart\RadPolarChart_PolarAreaSeries_Demo.xaml" />
4848
<None Remove="Samples\Controls\RadGallery\RadGallery_Demo.xaml" />
49+
<None Remove="Samples\Controls\RadGanttView\RadGanttView_Demo.xaml" />
4950
<None Remove="Samples\Controls\RadListBox\RadListBox_Demo.xaml" />
5051
<None Remove="Samples\Controls\RadMap\RadMap_Demo.xaml" />
5152
<None Remove="Samples\Controls\RadScheduleView\RadScheduleView_Demo.xaml" />
@@ -156,6 +157,9 @@
156157
</Content>
157158
<Content Include="Samples\Controls\RadGallery\RadGallery_Demo.xaml">
158159
<Generator>MSBuild:Compile</Generator>
160+
</Content>
161+
<Content Include="Samples\Controls\RadGanttView\RadGanttView_Demo.xaml">
162+
<Generator>MSBuild:Compile</Generator>
159163
</Content>
160164
<Content Include="Samples\Controls\RadListBox\RadListBox_Demo.xaml">
161165
<Generator>MSBuild:Compile</Generator>
@@ -315,4 +319,8 @@
315319
<PackageReference Include="OpenSilver.Compatibility.TelerikUI" Version="1.1.0" />
316320
</ItemGroup>
317321

322+
<ItemGroup>
323+
<UpToDateCheckInput Remove="Samples\Controls\RadGanttView\RadGanttView_Demo.xaml" />
324+
</ItemGroup>
325+
318326
</Project>
Lines changed: 143 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,143 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Collections.ObjectModel;
4+
using System.ComponentModel;
5+
using System.Runtime.CompilerServices;
6+
using System.Text;
7+
using Telerik.Windows.Controls;
8+
using Telerik.Windows.Controls.GanttView;
9+
using Telerik.Windows.Controls.Scheduling;
10+
11+
namespace OpenSilver.Samples.TelerikUI
12+
{
13+
public class GanttViewModel : ViewModelBase
14+
{
15+
private ObservableCollection<GanttTask> ganttTasks;
16+
private TimeSpan pixelLength;
17+
private VisibleRange visibleRange;
18+
private bool isBusy;
19+
20+
public GanttViewModel()
21+
{
22+
this.GanttTasks = new ObservableCollection<GanttTask>();
23+
this.pixelLength = new TimeSpan(0, 10, 0);
24+
this.VisibleRange = new VisibleRange(DateTime.Today, DateTime.Today.AddDays(9));
25+
}
26+
27+
public ObservableCollection<GanttTask> GanttTasks
28+
{
29+
get
30+
{
31+
return this.ganttTasks;
32+
}
33+
set
34+
{
35+
this.ganttTasks = value;
36+
this.OnPropertyChanged(() => this.GanttTasks);
37+
}
38+
}
39+
40+
public TimeSpan PixelLength
41+
{
42+
get
43+
{
44+
return this.pixelLength;
45+
}
46+
set
47+
{
48+
this.pixelLength = value;
49+
this.OnPropertyChanged(() => this.PixelLength);
50+
}
51+
}
52+
53+
public VisibleRange VisibleRange
54+
{
55+
get
56+
{
57+
return this.visibleRange;
58+
}
59+
set
60+
{
61+
this.visibleRange = value;
62+
this.OnPropertyChanged(() => this.VisibleRange);
63+
}
64+
}
65+
66+
public bool IsBusy
67+
{
68+
get
69+
{
70+
return this.isBusy;
71+
}
72+
set
73+
{
74+
if (this.isBusy != value)
75+
{
76+
this.isBusy = value;
77+
this.OnPropertyChanged(() => this.IsBusy);
78+
79+
if (this.IsBusy)
80+
{
81+
var backgroundWorker = new BackgroundWorker();
82+
backgroundWorker.DoWork += OnBackgroundWorkerDoWork;
83+
backgroundWorker.RunWorkerCompleted += OnBackgroundWorkerRunWorkerCompleted;
84+
backgroundWorker.RunWorkerAsync();
85+
}
86+
}
87+
}
88+
}
89+
90+
void OnBackgroundWorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
91+
{
92+
var backgroundWorker = sender as BackgroundWorker;
93+
backgroundWorker.DoWork -= this.OnBackgroundWorkerDoWork;
94+
backgroundWorker.RunWorkerCompleted -= OnBackgroundWorkerRunWorkerCompleted;
95+
96+
InvokeOnUIThread(() =>
97+
{
98+
this.GanttTasks = new ObservableCollection<GanttTask>((IEnumerable<GanttTask>)e.Result);
99+
this.IsBusy = false;
100+
});
101+
102+
}
103+
104+
private void OnBackgroundWorkerDoWork(object sender, DoWorkEventArgs e)
105+
{
106+
var ganttTasks = this.GenerateTasks();
107+
e.Result = ganttTasks;
108+
}
109+
110+
private IEnumerable<GanttTask> GenerateTasks()
111+
{
112+
List<GanttTask> ganttTasks = new List<GanttTask>();
113+
114+
int ganttTasksCount = 0;
115+
116+
for (int index = 0; index < 3; index++)
117+
{
118+
var start = DateTime.Today.AddDays(1);
119+
var end = start.AddDays(1);
120+
121+
var ganttTask = new GanttTask { Title = string.Format("Task{0}", ganttTasksCount), Start = start.AddDays(-0.5), End = end.AddDays(6.5), UniqueId = index.ToString() };
122+
123+
ganttTasks.Add(ganttTask);
124+
ganttTasksCount++;
125+
126+
for (int children = 0; children < 5; children++)
127+
{
128+
double startAdd = children / 2 + (children % 2) * 0.5 - 0.5;
129+
double endAdd = startAdd + 0.43;
130+
var child = new GanttTask { Title = string.Format("Task{0}", ganttTasksCount), Start = start.AddDays(startAdd), End = start.AddDays(endAdd) };
131+
if (children != 0)
132+
{
133+
child.Dependencies.Add(new Dependency { FromTask = ganttTask.Children[children - 1], Type = DependencyType.FinishStart });
134+
}
135+
ganttTask.Children.Add(child);
136+
ganttTasksCount++;
137+
}
138+
}
139+
140+
return ganttTasks;
141+
}
142+
}
143+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
<UserControl
2+
x:Class="OpenSilver.Samples.TelerikUI.RadGanttView_Demo"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:local="clr-namespace:OpenSilver.Samples.TelerikUI"
6+
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">
7+
8+
<ContentControl Style="{StaticResource Card_Style}" Height="350" Width="730">
9+
<Grid>
10+
<Grid.RowDefinitions>
11+
<RowDefinition Height="Auto"/>
12+
<RowDefinition Height="*"/>
13+
<RowDefinition Height="Auto"/>
14+
</Grid.RowDefinitions>
15+
<ContentControl Content="RadGanttView" Foreground="#FFA05BFF" Background="#FFA793C3" Style="{StaticResource HeaderControl_Style}"/>
16+
<telerik:RadGanttView x:Name="RadGanttView" PixelLength="{Binding PixelLength}" Grid.Row="1"
17+
TasksSource="{Binding GanttTasks}" VisibleRange="{Binding VisibleRange}">
18+
<telerik:RadGanttView.TimeRulerLines>
19+
<telerik:GroupTickLine>
20+
<telerik:TickInterval Interval="OneMonth" />
21+
</telerik:GroupTickLine>
22+
<telerik:MajorTickLine>
23+
<telerik:TickInterval Interval="OneDay" FormatString="{}{0:ddd}"/>
24+
</telerik:MajorTickLine>
25+
</telerik:RadGanttView.TimeRulerLines>
26+
<telerik:RadGanttView.Columns>
27+
<telerik:TreeColumnDefinition MemberBinding="{Binding Title}" Header="Title" Width="100" IsFrozenColumn="True"/>
28+
<telerik:ColumnDefinition MemberBinding="{Binding Duration}" Header="Duration" Width="100" />
29+
<telerik:ColumnDefinition MemberBinding="{Binding Start}" Header="Start" Width="120" />
30+
<telerik:ColumnDefinition MemberBinding="{Binding End}" Header="End" Width="120" />
31+
</telerik:RadGanttView.Columns>
32+
</telerik:RadGanttView>
33+
<Button Grid.Row="2" Content="VIEW SOURCE..." Click="ButtonViewSource_Click" Background="#FFA05BFF" Style="{StaticResource ButtonViewSource_Style}"/>
34+
</Grid>
35+
</ContentControl>
36+
</UserControl>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
using kendo_ui_grid.kendo;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.IO;
5+
using System.Linq;
6+
using System.Windows;
7+
using System.Windows.Controls;
8+
using System.Windows.Controls.Primitives;
9+
using System.Windows.Data;
10+
using System.Windows.Input;
11+
using System.Windows.Media;
12+
using System.Windows.Navigation;
13+
using Telerik.Windows.Controls;
14+
15+
namespace OpenSilver.Samples.TelerikUI
16+
{
17+
public partial class RadGanttView_Demo : UserControl
18+
{
19+
public RadGanttView_Demo()
20+
{
21+
this.InitializeComponent();
22+
this.Loaded += RadGanttView_Demo_Loaded;
23+
}
24+
25+
private void RadGanttView_Demo_Loaded(object sender, RoutedEventArgs e)
26+
{
27+
GanttViewModel model = new GanttViewModel();
28+
model.IsBusy = true;
29+
this.DataContext = model;
30+
}
31+
32+
private void ButtonViewSource_Click(object sender, RoutedEventArgs e)
33+
{
34+
ViewSourceButtonHelper.ViewSource(new List<ViewSourceButtonInfo>()
35+
{
36+
new ViewSourceButtonInfo()
37+
{
38+
TabHeader = "RadGanttVieww_Demo.xaml",
39+
FilePathOnGitHub = "github/OpenSilver/OpenSilver.Samples.TelerikUI/blob/master/OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI/Samples/Controls/RadGanttView/RadGanttView_Demo.xaml"
40+
},
41+
new ViewSourceButtonInfo()
42+
{
43+
TabHeader = "RadGanttView_Demo.xaml.cs",
44+
FilePathOnGitHub = "github/OpenSilver/OpenSilver.Samples.TelerikUI/blob/master/OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI/Samples/Controls/RadGanttView/RadGanttView_Demo.xaml.cs"
45+
},
46+
new ViewSourceButtonInfo()
47+
{
48+
TabHeader = "GanttViewModel.cs",
49+
FilePathOnGitHub = "github/OpenSilver/OpenSilver.Samples.TelerikUI/blob/master/OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI/Other/GanttViewModel.cs"
50+
}
51+
});
52+
}
53+
}
54+
}

OpenSilver.Samples.TelerikUI/OpenSilver.Samples.TelerikUI/Samples/Scheduling.xaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
<local:WrapPanelWithProgressiveLoading Style="{StaticResource Panel_Style}">
1010
<local:RadScheduleView_Demo HorizontalAlignment="Center"/>
1111
<local:RadCalendar_Demo HorizontalAlignment="Center"/>
12+
<local:RadGanttView_Demo HorizontalAlignment="Center"/>
1213
</local:WrapPanelWithProgressiveLoading>
1314
</StackPanel>
1415
</UserControl>

0 commit comments

Comments
 (0)