diff options
Diffstat (limited to 'Software/Visual_Studio/Utilities')
164 files changed, 297 insertions, 8981 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs index ae60e04b4..ac31cfb9c 100644 --- a/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.AlarmParametersGenerator/Program.cs @@ -32,7 +32,6 @@ namespace Tango.AlarmParametersGenerator public String Guidance { get; set; } //Embedded - public String Persistent { get; set; } public String SWIndex { get; set; } public String Frequency { get; set; } public String Source { get; set; } @@ -90,20 +89,19 @@ namespace Tango.AlarmParametersGenerator { if (!String.IsNullOrWhiteSpace(item.Source)) { - Console.WriteLine($"Parsing event {item.Code}, {item.Name},{item.Source}..."); + Console.WriteLine($"Parsing event {item.Code}, {item.Name}..."); AlarmHandlingItem alarm = new AlarmHandlingItem(); alarm.AlarmSource = item.Source.ToEnum<AlarmSourceType>(); - //alarm.Frequency = item.Frequency.ToUint(); + alarm.Frequency = item.Frequency.ToUint(); alarm.DeviceId = item.DeviceId.ToUint(); alarm.ModuleDeviceId = item.ApplicationDeviceID.ToUint(); alarm.AlarmValue = item.Criteria.ToUint(); alarm.AlarmDirection = item.Direction.ToBoolean(); alarm.Severity = item.Severity.ToEnum<DebugLogCategory>(); - //alarm.Predecessor = item.Predeccesor.ToUint(); + alarm.Predecessor = item.Predeccesor.ToUint(); alarm.DebounceValue = item.DebounceValue.ToUint(); alarm.EventType = (EventType)item.Code.ToUint(); - alarm.IsPersistent = item.Persistent.ToBooleanYesNo(); parameters.AlarmItem.Add(alarm); } @@ -149,10 +147,5 @@ namespace Tango.AlarmParametersGenerator { return String.IsNullOrWhiteSpace(str) ? false : (str.Contains("0") ? false : true); } - - public static bool ToBooleanYesNo(this String str) - { - return String.IsNullOrWhiteSpace(str) ? false : (str.Contains("Yes") ? true : false); - } } }
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config deleted file mode 100644 index a46da65da..000000000 --- a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/App.config +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <configSections> - <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> - <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> - </configSections> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> - <entityFramework> - <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> - <providers> - <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> - </providers> - </entityFramework> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Z.EntityFramework.Extensions" publicKeyToken="59b66d028979105b" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.50.0" newVersion="4.0.50.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs deleted file mode 100644 index 2306163d1..000000000 --- a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Program.cs +++ /dev/null @@ -1,187 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL; -using Tango.BL.Entities; -using Tango.Core; -using Tango.Core.Helpers; - -namespace Tango.CctOptimizer.CLI -{ - class Program - { - static void Main(string[] args) - { - DataSource dataSource = new DataSource(); - dataSource.Catalog = "Tango_TEST"; - dataSource.Address = "twine.database.windows.net"; - dataSource.IntegratedSecurity = false; - dataSource.UserName = "Roy"; - dataSource.Password = "Aa123456"; - - RESTART: - - Console.Write("Checking CCT Optimizations..."); - - long totalBytes = 0; - - List<Cct> toRemove = new List<Cct>(); - List<Cct> allCCT = new List<Cct>(); - List<Rml> allRmls = new List<Rml>(); - - try - { - using (ObservablesContext db = ObservablesContext.CreateDefault(dataSource)) - { - allRmls = db.Rmls.Where(x => x.CctGuid != null).ToList(); - - var cctsGuids = db.Ccts.Select(x => x.Guid).ToList(); - int cctCount = cctsGuids.Count; - int cctCounter = 0; - - foreach (var guid in cctsGuids) - { - var cct = db.Ccts.SingleOrDefault(x => x.Guid == guid); - allCCT.Add(cct); - cctCounter++; - ClearCurrentConsoleLine(); - Console.Write($"Checking CCT Optimizations... {(int)((double)cctCounter / (double)cctCount * 100d)}%"); - } - - Console.WriteLine(); - Console.WriteLine(); - - //NOT USED - var notUsedCCT = allCCT.Where(x => !allRmls.Exists(y => y.CctGuid == x.Guid)).ToList(); - - Console.WriteLine($"Not used CCT ({notUsedCCT.Count}):"); - Console.WriteLine("---------------------------------------"); - foreach (var cct in notUsedCCT) - { - long length = cct.Data != null ? cct.Data.Length : 0; - totalBytes += length; - toRemove.Add(cct); - Console.WriteLine($"{(cct.FileName != null ? cct.FileName : "N/A")} - {FileHelper.GetFriendlyFileSize(length)}"); - } - - //DUPLICATES - List<Cct> toExamine = allCCT.Where(x => x.FileName != null).Where(x => !notUsedCCT.Contains(x)).ToList(); - List<Cct> uniqueCCTs = toExamine.DistinctBy(x => x.FileName).ToList(); - List<Cct> duplicates = new List<Cct>(); - - foreach (var cct in toExamine) - { - if (uniqueCCTs.Exists(x => x != cct && x.FileName == cct.FileName)) - { - duplicates.Add(cct); - } - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine($"Duplicates CCT ({duplicates.Count}):"); - Console.WriteLine("---------------------------------------"); - foreach (var duplicateGroup in duplicates.GroupBy(x => x.FileName)) - { - long length = duplicateGroup.First().Data != null ? duplicateGroup.First().Data.Length * duplicateGroup.Count() : 0; - totalBytes += length; - - foreach (var cct in duplicateGroup) - { - toRemove.Add(cct); - } - - Console.WriteLine($"{(duplicateGroup.First().FileName != null ? duplicateGroup.First().FileName : "N/A")} - {FileHelper.GetFriendlyFileSize(length)} {(duplicateGroup.Count() > 1 ? $"X{duplicateGroup.Count()}" : String.Empty)}"); - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine($"Total CCT's found: {allCCT.Count}"); - Console.WriteLine($"Optimization will delete {toRemove.Count} CCT records ({FileHelper.GetFriendlyFileSize(totalBytes)})"); - Console.WriteLine(); - - if (toRemove.Count > 0) - { - Console.Write("Press 'Y' to start optimization procedure."); - var key = Console.ReadKey(); - - if (key.Key != ConsoleKey.Y) - { - Environment.Exit(0); - return; - } - } - else - { - Console.WriteLine("Press enter to exit to optimizer..."); - Console.ReadLine(); - Environment.Exit(0); - return; - } - - - //Reassign RMLs from duplicates... - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine("Reassigning RMLs CCTS..."); - Console.WriteLine("---------------------------------------"); - Console.WriteLine(); - - foreach (var rml in allRmls) - { - var duplicateCCT = duplicates.SingleOrDefault(x => x.Guid == rml.CctGuid); - - if (duplicateCCT != null) - { - var uniqueCCT = uniqueCCTs.SingleOrDefault(x => x.FileName == duplicateCCT.FileName); - Console.WriteLine($"Reassigning RML '{rml.Name}' to '{uniqueCCT.FileName} (ID: {uniqueCCT.ID})'..."); - rml.CctGuid = uniqueCCT.Guid; - db.SaveChanges(); - } - } - - //Remove unused and duplicate CCTs... - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine("Removing CCT's..."); - Console.WriteLine("---------------------------------------"); - Console.WriteLine(); - - foreach (var cct in toRemove) - { - Console.WriteLine($"Removing '{cct.FileName}' ID: {cct.ID}..."); - cct.DeleteCascadeAsync(db).Wait(); - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine("Optimization Completed."); - Console.WriteLine(); - Console.WriteLine(); - goto RESTART; - } - } - catch (Exception ex) - { - Console.WriteLine(); - Console.WriteLine(); - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine("Error occurred while trying to perform the optimization."); - Console.WriteLine(ex.ToString()); - Console.WriteLine(); - Console.WriteLine(); - Console.ReadLine(); - } - } - - public static void ClearCurrentConsoleLine() - { - int currentLineCursor = Console.CursorTop; - Console.SetCursorPosition(0, Console.CursorTop); - Console.Write(new string(' ', Console.WindowWidth)); - Console.SetCursorPosition(0, currentLineCursor); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs deleted file mode 100644 index 38926dca0..000000000 --- a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tango.CctOptimizer.CLI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tango.CctOptimizer.CLI")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("69168924-9aa8-447d-ad64-f07dbf4f0909")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj deleted file mode 100644 index 14dd0b54b..000000000 --- a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/Tango.CctOptimizer.CLI.csproj +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{69168924-9AA8-447D-AD64-F07DBF4F0909}</ProjectGuid> - <OutputType>Exe</OutputType> - <RootNamespace>Tango.CctOptimizer.CLI</RootNamespace> - <AssemblyName>Tango.CctOptimizer.CLI</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> - <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.dll</HintPath> - </Reference> - <Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> - <HintPath>..\..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.ComponentModel.DataAnnotations" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Program.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - <None Include="packages.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj"> - <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project> - <Name>Tango.BL</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config b/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config deleted file mode 100644 index b3daf0d6c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.CctOptimizer.CLI/packages.config +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="EntityFramework" version="6.2.0" targetFramework="net461" /> -</packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DBObservablesGenerator.CLI/ObservablesGenerator.cs b/Software/Visual_Studio/Utilities/Tango.DBObservablesGenerator.CLI/ObservablesGenerator.cs index 208adf63f..3280f47f5 100644 --- a/Software/Visual_Studio/Utilities/Tango.DBObservablesGenerator.CLI/ObservablesGenerator.cs +++ b/Software/Visual_Studio/Utilities/Tango.DBObservablesGenerator.CLI/ObservablesGenerator.cs @@ -53,7 +53,7 @@ namespace Tango.DBObservablesGenerator.CLI String table_description = null; var db_des = dbDescriptions.FirstOrDefault(x => x.TableName == table.Name); - if (db_des != null && !String.IsNullOrWhiteSpace(db_des.TableDescription)) + if (db_des != null) { table_description = db_des.TableDescription; } @@ -121,31 +121,24 @@ namespace Tango.DBObservablesGenerator.CLI if (column_description != null) { - DbPropertyExtensionModel dbPropertyExtensionModel = null; + RangeDescriptionModel rangeDescription = null; try { - dbPropertyExtensionModel = JsonConvert.DeserializeObject<DbPropertyExtensionModel>(column_description, new JsonSerializerSettings() - { - NullValueHandling = NullValueHandling.Ignore, - MissingMemberHandling = MissingMemberHandling.Ignore, - }); + rangeDescription = JsonConvert.DeserializeObject<RangeDescriptionModel>(column_description); } catch { } - if (dbPropertyExtensionModel != null) + if (rangeDescription != null && rangeDescription.Description != null) { - codeField.PropertyExtension = dbPropertyExtensionModel; - - if (dbPropertyExtensionModel.Description != null) - { - codeField.DbDescription = dbPropertyExtensionModel.Description.ToLines().Select(x => "/// " + x).Join(Environment.NewLine); - } + codeField.RangeDescription = rangeDescription; + codeField.DbDescription = rangeDescription.Description.ToLines().Select(x => "/// " + x).Join(Environment.NewLine); } else { codeField.DbDescription = column_description.ToLines().Select(x => "/// " + x).Join(Environment.NewLine); } + } if (field.PropertyType.IsGenericType) @@ -154,14 +147,6 @@ namespace Tango.DBObservablesGenerator.CLI { codeField.Type = String.Format("Nullable<{0}>", "DateTime"); } - else if (field.PropertyType == typeof(Nullable<Int32>)) - { - codeField.Type = String.Format("Nullable<{0}>", "Int32"); - } - else if (field.PropertyType == typeof(Nullable<Double>)) - { - codeField.Type = String.Format("Nullable<{0}>", "Double"); - } else { codeField.Type = String.Format("SynchronizedObservableCollection<{0}>", DalNameToStandardName(field.PropertyType.GenericTypeArguments.Single().Name).SingularizeMVC()); @@ -199,7 +184,7 @@ namespace Tango.DBObservablesGenerator.CLI } codeFile.Fields.Add(codeField); - if (field.PropertyType.IsPrimitive || field.PropertyType.IsValueType || field.PropertyType == typeof(String) || field.PropertyType == typeof(byte[])) + if (field.PropertyType.IsPrimitive || field.PropertyType.IsValueType || field.PropertyType == typeof(String)) { dtoCodeBase.Properties.Add(new Property() { @@ -245,7 +230,7 @@ namespace Tango.DBObservablesGenerator.CLI //Generate Enumerations... using (RemoteDB db = new RemoteDB(SettingsManager.Default.GetOrCreate<CoreSettings>().DataSource)) { - foreach (var tableProp in db.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType.IsGenericTypeAndNotNullable())) + foreach (var tableProp in db.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType.IsGenericType)) { try { @@ -395,7 +380,7 @@ namespace Tango.DBObservablesGenerator.CLI codeField.Description = FirstCharacterToLower(DalNameToStandardName(name)); - if (field.PropertyType.IsGenericTypeAndNotNullable()) + if (field.PropertyType.IsGenericType) { continue; } @@ -443,7 +428,7 @@ namespace Tango.DBObservablesGenerator.CLI //Generate Enumerations... using (RemoteDB db = new RemoteDB(SettingsManager.Default.GetOrCreate<CoreSettings>().DataSource)) { - foreach (var tableProp in db.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType.IsGenericTypeAndNotNullable())) + foreach (var tableProp in db.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance).Where(x => x.PropertyType.IsGenericType)) { try { diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyserResultChartData.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyserResultChartData.cs deleted file mode 100644 index 54431968f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyserResultChartData.cs +++ /dev/null @@ -1,74 +0,0 @@ -using OxyPlot; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Core; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class AnalyzerResultChartData : ExtendedObject - { - public ObservableCollection<DataPoint> Points { get; set; } - - public string Title { get; set; } - - private int _step; - public int XStep - { - get { return _step; } - set { _step = value; RaisePropertyChangedAuto(); } - } - - private double _fromXAxis; - public double FromXAxis - { - get { return _fromXAxis; } - set { _fromXAxis = value; RaisePropertyChangedAuto(); } - } - - private double _toXAxis; - public double ToXAxis - { - get { return _toXAxis; } - set { _toXAxis = value; RaisePropertyChangedAuto(); } - } - - private double _fromYAxis; - public double FromYAxis - { - get { return _fromYAxis; } - set { _fromYAxis = value; RaisePropertyChangedAuto(); } - } - - private double _toYAxis; - public double ToYAxis - { - get { return _toYAxis; } - set { _toYAxis = value; RaisePropertyChangedAuto(); } - } - - public void UpdateData() - { - _toYAxis = Points.Max(x => x.Y) + 2; - _fromYAxis = Points.Min(x => x.Y) - 1; - _toXAxis = Points.Max(x => x.X); - _fromXAxis = Points.Min(x => x.X); - - RaisePropertyChanged("Title"); - RaisePropertyChanged("Points"); - } - - public AnalyzerResultChartData() - { - Points = new ObservableCollection<DataPoint>(); - _fromYAxis = 0; - _fromXAxis = 0; - _toYAxis = 1; - _toXAxis = 1; - XStep = 1; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisPlotValue.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisPlotValue.cs deleted file mode 100644 index 3c9fe8cab..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisPlotValue.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class AnalysisPlotValue - { - public double X { get; set; } - public double Y { get; set; } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisService.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisService.cs deleted file mode 100644 index 0dbf9a83e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalysisService.cs +++ /dev/null @@ -1,40 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Models; -using System.Windows.Controls; -using System.Windows.Media; -using System.IO; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class AnalysisService - { - public static dynamic GetAnalyzer(String fileName) - { - string filename = Path.GetFileNameWithoutExtension(fileName); - - var analyzerTypes = typeof(AnalysisService).Assembly.GetTypes().Where(x => typeof(IBaseAnalyzer).IsAssignableFrom(x)).ToList(); - var analyzerType = analyzerTypes.FirstOrDefault(x => filename.StartsWith(x.GetCustomAttribute<AnalyzerAttribute>().Name, StringComparison.OrdinalIgnoreCase) ); - if(analyzerType == null) - {//in case name of test is not first word - analyzerType = analyzerTypes.FirstOrDefault(x => filename.IndexOf(x.GetCustomAttribute<AnalyzerAttribute>().Name, StringComparison.OrdinalIgnoreCase) >= 0); - } - - return (analyzerType != null) ? Activator.CreateInstance(analyzerType) : null; - - } - public static string GetTestName(String fileName) - { - var analyzerTypes = typeof(AnalysisService).Assembly.GetTypes().Where(x => typeof(IBaseAnalyzer).IsAssignableFrom(x)).ToList(); - var analyzerType = analyzerTypes.FirstOrDefault(x => fileName.IndexOf(x.GetCustomAttribute<AnalyzerAttribute>().Name, StringComparison.OrdinalIgnoreCase) >= 0); - - return analyzerType.GetCustomAttribute<AnalyzerAttribute>().Name; - } - } - -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerAttribute.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerAttribute.cs deleted file mode 100644 index 2a1d3323e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerAttribute.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Interface)] - public class AnalyzerAttribute : Attribute - { - public string Name { get; set; } - - public AnalyzerAttribute(string name) - { - Name = name; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultBase.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultBase.cs deleted file mode 100644 index bc82d2215..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultBase.cs +++ /dev/null @@ -1,75 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.ComponentModel; -using System.Globalization; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using OxyPlot; -using Tango.Core; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class AnalyzerResultBase : ExtendedObject, IAnalyzerResult - { - public AnalyzerResultValue Result { get; set; } - // public List<AnalysisPlotValue> PlotValues { get; set; } - //public ObservableCollection<DataPoint> Points { get; set; } - - public List<AnalyzerResultProperty> Properties - { - get - { - List<AnalyzerResultProperty> props = new List<AnalyzerResultProperty>(); - if (this.GetType() == typeof(AnalyzerResultBase)) - return props; - - foreach (var prop in this.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly).OrderByAlphaNumeric(x => x.Name)) - { - AnalyzerResultProperty aProp = new AnalyzerResultProperty(); - if (aProp.GetType() == typeof(IEnumerable<>)) - { - continue; - } - if (prop.GetCustomAttribute<DescriptionAttribute>() != null) - { - aProp.Name = prop.GetCustomAttribute<DescriptionAttribute>().Description; - //} - //else - //{ - // aProp.Name = prop.Name; - //} - object val = prop.GetValue(this); - aProp.Value = (val is double) ? ((double)val).ToString("F") : val.ToString(); - props.Add(aProp); - } - - } - - return props; - } - } - - public bool IsShowPlotResult { get; set; } - public bool IsShowLineChartResult { get; set; } - public AnalyzerResultChartData RangeToCountChart { get; set; } - public AnalyzerResultChartData RangeToTimeChart { get; set; } - public AnalyzerResultChartData LineChart { get; set; } - public bool BackgroundMode { get; set; } - - - public AnalyzerResultBase() - { - //PlotValues = new List<AnalysisPlotValue>(); - Result = AnalyzerResultValue.Undetermined; - IsShowPlotResult = false; - IsShowLineChartResult = false; - RangeToCountChart = new AnalyzerResultChartData(); - RangeToTimeChart = new AnalyzerResultChartData(); - LineChart = new AnalyzerResultChartData(); - BackgroundMode = false; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultProperty.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultProperty.cs deleted file mode 100644 index f2548746e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultProperty.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class AnalyzerResultProperty - { - public String Name { get; set; } - public String Value { get; set; } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultValue.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultValue.cs deleted file mode 100644 index a0cc2c2c7..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/AnalyzerResultValue.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public enum AnalyzerResultValue - { - //Undetermined - [Description("Information")] - Undetermined, - [Description("Check")] - Passed, - [Description("CloseCircle")] - Failed, - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/DispenserReader.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/DispenserReader.cs deleted file mode 100644 index e62af4e46..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/DispenserReader.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Models; -using OxyPlot.Annotations; -using System.Windows.Media; -using System.Diagnostics; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class DispenserReader: IReader<DispenserSample> - { - public List<DispenserSample> ReadScvFile(String filePath, List<OxyPlot.Wpf.LineAnnotation> annotations) - { - List<DispenserCsvRow> data = CsvFile.Read<DispenserCsvRow>(new CsvSource(filePath)).ToList(); - List<DispenserSample> samples = new List<DispenserSample>(); - int index = 0; - int last_labelIndex = 0; - foreach (var item in data) - { - double pressure = 0; - if (item.Label == "Label") - { - item.Pressure = "0"; - item.Command = "Label"; - if (last_labelIndex == 0 || last_labelIndex < (index + 5)) - { - last_labelIndex = index; - - OxyPlot.Wpf.LineAnnotation _line = new OxyPlot.Wpf.LineAnnotation() - { - StrokeThickness = 1, - Color = Color.FromRgb(255, 5, 5), - Type = LineAnnotationType.Vertical, - Text = index.ToString(), - X = index, - }; - annotations.Add(_line); - - } - } - if (double.TryParse(item.Pressure, out pressure) || !String.IsNullOrWhiteSpace(item.Command)) - { - samples.Add(new DispenserSample() - { - Pressure = pressure, - Command = String.IsNullOrWhiteSpace(item.Command) ? null : item.Command, - Index = index - }); - index++; - } - } - return samples; - } - - public List<string> GetTitles(String filePath) - { - string xAxistitle = "Time[100 msec]"; - string yAxistitle = "Pressure [mbar]"; - return new List<string>() { xAxistitle, yAxistitle }; - } - - public bool PrintResultsToPDFFile() - { - return true ; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzer.cs deleted file mode 100644 index fd3b3c267..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzer.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - [Analyzer("BaseInterface")] - public interface IBaseAnalyzer - { - - } - [Analyzer("INTERFACE")] - public interface IAnalyzer<T>: IBaseAnalyzer - { - IReader<T> Reader { get; set; } - Task<List<IAnalyzerResult>> Process(List<T> csvRows, bool backgroundMode); - void GetPoints(List<T> samples, IList<OxyPlot.DataPoint> points); - } - [Analyzer("DISPENSERINTERFACE")] - public interface IDispenserDispenserAnalyser : IAnalyzer<DispenserSample> - { - } - [Analyzer("PROCESSINTERFACE")] - public interface IProcessAnalyzer : IAnalyzer<ProcessSample> - { - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzerResult.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzerResult.cs deleted file mode 100644 index 5203828e5..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IAnalyzerResult.cs +++ /dev/null @@ -1,21 +0,0 @@ -using OxyPlot; -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public interface IAnalyzerResult - { - AnalyzerResultValue Result { get; set; } - - bool BackgroundMode { get; set; } - //List<AnalysisPlotValue> PlotValues { get; set; } - - //AnalyzerResultChartData RangeToCountChart { get; set; } - //AnalyzerResultChartData RangeToTimeChart { get; set; } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IReader.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IReader.cs deleted file mode 100644 index 35c7f8f76..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/IReader.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public interface IReader<T> - { - List<T> ReadScvFile(String filePath, List<OxyPlot.Wpf.LineAnnotation> annotations); - - List<string> GetTitles(String filePath); - - bool PrintResultsToPDFFile(); - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs deleted file mode 100644 index b2e6f0388..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analysis/ProcessReader.cs +++ /dev/null @@ -1,116 +0,0 @@ -using OxyPlot; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Models; -using OxyPlot.Annotations; -using System.Windows.Media; - - -namespace Tango.DispenserAnalyzer.UI.Analysis -{ - public class ProcessReader: IReader<ProcessSample> - { - public List<ProcessSample> ReadScvFile(String filePath, List<OxyPlot.Wpf.LineAnnotation> annotations) - { - List<ProcessSample> samples = new List<ProcessSample>(); - try - { - List<ProcessCsvRow> data = CsvFile.Read<ProcessCsvRow>(new CsvSource(filePath)).ToList(); - - double index = 0; - double delta = 0; - if (data.Count > 2) - { - DateTime time1; - DateTime time2; - if (DateTime.TryParse(data[0].Time, out time1) && DateTime.TryParse(data[1].Time, out time2)) - { - int m1 = time1.Millisecond; - int m2 = time2.Millisecond; - delta = (time2 - time1).Milliseconds / 100; - } - } - delta = Settings.GetValueByName(AnalyzerSettingsEnum.TimeInterval); - if(delta == 0) - return samples; - - int endPoint = (int)(Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation) / delta); - foreach (var item in data) - { - double dValue = 0; - - if (double.TryParse(item.Value, out dValue)) - { - DateTime time; - DateTime.TryParse(item.Time, out time); - int mil = time.Millisecond; - samples.Add(new ProcessSample() - { - Time = time, - Value = dValue, - TimeIntervalSec = index, - }); - index += delta; - } - } - OxyPlot.Wpf.LineAnnotation _line1 = new OxyPlot.Wpf.LineAnnotation() - { - StrokeThickness = 1, - Color = Color.FromRgb(255, 5, 5), - Type = LineAnnotationType.Vertical, - Text = index.ToString(), - X = Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation) - }; - annotations.Add(_line1); - OxyPlot.Wpf.LineAnnotation _line2 = new OxyPlot.Wpf.LineAnnotation() - { - StrokeThickness = 1, - Color = Color.FromRgb(255, 5, 5), - Type = LineAnnotationType.Vertical, - Text = index.ToString(), - X = Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation) - }; - annotations.Add(_line2); - - - return samples; - } - catch (Exception ex) - { - Debug.Write("Exception in ProcessReader ReadScvFile" + ex.Message); - return samples; - } - } - - public List<string> GetScvColumns(String filePath) - { - try - { - return CsvFile.GetColumns<ProcessCsvRow>(new CsvSource(filePath)).ToList(); - } - catch (Exception ex) - { - Debug.Write("Exception in ProcessReader ReadScvFile" + ex.Message); - return null; - } - } - - public List<string> GetTitles(String filePath) - { - List<string> columns = GetScvColumns(filePath); - string xAxistitle = "Time [sec]"; - string yAxistitle = columns!= null && columns.Count > 1 ? columns[1] : "Values"; - return new List<string>() { xAxistitle, yAxistitle }; - } - - public bool PrintResultsToPDFFile() - { - return false; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/DynamicSealingAnalyzer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/DynamicSealingAnalyzer.cs deleted file mode 100644 index d440f42c3..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/DynamicSealingAnalyzer.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("dynamic")] - public class DynamicSealingAnalzyer : IDispenserDispenserAnalyser - { - private IReader<DispenserSample> _reader; - public IReader<DispenserSample> Reader - { - get { return _reader; } - set { _reader = value; } - } - public DynamicSealingAnalzyer() - { - Reader = new DispenserReader(); - } - - public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - List<DispenserSample> commands = csvRows.Where(x => x.Command != null && x.Command.ToLower().Contains("label")).ToList<DispenserSample>(); - - var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index / 2).Select(x => x.Select(v => v.Value).ToList()).ToList(); - - //dynamic test - if (pairs.Count > 0 && pairs[0].Count > 1) - { - DynamicSealingAnalyzerResult result = new DynamicSealingAnalyzerResult(); - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[0][0].Index && x.Index < pairs[0][1].Index).ToList(); - int period = 10; - result.Result = AnalyzerResultValue.Passed; - //var sum_average = Enumerable.Range(0, rangeTestValues.Count - period).Select(n => rangeTestValues.Select(x=>x.Pressure).Skip(n).Take(periodLength).Average()).ToList(); - for (int counter = 0; counter <= rangeTestValues.Count - period; ) - { - var sum1 = rangeTestValues.Skip(counter++).Take(period).Average(t => t.Pressure); - var sum2 = rangeTestValues.Skip(counter++).Take(period).Average(t => t.Pressure); - if(sum1 > sum2 && sum1 - sum2 > 8) - { - result.DynamicSealingResult = "test failed"; - result.Result = AnalyzerResultValue.Failed; - break; - } - } - results.Add(result); - } - SealingAnalyzerResult sealingAnalyzerResult = new SealingAnalyzerResult(); - //start sealing test - if (pairs.Count > 1 && pairs[1].Count > 1) - { - List<DispenserSample> rangeStartTestValues = csvRows.Where(x => x.Index > pairs[1][0].Index && x.Index < pairs[1][1].Index).ToList(); - sealingAnalyzerResult.AverageStartTestValue = rangeStartTestValues.Average(t => t.Pressure); - } - //end sealing of test - if (pairs.Count > 2 && pairs[2].Count > 1) - { - List<DispenserSample> rangeEndTestValues = csvRows.Where(x => x.Index > pairs[2][0].Index && x.Index < pairs[2][1].Index).ToList(); - sealingAnalyzerResult.AverageEndTestValue = rangeEndTestValues.Average(t => t.Pressure); - } - sealingAnalyzerResult.AbsoluteTestValue = Math.Abs(sealingAnalyzerResult.AverageEndTestValue - sealingAnalyzerResult.AverageStartTestValue); - sealingAnalyzerResult.Result = sealingAnalyzerResult.AbsoluteTestValue < 8 ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - results.Add(sealingAnalyzerResult); - return results; - }); - } - - public void GetPoints(List<DispenserSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { points.Add(new OxyPlot.DataPoint(x.Index, x.Pressure)); } - }); - } - - public class DynamicSealingAnalyzerResult : AnalyzerResultBase - { - [Description("Dynamic sealing result")] - public string DynamicSealingResult { get; set; } - - public DynamicSealingAnalyzerResult() - { - DynamicSealingResult = "test succeed"; - Result = AnalyzerResultValue.Undetermined; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/FlowAnalyser.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/FlowAnalyser.cs deleted file mode 100644 index 213f4e4f0..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/FlowAnalyser.cs +++ /dev/null @@ -1,292 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; -using MathNet.Numerics.LinearAlgebra; -using System.Linq.Expressions; -using System.Diagnostics; -using OxyPlot; -using System.Collections.ObjectModel; -using Tango.Documents; -using System.IO; -using Tango.Core.Helpers; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("flow")] - - public class FlowAnalyser : IDispenserDispenserAnalyser - { - private IReader<DispenserSample> _reader; - public IReader<DispenserSample> Reader - { - get { return _reader; } - set { _reader = value; } - } - - - public FlowAnalyser() - { - Reader = new DispenserReader(); - } - - public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - List<DispenserSample> commands = csvRows.Where(x => x.Command != null && x.Command.ToLower().Contains("label")).ToList<DispenserSample>(); - var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index/2 ).Select(x => x.Select(v => v.Value).ToList()).ToList(); - MovingAverageFilter filter = new MovingAverageFilter(); - int flowtestNumber = 0; - for (int index = 0; index < pairs.Count(); index++) - { - var pair = pairs[index]; - if (pair.Count != 2) - continue; - - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pair[0].Index && x.Index < pair[1].Index).ToList(); - - if (index % 2 == 1)//testing Flow-error - { - - List<DispenserSample> filteredValues = rangeTestValues.Skip((int)Settings.GetValueByName(AnalyzerSettingsEnum.ExcludeAnalysis)).ToList(); - - //Move Average data - List<Task> tasks = new List<Task>(); - int calc_count = (int)filteredValues.Count() / 4; - int start_index = 0; - while (start_index < filteredValues.Count()) - { - int calc_amount = (start_index + calc_count) >= (filteredValues.Count() - 4) ? filteredValues.Count() - start_index : calc_count; - var source_filter = filteredValues.Skip(start_index).Take(calc_amount).ToList(); - tasks.Add(Task.Run(() => - { - filter.Filtering(source_filter); - })); - start_index += calc_amount; - } - Task.WaitAll(tasks.ToArray()); - - //calculate difference Max Min values for each 300 values - int periodCalcMaxMin = (int)Settings.GetValueByName(AnalyzerSettingsEnum.MaxMinRange); - int intervalCalcMaxMin = (int)Settings.GetValueByName(AnalyzerSettingsEnum.MaxMinIntervals); - List<int> differenceMaxMin = new List<int>(); - List<int> differenceMaxMinToLocationArr = new List<int>(); - int location_index = 0; - for (int i = 0; i < (filteredValues.Count - periodCalcMaxMin); i+= intervalCalcMaxMin) - { - var rangeItems =(filteredValues.Skip(i).Take(periodCalcMaxMin).ToList()); - int range = (int)(rangeItems.Max(t => t.Pressure) - rangeItems.Min(t => t.Pressure)); - differenceMaxMin.Add(range); - - differenceMaxMinToLocationArr.Add(++location_index); - } - FlowAverageAnalyzerResult averageResult = new FlowAverageAnalyzerResult(); - averageResult.BackgroundMode = backgroundMode; - averageResult.AverageValue = filteredValues.Average(t => t.Pressure); - averageResult.Result = (averageResult.AverageValue <= Settings.GetValueByName(AnalyzerSettingsEnum.AvgMaxValue) && averageResult.AverageValue >= Settings.GetValueByName(AnalyzerSettingsEnum.AvgMinValue)) ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - results.Add(averageResult); - - FlowAnalyzerResult result = new FlowAnalyzerResult(++flowtestNumber); - result.BackgroundMode = backgroundMode; - result.AverageValue = averageResult.AverageValue; - result.SetLocalErrors(differenceMaxMin, differenceMaxMinToLocationArr); - results.Add(result); - } - else//testing PBU - { - PrimingAnalyzerResult result = new PrimingAnalyzerResult(); - result.BackgroundMode = backgroundMode; - int avgMinIndex = rangeTestValues.Select(x => x.Index).Min(); - int avgMaxIndex = rangeTestValues.Select(x => x.Index).Max(); - double totalsec = TimeSpan.FromMilliseconds((avgMaxIndex - avgMinIndex) * 100).TotalSeconds; - result.Time = totalsec.ToString() + $" sec (succeed for period < {AnalyzerSettingsEnum.FlowPBUPassFail})"; ; - result.Result = (totalsec < Settings.GetValueByName(AnalyzerSettingsEnum.FlowPBUPassFail)) ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - results.Add(result); - } - } - - return results; - }); - } - - public void GetPoints(List<DispenserSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { points.Add(new OxyPlot.DataPoint(x.Index, x.Pressure)); } - }); - } - - public class FlowAverageAnalyzerResult : AnalyzerResultBase - { - [Description("Average Value")] - public double AverageValue { get; set; } - public FlowAverageAnalyzerResult() : base() - { - AverageValue = 0.0; - Result = AnalyzerResultValue.Undetermined; - } - } - - - public class FlowAnalyzerResult : AnalyzerResultBase - { - #region Properties - - [Description("Max Error")] - public string LocalErrors { get; set; } - - public double AverageValue { get; set; } - - public int TestNumber { get; set; } - - #endregion Properties - - public FlowAnalyzerResult(int testNumber) :base() - { - AverageValue = 0.0; - Result = AnalyzerResultValue.Undetermined; - TestNumber = testNumber; - } - - /// <summary> - /// Calculate result, max error. Set oxy plot column chart. - /// </summary> - /// <param name="differenceMaxMin">The difference maximum minimum.</param> - public void SetLocalErrors(List<int> differenceMaxMin, List<int> differenceMaxMinToLocationArr) - { - // int count = differenceMaxMin.Where(x => x > 25 ).Count(); - int max_key = FindMaxErrorObject(differenceMaxMin); - if (!BackgroundMode) - { - var points = RangeToCountChart.Points; - points.Clear(); - for (int i = 0; i <= max_key; i++) - { - int val = differenceMaxMin.Count(x => x == i); - if(val > 0 || points.Count > 0) - { - points.Add(new DataPoint(i, val)); - } - } - this.IsShowPlotResult = true; - RangeToCountChart.Title = $"Local error histogram {TestNumber}"; - RangeToCountChart.UpdateData(); - } - var rangeToTimePoints = RangeToTimeChart.Points; - rangeToTimePoints.Clear(); - for(int y = 0; y < differenceMaxMinToLocationArr.Count && y < differenceMaxMin.Count; y++) - { - rangeToTimePoints.Add(new DataPoint(differenceMaxMinToLocationArr.ElementAt(y), differenceMaxMin.ElementAt(y))); - } - if (!BackgroundMode) - { - RangeToTimeChart.Title = $"Local error vs position {TestNumber}"; - RangeToTimeChart.UpdateData(); - } - - string filename = FileHelper.GetFileToSaveFlowRangeToTimeData(TestNumber); - if(filename.IsNotNullOrEmpty() && rangeToTimePoints.Count > 0) - { - ExportnDataToExcel(rangeToTimePoints.ToList(), filename); - } - } - - private double BuildMeasurementError(List<int> range_values) - { - int count = range_values.Count(); - return (count - (int)Settings.GetValueByName(AnalyzerSettingsEnum.TakeOffMaxMin)); - } - - /// <summary> - /// Finds the maximum error object. Init LocalErrors message. Return max range value. - /// </summary> - private int FindMaxErrorObject(List<int> range_values) - { - var countValArr = range_values.GroupBy(x => x).Select(t => new { Key = t.Key, Value = t.Count() }).OrderBy(x=>x.Key).ToArray(); - double merror = Settings.GetValueByName(AnalyzerSettingsEnum.TakeOffMaxMin);// BuildMeasurementError(range_values); - double sum = 0; - int max_key = 0; - int range = 0; - for (int i = countValArr.Count() - 1; i >= 0; i--) - { - sum += countValArr[i].Value; - if (max_key == 0) - max_key = (int)countValArr[i].Key; - if (sum > merror) - { - double persentageOfError = countValArr[i].Key / AverageValue * 100; - range = (int)countValArr[i].Key; - int occurrence = countValArr[i].Value; - LocalErrors = $" {persentageOfError.ToString("F2")}% where max local error = {range.ToString()} and occurrence = {occurrence.ToString()}"; - break; - } - } - - var res = range / AverageValue * 100; - Result = res <= Settings.GetValueByName(AnalyzerSettingsEnum.MaxError) ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - return max_key; - } - - /// <summary> - /// Exports the calibration data to excel. - /// </summary> - /// <param name="calibrationPoints">The calibration points.</param> - /// <param name="fileName">Name of the file.</param> - public static void ExportnDataToExcel(List<DataPoint> dataPoints, String fileName) - { - try - { - CreateDataExcelTemplate(fileName); - - using (ExcelWriter writer = new ExcelWriter(fileName)) - { - writer.UpdateTableSize("RangeToTimeData", "A1:B" + (dataPoints.Count + 2).ToString()); - writer.WriteData(dataPoints, "RangeToTimeData"); - } - } - catch (Exception ex) - { - Debug.WriteLine("Error: ", ex.Message); - } - } - - /// <summary> - /// Creates the calibration data excel template. - /// </summary> - /// <param name="fileName">Name of the file.</param> - public static void CreateDataExcelTemplate(String fileName) - { - var stream = EmbeddedResourceHelper.GetEmbeddedResourceStream("Tango.DispenserAnalyzer.UI.Models.FlowRangeToTimeResults.xlsx"); - - using (FileStream fs = new FileStream(fileName, FileMode.Create)) - { - stream.Seek(0, SeekOrigin.Begin); - stream.CopyTo(fs); - } - } - } - - public class MovingAverageFilter - { - public MovingAverageFilter() - { - } - public void Filtering(List<DispenserSample> source) - { - int periodAverage = 5; - for (int i = 0; i < (source.Count - 5); i++) - { - source[i].Pressure = source.Skip(i).Take(periodAverage).Average(x => x.Pressure); - } - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PressureBuildUpAnalyser.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PressureBuildUpAnalyser.cs deleted file mode 100644 index 9288eb2ad..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PressureBuildUpAnalyser.cs +++ /dev/null @@ -1,61 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("pressure build up")] - public class PressureBuildUpAnalyser : IDispenserDispenserAnalyser - { - private IReader<DispenserSample> _reader; - public IReader<DispenserSample> Reader - { - get { return _reader; } - set { _reader = value; } - } - - public PressureBuildUpAnalyser() - { - Reader = new DispenserReader(); - } - public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - List<DispenserSample> commands = csvRows.Where(x => x.Command != null && x.Command.ToLower().Contains("label")).ToList<DispenserSample>(); - var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index / 2).Select(x => x.Select(v => v.Value).ToList()).ToList(); - for (int index = 0; index < pairs.Count(); index++) - { - var pair = pairs[index]; - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pair[0].Index && x.Index < pair[1].Index).ToList(); - //testing PBU - { - PrimingAnalyzerResult result = new PrimingAnalyzerResult(); - int avgMinIndex = rangeTestValues.Select(x => x.Index).Min(); - int avgMaxIndex = rangeTestValues.Select(x => x.Index).Max(); - double totalsec = TimeSpan.FromMilliseconds((avgMaxIndex - avgMinIndex) * 100).TotalSeconds; - result.Time = totalsec.ToString() + " sec"; - result.Result = (totalsec < Settings.GetValueByName(AnalyzerSettingsEnum.PBUPassFail)) ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - results.Add(result); - } - } - return results; - }); - } - - public void GetPoints(List<DispenserSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { points.Add(new OxyPlot.DataPoint(x.Index, x.Pressure)); } - }); - } - } - -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PrimingAnalyzer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PrimingAnalyzer.cs deleted file mode 100644 index 315c384d6..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/PrimingAnalyzer.cs +++ /dev/null @@ -1,71 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("priming")] - public class PrimingAnalyzer : IDispenserDispenserAnalyser - { - private IReader<DispenserSample> _reader; - public IReader<DispenserSample> Reader - { - get { return _reader; } - set { _reader = value; } - } - - public PrimingAnalyzer() - { - Reader = new DispenserReader(); - } - public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - List<DispenserSample> commands = csvRows.Where(x => x.Command == "Label").ToList<DispenserSample>(); - PrimingAnalyzerResult result = new PrimingAnalyzerResult(); - var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index / 2).Select(x => x.Select(v => v.Value).ToList()).ToList(); - //start range of test - if (pairs.Count > 0 && pairs[0].Count > 1) - { - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[0][0].Index && x.Index < pairs[0][1].Index).ToList(); - int avgMinIndex = rangeTestValues.Select(x => x.Index).Min(); - int avgMaxIndex = rangeTestValues.Select(x => x.Index).Max(); - double totalsec = TimeSpan.FromMilliseconds((avgMaxIndex - avgMinIndex) * 100).TotalSeconds; - result.Time = totalsec.ToString() + " sec"; - result.Result = (totalsec <= 12 && totalsec >= 7) ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - } - results.Add(result); - return results; - }); - } - - public void GetPoints(List<DispenserSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { points.Add(new OxyPlot.DataPoint(x.Index, x.Pressure)); } - }); - } - } - public class PrimingAnalyzerResult : AnalyzerResultBase - { - [Description("PBU Time")] - public String Time { get; set; } - - - public PrimingAnalyzerResult() - { - Time = ""; - Result = AnalyzerResultValue.Undetermined; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs deleted file mode 100644 index 663b72228..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ProcessAnalyser.cs +++ /dev/null @@ -1,139 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("process")] - public class ProcessAnalyser : IProcessAnalyzer - { - private IReader<ProcessSample> _reader; - public IReader<ProcessSample> Reader { - get { return _reader; } - set { _reader = value; } - } - - public ProcessAnalyser() - { - Reader = new ProcessReader(); - } - - public Task<List<IAnalyzerResult>> Process(List<ProcessSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - ProcessAnalyzerResult result = new ProcessAnalyzerResult(); - result.BackgroundMode = backgroundMode; - double delta = Settings.GetValueByName(AnalyzerSettingsEnum.TimeInterval); - int startPoint = delta == 0? 0 : (int)(Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation) / delta); - int endPoint = delta == 0 ? (csvRows.Count -1) : (int)(Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation) / delta); - int takePoints = endPoint > startPoint ? (endPoint - startPoint) : (csvRows.Count - 1 - startPoint); - - List<ProcessSample> rangeValues = csvRows.Skip(startPoint).Take(takePoints).ToList(); - - result.MinValue = rangeValues.Min(x => x.Value); - result.MaxValue = rangeValues.Max(x => x.Value); - result.AverageValue = rangeValues.Average(x => x.Value); - result.StandardDeviation = ProcessAnalyser.StdDev(rangeValues.Select(x => x.Value)); - - result.Result = AnalyzerResultValue.Passed; - - //Move Average data - List<Task> tasks = new List<Task>(); - int calc_count = (int)csvRows.Count() / 4; - int start_index = 0; - while (start_index < csvRows.Count()) - { - int calc_amount = (start_index + calc_count) >= (csvRows.Count() - 4) ? csvRows.Count() - start_index : calc_count; - var source_filter = csvRows.Skip(start_index).Take(calc_amount).ToList(); - tasks.Add(Task.Run(() => - { - ProcessAnalyser.Filtering(source_filter); - })); - start_index += calc_amount; - } - Task.WaitAll(tasks.ToArray()); - - result.CreateMovingAvgGraph(csvRows); - results.Add(result); - return results; - }); - } - - public static double StdDev(IEnumerable<double> values) - { - double avg = values.Average(); - double sum = values.Sum(v => (v - avg) * (v - avg)); - double denominator = values.Count() - 1; - return denominator > 0.0 ? Math.Sqrt(sum / denominator) : -1; - } - public static void Filtering(List<ProcessSample> source) - { - int periodAverage = (int)Settings.GetValueByName(AnalyzerSettingsEnum.MovingAvg); - int count = (source.Count < periodAverage) ? source.Count : source.Count - periodAverage; - for (int i = 0; i < count; i++) - { - source[i].Value = source.Skip(i).Take(periodAverage).Average(x => x.Value); - } - } - - public void GetPoints(List<ProcessSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - points.Add(new OxyPlot.DataPoint(x.TimeIntervalSec, x.Value)); - }); - } - - } - - public class ProcessAnalyzerResult : AnalyzerResultBase - { - [Description("Selected Area")] - public string Header { get; set; } - - [Description("Average Value")] - public double AverageValue { get; set; } - [Description("Max value")] - public double MaxValue { get; set; } - [Description("Min value")] - public double MinValue { get; set; } - [Description("Standard deviation value")] - public double StandardDeviation { get; set; } - - - public ProcessAnalyzerResult() - { - double from = Settings.GetValueByName(AnalyzerSettingsEnum.StartCalculation); - double to = Settings.GetValueByName(AnalyzerSettingsEnum.EndCalculation); - Header = $"from {from} to {to} seconds"; - AverageValue = MaxValue = MinValue = 0.0; - Result = AnalyzerResultValue.Undetermined; - IsShowLineChartResult = true; - } - - public void CreateMovingAvgGraph(List<ProcessSample> avgValues) - { - if (!BackgroundMode) - { - var points = LineChart.Points; - points.Clear(); - avgValues.ForEach(x => - { - points.Add(new OxyPlot.DataPoint(x.TimeIntervalSec, x.Value)); - }); - - LineChart.Title = $"Moving Average Values"; - LineChart.UpdateData(); - } - } - - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ReliabilityTestAnalyser.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ReliabilityTestAnalyser.cs deleted file mode 100644 index 05a0aa32c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/ReliabilityTestAnalyser.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("Reliability")] - public class ReliabilityTestAnalyser: FlowAnalyser - { - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/SealingAnalyzer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/SealingAnalyzer.cs deleted file mode 100644 index 841101b10..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Analyzers/SealingAnalyzer.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Analysis; -using Tango.DispenserAnalyzer.UI.Models; - -namespace Tango.DispenserAnalyzer.UI.Analyzers -{ - [Analyzer("sealtest")] - public class SealingAnalyzer : IDispenserDispenserAnalyser - { - private IReader<DispenserSample> _reader; - public IReader<DispenserSample> Reader - { - get { return _reader; } - set { _reader = value; } - } - - public SealingAnalyzer() - { - Reader = new DispenserReader(); - } - public Task<List<IAnalyzerResult>> Process(List<DispenserSample> csvRows, bool backgroundMode) - { - return Task.Factory.StartNew<List<IAnalyzerResult>>(() => - { - List<IAnalyzerResult> results = new List<IAnalyzerResult>(); - List<DispenserSample> commands = csvRows.Where(x => x.Command!= null && x.Command.ToLower().Contains("label")).ToList< DispenserSample>(); - SealingAnalyzerResult result = new SealingAnalyzerResult(); - var pairs = commands.Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index /2).Select(x => x.Select(v => v.Value).ToList()).ToList(); - //start range of test - if (pairs.Count > 0 && pairs[0].Count > 1) - { - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[0][0].Index && x.Index < pairs[0][1].Index).ToList(); - result.AverageStartTestValue = rangeTestValues.Average(t => t.Pressure); - } - //end range of test - if (pairs.Count > 1 && pairs[1].Count > 1) - { - List<DispenserSample> rangeTestValues = csvRows.Where(x => x.Index > pairs[1][0].Index && x.Index < pairs[1][1].Index).ToList(); - result.AverageEndTestValue = rangeTestValues.Average(t => t.Pressure); ; - } - result.AbsoluteTestValue = Math.Abs(result.AverageEndTestValue - result.AverageStartTestValue); - result.Result = result.AbsoluteTestValue < 8 ? AnalyzerResultValue.Passed : AnalyzerResultValue.Failed; - results.Add(result); - return results; - }); - } - - public void GetPoints(List<DispenserSample> samples, IList<OxyPlot.DataPoint> points) - { - samples.ForEach(x => - { - if (x.Pressure != 0.0) - { points.Add(new OxyPlot.DataPoint(x.Index, x.Pressure)); } - }); - } - } - - public class SealingAnalyzerResult : AnalyzerResultBase - { - [Description("Average Start Test Value")] - public double AverageStartTestValue { get; set; } - [Description("Average End Test Value")] - public double AverageEndTestValue { get; set; } - [Description("Absolute Value")] - public double AbsoluteTestValue { get; set; } - public SealingAnalyzerResult() - { - AverageStartTestValue = 0.0; - AverageEndTestValue = 0.0; - AbsoluteTestValue = 0.0; - Result = AnalyzerResultValue.Undetermined; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.config b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.config deleted file mode 100644 index ddc8cb7a6..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.config +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.4.2.0" newVersion="1.4.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Xml.XPath.XDocument" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Diagnostics.StackTrace" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Z.EntityFramework.Extensions" publicKeyToken="59b66d028979105b" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.50.0" newVersion="4.0.50.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml deleted file mode 100644 index 8969f50af..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml +++ /dev/null @@ -1,56 +0,0 @@ -<Application x:Class="Tango.DispenserAnalyzer.UI.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:local="clr-namespace:Tango.DispenserAnalyzer.UI" - Startup="Application_Startup"> - <Application.Resources> - <ResourceDictionary> - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Defaults.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Primary/materialdesigncolor.lightblue.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/materialdesigncolor.yellow.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.Button.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.CheckBox.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ListBox.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.PopupBox.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.RadioButton.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ToggleButton.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.TextBlock.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Label.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.Slider.xaml"> - </ResourceDictionary> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/materialdesigntheme.ProgressBar.xaml"/> - <ResourceDictionary Source="pack://application:,,,/MaterialDesignThemes.Wpf;component/Themes/MaterialDesignTheme.ComboBox.xaml" /> - - </ResourceDictionary.MergedDictionaries> - <FontFamily x:Key="FontName">Segoe UI</FontFamily> - <FontFamily x:Key="NotesFont">Lucida Console</FontFamily> - - <sys:Double x:Key="ExtraExtraLargeFontSize">28</sys:Double> - <sys:Double x:Key="ExtraLargeFontSize">26</sys:Double> - <sys:Double x:Key="LargeFontSize">20</sys:Double> - <sys:Double x:Key="MediumFontSize">16</sys:Double> - <sys:Double x:Key="SmallFontSize">14</sys:Double> - <sys:Double x:Key="MiniFontSize">12</sys:Double> - <sys:Double x:Key="TinyFontSize">9</sys:Double> - </ResourceDictionary> - </Application.Resources> -</Application> diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml.cs deleted file mode 100644 index f3bce6c99..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/App.xaml.cs +++ /dev/null @@ -1,48 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading; -using System.Threading.Tasks; -using System.Windows; - -namespace Tango.DispenserAnalyzer.UI -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - private void Application_Startup(object sender, StartupEventArgs e) - { - MainWindow wnd = new MainWindow(); - - string[] args = null; - if (AppDomain.CurrentDomain.SetupInformation.ActivationArguments != null) - { - string[] inputArgs = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData; - - if (inputArgs != null && inputArgs.Length > 0) - { - char[] spearator = { ','}; - args = inputArgs[0].Split(spearator); - } - } - else if (e.Args.Length > 0) - { - char[] spearator = { ',' }; - args = e.Args[0].Split(spearator); - } - if(args != null && args.Length > 0) - { - //MessageBox.Show("Before generate" + String.Join(" ", args)); - wnd.GenerateResultsInBackground(args); - } - else - { - wnd.Show(); - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/FileHelper.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/FileHelper.cs deleted file mode 100644 index 7172a4ff1..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/FileHelper.cs +++ /dev/null @@ -1,44 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI -{ - public static class FileHelper - { - private const string FILE_EXTENSION = ".pdf"; - private const string FILE_EXEL_EXTENSION = ".xlsx"; - - public static string OpenFilePath{ get; set; } - - public static string GetResultFilePath() - { - if (File.Exists(OpenFilePath)) - { - var ext = Path.GetExtension(OpenFilePath); - var dir = Path.GetDirectoryName(OpenFilePath); - var resultFile = Path.Combine(dir, string.Format("{0}-result{1}", Path.GetFileNameWithoutExtension(OpenFilePath), FILE_EXTENSION)); - return resultFile; - } - return ""; - } - - public static string GetFileToSaveFlowRangeToTimeData( int extNumber) - { - if (File.Exists(OpenFilePath)) - { - var ext = Path.GetExtension(OpenFilePath); - var dir = Path.GetDirectoryName(OpenFilePath); - var resultFile = Path.Combine(dir, string.Format("{0}_rangeToTime{1}{2}", Path.GetFileNameWithoutExtension(OpenFilePath), extNumber.ToString(), FILE_EXEL_EXTENSION)); - return resultFile; - } - return ""; - } - - - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml deleted file mode 100644 index 595d74e3d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml +++ /dev/null @@ -1,198 +0,0 @@ -<Window x:Class="Tango.DispenserAnalyzer.UI.MainWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:sys="clr-namespace:System;assembly=mscorlib" - xmlns:oxy="http://oxyplot.org/wpf" - xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" - xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" - xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" - xmlns:local="clr-namespace:Tango.DispenserAnalyzer.UI" - xmlns:vm ="clr-namespace:Tango.DispenserAnalyzer.UI.ViewModels" - mc:Ignorable="d" - Title="{Binding WindowTitle, RelativeSource={RelativeSource Mode=Self}}" Height="1000" Width="860" WindowStartupLocation="CenterScreen" WindowStyle="SingleBorderWindow" ResizeMode="CanResize" Foreground="#202020" - d:DataContext="{d:DesignInstance Type=vm:MainWindowVM, IsDesignTimeCreatable=False}"> - <Window.Resources> - <converters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter" /> - <converters:IsNullToVisibilityConverter x:Key="IsNullToVisibilityConverter"/> - <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> - <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter" /> - <Style TargetType="ScrollBar"> - <Setter Property="Background" Value="#B9E7E9E9"/> - </Style> - </Window.Resources> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="80"/> - <RowDefinition Height="60"/> - <RowDefinition Height="Auto"/> - <RowDefinition Height="40*"/> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*" /> - </Grid.ColumnDefinitions> - <Grid Grid.Row="0" Margin="10 20 10 20"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="*"></ColumnDefinition> - <ColumnDefinition Width="100"></ColumnDefinition> - </Grid.ColumnDefinitions> - <TextBox x:Name="tbPath" BorderThickness="1" FontSize="16" VerticalContentAlignment="Center" IsReadOnly="False" Grid.Column="0" Margin="0 0 20 0" Text="{Binding OpenFilePath, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" AllowDrop="True" PreviewDrop="TextBlock_PreviewDrop" PreviewDragOver="TextBox_PreviewDragOver" BorderBrush="Silver" Padding="5 0 0 0 "></TextBox> - <Button Grid.Column="1" Command="{Binding OpenCSVFileCommand}">Browse</Button> - </Grid> - <Grid Grid.Row="1" HorizontalAlignment="Stretch" Margin="10 0 20 20"> - <Button Command="{Binding GenerateCommand}" Content="{Binding ButtonName}" Margin="0 0 30 0"></Button> - <Button Command="{Binding OpenSettingWndCommand}" HorizontalAlignment="Right" VerticalAlignment="Center" Width="20" Height="20" Margin="0 0 0 0" Padding="0" Style="{StaticResource MaterialDesignFlatButton}" ToolTip="Open Setting Window"> - <materialDesign:PackIcon Kind="Settings" Width="16" Height="16" VerticalAlignment="Center"></materialDesign:PackIcon> - </Button> - </Grid> - <Grid Grid.Row="2"> - <Border BorderBrush="Silver" Padding="5" BorderThickness="1" CornerRadius="5" Margin="10"> - <Expander IsExpanded="True"> - <Expander.Header> - <Grid > - <Grid.ColumnDefinitions> - <ColumnDefinition Width="1*" /> - <ColumnDefinition Width="auto" /> - </Grid.ColumnDefinitions> - <TextBlock Padding="0" Text="{Binding TestName}" Margin="10,0,0,0" VerticalAlignment="Center" FontWeight="DemiBold"/> - <materialDesign:PackIcon Grid.Column="1" Kind="Information" Width="24" Height="24" VerticalAlignment="Center" Foreground="#03A9F4" Background="Transparent"> - <materialDesign:PackIcon.ToolTip> - <TextBlock> - <Run Text="Panning: CTRL + RIGHT CLICK and select area;"></Run> - <LineBreak/> - <Run Text="Zooming: MOUSE WHEEL on Axis Area;"></Run> - <LineBreak/> - <Run Text="Reset all : CTRL + DOUBLE RIGHT CLICK;"></Run> - </TextBlock> - </materialDesign:PackIcon.ToolTip> - </materialDesign:PackIcon> - </Grid> - </Expander.Header> - <oxy:Plot Title="{Binding TestName}" x:Name="PressurePlot" Height="300"> - <oxy:Plot.Series > - <oxy:LineSeries ItemsSource="{Binding Points}" Color="#73B6EC" MarkerType="None"/> - </oxy:Plot.Series> - <oxy:Plot.Axes> - <oxy:LinearAxis Position="Bottom" Title = "{Binding TitleAxisBottom}" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True"/> - <oxy:LinearAxis Position="Left" Title = "{Binding TitleAxisLeft}" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" Minimum="{Binding From}" Maximum="{Binding To}"/> - </oxy:Plot.Axes> - </oxy:Plot> - </Expander> - </Border> - </Grid> - - <Border Visibility="Visible" BorderThickness="1" BorderBrush="Silver" CornerRadius="5" Margin="10" Grid.Row="3"> - <DockPanel VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> - <Label Height="30" Content="RESULT" Background="LightSkyBlue" Grid.Row="0" DockPanel.Dock="Top" /> - - <ScrollViewer VerticalScrollBarVisibility="Auto" Visibility="Visible" Focusable="True" Foreground="Black" Margin="5" - Style="{StaticResource {x:Type ScrollViewer}}"> - <ScrollViewer.Resources> - <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarWidthKey}">15</sys:Double> - </ScrollViewer.Resources> - <ItemsControl x:Name="resultItems" ItemsSource="{Binding AnalyzerResults}" Margin="0 0 10 10 "> - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border HorizontalAlignment="Stretch" Margin="10 10 0 0" VerticalAlignment="Stretch" BorderThickness="1" BorderBrush="Silver"> - <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="1*"/> - <ColumnDefinition Width="100"/> - </Grid.ColumnDefinitions> - <StackPanel Orientation="Vertical" Margin="5" Grid.Column="0"> - <ItemsControl ItemsSource="{Binding Properties}" > - <ItemsControl.ItemTemplate> - <DataTemplate> - <StackPanel Orientation="Vertical" Margin="5"> - <TextBlock Margin="5 0 0 0" FontSize="12"><Run Text="{Binding Name}"></Run> <Run Text=" : "></Run><Run Text="{Binding Value,StringFormat=0}"></Run></TextBlock> - </StackPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - <Border x:Name="PlotBorder" BorderBrush="Silver" Padding="2" BorderThickness="1" CornerRadius="5" Margin="10" Visibility="{Binding IsShowPlotResult, Converter={StaticResource BooleanToVisibilityConverter}}" MinHeight="300"> - <StackPanel Orientation="Vertical" x:Name="PlotStackPanel"> - <oxy:Plot Title="{Binding RangeToCountChart.Title}" x:Name="RangeToCountPlot" LegendPlacement="Outside" LegendPosition="RightTop" LegendOrientation="Vertical" ClipToBounds="True" Loaded="RangeToCountPlot_Loaded" MinWidth="220" MinHeight="300"> - <oxy:Plot.Series > - <oxy:ColumnSeries ItemsSource="{Binding RangeToCountChart.Points}" Color="#73B6EC" StrokeThickness="1" FillColor="#73B6EC" ValueField="Y" LabelFormatString="{}{0}" LabelPlacement="Base" /> - </oxy:Plot.Series> - <oxy:Plot.Axes> - <oxy:CategoryAxis Position="Bottom" Title = "Max-min \ range [mbar]" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" ItemsSource="{Binding RangeToCountChart.Points}" LabelField="X" IsZoomEnabled="False"/> - <oxy:LinearAxis Position="Left" Title = "Count" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" Minimum="0" MinimumPadding="5" AbsoluteMinimum="0" IsZoomEnabled="False"/> - </oxy:Plot.Axes> - </oxy:Plot> - </StackPanel> - </Border> - <Border x:Name="RangeToTimeBorder" BorderBrush="Silver" Padding="2" BorderThickness="1" CornerRadius="5" Margin="10" Visibility="{Binding IsShowPlotResult, Converter={StaticResource BooleanToVisibilityConverter}}" MinHeight="300"> - <StackPanel Orientation="Vertical" x:Name="RangeToTimeStackPanel"> - <oxy:Plot Title="{Binding RangeToTimeChart.Title}" x:Name="RangeToTimePlot" LegendPlacement="Outside" LegendPosition="RightTop" LegendOrientation="Vertical" ClipToBounds="True" MinWidth="220" MinHeight="300"> - <oxy:Plot.Series > - <oxy:LineSeries ItemsSource="{Binding RangeToTimeChart.Points}" Color="#73B6EC" StrokeThickness="1" MarkerFill="SteelBlue" /> - </oxy:Plot.Series> - <oxy:Plot.Axes> - <oxy:LinearAxis Position="Bottom" Title = "Location" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True"/> - <oxy:LinearAxis Position="Left" Title = "Max-min \ range [mbar]" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" Minimum="{Binding RangeToTimeChart.FromYAxis}" Maximum="{Binding RangeToTimeChart.ToYAxis}"/> - </oxy:Plot.Axes> - </oxy:Plot> - </StackPanel> - </Border> - <Border x:Name="ChartBorder" BorderBrush="Silver" Padding="2" BorderThickness="1" CornerRadius="5" Margin="10" Visibility="{Binding IsShowLineChartResult, Converter={StaticResource BooleanToVisibilityConverter}}" MinHeight="300"> - <StackPanel Orientation="Vertical" x:Name="ChartStackPanel"> - <!--<StackPanel Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center">MinDisplayValue</TextBlock> - <TextBox VerticalAlignment="Center" Margin="10 0 30 0" x:Name="MinFilter" Text="{Binding LineChart.FromXAxis, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged, Delay=10}" FontWeight="DemiBold" FontSize="14" Foreground="Blue"></TextBox> - <TextBlock VerticalAlignment="Center" >MaxDisplayValue</TextBlock> - <TextBox Margin="10 0 10 0" x:Name="MaxFilter" Text="{Binding LineChart.ToXAxis,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Delay=10}" FontWeight="DemiBold" FontSize="14" Foreground="Blue"></TextBox> - </StackPanel>--> - <oxy:Plot x:Name="ChartProcess" Title="{Binding LineChart.Title}" LegendPlacement="Outside" LegendPosition="RightTop" LegendOrientation="Vertical" ClipToBounds="True" MinWidth="220" MinHeight="300"> - <oxy:Plot.Series > - <oxy:LineSeries ItemsSource="{Binding LineChart.Points}" Color="#73B6EC" MarkerType="None"/> - </oxy:Plot.Series> - - <oxy:Plot.Axes> - <oxy:LinearAxis Position="Bottom" Title = "Time [msec]" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" Minimum="{Binding LineChart.FromXAxis}" Maximum="{Binding LineChart.ToXAxis}"/> - <oxy:LinearAxis Position="Left" Title = "Value" MajorGridlineStyle="Solid" MinorGridlineStyle="Dot" IsZoomEnabled="True" /> - </oxy:Plot.Axes> - </oxy:Plot> - </StackPanel> - </Border> - </StackPanel> - <Border Grid.Column="1" HorizontalAlignment="Center" Margin="10 0 0 0" VerticalAlignment="Center"> - <materialDesign:PackIcon Kind="{Binding Result, Converter= {StaticResource EnumToDescriptionConverter}}" Width="60" Height="60" HorizontalContentAlignment="Center" VerticalAlignment="Center" > - <materialDesign:PackIcon.Style> - <Style TargetType="materialDesign:PackIcon"> - <Setter Property="Foreground" Value="Orange"></Setter> - <Style.Triggers> - <Trigger Property="Kind" Value="Check"> - <Setter Property="Foreground" Value="green"></Setter> - </Trigger> - <Trigger Property="Kind" Value="CloseCircle"> - <Setter Property="Foreground" Value="Red"></Setter> - </Trigger> - </Style.Triggers> - </Style> - </materialDesign:PackIcon.Style> - </materialDesign:PackIcon> - </Border> - </Grid> - </Border> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </ScrollViewer> - - </DockPanel> - </Border> - - - <Grid Grid.Row="1" Grid.RowSpan="3" - HorizontalAlignment="Stretch" - VerticalAlignment="Stretch" - Visibility="{Binding IsRunning, Converter={StaticResource BooleanToVisibilityConverter}}" - Background="#8BFFFFFF"> - <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center"> - <TextBlock Text="Loading..." FontStyle="Italic" FontSize="30" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </Grid> - </Grid> -</Window> diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml.cs deleted file mode 100644 index e7d263a1c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/MainWindow.xaml.cs +++ /dev/null @@ -1,87 +0,0 @@ -using OxyPlot; -using OxyPlot.Axes; -using System; -using System.Threading.Tasks; -using System.Windows; -using Tango.DispenserAnalyzer.UI.ViewModels; - -namespace Tango.DispenserAnalyzer.UI -{ - /// <summary> - /// Interaction logic for MainWindow.xaml - /// </summary> - public partial class MainWindow : Window - { - private MainWindowVM _vm; - - public string WindowTitle - { - get - { - Version version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version; - return "Dispenser Analyzer - Version" + version; - } - } - - - public MainWindow() - { - InitializeComponent(); - _vm = new MainWindowVM(); - DataContext = _vm; - _vm.PlotControl = PressurePlot; - _vm.ResultsPanel = resultItems; - - foreach (var ax in PressurePlot.Axes) - ax.Maximum = ax.Minimum = Double.NaN; - } - - public async void GenerateResultsInBackground( string[] filePathArr) - { - if(_vm != null) - { - for (int index = 0; index < filePathArr.Length; index++) - { - await _vm.GenerateInBackground(filePathArr[index]); - if(index < filePathArr.Length) - { - await Task.Delay(500); - } - } - } - await Task.Delay(500); - Application.Current.Shutdown(); - } - - private void TextBlock_PreviewDrop(object sender, DragEventArgs e) - { - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - if (files != null && files.Length != 0 && System.IO.Path.GetExtension(files[0]).ToUpperInvariant() == ".CSV") - { - tbPath.Text = files[0]; - } - e.Handled = true; - } - - private void TextBox_PreviewDragOver(object sender, DragEventArgs e) - { - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - if (files == null || files.Length == 0 || System.IO.Path.GetExtension(files[0]).ToUpperInvariant() != ".CSV") - { - e.Effects = DragDropEffects.None; - e.Handled = true; - } - else - { - e.Effects = DragDropEffects.All; - e.Handled = true; - } - } - - private void RangeToCountPlot_Loaded(object sender, RoutedEventArgs e) - { - var element = (FrameworkElement)sender; - - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserCsvRow.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserCsvRow.cs deleted file mode 100644 index e3f270ab0..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserCsvRow.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public class DispenserCsvRow - { - [CsvOrder(0)] - public String Pressure { get; set; } - [CsvOrder(1)] - public String Label { get; set; } - [CsvOrder(2)] - public String Command { get; set; } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSample.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSample.cs deleted file mode 100644 index 899aaa600..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSample.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public class DispenserSample: ISample - { - public double Pressure { get; set; } - public String Command { get; set; } - public int Index { get; set; } - - public override string ToString() - { - return $"{Pressure}, {Command}"; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSampleCommand.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSampleCommand.cs deleted file mode 100644 index 15b0008d4..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/DispenserSampleCommand.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public enum DispenserSampleCommand - { - LB1, - LB2, - LB3, - LB4 - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/FlowRangeToTimeResults.xlsx b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/FlowRangeToTimeResults.xlsx Binary files differdeleted file mode 100644 index 5f0e4b651..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/FlowRangeToTimeResults.xlsx +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ISample.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ISample.cs deleted file mode 100644 index ea374a846..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ISample.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public interface ISample - { - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessCsvRow.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessCsvRow.cs deleted file mode 100644 index 33e85d5b5..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessCsvRow.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.CSV; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public class ProcessCsvRow - { - [CsvOrder(0)] - public String Time { get; set; } - [CsvOrder(1)] - public String Value { get; set; } - } -}
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessSample.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessSample.cs deleted file mode 100644 index 3f02ea35d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/ProcessSample.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public class ProcessSample : ISample - { - public double TimeIntervalSec { get; set; } - public DateTime Time { get; set; } - public double Value { get; set; } - - public ProcessSample() - { - Value = 0.0; - } - - public override string ToString() - { - return $"{TimeIntervalSec}, {Value}"; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/SettingsModel.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/SettingsModel.cs deleted file mode 100644 index 5540e4b25..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Models/SettingsModel.cs +++ /dev/null @@ -1,147 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Core; -using Tango.Core.Commands; - -namespace Tango.DispenserAnalyzer.UI.Models -{ - public interface ISettingsModel - { - string PropertyName { get; set; } - double PropertyValue { get; set; } - double DefaultValue { get; set; } - string DefaultValueDisplay { get; set; } - double MinRangeValue { get; set; } - double MaxRangeValue { get; set; } - bool IsRangeVisible { get; set; } - } - - public class SettingsModel: ExtendedObject, ISettingsModel - { - public AnalyzerSettingsEnum _enumName; - private string _propertyName; - - public string PropertyName - { - get { return _propertyName; } - set { _propertyName = value; RaisePropertyChangedAuto(); } - } - - private double _propertyvalue; - - public double PropertyValue - { - get { return _propertyvalue; } - set { - if( _propertyvalue != value) - { - _propertyvalue = value; - RaisePropertyChangedAuto(); - OnPropertyvalueChanged(); - } - } - } - - private void OnPropertyvalueChanged() - { - if(SettingValueEvent != null) - { - SettingValueEvent?.Invoke(this, new EventArgs()); - } - - } - - private double _defaultValue; - - public double DefaultValue - { - get { return _defaultValue; } - set { _defaultValue = value; RaisePropertyChangedAuto(); } - } - - private string _defaultValueDisplay; - - public string DefaultValueDisplay - { - get { return _defaultValueDisplay; } - set { _defaultValueDisplay = value; } - } - - private double _minDefaultRangeValue; - public double MinDefaultRangeValue - { - get { return _minDefaultRangeValue; } - set { _minDefaultRangeValue = value; RaisePropertyChangedAuto(); } - } - - private double _maxDefaultRangeValue; - public double MaxDefaultRangeValue - { - get { return _maxDefaultRangeValue; } - set { _maxDefaultRangeValue = value; RaisePropertyChangedAuto(); } - } - - private double _minRangeValue; - public double MinRangeValue - { - get { return _minRangeValue; } - set { - if (_minRangeValue != value) - { - _minRangeValue = value; - RaisePropertyChangedAuto(); - OnPropertyvalueChanged(); - } - } - } - - private double _maxRangeValue; - public double MaxRangeValue - { - get { return _maxRangeValue; } - set { - if (_maxRangeValue != value) - { - _maxRangeValue = value; - RaisePropertyChangedAuto(); - OnPropertyvalueChanged(); - } - } - } - public bool IsRangeVisible { get; set; } - - public event EventHandler SettingValueEvent; - - public RelayCommand SetDefaultCommand { get; set; } - - - public SettingsModel(AnalyzerSettingsEnum enumName, string defaultValueDisplay, bool isrange = false) - { - _enumName = enumName; - PropertyName = _enumName.ToDescription(); - DefaultValueDisplay = defaultValueDisplay; - DefaultValue = Settings.GetDefaultValueByName(enumName); - PropertyValue = Settings.GetValueByName(enumName); - IsRangeVisible = isrange; - MinDefaultRangeValue = IsRangeVisible ? Settings.GetDefaultValueByName(AnalyzerSettingsEnum.AvgMinValue) : 0.0; - MaxDefaultRangeValue = IsRangeVisible ? Settings.GetDefaultValueByName(AnalyzerSettingsEnum.AvgMaxValue) : 0.0; - MinRangeValue = IsRangeVisible? Settings.GetValueByName(AnalyzerSettingsEnum.AvgMinValue) : 0.0; - MaxRangeValue = IsRangeVisible? Settings.GetValueByName(AnalyzerSettingsEnum.AvgMaxValue) : 0.0; - SetDefaultCommand = new RelayCommand(SetDefault); - } - - private void SetDefault() - { - if(IsRangeVisible) - { - MinRangeValue = MinDefaultRangeValue; - MaxRangeValue = MaxDefaultRangeValue; - return; - } - PropertyValue = DefaultValue; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/AssemblyInfo.cs deleted file mode 100644 index 6438e7278..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,57 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Dispenser Analyzer")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("Twine")] -[assembly: AssemblyProduct("Dispenser Analyzer")] -[assembly: AssemblyCopyright("Copyright © 2019")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file -//inside a <PropertyGroup>. For example, if you are using US english -//in your source files, set the <UICulture> to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("3.1.1.3")] -[assembly: AssemblyFileVersion("1.0.0.0")] -[assembly: NeutralResourcesLanguage("en-AS")] - diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.Designer.cs deleted file mode 100644 index 2b3284e18..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.DispenserAnalyzer.UI.Properties -{ - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.DispenserAnalyzer.UI.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.resx b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> -</root>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.Designer.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.Designer.cs deleted file mode 100644 index abad5ee82..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.DispenserAnalyzer.UI.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.settings b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Settings.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Settings.cs deleted file mode 100644 index d515a0940..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Settings.cs +++ /dev/null @@ -1,92 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.DispenserAnalyzer.UI -{ - public enum AnalyzerSettingsEnum - { - [Description("Print Results to PDF file")] - PrintResultsToPDF, - [Description("PBU Pass fail")] - PBUPassFail, - [Description("PBU Pass fail")] - FlowPBUPassFail, - [Description("Exclude from analysis")] - ExcludeAnalysis, - [Description("Avg value")] - AvgMaxValue, - [Description("Avg value")] - AvgMinValue, - [Description("Max-Min range")] - MaxMinRange, - [Description("Max Min intervals")] - MaxMinIntervals, - [Description("Max error")] - MaxError, - [Description("Take off 'Max-min' values(out of highest results)")] - TakeOffMaxMin, - [Description("Time gap between data point [sec]")] - TimeInterval, - [Description("Time point to start calculation [sec]")] - StartCalculation, - [Description("Time point to end calculation [sec]")] - EndCalculation, - [Description("How many points to use for moving average")] - MovingAvg - - - } - - public static class Settings - { - public static Dictionary<AnalyzerSettingsEnum, double> DefaultValues { get; set; } - public static Dictionary<AnalyzerSettingsEnum, double> CurrentValues { get; set; } - - static Settings() - { - DefaultValues = new Dictionary<AnalyzerSettingsEnum, double>(); - DefaultValues[AnalyzerSettingsEnum.PBUPassFail] = 4.5; - DefaultValues[AnalyzerSettingsEnum.FlowPBUPassFail] = 4.5; - DefaultValues[AnalyzerSettingsEnum.ExcludeAnalysis] = 1800; - DefaultValues[AnalyzerSettingsEnum.AvgMinValue] = 1400; - DefaultValues[AnalyzerSettingsEnum.AvgMaxValue] = 1850; - DefaultValues[AnalyzerSettingsEnum.MaxMinRange] = 450; - DefaultValues[AnalyzerSettingsEnum.MaxMinIntervals] = 450; - DefaultValues[AnalyzerSettingsEnum.MaxError] = 1.5; - DefaultValues[AnalyzerSettingsEnum.TakeOffMaxMin] = 3; - DefaultValues[AnalyzerSettingsEnum.TimeInterval] = 0.1; - DefaultValues[AnalyzerSettingsEnum.StartCalculation] = 600; - DefaultValues[AnalyzerSettingsEnum.EndCalculation] = 900; - DefaultValues[AnalyzerSettingsEnum.MovingAvg] = 50; - - CurrentValues = new Dictionary<AnalyzerSettingsEnum, double>(DefaultValues); - - } - public static double GetValueByName(AnalyzerSettingsEnum name) - { - double value; - if (CurrentValues.TryGetValue(name, out value)) - { - return value; - } - return 0.0; - } - public static void SetValueByName(AnalyzerSettingsEnum name, double value) - { - CurrentValues[name] = value; - } - public static double GetDefaultValueByName(AnalyzerSettingsEnum name) - { - double value; - if (DefaultValues.TryGetValue(name, out value)) - { - return value; - } - return 0.0; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Tango.DispenserAnalyzer.UI.csproj b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Tango.DispenserAnalyzer.UI.csproj deleted file mode 100644 index 51d693d88..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/Tango.DispenserAnalyzer.UI.csproj +++ /dev/null @@ -1,246 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{D74893F2-9E39-4C72-BDD4-937404E1FC37}</ProjectGuid> - <OutputType>WinExe</OutputType> - <RootNamespace>Tango.DispenserAnalyzer.UI</RootNamespace> - <AssemblyName>Tango.DispenserAnalyzer.UI</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <WarningLevel>4</WarningLevel> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - <IsWebBootstrapper>false</IsWebBootstrapper> - <PublishUrl>P:\Dispenser Analyzer Installer\</PublishUrl> - <Install>true</Install> - <InstallFrom>Disk</InstallFrom> - <UpdateEnabled>false</UpdateEnabled> - <UpdateMode>Background</UpdateMode> - <UpdateInterval>7</UpdateInterval> - <UpdateIntervalUnits>Days</UpdateIntervalUnits> - <UpdatePeriodically>false</UpdatePeriodically> - <UpdateRequired>false</UpdateRequired> - <MapFileExtensions>true</MapFileExtensions> - <TargetCulture>en</TargetCulture> - <ProductName>Dispenser Analyser</ProductName> - <PublisherName>Twine</PublisherName> - <OpenBrowserOnPublish>false</OpenBrowserOnPublish> - <ApplicationRevision>4</ApplicationRevision> - <ApplicationVersion>3.1.1.%2a</ApplicationVersion> - <UseApplicationTrust>true</UseApplicationTrust> - <CreateDesktopShortcut>true</CreateDesktopShortcut> - <PublishWizardCompleted>true</PublishWizardCompleted> - <BootstrapperEnabled>true</BootstrapperEnabled> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\Build\DispenserAnalyzer\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\Build\DispenserAnalyzer\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup> - <ManifestCertificateThumbprint>E5B326DBA5A7604EBB456C9664FBF874933BA54E</ManifestCertificateThumbprint> - </PropertyGroup> - <PropertyGroup> - <ManifestKeyFile>Tango.DispenserAnalyzer.UI_TemporaryKey.pfx</ManifestKeyFile> - </PropertyGroup> - <PropertyGroup> - <GenerateManifests>true</GenerateManifests> - </PropertyGroup> - <PropertyGroup> - <SignManifests>true</SignManifests> - </PropertyGroup> - <PropertyGroup> - <ApplicationIcon>twin.ico</ApplicationIcon> - </PropertyGroup> - <ItemGroup> - <Reference Include="MahApps.Metro"> - <HintPath>..\..\packages\MahApps.Metro.1.5.0\lib\net45\MahApps.Metro.dll</HintPath> - </Reference> - <Reference Include="MaterialDesignColors"> - <HintPath>..\..\packages\MaterialDesignColors.1.1.2\lib\net45\MaterialDesignColors.dll</HintPath> - </Reference> - <Reference Include="MaterialDesignThemes.Wpf"> - <HintPath>..\..\packages\MaterialDesignThemes.2.3.1.953\lib\net45\MaterialDesignThemes.Wpf.dll</HintPath> - </Reference> - <Reference Include="MathNet.Numerics, Version=4.9.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\MathNet.Numerics.4.9.0\lib\net461\MathNet.Numerics.dll</HintPath> - </Reference> - <Reference Include="OxyPlot, Version=2.0.0.0, Culture=neutral, PublicKeyToken=638079a8f0bd61e9, processorArchitecture=MSIL"> - <HintPath>..\..\packages\OxyPlot.Core.2.0.0\lib\net45\OxyPlot.dll</HintPath> - </Reference> - <Reference Include="OxyPlot.Wpf, Version=2.0.0.0, Culture=neutral, PublicKeyToken=75e952ba404cdbb0, processorArchitecture=MSIL"> - <HintPath>..\..\packages\OxyPlot.Wpf.2.0.0\lib\net45\OxyPlot.Wpf.dll</HintPath> - </Reference> - <Reference Include="PdfSharp, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL"> - <HintPath>..\..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp.dll</HintPath> - </Reference> - <Reference Include="PdfSharp-WPF"> - <HintPath>..\..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp-WPF.dll</HintPath> - </Reference> - <Reference Include="PdfSharp.Charting, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL"> - <HintPath>..\..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp.Charting.dll</HintPath> - </Reference> - <Reference Include="PdfSharp.Xps"> - <HintPath>..\..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp.Xps.dll</HintPath> - </Reference> - <Reference Include="ReachFramework" /> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Drawing" /> - <Reference Include="System.Numerics" /> - <Reference Include="System.Printing" /> - <Reference Include="System.Runtime.Serialization" /> - <Reference Include="System.Xml" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xaml"> - <RequiredTargetFramework>4.0</RequiredTargetFramework> - </Reference> - <Reference Include="WindowsBase" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="App.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </ApplicationDefinition> - <Compile Include="Analysis\AnalyserResultChartData.cs" /> - <Compile Include="Analysis\AnalysisPlotValue.cs" /> - <Compile Include="Analysis\AnalyzerResultProperty.cs" /> - <Compile Include="Analysis\AnalyzerResultBase.cs" /> - <Compile Include="Analysis\AnalyzerResultValue.cs" /> - <Compile Include="Analysis\AnalysisService.cs" /> - <Compile Include="Analysis\DispenserReader.cs" /> - <Compile Include="Analysis\IAnalyzerResult.cs" /> - <Compile Include="Analysis\IAnalyzer.cs" /> - <Compile Include="Analysis\IReader.cs" /> - <Compile Include="Analysis\ProcessReader.cs" /> - <Compile Include="Analyzers\DynamicSealingAnalyzer.cs" /> - <Compile Include="Analyzers\FlowAnalyser.cs" /> - <Compile Include="Analyzers\PressureBuildUpAnalyser.cs" /> - <Compile Include="Analyzers\PrimingAnalyzer.cs" /> - <Compile Include="Analyzers\ProcessAnalyser.cs" /> - <Compile Include="Analyzers\ReliabilityTestAnalyser.cs" /> - <Compile Include="Analyzers\SealingAnalyzer.cs" /> - <Compile Include="Analysis\AnalyzerAttribute.cs" /> - <Compile Include="FileHelper.cs" /> - <Compile Include="Models\DispenserCsvRow.cs" /> - <Compile Include="Models\DispenserSample.cs" /> - <Compile Include="Models\DispenserSampleCommand.cs" /> - <Compile Include="Models\ISample.cs" /> - <Compile Include="Models\ProcessCsvRow.cs" /> - <Compile Include="Models\ProcessSample.cs" /> - <Compile Include="Models\SettingsModel.cs" /> - <Compile Include="Settings.cs" /> - <Compile Include="ViewModels\MainWindowVM.cs" /> - <Compile Include="ViewModels\SettingsVM.cs" /> - <Compile Include="View\SettingsWnd.xaml.cs"> - <DependentUpon>SettingsWnd.xaml</DependentUpon> - </Compile> - <Page Include="MainWindow.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="App.xaml.cs"> - <DependentUpon>App.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Compile Include="MainWindow.xaml.cs"> - <DependentUpon>MainWindow.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Page Include="View\SettingsWnd.xaml"> - <SubType>Designer</SubType> - <Generator>MSBuild:Compile</Generator> - </Page> - </ItemGroup> - <ItemGroup> - <Compile Include="Properties\AssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Resources.resx</DependentUpon> - </Compile> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - </EmbeddedResource> - <EmbeddedResource Include="Models\FlowRangeToTimeResults.xlsx" /> - <None Include="packages.config" /> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - <None Include="Tango.DispenserAnalyzer.UI_TemporaryKey.pfx" /> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.CSV\Tango.CSV.csproj"> - <Project>{58e8825f-0c96-449c-b320-1e82b0aa876b}</Project> - <Name>Tango.CSV</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Documents\Tango.Documents.csproj"> - <Project>{ca87a608-7b17-4c98-88f2-42abee10f4c1}</Project> - <Name>Tango.Documents</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.SharedUI\Tango.SharedUI.csproj"> - <Project>{8491d07b-c1f6-4b62-a412-41b9fd2d6538}</Project> - <Name>Tango.SharedUI</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <Folder Include="Converters\" /> - </ItemGroup> - <ItemGroup> - <BootstrapperPackage Include=".NETFramework,Version=v4.6.1"> - <Visible>False</Visible> - <ProductName>Microsoft .NET Framework 4.6.1 %28x86 and x64%29</ProductName> - <Install>true</Install> - </BootstrapperPackage> - <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1"> - <Visible>False</Visible> - <ProductName>.NET Framework 3.5 SP1</ProductName> - <Install>false</Install> - </BootstrapperPackage> - </ItemGroup> - <ItemGroup> - <Resource Include="twin.ico" /> - </ItemGroup> - <ItemGroup /> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml deleted file mode 100644 index d8d4594b8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml +++ /dev/null @@ -1,213 +0,0 @@ -<Window x:Class="Tango.DispenserAnalyzer.UI.View.SettingsWnd" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" - xmlns:local="clr-namespace:Tango.DispenserAnalyzer.UI.View" - mc:Ignorable="d" - Title="Settings" Height="690" Width="800" FontSize="22" ResizeMode="NoResize" WindowStyle="ToolWindow" Closing="Window_Closing"> - <Window.Resources> - <Style TargetType="{x:Type TextBlock}" x:Key="WrapText"> - <Setter Property="TextWrapping" Value="Wrap"/> - </Style> - - <Style TargetType="DataGridColumnHeader" BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> - <Setter Property="HorizontalAlignment" Value="Left"></Setter> - <Setter Property="HorizontalContentAlignment" Value="Left"></Setter> - <Setter Property="Padding" Value="0 0 0 0"></Setter> - <Setter Property="Margin" Value="8 0 0 0"></Setter> - <Setter Property="FontWeight" Value="SemiBold"/> - <Setter Property="BorderThickness" Value="1"/> - <Setter Property="Height" Value="Auto"/> - <Setter Property="FontSize" Value="14"/> - </Style> - <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}"> - <Setter Property="Padding" Value="1" /> - <Setter Property="BorderThickness" Value="0"/> - <Setter Property="FocusVisualStyle" Value="{x:Null}"/> - <Setter Property="VerticalContentAlignment" Value="Center"></Setter> - <Setter Property="VerticalAlignment" Value="Center"/> - <Setter Property="HorizontalAlignment" Value="Left"/> - <Setter Property="Margin" Value="8 0 8 0"/> - <Setter Property="Height" Value="Auto"/> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type DataGridCell}"> - <ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource AccentColorBrush}" /> - </Trigger> - </Style.Triggers> - </Style> - <Style TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}"> - <Setter Property="BorderThickness" Value="0 0 0 1"/> - <Setter Property="BorderBrush" Value="LightGray"/> - <Setter Property="Height" Value="Auto"/> - <Style.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="#4fc3f7" /> - <Setter Property="Cursor" Value="Hand"></Setter> - </Trigger> - <Trigger Property="IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - </Trigger> - </Style.Triggers> - </Style> - - <Style x:Key="PropertyDataGrid" TargetType="DataGrid" BasedOn="{StaticResource {x:Type DataGrid}}"> - <Setter Property="BorderBrush" Value="#FF688CAF"/> - <Setter Property="BorderThickness" Value="0"/> - <Setter Property="HorizontalScrollBarVisibility" Value="Disabled" /> - <Setter Property="VerticalScrollBarVisibility" Value="Auto"/> - </Style> - - <Style x:Key="ItemsControlStyle1" TargetType="{x:Type ItemsControl}"> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type ItemsControl}"> - <Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true"> - <ScrollViewer VerticalScrollBarVisibility="Auto"> - <ScrollViewer.Resources> - <Style TargetType="ScrollBar"> - <Setter Property="Width" Value="10"/> - <Setter Property="MinWidth" Value="10" /> - </Style> - </ScrollViewer.Resources> - <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> - </ScrollViewer> - </Border> - </ControlTemplate> - </Setter.Value> - </Setter> - </Style> - - </Window.Resources> - - - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="1*"/> - <RowDefinition Height="80"/> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - - </Grid.ColumnDefinitions> - <Grid VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> - <ItemsControl ItemsSource="{Binding Settings}" Height="Auto" Style="{StaticResource ItemsControlStyle1}" MinHeight="20" Margin="0 0 20 20"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <StackPanel VerticalAlignment="Center" Orientation="Vertical" IsItemsHost="True"></StackPanel> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border BorderThickness="1" BorderBrush="#4D4B4B4B" Margin="10" CornerRadius="6"> - <Grid Height="Auto" VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> - <Grid.RowDefinitions> - <RowDefinition Height="Auto"/> - <RowDefinition Height="Auto"/> - </Grid.RowDefinitions> - <Grid Grid.Row="0" VerticalAlignment="Top"> - <Border Margin="20 20 20 0" BorderBrush="LightGray" BorderThickness="0.6" CornerRadius="4" Height="36"> - <Border.Effect> - <DropShadowEffect/> - </Border.Effect> - </Border> - <Border Margin="20 20 20 0" BorderBrush="LightGray" BorderThickness="0.6" CornerRadius="4" Height="34" Background="#C4EEFC"> - <TextBlock FontSize="22" Padding="2" Text="{Binding Name}"/> - </Border> - </Grid> - <DataGrid Grid.Row="1" Style="{StaticResource PropertyDataGrid}" ItemsSource="{Binding Settings}" Margin="20 20 20 0" GridLinesVisibility="None" SelectionMode="Single" AlternatingRowBackground="#F6F6F6" FontSize="12" HorizontalAlignment="Left" SelectionUnit="FullRow" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False"> - <DataGrid.Columns> - <DataGridTextColumn Header="Property Name" Binding="{Binding PropertyName}" Width="250" ElementStyle="{StaticResource WrapText}"/> - <DataGridTemplateColumn Header="Property Value" Width="150"> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <StackPanel Orientation="Horizontal"> - <TextBox Text="{Binding PropertyValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}" Width="50" VerticalAlignment="Top"> - <TextBox.Style> - <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource MaterialDesignTextBox}"> - <Setter Property="Visibility" Value="Visible"/> - <Style.Triggers> - <DataTrigger Binding="{Binding IsRangeVisible}" Value="true"> - <Setter Property="Visibility" Value="Collapsed"/> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBox.Style> - </TextBox> - <DockPanel HorizontalAlignment="Stretch" Width="150"> - <DockPanel.Style> - <Style TargetType="{x:Type DockPanel}"> - <Setter Property="Visibility" Value="Collapsed"/> - <Style.Triggers> - <DataTrigger Binding="{Binding IsRangeVisible}" Value="true"> - <Setter Property="Visibility" Value="Visible"/> - </DataTrigger> - </Style.Triggers> - </Style> - </DockPanel.Style> - <TextBox DockPanel.Dock="Left" Name="MinRangeValue" Width="50" Text="{Binding MinRangeValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/> - <TextBox DockPanel.Dock="Right" Name="MaxRangeValue" Width="50" Text="{Binding MaxRangeValue, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"/> - </DockPanel> - </StackPanel> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - <DataGridTextColumn Header="Default Value" Binding="{Binding DefaultValueDisplay}" Width="150" ElementStyle="{StaticResource WrapText}" /> - <DataGridTemplateColumn Header="" Width="Auto"> - <DataGridTemplateColumn.CellStyle> - <Style TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}"> - <Setter Property="BorderThickness" Value="0"/> - <Setter Property="FocusVisualStyle" Value="{x:Null}"/> - <Setter Property="VerticalContentAlignment" Value="Center"></Setter> - <Setter Property="VerticalAlignment" Value="Center"/> - <Setter Property="HorizontalAlignment" Value="Stretch"/> - <Setter Property="Margin" Value="0 0 0 0"/> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type DataGridCell}"> - <ContentPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource AccentColorBrush}" /> - </Trigger> - </Style.Triggers> - </Style> - </DataGridTemplateColumn.CellStyle> - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <Grid HorizontalAlignment="Stretch" VerticalAlignment="Center"> - <Button Width="80" Padding="2" Height="26" FontSize="12" Margin="0 8" Command="{Binding SetDefaultCommand}">Set Default</Button> - </Grid> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - </DataGrid.Columns> - </DataGrid> - </Grid> - </Border> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </Grid> - <Grid Grid.Row="1" > - <Button Width="80" HorizontalAlignment="Right" Margin="20" Click="SaveButton_Click" IsDefault="True">Save</Button> - </Grid> - </Grid> -</Window> diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml.cs deleted file mode 100644 index 9879d8f7a..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/View/SettingsWnd.xaml.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; -using Tango.DispenserAnalyzer.UI.ViewModels; - -namespace Tango.DispenserAnalyzer.UI.View -{ - /// <summary> - /// Interaction logic for SettingsWnd.xaml - /// </summary> - public partial class SettingsWnd : Window - { - private SettingsVM vm; - public SettingsWnd() - { - InitializeComponent(); - vm = new SettingsVM(); - DataContext = vm; - Loaded += Window_loaded; - } - - public Dictionary<AnalyzerSettingsEnum, double> GetChanges() - { - return vm.GetChanges(); - } - - private void Window_loaded(object sender, RoutedEventArgs e) - { - Application curApp = Application.Current; - Window mainWindow = curApp.MainWindow; - this.Left = mainWindow.Left + (mainWindow.Width - this.ActualWidth) / 2; - this.Top = mainWindow.Top + (mainWindow.Height - this.ActualHeight) / 2; - } - - private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - vm.Dispose(); - } - public void SaveButton_Click(object sender, RoutedEventArgs e) - { - this.DialogResult = true; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs deleted file mode 100644 index 48d426d23..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/MainWindowVM.cs +++ /dev/null @@ -1,578 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Microsoft.Win32; -using Tango.Core.Commands; -using Tango.CSV; -using Tango.DispenserAnalyzer.UI.Models; -using Tango.SharedUI; -using System.Collections.ObjectModel; -using System.IO; -using System.Windows.Input; -using Tango.DispenserAnalyzer.UI.Analysis; -using System.Windows; -using System.Windows.Threading; -using OxyPlot; -using OxyPlot.Wpf; -using OxyPlot.Annotations; -using System.Windows.Media; -using System.Diagnostics; -using System.Windows.Documents; -using System.Windows.Controls; -using System.Windows.Xps; -using System.Windows.Xps.Packaging; -using System.Windows.Media.Imaging; -using PdfSharp; -using OxyPlot.Reporting; -using System.Threading; -using Tango.DispenserAnalyzer.UI.View; -using Tango.Core.Helpers; -using Tango.Documents; - -namespace Tango.DispenserAnalyzer.UI.ViewModels -{ - public class MainWindowVM: ViewModel - { - private const string FILE_EXTENSION = ".pdf"; - - public Plot PlotControl { get; set; } - - /// <summary> - /// Gets or sets the results panel. Using to save all results in xps file - /// </summary> - public System.Windows.Controls.ItemsControl ResultsPanel { get; set; } - - private string _openFilePath; - public string OpenFilePath - { - get { return _openFilePath; } - set - { - if(value != null && _openFilePath != value) - { - _openFilePath = value; - OnSelectedFileChanged(); - RaisePropertyChangedAuto(); - GenerateCommand.RaiseCanExecuteChanged(); - } - } - } - - private string _filename; - public string FileName - { - get { return _filename; } - set { _filename = value; - RaisePropertyChangedAuto(); - RaisePropertyChanged("ButtonName"); } - } - - public string ButtonName { - get { return "Generate result for " + FileName; } - } - - private string _testName = ""; - public string TestName - { - get { return _testName.ToUpper() + " TEST"; } - set { _testName = value; RaisePropertyChangedAuto(); } - } - - private IList<DataPoint> _points; - /// <summary> - /// Binding to ItemsSource of line chart. - /// </summary> - public IList<DataPoint> Points - { - get { return _points; } - set - { - _points = value; - RaisePropertyChangedAuto(); - } - } - private int _step; - public int XStep - { - get { return _step; } - set { _step = value; RaisePropertyChangedAuto(); } - } - - private double _from; - /// <summary> - /// From use to binding to bottom axis min value - /// </summary> - public double From - { - get { return _from; } - set - { - _from = value; RaisePropertyChangedAuto(); - } - } - - private double _to; - /// <summary> - /// To use to binding to bottom axis max value - /// </summary> - public double To - { - get { return _to; } - set - { - _to = value; RaisePropertyChangedAuto(); - } - } - - private string _titleAxisBottom; - - public string TitleAxisBottom - { - get { return _titleAxisBottom; } - set { _titleAxisBottom = value; RaisePropertyChangedAuto(); } - } - - private string _titleAxisLeft; - - public string TitleAxisLeft - { - get { return _titleAxisLeft; } - set { _titleAxisLeft = value; RaisePropertyChangedAuto(); } - } - - - - private bool _isRunning; - /// <summary> - /// Gets or sets a value indicating whether this instance is running. - /// </summary> - public bool IsRunning - { - get { return _isRunning; } - set { _isRunning = value; RaisePropertyChangedAuto(); } - } - - private ObservableCollection<IAnalyzerResult> _analyzerResults; - public ObservableCollection<IAnalyzerResult> AnalyzerResults - { - get { return _analyzerResults; } - set { _analyzerResults = value; RaisePropertyChangedAuto(); } - } - - public Func<double, string> YFormatter { get; set; } - - public RelayCommand OpenCSVFileCommand { get; set; } - public RelayCommand GenerateCommand { get; set; } - public RelayCommand OpenSettingWndCommand { get; set; } - - public MainWindowVM() - { - OpenCSVFileCommand = new RelayCommand(OpenCSVFile); - GenerateCommand = new RelayCommand(Generate, CanGenerate); - OpenSettingWndCommand = new RelayCommand(OpenSettingWnd); - - YFormatter = value => value.ToString(); - _from = 0; - _to = 1; - XStep = 1; - AnalyzerResults = new ObservableCollection<IAnalyzerResult>(); - _isRunning = false; - TitleAxisBottom = ""; - TitleAxisLeft = ""; - this.Points = new List<DataPoint>(); - } - - #region Settings - - public void OpenSettingWnd() - { - SettingsWnd settings = new SettingsWnd(); - settings.Owner = System.Windows.Application.Current.MainWindow; - if(true == settings.ShowDialog()) - { - Dictionary<AnalyzerSettingsEnum, double> changes = settings.GetChanges(); - foreach (KeyValuePair<AnalyzerSettingsEnum, double> entry in changes) - { - Settings.SetValueByName(entry.Key, entry.Value); - } - } - } - - #endregion - - #region Read File - private void OpenCSVFile() - { - OpenFileDialog dlg = new OpenFileDialog(); - dlg.Filter = "CSV Files|*.csv"; - if (dlg.ShowDialog().Value) - { - try - { - OpenFilePath = dlg.FileName; - } - catch (Exception ex) - { - MessageBox.Show("An error occurred while trying to import the CSV file. " + ex.Message, - "Warning", - MessageBoxButton.OK, - MessageBoxImage.Warning); - } - } - } - protected virtual bool IsFileLocked(string filePath) - { - FileStream stream = null; - try - { - stream = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.None); - } - catch (IOException ex) - { - MessageBox.Show("Warning: " + ex.Message, "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); - return true; - } - finally - { - if (stream != null) - stream.Close(); - } - return false; - } - - private void OnSelectedFileChanged() - { - ResetSettings(); - if(File.Exists(OpenFilePath)) - { - FileHelper.OpenFilePath = OpenFilePath; - FileName = Path.GetFileName(OpenFilePath); - } - } - #endregion - - #region Generate - - public bool CanGenerate() - { - return (OpenFilePath!= null && OpenFilePath.Length != 0 && File.Exists(OpenFilePath)); - } - - /// <summary> - /// Generates all results. - /// </summary> - public async void Generate() - { - if (false == File.Exists(OpenFilePath) || IsFileLocked(OpenFilePath)) - return; - ResetSettings(); - - var analyzer = AnalysisService.GetAnalyzer(OpenFilePath); - if (analyzer == null) - return; - - IsRunning = true; - AnalyzerAttribute[] attr = analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true); - if (attr != null && attr.Count() > 0) - { - TestName = attr[0].Name; - } - List<OxyPlot.Wpf.LineAnnotation> annotations = new List<OxyPlot.Wpf.LineAnnotation>(); - var samples = analyzer.Reader.ReadScvFile(OpenFilePath, annotations); - analyzer.GetPoints(samples, Points); - if (Points.Count == 0) - { - IsRunning = false; - return; - } - annotations.ForEach(x => PlotControl.Annotations.Add(x)); - To = 0; - From = 0; - - List<IAnalyzerResult> res = await analyzer.Process(samples, false); - AnalyzerResults = new ObservableCollection<IAnalyzerResult>(res); - - _to = Points.Max(x => x.Y); - _from = TestName.Contains("sealtest") ? Points.FirstOrDefault(x => x.X == 0).Y : Points.Min(x => x.Y); - List<string> titles = analyzer.Reader.GetTitles(OpenFilePath); - TitleAxisBottom = titles[0]; - TitleAxisLeft = titles[1]; - - // data.Clear(); - _to += 100; - RaisePropertyChanged("To"); - if (_from != 0) - _from -= 100; - RaisePropertyChanged("From"); - XStep = (int)(Points.Count / 5); - - IsRunning = false; - PlotControl.InvalidatePlot(true); - - if(analyzer.Reader.PrintResultsToPDFFile()) - { - await PrintToXpsFile(); - } - } - - /// <summary> - /// Generates all results from command line and close application. - /// </summary> - public async Task GenerateInBackground(string openFilePath) - { - OpenFilePath = openFilePath; - - if (false == File.Exists(OpenFilePath) || IsFileLocked(OpenFilePath)) - return; - - var analyzer = AnalysisService.GetAnalyzer(OpenFilePath); - if (analyzer == null) - return; - - AnalyzerAttribute[] attr = analyzer.GetType().GetCustomAttributes(typeof(AnalyzerAttribute), true); - if (attr != null && attr.Count() > 0) - { - TestName = attr[0].Name; - } - - List<OxyPlot.Wpf.LineAnnotation> annotations = new List<OxyPlot.Wpf.LineAnnotation>(); - var samples = analyzer.Reader.ReadScvFile(OpenFilePath, annotations); - analyzer.GetPoints(samples, Points); - if (Points.Count == 0) - { - return; - } - - List<IAnalyzerResult> res = await analyzer.Process(samples, true); - AnalyzerResults = new ObservableCollection<IAnalyzerResult>(res); - - await ExportResultsToTextFile(); - } - #endregion - - private void ResetSettings() - { - Points.Clear(); - - AnalyzerResults.Clear(); - TestName = ""; - foreach (var ax in PlotControl.Axes) - { - ax.Maximum = ax.Minimum = Double.NaN; - PlotControl.ResetAllAxes(); - } - PlotControl.Annotations.Clear(); - PlotControl.InvalidatePlot(true); - } - - #region SaveInXps file - private async Task PrintToXpsFile() - { - await Task.Delay(200); - try - { - var resultFile = FileHelper.GetResultFilePath(); - if (resultFile.IsNotNullOrEmpty()) - { - SaveResultsAsXps(resultFile); - } - } - catch(Exception ex) - { - Debug.WriteLine(ex); - } - } - - public void SaveResultsAsXps( string fileName) - { - var dir = Path.GetDirectoryName(fileName); - var name = Path.GetFileNameWithoutExtension(fileName); - string fileNameWithoutExtension = Path.Combine(dir, name); - - ContentControl cc = ResultsPanel.Parent as ContentControl; - ResultsPanel.UpdateLayout(); - - List<Plot> all_plots = ResultsPanel.FindVisualChildren<OxyPlot.Wpf.Plot>().ToList(); - List<Plot> plots = new List<Plot>(); - List<System.Windows.Controls.Image> plotimages = new List<System.Windows.Controls.Image>(); - int index = 0; - foreach (var item in all_plots) - { - var seriesdata = item.Series[0].ItemsSource; - - item.RaiseEvent(new System.Windows.RoutedEventArgs(OxyPlot.Wpf.PlotView.LoadedEvent)); - item.InvalidatePlot(true); - if (item.IsMeasureValid && item.ActualHeight > 0) - { - plots.Add(item); - string pngPlotFileName = String.Format($"{fileNameWithoutExtension}_Plottest{index}.png"); - File.Delete(pngPlotFileName); - System.Windows.Controls.Image plotImage = new System.Windows.Controls.Image(); - //print plot to png file - removed 2/07/2020 - //using (var stream = File.Open(pngPlotFileName, FileMode.Create, FileAccess.ReadWrite)) - { - PngExporter exporter = new PngExporter() { Width = (int)item.ActualWidth, Height = (int)item.ActualHeight, Background = OxyColors.White, Resolution = 96 }; - //exporter.Export(item.ActualModel, stream); - - BitmapSource bitmap = exporter.ExportToBitmap(item.ActualModel); - plotImage.Source = bitmap; - plotImage.UpdateLayout(); - var parent = item.Parent; - if (parent is Panel) - { - var plpanel = (Panel)parent; - plpanel.Children.Remove(item); - plpanel.Children.Add(plotImage); - plpanel.UpdateLayout(); - } - else if (parent is Decorator) - { - ((Decorator)parent).Child = plotImage; - ((Border)parent).UpdateLayout(); - } - } - plotimages.Add(plotImage); - index++; - } - ResultsPanel.UpdateLayout(); - } - - if (cc != null) - { - cc.Content = null; - CreateDoc(fileName, plots, plotimages); - cc.Content = ResultsPanel; - } - } - - private void CreateDoc( string fileName, List<Plot> plots, List<System.Windows.Controls.Image> plotimages) - { - Dispatcher.CurrentDispatcher.Invoke( DispatcherPriority.Loaded, new Action(() => - { - var dir = Path.GetDirectoryName(fileName); - var name = Path.GetFileNameWithoutExtension(fileName); - string fileNameWithoutExtension = Path.Combine(dir, name); - - Size reportSize = GetReportSize(ResultsPanel); - - FixedDocument fixedDoc = new FixedDocument(); - PageContent pageContent = new PageContent(); - FixedPage fixedPage = new FixedPage(); - fixedPage.Width = reportSize.Width; - fixedPage.Height = reportSize.Height; - fixedPage.Children.Add(ResultsPanel); - fixedPage.UpdateLayout(); - - pageContent.BeginInit(); - ((System.Windows.Markup.IAddChild)pageContent).AddChild(fixedPage); - pageContent.EndInit(); - - fixedDoc.Pages.Add(pageContent); - - InjectData(fixedDoc, AnalyzerResults); - ResultsPanel.Measure(reportSize); - ResultsPanel.Arrange(new Rect(new Point(0, 0), ResultsPanel.DesiredSize)); - ResultsPanel.UpdateLayout(); - - - String sourceXpsFile = String.Format($"{fileNameWithoutExtension}_test.xps"); - File.Delete(sourceXpsFile); - using (XpsDocument xpsd = new XpsDocument(sourceXpsFile, FileAccess.Write)) - { - System.Windows.Xps.XpsDocumentWriter xw = XpsDocument.CreateXpsDocumentWriter(xpsd); - xw.Write(fixedDoc); - } - fixedPage.Children.Remove(ResultsPanel); - PdfSharp.Xps.XpsConverter.Convert(sourceXpsFile, fileName, 0); - File.Delete(sourceXpsFile); - })); - - - } - - /// <summary> - /// Injects the data to printed document. Without this the binding data to elements doesn't work. - /// </summary> - /// <param name="document">The document.</param> - /// <param name="dataSource">The data source.</param> - protected void InjectData(FixedDocument document, object dataSource) - { - document.DataContext = new { AnalyzerResults = dataSource }; - // we need to give the binding infrastructure a push as we - // are operating outside of the intended use of WPF - var dispatcher = Dispatcher.CurrentDispatcher; - dispatcher.Invoke(DispatcherPriority.SystemIdle, new DispatcherOperationCallback(delegate { return null; }), null); - } - - private static Size GetReportSize(ItemsControl reportContainer) - { - double reportWidth = reportContainer.ActualWidth + 10; - double reportHeight = reportContainer.ActualHeight + 10;// (reportWidth / printDialog.PrintableAreaWidth) * printDialog.PrintableAreaHeight; - - return new Size(reportWidth, reportHeight); - } - - public static void Print(IPlotModel model, string fileName, double width, double height) - { - using (var stream = File.Open(fileName, FileMode.Create, FileAccess.ReadWrite)) - { - var exporter = new XpsExporter { Width = width, Height = height}; - //PngExporter.Export(this.Plot.ActualModel, fileName, 600, 400, OxyColors.White) - exporter.Export(model, stream); - } - } - - #endregion - - #region ExportToExel - - public async Task ExportResultsToTextFile() - { - var resultFile = FileHelper.GetResultFilePath(); - var dir = Path.GetDirectoryName(resultFile); - var name = Path.GetFileNameWithoutExtension(resultFile); - string fileNameWithoutExtension = Path.Combine(dir, name); - String sourceFile = String.Format($"{fileNameWithoutExtension}s.txt"); - File.Delete(sourceFile); - - await Task.Factory.StartNew(() => - { - try - { - List<IAnalyzerResult> results = AnalyzerResults.ToList(); - - using (StreamWriter outputFile = new StreamWriter(sourceFile)) - { - outputFile.WriteLine(String.Format($" {TestName.ToUpper()} RESULTS: ")); - outputFile.WriteLine(""); - outputFile.WriteLine(""); - foreach (var res in results) - { - if (res.GetType().IsSubclassOf(typeof(AnalyzerResultBase))) - { - List<AnalyzerResultProperty> properties = (res as AnalyzerResultBase).Properties; - foreach (var prop in properties) - { - outputFile.WriteLine(String.Format($" {prop.Name} : {prop.Value}")); - } - string resV = String.Format($" RESULT = {res.Result.ToString()}"); - outputFile.WriteLine(resV); - outputFile.WriteLine(""); - } - } - outputFile.Flush(); - } - } - catch (Exception ex) - { - Debug.WriteLine(ex); - } - }); - - } - #endregion - - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs deleted file mode 100644 index b610d7652..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/ViewModels/SettingsVM.cs +++ /dev/null @@ -1,132 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.DispenserAnalyzer.UI.Models; -using Tango.SharedUI; - -namespace Tango.DispenserAnalyzer.UI.ViewModels -{ - public class SettingVM: ViewModel - { - private string _name; - - public string Name - { - get { return _name; } - set { _name = value; } - } - - private ObservableCollection<SettingsModel> _settings; - - public ObservableCollection<SettingsModel> Settings - { - get { return _settings; } - set { _settings = value; RaisePropertyChangedAuto(); } - } - - public SettingVM(string name) - { - _settings = new ObservableCollection<SettingsModel>(); - Name = name; - } - - public void AddSettings(List<SettingsModel> settings) - { - settings.ForEach(x => Settings.Add(x)); - } - - - } - public class SettingsVM : ViewModel, IDisposable - { - public Dictionary<AnalyzerSettingsEnum, double> ChangedValues { get; set; } - - private ObservableCollection<SettingVM> _settings; - - public ObservableCollection<SettingVM> Settings - { - get { return _settings; } - set { _settings = value; RaisePropertyChangedAuto(); } - } - - public SettingsVM() - { - _settings = new ObservableCollection<SettingVM>(); - ChangedValues = new Dictionary<AnalyzerSettingsEnum, double>(); - InitPBUTestSettings(); - InitProcessSettings(); - InitFlowTestSettings(); - - } - - private void InitPBUTestSettings() - { - SettingVM model = new SettingVM("Pressure build up"); - List<SettingsModel> list = new List<SettingsModel>(); - list.Add(new SettingsModel(AnalyzerSettingsEnum.PBUPassFail, "4.5 sec")); - model.AddSettings(list); - list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); - Settings.Add(model); - } - - private void InitFlowTestSettings() - { - SettingVM model = new SettingVM("Flow test"); - List<SettingsModel> list = new List<SettingsModel>(); - - list.Add(new SettingsModel(AnalyzerSettingsEnum.FlowPBUPassFail, "4.5 sec")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.ExcludeAnalysis, "1800 reads")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.AvgMinValue, "1400-1850 [mbar]", true)); - list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinRange, "450 reads")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxMinIntervals, "450 reads")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.MaxError, "1.5%")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.TakeOffMaxMin, "3")); - list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); - model.AddSettings(list); - Settings.Add(model); - } - - private void InitProcessSettings() - { - SettingVM model = new SettingVM("Process"); - List<SettingsModel> list = new List<SettingsModel>(); - list.Add(new SettingsModel(AnalyzerSettingsEnum.TimeInterval, "0.1 sec")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.StartCalculation, "600 sec")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.EndCalculation, "900 sec")); - list.Add(new SettingsModel(AnalyzerSettingsEnum.MovingAvg, "50 points")); - list.ForEach(x => x.SettingValueEvent += new EventHandler(OnSettingValueChanged)); - model.AddSettings(list); - Settings.Add(model); - } - - private void OnSettingValueChanged(object sender, EventArgs e) - { - if (sender is SettingsModel) - { - SettingsModel settingModel = sender as SettingsModel; - if (settingModel.IsRangeVisible) - { - ChangedValues[AnalyzerSettingsEnum.AvgMinValue] = settingModel.MinRangeValue; - ChangedValues[AnalyzerSettingsEnum.AvgMaxValue] = settingModel.MaxRangeValue; - } - else - ChangedValues[settingModel._enumName] = settingModel.PropertyValue; - } - } - - public Dictionary<AnalyzerSettingsEnum, double> GetChanges() - { - return ChangedValues; - } - - public void Dispose() - { - Settings.ToList().ForEach(x => { - x.Settings.ToList().ForEach(k => k.SettingValueEvent -= OnSettingValueChanged); - }); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/packages.config b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/packages.config deleted file mode 100644 index 832cf227f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/packages.config +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="MathNet.Numerics" version="4.9.0" targetFramework="net461" /> - <package id="OxyPlot.Core" version="2.0.0" targetFramework="net461" /> - <package id="OxyPlot.Wpf" version="2.0.0" targetFramework="net461" /> - <package id="PDFsharp" version="1.50.5147" targetFramework="net461" /> -</packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/ColorMine.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/ColorMine.dll.deploy Binary files differdeleted file mode 100644 index c78699979..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/ColorMine.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/DocumentFormat.OpenXml.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/DocumentFormat.OpenXml.dll.deploy Binary files differdeleted file mode 100644 index 7978b0462..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/DocumentFormat.OpenXml.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EFCache.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EFCache.dll.deploy Binary files differdeleted file mode 100644 index 5fb35f260..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EFCache.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EntityFramework.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EntityFramework.dll.deploy Binary files differdeleted file mode 100644 index 9275df68e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/EntityFramework.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Google.Protobuf.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Google.Protobuf.dll.deploy Binary files differdeleted file mode 100644 index faa4f959f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Google.Protobuf.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/LiteDB.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/LiteDB.dll.deploy Binary files differdeleted file mode 100644 index ca08f66f5..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/LiteDB.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MahApps.Metro.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MahApps.Metro.dll.deploy Binary files differdeleted file mode 100644 index 4c52491f6..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MahApps.Metro.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignColors.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignColors.dll.deploy Binary files differdeleted file mode 100644 index f7c1eaa44..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignColors.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignThemes.Wpf.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignThemes.Wpf.dll.deploy Binary files differdeleted file mode 100644 index 8bfe328ab..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MaterialDesignThemes.Wpf.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MathNet.Numerics.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MathNet.Numerics.dll.deploy Binary files differdeleted file mode 100644 index 2aa884d31..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/MathNet.Numerics.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Newtonsoft.Json.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Newtonsoft.Json.dll.deploy Binary files differdeleted file mode 100644 index be6558d2d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Newtonsoft.Json.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.Wpf.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.Wpf.dll.deploy Binary files differdeleted file mode 100644 index 44f75da1d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.Wpf.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.dll.deploy Binary files differdeleted file mode 100644 index f2c722528..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/OxyPlot.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp-WPF.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp-WPF.dll.deploy Binary files differdeleted file mode 100644 index 048b3d85d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp-WPF.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Charting.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Charting.dll.deploy Binary files differdeleted file mode 100644 index f648e4a19..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Charting.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Xps.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Xps.dll.deploy Binary files differdeleted file mode 100644 index 5a0e8a3fe..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.Xps.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.dll.deploy Binary files differdeleted file mode 100644 index 4fcde52f1..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/PdfSharp.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/SimpleValidator.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/SimpleValidator.dll.deploy Binary files differdeleted file mode 100644 index c70970ba9..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/SimpleValidator.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Data.SQLite.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Data.SQLite.dll.deploy Binary files differdeleted file mode 100644 index 59f3dcc37..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Data.SQLite.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.IO.Compression.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.IO.Compression.dll.deploy Binary files differdeleted file mode 100644 index f8468a652..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.IO.Compression.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Windows.Interactivity.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Windows.Interactivity.dll.deploy Binary files differdeleted file mode 100644 index 931c744c8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/System.Windows.Interactivity.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.BL.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.BL.dll.deploy Binary files differdeleted file mode 100644 index fd3c6747d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.BL.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.CSV.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.CSV.dll.deploy Binary files differdeleted file mode 100644 index 25105272c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.CSV.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Core.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Core.dll.deploy Binary files differdeleted file mode 100644 index 7c6414e91..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Core.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.application b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.application deleted file mode 100644 index f490058f7..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.application +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2"> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI.application" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /> - <description asmv2:publisher="Dispenser Analyser" asmv2:product="Tango.Dispenser Analyser" xmlns="urn:schemas-microsoft-com:asm.v1" /> - <deployment install="true" mapFileExtensions="true" /> - <compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2"> - <framework targetVersion="4.6.1" profile="Full" supportedRuntime="4.0.30319" /> - </compatibleFrameworks> - <dependency> - <dependentAssembly dependencyType="install" codebase="Application Files\Tango.DispenserAnalyzer.UI_2_0_0_0\Tango.DispenserAnalyzer.UI.exe.manifest" size="26869"> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI.exe" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" type="win32" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>eiKxJvcr4ylNdFFD94Ti1JzvXyOiOJBZVkzaPrLMawU=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> -<publisherIdentity name="CN=TWINE\victoria" issuerKeyHash="59607512eeb9e38b76e48f6d9fa40740c59f2d3c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>Sn9KPiVwf5LL2QPSXS4tvuYjY4MZRQxAsMkMtjjSnrs=</DigestValue></Reference></SignedInfo><SignatureValue>t0T5+l4gViKhYgwhMba1xkyrc3bQ9EhXqsk4rZX7R6/vSdm7/QtQoSEVvlCbkA4rw56Q+n09pwohezJNla+Kre/kWe5EfJ2UcMk2PorKF0V3HWauRpqqfh9TjkuQLoaUdX1cUf92kmNK8pRMNZeeASO7OBUQWMccb1ePNsFS++g=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="bb9ed238b60cc9b0400c4519836323e6be2d2e5dd203d9cb927f70253e4a7f4a" Description="" Url=""><as:assemblyIdentity name="Tango.DispenserAnalyzer.UI.application" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=TWINE\victoria</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>gXJTLU7syw5LlEy5QT6ApZg3NAr3qHl8g3/qZ6xl9ms=</DigestValue></Reference></SignedInfo><SignatureValue>KU6gcRD5cWaF0D2D08Zpr8oVMZeFtNvtszM59rs3WuJ3c79RZlzsd2IYW4YYNCE0LGgpvlnu+ydp7aZwtFVQ7yhGPNkcwijZoumVd4ZTaw0bIuwvCswvlzq+CCbKy+BB6JfKnITutKUuwTsyIdhKVDyZJxj3VFJHN3p0EvRpcfI=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB0TCCATqgAwIBAgIQHNNUEeosJbVGklX8IkvE8TANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDHhwAVABXAEkATgBFAFwAdgBpAGMAdABvAHIAaQBhMB4XDTIwMDYyMjE0NTcyNFoXDTIxMDYyMjIwNTcyNFowJzElMCMGA1UEAx4cAFQAVwBJAE4ARQBcAHYAaQBjAHQAbwByAGkAYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2UCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCs/8lt/tnwuA4tLzkX/huqZjpIDkyBkId+bC/z4T9W4a80G9LOcWpoYnaCUR2mIJbgST+932WNv0IGrc23jpqEjojjK2/QuvjHARGtavs/hJc5NYZD9xo5MjotGI8IbbjWxW++MKsnAU8TjpJEEbiFSQetboML65NcSiMuuo2UMw==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.config.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.config.deploy deleted file mode 100644 index ddc8cb7a6..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.config.deploy +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.4.2.0" newVersion="1.4.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Xml.XPath.XDocument" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Diagnostics.StackTrace" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Z.EntityFramework.Extensions" publicKeyToken="59b66d028979105b" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.50.0" newVersion="4.0.50.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.deploy Binary files differdeleted file mode 100644 index 54bb356a8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.manifest b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.manifest deleted file mode 100644 index f5a991ddc..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DispenserAnalyzer.UI.exe.manifest +++ /dev/null @@ -1,425 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2"> - <asmv1:assemblyIdentity name="Tango.DispenserAnalyzer.UI.exe" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" type="win32" /> - <application /> - <entryPoint> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI" version="1.1.0.0" language="neutral" processorArchitecture="msil" /> - <commandLine file="Tango.DispenserAnalyzer.UI.exe" parameters="" /> - </entryPoint> - <trustInfo> - <security> - <applicationRequestMinimum> - <PermissionSet Unrestricted="true" ID="Custom" SameSite="site" /> - <defaultAssemblyRequest permissionSetReference="Custom" /> - </applicationRequestMinimum> - <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> - <!-- - UAC Manifest Options - If you want to change the Windows User Account Control level replace the - requestedExecutionLevel node with one of the following. - - <requestedExecutionLevel level="asInvoker" uiAccess="false" /> - <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> - <requestedExecutionLevel level="highestAvailable" uiAccess="false" /> - - If you want to utilize File and Registry Virtualization for backward - compatibility then delete the requestedExecutionLevel node. - --> - <requestedExecutionLevel level="asInvoker" uiAccess="false" /> - </requestedPrivileges> - </security> - </trustInfo> - <dependency> - <dependentOS> - <osVersionInfo> - <os majorVersion="5" minorVersion="1" buildNumber="2600" servicePackMajor="0" /> - </osVersionInfo> - </dependentOS> - </dependency> - <dependency> - <dependentAssembly dependencyType="preRequisite" allowDelayedBinding="true"> - <assemblyIdentity name="Microsoft.Windows.CommonLanguageRuntime" version="4.0.30319.0" /> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="ColorMine.dll" size="32256"> - <assemblyIdentity name="ColorMine" version="1.2.0.0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>PgU74yyS2Imy65XcI2cVNH84c06vXrmm6+fcSsYYliY=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="DocumentFormat.OpenXml.dll" size="5697824"> - <assemblyIdentity name="DocumentFormat.OpenXml" version="2.7.2.0" publicKeyToken="8FB06CB64D019A17" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>poeWiknlhBNq1OeIpsSUWt4fCGjpLQslgLOzl2R98Uc=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="EFCache.dll" size="35328"> - <assemblyIdentity name="EFCache" version="1.1.3.0" publicKeyToken="46C4868AF4307D2C" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>1C04PduKM0+kdK7ANZe+gEuk82+Iuhzm+jGwm94Hv5w=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="EntityFramework.dll" size="5225168"> - <assemblyIdentity name="EntityFramework" version="6.0.0.0" publicKeyToken="B77A5C561934E089" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>nCD7KthqdgsMauvZMByQCYkdAq4UcgqTkmwLU1uK0Js=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Google.Protobuf.dll" size="276480"> - <assemblyIdentity name="Google.Protobuf" version="3.4.1.0" publicKeyToken="A7D26565BAC4D604" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>cGM/vPf7KHrrIx37vLOM3VplFKKihDWG6LHCEGtoWIM=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="LiteDB.dll" size="461824"> - <assemblyIdentity name="LiteDB" version="5.0.4.0" publicKeyToken="4EE40123013C9F27" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>AJ0b8xq+/Qx1zTCw9vCkluaCb7VL1+GQCnJXMKKx+lc=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MahApps.Metro.dll" size="1146368"> - <assemblyIdentity name="MahApps.Metro" version="1.5.0.23" publicKeyToken="F4FB5A3C4D1E5B4F" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>8ajYIaF9mjjIeLYjnxwULwRJVgetF0VwIu9YeWwSfVE=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MaterialDesignColors.dll" size="224256"> - <assemblyIdentity name="MaterialDesignColors" version="1.1.2.0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>d4wZkVSpfjUBqYKDtRfNT80gSBwKfOiY66XUQlfkFX0=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MaterialDesignThemes.Wpf.dll" size="4538880"> - <assemblyIdentity name="MaterialDesignThemes.Wpf" version="2.3.1.953" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>rOZ71y/A8+NZqgkh4zex0EuvaI3YUPF3jmcHeU1sx9s=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="MathNet.Numerics.dll" size="1676824"> - <assemblyIdentity name="MathNet.Numerics" version="4.9.0.0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>mbS2KeRuHkrky7/Kb8t9QzlV5FMYxnascno1yXE0UjE=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Newtonsoft.Json.dll" size="526336"> - <assemblyIdentity name="Newtonsoft.Json" version="9.0.0.0" publicKeyToken="30AD4FE6B2A6AEED" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>V14w+Y5OpCyeUW7ci7sprYtQsXOj5rNrW6OeEzzOlAY=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="OxyPlot.dll" size="549376"> - <assemblyIdentity name="OxyPlot" version="2.0.0.0" publicKeyToken="638079A8F0BD61E9" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>vK0M/swEOEMAi0ryfXTkz0Zjigbl2dinsJ/6tuWCmpg=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="OxyPlot.Wpf.dll" size="160768"> - <assemblyIdentity name="OxyPlot.Wpf" version="2.0.0.0" publicKeyToken="75E952BA404CDBB0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>ISsNz4aIwqIJLHtgXpc8mMX2dSeDKtrQruRZx50YLSs=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="PdfSharp.dll" size="535040"> - <assemblyIdentity name="PdfSharp" version="1.50.5147.0" publicKeyToken="F94615AA0424F9EB" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>L6CJPGoajmQ0LmXlRk+tQXN2vSzJhOU1dfWCmwfmoGc=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="PdfSharp.Charting.dll" size="80896"> - <assemblyIdentity name="PdfSharp.Charting" version="1.50.5147.0" publicKeyToken="F94615AA0424F9EB" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>iZ82KufB7VL4vikYPHOk4epNcuQzBa0wqUJtaeI6ecg=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="PdfSharp.Xps.dll" size="126464"> - <assemblyIdentity name="PdfSharp.Xps" version="1.0.0.0" publicKeyToken="F94615AA0424F9EB" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>huTss2rXs8KGQ8PQHtADyWJl0oeyPKg2ATaCakFu+d0=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="PdfSharp-WPF.dll" size="589312"> - <assemblyIdentity name="PdfSharp-WPF" version="1.31.1789.0" publicKeyToken="F94615AA0424F9EB" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>meUyQ9VFctyBIGBgDrxIjzfQMEzpKaEzTFPwN6TXJA8=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="SimpleValidator.dll" size="30208"> - <assemblyIdentity name="SimpleValidator" version="0.6.1.0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>XzWWPUCP55BeUMXcoXUNc2yKEpSn/fQVP1A9383qWYA=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Data.SQLite.dll" size="345600"> - <assemblyIdentity name="System.Data.SQLite" version="1.0.108.0" publicKeyToken="DB937BC2D44FF139" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>VLEF/4rXqsFJ5PQmFaN6Bj/sfOmz7dLNbN7B62xX4sA=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.IO.Compression.dll" size="111984"> - <assemblyIdentity name="System.IO.Compression" version="4.1.2.0" publicKeyToken="B77A5C561934E089" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>uWPrlWJ7XyI+gT/OilPmydcokXFJI95yYxEUc/rr8+8=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="System.Windows.Interactivity.dll" size="55904"> - <assemblyIdentity name="System.Windows.Interactivity" version="4.5.0.0" publicKeyToken="31BF3856AD364E35" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>k/vFnkiAr8nxNsOsCXatp/P6p8rO3OXIJLM3y8qdLr8=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.BL.dll" size="987136"> - <assemblyIdentity name="Tango.BL" version="2.0.36.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>p7x0p3lnYvy5wrWHUOr1BIJb+z1ebGPRZEAY+yhdhRU=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.Core.dll" size="138240"> - <assemblyIdentity name="Tango.Core" version="2.0.33.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>3mf3dtzccuo8w8eRRue7CDVltNZygjDwR5DytqWY/IQ=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.CSV.dll" size="22016"> - <assemblyIdentity name="Tango.CSV" version="2.0.17.1657" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>VHg/VJxYIyR+GBIvRWuc8bpfbqXP114iJm+q/80u6pE=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.DispenserAnalyzer.UI.exe" size="61368"> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI" version="1.1.0.0" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>IP7iNwWCnAWkBM5sAjmrDPRrTTYlaG4hd5YLQDuArWQ=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.Documents.dll" size="20480"> - <assemblyIdentity name="Tango.Documents" version="2.0.4.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>XqWUXg9aTwfULoENsOT1FrHjyaTeAzs59nmarlFI8Ms=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.DragAndDrop.dll" size="20480"> - <assemblyIdentity name="Tango.DragAndDrop" version="2.0.28.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>FXBik223FPVVyaQ129dlIS+HSP/zcJTiiHdQ9hOkc/E=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.Logging.dll" size="37888"> - <assemblyIdentity name="Tango.Logging" version="2.0.37.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>8nHS0Sg2Flxj99FNk2i9m3dRwHyA2wM8w9hrNFyY2GY=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.PMR.dll" size="1528832"> - <assemblyIdentity name="Tango.PMR" version="2.0.40.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>mIpF+uzDNjXFbHDs8j1lPSx7PBBr4cJWQfQVLBkvOCU=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.Settings.dll" size="9728"> - <assemblyIdentity name="Tango.Settings" version="2.0.31.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>FmjatwQJYqP/M/14WnGYcdClZz1aTrHjPfcrTW/M7x4=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <dependency> - <dependentAssembly dependencyType="install" allowDelayedBinding="true" codebase="Tango.SharedUI.dll" size="147456"> - <assemblyIdentity name="Tango.SharedUI" version="2.0.30.1608" language="neutral" processorArchitecture="msil" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>vIwcd2kaaQ+//z0LesOJ5ii+rFGDRIWAz0ZZbOiVZJU=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> - <file name="Tango.DispenserAnalyzer.UI.exe.config" size="3319"> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>1H/fzVxmuhnT5x+/KUVkLmAvaVR00DWbcBWiIuTZ+YU=</dsig:DigestValue> - </hash> - </file> -<publisherIdentity name="CN=TWINE\victoria" issuerKeyHash="59607512eeb9e38b76e48f6d9fa40740c59f2d3c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>oQrQIybPh1ABsGASktthQ5Xzbed3JXUYLtBMG6x8G4E=</DigestValue></Reference></SignedInfo><SignatureValue>jKuL6/A+K+HlShS6lNOlVrQIcS4dddTgqd5Vp+3Geet0wI0SN4qv9D04ShxrOnVBwOx4G7uFDDlBYhTqxUxqS4GsvBermpLO4CQiRd9lDu/lT+0U63J6ItpFVWefj6Wt2q+iBQzu4wH5JMJtFiKdCcrxVF7lV0qkO2dydBK7xx8=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="811b7cac1b4cd02e18752577e76df3954361db921260b0015087cf2623d00aa1" Description="" Url=""><as:assemblyIdentity name="Tango.DispenserAnalyzer.UI.exe" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" type="win32" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=TWINE\victoria</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>Sl9VRiIgqJCocNFBEoq367mW/veMU/Wh0Pyt2/2ioEw=</DigestValue></Reference></SignedInfo><SignatureValue>zu/VNl7VVo/rRgw/lrDLAkhb7d1uaJYQCj+SDAGrAluVWP5D9bHTjngbUie388ttvIEmoZycnqwAh1mAxhlfSmWGkyJVrq2WCl0bgdWqI/MaHXFtm5dysLstFe4ITwm9KW6TuKGT1NCAp/8i5VmlGCXJbn/4sqMwidYI95tGcMA=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB0TCCATqgAwIBAgIQHNNUEeosJbVGklX8IkvE8TANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDHhwAVABXAEkATgBFAFwAdgBpAGMAdABvAHIAaQBhMB4XDTIwMDYyMjE0NTcyNFoXDTIxMDYyMjIwNTcyNFowJzElMCMGA1UEAx4cAFQAVwBJAE4ARQBcAHYAaQBjAHQAbwByAGkAYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2UCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCs/8lt/tnwuA4tLzkX/huqZjpIDkyBkId+bC/z4T9W4a80G9LOcWpoYnaCUR2mIJbgST+932WNv0IGrc23jpqEjojjK2/QuvjHARGtavs/hJc5NYZD9xo5MjotGI8IbbjWxW++MKsnAU8TjpJEEbiFSQetboML65NcSiMuuo2UMw==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Documents.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Documents.dll.deploy Binary files differdeleted file mode 100644 index bf31b6586..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Documents.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DragAndDrop.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DragAndDrop.dll.deploy Binary files differdeleted file mode 100644 index fc66ab2c7..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.DragAndDrop.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Logging.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Logging.dll.deploy Binary files differdeleted file mode 100644 index 3a2a22e66..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Logging.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.PMR.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.PMR.dll.deploy Binary files differdeleted file mode 100644 index ab3ecc069..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.PMR.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Settings.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Settings.dll.deploy Binary files differdeleted file mode 100644 index 758e0f9d3..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.Settings.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.SharedUI.dll.deploy b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.SharedUI.dll.deploy Binary files differdeleted file mode 100644 index 2b8b64f8f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Application Files/Tango.DispenserAnalyzer.UI_2_0_0_0/Tango.SharedUI.dll.deploy +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Tango.DispenserAnalyzer.UI.application b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Tango.DispenserAnalyzer.UI.application deleted file mode 100644 index f490058f7..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/Tango.DispenserAnalyzer.UI.application +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<asmv1:assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns="urn:schemas-microsoft-com:asm.v2" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xrml="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns:co.v2="urn:schemas-microsoft-com:clickonce.v2"> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI.application" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /> - <description asmv2:publisher="Dispenser Analyser" asmv2:product="Tango.Dispenser Analyser" xmlns="urn:schemas-microsoft-com:asm.v1" /> - <deployment install="true" mapFileExtensions="true" /> - <compatibleFrameworks xmlns="urn:schemas-microsoft-com:clickonce.v2"> - <framework targetVersion="4.6.1" profile="Full" supportedRuntime="4.0.30319" /> - </compatibleFrameworks> - <dependency> - <dependentAssembly dependencyType="install" codebase="Application Files\Tango.DispenserAnalyzer.UI_2_0_0_0\Tango.DispenserAnalyzer.UI.exe.manifest" size="26869"> - <assemblyIdentity name="Tango.DispenserAnalyzer.UI.exe" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" type="win32" /> - <hash> - <dsig:Transforms> - <dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" /> - </dsig:Transforms> - <dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /> - <dsig:DigestValue>eiKxJvcr4ylNdFFD94Ti1JzvXyOiOJBZVkzaPrLMawU=</dsig:DigestValue> - </hash> - </dependentAssembly> - </dependency> -<publisherIdentity name="CN=TWINE\victoria" issuerKeyHash="59607512eeb9e38b76e48f6d9fa40740c59f2d3c" /><Signature Id="StrongNameSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>Sn9KPiVwf5LL2QPSXS4tvuYjY4MZRQxAsMkMtjjSnrs=</DigestValue></Reference></SignedInfo><SignatureValue>t0T5+l4gViKhYgwhMba1xkyrc3bQ9EhXqsk4rZX7R6/vSdm7/QtQoSEVvlCbkA4rw56Q+n09pwohezJNla+Kre/kWe5EfJ2UcMk2PorKF0V3HWauRpqqfh9TjkuQLoaUdX1cUf92kmNK8pRMNZeeASO7OBUQWMccb1ePNsFS++g=</SignatureValue><KeyInfo Id="StrongNameKeyInfo"><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><msrel:RelData xmlns:msrel="http://schemas.microsoft.com/windows/rel/2005/reldata"><r:license xmlns:r="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:as="http://schemas.microsoft.com/windows/pki/2005/Authenticode"><r:grant><as:ManifestInformation Hash="bb9ed238b60cc9b0400c4519836323e6be2d2e5dd203d9cb927f70253e4a7f4a" Description="" Url=""><as:assemblyIdentity name="Tango.DispenserAnalyzer.UI.application" version="2.0.0.0" publicKeyToken="132e92a17c115bb8" language="en" processorArchitecture="msil" xmlns="urn:schemas-microsoft-com:asm.v1" /></as:ManifestInformation><as:SignedBy /><as:AuthenticodePublisher><as:X509SubjectName>CN=TWINE\victoria</as:X509SubjectName></as:AuthenticodePublisher></r:grant><r:issuer><Signature Id="AuthenticodeSignature" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha256" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /><Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha256" /><DigestValue>gXJTLU7syw5LlEy5QT6ApZg3NAr3qHl8g3/qZ6xl9ms=</DigestValue></Reference></SignedInfo><SignatureValue>KU6gcRD5cWaF0D2D08Zpr8oVMZeFtNvtszM59rs3WuJ3c79RZlzsd2IYW4YYNCE0LGgpvlnu+ydp7aZwtFVQ7yhGPNkcwijZoumVd4ZTaw0bIuwvCswvlzq+CCbKy+BB6JfKnITutKUuwTsyIdhKVDyZJxj3VFJHN3p0EvRpcfI=</SignatureValue><KeyInfo><KeyValue><RSAKeyValue><Modulus>zzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2U=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue><X509Data><X509Certificate>MIIB0TCCATqgAwIBAgIQHNNUEeosJbVGklX8IkvE8TANBgkqhkiG9w0BAQsFADAnMSUwIwYDVQQDHhwAVABXAEkATgBFAFwAdgBpAGMAdABvAHIAaQBhMB4XDTIwMDYyMjE0NTcyNFoXDTIxMDYyMjIwNTcyNFowJzElMCMGA1UEAx4cAFQAVwBJAE4ARQBcAHYAaQBjAHQAbwByAGkAYTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzzV0va0+OVkY61fn35CFzm10O+rOO5fK1ZgG8qU8CU8sU9ZCEqbOnj6JVDugnKocgpuUOzKPs4oTHskFB2V0VNRLM0YYN1rOie9wTg0JIMUQ69j1k1GN4ewHCrsu6FX1sFW6CxfLE4BcBPoAfDQtd7J67/G2Nnn8EVDM7b5Cq2UCAwEAATANBgkqhkiG9w0BAQsFAAOBgQCs/8lt/tnwuA4tLzkX/huqZjpIDkyBkId+bC/z4T9W4a80G9LOcWpoYnaCUR2mIJbgST+932WNv0IGrc23jpqEjojjK2/QuvjHARGtavs/hJc5NYZD9xo5MjotGI8IbbjWxW++MKsnAU8TjpJEEbiFSQetboML65NcSiMuuo2UMw==</X509Certificate></X509Data></KeyInfo></Signature></r:issuer></r:license></msrel:RelData></KeyInfo></Signature></asmv1:assembly>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/setup.exe b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/setup.exe Binary files differdeleted file mode 100644 index fc3854ab8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/publish/setup.exe +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/twin.ico b/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/twin.ico Binary files differdeleted file mode 100644 index 67c45cca8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.DispenserAnalyzer.UI/twin.ico +++ /dev/null diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Events.xlsx b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Events.xlsx Binary files differnew file mode 100644 index 000000000..a9183ec04 --- /dev/null +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Events.xlsx diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs index ae7bae072..20b27d7d5 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Program.cs @@ -16,8 +16,6 @@ namespace Tango.EventsTypesGenerator { class Program { - private static string EVENTS_FILE = "Tango alarm events handling chart_Rev28.xlsx"; - private class ExcelEventType { public String Code { get; set; } @@ -33,7 +31,6 @@ namespace Tango.EventsTypesGenerator public String ActionsEmbedded { get; set; } public String NotificationTime { get; set; } public String Guidance { get; set; } - public String Persistent { get; set; } public override string ToString() { @@ -45,53 +42,41 @@ namespace Tango.EventsTypesGenerator { Console.WriteLine("Generating event types..."); - ExcelReader reader = new ExcelReader(PathHelper.GetStartupPath() + "\\" + EVENTS_FILE); + ExcelReader reader = new ExcelReader(PathHelper.GetStartupPath() + "\\Events.xlsx"); var results = reader.GetDataByIndex<ExcelEventType>("ALARM EVENTS HANDLING", 2); - //First validate excel - foreach (var evx in results) - { - try - { - EventType te = new EventType(); - MapExcelEventToEventType(evx, te); - } - catch (Exception ex) - { - Console.WriteLine($"Invalid record found\n{evx.ToString()}\n\n{ex}"); - Console.ReadLine(); - return; - } - } - using (ObservablesContext db = ObservablesContext.CreateDefault()) { - foreach (var evx in results) + foreach (var evType in results) { bool isNewEvent = false; - int code = int.Parse(evx.Code); + int code = int.Parse(evType.Code); - EventType ev = db.EventTypes.SingleOrDefault(x => x.Code == code); + EventType newEvent = db.EventTypes.SingleOrDefault(x => x.Code == code); - if (ev == null) + if (newEvent == null) { - Console.WriteLine("Inserting " + evx.ToString()); - ev = new EventType(); - MapExcelEventToEventType(evx, ev); + Console.WriteLine("Inserting " + evType.ToString()); + newEvent = new EventType(); isNewEvent = true; } else { - if (EventRequiresUpdate(evx, ev)) - { - EventType te = new EventType(); - MapExcelEventToEventType(evx, te); - Console.WriteLine($"Updating {ev.Name}\nSource:\n{te.ToJsonString()}\nTarget:\n{ev.ToJsonString()}"); - MapExcelEventToEventType(evx, ev); - } + Console.WriteLine("Updating " + evType.ToString()); } + newEvent.Code = int.Parse(evType.Code); + newEvent.Name = evType.Name; + newEvent.Title = evType.Title; + newEvent.Description = evType.Description; + newEvent.TechnicalDescription = evType.TechnicalDescription; + newEvent.ComponentIndex = evType.Index != null ? int.Parse(evType.Index) : 0; + newEvent.Category = (EventTypeCategories)Enum.Parse(typeof(EventTypeCategories), evType.Category.Replace(" ", ""), true); + newEvent.Group = (EventTypeGroups)Enum.Parse(typeof(EventTypeGroups), evType.Group.Replace(" ", ""), true); + newEvent.NotificationTime = (EventTypeNotificationTimes)Enum.Parse(typeof(EventTypeNotificationTimes), evType.NotificationTime.Replace(" ", ""), true); + newEvent.Guidance = !String.IsNullOrWhiteSpace(evType.Guidance) ? evType.Guidance : null; + //TODO: Do this when Nadav fixes the excel. @@ -112,10 +97,11 @@ namespace Tango.EventsTypesGenerator // newEvent.Actions = new ReadOnlyCollection<EventTypeActions>(actions); //} + newEvent.RequiresUserIntervention = evType.UserInterventionRequired == "Yes"; if (isNewEvent) { - db.EventTypes.Add(ev); + db.EventTypes.Add(newEvent); } } @@ -127,42 +113,5 @@ namespace Tango.EventsTypesGenerator Console.WriteLine("Done!"); Console.ReadLine(); } - - private static bool EventRequiresUpdate(ExcelEventType evx, EventType ev) - { - EventType te = new EventType(); - MapExcelEventToEventType(evx, te); - - if (te.Code != ev.Code) return true; - if (te.Name != ev.Name) return true; - if (te.Title != ev.Title) return true; - if (te.Description != ev.Description) return true; - if (te.TechnicalDescription != ev.TechnicalDescription) return true; - if (te.ComponentIndex != ev.ComponentIndex) return true; - if (te.Category != ev.Category) return true; - if (te.Group != ev.Group) return true; - if (te.NotificationTime != ev.NotificationTime) return true; - if (te.Guidance != ev.Guidance) return true; - if (te.RequiresUserIntervention != ev.RequiresUserIntervention) return true; - if (te.Persistent != ev.Persistent) return true; - - return false; - } - - private static void MapExcelEventToEventType(ExcelEventType evx, EventType ev) - { - ev.Code = int.Parse(evx.Code); - ev.Name = evx.Name; - ev.Title = evx.Title; - ev.Description = evx.Description; - ev.TechnicalDescription = evx.TechnicalDescription; - ev.ComponentIndex = evx.Index != null ? int.Parse(evx.Index) : 0; - ev.Category = (EventTypeCategories)Enum.Parse(typeof(EventTypeCategories), evx.Category.Replace(" ", ""), true); - ev.Group = (EventTypeGroups)Enum.Parse(typeof(EventTypeGroups), evx.Group.Replace(" ", ""), true); - ev.NotificationTime = (EventTypeNotificationTimes)Enum.Parse(typeof(EventTypeNotificationTimes), evx.NotificationTime.Replace(" ", ""), true); - ev.Guidance = !String.IsNullOrWhiteSpace(evx.Guidance) ? evx.Guidance : null; - ev.RequiresUserIntervention = evx.UserInterventionRequired == "Yes"; - ev.Persistent = evx.Persistent == "Yes"; - } } } diff --git a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj index ea00f8746..4c5c9cf45 100644 --- a/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.EventsTypesGenerator/Tango.EventsTypesGenerator.csproj @@ -56,12 +56,11 @@ <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> - <None Include="..\..\Resources\Events Revisions\Tango alarm events handling chart_Rev28.xlsx"> - <Link>Tango alarm events handling chart_Rev28.xlsx</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> <None Include="App.config" /> <None Include="packages.config" /> + <None Include="Events.xlsx"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </None> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj"> diff --git a/Software/Visual_Studio/Utilities/Tango.FirmwarePackageGenerator/MainWindowVM.cs b/Software/Visual_Studio/Utilities/Tango.FirmwarePackageGenerator/MainWindowVM.cs index faca7d60e..62cef8b36 100644 --- a/Software/Visual_Studio/Utilities/Tango.FirmwarePackageGenerator/MainWindowVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.FirmwarePackageGenerator/MainWindowVM.cs @@ -55,8 +55,6 @@ namespace Tango.FirmwarePackageGenerator }); } - descriptor.Validate(); - using (MemoryStream ms = new MemoryStream()) { descriptor.WriteTo(ms); diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.config b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.config deleted file mode 100644 index 731f6de6c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml deleted file mode 100644 index 66f763000..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml +++ /dev/null @@ -1,24 +0,0 @@ -<Application x:Class="Tango.JobProgressTester.UI.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="clr-namespace:Tango.JobProgressTester.UI" - StartupUri="MainWindow.xaml"> - <Application.Resources> - <ResourceDictionary> - <ResourceDictionary.MergedDictionaries> - - <!--Touch--> - <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Resources/Colors.xaml"/> - - <!--Common--> - <ResourceDictionary Source="pack://application:,,,/Tango.PPC.Common;component/Resources/Merged.xaml" /> - - <!--Local--> - <!--<ResourceDictionary Source="Resources/Colors.xaml"></ResourceDictionary> - <ResourceDictionary Source="Resources/Fonts.xaml"></ResourceDictionary> - <ResourceDictionary Source="Resources/Styles.xaml"></ResourceDictionary>--> - - </ResourceDictionary.MergedDictionaries> - </ResourceDictionary> - </Application.Resources> -</Application> diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml.cs deleted file mode 100644 index b7efa1e9e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/App.xaml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; - -namespace Tango.JobProgressTester.UI -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/JobHandler2.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/JobHandler2.cs deleted file mode 100644 index e646ee51e..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/JobHandler2.cs +++ /dev/null @@ -1,259 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.BL.Entities; -using Tango.Integration.Operation; -using Tango.Logging; -using Tango.PMR.Printing; - -namespace Tango.JobProgressTester.UI -{ - public class JobHandler2 : JobHandler - { - public JobHandler2(Action cancelAction, Job job, JobTicket jobTicket, ProcessParametersTable processParameters, JobHandlerModes mode) - : base(cancelAction, job, jobTicket, processParameters, mode) - { - - } - - protected override void InvalidateJobProgress(JobStatus s) - { - JobStatus = s; - - if (_last_progress != s.Progress) - { - if (s.Progress <= PROGRESS_REPORT_RANGE_METERS || s.Progress >= Status.TotalProgress - PROGRESS_REPORT_RANGE_METERS) - { - LogManager.Log($"Updating job progress {s.Progress}/{Status.TotalProgress}..."); - } - else if (!loggedContinueMessage) - { - loggedContinueMessage = true; - LogManager.Log($"Progress logging will continue {PROGRESS_REPORT_RANGE_METERS} meters before completion..."); - } - } - - if (s.Progress < 0) - { - LogManager.Log($"Invalid job progress received '{s.Progress}'.", LogCategory.Error); - return; - } - - if (s.Progress > Status.TotalProgress) - { - LogManager.Log($"Invalid job progress received '{s.Progress}' while total progress is '{Status.TotalProgress}'.", LogCategory.Error); - return; - } - - if (s.Progress < _last_progress) - { - LogManager.Log($"Invalid job progress received '{s.Progress}' while last progress was '{_last_progress}'."); - } - - _last_progress = s.Progress; - - List<Segment> unit_segments = new List<Segment>(); - - Status.Progress = s.Progress; - Status.RemainingTime = Status.TotalTime - Job.TranslateProgressToTime(Status.Progress, ProcessParameters); - Status.RemainingProgress = Status.TotalProgress - Status.Progress; - - if (s.Progress < Status.SettingUpTotalProgress || Status.SettingUpProgress < Status.SettingUpTotalProgress) - { - Status.SettingUpProgress = Math.Min(s.Progress, this.Status.SettingUpTotalProgress); - Status.IsSettingUp = true; - } - if (s.Progress >= Status.SettingUpTotalProgress) - { - if (Status.IsSettingUp && Status.Progress > 0) - { - Status.IsSettingUp = false; - } - - Status.ProgressMinusSettingUp = s.Progress - this.Status.SettingUpTotalProgress; - } - - int units = (int)Math.Max(Job.NumberOfUnits, 1); - - if (s.Progress < Job.LengthIncludingNumberOfUnits || _mode == JobHandlerModes.SettingUp) - { - Status.ProgressWithoutFinalization = s.Progress; - - unit_segments = _effectiveSegments.ToList(); - Status.CurrentUnitProgress = 0.0; - double previousUnitsLengthWithoutThis = 0.0; - for (int index = 0; index < units; ++index) - { - Status.CurrentUnit = index; - double unitLength = !Job.EnableInterSegment || index >= units - 1 ? Job.Length : Job.Length + Job.InterSegmentLength; - if (_mode == JobHandlerModes.Finalization) - { - if (s.Progress < unitLength + previousUnitsLengthWithoutThis) - { - Status.CurrentUnitProgress = s.Progress - previousUnitsLengthWithoutThis; - break; - } - } - else if (s.Progress <= previousUnitsLengthWithoutThis + unitLength + Status.SettingUpProgress) - { - if (!Status.IsSettingUp) - { - Status.CurrentUnitProgress = s.Progress - previousUnitsLengthWithoutThis - this.Status.SettingUpProgress; - break; - } - break; - } - previousUnitsLengthWithoutThis += unitLength; - } - Status.RemainingUnits = this.Job.NumberOfUnits - this.Status.CurrentUnit; - - if (Job.EnableInterSegment && Job.NumberOfUnits > 1 && Status.RemainingUnits > 1) - { - unit_segments.Add(Job.CreateInterSegment(Job.InterSegmentLength)); - } - - if (unit_segments.Count != Status.CurrentUnitSegments.Count) - { - Status.CurrentUnitSegments = unit_segments; - } - - Status.CurrentUnitTotalProgress = Status.RemainingUnits > 1 && Job.EnableInterSegment ? Job.Length + (Job.InterSegmentLength) : Job.Length; - - if (s.Message != _lastStatusMessage && s.Message != String.Empty) - { - Status.Message = s.Message; - } - else - { - Status.Message = null; - } - - _lastStatusMessage = s.Message; - - - RaiseStatusChanged(); - - //Segments Completion - if (Status.CurrentUnit > _last_unit) - { - foreach (var segment in Status.CurrentUnitSegments) - { - segment.Started = false; - segment.Completed = false; - } - - if (Job.NumberOfUnits > 1) - { - RaiseUnitCompleted(_last_unit); - } - } - - _last_unit = Status.CurrentUnit; - - - for (int i = 0; i < Status.CurrentUnitSegments.Count; i++) - { - Segment segment = Status.CurrentUnitSegments[i]; - double previousSegmentsLengthWithThis = Status.CurrentUnitSegments.Take(i + 1).Sum(x => x.LengthWithFactor); - TimeSpan segmentsDuration = Job.TranslateProgressToTime(previousSegmentsLengthWithThis, ProcessParameters); - TimeSpan segmentRemainingTime = segmentsDuration - Job.TranslateProgressToTime(Status.CurrentUnitProgress, ProcessParameters); - - if (i == 0 && Status.CurrentUnitProgress > 0) - { - if (!segment.Started) - { - segment.Started = true; - RaiseSegmentStarted(segment); - } - } - - if (Status.CurrentUnitProgress >= previousSegmentsLengthWithThis) - { - if (!segment.Completed) - { - segment.Completed = true; - RaiseSegmentCompleted(segment); - } - - if (i < Status.CurrentUnitSegments.Count - 1) - { - if (!Status.CurrentUnitSegments[i + 1].Started) - { - Status.CurrentUnitSegments[i + 1].Started = true; - RaiseSegmentStarted(Status.CurrentUnitSegments[i + 1]); - } - } - } - - if (segment.Started && !segment.Completed) - { - segment.RemainingTime = segmentRemainingTime; - } - } - - //Set Segment Completion for All Segments List - for (int i = 0; i < Status.Segments.Count; i++) - { - Segment segment = Status.Segments[i]; - double previousSegmentsLengthWithThis = Status.Segments.Take(i + 1).Sum(x => x.LengthWithFactor); - TimeSpan segmentsDuration = Job.TranslateProgressToTime(previousSegmentsLengthWithThis, ProcessParameters); - TimeSpan segmentRemainingTime = segmentsDuration - Job.TranslateProgressToTime(Status.Progress, ProcessParameters); - - segment.Progress = Math.Min(Math.Max((previousSegmentsLengthWithThis - segment.Length - Status.Progress) * -1, 0), segment.Length); - - if (i == 0 && Status.Progress > 0) - { - if (!segment.Started) - { - segment.Started = true; - Status.CurrentSegment = segment; - } - } - - if (Status.Progress >= previousSegmentsLengthWithThis) - { - if (!segment.Completed) - { - segment.Completed = true; - } - - if (i < Status.Segments.Count - 1) - { - if (!Status.Segments[i + 1].Started) - { - Status.Segments[i + 1].Started = true; - Status.CurrentSegment = Status.Segments[i + 1]; - } - } - } - - if (segment.Started && !segment.Completed) - { - segment.RemainingTime = segmentRemainingTime; - } - } - } - else - { - //Finalizing - if (!_finalizing) - { - _finalizing = true; - Status.IsFinalizing = true; - var last_Segment = _effectiveSegments.Last().Clone(); - last_Segment.Length = ProcessParameters.DryerBufferLengthMeters; - Status.CurrentUnitSegments = new List<Segment> { last_Segment }; - Status.CurrentUnitTotalProgress = last_Segment.Length; - Status.CurrentUnitProgress = 0; - Status.ProgressWithoutFinalization = Status.TotalProgressWithoutFinalization; - RaiseFinalizing(); - } - - Status.CurrentUnitProgress = s.Progress - Job.LengthIncludingNumberOfUnits; - Status.FinalizingProgress = s.Progress - Status.TotalProgressWithoutFinalization; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml deleted file mode 100644 index d31e45d72..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml +++ /dev/null @@ -1,99 +0,0 @@ -<Window x:Class="Tango.JobProgressTester.UI.MainWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:jobViews="clr-namespace:Tango.PPC.Jobs.Views;assembly=Tango.PPC.Jobs" - xmlns:local="clr-namespace:Tango.JobProgressTester.UI" - mc:Ignorable="d" - Title="Job Progress Tester" Height="950" Width="600" d:DataContext="{d:DesignInstance Type=local:MainWindowVM,IsDesignTimeCreatable=False}"> - <Grid IsEnabled="{Binding IsFree}"> - <Grid> - <Grid.RowDefinitions> - <RowDefinition Height="90"/> - <RowDefinition Height="600*"/> - <RowDefinition Height="150*"/> - <RowDefinition Height="110"/> - </Grid.RowDefinitions> - - <ComboBox FontSize="20" VerticalAlignment="Center" HorizontalAlignment="Center" Width="350" ItemsSource="{Binding Jobs}" SelectedItem="{Binding SelectedJob}" DisplayMemberPath="Name" Margin="96,28"></ComboBox> - - <Grid Grid.Row="1"> - <Viewbox Stretch="Uniform"> - <jobViews:JobProgressView Width="800" Height="1000" DataContext="{Binding JobProgressViewVM}" /> - </Viewbox> - </Grid> - - <Grid Grid.Row="2"> - <StackPanel Margin="10"> - <TextBlock>Current Unit Segments.</TextBlock> - <ItemsControl ItemsSource="{Binding JobProgressViewVM.RunningJobStatus.CurrentUnitSegments}" Margin="0 5"> - <ItemsControl.ItemTemplate> - <DataTemplate> - <DockPanel> - <TextBlock> - <TextBlock.Style> - <Style TargetType="TextBlock"> - <Setter Property="Visibility" Value="Visible"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsInterSegment}" Value="True"> - <Setter Property="Visibility" Value="Collapsed"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBlock.Style> - <Run>Segment</Run> - <Run Text="{Binding SegmentIndex}"></Run> - </TextBlock> - <TextBlock Text="Inter Segment"> - <TextBlock.Style> - <Style TargetType="TextBlock"> - <Setter Property="Visibility" Value="Collapsed"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding IsInterSegment}" Value="True"> - <Setter Property="Visibility" Value="Visible"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBlock.Style> - </TextBlock> - <TextBlock Margin="10 0 0 0"> - <TextBlock.Style> - <Style TargetType="TextBlock"> - <Setter Property="Text" Value="Pending"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding Started}" Value="True"> - <Setter Property="Text" Value="Started"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding Completed}" Value="True"> - <Setter Property="Text" Value="Completed"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBlock.Style> - </TextBlock> - <TextBlock Margin="10 0 0 0" Text="{Binding RemainingTime,StringFormat='hh\\:mm\\:ss'}"></TextBlock> - </DockPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </StackPanel> - </Grid> - - <Grid Grid.Row="3"> - <StackPanel Margin="20"> - <TextBlock HorizontalAlignment="Center"> - <Run Text="{Binding Progress,Mode=OneWay,StringFormat='0.0'}"></Run> - <Run>/</Run> - <Run Text="{Binding JobHandler.Status.TotalProgress,Mode=OneWay,StringFormat='0.0'}"></Run> - </TextBlock> - <DockPanel Margin="0 5 0 0" HorizontalAlignment="Center" Width="200" > - <Button DockPanel.Dock="Right" Width="40" Height="20">SET</Button> - <TextBox Text="{Binding Progress}"></TextBox> - </DockPanel> - <Slider VerticalAlignment="Center" Margin="0 10 0 0" Maximum="{Binding JobHandler.Status.TotalProgress}" Value="{Binding Progress,Mode=TwoWay}"></Slider> - </StackPanel> - </Grid> - </Grid> - </Grid> -</Window> diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml.cs deleted file mode 100644 index 2bfbf4101..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindow.xaml.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using Tango.Core.DI; - -namespace Tango.JobProgressTester.UI -{ - /// <summary> - /// Interaction logic for MainWindow.xaml - /// </summary> - public partial class MainWindow : Window - { - public MainWindow() - { - TangoIOC.Default.ThrowOnRequestedTypeNotFound = false; - InitializeComponent(); - DataContext = new MainWindowVM(); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindowVM.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindowVM.cs deleted file mode 100644 index d21500685..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/MainWindowVM.cs +++ /dev/null @@ -1,160 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Data.Entity; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using Tango.BL; -using Tango.BL.Builders; -using Tango.BL.Entities; -using Tango.Core; -using Tango.Integration.Operation; -using Tango.Logging; -using Tango.PMR.Printing; -using Tango.PPC.Jobs.ViewModels; -using Tango.SharedUI; - -namespace Tango.JobProgressTester.UI -{ - public class MainWindowVM : ViewModel - { - private DataSource _dataSource; - - private List<Job> _jobs; - public List<Job> Jobs - { - get { return _jobs; } - set { _jobs = value; RaisePropertyChangedAuto(); } - } - - private Job _selectedJob; - public Job SelectedJob - { - get { return _selectedJob; } - set { _selectedJob = value; RaisePropertyChangedAuto(); OnSelectedJobChanged(); } - } - - private Job _activeJob; - public Job ActiveJob - { - get { return _activeJob; } - set { _activeJob = value; RaisePropertyChangedAuto(); } - } - - private JobProgressViewVM _jobProgressViewVM; - public JobProgressViewVM JobProgressViewVM - { - get { return _jobProgressViewVM; } - set { _jobProgressViewVM = value; RaisePropertyChangedAuto(); } - } - - private JobHandler2 _jobHandler; - public JobHandler2 JobHandler - { - get { return _jobHandler; } - set { _jobHandler = value; RaisePropertyChangedAuto(); } - } - - private double _progress; - public double Progress - { - get { return _progress; } - set { _progress = value; RaisePropertyChangedAuto(); OnProgressChanged(); } - } - - public MainWindowVM() - { - Application.Current.MainWindow.ContentRendered += (_, __) => Init(); - } - - private async void Init() - { - LogManager.RegisterLogger(new VSOutputLogger()); - - _dataSource = new DataSource() - { - Address = "localhost\\SQLPPC", - Catalog = "Tango", - IntegratedSecurity = true - }; - - try - { - IsFree = false; - ObservablesContext.OverrideSettingsDataSource(_dataSource); - - using (ObservablesContext db = ObservablesContext.CreateDefault()) - { - Jobs = await db.Jobs.ToListAsync(); - } - } - catch (Exception ex) - { - ShowError(ex.FlattenMessage()); - } - finally - { - IsFree = true; - } - } - - private async void OnSelectedJobChanged() - { - if (SelectedJob != null) - { - try - { - IsFree = false; - - using (ObservablesContext db = ObservablesContext.CreateDefault()) - { - ActiveJob = await new JobBuilder(db) - .Set(SelectedJob) - .WithConfiguration() - .WithBrushStops() - .WithRML() - .WithSegments() - .WithUser() - .BuildAsync(); - - JobHandler = new JobHandler2(() => { }, ActiveJob, null, ActiveJob.Rml.GetActiveProcessGroup().ProcessParametersTables.First(), JobHandlerModes.SettingUp); - - JobProgressViewVM = new JobProgressViewVM() - { - Job = ActiveJob, - RunningJobStatus = JobHandler.Status, - }; - - Progress = 0.1; - } - } - catch (Exception ex) - { - ShowError(ex.FlattenMessage()); - } - finally - { - IsFree = true; - } - } - } - - private void OnProgressChanged() - { - if(JobHandler != null) - { - JobHandler.RaiseStatusReceived(new JobStatus() - { - Progress = Progress, - }); - } - - } - - private void ShowError(String message) - { - MessageBox.Show(Application.Current.MainWindow, message, "Job Progress Tester", MessageBoxButton.OK, MessageBoxImage.Error); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/AssemblyInfo.cs deleted file mode 100644 index a8f112331..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tango.JobProgressTester.UI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tango.JobProgressTester.UI")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file -//inside a <PropertyGroup>. For example, if you are using US english -//in your source files, set the <UICulture> to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.Designer.cs deleted file mode 100644 index d11849c50..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.JobProgressTester.UI.Properties -{ - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.JobProgressTester.UI.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.resx b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> -</root>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.Designer.cs b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.Designer.cs deleted file mode 100644 index 832cab525..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.JobProgressTester.UI.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.settings b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Tango.JobProgressTester.UI.csproj b/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Tango.JobProgressTester.UI.csproj deleted file mode 100644 index eb5297422..000000000 --- a/Software/Visual_Studio/Utilities/Tango.JobProgressTester.UI/Tango.JobProgressTester.UI.csproj +++ /dev/null @@ -1,143 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{A248FF61-94E5-428C-B30C-25CB433C5F53}</ProjectGuid> - <OutputType>WinExe</OutputType> - <RootNamespace>Tango.JobProgressTester.UI</RootNamespace> - <AssemblyName>Tango.JobProgressTester.UI</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <WarningLevel>4</WarningLevel> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xaml"> - <RequiredTargetFramework>4.0</RequiredTargetFramework> - </Reference> - <Reference Include="WindowsBase" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="App.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </ApplicationDefinition> - <Page Include="MainWindow.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="App.xaml.cs"> - <DependentUpon>App.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Compile Include="JobHandler2.cs" /> - <Compile Include="MainWindow.xaml.cs"> - <DependentUpon>MainWindow.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - </ItemGroup> - <ItemGroup> - <Compile Include="MainWindowVM.cs" /> - <Compile Include="Properties\AssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Resources.resx</DependentUpon> - </Compile> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - </EmbeddedResource> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\PPC\Modules\Tango.PPC.Jobs\Tango.PPC.Jobs.csproj"> - <Project>{096f16c8-6d06-4b5f-9496-b9d2df2d94a3}</Project> - <Name>Tango.PPC.Jobs</Name> - </ProjectReference> - <ProjectReference Include="..\..\PPC\Tango.PPC.Common\Tango.PPC.Common.csproj"> - <Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project> - <Name>Tango.PPC.Common</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.BL\Tango.BL.csproj"> - <Project>{f441feee-322a-4943-b566-110e12fd3b72}</Project> - <Name>Tango.BL</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Integration\Tango.Integration.csproj"> - <Project>{4206ac58-3b57-4699-8835-90bf6db01a61}</Project> - <Name>Tango.Integration</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Logging\Tango.Logging.csproj"> - <Project>{BC932DBD-7CDB-488C-99E4-F02CF441F55E}</Project> - <Name>Tango.Logging</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.PMR\Tango.PMR.csproj"> - <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project> - <Name>Tango.PMR</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.SharedUI\Tango.SharedUI.csproj"> - <Project>{8491d07b-c1f6-4b62-a412-41b9fd2d6538}</Project> - <Name>Tango.SharedUI</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Touch\Tango.Touch.csproj"> - <Project>{fd86424c-6e84-491b-8df9-3d0f5c236a2a}</Project> - <Name>Tango.Touch</Name> - </ProjectReference> - </ItemGroup> - <ItemGroup> - <PackageReference Include="EntityFramework"> - <Version>6.2.0</Version> - </PackageReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/App.config b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/App.config index eb619b843..b3646d281 100644 --- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/App.config +++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/App.config @@ -13,24 +13,4 @@ <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> </providers> </entityFramework> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <!--<dependentAssembly> - <assemblyIdentity name="Z.EntityFramework.Extensions" publicKeyToken="59b66d028979105b" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.50.0" newVersion="4.0.50.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" /> - </dependentAssembly>--> - </assemblyBinding> - </runtime> </configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Program.cs index 71d5779a6..6c3c62606 100644 --- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Program.cs @@ -1,16 +1,11 @@ using System; using System.Collections.Generic; -using System.Data.Entity; -using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Builders; using Tango.BL.Entities; -using Tango.Core; -using Tango.Integration.Operation; -using Z.EntityFramework.Plus; namespace Tango.JobRunsGenerator { @@ -18,120 +13,75 @@ namespace Tango.JobRunsGenerator { static void Main(string[] args) { - DataSource dataSource = new DataSource(); - dataSource.Catalog = "Tango_DEV"; - dataSource.Address = "twine.database.windows.net"; - dataSource.IntegratedSecurity = false; - dataSource.UserName = "Roy"; - dataSource.Password = "Aa123456"; + Console.WriteLine("Job Runs Generator Started..."); - using (ObservablesContext db = ObservablesContext.CreateDefault(dataSource)) + DateTime now = DateTime.UtcNow; + DateTime yearago = DateTime.UtcNow.AddYears(-1); + Random rnd = new Random(); + List<String> messages = new List<string>() { - var count = db.JobRuns.Where(x => x.JobGuid != null).Count(); + "Timeout failure", + "Thread Break", + "Application Exception", + "Over Temperature", + "Communication Error" + }; - int index = 0; - int saveIndex = 0; + int count = 0; - var runsGroup = db.JobRuns.Where(x => x.JobGuid != null).GroupBy(x => x.JobGuid).ToList(); + using (ObservablesContext db = ObservablesContext.CreateDefault("localhost\\SQLEXPRESS")) + { + var machines = db.Machines.ToList(); - foreach (var runGroup in runsGroup) + foreach (var machine in machines) { - var runs = runGroup; - - var firstRun = runs.First(); - - var job = new JobBuilder(db).Set(x => x.Guid == firstRun.JobGuid).WithSegments().WithBrushStops().WithRML().Build(); - - if (job == null) - { - Console.ForegroundColor = ConsoleColor.Red; - Console.WriteLine($"Job '{firstRun.JobGuid}' was not found on the database!"); - Console.ForegroundColor = ConsoleColor.Gray; - continue; - } - - var machine = new MachineBuilder(db).Set(job.MachineGuid).WithConfiguration().Build(); + new MachineBuilder(db).Set(machine).WithJobs().Build(); - foreach (var segment in job.Segments) + foreach (var job in machine.Jobs) { - foreach (var stop in segment.BrushStops) + using (ObservablesContext db2 = ObservablesContext.CreateDefault("localhost\\SQLEXPRESS")) { - stop.SetLiquidVolumes(machine.Configuration, job.Rml, job.Rml.GetActiveProcessGroup().ProcessParametersTables.First()); - } - } - - foreach (var run in runs) - { - Console.WriteLine($"Fixing job {job.Name}... ({index++}/{count})"); - run.MachineGuid = job.MachineGuid; - - run.JobSource = job.Source; + for (DateTime date = yearago; date < now; date = date.AddDays(1)) + { + Console.WriteLine($"Adding job runs for machine '{machine.SerialNumber}' job '{job.Name}' date {date.ToShortDateString()}..."); - if (run.JobLength == 0) run.JobLength = job.LengthIncludingNumberOfUnits; - if (run.JobName == null) run.JobName = job.Name; - if (run.RmlGuid == null) run.RmlGuid = job.RmlGuid; - if (run.JobString == null) run.JobString = job.ToJobFileWhenLoaded().ToString(); - if (run.LiquidQuantityString == null) run.LiquidQuantities = MachineOperator.CreateJobRunLiquidQuantities(job, machine.Configuration, job.Rml.GetActiveProcessGroup().ProcessParametersTables.First(), run.EndPosition, job.LengthIncludingNumberOfUnits); - if (run.UserGuid == null) run.UserGuid = job.UserGuid; - if (run.UploadingStartDate == null) run.UploadingStartDate = run.StartDate; - if (run.HeatingStartDate == null) run.HeatingStartDate = run.StartDate; - if (run.ActualStartDate == null) run.ActualStartDate = run.StartDate; - run.IsGradient = job.Segments.Any(x => x.BrushStops.Count > 1); + for (int i = 0; i < rnd.Next(0, 9); i++) + { + int status = rnd.Next(0, 3); + String message = messages[rnd.Next(0, messages.Count)]; - //Set new liquid quantities. - if (run.CyanQuantity == 0 && - run.MagentaQuantity == 0 && - run.YellowQuantity == 0 && - run.BlackQuantity == 0 && - run.TransparentQuantity == 0 && - run.LubricantQuantity == 0 && - run.CleanerQuantity == 0) - { - //Cyan - var cyan = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Cyan); - run.CyanQuantity = cyan != null ? cyan.Quantity : 0; + db2.JobRuns.Add(new JobRun() + { + StartDate = date, + EndDate = date.AddMinutes(rnd.Next(10, 61)), + JobGuid = job.Guid, + EndPosition = job.Length / rnd.Next(1, 11), + Status = status, + FailedMessage = status == 2 ? message : null, + }); - //Magenta - var magenta = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Magenta); - run.MagentaQuantity = magenta != null ? magenta.Quantity : 0; + count++; + } + } - //Yellow - var yellow = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Yellow); - run.YellowQuantity = yellow != null ? yellow.Quantity : 0; - - //Black - var black = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Black); - run.BlackQuantity = black != null ? black.Quantity : 0; - - //TI - var ti = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.TransparentInk); - run.TransparentQuantity = ti != null ? ti.Quantity : 0; - - //Lubricant - var lubricant = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Lubricant); - run.LubricantQuantity = lubricant != null ? lubricant.Quantity : 0; - - //Cleaner - var cleaner = run.LiquidQuantities.FirstOrDefault(x => x.LiquidType == BL.Enumerations.LiquidTypes.Cleaner); - run.CleanerQuantity = cleaner != null ? cleaner.Quantity : 0; - } - - saveIndex++; - - if (saveIndex > 100) - { - saveIndex = 0; - Console.WriteLine("Saving changes..."); - db.SaveChanges(); + db2.SaveChanges(); } } } - Console.WriteLine("Saving changes..."); - db.SaveChanges(); + Console.WriteLine($"The generator is about to insert {count} job runs to the database are you sure? [Y/N]:"); + var key = Console.ReadKey().Key; - Console.WriteLine("Done!"); - Console.ReadLine(); + if (key == ConsoleKey.Y) + { + Console.WriteLine("Saving changes to database..."); + Console.WriteLine("Done!"); + Console.ReadLine(); + } + else + { + return; + } } } } diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj index e8f5af6f3..04e647f46 100644 --- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/Tango.JobRunsGenerator.csproj @@ -48,15 +48,6 @@ <Reference Include="System.Data" /> <Reference Include="System.Net.Http" /> <Reference Include="System.Xml" /> - <Reference Include="Z.EntityFramework.Extensions, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Z.EntityFramework.Extensions.5.1.6\lib\net45\Z.EntityFramework.Extensions.dll</HintPath> - </Reference> - <Reference Include="Z.EntityFramework.Plus.EF6, Version=5.1.6.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Z.EntityFramework.Plus.EF6.5.1.6\lib\net45\Z.EntityFramework.Plus.EF6.dll</HintPath> - </Reference> - <Reference Include="Z.Expressions.Eval, Version=4.0.27.0, Culture=neutral, PublicKeyToken=59b66d028979105b, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Z.Expressions.Eval.4.0.27\lib\net45\Z.Expressions.Eval.dll</HintPath> - </Reference> </ItemGroup> <ItemGroup> <Compile Include="..\..\Versioning\GlobalVersionInfo.cs"> @@ -78,18 +69,6 @@ <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> <Name>Tango.Core</Name> </ProjectReference> - <ProjectReference Include="..\..\Tango.Integration\Tango.Integration.csproj"> - <Project>{4206AC58-3B57-4699-8835-90BF6DB01A61}</Project> - <Name>Tango.Integration</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.PMR\Tango.PMR.csproj"> - <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project> - <Name>Tango.PMR</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Transport\Tango.Transport.csproj"> - <Project>{74E700B0-1156-4126-BE40-EE450D3C3026}</Project> - <Name>Tango.Transport</Name> - </ProjectReference> </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config index 6d95e7b5d..b3daf0d6c 100644 --- a/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config +++ b/Software/Visual_Studio/Utilities/Tango.JobRunsGenerator/packages.config @@ -1,7 +1,4 @@ <?xml version="1.0" encoding="utf-8"?> <packages> <package id="EntityFramework" version="6.2.0" targetFramework="net461" /> - <package id="Z.EntityFramework.Extensions" version="5.1.6" targetFramework="net461" /> - <package id="Z.EntityFramework.Plus.EF6" version="5.1.6" targetFramework="net461" /> - <package id="Z.Expressions.Eval" version="4.0.27" targetFramework="net461" /> </packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.config b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.config deleted file mode 100644 index 731f6de6c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml deleted file mode 100644 index 09124c44f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml +++ /dev/null @@ -1,9 +0,0 @@ -<Application x:Class="Tango.LiquidColorGenerator.UI.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="clr-namespace:Tango.LiquidColorGenerator.UI" - StartupUri="MainWindow.xaml"> - <Application.Resources> - - </Application.Resources> -</Application> diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml.cs b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml.cs deleted file mode 100644 index aba8ead65..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/App.xaml.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; - -namespace Tango.LiquidColorGenerator.UI -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml deleted file mode 100644 index cfdd6de22..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml +++ /dev/null @@ -1,21 +0,0 @@ -<Window x:Class="Tango.LiquidColorGenerator.UI.MainWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:brush="clr-namespace:Tango.BrushPicker;assembly=Tango.BrushPicker" - xmlns:local="clr-namespace:Tango.LiquidColorGenerator.UI" - mc:Ignorable="d" - Title="MainWindow" Height="300" Width="800"> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="300"/> - <ColumnDefinition Width="*"/> - </Grid.ColumnDefinitions> - - <brush:BrushPicker x:Name="picker" VerticalAlignment="Stretch" BrushTypeVisibility="Collapsed" /> - - <TextBox Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Width="300" FontSize="30" x:Name="txt"></TextBox> - - </Grid> -</Window> diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml.cs deleted file mode 100644 index 6cba6e577..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/MainWindow.xaml.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace Tango.LiquidColorGenerator.UI -{ - /// <summary> - /// Interaction logic for MainWindow.xaml - /// </summary> - public partial class MainWindow : Window - { - public MainWindow() - { - InitializeComponent(); - - picker.ColorChanged += Picker_ColorChanged; - txt.TextChanged += Txt_TextChanged; - } - - private void Txt_TextChanged(object sender, TextChangedEventArgs e) - { - try - { - picker.Color = Core.Helpers.ColorHelper.IntegerToColor(int.Parse(txt.Text)); - } - catch { } - } - - private void Picker_ColorChanged(object sender, BrushPicker.ColorChangedEventArgs e) - { - txt.Text = Core.Helpers.ColorHelper.ColorToInteger(e.Color).ToString(); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/AssemblyInfo.cs deleted file mode 100644 index 382030056..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tango.LiquidColorGenerator.UI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tango.LiquidColorGenerator.UI")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file -//inside a <PropertyGroup>. For example, if you are using US english -//in your source files, set the <UICulture> to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.Designer.cs deleted file mode 100644 index 9ce60d611..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.LiquidColorGenerator.UI.Properties -{ - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.LiquidColorGenerator.UI.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.resx b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> -</root>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.Designer.cs b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.Designer.cs deleted file mode 100644 index fe9f990ce..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.LiquidColorGenerator.UI.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.settings b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Tango.LiquidColorGenerator.UI.csproj b/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Tango.LiquidColorGenerator.UI.csproj deleted file mode 100644 index d77bd1cdd..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LiquidColorGenerator.UI/Tango.LiquidColorGenerator.UI.csproj +++ /dev/null @@ -1,108 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{949857A0-777D-4A32-8668-7163E404D800}</ProjectGuid> - <OutputType>WinExe</OutputType> - <RootNamespace>Tango.LiquidColorGenerator.UI</RootNamespace> - <AssemblyName>Tango.LiquidColorGenerator.UI</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <WarningLevel>4</WarningLevel> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xaml"> - <RequiredTargetFramework>4.0</RequiredTargetFramework> - </Reference> - <Reference Include="WindowsBase" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="App.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </ApplicationDefinition> - <Page Include="MainWindow.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="App.xaml.cs"> - <DependentUpon>App.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Compile Include="MainWindow.xaml.cs"> - <DependentUpon>MainWindow.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - </ItemGroup> - <ItemGroup> - <Compile Include="Properties\AssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Resources.resx</DependentUpon> - </Compile> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - </EmbeddedResource> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Tango.BrushPicker\Tango.BrushPicker.csproj"> - <Project>{40085232-aced-4cbe-945b-90ba8153c151}</Project> - <Name>Tango.BrushPicker</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.config b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.config deleted file mode 100644 index bafe24888..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.config +++ /dev/null @@ -1,62 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> - <runtime> - <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> - <dependentAssembly> - <assemblyIdentity name="Microsoft.IdentityModel.Clients.ActiveDirectory" publicKeyToken="31bf3856ad364e35" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-5.0.5.0" newVersion="5.0.5.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Reflection.Metadata" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-1.4.2.0" newVersion="1.4.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.IO.FileSystem.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Security.Cryptography.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Xml.XPath.XDocument" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Diagnostics.StackTrace" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0" /> - </dependentAssembly> - <dependentAssembly> - <assemblyIdentity name="System.Reactive.Core" publicKeyToken="94bc3704cddfc263" culture="neutral" /> - <bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" /> - </dependentAssembly> - </assemblyBinding> - </runtime> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml deleted file mode 100644 index 6d399479f..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml +++ /dev/null @@ -1,26 +0,0 @@ -<Application x:Class="Tango.LogViewer.UI.App" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:local="clr-namespace:Tango.LogViewer.UI" - xmlns:vm="clr-namespace:Tango.LogViewer.UI.ViewModels" - StartupUri="MainWindow.xaml" Startup="App_Startup"> - <Application.Resources> - <ResourceDictionary> - <ResourceDictionary.MergedDictionaries> - <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" /> - <!-- Accent and AppTheme setting --> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" /> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/FlatButton.xaml" /> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Colors.xaml" /> - <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/VS/Styles.xaml" /> - - <ResourceDictionary> - <vm:MainViewVM x:Key="MainViewVM" /> - </ResourceDictionary> - </ResourceDictionary.MergedDictionaries> - </ResourceDictionary> - </Application.Resources> -</Application> diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml.cs deleted file mode 100644 index 44d17a48a..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/App.xaml.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; - -namespace Tango.LogViewer.UI -{ - /// <summary> - /// Interaction logic for App.xaml - /// </summary> - public partial class App : Application - { - public static String[] StartArgs { get; set; } - - public void App_Startup(object sender, StartupEventArgs e) - { - StartArgs = e.Args; - } - } - -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ApplicationLogViewerParser.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ApplicationLogViewerParser.cs deleted file mode 100644 index 1a43a7eff..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ApplicationLogViewerParser.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Logging; -using System.Text.RegularExpressions; -using System.IO; -using System.Globalization; - -namespace Tango.LogViewer.UI.LogViewerFileParser -{ - public class ApplicationLogViewerParser : ILogViewerParser - { - public ApplicationLogViewerParser() - { - - } - public void Parse(string file, DateTime datetime, ref List<LogItemBase> logItems) - { - String text = File.ReadAllText(file); - var logs = Regex.Split(text, @"(\[\d{2}:\d{2}:\d{2}.\d{2}\])"); - - String logText = String.Empty; - - for (int i = 1; i < logs.Length; i += 2) - { - try - { - DateTime date = DateTime.ParseExact(logs[i].Replace("[", "").Replace("]", ""), "HH:mm:ss.ff", CultureInfo.InvariantCulture); - - logText = logs[i + 1]; - var matches = Regex.Matches(logText, @"(?<=\[)(.*?)(?=\])"); - - MessageLogItem item = new MessageLogItem(); - item.TimeStamp = new DateTime(datetime.Year, datetime.Month, datetime.Day, date.Hour, date.Minute, date.Second, date.Millisecond); - item.Category = (LogCategory)Enum.Parse(typeof(LogCategory), matches[0].ToString()); - item.CallerFile = matches[1].ToString(); - item.CallerMethodName = matches[2].ToString(); - item.CallerLineNumber = int.Parse(matches[3].ToString()); - - int messageStartIndex = matches[3].Index + matches[3].Length + 2; - - item.Message = logText.Substring(messageStartIndex, logText.Length - messageStartIndex); - - logItems.Add(item); - } - catch (Exception ex) - { - LogManager.Default.Log(ex, "Could not parse log line: " + logText); - } - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/EmbeddedLogViewerParser.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/EmbeddedLogViewerParser.cs deleted file mode 100644 index 1d0028f10..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/EmbeddedLogViewerParser.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading.Tasks; -using Tango.Integration.Logging; -using Tango.Logging; - -namespace Tango.LogViewer.UI.LogViewerFileParser -{ - public class EmbeddedLogViewerParser : ILogViewerParser - { - public EmbeddedLogViewerParser() - { - - - } - public void Parse(string file, DateTime datetime, ref List<LogItemBase> logItems) - { - String text = File.ReadAllText(file); - var logs = Regex.Split(text, @"(\[\d{2}:\d{2}:\d{2}.\d{2}\])"); - - for (int i = 1; i < logs.Length; i += 2) - { - try - { - DateTime date = DateTime.ParseExact(logs[i].Replace("[", "").Replace("]", ""), "HH:mm:ss.ff", CultureInfo.InvariantCulture); - String rest = logs[i + 1]; - - var entries = Regex.Split(rest, @"\[(.*?)\]"); - - LogItemBase item = new EmbeddedLogItem(new PMR.Debugging.StartDebugLogResponse() - { - Category = (PMR.Debugging.DebugLogCategory)Enum.Parse(typeof(PMR.Debugging.DebugLogCategory), entries[1]), - FileName = entries[3], - LineNumber = uint.Parse(entries[5]), - ModuleId = uint.Parse(entries[7]), - Filter = uint.Parse(entries[9]), - Message = new String(entries[10].Skip(2).ToArray()) - }); - item.TimeStamp = new DateTime(datetime.Year, datetime.Month, datetime.Day, date.Hour, date.Minute, date.Second, date.Millisecond); - - logItems.Add(item); - } - catch (Exception ex) - { - //LogManager.Default.Log(ex, "Could not parse log line: " + logs[i]); - } - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ILogViewerParser.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ILogViewerParser.cs deleted file mode 100644 index a0088a770..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerFileParser/ILogViewerParser.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Logging; - -namespace Tango.LogViewer.UI.LogViewerFileParser -{ - public interface ILogViewerParser - { - void Parse(string file, DateTime datetime, ref List<LogItemBase> logItems); - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs deleted file mode 100644 index 3615eb50a..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/LogViewerManager.cs +++ /dev/null @@ -1,126 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Logging; -using Tango.LogViewer.UI.LogViewerFileParser; - -namespace Tango.LogViewer.UI -{ - public class LogViewerManager - { - private ILogViewerParser _parser; - - public LogFile LogFile { get; set; } - - public string FileName { get; set; } - - public bool IsEmbeddedLog { get; set; } - - public int CountOfSet { get; set; } - - public LogViewerManager() - { - LogFile = null; ; - } - - /// <summary> - /// Create LogFile by given path. - /// </summary> - /// <param name="file">The file.</param> - public void InitLogFile(String file) - { - LogFile = GetLogFile(file); - } - - /// <summary> - /// Gets set of log files by path. - /// </summary> - public LogFile GetLogFile(string filePath) - { - if (!File.Exists(filePath)) - { - throw new IOException("File not found."); - } - if (Path.GetExtension(filePath) != ".log") - { - throw new IOException("Invalid log file extension. extension must be *.log"); - } - - var directoryName = Path.GetDirectoryName(filePath); - var logfileName = Path.GetFileNameWithoutExtension(filePath); - String fileName = logfileName; - int index = logfileName.IndexOf("-"); - if (index >= 0) - { - fileName = logfileName.Substring(0, index); - } - int indexPos = logfileName.IndexOf(FileLogger.FILE_SET_EXTENSION); - if (indexPos > 0) - { - logfileName = logfileName.Substring(0, indexPos); - } - - String dateString = System.IO.Path.GetFileNameWithoutExtension(filePath).Replace($"{fileName}-", "").Replace("_session", ""); - indexPos = dateString.IndexOf(FileLogger.FILE_SET_EXTENSION); - int indexOfFile = 0; - CountOfSet = 0; - if (indexPos > 0) - { - string fileNameIndex = dateString.Substring(indexPos + FileLogger.FILE_SET_EXTENSION.Length); - string[] fileEntries = Directory.GetFiles(directoryName, $"{logfileName}*{Path.GetExtension(filePath)}").Where(x => Path.GetFileName(x).StartsWith(logfileName)).OrderBy(x => x).ToArray(); - CountOfSet = fileEntries.Length; - int.TryParse(fileNameIndex, out indexOfFile); - dateString = dateString.Substring(0, indexPos); - } - DateTime date = DateTime.ParseExact(dateString, "dd-MM-yyyy_HH-mm-ss", CultureInfo.InvariantCulture); - return (new LogFile() { DateTime = date, File = filePath, FileName = logfileName, PartOfSet = indexOfFile > 0, SetStartIndex = indexOfFile, SetCount = CountOfSet }); - } - - /// <summary> - /// Parses the this LogFile. - /// </summary> - public List<LogItemBase> Parse() - { - IsEmbeddedLog = false; - FileName = ""; - List<LogItemBase> logItems = new List<LogItemBase>(); - if (LogFile == null) - return logItems; - - FileName = LogFile.FileName; - - IsEmbeddedLog = FileName.StartsWith("Embedded"); - if (IsEmbeddedLog) - { - _parser = new EmbeddedLogViewerParser(); - } - else - { - _parser = new ApplicationLogViewerParser(); - } - - if (LogFile.PartOfSet) - { - string extension = Path.GetExtension(LogFile.File); - var directoryName = Path.GetDirectoryName(LogFile.File); - - string[] fileEntries = Directory.GetFiles(directoryName, $"{FileName}*{extension}").Where(x => Path.GetFileName(x).StartsWith(FileName)).OrderBy(x => x).ToArray(); - - foreach (var file in fileEntries) - { - _parser.Parse(file, LogFile.DateTime, ref logItems); - } - } - else - { - _parser.Parse(LogFile.File, LogFile.DateTime, ref logItems); - } - - return logItems; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml deleted file mode 100644 index a4fc6a628..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml +++ /dev/null @@ -1,326 +0,0 @@ -<mahapps:MetroWindow x:Class="Tango.LogViewer.UI.MainWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:System="clr-namespace:System;assembly=mscorlib" - xmlns:local="clr-namespace:Tango.LogViewer.UI" - xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" - xmlns:fa="http://schemas.fontawesome.io/icons/" - xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" - mc:Ignorable="d" - Title="Tango Log Viewer" WindowState="Maximized" ShowTitleBar="True" ShowCloseButton="True" DataContext="{StaticResource MainViewVM}" AllowDrop="True" Drop="FileWindow_Drop" Foreground="Gainsboro"> - <Window.Resources> - <converters:EnumToDescriptionConverter x:Key="EnumToDescriptionConverter"></converters:EnumToDescriptionConverter> - <converters:BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter"/> - <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter"/> - <converters:BooleanInverseConverter x:Key="BooleanInverseConverter" /> - - <SolidColorBrush x:Key="GrayBrush5" Color="#464646"/> - <SolidColorBrush x:Key="BorderGrayBrush" Color="#464646"/> - <SolidColorBrush x:Key="SelectedItemBrush" Color="#007ACC"/> - - <Style x:Key="LogDataGridCellStyle" TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}"> - <Setter Property="BorderThickness" Value="0"/> - <Setter Property="FocusVisualStyle" Value="{x:Null}"/> - <Setter Property="VerticalContentAlignment" Value="Center"/> - <Setter Property="VerticalAlignment" Value="Center"/> - <Setter Property="TextBlock.VerticalAlignment" Value="Center" /> - <Setter Property="Template"> - <Setter.Value> - <ControlTemplate TargetType="{x:Type DataGridCell}"> - <Grid Background="{TemplateBinding Background}"> - <ContentPresenter VerticalAlignment="Bottom" /> - </Grid> - </ControlTemplate> - </Setter.Value> - </Setter> - <Style.Triggers> - <Trigger Property="IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - </Trigger> - <MultiTrigger> - <MultiTrigger.Conditions> - <Condition Property="IsFocused" Value="False" /> - <Condition Property="DataGridCell.IsSelected" Value="True" /> - </MultiTrigger.Conditions> - <MultiTrigger.Setters> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - </MultiTrigger.Setters> - </MultiTrigger> - </Style.Triggers> - </Style> - - <Style x:Key="LogDataGridRowStyle" TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}"> - <Setter Property="VerticalContentAlignment" Value="Center"/> - <Style.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - <Setter Property="Cursor" Value="Hand"></Setter> - </Trigger> - <Trigger Property="IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - </Trigger> - <DataTrigger Binding="{Binding CallerMethodName}" Value="OnStartup"> - <Setter Property="Background" Value="#3F3F49"></Setter> - <Setter Property="Foreground" Value="Gainsboro" /> - <Setter Property="FontWeight" Value="SemiBold"></Setter> - <Setter Property="Cursor" Value="Arrow"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding LogObject}" Value="External Bridge"> - <Setter Property="Foreground" Value="#28A805" /> - </DataTrigger> - </Style.Triggers> - </Style> - - <Style x:Key="EmLogDataGridRowStyle" TargetType="DataGridRow" BasedOn="{StaticResource {x:Type DataGridRow}}"> - <Setter Property="VerticalContentAlignment" Value="Center"/> - <Style.Triggers> - <Trigger Property="IsMouseOver" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - <Setter Property="Cursor" Value="Hand"></Setter> - </Trigger> - <Trigger Property="DataGridCell.IsSelected" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}" /> - </Trigger> - <Trigger Property="IsFocused" Value="True"> - <Setter Property="Background" Value="Transparent"></Setter> - </Trigger> - - <DataTrigger Binding="{Binding LogObject}" Value="External Bridge"> - <Setter Property="Foreground" Value="#28A805" /> - </DataTrigger> - </Style.Triggers> - </Style> - - <DataTemplate x:Key="LogIconStyle"> - <fa:ImageAwesome Height="16" Width="14" Margin="0 0 0 0" VerticalAlignment="Top"> - <fa:ImageAwesome.Style> - <Style TargetType="fa:ImageAwesome"> - <Setter Property="Icon" Value="ExclamationTriangle"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding Category}" Value="Info"> - <Setter Property="Icon" Value="InfoCircle"></Setter> - <Setter Property="Foreground" Value="Gainsboro"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding Category}" Value="Warning"> - <Setter Property="Icon" Value="ExclamationTriangle"></Setter> - <Setter Property="Foreground" Value="DarkOrange"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding Category}" Value="Error"> - <Setter Property="Icon" Value="ExclamationTriangle"></Setter> - <Setter Property="Foreground" Value="Red"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding Category}" Value="Critical"> - <Setter Property="Icon" Value="Bell"></Setter> - <Setter Property="Foreground" Value="Red"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding Category}" Value="Debug"> - <Setter Property="Icon" Value="Bug"></Setter> - <Setter Property="Foreground" Value="Gray"></Setter> - </DataTrigger> - <DataTrigger Binding="{Binding CallerMethodName}" Value="OnStartup"> - <Setter Property="Icon" Value="ClockOutline"></Setter> - <Setter Property="Foreground" Value="{StaticResource SelectedItemBrush}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </fa:ImageAwesome.Style> - </fa:ImageAwesome> - </DataTemplate> - - <Style x:Key="DataGridTextColumnElementStyle" TargetType="{x:Type TextBlock}"> - <Setter Property="Margin" Value="5" /> - <Setter Property="Padding" Value="5" /> - </Style> - - </Window.Resources> - <Grid IsEnabled="{Binding Loading,Converter={StaticResource BooleanInverseConverter}}"> - <Grid.RowDefinitions> - <RowDefinition Height="28" /> - <RowDefinition Height="Auto"/> - <RowDefinition Height="1*"/> - <RowDefinition Height="28"/> - <RowDefinition Height="5"/> - </Grid.RowDefinitions> - - <Menu Grid.Row="0" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="10,0,0,0" BorderBrush="Transparent" Background="Transparent"> - <MenuItem Header="File" Background="Transparent"> - <MenuItem Header="Open" Command="{Binding OpeFileLogCommand}"/> - <MenuItem Header="Exit" Click="Exit_MenuItem_Click" /> - </MenuItem> - - </Menu> - - <Grid Grid.Row="1" Margin="0 20 0 20"> - <DockPanel> - <StackPanel Orientation="Vertical" HorizontalAlignment="Left" Margin="10 0 0 0"> - <TextBlock FontSize="10">Start Time:</TextBlock> - <Border BorderThickness="1" BorderBrush="{StaticResource BorderGrayBrush}" VerticalAlignment="Center" CornerRadius="5" > - <mahapps:TimePicker x:Name="startTimePicker" SelectedTime="{Binding StartSelectedTime}" Width="160" VerticalAlignment="Center" FontSize="16" IsClockVisible="False" Culture="{Binding Culture}" BorderBrush="{StaticResource BorderGrayBrush}" BorderThickness="0" Margin="1" Foreground="Gainsboro" /> - </Border> - </StackPanel> - <StackPanel Orientation="Vertical" HorizontalAlignment="Left" Margin="20 0 0 0"> - <TextBlock FontSize="10">End Time:</TextBlock> - <Border BorderThickness="1" BorderBrush="{StaticResource BorderGrayBrush}" VerticalAlignment="Center" CornerRadius="5" > - <mahapps:TimePicker x:Name="enddatePicker" SelectedTime="{Binding EndSelectedTime}" Width="160" VerticalAlignment="Center" FontSize="16" IsClockVisible="False" Culture="{Binding Culture}" PickerVisibility="HourMinute" BorderBrush="{StaticResource BorderGrayBrush}" BorderThickness="0" Margin="1" Foreground="Gainsboro"/> - </Border> - </StackPanel> - <Border BorderThickness="1" BorderBrush="{StaticResource BorderGrayBrush}" VerticalAlignment="Center" Padding="10 7" CornerRadius="5" Margin="30 10 0 0"> - <StackPanel> - <ItemsControl VerticalAlignment="Center" ItemsSource="{Binding SelectedLogCategories}"> - <ItemsControl.ItemsPanel> - <ItemsPanelTemplate> - <StackPanel Orientation="Horizontal" /> - </ItemsPanelTemplate> - </ItemsControl.ItemsPanel> - <ItemsControl.ItemTemplate> - <DataTemplate> - <StackPanel Orientation="Horizontal" Margin="10 0 0 0"> - <CheckBox IsChecked="{Binding IsSelected}" VerticalAlignment="Center" BorderBrush="{StaticResource BorderGrayBrush}"></CheckBox> - <TextBlock Text="{Binding Data}" Margin="5 0 0 0" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </StackPanel> - </Border> - <StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="20 10 30 0"> - <fa:ImageAwesome Icon="Search" Width="24" Height="24" Foreground="#7A7A7A"/> - <TextBox VerticalAlignment="Center" Margin="10 0 0 0" Width="300" Text="{Binding Filter,UpdateSourceTrigger=PropertyChanged, Delay=1000}" /> - </StackPanel> - - </DockPanel> - </Grid> - <Grid Grid.Row="2" > - <Grid Margin="10"> - <Grid.RowDefinitions> - <RowDefinition Height="28"/> - <RowDefinition Height="1*"/> - </Grid.RowDefinitions> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="2.5*"/> - <ColumnDefinition Width="Auto"/> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> - <TextBlock FontSize="14" Grid.Row="0" FontFamily="Segoe UI">Log</TextBlock> - <StackPanel Orientation="Horizontal" Margin="0" Grid.Row="0" Grid.Column="2"> - <TextBlock FontSize="14" Margin="10 0 0 0" FontFamily="Segoe UI">Message</TextBlock> - <CheckBox x:Name="WrapMessgeTextCheckBox" VerticalAlignment="Center" BorderBrush="{StaticResource BorderGrayBrush}" Margin="30 -5 0 0"></CheckBox> - <TextBlock Text="Wrap message text" Margin="5 -5 0 0" VerticalAlignment="Center"></TextBlock> - </StackPanel> - - <Border Visibility="{Binding IsEmbeddedLog, Converter={StaticResource BooleanToVisibilityInverseConverter}}" Grid.Column="0" Grid.Row="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource BorderGrayBrush}" Margin="0 0 10 0"> - <DataGrid x:Name="ActionGrid" HorizontalScrollBarVisibility="Disabled" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True" - CellStyle="{StaticResource LogDataGridCellStyle}" RowStyle="{StaticResource LogDataGridRowStyle}" Foreground="Gainsboro"> - <DataGrid.Resources> - <Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}"> - <Setter Property="Foreground" Value="Gainsboro" /> - </Style> - </DataGrid.Resources> - <DataGrid.Columns> - <DataGridTemplateColumn Header="" CellTemplate="{StaticResource LogIconStyle}"/> - <DataGridTextColumn Header="DATE TIME" Binding="{Binding TimeStamp,StringFormat=' HH:mm:ss.ff '}" Foreground="Gainsboro"/> - <DataGridTextColumn Header="FILE" Binding="{Binding RelativeCallerFile}" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/> - <DataGridTextColumn Header="METHOD" Binding="{Binding CallerMethodName}" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/> - <DataGridTextColumn Header="LINE" Binding="{Binding CallerLineNumber}" /> - <DataGridTemplateColumn Header="MESSAGE" Width="1*" > - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <Grid VerticalAlignment="Center" Margin="0 5 0 5"> - <Border Height="Auto" BorderThickness="0" > - <TextBlock Text="{Binding Message}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" ></TextBlock> - </Border> - </Grid> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - </DataGrid.Columns> - </DataGrid> - </Border> - <StackPanel Orientation="Vertical" Grid.Column="0" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding Loading,Converter={StaticResource BoolToVisibilityConverter}}"> - <mahapps:ProgressRing Foreground="LightGray" Width="80" Height="80"></mahapps:ProgressRing> - <TextBlock Text="Loading..." FontStyle="Italic" Margin="0 40 0 0" FontSize="18" VerticalAlignment="Center"></TextBlock> - </StackPanel> - <Border Visibility="{Binding IsEmbeddedLog, Converter={StaticResource BoolToVisibilityConverter}}" Grid.Column="0" Grid.Row="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource BorderGrayBrush}" Margin="0 0 10 0"> - <DataGrid x:Name="embededGrid" HorizontalScrollBarVisibility="Disabled" Background="Transparent" RenderOptions.EdgeMode="Aliased" RenderOptions.BitmapScalingMode="LowQuality" MaxWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" AutoGenerateColumns="False" SelectionMode="Single" ItemsSource="{Binding LogsViewSource}" SelectedItem="{Binding SelectedLog}" RowHeight="40" CanUserAddRows="False" CanUserDeleteRows="False" CanUserReorderColumns="True" IsReadOnly="True" - CellStyle="{StaticResource LogDataGridCellStyle}" RowStyle="{StaticResource EmLogDataGridRowStyle}" Foreground="Gainsboro"> - <DataGrid.Resources> - <Style BasedOn="{StaticResource MetroDataGridColumnHeader}" TargetType="{x:Type DataGridColumnHeader}"> - <Setter Property="Foreground" Value="Gainsboro" /> - </Style> - </DataGrid.Resources> - <DataGrid.Columns> - <DataGridTemplateColumn Header="ICON" CellTemplate="{StaticResource LogIconStyle}"/> - <DataGridTextColumn Header="DATE TIME" Binding="{Binding TimeStamp,StringFormat=' HH:mm:ss.ff '}" Foreground="Gainsboro"/> - <DataGridTextColumn Header="FILE" Binding="{Binding DebugLogResponse.FileName}" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/> - <DataGridTextColumn Header="LINE" Binding="{Binding DebugLogResponse.LineNumber}" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/> - <DataGridTextColumn Header="MODULE" Binding="{Binding DebugLogResponse.ModuleId}" ElementStyle="{StaticResource DataGridTextColumnElementStyle}"/> - <DataGridTextColumn Header="FILTER" Binding="{Binding DebugLogResponse.Filter}" /> - <DataGridTemplateColumn Header="MESSAGE" Width="1*" > - <DataGridTemplateColumn.CellTemplate> - <DataTemplate> - <Grid VerticalAlignment="Center" Margin="0 5 0 5"> - <Border Height="Auto" BorderThickness="0" > - <TextBlock Text="{Binding MessagePlusRepeated}" TextTrimming="CharacterEllipsis" VerticalAlignment="Center" ></TextBlock> - </Border> - </Grid> - </DataTemplate> - </DataGridTemplateColumn.CellTemplate> - </DataGridTemplateColumn> - </DataGrid.Columns> - </DataGrid> - </Border> - <Border Margin="10 0 0 0" Grid.Column="2" Grid.Row="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource BorderGrayBrush}"> - <TextBox BorderThickness="0" Text="{Binding Message}" IsReadOnly="True" AcceptsReturn="False" VerticalScrollBarVisibility="Auto" Foreground="Gainsboro"> - <TextBox.Style> - <Style TargetType="TextBox" BasedOn="{StaticResource MetroTextBox}"> - <Setter Property="TextWrapping" Value="NoWrap"></Setter> - <Setter Property="HorizontalScrollBarVisibility" Value="Auto"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding ElementName=WrapMessgeTextCheckBox, Path=IsChecked}" Value="True"> - <Setter Property="TextWrapping" Value="Wrap"></Setter> - <Setter Property="HorizontalScrollBarVisibility" Value="Hidden"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBox.Style> - </TextBox> - </Border> - <GridSplitter Grid.Column="1" Grid.Row="1" ResizeDirection="Columns" ResizeBehavior="PreviousAndNext" HorizontalAlignment="Center" VerticalAlignment="Stretch" Width="4" Background="{StaticResource BorderGrayBrush}"/> - </Grid> - </Grid> - <StatusBar Grid.Row="3" Grid.ColumnSpan="2" Background="Transparent"> - <StatusBar.ItemsPanel> - <ItemsPanelTemplate> - <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="10" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="Auto" /> - <ColumnDefinition Width="Auto" /> - </Grid.ColumnDefinitions> - </Grid> - </ItemsPanelTemplate> - </StatusBar.ItemsPanel> - <StatusBarItem Grid.Column="1"> - <TextBlock Text="{Binding FileName}"></TextBlock> - </StatusBarItem> - <Separator Grid.Column="2" Visibility="{Binding IsSet, Converter={StaticResource BoolToVisibilityConverter}}"/> - <StatusBarItem Grid.Column="3" Visibility="{Binding IsSet, Converter={StaticResource BoolToVisibilityConverter}}"> - <TextBlock> - <Run Text="Set: "></Run> - <Run Text="{Binding CountOfSet}"></Run> - </TextBlock> - </StatusBarItem> - </StatusBar> - </Grid> -</mahapps:MetroWindow> diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml.cs deleted file mode 100644 index 541315106..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/MainWindow.xaml.cs +++ /dev/null @@ -1,67 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Globalization; -using System.IO; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; -using MahApps.Metro.Controls; -using Tango.Logging; -using Tango.LogViewer.UI.ViewModels; -using Path = System.IO.Path; - -namespace Tango.LogViewer.UI -{ - /// <summary> - /// Interaction logic for MainWindow.xaml - /// </summary> - public partial class MainWindow : MetroWindow - { - public MainWindow() - { - InitializeComponent(); - ContentRendered += MainWindow_ContentRendered; - } - - private void MainWindow_ContentRendered(object sender, EventArgs e) - { - if (App.StartArgs.Length > 0) - { - var vm = DataContext as MainViewVM; - vm.LoadLogFile(App.StartArgs[0]); - } - } - - private void Exit_MenuItem_Click(object sender, RoutedEventArgs e) - { - Application.Current.Shutdown(); - } - - private void FileWindow_Drop(object sender, DragEventArgs e) - { - if (e.Data.GetDataPresent(DataFormats.FileDrop)) - { - // Note that you can have more than one file. - string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); - var file = files[0]; - HandleFile(file); - } - - } - - private void HandleFile(string file) - { - var vm = DataContext as MainViewVM; - vm.LoadLogFile(file); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/AssemblyInfo.cs deleted file mode 100644 index b9768b82d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,55 +0,0 @@ -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; -using System.Windows; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tango.LogViewer.UI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tango.LogViewer.UI")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -//In order to begin building localizable applications, set -//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file -//inside a <PropertyGroup>. For example, if you are using US english -//in your source files, set the <UICulture> to en-US. Then uncomment -//the NeutralResourceLanguage attribute below. Update the "en-US" in -//the line below to match the UICulture setting in the project file. - -//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] - - -[assembly: ThemeInfo( - ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located - //(used if a resource is not found in the page, - // or application resource dictionaries) - ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located - //(used if a resource is not found in the page, - // app, or any theme specific resource dictionaries) -)] - - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.Designer.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.Designer.cs deleted file mode 100644 index bd996bff3..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.Designer.cs +++ /dev/null @@ -1,71 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.LogViewer.UI.Properties -{ - - - /// <summary> - /// A strongly-typed resource class, for looking up localized strings, etc. - /// </summary> - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - internal class Resources - { - - private static global::System.Resources.ResourceManager resourceMan; - - private static global::System.Globalization.CultureInfo resourceCulture; - - [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] - internal Resources() - { - } - - /// <summary> - /// Returns the cached ResourceManager instance used by this class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Resources.ResourceManager ResourceManager - { - get - { - if ((resourceMan == null)) - { - global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Tango.LogViewer.UI.Properties.Resources", typeof(Resources).Assembly); - resourceMan = temp; - } - return resourceMan; - } - } - - /// <summary> - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. - /// </summary> - [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] - internal static global::System.Globalization.CultureInfo Culture - { - get - { - return resourceCulture; - } - set - { - resourceCulture = value; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.resx b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.resx deleted file mode 100644 index af7dbebba..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Resources.resx +++ /dev/null @@ -1,117 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<root> - <!-- - Microsoft ResX Schema - - Version 2.0 - - The primary goals of this format is to allow a simple XML format - that is mostly human readable. The generation and parsing of the - various data types are done through the TypeConverter classes - associated with the data types. - - Example: - - ... ado.net/XML headers & schema ... - <resheader name="resmimetype">text/microsoft-resx</resheader> - <resheader name="version">2.0</resheader> - <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> - <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> - <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> - <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> - <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> - <value>[base64 mime encoded serialized .NET Framework object]</value> - </data> - <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> - <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> - <comment>This is a comment</comment> - </data> - - There are any number of "resheader" rows that contain simple - name/value pairs. - - Each data row contains a name, and value. The row also contains a - type or mimetype. Type corresponds to a .NET class that support - text/value conversion through the TypeConverter architecture. - Classes that don't support this are serialized and stored with the - mimetype set. - - The mimetype is used for serialized objects, and tells the - ResXResourceReader how to depersist the object. This is currently not - extensible. For a given mimetype the value must be set accordingly: - - Note - application/x-microsoft.net.object.binary.base64 is the format - that the ResXResourceWriter will generate, however the reader can - read any of the formats listed below. - - mimetype: application/x-microsoft.net.object.binary.base64 - value : The object must be serialized with - : System.Serialization.Formatters.Binary.BinaryFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.soap.base64 - value : The object must be serialized with - : System.Runtime.Serialization.Formatters.Soap.SoapFormatter - : and then encoded with base64 encoding. - - mimetype: application/x-microsoft.net.object.bytearray.base64 - value : The object must be serialized into a byte array - : using a System.ComponentModel.TypeConverter - : and then encoded with base64 encoding. - --> - <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> - <xsd:element name="root" msdata:IsDataSet="true"> - <xsd:complexType> - <xsd:choice maxOccurs="unbounded"> - <xsd:element name="metadata"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" /> - <xsd:attribute name="type" type="xsd:string" /> - <xsd:attribute name="mimetype" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="assembly"> - <xsd:complexType> - <xsd:attribute name="alias" type="xsd:string" /> - <xsd:attribute name="name" type="xsd:string" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="data"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> - <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> - <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> - </xsd:complexType> - </xsd:element> - <xsd:element name="resheader"> - <xsd:complexType> - <xsd:sequence> - <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> - </xsd:sequence> - <xsd:attribute name="name" type="xsd:string" use="required" /> - </xsd:complexType> - </xsd:element> - </xsd:choice> - </xsd:complexType> - </xsd:element> - </xsd:schema> - <resheader name="resmimetype"> - <value>text/microsoft-resx</value> - </resheader> - <resheader name="version"> - <value>2.0</value> - </resheader> - <resheader name="reader"> - <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> - <resheader name="writer"> - <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> - </resheader> -</root>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.Designer.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.Designer.cs deleted file mode 100644 index b9f2d694d..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.Designer.cs +++ /dev/null @@ -1,30 +0,0 @@ -//------------------------------------------------------------------------------ -// <auto-generated> -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// </auto-generated> -//------------------------------------------------------------------------------ - -namespace Tango.LogViewer.UI.Properties -{ - - - [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - - private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { - return defaultInstance; - } - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.settings b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.settings deleted file mode 100644 index 033d7a5e9..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Properties/Settings.settings +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version='1.0' encoding='utf-8'?> -<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)"> - <Profiles> - <Profile Name="(Default)" /> - </Profiles> - <Settings /> -</SettingsFile>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Tango.LogViewer.UI.csproj b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Tango.LogViewer.UI.csproj deleted file mode 100644 index 66f8549a5..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/Tango.LogViewer.UI.csproj +++ /dev/null @@ -1,147 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{511A8AD7-6BA2-4BB5-A20A-1454196C5503}</ProjectGuid> - <OutputType>WinExe</OutputType> - <RootNamespace>Tango.LogViewer.UI</RootNamespace> - <AssemblyName>Tango.LogViewer.UI</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> - <WarningLevel>4</WarningLevel> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>..\..\Build\LogViewer\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>..\..\Build\LogViewer\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="ControlzEx, Version=3.0.2.4, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll</HintPath> - </Reference> - <Reference Include="FontAwesome.WPF, Version=4.7.0.37774, Culture=neutral, PublicKeyToken=0758b07a11a4f466, processorArchitecture=MSIL"> - <HintPath>..\..\packages\FontAwesome.WPF.4.7.0.9\lib\net40\FontAwesome.WPF.dll</HintPath> - </Reference> - <Reference Include="MahApps.Metro, Version=1.6.5.1, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\MahApps.Metro.1.6.5\lib\net46\MahApps.Metro.dll</HintPath> - </Reference> - <Reference Include="Microsoft.WindowsAPICodePack, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Microsoft.WindowsAPICodePack-Core.1.1.0.0\lib\Microsoft.WindowsAPICodePack.dll</HintPath> - </Reference> - <Reference Include="Microsoft.WindowsAPICodePack.Shell, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.Shell.dll</HintPath> - </Reference> - <Reference Include="Microsoft.WindowsAPICodePack.ShellExtensions, Version=1.1.0.0, Culture=neutral, processorArchitecture=MSIL"> - <HintPath>..\..\packages\Microsoft.WindowsAPICodePack-Shell.1.1.0.0\lib\Microsoft.WindowsAPICodePack.ShellExtensions.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> - <HintPath>..\..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath> - </Reference> - <Reference Include="System.Xml" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Core" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xaml"> - <RequiredTargetFramework>4.0</RequiredTargetFramework> - </Reference> - <Reference Include="WindowsBase" /> - <Reference Include="PresentationCore" /> - <Reference Include="PresentationFramework" /> - </ItemGroup> - <ItemGroup> - <ApplicationDefinition Include="App.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </ApplicationDefinition> - <Compile Include="LogViewerFileParser\ApplicationLogViewerParser.cs" /> - <Compile Include="LogViewerFileParser\EmbeddedLogViewerParser.cs" /> - <Compile Include="LogViewerFileParser\ILogViewerParser.cs" /> - <Compile Include="LogViewerManager.cs" /> - <Compile Include="ViewModels\MainViewVM.cs" /> - <Page Include="MainWindow.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Compile Include="App.xaml.cs"> - <DependentUpon>App.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - <Compile Include="MainWindow.xaml.cs"> - <DependentUpon>MainWindow.xaml</DependentUpon> - <SubType>Code</SubType> - </Compile> - </ItemGroup> - <ItemGroup> - <Compile Include="Properties\AssemblyInfo.cs"> - <SubType>Code</SubType> - </Compile> - <Compile Include="Properties\Resources.Designer.cs"> - <AutoGen>True</AutoGen> - <DesignTime>True</DesignTime> - <DependentUpon>Resources.resx</DependentUpon> - </Compile> - <Compile Include="Properties\Settings.Designer.cs"> - <AutoGen>True</AutoGen> - <DependentUpon>Settings.settings</DependentUpon> - <DesignTimeSharedInput>True</DesignTimeSharedInput> - </Compile> - <EmbeddedResource Include="Properties\Resources.resx"> - <Generator>ResXFileCodeGenerator</Generator> - <LastGenOutput>Resources.Designer.cs</LastGenOutput> - </EmbeddedResource> - <None Include="packages.config" /> - <None Include="Properties\Settings.settings"> - <Generator>SettingsSingleFileGenerator</Generator> - <LastGenOutput>Settings.Designer.cs</LastGenOutput> - </None> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Integration\Tango.Integration.csproj"> - <Project>{4206AC58-3B57-4699-8835-90BF6DB01A61}</Project> - <Name>Tango.Integration</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.Logging\Tango.Logging.csproj"> - <Project>{bc932dbd-7cdb-488c-99e4-f02cf441f55e}</Project> - <Name>Tango.Logging</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.PMR\Tango.PMR.csproj"> - <Project>{e4927038-348d-4295-aaf4-861c58cb3943}</Project> - <Name>Tango.PMR</Name> - </ProjectReference> - <ProjectReference Include="..\..\Tango.SharedUI\Tango.SharedUI.csproj"> - <Project>{8491d07b-c1f6-4b62-a412-41b9fd2d6538}</Project> - <Name>Tango.SharedUI</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs deleted file mode 100644 index edcdfd241..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/ViewModels/MainViewVM.cs +++ /dev/null @@ -1,307 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Collections.ObjectModel; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using Tango.Core.Commands; -using Tango.Logging; -using Tango.SharedUI; -using Tango.SharedUI.Components; -using Microsoft.WindowsAPICodePack.Dialogs; -using System.ComponentModel; -using System.Windows.Data; -using System.Diagnostics; -using System.IO; -using Tango.LogViewer.UI.LogViewerFileParser; -using System.Globalization; -using System.Windows.Input; -using System.Windows; - -namespace Tango.LogViewer.UI.ViewModels -{ - public class MainViewVM : ViewModel - { - - private LogViewerManager _logViewerManager; - #region Properties - public SelectedObjectCollection<LogCategory> SelectedLogCategories { get; set; } - - private TimeSpan? _endSelectedTime; - /// <summary> - /// Gets or sets the end selected time of time picker. - /// </summary> - public TimeSpan? EndSelectedTime - { - get { return _endSelectedTime; } - set - { - _endSelectedTime = value; - RaisePropertyChangedAuto(); - ApplyLogsFilter(); - } - } - - private TimeSpan? _startSelectedTime; - /// <summary> - /// Gets or sets the start selected time of time picker. - /// </summary> - public TimeSpan? StartSelectedTime - { - get { return _startSelectedTime; } - set - { - _startSelectedTime = value; - RaisePropertyChangedAuto(); - ApplyLogsFilter(); - } - } - - private String _filter; - /// <summary> - /// Gets or sets the filter for log message. - /// </summary> - public String Filter - { - get { return _filter; } - set - { - _filter = value; - RaisePropertyChangedAuto(); - ApplyLogsFilter(); - } - } - - private ObservableCollection<LogItemBase> _logs; - /// <summary> - /// Gets or sets the collection of LogItemBase after parsing log files. - /// </summary> - public ObservableCollection<LogItemBase> Logs - { - get { return _logs; } - set { _logs = value; RaisePropertyChangedAuto(); } - } - - private ICollectionView _logsViewSource; - - /// <summary> - /// Wrapper around the Logs collection that provides filtering - /// </summary> - public ICollectionView LogsViewSource - { - get { return _logsViewSource; } - set { _logsViewSource = value; RaisePropertyChangedAuto(); } - } - - private LogItemBase _selectedLog; - /// <summary> - /// Gets or sets the selected log. - /// </summary> - public LogItemBase SelectedLog - { - get { return _selectedLog; } - set { _selectedLog = value; RaisePropertyChangedAuto(); Message = _selectedLog != null ? _selectedLog.Message : ""; } - } - - - private string _fileName; - /// <summary> - /// Gets or sets the full path of the open file to display in Status bar. - /// </summary> - public string FileName - { - get { return _fileName; } - set { _fileName = value; RaisePropertyChangedAuto(); } - } - - private int _countOfSet; - /// <summary> - /// Gets or sets the count of file set to display in Status bar. - /// </summary> - public int CountOfSet - { - get { return _countOfSet; } - set { _countOfSet = value; RaisePropertyChangedAuto(); } - } - - private string _message; - /// <summary> - /// Gets the message of selected log item to display in right panel. - /// </summary> - public string Message - { - get { return _message; } - set { _message = value; RaisePropertyChangedAuto(); } - - } - private bool _isEmbeddedLog; - - public bool IsEmbeddedLog - { - get { return _isEmbeddedLog; } - set { _isEmbeddedLog = value; RaisePropertyChangedAuto(); } - } - - private bool _isSet; - /// <summary> - /// Gets or sets a value indicating whether set of files. - /// </summary> - public bool IsSet - { - get { return _isSet; } - set { _isSet = value; RaisePropertyChangedAuto(); } - } - - private bool _loading; - - public bool Loading - { - get { return _loading; } - set { _loading = value; RaisePropertyChangedAuto(); } - } - - public CultureInfo Culture { get; set; } - - #endregion - - public RelayCommand OpeFileLogCommand { get; set; } - - #region Constructors - public MainViewVM() - { - Culture = new CultureInfo("he-IL"); - - SelectedLogCategories = new SelectedObjectCollection<LogCategory>(new ObservableCollection<LogCategory>() - { - LogCategory.Info, - LogCategory.Warning, - LogCategory.Error, - LogCategory.Critical, - LogCategory.Debug, - }, new ObservableCollection<LogCategory>() - { - LogCategory.Info, - LogCategory.Warning, - LogCategory.Error, - LogCategory.Critical, - LogCategory.Debug, - }); - _logViewerManager = new LogViewerManager(); - IsSet = false; - IsEmbeddedLog = false; - Loading = false; - Clear(); - OpeFileLogCommand = new RelayCommand(OpenLogFile); - SelectedLogCategories.SynchedSource.CollectionChanged += (_, __) => - { - ApplyLogsFilter(); - }; - } - #endregion - - #region Loading - /// <summary> - /// Clears the all filters. Set filter properties to init state. - /// </summary> - private void Clear() - { - FileName = ""; - StartSelectedTime = null; - EndSelectedTime = null; - Filter = ""; - SelectedLog = null; - SelectedLogCategories.SynchedSource = SelectedLogCategories.Source; - CountOfSet = 0; - IsSet = false; - if (Logs != null) - { - Logs.Clear(); - RaisePropertyChanged("Logs"); - } - - } - - /// <summary> - /// Opens the log file from menu. - /// </summary> - private void OpenLogFile() - { - var dialog = new CommonOpenFileDialog() - { - Multiselect = false, - EnsureFileExists = true, - - }; - dialog.Filters.Add(new CommonFileDialogFilter("Log files", "*.log")); - CommonFileDialogResult result = dialog.ShowDialog(); - if (result == CommonFileDialogResult.Ok) - { - LoadLogFile(dialog.FileName); - } - } - - /// <summary> - /// Loads the log file from menu or command line. - /// </summary> - public async void LoadLogFile(String fileName) - { - try - { - Clear(); - Loading = true; - - Mouse.OverrideCursor = Cursors.Wait; - _logViewerManager.InitLogFile(fileName); - List<LogItemBase> logs = new List<LogItemBase>(); - await Task.Factory.StartNew(() => - { - logs.AddRange(_logViewerManager.Parse()); - }); - - CountOfSet = _logViewerManager.CountOfSet; - IsSet = CountOfSet > 0 ? true : false; - IsEmbeddedLog = _logViewerManager.IsEmbeddedLog; - FileName = _logViewerManager.FileName; - Logs = new ObservableCollection<LogItemBase>(logs); - LogsViewSource = CollectionViewSource.GetDefaultView(Logs); - StartSelectedTime = Logs.Min(x => x.TimeStamp).TimeOfDay; - EndSelectedTime = Logs.Max(x => x.TimeStamp).TimeOfDay; - ApplyLogsFilter(); - } - catch (Exception ex) - { - Mouse.OverrideCursor = null; - Loading = false; - MessageBox.Show(ex.FlattenMessage()); - } - finally - { - Mouse.OverrideCursor = null; - Loading = false; - } - } - - - #endregion - - #region Filtering - /// <summary> - /// Applies the all filters( time, categories,filter massage) to view. - /// </summary> - private void ApplyLogsFilter() - { - if (LogsViewSource != null) - { - LogsViewSource.Filter = (x) => - { - LogItemBase log = x as LogItemBase; - return (SelectedLogCategories.SynchedSource.Contains(log.Category) && (String.IsNullOrWhiteSpace(Filter) || log.Message.ToLower().Contains(Filter.ToLower())) - && (StartSelectedTime == null || StartSelectedTime == TimeSpan.Zero || log.TimeStamp.TimeOfDay >= StartSelectedTime) && (EndSelectedTime == null || EndSelectedTime == TimeSpan.Zero || log.TimeStamp.TimeOfDay <= EndSelectedTime)); - }; - } - - } - #endregion - - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/packages.config b/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/packages.config deleted file mode 100644 index 0ac4ca4b4..000000000 --- a/Software/Visual_Studio/Utilities/Tango.LogViewer.UI/packages.config +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<packages> - <package id="ControlzEx" version="3.0.2.4" targetFramework="net461" /> - <package id="FontAwesome.WPF" version="4.7.0.9" targetFramework="net461" /> - <package id="MahApps.Metro" version="1.6.5" targetFramework="net461" /> - <package id="Microsoft.WindowsAPICodePack-Core" version="1.1.0.0" targetFramework="net461" /> - <package id="Microsoft.WindowsAPICodePack-Shell" version="1.1.0.0" targetFramework="net461" /> -</packages>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml deleted file mode 100644 index 22468a052..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml +++ /dev/null @@ -1,51 +0,0 @@ -<UserControl x:Class="Tango.MachineEM.UI.Controls.InkFillingStatusView" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" - xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" - xmlns:fa="http://schemas.fontawesome.io/icons/" - xmlns:ifs="clr-namespace:Tango.PMR.IFS;assembly=Tango.PMR" - xmlns:diagnostics="clr-namespace:Tango.PMR.Diagnostics;assembly=Tango.PMR" - xmlns:vm="clr-namespace:Tango.MachineEM.UI.ViewModels" - xmlns:local="clr-namespace:Tango.MachineEM.UI.Views" - mc:Ignorable="d" - d:DesignHeight="400" Width="500" Foreground="Gainsboro" d:DataContext="{d:DesignInstance Type=ifs:InkFillingStatus, IsDesignTimeCreatable=False}" > - - <UserControl.Resources> - <converters:BooleanInverseConverter x:Key="BooleanInverseConverter"></converters:BooleanInverseConverter> - <converters:EnumToItemsSourceConverter x:Key="EnumToItemsSourceConverter" /> - </UserControl.Resources> - <Grid> - <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Padding="5"> - <ItemsControl ItemsSource="{Binding CartridgesStatuses}"> - <ItemsControl.ItemTemplate> - <DataTemplate> - <Border BorderBrush="DimGray" BorderThickness="1" Margin="0 5" Padding="5" CornerRadius="5"> - <StackPanel> - <DockPanel> - <TextBlock> - <TextBlock.Style> - <Style TargetType="TextBlock"> - <Setter Property="Text" Value="Waste"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding Cartridge.Slot}" Value="Ink"> - <Setter Property="Text" Value="Ink"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </TextBlock.Style> - </TextBlock> - <TextBlock Margin="5 0 0 0" Text="{Binding Cartridge.Index}"></TextBlock> - </DockPanel> - <ComboBox Margin="0 5 0 0" ItemsSource="{Binding Source={x:Type ifs:CartridgeState},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding State,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="DisplayName"></ComboBox> - <Slider Margin="0 5 0 0" Minimum="0" MaxHeight="100" Value="{Binding ProgressPercentage}"></Slider> - </StackPanel> - </Border> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </ScrollViewer> - </Grid> -</UserControl> diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml.cs b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml.cs deleted file mode 100644 index 575e12210..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Controls/InkFillingStatusView.xaml.cs +++ /dev/null @@ -1,29 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; - -namespace Tango.MachineEM.UI.Controls -{ - /// <summary> - /// Interaction logic for MainView.xaml - /// </summary> - public partial class InkFillingStatusView : UserControl - { - public InkFillingStatusView() - { - InitializeComponent(); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Converters/EventTypeToStringConverter.cs b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Converters/EventTypeToStringConverter.cs deleted file mode 100644 index de771f2a8..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Converters/EventTypeToStringConverter.cs +++ /dev/null @@ -1,29 +0,0 @@ -using Google.Protobuf.Reflection; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Reflection; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Data; -using Tango.PMR.Diagnostics; - -namespace Tango.MachineEM.UI.Converters -{ - public class EventTypeToStringConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - EventType eventType = (EventType)value; - FieldInfo fi = value.GetType().GetField(eventType.ToString()); - String name = fi.GetCustomAttribute<OriginalNameAttribute>().Name; - return $"{(int)eventType} {name}"; - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - throw new NotImplementedException(); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml deleted file mode 100644 index 05a4b33cd..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml +++ /dev/null @@ -1,25 +0,0 @@ -<Window x:Class="Tango.MachineEM.UI.InputWindow" - xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" - xmlns:local="clr-namespace:Tango.MachineEM.UI" - mc:Ignorable="d" - Title="Input" Height="250" Width="600"> - <Grid> - <DockPanel> - <UniformGrid Columns="2" DockPanel.Dock="Bottom" HorizontalAlignment="Right" Height="45"> - <Button x:Name="btnCancel" Width="150" Margin="5" Style="{StaticResource AccentedSquareButtonStyle}" BorderThickness="0" mahapps:ButtonHelper.PreserveTextCase="True">CANCEL</Button> - <Button IsDefault="True" x:Name="btnOK" Width="150" Margin="5" Style="{StaticResource AccentedSquareButtonStyle}" BorderThickness="0" mahapps:ButtonHelper.PreserveTextCase="True">OK</Button> - </UniformGrid> - - <Rectangle DockPanel.Dock="Bottom" Stroke="#494949" StrokeThickness="1" /> - - <StackPanel Margin="40"> - <TextBlock x:Name="txtMessage" Text="Please enter a value" Foreground="Gainsboro"></TextBlock> - <TextBox x:Name="txtValue" Margin="0 10 120 0"></TextBox> - </StackPanel> - </DockPanel> - </Grid> -</Window> diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml.cs deleted file mode 100644 index 191b53072..000000000 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/InputWindow.xaml.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Shapes; - -namespace Tango.MachineEM.UI -{ - /// <summary> - /// Interaction logic for InputWindow.xaml - /// </summary> - public partial class InputWindow : Window - { - public String Value { get; set; } - public String Message { get; set; } - - public InputWindow() - { - InitializeComponent(); - - btnOK.Click += BtnOK_Click; - btnCancel.Click += BtnCancel_Click; - Loaded += InputWindow_Loaded; - } - - private void InputWindow_Loaded(object sender, RoutedEventArgs e) - { - txtValue.Text = Value; - txtMessage.Text = Message; - - txtValue.Focus(); - Keyboard.Focus(txtValue); - } - - private void BtnCancel_Click(object sender, RoutedEventArgs e) - { - DialogResult = false; - Close(); - } - - private void BtnOK_Click(object sender, RoutedEventArgs e) - { - Value = txtValue.Text; - DialogResult = true; - Close(); - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/MainWindow.xaml index 8f066800e..7bfc7f0fd 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/MainWindow.xaml +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/MainWindow.xaml @@ -9,7 +9,7 @@ xmlns:local="clr-namespace:Tango.MachineEM.UI" xmlns:views="clr-namespace:Tango.MachineEM.UI.Views" mc:Ignorable="d" - Title="Tango Embedded Emulator" Height="820" Width="1300" TitleCaps="False" BorderBrush="Gray" BorderThickness="1" WindowStartupLocation="CenterScreen" Background="#202020" Foreground="Gainsboro" DataContext="{Binding RelativeSource={RelativeSource Self}}"> + Title="Tango Embedded Emulator" Height="720" Width="1300" TitleCaps="False" BorderBrush="Gray" BorderThickness="1" WindowStartupLocation="CenterScreen" Background="#202020" Foreground="Gainsboro" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <Grid> <views:MainView DataContext="{StaticResource MainViewVM}"></views:MainView> </Grid> diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Tango.MachineEM.UI.csproj b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Tango.MachineEM.UI.csproj index c6f382afe..bce166287 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Tango.MachineEM.UI.csproj +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Tango.MachineEM.UI.csproj @@ -80,25 +80,10 @@ <Compile Include="..\..\Versioning\GlobalVersionInfo.cs"> <Link>GlobalVersionInfo.cs</Link> </Compile> - <Compile Include="Controls\InkFillingStatusView.xaml.cs"> - <DependentUpon>InkFillingStatusView.xaml</DependentUpon> - </Compile> - <Compile Include="Converters\EventTypeToStringConverter.cs" /> - <Compile Include="InputWindow.xaml.cs"> - <DependentUpon>InputWindow.xaml</DependentUpon> - </Compile> <Compile Include="ViewModels\MainViewVM.cs" /> <Compile Include="Views\MainView.xaml.cs"> <DependentUpon>MainView.xaml</DependentUpon> </Compile> - <Page Include="Controls\InkFillingStatusView.xaml"> - <Generator>MSBuild:Compile</Generator> - <SubType>Designer</SubType> - </Page> - <Page Include="InputWindow.xaml"> - <SubType>Designer</SubType> - <Generator>MSBuild:Compile</Generator> - </Page> <Page Include="MainWindow.xaml"> <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs index c993be2d7..1662a3ede 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs @@ -12,9 +12,6 @@ using Tango.Transport.Servers; using Tango.Transport.Transporters; using Tango.Core; using Tango.Settings; -using Tango.PMR.ThreadLoading; -using Tango.PMR.DataStore; -using System.Windows; namespace Tango.MachineEM.UI.ViewModels { @@ -23,7 +20,6 @@ namespace Tango.MachineEM.UI.ViewModels private TcpServer TcpServer; private bool _running; private LogManager logManager = LogManager.Default; - private bool _isThreadLoading; #region Properties @@ -67,30 +63,10 @@ namespace Tango.MachineEM.UI.ViewModels set { _selectedPort = value; RaisePropertyChanged(nameof(SelectedPort)); } } - private ThreadLoadingState _threadLoadingState; - public ThreadLoadingState ThreadLoadingState - { - get { return _threadLoadingState; } - set { _threadLoadingState = value; OnThreadLoadingStateChanged(); } - } - - #endregion #region Private Methods - private void OnThreadLoadingStateChanged() - { - try - { - Emulator?.SetThreadLoadingState(ThreadLoadingState); - } - catch (Exception ex) - { - LogManager.Log(ex); - } - } - #endregion #region Commands @@ -125,27 +101,6 @@ namespace Tango.MachineEM.UI.ViewModels /// </summary> public RelayCommand ValidateCartridgeCommand { get; set; } - /// <summary> - /// Gets or sets the start thread loading sequence command. - /// </summary> - public RelayCommand StartThreadLoadingCommand { get; set; } - - /// <summary> - /// Gets or sets the finalize thread loading command. - /// </summary> - public RelayCommand FinalizeThreadLoadingCommand { get; set; } - - /// <summary> - /// Gets or sets the abort job. - /// </summary> - public RelayCommand AbortJobCommand { get; set; } - - public RelayCommand GetDataStoreItemCommand { get; set; } - - public RelayCommand PutDataStoreItemCommand { get; set; } - - public RelayCommand PerformDataStoreTestCommand { get; set; } - #endregion #region Constructors @@ -176,9 +131,6 @@ namespace Tango.MachineEM.UI.ViewModels CancelCommand = new RelayCommand(Cancel, (x) => _running); ClearCommand = new RelayCommand(() => Log = String.Empty); ValidateCartridgeCommand = new RelayCommand(ValidateCartridge, (x) => Emulator.IsStarted); - StartThreadLoadingCommand = new RelayCommand(StartThreadLoading, (x) => Emulator.IsStarted && !_isThreadLoading); - FinalizeThreadLoadingCommand = new RelayCommand(FinalizeThreadLoading, (x) => Emulator.IsStarted && _isThreadLoading); - AbortJobCommand = new RelayCommand(() => Emulator?.AbortJob(), (x) => Emulator.IsStarted); Ports = new List<string>() { @@ -195,10 +147,6 @@ namespace Tango.MachineEM.UI.ViewModels }; SelectedPort = Ports.First(); - - PerformDataStoreTestCommand = new RelayCommand(Emulator.PerformDataStoreTest); - GetDataStoreItemCommand = new RelayCommand(GetDataStoreItem); - PutDataStoreItemCommand = new RelayCommand(PutDataStoreItem); } #endregion @@ -270,140 +218,6 @@ namespace Tango.MachineEM.UI.ViewModels } } - private async void StartThreadLoading() - { - LogManager.Log("Starting thread loading sequence..."); - Emulator.StartThreadLoading(); - _isThreadLoading = true; - InvalidateRelayCommands(); - - await Task.Delay(10000); - _isThreadLoading = false; - InvalidateRelayCommands(); - } - - private void FinalizeThreadLoading() - { - LogManager.Log("Finalizing thread loading sequence..."); - Emulator.FinalizeThreadLoading(); - _isThreadLoading = false; - InvalidateRelayCommands(); - } - - private void GetDataStoreItem() - { - try - { - var result = GetUserInput<String>("Get Data Store Item", "Enter collection name", String.Empty); - if (!result.Confirmed) return; - var collectionName = result.Value; - - result = GetUserInput<String>("Get Data Store Item", "Enter item key", String.Empty); - if (!result.Confirmed) return; - var key = result.Value; - - Emulator.GetDataStoreItem(new PMR.DataStore.GetDataStoreItemRequest() - { - Collection = collectionName, - Key = key - }); - } - catch { } - } - - private void PutDataStoreItem() - { - try - { - var result = GetUserInput<String>("Put Data Store Item", "Enter collection name", String.Empty); - if (!result.Confirmed) return; - var collectionName = result.Value; - - result = GetUserInput<String>("Put Data Store Item", "Enter item key", String.Empty); - if (!result.Confirmed) return; - var key = result.Value; - - result = GetUserInput<String>("Put Data Store Item", "Enter data type", "Int32"); - if (!result.Confirmed) return; - DataType dataType = (DataType)Enum.Parse(typeof(DataType), result.Value); - - result = GetUserInput<String>("Put Data Store Item", "Enter value", "10"); - if (!result.Confirmed) return; - var value = result.Value; - - DataStoreItem item = new DataStoreItem(); - item.DataType = dataType; - - switch (dataType) - { - case DataType.Int32: - item.Int32Value = int.Parse(value); - break; - case DataType.Float: - item.FloatValue = float.Parse(value); - break; - case DataType.Double: - item.DoubleValue = double.Parse(value); - break; - case DataType.Boolean: - item.BooleanValue = bool.Parse(value); - break; - case DataType.String: - item.StringValue = value; - break; - default: - LogManager.Log("Data type not supported by this emulator."); - throw new NotSupportedException(); - } - - Emulator.PutDataStoreItem(new PutDataStoreItemRequest() - { - Collection = collectionName, - Key = key, - Item = item - }); - } - catch { } - } - - #endregion - - #region Private Methods - - private class InputResult<T> - { - public bool Confirmed { get; set; } - public T Value { get; set; } - } - - private InputResult<T> GetUserInput<T>(String title, String message, T defaultValue) - { - InputWindow window = new InputWindow(); - window.Title = title; - window.Message = message; - window.Value = defaultValue.ToStringSafe(); - window.Owner = Application.Current.MainWindow; - window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; - window.WindowStyle = WindowStyle.ToolWindow; - - try - { - if (window.ShowDialog().Value) - { - return new InputResult<T>() { Confirmed = true, Value = (T)Convert.ChangeType(window.Value, typeof(T)) }; - } - else - { - return new InputResult<T>(); - } - } - catch (Exception ex) - { - LogManager.Log(ex, "Error parsing input."); - throw ex; - } - } - #endregion } } diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml index c0c4b7b97..036fec7dc 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/Views/MainView.xaml @@ -3,23 +3,19 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:controls="clr-namespace:Tango.MachineEM.UI.Controls" xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls" xmlns:editors="clr-namespace:Tango.SharedUI.Editors;assembly=Tango.SharedUI" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" xmlns:fa="http://schemas.fontawesome.io/icons/" xmlns:vm="clr-namespace:Tango.MachineEM.UI.ViewModels" xmlns:pmr="clr-namespace:Tango.PMR.MachineStatus;assembly=Tango.PMR" - xmlns:threadLoading="clr-namespace:Tango.PMR.ThreadLoading;assembly=Tango.PMR" - xmlns:localConverters="clr-namespace:Tango.MachineEM.UI.Converters" xmlns:local="clr-namespace:Tango.MachineEM.UI.Views" mc:Ignorable="d" - d:DesignHeight="780" d:DesignWidth="1300" Foreground="Gainsboro" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" > + d:DesignHeight="720" d:DesignWidth="1300" Foreground="Gainsboro" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" > <UserControl.Resources> <converters:BooleanInverseConverter x:Key="BooleanInverseConverter"></converters:BooleanInverseConverter> <converters:EnumToItemsSourceConverter x:Key="EnumToItemsSourceConverter" /> - <localConverters:EventTypeToStringConverter x:Key="EventTypeToStringConverter" /> </UserControl.Resources> <Grid> <Grid.Background> @@ -57,141 +53,17 @@ <Grid> <Grid.ColumnDefinitions> - <ColumnDefinition Width="220"/> <ColumnDefinition Width="1*"/> <ColumnDefinition Width="280"/> </Grid.ColumnDefinitions> - <Grid Background="#A3000000"> - <StackPanel> - <!--BUTTONS HERE--> - <Button Padding="10 0 0 0" Height="45" Margin="5" HorizontalContentAlignment="Left" MinWidth="100" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding StartThreadLoadingCommand}"> - <StackPanel Orientation="Horizontal"> - <fa:ImageAwesome Icon="ChevronCircleDown" Width="16"></fa:ImageAwesome> - <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">START THREAD LOADING</TextBlock> - </StackPanel> - </Button> - <Button Padding="10 0 0 0" Height="45" Margin="5" HorizontalContentAlignment="Left" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding FinalizeThreadLoadingCommand}"> - <StackPanel Orientation="Horizontal"> - <fa:ImageAwesome Icon="ChevronCircleUp" Width="16"></fa:ImageAwesome> - <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">FINALIZE THREAD LOADING</TextBlock> - </StackPanel> - </Button> - <Button Padding="10 0 0 0" Margin="5" Height="45" HorizontalContentAlignment="Left" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding ValidateCartridgeCommand}"> - <StackPanel Orientation="Horizontal"> - <fa:ImageAwesome Icon="FlagCheckered" Width="16"></fa:ImageAwesome> - <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">CARTRIDGE VALIDATION</TextBlock> - </StackPanel> - </Button> - <ToggleButton Style="{StaticResource AccentedSquareButtonStyle}" BorderThickness="0" x:Name="toggleLevels" Height="45" Margin="5"> - <StackPanel Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">MACHINE STATUS</TextBlock> - <fa:ImageAwesome Icon="ChevronDown" Width="16" Foreground="White"></fa:ImageAwesome> - </StackPanel> - </ToggleButton> - <Popup IsOpen="{Binding ElementName=toggleLevels,Path=IsChecked}" StaysOpen="True"> - <Border Padding="10"> - <StackPanel Orientation="Horizontal"> - <StackPanel HorizontalAlignment="Left"> - <TextBlock Foreground="Red">IDS Packs Levels</TextBlock> - <ScrollViewer Height="400" HorizontalScrollBarVisibility="Disabled" Width="300"> - <ItemsControl Margin="0 5 0 0" ItemsSource="{Binding Emulator.MachineStatus.IDSPacksLevels}"> - <ItemsControl.ItemTemplate> - <DataTemplate> - <StackPanel Margin="0 5"> - <TextBlock> - <Run Text="Index: "></Run> - <Run Text="{Binding Index}"></Run> - </TextBlock> - - <StackPanel Orientation="Horizontal"> - <TextBlock Text="Dispenser Level (nl): " /> - <TextBox Text="{Binding ElementName=sliderDispenser,Path=Value,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox> - </StackPanel> - - <Slider x:Name="sliderDispenser" Orientation="Horizontal" Minimum="0" Maximum="130000000" Value="{Binding DispenserLevel}"></Slider> - - <TextBlock> - <Run Text="MidTank Level (ml): "></Run> - <Run Text="{Binding ElementName=sliderMidTank,Path=Value}"></Run> - </TextBlock> - - <Slider x:Name="sliderMidTank" Orientation="Horizontal" Minimum="0" Maximum="1.8" Value="{Binding MidTankLevel}"></Slider> - </StackPanel> - </DataTemplate> - </ItemsControl.ItemTemplate> - </ItemsControl> - </ScrollViewer> - </StackPanel> - <StackPanel Margin="10 0 0 0"> - <TextBlock Foreground="Red">MACHINE STATE</TextBlock> - <ComboBox Margin="0 5 0 0" Width="150" ItemsSource="{Binding Source={x:Type pmr:MachineState},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding Emulator.MachineStatus.State,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="DisplayName"></ComboBox> - - <TextBlock Margin="0 20 0 0" Foreground="Red" Width="160"> - <Run>OVERALL TEMPERATURE</Run> - <Run Text="{Binding ElementName=sliderTemperature,Path=Value,StringFormat='0.0',Mode=OneWay}"></Run> - </TextBlock> - <Slider x:Name="sliderTemperature" Margin="0 5 0 0" Minimum="0" Maximum="60" Value="{Binding Emulator.MachineStatus.OverallTemperature,Mode=TwoWay}"></Slider> - - <TextBlock Margin="0 10 0 0">SPOOL STATE</TextBlock> - <ComboBox Margin="0 5 0 0" Width="150" ItemsSource="{Binding Source={x:Type pmr:SpoolState},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding Emulator.MachineStatus.SpoolState,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="DisplayName"></ComboBox> - </StackPanel> - </StackPanel> - </Border> - </Popup> - - <ToggleButton Style="{StaticResource AccentedSquareButtonStyle}" BorderThickness="0" x:Name="toggleIFS" Height="45" Margin="5"> - <StackPanel Orientation="Horizontal"> - <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">INK FILLING STATUS</TextBlock> - <fa:ImageAwesome Icon="ChevronDown" Width="16" Foreground="White"></fa:ImageAwesome> - </StackPanel> - </ToggleButton> - <Popup IsOpen="{Binding ElementName=toggleIFS,Path=IsChecked}" StaysOpen="True" PlacementTarget="{Binding ElementName=toggleIFS}" Placement="Bottom"> - <controls:InkFillingStatusView Height="300" Width="210" DataContext="{Binding Emulator.InkFillingStatus}" /> - </Popup> - - <Button Padding="10 0 0 0" Margin="5" Height="45" HorizontalContentAlignment="Left" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding AbortJobCommand}"> - <DockPanel> - <fa:ImageAwesome Icon="ExclamationTriangle" Width="16"></fa:ImageAwesome> - <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" HorizontalAlignment="Center">ABORT JOB</TextBlock> - </DockPanel> - </Button> - - <Button Padding="10 0 0 0" Margin="5" HorizontalContentAlignment="Left" Height="45" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding PerformDataStoreTestCommand}"> - <DockPanel> - <fa:ImageAwesome Icon="Database" Width="16"></fa:ImageAwesome> - <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" HorizontalAlignment="Center">DATASTORE TEST</TextBlock> - </DockPanel> - </Button> - - <Button Padding="10 0 0 0" Margin="5" HorizontalContentAlignment="Left" Height="45" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding GetDataStoreItemCommand}"> - <DockPanel> - <fa:ImageAwesome Icon="Download" Width="16"></fa:ImageAwesome> - <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" HorizontalAlignment="Center">GET DATA STORE ITEM</TextBlock> - </DockPanel> - </Button> - - <Button HorizontalContentAlignment="Left" Padding="10 0 0 0" Margin="5" Height="45" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding PutDataStoreItemCommand}"> - <DockPanel> - <fa:ImageAwesome Icon="Upload" Width="16"></fa:ImageAwesome> - <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" HorizontalAlignment="Center">PUT DATA STORE ITEM</TextBlock> - </DockPanel> - </Button> - <!--BUTTONS HERE--> - - <DockPanel Margin="5 20 5 0"> - <TextBlock FontSize="12" DockPanel.Dock="Top">Thread Loading State</TextBlock> - <ComboBox Margin="0 5 0 0" ItemsSource="{Binding Source={x:Type threadLoading:ThreadLoadingState},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding ThreadLoadingState,Mode=OneWayToSource}" SelectedValuePath="Value" DisplayMemberPath="DisplayName"></ComboBox> - </DockPanel> - </StackPanel> - </Grid> - <TextBox x:Name="txtLog" Grid.Column="1" FontFamily="monospaced" TextChanged="txtLog_TextChanged" Text="{Binding Log}" Background="Transparent" Foreground="Red" FontSize="11" Padding="5" Style="{x:Null}" BorderThickness="0" IsReadOnly="True" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap"> + <TextBox x:Name="txtLog" FontFamily="monospaced" TextChanged="txtLog_TextChanged" Text="{Binding Log}" Background="Transparent" Foreground="Red" FontSize="11" Padding="5" Style="{x:Null}" BorderThickness="0" IsReadOnly="True" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap"> </TextBox> - <Grid Grid.Column="2"> + <Grid Grid.Column="1"> <DockPanel> <TextBlock DockPanel.Dock="Top" Margin="10 0 0 0">HARDWARE EVENTS</TextBlock> - <ListBox BorderThickness="0" Background="#66000000" Margin="10 10 10 0" ItemsSource="{Binding Emulator.EventsStates}" FontSize="11"> + <ListBox BorderThickness="0" Background="#66000000" Margin="10 10 10 40" ItemsSource="{Binding Emulator.EventsStates}" FontSize="11"> <ListBox.ItemContainerStyle> <Style TargetType="ListBoxItem"> @@ -199,7 +71,7 @@ </ListBox.ItemContainerStyle> <ListBox.ItemTemplate> <DataTemplate> - <CheckBox FontSize="11" Content="{Binding EventType,Converter={StaticResource EventTypeToStringConverter}}" IsChecked="{Binding IsActive}" Margin="5"></CheckBox> + <CheckBox FontSize="11" Content="{Binding EventType}" IsChecked="{Binding IsActive}" Margin="5"></CheckBox> </DataTemplate> </ListBox.ItemTemplate> </ListBox> @@ -309,6 +181,59 @@ <SolidColorBrush Color="#151515" Opacity="0.8" /> </Grid.Background> <StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Margin="5"> + <Button Margin="5" MinWidth="100" Style="{StaticResource AccentedSquareButtonStyle}" mahapps:ButtonHelper.PreserveTextCase="True" BorderThickness="0" Command="{Binding ValidateCartridgeCommand}"> + <StackPanel Orientation="Horizontal"> + <fa:ImageAwesome Icon="FlagCheckered" Width="16"></fa:ImageAwesome> + <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">CARTRIDGE VALIDATION</TextBlock> + </StackPanel> + </Button> + <ToggleButton Style="{StaticResource AccentedSquareButtonStyle}" BorderThickness="0" x:Name="toggleLevels" MinWidth="140" Margin="5 5 20 5"> + <StackPanel Orientation="Horizontal"> + <TextBlock VerticalAlignment="Center" Margin="10 0 10 0">STATUS</TextBlock> + <fa:ImageAwesome Icon="ChevronDown" Width="16" Foreground="White"></fa:ImageAwesome> + </StackPanel> + </ToggleButton> + <Popup IsOpen="{Binding ElementName=toggleLevels,Path=IsChecked}" StaysOpen="True"> + <Border Padding="10"> + <StackPanel Orientation="Horizontal"> + <StackPanel HorizontalAlignment="Left"> + <TextBlock Foreground="Red">IDS Packs Levels</TextBlock> + <ScrollViewer Height="400" HorizontalScrollBarVisibility="Disabled"> + <ItemsControl Margin="0 5 0 0" ItemsSource="{Binding Emulator.MachineStatus.IDSPacksLevels}"> + <ItemsControl.ItemTemplate> + <DataTemplate> + <StackPanel Margin="0 5"> + <TextBlock> + <Run Text="Index: "></Run> + <Run Text="{Binding Index}"></Run> + </TextBlock> + + <StackPanel Orientation="Horizontal"> + <TextBlock Text="Dispenser Level (nl): " /> + <TextBox Text="{Binding ElementName=sliderDispenser,Path=Value,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"></TextBox> + </StackPanel> + + <Slider x:Name="sliderDispenser" Orientation="Horizontal" Minimum="0" Maximum="130000000" Value="{Binding DispenserLevel}"></Slider> + + <TextBlock> + <Run Text="MidTank Level (ml): "></Run> + <Run Text="{Binding ElementName=sliderMidTank,Path=Value}"></Run> + </TextBlock> + + <Slider x:Name="sliderMidTank" Orientation="Horizontal" Minimum="0" Maximum="2500" Value="{Binding MidTankLevel}"></Slider> + </StackPanel> + </DataTemplate> + </ItemsControl.ItemTemplate> + </ItemsControl> + </ScrollViewer> + </StackPanel> + <StackPanel Margin="10 0 0 0"> + <TextBlock Foreground="Red">MACHINE STATE</TextBlock> + <ComboBox Margin="0 5 0 0" Width="150" ItemsSource="{Binding Source={x:Type pmr:MachineState},Converter={StaticResource EnumToItemsSourceConverter}}" SelectedValue="{Binding Emulator.MachineStatus.State,Mode=TwoWay}" SelectedValuePath="Value" DisplayMemberPath="DisplayName"></ComboBox> + </StackPanel> + </StackPanel> + </Border> + </Popup> <CheckBox Margin="0 0 20 0" VerticalAlignment="Center" IsChecked="{Binding Emulator.EmulateCorruption}" Foreground="Red">Emulate Corruption</CheckBox> <CheckBox Margin="0 0 20 0" VerticalAlignment="Center" IsChecked="{Binding Emulator.PerformNativeRoundTrip}">Perform Native RoundTrip</CheckBox> <ComboBox IsEnabled="{Binding Emulator.IsStarted,Converter={StaticResource BooleanInverseConverter}}" MinWidth="140" Margin="5" BorderThickness="0" ItemsSource="{Binding Ports}" SelectedItem="{Binding SelectedPort}"></ComboBox> diff --git a/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs index a86454e26..78a9d0380 100644 --- a/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.PMRGenerator.CLI/Program.cs @@ -56,7 +56,6 @@ namespace Tango.PMRGenerator.CLI GenerateColorLabLiquidTypes(db, pmrFolder); GenerateDiagnosticsValueComponents(db, pmrFolder); GenerateDiagnosticsMonitors(db, pmrFolder); - GenerateInsightsMonitors(db, pmrFolder); GenerateEventTypes(db, pmrFolder); GenerateInterfaceIOs(db, pmrFolder); } @@ -642,7 +641,7 @@ namespace Tango.PMRGenerator.CLI private static void GenerateDiagnosticsMonitors(ObservablesContext db, String pmrFolder) { - Console.WriteLine("Generating Diagnostics Monitors..."); + Console.WriteLine("Generating Monitors..."); ProtoMessageFile messageFile = new ProtoMessageFile(); messageFile.Name = "DiagnosticsMonitors"; @@ -675,34 +674,6 @@ namespace Tango.PMRGenerator.CLI File.WriteAllText(Path.Combine(pmrFolder, "Diagnostics", messageFile.Name + ".proto"), messageString); } - private static void GenerateInsightsMonitors(ObservablesContext db, string pmrFolder) - { - Console.WriteLine("Generating Insights Monitors..."); - - ProtoMessageFile messageFile = new ProtoMessageFile(); - messageFile.Name = "InsightsMonitors"; - messageFile.Package = "Tango.PMR.Insights"; - - foreach (var monitor in db.TechMonitors.ToList().OrderBy(x => x.Code)) - { - var prop = new ProtoProperty(); - prop.Name = monitor.Name.Replace(" ", ""); - prop.Description = monitor.Description; - prop.Type = "double"; - - if (monitor.MultiChannel) - { - prop.Repeated = true; - } - - messageFile.Properties.Add(prop); - } - - String messageString = messageFile.GenerateCode(); - - File.WriteAllText(Path.Combine(pmrFolder, "Insights", messageFile.Name + ".proto"), messageString); - } - private static void GenerateInterfaceIOs(ObservablesContext db, String pmrFolder) { Console.WriteLine("Generating Interface IOs..."); @@ -777,15 +748,19 @@ namespace Tango.PMRGenerator.CLI if (db_des != null) { - DbPropertyExtensionModel rangeDescription = null; + RangeDescriptionModel rangeDescription = null; try { - rangeDescription = JsonConvert.DeserializeObject<DbPropertyExtensionModel>(db_des.ColumnDescription); + rangeDescription = JsonConvert.DeserializeObject<RangeDescriptionModel>(db_des.ColumnDescription); } catch { } - if (rangeDescription == null) + if (rangeDescription != null && rangeDescription.Description != null) + { + return rangeDescription.Description.ToLines().Take(1).Concat(rangeDescription.Description.ToLines().Skip(1).Select(x => "//" + x)).Join(Environment.NewLine); + } + else { return db_des.ColumnDescription.ToLines().Take(1).Concat(db_des.ColumnDescription.ToLines().Skip(1).Select(x => "//" + x)).Join(Environment.NewLine); } diff --git a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/App.config b/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/App.config deleted file mode 100644 index 731f6de6c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/App.config +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<configuration> - <startup> - <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> - </startup> -</configuration>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Program.cs deleted file mode 100644 index bbb922a7c..000000000 --- a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Program.cs +++ /dev/null @@ -1,31 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Forms; - -namespace Tango.PasswordHashUtil.CLI -{ - class Program - { - [STAThread] - static void Main(string[] args) - { - Core.Cryptography.IHashGenerator gen = new Core.Cryptography.BasicHashGenerator(); - - Console.WriteLine("Twine Password Generator."); - - Start: - Console.WriteLine(); - Console.Write("Enter Password: "); - String pass = Console.ReadLine(); - String hash = gen.Encrypt(pass); - Clipboard.SetText(hash); - Console.Write($"Hash copied to clipboard..."); - Console.ReadLine(); - - goto Start; - } - } -} diff --git a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Properties/AssemblyInfo.cs deleted file mode 100644 index 0d06d05dc..000000000 --- a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System.Reflection; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyTitle("Tango.PasswordHashUtil.CLI")] -[assembly: AssemblyDescription("")] -[assembly: AssemblyConfiguration("")] -[assembly: AssemblyCompany("")] -[assembly: AssemblyProduct("Tango.PasswordHashUtil.CLI")] -[assembly: AssemblyCopyright("Copyright © 2020")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] - -// Setting ComVisible to false makes the types in this assembly not visible -// to COM components. If you need to access a type in this assembly from -// COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible(false)] - -// The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid("f1dc98ef-c50a-4e84-9a39-211a68626fba")] - -// Version information for an assembly consists of the following four values: -// -// Major Version -// Minor Version -// Build Number -// Revision -// -// You can specify all the values or you can default the Build and Revision Numbers -// by using the '*' as shown below: -// [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("1.0.0.0")] -[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Tango.PasswordHashUtil.CLI.csproj b/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Tango.PasswordHashUtil.CLI.csproj deleted file mode 100644 index f9eab2640..000000000 --- a/Software/Visual_Studio/Utilities/Tango.PasswordHashUtil.CLI/Tango.PasswordHashUtil.CLI.csproj +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProjectGuid>{F1DC98EF-C50A-4E84-9A39-211A68626FBA}</ProjectGuid> - <OutputType>Exe</OutputType> - <RootNamespace>Tango.PasswordHashUtil.CLI</RootNamespace> - <AssemblyName>tango_pass_gen</AssemblyName> - <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> - <FileAlignment>512</FileAlignment> - <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> - <Deterministic>true</Deterministic> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <PlatformTarget>AnyCPU</PlatformTarget> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="System" /> - <Reference Include="System.Core" /> - <Reference Include="System.Windows.Forms" /> - <Reference Include="System.Xml.Linq" /> - <Reference Include="System.Data.DataSetExtensions" /> - <Reference Include="Microsoft.CSharp" /> - <Reference Include="System.Data" /> - <Reference Include="System.Net.Http" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Program.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <None Include="App.config" /> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> - <Project>{a34ee0f0-649d-41c8-8489-b6f1cc6924ee}</Project> - <Name>Tango.Core</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> -</Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Program.cs index cab2cf2bb..62dccc4ce 100644 --- a/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Program.cs @@ -32,9 +32,9 @@ namespace Tango.PortsListGenerator static void Main(string[] args) { - Console.WriteLine("Initializing Ports List..."); + Console.WriteLine("Generating Ports List..."); - ExcelReader reader = new ExcelReader(PathHelper.GetStartupPath() + "\\Tech IOs v2.xlsx"); + ExcelReader reader = new ExcelReader(PathHelper.GetStartupPath() + "\\PortsList.xlsx"); var results = reader.GetDataByIndex<PortItem>("Ports List", 2); results.RemoveAll(x => String.IsNullOrWhiteSpace(x.ToString().Replace(",", ""))); @@ -65,133 +65,20 @@ namespace Tango.PortsListGenerator return; } + Console.WriteLine("Emptying TECH_IOS table..."); using (ObservablesContext db = ObservablesContext.CreateDefault()) { - var toUpdateAdd = results.Where(x => !String.IsNullOrWhiteSpace(x.InterfaceName)).ToList(); - - List<PortItem> toUpdate = new List<PortItem>(); - List<PortItem> toUpdateDb = new List<PortItem>(); - List<PortItem> toAdd = new List<PortItem>(); - List<PortItem> identical = new List<PortItem>(); - - foreach (var item in toUpdateAdd) - { - var existingIO = db.TechIos.SingleOrDefault(x => x.InterfaceName == item.InterfaceName); - - if (existingIO != null) - { - bool shouldUpdate = - existingIO.Name != item.InterfaceName - || - existingIO.Designator != item.Designator - || - existingIO.Asm != item.Asm - || - existingIO.InterfaceName != item.InterfaceName - || - existingIO.Sensor != item.Sensor - || - existingIO.Type != (int)TypeNameToIOType(item.Type) - || - existingIO.Averaging != (int)StringToNumber(item.Averaging) - || - existingIO.InitValue != StringToNumber(item.InitValue); - - if (shouldUpdate) - { - toUpdate.Add(item); - - toUpdateDb.Add(new PortItem() - { - Id = existingIO.ID.ToString(), - Asm = existingIO.Asm, - Designator = existingIO.Designator, - Averaging = existingIO.Averaging.ToString(), - InitValue = existingIO.InitValue.ToString(), - InterfaceName = existingIO.InterfaceName, - Sensor = existingIO.Sensor, - Type = ((IOType)existingIO.Type).ToString() - }); - } - else - { - identical.Add(item); - } - } - else - { - toAdd.Add(item); - } - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine($"IDENTICAL ({identical.Count}) ---------------------------------------------------------"); - Console.WriteLine(); - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine($"ITEMS TO ADD ({toAdd.Count}) ---------------------------------------------------------"); - Console.WriteLine(); - - foreach (var item in toAdd) - { - Console.WriteLine(item.ToString()); - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine($"ITEMS TO UPDATE ({toUpdate.Count}) ---------------------------------------------------------"); - Console.WriteLine(); - - for (int i = 0; i < toUpdate.Count; i++) - { - Console.WriteLine($"ID: {toUpdateDb[i].Id}: {toUpdateDb[i].ToString()} => {toUpdate[i].ToString()}"); - } - - Console.WriteLine(); - Console.WriteLine(); - Console.WriteLine("Press 'Y' to perform the operation..."); - - var key = Console.ReadKey(); - - if (key.Key != ConsoleKey.Y) - { - Environment.Exit(0); - return; - } - - Console.WriteLine(); - Console.WriteLine("Starting procedure..."); - - int code = 0; - - if (db.TechIos.Count() > 0) - { - code = db.TechIos.Max(x => x.Code) + 1; - } + db.Database.ExecuteSqlCommand("DELETE FROM TECH_IOS"); + } - foreach (var item in toUpdate) - { - var existingIO = db.TechIos.SingleOrDefault(x => x.InterfaceName == item.InterfaceName); + int code = 0; - if (existingIO != null) - { - Console.WriteLine("Updating " + item.ToString()); - existingIO.Name = item.InterfaceName; - existingIO.Designator = item.Designator; - existingIO.Asm = item.Asm; - existingIO.InterfaceName = item.InterfaceName; - existingIO.Sensor = item.Sensor; - existingIO.Type = (int)TypeNameToIOType(item.Type); - existingIO.Averaging = (int)StringToNumber(item.Averaging); - existingIO.InitValue = StringToNumber(item.InitValue); - } - } - - foreach (var item in toAdd) + using (ObservablesContext db = ObservablesContext.CreateDefault()) + { + foreach (var item in results.Where(x => !String.IsNullOrWhiteSpace(x.InterfaceName))) { Console.WriteLine("Adding " + item.ToString()); + db.TechIos.Add(new BL.Entities.TechIo() { Code = code++, diff --git a/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Tango.PortsListGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Tango.PortsListGenerator.csproj index 4e7f11359..b89ae91ce 100644 --- a/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Tango.PortsListGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.PortsListGenerator/Tango.PortsListGenerator.csproj @@ -60,14 +60,6 @@ <Link>PortsList.xlsx</Link> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> </None> - <None Include="..\..\Resources\Tech IOs\Tech IOs v1.xlsx"> - <Link>Tech IOs v1.xlsx</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> - <None Include="..\..\Resources\Tech IOs\Tech IOs v2.xlsx"> - <Link>Tech IOs v2.xlsx</Link> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </None> <None Include="App.config" /> <None Include="packages.config" /> </ItemGroup> @@ -88,7 +80,7 @@ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <ProjectExtensions> <VisualStudio> - <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" /> + <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" /> </VisualStudio> </ProjectExtensions> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Options.cs b/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Options.cs index ba4c2213e..506e3ed50 100644 --- a/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Options.cs +++ b/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Options.cs @@ -22,9 +22,6 @@ namespace Tango.Protobuf.CLI [Option("c", Required = false, HelpText = "Optional folder names to exclusively include (separated by commas).")] public String Includes { get; set; } - [Option("m", Required = false, HelpText = "Perform code size optimization for C compiler by omitting all hard coded strings.")] - public bool Min { get; set; } - [ParserState] public IParserState LastParserState { get; set; } diff --git a/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Program.cs b/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Program.cs index a1ae39c31..91f0e0ef7 100644 --- a/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.Protobuf.CLI/Program.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; -using System.Diagnostics; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; -using Tango.Protobuf.Compilers; namespace Tango.Protobuf.CLI { @@ -63,12 +61,6 @@ namespace Tango.Protobuf.CLI { var compiler = CompilerFactory.CreateCompiler(language); - if (options.Min && compiler is CCompiler) - { - (compiler as CCompiler).Minimize = true; - } - - compiler.CompilationProgress += (x, e) => { try @@ -114,12 +106,6 @@ namespace Tango.Protobuf.CLI private static int ExitError(String error) { Console.WriteLine(error); - - if (Debugger.IsAttached) - { - Console.ReadLine(); - } - return -1; } diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/MainWindow.xaml.cs index 011186a23..7d05ef9f5 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/MainWindow.xaml.cs +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/MainWindow.xaml.cs @@ -26,14 +26,6 @@ namespace Tango.Stubs.UI { InitializeComponent(); Title += " v" + Assembly.GetExecutingAssembly().GetName().Version.Major + "." + Assembly.GetExecutingAssembly().GetName().Version.Minor; - - Closing += MainWindow_Closing; - } - - private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) - { - e.Cancel = true; - Environment.Exit(0); } } } diff --git a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs index bf3b52bde..d283d9099 100644 --- a/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/Utilities/Tango.Stubs.UI/Properties/AssemblyInfo.cs @@ -3,5 +3,5 @@ using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("Tango - Stubs execution GUI utility")] -[assembly: AssemblyVersion("3.5.0.0")] +[assembly: AssemblyVersion("3.4.0.0")] diff --git a/Software/Visual_Studio/Utilities/Tango.UITests/App.xaml b/Software/Visual_Studio/Utilities/Tango.UITests/App.xaml index 36674648b..43576481f 100644 --- a/Software/Visual_Studio/Utilities/Tango.UITests/App.xaml +++ b/Software/Visual_Studio/Utilities/Tango.UITests/App.xaml @@ -6,13 +6,7 @@ StartupUri="MainWindow.xaml"> <Application.Resources> <ResourceDictionary> - - <ResourceDictionary.MergedDictionaries> - <ResourceDictionary Source="pack://application:,,,/Tango.MachineStudio.Common;component/Resources/MaterialDesign.xaml" /> - <ResourceDictionary Source="pack://application:,,,/Tango.MachineStudio.Common;component/Themes/LightThemeColors.xaml" /> - </ResourceDictionary.MergedDictionaries> - - <!--<ResourceDictionary.MergedDictionaries> + <!--<ResourceDictionary.MergedDictionaries> --><!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! --><!-- <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" /> <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" /> diff --git a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml index c5bb2001c..53fdc25d3 100644 --- a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml +++ b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml @@ -1,323 +1,46 @@ <Window x:Class="Tango.UITests.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" - xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" - xmlns:colorpic="clr-namespace:Tango.ColorPickers;assembly=Tango.ColorPickers" + xmlns:collection="clr-namespace:System.Collections;assembly=mscorlib" + xmlns:local="clr-namespace:Tango.UITests" + xmlns:dragAndDrop="clr-namespace:Tango.DragAndDrop;assembly=Tango.DragAndDrop" + xmlns:components="clr-namespace:Tango.Touch.Components;assembly=Tango.Touch" + xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI" + xmlns:keyboard="clr-namespace:Tango.Touch.Keyboard;assembly=Tango.Touch" + xmlns:aero="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero" + xmlns:stubs="clr-namespace:Tango.Stubs.Views;assembly=Tango.Stubs" + xmlns:touch="clr-namespace:Tango.Touch.Controls;assembly=Tango.Touch" + xmlns:commonControls="clr-namespace:Tango.PPC.Common.Controls;assembly=Tango.PPC.Common" + xmlns:explorer="clr-namespace:Tango.Explorer;assembly=Tango.Explorer" mc:Ignorable="d" - Title="MainWindow" Height="700" Width="800" DataContext="{Binding RelativeSource={RelativeSource Self}}" > + Title="MainWindow" Height="700" Width="800" DataContext="{Binding RelativeSource={RelativeSource Self}}"> <Grid> - <TabControl Margin="5" TabStripPlacement="Top"> - <TabControl.Resources> - <Style TargetType="TabPanel"> - <Setter Property="HorizontalAlignment" Value="Center"/> - </Style> - <Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}"> - <Setter Property="Padding" Value="20,2"></Setter> - </Style> - </TabControl.Resources> - <TabItem Header="HSB" Padding="5"> - <Grid > - <Grid.Background> - <SolidColorBrush Color="{Binding ElementName=HSBPicker, Path=SelectedColor}"/> - </Grid.Background> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"></ColumnDefinition> - <ColumnDefinition Width="1*"></ColumnDefinition> - </Grid.ColumnDefinitions> - <StackPanel Grid.Column="0" Orientation="Vertical" Height="Auto" HorizontalAlignment="Center" Width="Auto" VerticalAlignment="Top" Margin="10 50 0 0"> - <StackPanel Orientation="Horizontal" Margin="0 10 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">H:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="HHSBColor" Text="230" FontSize="22" Margin="2" ></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Height="Auto" HorizontalAlignment="Left" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">S:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="SHSBColor" Text="100" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">B:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="BHSBColor" Text="50" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap">Thumb height:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center"> - <TextBox x:Name="HSBThumbHeightProp" Text="16" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap" >Thumb color:</TextBlock> - <Border Width="90" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="HSBThumbColorProp" Text="#F4F4F4" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - </StackPanel> - <StackPanel Grid.Column="1" VerticalAlignment="Center" Orientation="Vertical"> - <colorpic:HsbColorPicker x:Name="HSBPicker" Width="400" Height="400" Background="White" Foreground="Black" BorderBrush="Gainsboro" BorderThickness="0.8" - H="{Binding ElementName=HHSBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - S="{Binding ElementName=SHSBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - B="{Binding ElementName=BHSBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - ThumbHeight="{Binding ElementName=HSBThumbHeightProp, Path=Text}" - ThumbColor="{Binding ElementName=HSBThumbColorProp, Path=Text}"/> - - <TextBlock Background="LightGray" Margin="0 50 0 0" HorizontalAlignment="Center" Foreground="Black" Width="400" FontSize="24" Height="Auto" MinHeight="40" FontWeight="DemiBold"> - <Run Text="RGB Color: " /> - <Run Text="{Binding ElementName=HSBPicker, Path=SelectedColor}"/> - </TextBlock> - </StackPanel> - </Grid> - </TabItem> - <TabItem Header="RGB" Padding="5"> - <Grid > - <Grid.Background> - <SolidColorBrush Color="{Binding ElementName=RGBPicker, Path=SelectedColor}"/> - </Grid.Background> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"></ColumnDefinition> - <ColumnDefinition Width="1*"></ColumnDefinition> - </Grid.ColumnDefinitions> - <StackPanel Grid.Column="0" Orientation="Vertical" Height="Auto" HorizontalAlignment="Center" Width="Auto" VerticalAlignment="Top" Margin="10 50 0 0"> - <StackPanel Orientation="Horizontal" Margin="0 10 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">R:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="RRGBColor" Text="30" FontSize="22" Margin="2" ></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Height="Auto" HorizontalAlignment="Left" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">G:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="GRGBColor" Text="100" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">B:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="BRGBColor" Text="220" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Top" FontWeight="DemiBold" Width="65" TextWrapping="Wrap">Thumb height:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center"> - <TextBox x:Name="RGBThumbHeightProp" Text="16" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap" >Thumb color:</TextBlock> - <Border Width="90" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="RGBThumbColorProp" Text="#F4F4F4" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - </StackPanel> - - <StackPanel Grid.Column="1" VerticalAlignment="Center" Orientation="Vertical"> - <colorpic:RgbColorPicker x:Name="RGBPicker" SelectedColor="#5C3D99" Width="400" Height="300" Background="White" Foreground="Black" BorderBrush="Gainsboro" BorderThickness="0.8" - R="{Binding ElementName=RRGBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - G="{Binding ElementName=GRGBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - B="{Binding ElementName=BRGBColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - ThumbHeight="{Binding ElementName=RGBThumbHeightProp, Path=Text}" - ThumbColor="{Binding ElementName=RGBThumbColorProp, Path=Text}"/> - - <TextBlock Margin="0 50 0 0" Background="LightGray" HorizontalAlignment="Center" Foreground="Black" Width="400" FontSize="24" Height="Auto" MinHeight="40" FontWeight="DemiBold"> - <Run Text="RGB Color: " /> - <Run Text="{Binding ElementName=RGBPicker, Path=SelectedColor}"/> - </TextBlock> - </StackPanel> - </Grid> - </TabItem> - - <TabItem Header="CMYK" Padding="5"> - <Grid > - <Grid.Background> - <SolidColorBrush Color="{Binding ElementName=CmykPicker, Path=SelectedColor}"/> - </Grid.Background> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"></ColumnDefinition> - <ColumnDefinition Width="1*"></ColumnDefinition> - </Grid.ColumnDefinitions> - <StackPanel Grid.Column="0" Orientation="Vertical" Height="Auto" HorizontalAlignment="Center" Width="Auto" VerticalAlignment="Top" Margin="10 50 0 0"> - <StackPanel Orientation="Horizontal" Margin="0 10 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">C:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="CCMYKColor" Text="60" FontSize="22" Margin="2" ></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Height="Auto" HorizontalAlignment="Left" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">M:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="MCMYKColor" Text="20" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">Y:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="YCMYKColor" Text="80" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">K:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="KCMYKColor" Text="20" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap">Thumb height:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center"> - <TextBox x:Name="CMYKThumbHeightProp" Text="16" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap" >Thumb color:</TextBlock> - <Border Width="90" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="CMYKThumbColorProp" Text="#F4F4F4" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - </StackPanel> - <StackPanel Grid.Column="1" VerticalAlignment="Top" Orientation="Vertical" Margin="10 60 0 0"> - <colorpic:CmykColorPicker x:Name="CmykPicker" Width="400" Height="400" Background="White" Foreground="Black" BorderBrush="Gainsboro" BorderThickness="0.8" - Cyan="{Binding ElementName=CCMYKColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - Magenta="{Binding ElementName=MCMYKColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - Yellow="{Binding ElementName=YCMYKColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - Key="{Binding ElementName=KCMYKColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - ThumbHeight="{Binding ElementName=CMYKThumbHeightProp, Path=Text}" - ThumbColor="{Binding ElementName=CMYKThumbColorProp, Path=Text}"/> - <TextBlock Margin="0 50 0 0" HorizontalAlignment="Center" Background="LightGray" Foreground="Black" Width="400" FontSize="24" Height="Auto" MinHeight="40" FontWeight="DemiBold"> - <Run Text="RGB Color: " /> - <Run Text="{Binding ElementName=CmykPicker, Path=SelectedColor}"/> - </TextBlock> - </StackPanel> - </Grid> - </TabItem> + <touch:TouchPanel> + <touch:LightTouchScrollViewer> + <Border Width="500" Height="500" Margin="0 40 0 0"> + <Grid> + <aero:SystemDropShadowChrome CornerRadius="5" Color="Gray" Margin="-3"> + <aero:SystemDropShadowChrome.RenderTransform> + <TranslateTransform X="-5" Y="-5"></TranslateTransform> + </aero:SystemDropShadowChrome.RenderTransform> + </aero:SystemDropShadowChrome> + <Border BorderThickness="1" BorderBrush="Gray" Background="White" CornerRadius="5"> - <TabItem Header="LAB" Padding="5"> - <Grid> - <Grid.Background> - <SolidColorBrush Color="{Binding ElementName=LabPicker, Path=SelectedColor}"/> - </Grid.Background> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"></ColumnDefinition> - <ColumnDefinition Width="1*"></ColumnDefinition> - </Grid.ColumnDefinitions> - <StackPanel Grid.Column="0" Orientation="Vertical" Height="Auto" HorizontalAlignment="Center" Width="Auto" VerticalAlignment="Top" Margin="10 50 0 0"> - <StackPanel Orientation="Horizontal" Margin="0 10 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">L:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="LLabColor" Text="77" FontSize="22" Margin="2" ></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Height="Auto" HorizontalAlignment="Left" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">A:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="ALabColor" Text="89" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">B:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="BLabColor" Text="89" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap">Thumb height:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center"> - <TextBox x:Name="ThumbHeightProp" Text="16" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap" >Thumb color:</TextBlock> - <Border Width="90" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="ThumbColorProp" Text="#F4F4F4" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - </StackPanel> - <StackPanel Grid.Column="1" VerticalAlignment="Top" Orientation="Vertical" Margin="10 60 0 0"> - <colorpic:LabColorPicker x:Name="LabPicker" - L="{Binding ElementName=LLabColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - A="{Binding ElementName=ALabColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - B="{Binding ElementName=BLabColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - ThumbHeight="{Binding ElementName=ThumbHeightProp, Path=Text}" - ThumbColor="{Binding ElementName=ThumbColorProp, Path=Text}" - Width="400" Height="400" Background="White" Foreground="Black" BorderBrush="Gainsboro" BorderThickness="0.8" /> - <TextBlock Margin="0 50 0 0" HorizontalAlignment="Center" Background="LightGray" Foreground="Black" Width="400" FontSize="24" Height="Auto" MinHeight="40" FontWeight="DemiBold"> - <Run Text="RGB Color: " /> - <Run Text="{Binding ElementName=LabPicker, Path=SelectedColor}"/> - </TextBlock> - </StackPanel> - </Grid> - </TabItem> + </Border> + + <StackPanel> + <touch:TouchNumericTextBox HorizontalAlignment="Center" VerticalAlignment="Center" Width="200"></touch:TouchNumericTextBox> + <touch:TouchNumericTextBox Margin="0 40 0 0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200"></touch:TouchNumericTextBox> - <TabItem Header="LCH" Padding="5"> - <Grid > - <Grid.Background> - <SolidColorBrush Color="{Binding ElementName=LchPicker, Path=SelectedColor}"/> - </Grid.Background> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"></ColumnDefinition> - <ColumnDefinition Width="1*"></ColumnDefinition> - </Grid.ColumnDefinitions> - <StackPanel Grid.Column="0" Orientation="Vertical" Height="Auto" HorizontalAlignment="Center" Width="Auto" VerticalAlignment="Top" Margin="10 50 0 0"> - <StackPanel Orientation="Horizontal" Margin="0 10 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">L:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="LLCHColor" Text="54" FontSize="22" Margin="2" ></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Height="Auto" HorizontalAlignment="Left" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">C:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" VerticalAlignment="Center" Margin="20 0 0 0"> - <TextBox x:Name="CLCHColor" Text="55" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="24" VerticalAlignment="Center" FontWeight="DemiBold" Width="65">H:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="HLCHColor" Text="120" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap">Thumb height:</TextBlock> - <Border Width="80" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center"> - <TextBox x:Name="LCHThumbHeightProp" Text="16" FontSize="22" Margin="2"></TextBox> - </Border> - </StackPanel> - <StackPanel Orientation="Horizontal" Margin="0 30 0 0"> - <TextBlock FontSize="20" VerticalAlignment="Center" FontWeight="DemiBold" Width="65" TextWrapping="Wrap" >Thumb color:</TextBlock> - <Border Width="90" Background="White" CornerRadius="6" Margin="20 0 0 0" VerticalAlignment="Center" > - <TextBox x:Name="LCHThumbColorProp" Text="#F4F4F4" FontSize="22" Margin="2"></TextBox> - </Border> + <TextBox Margin="0 40 0 0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="40"></TextBox> + <TextBox Margin="0 40 0 0" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="40"></TextBox> </StackPanel> - </StackPanel> - <StackPanel Grid.Column="1" VerticalAlignment="Center" Orientation="Vertical"> - <colorpic:LchColorPicker x:Name="LchPicker" Width="400" Height="300" Background="White" Foreground="Black" BorderBrush="Gainsboro" BorderThickness="0.8" - L="{Binding ElementName=LLCHColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - C="{Binding ElementName=CLCHColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - H="{Binding ElementName=HLCHColor, Path=Text,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" - ThumbHeight="{Binding ElementName=LCHThumbHeightProp, Path=Text}" - ThumbColor="{Binding ElementName=LCHThumbColorProp, Path=Text}"/> - <TextBlock Margin="0 50 0 0" HorizontalAlignment="Center" Background="LightGray" Foreground="Black" Width="400" FontSize="24" Height="Auto" MinHeight="40" FontWeight="DemiBold"> - <Run Text="RGB Color: " /> - <Run Text="{Binding ElementName=LchPicker, Path=SelectedColor}"/> - </TextBlock> - </StackPanel> - </Grid> - </TabItem> - - </TabControl> - - - - - <!--<controls:MultiSelectComboBox Width="250" Height="60" Background="White" Foreground="Black" - x:Name="MSCombobox" - BorderBrush="Gainsboro" BorderThickness="0.8" - Items="{Binding Items}" - SelectedItemsList ="{Binding SelectedItems}"/>--> - - + </Grid> + </Border> + </touch:LightTouchScrollViewer> + </touch:TouchPanel> </Grid> </Window> diff --git a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml.cs b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml.cs index bf2db0084..6c24121ba 100644 --- a/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml.cs +++ b/Software/Visual_Studio/Utilities/Tango.UITests/MainWindow.xaml.cs @@ -20,6 +20,7 @@ using System.Windows.Shapes; using System.Windows.Threading; using Tango.BL; using Tango.BL.Builders; +using Tango.BL.Catalogs; using Tango.BL.Entities; using Tango.Core; using Tango.Core.Commands; @@ -38,8 +39,6 @@ using TableDependency.SqlClient.Base.EventArgs; using TableDependency.SqlClient.Base.Abstracts; using Tango.Core.Components; using System.Text.RegularExpressions; -using Tango.SharedUI.Controls; -using System.ComponentModel; namespace Tango.UITests { @@ -48,50 +47,106 @@ namespace Tango.UITests /// </summary> public partial class MainWindow : Window { - private ObservableCollection<object> _selectedItems; + //private ITableDependency _dep; - public ObservableCollection<object> SelectedItems + //private DataSource _dataSource; + + public MainWindow() { - get { return _selectedItems; } - set { _selectedItems = value; } - } + //_dataSource = new DataSource() + //{ + // Address = "twine.database.windows.net", + // Catalog = "Tango_DEV", + // Type = DataSourceType.SQLServer, + // UserName = "Roy", + // Password = "Aa123456", + // IntegratedSecurity = false, + //}; - private ObservableCollection<string> _items; - + //InitializeComponent(); + //EntityFrameworkCache.Initialize(new MyMemoryCache() { Expiration = TimeSpan.FromMinutes(1) }); - public ObservableCollection<string> Items - { - get { return _items; } - set { _items = value; } - } - public MainWindow() - { - SelectedItems = new ObservableCollection<object> - { - //new MultiSelectComboBoxItem("item1"), - //new MultiSelectComboBoxItem("item2"), - //new MultiSelectComboBoxItem("item3"), - //new MultiSelectComboBoxItem("item4"), - //new MultiSelectComboBoxItem("item5") + //this.Closing += MainWindow_Closing; + + //CmdCommand command = new CmdCommand("wmic", "pagefile list /format:list"); + //var result = command.Run().Result; + + //Regex regEx = new Regex("Name=(.+)"); + //var pageFiles = regEx.Matches(result.StandardOutput).OfType<Match>().Select(x => x.Groups.OfType<Group>().LastOrDefault()).ToList().Select(x => x.Value.Replace("\n", "").Replace("\r", "")).ToList(); - }; - Items = new ObservableCollection<string> - { - "item1", - "item2", - "item3", - "item4", - "item5", - "item6", - "item7", - "item8", - "item9", + + //var matches = matches.OfType<Match>().Select(x => x.Groups.OfType<Group>().Last().Value.Replace("\n","").Replace("\r","")).ToList(); - }; - InitializeComponent(); } + + //private void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e) + //{ + // //if (_dep != null) + // //{ + // // _dep.Stop(); + // // _dep.Dispose(); + // //} + //} + + + //private void btnStart_Click(object sender, RoutedEventArgs e) + //{ + // Stopwatch watch = Stopwatch.StartNew(); + + // using (ObservablesContext db = ObservablesContext.CreateDefault(_dataSource)) + // { + // var users = db.Users.ToList(); + // var jobs = new JobsCollectionBuilder(db).SetAll().WithSegments().WithBrushStops().Build(); + // var first_job = jobs.First(); + + // if (first_job.Name == "Changed Name 2") + // { + // Debug.WriteLine("Changed and cached !!!"); + // } + // else + // { + // Debug.WriteLine("Not working."); + // } + // } + + // Debug.WriteLine($"Time to complete: {watch.Elapsed.TotalSeconds} seconds"); + //} + + //private void btnChange_Click(object sender, RoutedEventArgs e) + //{ + // using (ObservablesContext db = ObservablesContext.CreateDefault(_dataSource)) + // { + // var jobs = new JobsCollectionBuilder(db).SetAll().WithSegments().WithBrushStops().Build(); + // var first_job = jobs.First(); + // first_job.Name = "Changed Name 2"; + // db.SaveChanges(); + // } + //} + + //private void btnListen_Click(object sender, RoutedEventArgs e) + //{ + // String str = _dataSource.ToConnection().ConnectionString; + + // var dep = new SqlTableDependency<DAL.Remote.DB.USER>(str, "USERS", "dbo"); + // dep.TraceLevel = TraceLevel.Verbose; + // dep.TraceListener = new TextWriterTraceListener(Console.Out); + + // dep.OnChanged += Changed; + // dep.Start(); + + // _dep = dep; + //} + + //private void Changed(object sender, RecordChangedEventArgs<DAL.Remote.DB.USER> e) + //{ + // var changedEntity = e.Entity; + + // Console.WriteLine("DML operation: " + e.ChangeType); + + // Console.WriteLine(changedEntity.ToJsonString()); + //} } } diff --git a/Software/Visual_Studio/Utilities/Tango.UITests/Tango.UITests.csproj b/Software/Visual_Studio/Utilities/Tango.UITests/Tango.UITests.csproj index 83dd699af..9ac2e3105 100644 --- a/Software/Visual_Studio/Utilities/Tango.UITests/Tango.UITests.csproj +++ b/Software/Visual_Studio/Utilities/Tango.UITests/Tango.UITests.csproj @@ -49,13 +49,6 @@ <Reference Include="MahApps.Metro, Version=1.5.0.23, Culture=neutral, PublicKeyToken=f4fb5a3c4d1e5b4f, processorArchitecture=MSIL"> <HintPath>..\..\packages\MahApps.Metro.1.5.0\lib\net45\MahApps.Metro.dll</HintPath> </Reference> - <Reference Include="MaterialDesignColors"> - <HintPath>..\..\packages\MaterialDesignColors.1.1.2\lib\net45\MaterialDesignColors.dll</HintPath> - </Reference> - <Reference Include="MaterialDesignThemes.Wpf, Version=2.3.1.953, Culture=neutral, processorArchitecture=MSIL"> - <SpecificVersion>False</SpecificVersion> - <HintPath>..\..\packages\MaterialDesignThemes.2.3.1.953\lib\net45\MaterialDesignThemes.Wpf.dll</HintPath> - </Reference> <Reference Include="PresentationFramework.Aero" /> <Reference Include="System" /> <Reference Include="System.ComponentModel.Annotations, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> @@ -143,10 +136,6 @@ <Project>{db79fb33-ce7a-49cf-aa89-f697e5cdb0f6}</Project> <Name>Tango.FirmwareUpdateLib</Name> </ProjectReference> - <ProjectReference Include="..\..\MachineStudio\Tango.MachineStudio.Common\Tango.MachineStudio.Common.csproj"> - <Project>{cb0b0aa2-bb24-4bca-a720-45e397684e12}</Project> - <Name>Tango.MachineStudio.Common</Name> - </ProjectReference> <ProjectReference Include="..\..\PPC\Tango.PPC.Common\Tango.PPC.Common.csproj"> <Project>{0be74eee-22cb-4dba-b896-793b9e1a3ac0}</Project> <Name>Tango.PPC.Common</Name> @@ -155,10 +144,6 @@ <Project>{F441FEEE-322A-4943-B566-110E12FD3B72}</Project> <Name>Tango.BL</Name> </ProjectReference> - <ProjectReference Include="..\..\Tango.ColorPickers\Tango.ColorPickers.csproj"> - <Project>{f9df9435-a4f3-43c5-a6cd-aad6689b42ae}</Project> - <Name>Tango.ColorPickers</Name> - </ProjectReference> <ProjectReference Include="..\..\Tango.Core\Tango.Core.csproj"> <Project>{A34EE0F0-649D-41C8-8489-B6F1CC6924EE}</Project> <Name>Tango.Core</Name> diff --git a/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Program.cs b/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Program.cs index 501058016..6bbcd1884 100644 --- a/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Program.cs +++ b/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Program.cs @@ -17,15 +17,10 @@ namespace Tango.WebClientGenerator static void Main(string[] args) { //Generate PPC client. - //GenerateWebClient<PPC.Common.Web.LoginRequest, PPC.Common.Web.LoginResponse, MachineService.Controllers.PPCController>("Tango.PPC.Common.Web", "PPCWebClientBase", PathHelper.GetSolutionFolder() + @"\PPC\Tango.PPC.Common\Web"); + GenerateWebClient<PPC.Common.Web.LoginRequest, PPC.Common.Web.LoginResponse, MachineService.Controllers.PPCController>("Tango.PPC.Common.Web", "PPCWebClientBase", PathHelper.GetSolutionFolder() + @"\PPC\Tango.PPC.Common\Web"); //Generate Machine Studio client. - //GenerateWebClient<MachineStudio.Common.Web.LoginRequest, MachineStudio.Common.Web.LoginResponse, MachineService.Controllers.MachineStudioController>("Tango.MachineStudio.Common.Web", "MachineStudioWebClientBase", PathHelper.GetSolutionFolder() + @"\MachineStudio\Tango.MachineStudio.Common\Web"); - - //Generate FSE client. - GenerateWebClientV2<FSE.Web.Messages.LoginRequest, FSE.Web.Messages.LoginResponse, MachineService.Controllers.FSEController>("Tango.FSE.BL.Web", "FSEWebClientBase", PathHelper.GetSolutionFolder() + @"\FSE\Tango.FSE.BL\Web"); - - Console.WriteLine("Done"); + GenerateWebClient<MachineStudio.Common.Web.LoginRequest, MachineStudio.Common.Web.LoginResponse, MachineService.Controllers.MachineStudioController>("Tango.MachineStudio.Common.Web", "MachineStudioWebClientBase", PathHelper.GetSolutionFolder() + @"\MachineStudio\Tango.MachineStudio.Common\Web"); } private static void GenerateWebClient<TLoginRequest, TLoginResponse, TController>(String nameSpace, String name, String path) where TLoginRequest : WebRequestMessage where TLoginResponse : WebTokenResponse where TController : TangoController @@ -50,28 +45,5 @@ namespace Tango.WebClientGenerator String code = model.GenerateCode(); File.WriteAllText(Path.Combine(path, name + ".cs"), code); } - - private static void GenerateWebClientV2<TLoginRequest, TLoginResponse, TController>(String nameSpace, String name, String path) where TLoginRequest : WebRequestMessage where TLoginResponse : WebTokenResponse where TController : TangoController - { - TangoWebClientv2CodeFile model = new TangoWebClientv2CodeFile(); - model.Namespace = nameSpace; - model.ControllerName = typeof(TController).Name.Replace("Controller", ""); - model.Name = name; - model.LoginRequest = typeof(TLoginRequest).FullName; - model.LoginResponse = typeof(TLoginResponse).FullName; - - foreach (var action in typeof(TController).GetMethods().Where(x => typeof(WebResponseMessage).IsAssignableFrom(x.ReturnType) && x.Name != "Login")) - { - model.Actions.Add(new TangoWebClientv2CodeFile.ControllerAction() - { - Name = action.Name, - Request = action.GetParameters()[0].ParameterType.FullName, - Response = action.ReturnType.FullName, - }); - } - - String code = model.GenerateCode(); - File.WriteAllText(Path.Combine(path, name + ".cs"), code); - } } } diff --git a/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Tango.WebClientGenerator.csproj b/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Tango.WebClientGenerator.csproj index e589db6be..da8738617 100644 --- a/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Tango.WebClientGenerator.csproj +++ b/Software/Visual_Studio/Utilities/Tango.WebClientGenerator/Tango.WebClientGenerator.csproj @@ -53,10 +53,6 @@ <None Include="packages.config" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\..\FSE\Tango.FSE.Web\Tango.FSE.Web.csproj"> - <Project>{d6f7d31d-7f8c-45e2-ae0a-fbbd1f5f9d5f}</Project> - <Name>Tango.FSE.Web</Name> - </ProjectReference> <ProjectReference Include="..\..\MachineStudio\Tango.MachineStudio.Common\Tango.MachineStudio.Common.csproj"> <Project>{cb0b0aa2-bb24-4bca-a720-45e397684e12}</Project> <Name>Tango.MachineStudio.Common</Name> |
