From e35b6606b820ad4bad1e4c23bcdcc091a10624bf Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 7 Dec 2020 02:17:17 +0200 Subject: Updated roles and permissions graph. --- .../Roles & Permissions/Roles & Permissions.eddx | Bin 19707 -> 19839 bytes .../FSE/Roles & Permissions/Roles & Permissions.pdf | Bin 25792 -> 25787 bytes .../FSE/Roles & Permissions/Twine Technician.csv | 1 + 3 files changed, 1 insertion(+) (limited to 'Software') diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx index dcabc3bf9..3375ea636 100644 Binary files a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx and b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.eddx differ diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf index f5bf232bd..68ba1e296 100644 Binary files a/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf and b/Software/Visual_Studio/FSE/Roles & Permissions/Roles & Permissions.pdf differ diff --git a/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv b/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv index 2b1ce91aa..b3777ed89 100644 --- a/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv +++ b/Software/Visual_Studio/FSE/Roles & Permissions/Twine Technician.csv @@ -16,3 +16,4 @@ Modify Machine Hardware DataStore Read DataStore Write Reset Machine Counters +Emulate Machine Events -- cgit v1.3.1 From 0bd41535d72cf2e6c50267783bfd098ae5263d6e Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Mon, 7 Dec 2020 02:18:31 +0200 Subject: Prevent site's organization change when causing machines => site <= organization discrepancy. --- .../Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'Software') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs index 92dd8273d..cacda1e8d 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.Sites/ViewModels/SiteDetailsViewVM.cs @@ -125,6 +125,12 @@ namespace Tango.MachineStudio.Sites.ViewModels using (_notification.PushTaskItem("Saving site details...")) { + //Check if site organization has changed and there are no machines that belongs to this site but different organization. + if (_db.Machines.Any(x => x.SiteGuid == Site.Guid && x.OrganizationGuid != Site.OrganizationGuid)) + { + throw new InvalidOperationException($"One or more machines belongs to this site but not to '{Site.Organization.Name}' organization."); + } + //Remove site rmls. Site.SitesRmls.ToList().Where(x => !Rmls.SynchedSource.ToList().Exists(y => y.Guid == x.RmlGuid)).ToList().ForEach(x => _db.SitesRmls.Remove(x)); Site.SitesCatalogs.ToList().Where(x => !Catalogs.SynchedSource.ToList().Exists(y => y.Guid == x.ColorCatalogGuid)).ToList().ForEach(x => _db.SitesCatalogs.Remove(x)); -- cgit v1.3.1 From a63b5db93859fac695d1b9faea23b79e3a070179 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Fri, 11 Dec 2020 04:45:05 +0200 Subject: Fixed issues with reset counters. Display general authorization error instead of unexpected application error. Display environment on FSE. Completed cleaner dispensing dialog. Hide/show "Open/Close dyeing head lid" on Flat/Arc. Emulator will raise proper "Opened" events after "Open dyeing head lid" command. Updated EF Extensions version to all project due to a bug in "DeleteFromQuery". --- .../ViewModels/FileSystemViewVM.cs | 53 +++++++------ .../ViewModels/SettingsViewVM.cs | 49 ++++++++---- .../ViewModels/FileSystemViewVM.cs | 92 +++++++++++++--------- .../Services/MachineConfigurationService.cs | 15 +++- .../FSE/Tango.FSE.BL/Tango.FSE.BL.csproj | 12 +-- .../Visual_Studio/FSE/Tango.FSE.BL/packages.config | 6 +- .../FSE/Tango.FSE.Common/Resources/Converters.xaml | 2 + .../Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs | 27 ++++--- .../DefaultAuthenticationProvider.cs | 7 +- .../DefaultFileAssociationProvider.cs | 2 +- .../FSE/Tango.FSE.UI/Views/LayoutView.xaml | 15 ++++ .../Dialogs/CleanerDispensingView.xaml | 35 +++++--- .../Dialogs/CleanerDispensingViewVM.cs | 2 +- .../Views/MaintenanceView.xaml | 3 +- .../PPC/Tango.PPC.Common/Resources/Merged.xaml | 2 + Software/Visual_Studio/Tango.BL/Tango.BL.csproj | 14 ++-- Software/Visual_Studio/Tango.BL/packages.config | 6 +- .../Tango.Emulations/Emulators/MachineEmulator.cs | 18 +++++ .../IsToStringEqualToVisibilityConverter.cs | 23 ++++++ .../Tango.SharedUI/Tango.SharedUI.csproj | 3 +- .../Tango.JobRunsGenerator.csproj | 12 +-- .../Tango.JobRunsGenerator/packages.config | 6 +- .../Tango.MachineService.csproj | 14 ++-- .../Web/Tango.MachineService/packages.config | 6 +- 24 files changed, 282 insertions(+), 142 deletions(-) create mode 100644 Software/Visual_Studio/Tango.SharedUI/Converters/IsToStringEqualToVisibilityConverter.cs (limited to 'Software') diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs index 4c88d65be..e2be72127 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.Firmware/ViewModels/FileSystemViewVM.cs @@ -433,40 +433,47 @@ namespace Tango.FSE.Firmware.ViewModels private async void UploadFiles(List files) { - String currentPathBefore = CurrentPath; - - foreach (var file in files) - { - if (!File.Exists(file)) - { - await NotificationProvider.ShowError($"File '{file}' cannot be uploaded."); - return; - } - } - - foreach (var file in files) + try { - String itemName = Path.GetFileName(file); + String currentPathBefore = CurrentPath; - if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower())) + foreach (var file in files) { - if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + if (!File.Exists(file)) { - continue; + await NotificationProvider.ShowError($"File '{file}' cannot be uploaded."); + return; } } - var handler = await FirmwareStorageProvider.Upload(file, Path.Combine(CurrentItem.Path, Path.GetFileName(file))); - - handler.StatusChanged += (x, status) => + foreach (var file in files) { - if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + String itemName = Path.GetFileName(file); + + if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower())) { - NavigateToCurrentPath(); + if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + { + continue; + } } - }; - FileSystemHandlers.Insert(0, handler); + var handler = await FirmwareStorageProvider.Upload(file, Path.Combine(CurrentItem.Path, Path.GetFileName(file))); + + handler.StatusChanged += (x, status) => + { + if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + { + NavigateToCurrentPath(); + } + }; + + FileSystemHandlers.Insert(0, handler); + } + } + catch (Exception ex) + { + await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}"); } } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs index ed2cbd714..a8300b9b7 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/SettingsViewVM.cs @@ -81,11 +81,19 @@ namespace Tango.FSE.MachineConfiguration.ViewModels private async void SaveConfiguration() { - using (NotificationProvider.PushTaskItem("Saving machine configuration...")) + try { - EditingComposition.Machine.SiteGuid = SelectedSite.Guid; - EditingComposition = await Services.MachineConfigurationService.SaveMachineEditingComposition(EditingComposition); - await NotificationProvider.ShowSuccess("Machine configuration saved successfully."); + using (NotificationProvider.PushTaskItem("Saving machine configuration...")) + { + EditingComposition.Machine.SiteGuid = SelectedSite.Guid; + EditingComposition = await Services.MachineConfigurationService.SaveMachineEditingComposition(EditingComposition); + await NotificationProvider.ShowSuccess("Machine configuration saved successfully."); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error saving the machine configuration."); + await NotificationProvider.ShowError($"Error saving the machine configuration.\n{ex.FlattenMessage()}"); } } @@ -105,24 +113,33 @@ namespace Tango.FSE.MachineConfiguration.ViewModels if (!await NotificationProvider.ShowWarningQuestion("Resetting the machine counters will delete the entire job runs history. Are you sure?", "RESET COUNTERS", "CANCEL")) return; - using (var task = NotificationProvider.PushTaskItem("Resetting machine counters...")) + try { - task.UpdateProgress("Resetting local machine counters..."); - - var result = await RemoteSqlProvider.ExecuteSqlCommandAsync(new RemoteSqlCommand() + using (var task = NotificationProvider.PushTaskItem("Resetting machine counters...")) { - Mode = RemoteSqlCommandMode.Local, - Timeout = 30, - SQL = "DELETE FROM JOB_RUNS" - }); + task.UpdateProgress("Resetting local machine counters..."); - int localJobRuns = result.LocalAffectedRecords; + var result = await RemoteSqlProvider.ExecuteSqlCommandAsync(new RemoteSqlCommand() + { + Mode = RemoteSqlCommandMode.Local, + Timeout = 30, + SQL = "DELETE FROM JOB_RUNS" + }); - task.UpdateProgress("Resetting global machine counters..."); + int localJobRuns = result.LocalAffectedRecords; - int remoteJobRuns = await Services.MachineConfigurationService.ResetCounters(EditingComposition.Machine.Guid); + task.UpdateProgress("Resetting global machine counters..."); - await NotificationProvider.ShowSuccess("Machine counters deleted successfully."); + int remoteJobRuns = await Services.MachineConfigurationService.ResetCounters(EditingComposition.Machine.Guid); + EditingComposition.ResetCounters(); + + await NotificationProvider.ShowSuccess("Machine counters deleted successfully."); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error resetting machine counters."); + await NotificationProvider.ShowError($"Error resetting the machine counters.\n{ex.FlattenMessage()}"); } } diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs index b34c8c527..2ab3e5c62 100644 --- a/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs +++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.PPCConsole/ViewModels/FileSystemViewVM.cs @@ -326,31 +326,38 @@ namespace Tango.FSE.PPCConsole.ViewModels private async void OnItemsDroppedIn(List items) { - String currentPathBefore = CurrentPath; - - foreach (var item in items.Where(x => x.Type != FileSystemItemType.Drive)) + try { - Debug.WriteLine($"Dropped in: {item.Name} => {CurrentItem.Path}"); + String currentPathBefore = CurrentPath; - if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == item.Name.ToLower())) + foreach (var item in items.Where(x => x.Type != FileSystemItemType.Drive)) { - if (!await NotificationProvider.ShowWarningQuestion($"'{item.Name}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + Debug.WriteLine($"Dropped in: {item.Name} => {CurrentItem.Path}"); + + if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == item.Name.ToLower())) { - continue; + if (!await NotificationProvider.ShowWarningQuestion($"'{item.Name}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + { + continue; + } } - } - var handler = await FileSystemProvider.Upload(item.Path, CurrentItem); + var handler = await FileSystemProvider.Upload(item.Path, CurrentItem); - handler.StatusChanged += (x, status) => - { - if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + handler.StatusChanged += (x, status) => { - NavigateToCurrentPath(); - } - }; + if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + { + NavigateToCurrentPath(); + } + }; - FileSystemHandlers.Insert(0, handler); + FileSystemHandlers.Insert(0, handler); + } + } + catch (Exception ex) + { + await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}"); } } @@ -552,40 +559,47 @@ namespace Tango.FSE.PPCConsole.ViewModels var result = await StorageProvider.SelectFilesAndFolders("Select files and folders to upload"); if (result) { - String currentPathBefore = CurrentPath; - - foreach (var item in result.SelectedItems) - { - if (!File.Exists(item) && !Directory.Exists(item)) - { - await NotificationProvider.ShowError($"File or folder '{item}' cannot be uploaded."); - return; - } - } - - foreach (var item in result.SelectedItems) + try { - String itemName = Path.GetFileName(item); + String currentPathBefore = CurrentPath; - if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower())) + foreach (var item in result.SelectedItems) { - if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + if (!File.Exists(item) && !Directory.Exists(item)) { - continue; + await NotificationProvider.ShowError($"File or folder '{item}' cannot be uploaded."); + return; } } - var handler = await FileSystemProvider.Upload(item, CurrentItem); - - handler.StatusChanged += (x, status) => + foreach (var item in result.SelectedItems) { - if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + String itemName = Path.GetFileName(item); + + if ((CurrentItem as IFileSystemContainer).Items.ToList().Exists(x => x.Name.ToLower() == itemName.ToLower())) { - NavigateToCurrentPath(); + if (!await NotificationProvider.ShowWarningQuestion($"'{itemName}' already exists on '{CurrentItem.Name}'. Do you want to overwrite?")) + { + continue; + } } - }; - FileSystemHandlers.Insert(0, handler); + var handler = await FileSystemProvider.Upload(item, CurrentItem); + + handler.StatusChanged += (x, status) => + { + if (status == FileSystemHandlerStatus.Completed && currentPathBefore == CurrentPath) + { + NavigateToCurrentPath(); + } + }; + + FileSystemHandlers.Insert(0, handler); + } + } + catch (Exception ex) + { + await NotificationProvider.ShowError($"Error uploading to file system.\n{ex.FlattenMessage()}"); } } } diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs index 5b7991f44..6dec3a40d 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Services/MachineConfigurationService.cs @@ -9,12 +9,13 @@ using System.Data.Entity; using Tango.BL.Builders; using Tango.BL.DTO; using Tango.BL.Enumerations; +using Tango.Core; namespace Tango.FSE.BL.Services { public class MachineConfigurationService : FSEServiceBase { - public class MachineEditingComposition : IDisposable + public class MachineEditingComposition : ExtendedObject, IDisposable { internal MachineDTO PreviousMachineState { get; set; } @@ -31,6 +32,14 @@ namespace Tango.FSE.BL.Services HardwareVersions = new List(); } + public void ResetCounters() + { + TotalDyeMeters = "0 meters"; + RaisePropertyChanged(nameof(TotalDyeMeters)); + TotalDyeTime = "00:00:00"; + RaisePropertyChanged(nameof(TotalDyeTime)); + } + public void Dispose() { Context?.Dispose(); @@ -100,7 +109,9 @@ namespace Tango.FSE.BL.Services { return Task.Factory.StartNew(() => { - using (ObservablesContext db = new ObservablesContext()) + Authentication.ThrowIfNoPermission(Permissions.FSE_ResetMachineCounters); + + using (ObservablesContext db = ObservablesContext.CreateDefault()) { var sn = db.Machines.SingleOrDefault(x => x.Guid == machineGuid).SerialNumber; ActionLogManager.InsertLog(ActionLogType.MachineCountersReset, CurrentUser.Guid, sn, machineGuid, "Machine counters reset via FSE."); diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj index c361f1d3f..00025adb5 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/Tango.FSE.BL.csproj @@ -76,14 +76,14 @@ - - ..\..\packages\Z.EntityFramework.Extensions.4.0.58\lib\net45\Z.EntityFramework.Extensions.dll + + ..\..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll - - ..\..\packages\Z.EntityFramework.Plus.EF6.1.12.19\lib\net45\Z.EntityFramework.Plus.EF6.dll + + ..\..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll - - ..\..\packages\Z.Expressions.Eval.3.1.8\lib\net45\Z.Expressions.Eval.dll + + ..\..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll ..\..\packages\ZSpitz.Util.0.0.6\lib\netstandard2.0\ZSpitz.Util.dll diff --git a/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config b/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config index 413d8b6de..0f62e5b36 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config +++ b/Software/Visual_Studio/FSE/Tango.FSE.BL/packages.config @@ -9,8 +9,8 @@ - - - + + + \ No newline at end of file diff --git a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml index dcc60e62c..54f8e5d63 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml +++ b/Software/Visual_Studio/FSE/Tango.FSE.Common/Resources/Converters.xaml @@ -47,4 +47,6 @@ + + \ No newline at end of file diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs index 0f35e985d..fec442831 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/App.xaml.cs @@ -263,19 +263,26 @@ namespace Tango.FSE.UI if (notificationProvider != null) { - notificationProvider.PushSnackbarItem(MessageType.Error, "Application Error", true, "Unexpected error has occurred\nTap to report this issue.", null, null, () => + if (e.Exception.GetType() == typeof(AuthorizationException)) { - if (bugReporter != null) + notificationProvider.PushSnackbarItem(MessageType.Error, "Authorization Error", true, "You are not authorized to perform the specified action.", TimeSpan.FromSeconds(8)); + } + else + { + notificationProvider.PushSnackbarItem(MessageType.Error, "Application Error", true, "Unexpected error has occurred\nTap to report this issue.", null, null, () => { - bugReporter.ShowBugReportDialog(new Bug() + if (bugReporter != null) { - Title = $"Unexpected Application Error", - Description = e.Exception.Message, - Type = BugType.FSE, - Exception = e.Exception - }); - } - }); + bugReporter.ShowBugReportDialog(new Bug() + { + Title = $"Unexpected Application Error", + Description = e.Exception.Message, + Type = BugType.FSE, + Exception = e.Exception + }); + } + }); + } } } catch (Exception ex) diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs index 309839831..e1399560e 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Authentication/DefaultAuthenticationProvider.cs @@ -70,10 +70,15 @@ namespace Tango.FSE.UI.Authentication } } + private EnvironmentConfiguration _currentEnvironment; /// /// Gets the current environment configuration. /// - public EnvironmentConfiguration CurrentEnvironment { get; private set; } + public EnvironmentConfiguration CurrentEnvironment + { + get { return _currentEnvironment; } + private set { _currentEnvironment = value; RaisePropertyChangedAuto(); } + } /// /// Initializes a new instance of the class. diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs index 89364cbbd..b1f750f4d 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/FileAssociation/DefaultFileAssociationProvider.cs @@ -45,7 +45,7 @@ namespace Tango.FSE.UI.FileAssociation public async void OnApplicationReady(IFSEApplicationManager applicationManager) { - if (!_initialized) return; + if (_initialized) return; _initialized = true; diff --git a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml index 1857168ba..35e4ffc6a 100644 --- a/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml +++ b/Software/Visual_Studio/FSE/Tango.FSE.UI/Views/LayoutView.xaml @@ -110,6 +110,21 @@ + + + + + + + + diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml index 5fa737221..98be45608 100644 --- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml +++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Maintenance/Dialogs/CleanerDispensingView.xaml @@ -6,28 +6,45 @@ xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch" xmlns:local="clr-namespace:Tango.PPC.Maintenance.Dialogs" mc:Ignorable="d" - Background="{StaticResource TangoPrimaryBackgroundBrush}" d:DesignHeight="555" d:DesignWidth="560" Width="600" Height="800" d:DataContext="{d:DesignInstance Type=local:CleanerDispensingViewVM, IsDesignTimeCreatable=False}"> + Background="{StaticResource TangoPrimaryBackgroundBrush}" d:DesignHeight="555" d:DesignWidth="560" Width="600" Height="950" d:DataContext="{d:DesignInstance Type=local:CleanerDispensingViewVM, IsDesignTimeCreatable=False}"> Dispense Cleaning Liquid + + + + Please put on safety glasses + +