Changes in core, HTML export added
This commit is contained in:
@@ -6,11 +6,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace TimetableDesigner.Core
|
||||
{
|
||||
public abstract class BaseGroup : IUnit
|
||||
[Serializable]
|
||||
public abstract class BaseGroup : Unit
|
||||
{
|
||||
#region FIELDS
|
||||
|
||||
private string _name;
|
||||
private string _shortName;
|
||||
|
||||
#endregion
|
||||
@@ -19,11 +19,6 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
set => _name = value;
|
||||
}
|
||||
public string ShortName
|
||||
{
|
||||
get => _shortName;
|
||||
@@ -36,9 +31,8 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public BaseGroup()
|
||||
public BaseGroup(ulong id) : base(id)
|
||||
{
|
||||
_name = string.Empty;
|
||||
_shortName = string.Empty;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,11 +8,10 @@ using System.Threading.Tasks;
|
||||
namespace TimetableDesigner.Core
|
||||
{
|
||||
[Serializable]
|
||||
public class Classroom : IUnit
|
||||
public class Classroom : Unit
|
||||
{
|
||||
#region FIELDS
|
||||
|
||||
private string _name;
|
||||
private string _shortName;
|
||||
private string _description;
|
||||
private bool _isCapacityLimited;
|
||||
@@ -24,11 +23,6 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
set => _name = value;
|
||||
}
|
||||
public string ShortName
|
||||
{
|
||||
get => _shortName;
|
||||
@@ -56,9 +50,8 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public Classroom()
|
||||
public Classroom(ulong id) : base(id)
|
||||
{
|
||||
_name = string.Empty;
|
||||
_shortName = string.Empty;
|
||||
_description = string.Empty;
|
||||
_isCapacityLimited = false;
|
||||
|
||||
@@ -33,7 +33,7 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public Group() : base()
|
||||
public Group(ulong id) : base(id)
|
||||
{
|
||||
_description = string.Empty;
|
||||
_assignedSubgroups = new HashSet<Subgroup>();
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TimetableDesigner.Core
|
||||
{
|
||||
public interface IUnit
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
string Name { get; }
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ namespace TimetableDesigner.Core
|
||||
{
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public Subgroup() : base()
|
||||
public Subgroup(ulong id) : base(id)
|
||||
{ }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -8,11 +8,10 @@ using TimetableDesigner.Customs;
|
||||
namespace TimetableDesigner.Core
|
||||
{
|
||||
[Serializable]
|
||||
public class Teacher : IUnit
|
||||
public class Teacher : Unit
|
||||
{
|
||||
#region FIELDS
|
||||
|
||||
private string _name;
|
||||
private string _shortName;
|
||||
private string _description;
|
||||
private JsonSerializableDictionary<TimetableDay, TimetableSpanCollection> _availabilityHours;
|
||||
@@ -23,11 +22,6 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
public string Name
|
||||
{
|
||||
get => _name;
|
||||
set => _name = value;
|
||||
}
|
||||
public string ShortName
|
||||
{
|
||||
get => _shortName;
|
||||
@@ -38,7 +32,7 @@ namespace TimetableDesigner.Core
|
||||
get => _description;
|
||||
set => _description = value;
|
||||
}
|
||||
public IDictionary<TimetableDay, TimetableSpanCollection> AvailabilityHours => _availabilityHours;
|
||||
public JsonSerializableDictionary<TimetableDay, TimetableSpanCollection> AvailabilityHours => _availabilityHours;
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -46,9 +40,8 @@ namespace TimetableDesigner.Core
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public Teacher()
|
||||
public Teacher(ulong id) : base(id)
|
||||
{
|
||||
_name = string.Empty;
|
||||
_shortName = string.Empty;
|
||||
_description = string.Empty;
|
||||
_availabilityHours = new JsonSerializableDictionary<TimetableDay, TimetableSpanCollection>();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0-windows</TargetFramework>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
@@ -11,6 +11,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TimetableDesigner.Tests", "
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TimetableDesigner.Customs", "TimetableDesigner.Customs\TimetableDesigner.Customs.csproj", "{BCA4CD04-FD49-4C28-9743-F4F6C1888E7E}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TimetableDesigner.Export", "TimetableDesigner.Export\TimetableDesigner.Export.csproj", "{C97DB09E-CB48-432A-8BA4-108B21F2DF94}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -51,6 +53,14 @@ Global
|
||||
{BCA4CD04-FD49-4C28-9743-F4F6C1888E7E}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BCA4CD04-FD49-4C28-9743-F4F6C1888E7E}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{BCA4CD04-FD49-4C28-9743-F4F6C1888E7E}.Release|x64.Build.0 = Release|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{C97DB09E-CB48-432A-8BA4-108B21F2DF94}.Release|x64.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -26,6 +26,7 @@ namespace TimetableDesigner.Converters
|
||||
{ typeof(TeacherEditorViewVM), typeof(TeacherEditorView) },
|
||||
{ typeof(GroupEditorViewVM), typeof(GroupEditorView) },
|
||||
{ typeof(TimetableEditorViewVM), typeof(TimetableEditorView) },
|
||||
{ typeof(ExportHTMLViewVM), typeof(ExportHTMLView) },
|
||||
};
|
||||
|
||||
#endregion
|
||||
|
||||
45
TimetableDesigner/Properties/Resources.Designer.cs
generated
45
TimetableDesigner/Properties/Resources.Designer.cs
generated
@@ -538,6 +538,15 @@ namespace TimetableDesigner.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to HTML.
|
||||
/// </summary>
|
||||
public static string Main_Ribbon_Export_Timetable_HTML {
|
||||
get {
|
||||
return ResourceManager.GetString("Main.Ribbon.Export.Timetable.HTML", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to PDF.
|
||||
/// </summary>
|
||||
@@ -664,24 +673,6 @@ namespace TimetableDesigner.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Import groups.
|
||||
/// </summary>
|
||||
public static string Main_Ribbon_Project_Import_ImportGroups {
|
||||
get {
|
||||
return ResourceManager.GetString("Main.Ribbon.Project.Import.ImportGroups", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Import teachers.
|
||||
/// </summary>
|
||||
public static string Main_Ribbon_Project_Import_ImportTeachers {
|
||||
get {
|
||||
return ResourceManager.GetString("Main.Ribbon.Project.Import.ImportTeachers", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to New.
|
||||
/// </summary>
|
||||
@@ -988,6 +979,15 @@ namespace TimetableDesigner.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Export to HTML.
|
||||
/// </summary>
|
||||
public static string Tabs_ExportHTML {
|
||||
get {
|
||||
return ResourceManager.GetString("Tabs.ExportHTML", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Group editing.
|
||||
/// </summary>
|
||||
@@ -997,6 +997,15 @@ namespace TimetableDesigner.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Import classrooms.
|
||||
/// </summary>
|
||||
public static string Tabs_ImportClassroom {
|
||||
get {
|
||||
return ResourceManager.GetString("Tabs.ImportClassroom", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Project settings.
|
||||
/// </summary>
|
||||
|
||||
@@ -276,6 +276,9 @@
|
||||
<data name="Main.Ribbon.Export.Timetable" xml:space="preserve">
|
||||
<value>Timetable</value>
|
||||
</data>
|
||||
<data name="Main.Ribbon.Export.Timetable.HTML" xml:space="preserve">
|
||||
<value>HTML</value>
|
||||
</data>
|
||||
<data name="Main.Ribbon.Export.Timetable.PDF" xml:space="preserve">
|
||||
<value>PDF</value>
|
||||
</data>
|
||||
@@ -318,12 +321,6 @@
|
||||
<data name="Main.Ribbon.Project.Import.ImportClassrooms" xml:space="preserve">
|
||||
<value>Import classrooms</value>
|
||||
</data>
|
||||
<data name="Main.Ribbon.Project.Import.ImportGroups" xml:space="preserve">
|
||||
<value>Import groups</value>
|
||||
</data>
|
||||
<data name="Main.Ribbon.Project.Import.ImportTeachers" xml:space="preserve">
|
||||
<value>Import teachers</value>
|
||||
</data>
|
||||
<data name="Main.Ribbon.Project.New" xml:space="preserve">
|
||||
<value>New</value>
|
||||
</data>
|
||||
@@ -426,9 +423,15 @@
|
||||
<data name="Tabs.ClassroomEdit" xml:space="preserve">
|
||||
<value>Classroom editing</value>
|
||||
</data>
|
||||
<data name="Tabs.ExportHTML" xml:space="preserve">
|
||||
<value>Export to HTML</value>
|
||||
</data>
|
||||
<data name="Tabs.GroupEdit" xml:space="preserve">
|
||||
<value>Group editing</value>
|
||||
</data>
|
||||
<data name="Tabs.ImportClassroom" xml:space="preserve">
|
||||
<value>Import classrooms</value>
|
||||
</data>
|
||||
<data name="Tabs.ProjectSettings" xml:space="preserve">
|
||||
<value>Project settings</value>
|
||||
</data>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
<BitmapImage x:Key="CloseImage" UriSource="Images/Close.png"/>
|
||||
<BitmapImage x:Key="AutoscheduleImage" UriSource="Images/Autoschedule.png"/>
|
||||
<BitmapImage x:Key="AddImage" UriSource="Images/Add.png"/>
|
||||
<BitmapImage x:Key="ImportImage" UriSource="Images/Import.png"/>
|
||||
<BitmapImage x:Key="ProjectImage" UriSource="Images/Project.png"/>
|
||||
<BitmapImage x:Key="ProjectSettingsImage" UriSource="Images/ProjectSettings.png"/>
|
||||
<BitmapImage x:Key="ClassroomImage" UriSource="Images/Classroom.png"/>
|
||||
@@ -33,4 +34,5 @@
|
||||
<BitmapImage x:Key="RemoveWhiteImage" UriSource="Images/RemoveWhite.png"/>
|
||||
<BitmapImage x:Key="EditBlackImage" UriSource="Images/EditBlack.png"/>
|
||||
<BitmapImage x:Key="EditWhiteImage" UriSource="Images/EditWhite.png"/>
|
||||
<BitmapImage x:Key="HTMLImage" UriSource="Images/HTML.png"/>
|
||||
</ResourceDictionary>
|
||||
@@ -57,7 +57,7 @@ namespace TimetableDesigner.Services.FileDialog
|
||||
List<string> extensionStrings = new List<string>();
|
||||
foreach (string extension in type.Value)
|
||||
{
|
||||
extensionStrings.Add($"*.{extension}");
|
||||
extensionStrings.Add($"*.{extension.ToLower()}");
|
||||
}
|
||||
|
||||
sb.Append(string.Join(';', extensionStrings));
|
||||
|
||||
@@ -35,6 +35,8 @@
|
||||
<None Remove="Resources\Images\GroupBlack.png" />
|
||||
<None Remove="Resources\Images\GroupGrey.png" />
|
||||
<None Remove="Resources\Images\GroupWhite.png" />
|
||||
<None Remove="Resources\Images\HTML.png" />
|
||||
<None Remove="Resources\Images\Import.png" />
|
||||
<None Remove="Resources\Images\Info.png" />
|
||||
<None Remove="Resources\Images\New.png" />
|
||||
<None Remove="Resources\Images\Open.png" />
|
||||
@@ -91,6 +93,12 @@
|
||||
<Content Include="Resources\Images\GroupWhite.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Images\HTML.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Images\Import.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Resources\Images\Info.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
@@ -170,6 +178,7 @@
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\TimetableDesigner.Core\TimetableDesigner.Core.csproj" />
|
||||
<ProjectReference Include="..\TimetableDesigner.Customs\TimetableDesigner.Customs.csproj" />
|
||||
<ProjectReference Include="..\TimetableDesigner.Export\TimetableDesigner.Export.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -11,7 +11,9 @@ namespace TimetableDesigner.ViewModels.Models.Base
|
||||
{
|
||||
#region PROPERTIES
|
||||
|
||||
IUnit Unit { get; }
|
||||
Unit Unit { get; }
|
||||
Guid Guid { get; }
|
||||
ulong Id { get; }
|
||||
string Name { get; }
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -21,9 +21,11 @@ namespace TimetableDesigner.ViewModels.Models
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
IUnit IUnitVM.Unit => _baseGroup;
|
||||
Unit IUnitVM.Unit => _baseGroup;
|
||||
public BaseGroup BaseGroup => _baseGroup;
|
||||
|
||||
public ulong Id => _baseGroup.Id;
|
||||
public Guid Guid => _baseGroup.Guid;
|
||||
public string Name
|
||||
{
|
||||
get => _baseGroup.Name;
|
||||
|
||||
@@ -21,9 +21,11 @@ namespace TimetableDesigner.ViewModels.Models
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
IUnit IUnitVM.Unit => _classroom;
|
||||
Unit IUnitVM.Unit => _classroom;
|
||||
public Classroom Classroom => _classroom;
|
||||
|
||||
public Guid Guid => _classroom.Guid;
|
||||
public ulong Id => _classroom.Id;
|
||||
public string Name
|
||||
{
|
||||
get => _classroom.Name;
|
||||
|
||||
@@ -24,9 +24,11 @@ namespace TimetableDesigner.ViewModels.Models
|
||||
|
||||
#region PROPERTIES
|
||||
|
||||
IUnit IUnitVM.Unit => _teacher;
|
||||
Unit IUnitVM.Unit => _teacher;
|
||||
public Teacher Teacher => _teacher;
|
||||
|
||||
public Guid Guid => _teacher.Guid;
|
||||
public ulong Id => _teacher.Id;
|
||||
public string Name
|
||||
{
|
||||
get => _teacher.Name;
|
||||
|
||||
@@ -64,7 +64,7 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public ClassroomEditorViewVM() : this(new ClassroomVM(new Classroom()))
|
||||
public ClassroomEditorViewVM() : this(new ClassroomVM(new Classroom(0)))
|
||||
{ }
|
||||
|
||||
public ClassroomEditorViewVM(ClassroomVM classroom)
|
||||
|
||||
@@ -93,7 +93,7 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public GroupEditorViewVM() : this(new GroupVM(new Group()))
|
||||
public GroupEditorViewVM() : this(new GroupVM(new Group(0)))
|
||||
{ }
|
||||
|
||||
public GroupEditorViewVM(GroupVM group)
|
||||
@@ -117,7 +117,13 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
|
||||
private void AddSubgroup()
|
||||
{
|
||||
Subgroup subgroup = new Subgroup()
|
||||
ulong id = 0;
|
||||
if (_projectService.ProjectViewModel.Subgroups.Count() > 0)
|
||||
{
|
||||
id = _projectService.ProjectViewModel.Subgroups.Select(x => x.Id).Max() + 1;
|
||||
}
|
||||
|
||||
Subgroup subgroup = new Subgroup(id)
|
||||
{
|
||||
Name = NewSubgroupName
|
||||
};
|
||||
|
||||
@@ -29,6 +29,7 @@ using System.Windows.Forms;
|
||||
using TimetableDesigner.Services.FileDialog;
|
||||
using TimetableDesigner.Services.Scheduler;
|
||||
using static TimetableDesigner.ViewModels.Views.TimetableEditorViewVM;
|
||||
using TimetableDesigner.Views;
|
||||
|
||||
namespace TimetableDesigner.ViewModels.Views
|
||||
{
|
||||
@@ -80,6 +81,7 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
public ICommand RemoveSubgroupCommand { get; set; }
|
||||
public ICommand EditTimetableCommand { get; set; }
|
||||
public ICommand AutoScheduleCommand { get; set; }
|
||||
public ICommand ExportHTMLCommand { get; set; }
|
||||
|
||||
// Others
|
||||
public string? Version { get; set; }
|
||||
@@ -116,6 +118,7 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
RemoveSubgroupCommand = new RelayCommand<SubgroupVM>(RemoveSubgroup);
|
||||
EditTimetableCommand = new RelayCommand<IUnitVM>(EditTimetable);
|
||||
AutoScheduleCommand = new RelayCommand<object>(param => AutoSchedule());
|
||||
ExportHTMLCommand = new RelayCommand<object>(param => ExportHTML());
|
||||
|
||||
Version = Assembly.GetExecutingAssembly().GetName().Version?.ToString();
|
||||
}
|
||||
@@ -212,7 +215,13 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
{
|
||||
if (ProjectService.ProjectViewModel is not null)
|
||||
{
|
||||
Classroom classroom = new Classroom()
|
||||
ulong id = 0;
|
||||
if (ProjectService.ProjectViewModel.Classrooms.Count() > 0)
|
||||
{
|
||||
id = ProjectService.ProjectViewModel.Classrooms.Select(x => x.Id).Max() + 1;
|
||||
}
|
||||
|
||||
Classroom classroom = new Classroom(id)
|
||||
{
|
||||
Name = Resources.Global_DefaultClassroomName
|
||||
};
|
||||
@@ -225,7 +234,13 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
{
|
||||
if (ProjectService.ProjectViewModel is not null)
|
||||
{
|
||||
Teacher teacher = new Teacher()
|
||||
ulong id = 0;
|
||||
if (ProjectService.ProjectViewModel.Teachers.Count() > 0)
|
||||
{
|
||||
id = ProjectService.ProjectViewModel.Teachers.Select(x => x.Id).Max() + 1;
|
||||
}
|
||||
|
||||
Teacher teacher = new Teacher(id)
|
||||
{
|
||||
Name = Resources.Global_DefaultTeacherName
|
||||
};
|
||||
@@ -238,7 +253,13 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
{
|
||||
if (ProjectService.ProjectViewModel is not null)
|
||||
{
|
||||
Group group = new Group()
|
||||
ulong id = 0;
|
||||
if (ProjectService.ProjectViewModel.Groups.Count() > 0)
|
||||
{
|
||||
id = ProjectService.ProjectViewModel.Groups.Select(x => x.Id).Max() + 1;
|
||||
}
|
||||
|
||||
Group group = new Group(id)
|
||||
{
|
||||
Name = Resources.Global_DefaultGroupName
|
||||
};
|
||||
@@ -382,6 +403,20 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
}
|
||||
}
|
||||
|
||||
private void ExportHTML()
|
||||
{
|
||||
if (ProjectService.ProjectViewModel is not null)
|
||||
{
|
||||
TabItem exportHTMLTab = new TabItem()
|
||||
{
|
||||
Title = Resources.Tabs_ExportHTML,
|
||||
IsClosable = true,
|
||||
ViewModel = new ExportHTMLViewVM()
|
||||
};
|
||||
_tabNavigationService.AddAndActivate(exportHTMLTab);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
@@ -132,7 +132,7 @@ namespace TimetableDesigner.ViewModels.Views
|
||||
|
||||
#region CONSTRUCTORS
|
||||
|
||||
public TeacherEditorViewVM() : this(new TeacherVM(new Teacher()))
|
||||
public TeacherEditorViewVM() : this(new TeacherVM(new Teacher(0)))
|
||||
{ }
|
||||
|
||||
public TeacherEditorViewVM(TeacherVM teacher)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
<rib:RibbonWindow.Title>
|
||||
<MultiBinding StringFormat="Timetable Designer {0} ({1})">
|
||||
<Binding Path="Version"/>
|
||||
<Binding Path="ProjectService.Project.Name" FallbackValue="{x:Static p:Resources.Global_NoProjectLoadedTitle}"/>
|
||||
<Binding Path="ProjectService.ProjectViewModel.Name" FallbackValue="{x:Static p:Resources.Global_NoProjectLoadedTitle}"/>
|
||||
</MultiBinding>
|
||||
</rib:RibbonWindow.Title>
|
||||
<rib:RibbonWindow.DataContext>
|
||||
@@ -50,39 +50,55 @@
|
||||
</rib:DropDownButton.ItemContainerStyle>
|
||||
</rib:DropDownButton>
|
||||
</rib:RibbonGroupBox>
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_File_Save}" IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_File_Save_Save}" Icon="{StaticResource SaveImage}" Command="{Binding SaveProjectCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_File_Save_SaveAs}" Icon="{StaticResource SaveAsImage}" Command="{Binding SaveAsProjectCommand}"/>
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_File_Save}"
|
||||
IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_File_Save_Save}"
|
||||
Icon="{StaticResource SaveImage}"
|
||||
Command="{Binding SaveProjectCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_File_Save_SaveAs}"
|
||||
Icon="{StaticResource SaveAsImage}"
|
||||
Command="{Binding SaveAsProjectCommand}"/>
|
||||
</rib:RibbonGroupBox>
|
||||
</rib:RibbonTabItem>
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Project}" IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Project}"
|
||||
IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Project_Settings}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_Settings_ProjectSettings}"
|
||||
Command="{Binding ProjectSettingsCommand}"
|
||||
Icon="{StaticResource ProjectSettingsImage}"/>
|
||||
</rib:RibbonGroupBox>
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Project_New}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewClassroom}" Icon="{StaticResource ClassroomAddImage}" Command="{Binding NewClassroomCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewTeacher}" Icon="{StaticResource TeacherAddImage}" Command="{Binding NewTeacherCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewGroup}" Icon="{StaticResource GroupAddImage}" Command="{Binding NewGroupCommand}"/>
|
||||
</rib:RibbonGroupBox>
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Project_Import}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_Import_ImportClassrooms}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_Import_ImportTeachers}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_Import_ImportGroups}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewClassroom}"
|
||||
Icon="{StaticResource ClassroomAddImage}"
|
||||
Command="{Binding NewClassroomCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewTeacher}"
|
||||
Icon="{StaticResource TeacherAddImage}"
|
||||
Command="{Binding NewTeacherCommand}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_New_NewGroup}"
|
||||
Icon="{StaticResource GroupAddImage}"
|
||||
Command="{Binding NewGroupCommand}"/>
|
||||
</rib:RibbonGroupBox>
|
||||
<!--rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Project_Import}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Project_Import_ImportClassrooms}"
|
||||
Icon="{StaticResource ImportImage}"
|
||||
Command="{Binding ImportClassroomCommand}"/>
|
||||
</rib:RibbonGroupBox-->
|
||||
</rib:RibbonTabItem>
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Edit}" IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Edit}"
|
||||
IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Edit_Timetable}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Edit_Timetable_Autoschedule}"
|
||||
Icon="{StaticResource AutoscheduleImage}"
|
||||
Command="{Binding AutoScheduleCommand}"/>
|
||||
</rib:RibbonGroupBox>
|
||||
</rib:RibbonTabItem>
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Export}" IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonTabItem Header="{x:Static p:Resources.Main_Ribbon_Export}"
|
||||
IsEnabled="{Binding ProjectService.ProjectViewModel, Converter={StaticResource IsNotNullToBooleanConverter}}">
|
||||
<rib:RibbonGroupBox Header="{x:Static p:Resources.Main_Ribbon_Export_Timetable}">
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Export_Timetable_PDF}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Export_Timetable_XLS}"/>
|
||||
<rib:Button Header="{x:Static p:Resources.Main_Ribbon_Export_Timetable_HTML}"
|
||||
Icon="{StaticResource HTMLImage}"
|
||||
Command="{Binding ExportHTMLCommand}"/>
|
||||
<!--rib:Button Header="{x:Static p:Resources.Main_Ribbon_Export_Timetable_XLS}"/-->
|
||||
</rib:RibbonGroupBox>
|
||||
</rib:RibbonTabItem>
|
||||
</rib:Ribbon>
|
||||
@@ -258,7 +274,7 @@
|
||||
CommandParameter="{Binding ProjectService.Errors/Unit}"/>
|
||||
</DataGrid.InputBindings>
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn Width="25">
|
||||
<DataGridTemplateColumn Width="25" SortMemberPath="Type">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Image Width="20" Height="20">
|
||||
@@ -281,7 +297,7 @@
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.Main_Errors_Source}">
|
||||
<DataGridTextColumn Header="{x:Static p:Resources.Main_Errors_Source}" SortMemberPath="Unit.Name">
|
||||
<DataGridTextColumn.ElementStyle>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
|
||||
Reference in New Issue
Block a user