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