diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-05-12 15:20:57 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-05-12 15:20:57 +0300 |
| commit | 5c1649221047dd4fe3d8de124f21a878a3e4b555 (patch) | |
| tree | b55bf8dd4d1a000162313224aa787ca253559bdd /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels | |
| parent | 896c8152facdee8e78f54d3dfdf324e7415173ba (diff) | |
| download | Tango-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')
2 files changed, 90 insertions, 93 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); } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/RmlDeleteDialogViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/RmlDeleteDialogViewVM.cs index b4c6c6274..ed3ddae5b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/RmlDeleteDialogViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/RmlDeleteDialogViewVM.cs @@ -5,6 +5,7 @@ using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core; +using Tango.MachineStudio.RML.Models; using Tango.SharedUI; namespace Tango.MachineStudio.RML.ViewModels @@ -35,7 +36,7 @@ namespace Tango.MachineStudio.RML.ViewModels } - public Rml TargetRml { get; set; } + public RmlModel TargetRml { get; set; } public override string ToString() { @@ -52,13 +53,13 @@ namespace Tango.MachineStudio.RML.ViewModels set { _jobsActions = value; RaisePropertyChangedAuto(); } } - public Rml Rml { get; set; } + public RmlModel Rml { get; set; } - public List<Rml> Rmls { get; set; } + public List<RmlModel> Rmls { get; set; } public List<RmlDeleteJobAction> Actions { get; set; } - public RmlDeleteDialogViewVM(Rml rml, List<Rml> rmls, List<Job> jobsToDelete) + public RmlDeleteDialogViewVM(RmlModel rml, List<RmlModel> rmls, List<Job> jobsToDelete) { Rml = rml; Rmls = rmls.Where(x => x.Guid != rml.Guid).ToList(); |
