aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-12 15:20:57 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2021-05-12 15:20:57 +0300
commit5c1649221047dd4fe3d8de124f21a878a3e4b555 (patch)
treeb55bf8dd4d1a000162313224aa787ca253559bdd /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
parent896c8152facdee8e78f54d3dfdf324e7415173ba (diff)
downloadTango-5c1649221047dd4fe3d8de124f21a878a3e4b555.tar.gz
Tango-5c1649221047dd4fe3d8de124f21a878a3e4b555.zip
RML module and Machine designer lists performance improvements !
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs174
1 files changed, 85 insertions, 89 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
index b3e020c85..272316b02 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
@@ -35,30 +35,15 @@ namespace Tango.MachineStudio.RML.ViewModels
private IActionLogManager _actionLogManager;
private RmlDTO _rmlBeforeSave;
- private ObservablesContext _rmls_context;
private ObservablesContext _active_context;
- private ObservableCollection<Rml> _rmls;
- public ObservableCollection<Rml> Rmls
+ private List<RmlModel> _rmls;
+ public List<RmlModel> Rmls
{
get { return _rmls; }
set { _rmls = value; RaisePropertyChangedAuto(); }
}
- private ICollectionView _rmlssCollectionView;
- /// <summary>
- /// Gets or sets the RML collection view.
- /// </summary>
- public ICollectionView RmlsCollectionView
- {
- get { return _rmlssCollectionView; }
- set
- {
- _rmlssCollectionView = value;
- RaisePropertyChangedAuto();
- }
- }
-
private ObservableCollection<MediaMaterial> _materials;
public ObservableCollection<MediaMaterial> Materials
{
@@ -122,8 +107,8 @@ namespace Tango.MachineStudio.RML.ViewModels
set { _btsrYarnTypes = value; RaisePropertyChangedAuto(); }
}
- private Rml _selectedRML;
- public Rml SelectedRML
+ private RmlModel _selectedRML;
+ public RmlModel SelectedRML
{
get { return _selectedRML; }
set { _selectedRML = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
@@ -291,61 +276,56 @@ namespace Tango.MachineStudio.RML.ViewModels
public override void OnApplicationReady()
{
- LoadRmls();
+
}
- private async void LoadRmls()
+ private async Task LoadRmls()
{
- try
- {
- IsFree = false;
-
- using (_notification.PushTaskItem("Loading Rmls..."))
- {
- if (_rmls_context != null) _rmls_context.Dispose();
+ var filter = RMLFilter.ToStringOrEmpty().ToLower();
- _rmls_context = ObservablesContext.CreateDefault();
- Rmls = await new RmlsCollectionBuilder(_rmls_context).SetAll().WithLiquidFactors().WithMediaProperties().BuildAsync();
- //Load CCT file names...
- var ccts = await _rmls_context.Ccts.Select(x => new
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var rmls = await db.Rmls.Where(x => x.Name.ToLower().Contains(filter))
+ .Include(x => x.Cct.FileName)
+ .Include(x => x.LiquidTypesRmls.Select(y => y.LiquidType))
+ .Include(x => x.BtsrApplicationType.Name)
+ .Include(x => x.BtsrYarnType.Name)
+ .Select(x => new
{
x.Guid,
- x.FileName
+ x.Name,
+ x.DisplayName,
+ x.Cct.FileName,
+ x.ColorConversionVersion,
+ x.UseColorLibGradients,
+ x.UseLightInks,
+ x.HeadType,
+ x.LastUpdated,
+ BtsrApplicationType = x.BtsrApplicationType != null ? x.BtsrApplicationType.Name : String.Empty,
+ BtsrYarnType = x.BtsrYarnType != null ? x.BtsrYarnType.Name : String.Empty,
+ LiquidTypes = x.LiquidTypesRmls.Select(y => y.LiquidType)
}).ToListAsync();
- foreach (var rml in Rmls)
- {
- var cct = ccts.SingleOrDefault(x => x.Guid == rml.CctGuid);
-
- if (cct != null)
- {
- rml.Cct = new Cct()
- {
- Guid = cct.Guid,
- FileName = cct.FileName,
- };
- }
- }
- RmlsCollectionView = CollectionViewSource.GetDefaultView(Rmls);
- RmlsCollectionView.SortDescriptions.Add(new SortDescription(nameof(Rml.LastUpdated), ListSortDirection.Descending));
- //RmlsCollectionView.Filter = new Predicate<object>(FilterCollection);
+ List<RmlModel> models = new List<RmlModel>();
- RmlsCollectionView.Filter = (rml) =>
- {
- Rml r = rml as Rml;
- return String.IsNullOrWhiteSpace(RMLFilter)
- || r.Name.ToLower().Contains(RMLFilter.ToLower());
- };
+ foreach (var rml in rmls.OrderBy(x => x.Name).ToList())
+ {
+ RmlModel model = new RmlModel();
+ model.Guid = rml.Guid;
+ model.Name = rml.Name;
+ model.LastUpdated = rml.LastUpdated;
+ model.DisplayName = rml.DisplayName;
+ model.CCT = rml.FileName + " v" + rml.ColorConversionVersion;
+ model.UseGradients = rml.UseColorLibGradients;
+ model.UseLightInks = rml.UseLightInks;
+ model.HeadType = (HeadTypes)rml.HeadType;
+ model.Btsr = rml.BtsrApplicationType + ", " + rml.BtsrYarnType;
+ model.LiquidTypes = rml.LiquidTypes.OrderBy(x => x.Code).Select(x => x.Color).ToList();
+ models.Add(model);
}
- }
- catch (Exception ex)
- {
- LogManager.Log(ex, $"Error loading RMLS.\n{ex.FlattenMessage()}");
- }
- finally
- {
- IsFree = true;
+
+ Rmls = models;
}
}
@@ -534,7 +514,21 @@ namespace Tango.MachineStudio.RML.ViewModels
rml.DisplayName = name;
rml.QualificationDate = DateTime.UtcNow;
rml.Manufacturer = "Twine";
- rml.Code = Rmls.Count > 0 ? Rmls.Max(x => x.Code) + 1 : 1;
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ int count = db.Rmls.Count();
+
+ if (count > 0)
+ {
+ rml.Code = (await db.Rmls.MaxAsync(x => x.Code)) + 1;
+ }
+ else
+ {
+ rml.Code = 1;
+ }
+ }
+
rml.MediaMaterial = Materials.FirstOrDefault();
rml.MediaPurpose = Purposes.FirstOrDefault();
rml.MediaCondition = Conditions.FirstOrDefault();
@@ -574,23 +568,24 @@ namespace Tango.MachineStudio.RML.ViewModels
{
try
{
- IsFree = false;
-
- var rml_jobs = await _rmls_context.Jobs.Where(x => x.RmlGuid == SelectedRML.Guid).Include(x => x.Machine).OrderBy(x => x.Machine.SerialNumber).ToListAsync();
-
- if (rml_jobs.Count > 0)
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- var vm = new RmlDeleteDialogViewVM(SelectedRML, Rmls.ToList(), rml_jobs.ToList());
- _notification.ShowModalDialog<RmlDeleteDialogViewVM, RmlDeleteDialogView>(vm, (x) => { }, () => { });
+ IsFree = false;
- if (!vm.DialogResult)
- {
- return;
- }
+ var selectedRml = await db.Rmls.FirstAsync(x => x.Guid == SelectedRML.Guid);
+ var rml_jobs = await db.Jobs.Where(x => x.RmlGuid == SelectedRML.Guid).Include(x => x.Machine).OrderBy(x => x.Machine.SerialNumber).ToListAsync();
- //Perform actions...
- using (var db = ObservablesContext.CreateDefault())
+ if (rml_jobs.Count > 0)
{
+ var vm = new RmlDeleteDialogViewVM(SelectedRML, Rmls.ToList(), rml_jobs.ToList());
+ _notification.ShowModalDialog<RmlDeleteDialogViewVM, RmlDeleteDialogView>(vm, (x) => { }, () => { });
+
+ if (!vm.DialogResult)
+ {
+ return;
+ }
+
+ //Perform actions...
foreach (var jobAction in vm.JobsActions)
{
if (jobAction.Action == RmlDeleteDialogViewVM.RmlDeleteJobAction.Delete)
@@ -605,21 +600,21 @@ namespace Tango.MachineStudio.RML.ViewModels
_actionLogManager.InsertLog(BL.Enumerations.ActionLogType.JobSaved, _authentication.CurrentUser.Guid, jobAction.Job.Name, jobAction.Job.Guid, $"Job RML changed to '{jobAction.TargetRml.Name}' due to RML '{SelectedRML.Name}' being removed.");
}
}
-
- await db.SaveChangesAsync();
}
- }
- await SelectedRML.DeleteCascadeAsync(_rmls_context);
- _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.RmlDeleted, _authentication.CurrentUser, SelectedRML.Name, SelectedRML, "RML deleted from Machine Studio.");
+ await db.SaveChangesAsync();
+
+ await selectedRml.DeleteCascadeAsync(db);
+ _actionLogManager.InsertLog(BL.Enumerations.ActionLogType.RmlDeleted, _authentication.CurrentUser, selectedRml.Name, selectedRml, "RML deleted from Machine Studio.");
- LoadRmls();
+ await LoadRmls();
+ }
}
catch (Exception ex)
{
LogManager.Log(ex, $"Error removing selected RML {SelectedRML?.Name}.");
_notification.ShowError($"An error occurred while trying to remove the selected RML.\n{ex.FlattenMessage()}");
- LoadRmls();
+ await LoadRmls();
}
finally
{
@@ -648,7 +643,7 @@ namespace Tango.MachineStudio.RML.ViewModels
Rml cloned = new Rml();
rml.MapPropertiesTo(cloned, MappingFlags.NoReferenceTypes);
- cloned.Code = Rmls.Max(x => x.Code) + 1;
+ cloned.Code = (await context.Rmls.MaxAsync(x => x.Code)) + 1;
cloned.Guid = Guid.NewGuid().ToString();
cloned.ID = 0;
cloned.Name = name;
@@ -695,7 +690,7 @@ namespace Tango.MachineStudio.RML.ViewModels
_actionLogManager.InsertLog(BL.Enumerations.ActionLogType.RmlCreated, _authentication.CurrentUser, cloned.Name, cloned, "RML cloned from Machine Studio.");
}
- LoadRmls();
+ await LoadRmls();
}
catch (Exception ex)
{
@@ -747,9 +742,9 @@ namespace Tango.MachineStudio.RML.ViewModels
ActiveProcessParametersTableView.Refresh();
}
- private void OnRMLFilterChanged()
+ private async void OnRMLFilterChanged()
{
- RmlsCollectionView.Refresh();
+ await LoadRmls();
}
private void RemoveLiquidFactor(LiquidTypesRml liquidFactor)
@@ -1061,7 +1056,8 @@ namespace Tango.MachineStudio.RML.ViewModels
using (ObservablesContext db = ObservablesContext.CreateDefault())
{
- var rmlJsonFile = await SelectedRML.ToRmlFile(db);
+ var rml = await db.Rmls.FirstAsync(x => x.Guid == SelectedRML.Guid);
+ var rmlJsonFile = await rml.ToRmlFile(db);
File.WriteAllText(dlg.FileName, rmlJsonFile);
}
}