aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules
diff options
context:
space:
mode:
authorRoy <Roy.mail.net@gmail.com>2022-11-01 17:58:50 +0200
committerRoy <Roy.mail.net@gmail.com>2022-11-01 17:58:50 +0200
commit5ab455fb09c659e92ad4de41ec7472e2b8e48499 (patch)
tree77a6786eee4e5ae07d9b2b8e14fca7d8a6b3bcc3 /Software/Visual_Studio/PPC/Modules
parenta8a1e530d7fb014a92b39e7414385b02691236a8 (diff)
downloadTango-5ab455fb09c659e92ad4de41ec7472e2b8e48499.tar.gz
Tango-5ab455fb09c659e92ad4de41ec7472e2b8e48499.zip
Hot folder impl completed.
Diffstat (limited to 'Software/Visual_Studio/PPC/Modules')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs112
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj6
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs137
3 files changed, 178 insertions, 77 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
index b37cd1c68..0b039b618 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobsViewVM.cs
@@ -893,71 +893,71 @@ namespace Tango.PPC.Jobs.ViewModels
private async void HandleCsvJobFileLoaded(List<ExplorerFileItem> files)
{
- var item = files.FirstOrDefault();
- if (item == null) return;
+ //var item = files.FirstOrDefault();
+ //if (item == null) return;
- var vm = new ImportCsvJobViewVM();
- vm.Name = Path.GetFileNameWithoutExtension(item.Name);
- await vm.Init();
- await NotificationProvider.ShowDialog<ImportCsvJobViewVM>(vm);
+ //var vm = new ImportCsvJobViewVM();
+ //vm.Name = Path.GetFileNameWithoutExtension(item.Name);
+ //await vm.Init();
+ //await NotificationProvider.ShowDialog<ImportCsvJobViewVM>(vm);
- if (vm.DialogResult && vm.SelectedRml != null)
- {
- try
- {
- NotificationProvider.SetGlobalBusyMessage("Importing job from file...");
+ //if (vm.DialogResult && vm.SelectedRml != null)
+ //{
+ // try
+ // {
+ // NotificationProvider.SetGlobalBusyMessage("Importing job from file...");
- using (ObservablesContext db = ObservablesContext.CreateDefault())
- {
- var segments = await SegmentsCsvHelper.FromFile(item.Path, MachineProvider.Machine, db);
+ // using (ObservablesContext db = ObservablesContext.CreateDefault())
+ // {
+ // var segments = await SegmentsCsvHelper.FromFile(item.Path, MachineProvider.Machine, db);
- Job job = new Job();
- job.LastUpdated = DateTime.UtcNow;
- job.JobSource = JobSource.Local;
- job.Name = vm.Name;
- job.NumberOfHeads = 1;
- job.NumberOfUnits = 1;
- job.SampleUnitsOrMeters = 1;
- job.CreationDate = DateTime.UtcNow;
- job.JobStatus = JobStatuses.Draft;
- job.JobType = JobTypes.Knitting;
- job.EnableLubrication = true;
- job.MachineGuid = MachineProvider.Machine.Guid;
- job.RmlGuid = vm.SelectedRml.Guid;
- job.Machine = await new MachineBuilder(db).Set(job.MachineGuid).WithCats().WithConfiguration().BuildAsync();
- job.Rml = await new RmlBuilder(db).Set(job.RmlGuid).WithActiveParametersGroup().WithCAT(MachineProvider.Machine.Guid).WithCCT().WithGbdAndLub().WithLiquidFactors().BuildAsync();
- job.WindingMethodGuid = Adapter.WindingMethods.FirstOrDefault().Guid;
- job.SpoolTypeGuid = Settings.SpoolTypeGuid != null ? Settings.SpoolTypeGuid : Adapter.SpoolTypes.FirstOrDefault().Guid;
+ // Job job = new Job();
+ // job.LastUpdated = DateTime.UtcNow;
+ // job.JobSource = JobSource.Local;
+ // job.Name = vm.Name;
+ // job.NumberOfHeads = 1;
+ // job.NumberOfUnits = 1;
+ // job.SampleUnitsOrMeters = 1;
+ // job.CreationDate = DateTime.UtcNow;
+ // job.JobStatus = JobStatuses.Draft;
+ // job.JobType = JobTypes.Knitting;
+ // job.EnableLubrication = true;
+ // job.MachineGuid = MachineProvider.Machine.Guid;
+ // job.RmlGuid = vm.SelectedRml.Guid;
+ // job.Machine = await new MachineBuilder(db).Set(job.MachineGuid).WithCats().WithConfiguration().BuildAsync();
+ // job.Rml = await new RmlBuilder(db).Set(job.RmlGuid).WithActiveParametersGroup().WithCAT(MachineProvider.Machine.Guid).WithCCT().WithGbdAndLub().WithLiquidFactors().BuildAsync();
+ // job.WindingMethodGuid = Adapter.WindingMethods.FirstOrDefault().Guid;
+ // job.SpoolTypeGuid = Settings.SpoolTypeGuid != null ? Settings.SpoolTypeGuid : Adapter.SpoolTypes.FirstOrDefault().Guid;
- foreach (var segment in segments)
- {
- segment.Job = job;
- job.Segments.Add(segment);
- }
+ // foreach (var segment in segments)
+ // {
+ // segment.Job = job;
+ // job.Segments.Add(segment);
+ // }
- IColorConverter converter = new DefaultColorConverter();
+ // IColorConverter converter = new DefaultColorConverter();
- foreach (var stop in segments.SelectMany(x => x.BrushStops.Where(y => y.BrushColorSpace == ColorSpaces.Volume)))
- {
- var output = converter.Convert(stop, false);
- var suggestion = output.CreateSingleSuggestion();
- stop.Color = suggestion.Color;
- }
+ // foreach (var stop in segments.SelectMany(x => x.BrushStops.Where(y => y.BrushColorSpace == ColorSpaces.Volume)))
+ // {
+ // var output = converter.Convert(stop, false);
+ // var suggestion = output.CreateSingleSuggestion();
+ // stop.Color = suggestion.Color;
+ // }
- db.Jobs.Add(job);
- await db.SaveChangesAsync();
- LoadJobs();
- }
+ // db.Jobs.Add(job);
+ // await db.SaveChangesAsync();
+ // LoadJobs();
+ // }
- NotificationProvider.ReleaseGlobalBusyMessage();
- }
- catch (Exception ex)
- {
- NotificationProvider.ReleaseGlobalBusyMessage();
- LogManager.Log(ex, "Error importing job from CSV.");
- await NotificationProvider.ShowError($"Error importing job from csv file.\n{ex.FlattenMessage()}");
- }
- }
+ // NotificationProvider.ReleaseGlobalBusyMessage();
+ // }
+ // catch (Exception ex)
+ // {
+ // NotificationProvider.ReleaseGlobalBusyMessage();
+ // LogManager.Log(ex, "Error importing job from CSV.");
+ // await NotificationProvider.ShowError($"Error importing job from csv file.\n{ex.FlattenMessage()}");
+ // }
+ //}
}
#endregion
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
index 8edc18f1f..26c059d15 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/Tango.PPC.JobsV2.csproj
@@ -458,6 +458,10 @@
<Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project>
<Name>Tango.PPC.Common</Name>
</ProjectReference>
+ <ProjectReference Include="..\..\Tango.PPC.Shared\Tango.PPC.Shared.csproj">
+ <Project>{208c8bd8-72c6-4e3c-acaa-351091a2acc7}</Project>
+ <Name>Tango.PPC.Shared</Name>
+ </ProjectReference>
<ProjectReference Include="..\Tango.PPC.Storage\Tango.PPC.Storage.csproj">
<Project>{04febb02-f782-4b96-b47d-f6902afa43be}</Project>
<Name>Tango.PPC.Storage</Name>
@@ -715,7 +719,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
index 1f6798881..38413b24c 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/ViewModels/JobsViewVM.cs
@@ -42,6 +42,9 @@ using Tango.PPC.Storage.Models;
using Tango.BL.Helpers;
using Tango.ColorConversion;
using Tango.PPC.Jobs.Models;
+using Tango.PPC.Shared.RemoteJobUpload;
+using Tango.PPC.Common.Notifications;
+using Tango.PPC.Common.Notifications.NotificationItems;
namespace Tango.PPC.Jobs.ViewModels
{
@@ -221,7 +224,7 @@ namespace Tango.PPC.Jobs.ViewModels
/// Gets or sets the export job command.
/// </summary>
public RelayCommand ExportJobCommand { get; set; }
-
+
#endregion
#region Constructors
@@ -248,7 +251,7 @@ namespace Tango.PPC.Jobs.ViewModels
DeleteJobsCommand = new RelayCommand(() => DeleteJobs(SelectedJobs));
CloneJobsCommand = new RelayCommand(() => CloneJobs(SelectedJobs));
ExportJobCommand = new RelayCommand(ExportJob);
-
+
RegisterForMessage<JobRemovedMessage>(HandleJobRemovedMessage);
RegisterForMessage<JobSavedMessage>(HandleJobSavedMessage);
RegisterForMessage<NavigatedToJobsModuleMessage>((x) => Filter = null);
@@ -345,7 +348,7 @@ namespace Tango.PPC.Jobs.ViewModels
/// <summary>
/// Loads the jobs from database.
/// </summary>
- public void LoadJobs(Action onCompleted = null)
+ public void LoadJobs(Action onCompleted = null, bool animate = true)
{
try
{
@@ -353,7 +356,7 @@ namespace Tango.PPC.Jobs.ViewModels
Task.Factory.StartNew(() =>
{
- IsLoadingJobs = true;
+ if (animate) IsLoadingJobs = true;
Thread.Sleep(500);
@@ -417,32 +420,32 @@ namespace Tango.PPC.Jobs.ViewModels
var settings = SettingsManager.Default.GetOrCreate<JobsModuleSettings>();
var machine = MachineProvider.Machine;
-
- if(_rmls.Count == 0)
+
+ if (_rmls.Count == 0)
{
await Task.Delay(200);
}
var selectedRmlGuid = Settings.DefaultRmlGuid;
- JobCreationViewVM vm = new JobCreationViewVM( _spoolTypes.ToList(), _rmls.ToList(), selectedRmlGuid, 0, false );
-
+ JobCreationViewVM vm = new JobCreationViewVM(_spoolTypes.ToList(), _rmls.ToList(), selectedRmlGuid, 0, false);
+
var selectedSpoolTypeGuid = Settings.SpoolTypeGuid;
- vm.SelectedSpoolType = false == String.IsNullOrEmpty(selectedSpoolTypeGuid ) ? _spoolTypes.FirstOrDefault( x=>x.Guid == selectedSpoolTypeGuid) : _spoolTypes.FirstOrDefault(x=>x.Type == SpoolTypes.StandardSpool);
+ vm.SelectedSpoolType = false == String.IsNullOrEmpty(selectedSpoolTypeGuid) ? _spoolTypes.FirstOrDefault(x => x.Guid == selectedSpoolTypeGuid) : _spoolTypes.FirstOrDefault(x => x.Type == SpoolTypes.StandardSpool);
if (twnFile == null)
{
vm = await NotificationProvider.ShowDialog<JobCreationViewVM>(vm);
if (!vm.DialogResult) return;
-
- if(vm.SelectedRML != null)
+
+ if (vm.SelectedRML != null)
{
selectedRmlGuid = vm.SelectedRML.Guid;
}
- if(vm.SelectedSpoolType != null)
+ if (vm.SelectedSpoolType != null)
{
selectedSpoolTypeGuid = vm.SelectedSpoolType.Guid;
}
-
+
}
-
+
Job job = new Job();
job.LastUpdated = DateTime.UtcNow;
job.JobSource = JobSource.Local;
@@ -463,7 +466,7 @@ namespace Tango.PPC.Jobs.ViewModels
job.RmlGuid = selectedRmlGuid;
job.WindingMethodGuid = Adapter.WindingMethods.FirstOrDefault().Guid;
job.SpoolTypeGuid = selectedSpoolTypeGuid;
-
+
if (Jobs.Count > 0)
{
job.JobIndex = Jobs.Max(x => x.JobIndex) + 1;
@@ -529,7 +532,7 @@ namespace Tango.PPC.Jobs.ViewModels
LogManager.Log($"Job {job.Name} added successfully.");
RaiseMessage(new JobSelectedMessage() { Job = job, Context = _db });
-
+
await Task.Delay(200);
await NavigationManager.NavigateWithObject<JobsV2Module, JobView, JobNavigationObject>(new JobNavigationObject()
@@ -544,7 +547,7 @@ namespace Tango.PPC.Jobs.ViewModels
await NotificationProvider.ShowError("An error occurred while trying to add a new job.");
}
}
-
+
/// <summary>
/// Deletes the specified jobs from db.
/// </summary>
@@ -690,6 +693,8 @@ namespace Tango.PPC.Jobs.ViewModels
}
MachineDataSynchronizer.SynchronizationEnded += MachineDataSynchronizer_SynchronizationEnded;
+
+ RemoteJobUploadService.JobReceived += RemoteJobUploadService_JobReceived;
}
public override void OnNavigatedTo()
@@ -837,7 +842,9 @@ namespace Tango.PPC.Jobs.ViewModels
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- var segments = await SegmentsCsvHelper.FromFile(item.Path, MachineProvider.Machine, db);
+ var result = await SegmentsCsvHelper.FromFile(item.Path, MachineProvider.Machine, db);
+ var segments = result.Segments;
+
Job job = new Job();
job.LastUpdated = DateTime.UtcNow;
@@ -865,11 +872,16 @@ namespace Tango.PPC.Jobs.ViewModels
IColorConverter converter = new DefaultColorConverter();
- foreach (var stop in segments.SelectMany(x => x.BrushStops.Where(y => y.BrushColorSpace == ColorSpaces.Volume)))
+ foreach (var stop in segments.SelectMany(x => x.BrushStops))
{
var output = converter.Convert(stop, false);
var suggestion = output.CreateSingleSuggestion();
- stop.Color = suggestion.Color;
+ stop.Red = suggestion.Color.R;
+ stop.Green = suggestion.Color.G;
+ stop.Blue = suggestion.Color.B;
+ stop.BestMatchR = suggestion.Color.R;
+ stop.BestMatchG = suggestion.Color.G;
+ stop.BestMatchB = suggestion.Color.B;
}
db.Jobs.Add(job);
@@ -890,6 +902,91 @@ namespace Tango.PPC.Jobs.ViewModels
#endregion
+ #region Handle CSV Job File Received By Remote Job Upload Service
+
+ private void RemoteJobUploadService_JobReceived(object sender, Common.RemoteJobUpload.RemoteJobReceivedEventArgs e)
+ {
+ if (e.Type == RemoteJobUploadType.CSV)
+ {
+ Task.Factory.StartNew(async () =>
+ {
+ try
+ {
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var result = await SegmentsCsvHelper.FromFile(e.FilePath, MachineProvider.Machine, db);
+ var segments = result.Segments;
+
+ String rmlGuid = null;
+
+ if (result.Rml != null)
+ {
+ rmlGuid = result.Rml.Guid;
+ }
+ else
+ {
+ rmlGuid = Settings.DefaultRmlGuid;
+ }
+
+ Job job = new Job();
+ job.LastUpdated = DateTime.UtcNow;
+ job.JobSource = JobSource.Local;
+ job.Name = e.Name;
+ job.NumberOfHeads = 1;
+ job.NumberOfUnits = 1;
+ job.SampleUnitsOrMeters = 1;
+ job.CreationDate = DateTime.UtcNow;
+ job.JobStatus = JobStatuses.Draft;
+ job.JobType = JobTypes.Knitting;
+ job.EnableLubrication = true;
+ job.MachineGuid = MachineProvider.Machine.Guid;
+ job.RmlGuid = rmlGuid;
+ job.Machine = await new MachineBuilder(db).Set(job.MachineGuid).WithCats().WithConfiguration().BuildAsync();
+ job.Rml = await new RmlBuilder(db).Set(job.RmlGuid).WithActiveParametersGroup().WithCAT(MachineProvider.Machine.Guid).WithCCT().WithGbdAndLub().WithLiquidFactors().BuildAsync();
+ job.WindingMethodGuid = Adapter.WindingMethods.FirstOrDefault().Guid;
+ job.SpoolTypeGuid = Settings.SpoolTypeGuid != null ? Settings.SpoolTypeGuid : Adapter.SpoolTypes.FirstOrDefault().Guid;
+
+ foreach (var segment in segments)
+ {
+ segment.Job = job;
+ job.Segments.Add(segment);
+ }
+
+ IColorConverter converter = new DefaultColorConverter();
+
+ foreach (var stop in segments.SelectMany(x => x.BrushStops).Where(x => x.BrushColorSpace != ColorSpaces.RGB))
+ {
+ var output = converter.Convert(stop, false);
+ var suggestion = output.CreateSingleSuggestion();
+ stop.Red = suggestion.Color.R;
+ stop.Green = suggestion.Color.G;
+ stop.Blue = suggestion.Color.B;
+ stop.BestMatchR = suggestion.Color.R;
+ stop.BestMatchG = suggestion.Color.G;
+ stop.BestMatchB = suggestion.Color.B;
+ }
+
+ db.Jobs.Add(job);
+ await db.SaveChangesAsync();
+ }
+
+ LoadJobs(() =>
+ {
+ NotificationProvider.PushNotification(new MessageNotificationItem($"Csv job '{e.Name}' received successfully.", "", MessageNotificationItem.MessageNotificationItemTypes.Success, () => { }, NotificationItem.NotificationPriority.Low));
+ e.Confirm();
+ }, false);
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, "Error occurred on remote job upload.");
+ e.Abort(ex.FlattenMessage());
+ }
+ });
+ }
+ }
+
+ #endregion
+
#region Handle TCC File Loading From Storage
private async void HandleColorProfileFileLoaded(List<ExplorerFileItem> tccFiles)