diff --git a/.gitignore b/.gitignore index 2f4f6977166a6b58011e26030e988d5b67ecb85b..0f4bd7bb9eb175ec9e68009448ae79a99b7038fd 100644 --- a/.gitignore +++ b/.gitignore @@ -213,3 +213,8 @@ Documentation/VehiclesReleaseComparisonDeclarationMode/tmp/ **/dev/*.vmod **/dev/*.vsum /VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/testVif.VIF_Report_5.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/final.VIF_Report_5.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test+.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/test.VIF_Report_5.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/tests.xml +/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/finalGroup41.VIF_Report_4.xml diff --git a/VECTO3GUI2020/App.config b/VECTO3GUI2020/App.config index 55c4aebced4c762c50554c2a2d6d987e30f2f4a8..0251970b1f2003f57f84b520df97729776920158 100644 --- a/VECTO3GUI2020/App.config +++ b/VECTO3GUI2020/App.config @@ -20,7 +20,22 @@ <value>False</value> </setting> <setting name="DefaultFilePath" serializeAs="String"> - <value>../../../VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration</value> + <value /> + </setting> + <setting name="WriteModalResults" serializeAs="String"> + <value>True</value> + </setting> + <setting name="ModalResults1Hz" serializeAs="String"> + <value>True</value> + </setting> + <setting name="Validate" serializeAs="String"> + <value>True</value> + </setting> + <setting name="ActualModalData" serializeAs="String"> + <value>True</value> + </setting> + <setting name="SerializeVectoRunData" serializeAs="String"> + <value>True</value> </setting> </VECTO3GUI2020.Properties.Settings> </userSettings> diff --git a/VECTO3GUI2020/App.xaml b/VECTO3GUI2020/App.xaml index b82b65b9f27c4520086b1634ee67f5893b6906a4..817f5f0b1b06102dfd0be81a55b244696f9a79d1 100644 --- a/VECTO3GUI2020/App.xaml +++ b/VECTO3GUI2020/App.xaml @@ -9,6 +9,7 @@ <!-- Add new ResourceDictionaries here--> <ResourceDictionary Source="Resources/ViewModelBindings.xaml"/> <ResourceDictionary Source="Resources/Converter.xaml"/> + <ResourceDictionary Source="Resources/MultistageParameterDataTemplates.xaml"/> <ResourceDictionary Source="Resources\Styles\ButtonStyles.xaml"/> <ResourceDictionary Source="Resources/Styles/GlobalStyles.xaml"/> <ResourceDictionary Source="Resources/Styles/Colors.xaml"/> diff --git a/VECTO3GUI2020/App.xaml.cs b/VECTO3GUI2020/App.xaml.cs index 6e8981f6a1197b223dcb1f7584750bb0766ce389..93284aafd7b2b9bd4f35035ddabcbd647880dcc9 100644 --- a/VECTO3GUI2020/App.xaml.cs +++ b/VECTO3GUI2020/App.xaml.cs @@ -1,4 +1,5 @@ -using System.Windows; +using System; +using System.Windows; using Ninject; using Ninject.Extensions.ChildKernel; using VECTO3GUI2020.ViewModel.Interfaces; @@ -10,7 +11,9 @@ using VECTO3GUI2020.Helper; using VECTO3GUI2020.Model.Implementation; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Ninject.Vehicle; +using VECTO3GUI2020.Properties; using VECTO3GUI2020.ViewModel; +using Application = System.Windows.Application; namespace VECTO3GUI2020 { @@ -22,6 +25,11 @@ namespace VECTO3GUI2020 protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); + + if (Settings.Default.DefaultFilePath == null) { + Settings.Default.DefaultFilePath = Environment.CurrentDirectory; + Settings.Default.Save(); + } ConfigureContainer(); ConfigureMainWindow(); @@ -51,6 +59,8 @@ namespace VECTO3GUI2020 container.Bind<IDialogHelper>().To<DialogHelper>().InSingletonScope(); container.Bind<IWindowHelper>().To<WindowHelper>(); + + } private void ConfigureMainWindow() diff --git a/VECTO3GUI2020/Helper/Converter/SIValueToStringConverter.cs b/VECTO3GUI2020/Helper/Converter/SIValueToStringConverter.cs index 7ed47de2dde5fcc675e1072cdb9be68f339cf7b1..09e36f3c9c29dbf03fb92988835d864ac0f4e612 100644 --- a/VECTO3GUI2020/Helper/Converter/SIValueToStringConverter.cs +++ b/VECTO3GUI2020/Helper/Converter/SIValueToStringConverter.cs @@ -14,11 +14,14 @@ namespace VECTO3GUI2020.Helper.Converter { private SI _si; private ConvertedSI _convertedSI; + private Type _sourceType; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value == null) { return value; } + + if(value is SI SIvalue) { _si = SIvalue; return SIvalue.ToGUIFormat(); @@ -35,21 +38,21 @@ namespace VECTO3GUI2020.Helper.Converter public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { try { - var hackedString = value as string; - hackedString = hackedString.Replace(",", "."); - //if (!hackedString.Contains(".")) { - // hackedString = hackedString + ".0"; - //} - var doubleVal = Double.Parse(hackedString, CultureInfo.InvariantCulture); - if (_convertedSI != null) { - return new ConvertedSI(doubleVal, _convertedSI.Units); - } - if (_si != null) - { - var newSi = SIUtils.CreateSIValue(_si.GetType(), doubleVal); - return newSi; - } + if (_si != null || _convertedSI != null) { + var hackedString = value as string; + hackedString = hackedString.Replace(",", "."); + var doubleVal = Double.Parse(hackedString, CultureInfo.InvariantCulture); + if (_convertedSI != null) + { + return new ConvertedSI(doubleVal, _convertedSI.Units); + } + if (_si != null) + { + var newSi = SIUtils.CreateSIValue(_si.GetType(), doubleVal); + return newSi; + } + } } catch (Exception e) { return value; diff --git a/VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs b/VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs new file mode 100644 index 0000000000000000000000000000000000000000..74a73b23bee97dada9d9e9a539a7fd19e34e380b --- /dev/null +++ b/VECTO3GUI2020/Helper/MultistageParameterDataTemplateSelector.cs @@ -0,0 +1,52 @@ +using System; +using System.Windows; +using System.Windows.Controls; +using TUGraz.VectoCommon.Exceptions; +using VECTO3GUI2020.Views.Multistage.CustomControls; + +namespace VECTO3GUI2020.Helper +{ + public class MultistageParameterDataTemplateSelector : DataTemplateSelector + { + #region Overrides of DataTemplateSelector + + public override DataTemplate SelectTemplate(object item, DependencyObject container) + { + FrameworkElement element = container as FrameworkElement; + MultistageParameterViewModel vm = item as MultistageParameterViewModel; + + if (element != null && item != null && vm != null) { + + FrameworkElementFactory factory = null; + Type type = null; + switch (vm.Mode) { + case (ViewMode.TEXTBOX): + type = typeof(MultistageParameterTextView); + break; + case (ViewMode.CHECKBOX): + type = typeof(MultistageParameterCheckBoxView); + break; + case (ViewMode.COMBOBOX): + type = typeof(MultistageParameterComboBoxView); + break; + default: + throw new VectoException("Unknown MultistageParameterType"); + break; + } + factory = new FrameworkElementFactory(type); + DataTemplate dt = new DataTemplate(); + dt.VisualTree = factory; + return dt; + + + } + + + + + return base.SelectTemplate(item, container); + } + + #endregion + } +} \ No newline at end of file diff --git a/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs b/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs new file mode 100644 index 0000000000000000000000000000000000000000..fa03484145912ab97cca5e7f726dfe160aa49ad3 --- /dev/null +++ b/VECTO3GUI2020/Helper/MultistageParameterViewModel.cs @@ -0,0 +1,354 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Net.Mime; +using System.Reflection; +using System.Resources; +using System.Runtime.InteropServices; +using System.Windows; +using System.Windows.Controls; +using Castle.Core.Internal; +using Castle.DynamicProxy.Internal; +using TUGraz.VectoCommon.Exceptions; +using TUGraz.VectoCommon.Utils; +using VECTO3GUI2020.Annotations; +using VECTO3GUI2020.ViewModel.Implementation.Common; +using VECTO3GUI2020.ViewModel.Interfaces.Common; +using VECTO3GUI2020.Views.Multistage.CustomControls; + +namespace VECTO3GUI2020.Helper +{ + public enum ViewMode + { + COMBOBOX, + TEXTBOX, + CHECKBOX + } + + + + public class MultistageParameterViewModel : ViewModelBase, IDataErrorInfo + { + private bool _editingEnabled; + private object _currentContent; + private object _dummyContent; + private bool _mandatory; + private object _storedContent; + private string _label; + private ObservableCollection<Enum> _allowedItems; + private ObservableCollection<Enum> _generatedItems; + + private readonly Action<MultistageParameterViewModel> _propertyChangedCallback; + private Action<MultistageParameterViewModel> _editingChangedCallback; + private readonly PropertyInfo _propertyInfo; + private readonly IViewModelBase _parentViewModel; + private ViewMode _viewMode; + private object _previousContent; + private bool _showCheckBox; + + private Type _type; + + private Type _underlyingTargetType; + private readonly string _propertyName; + + public MultistageParameterViewModel ( + string propertyName, + object previousContent, + IViewModelBase parentViewModel, + ViewMode viewMode = ViewMode.TEXTBOX, + object dummyContent = null, + bool mandatory = false, + Action<MultistageParameterViewModel> propertyChangedCallback = null, + params ResourceManager[] resourceManagers) + { + _propertyName = propertyName; + PreviousContent = previousContent; + _propertyChangedCallback = propertyChangedCallback; + _parentViewModel = parentViewModel; + _propertyInfo = parentViewModel.GetType().GetProperty(propertyName); + + _viewMode = viewMode; + _dummyContent = dummyContent; + _mandatory = mandatory; + _type = _propertyInfo.PropertyType; + _label = NameResolver.ResolveName(propertyName, resourceManagers); + + if (dummyContent == null) { + DummyContent = CreateDummyContent(); + } + + + if (Mode == ViewMode.COMBOBOX) { + if (DummyContent is Enum dummyEnum) + { + var enType = dummyEnum.GetType(); + //GeneratedListItems = new ObservableCollection<typeof(enType)>(Enum.GetValues(enType).Cast<T>().ToList()); + GeneratedListItems = new ObservableCollection<Enum>(Enum.GetValues(enType).Cast<Enum>().ToList()); + } + else if (CurrentContent is Enum contentEnum) + { + var enType = contentEnum.GetType(); + //GeneratedListItems = new ObservableCollection<T>(Enum.GetValues(enType).Cast<T>().ToList()); + GeneratedListItems = new ObservableCollection<Enum>(Enum.GetValues(enType).Cast<Enum>().ToList()); + } + } + + CurrentContent = _propertyInfo.GetValue(parentViewModel); + } + + private object CreateDummyContent() + { + var type = _type; + + + try + { + //dynamic dynType = type; + + var baseType = type.BaseType; + //Create SI Dummy + if (baseType?.BaseType != null && baseType.BaseType == typeof(SI)) { + var createMethod = baseType.GetMethod("Create"); + var dummyContent = createMethod?.Invoke(null, new object[] { (new double()) }); + return dummyContent; + } + + var underlyingType = Nullable.GetUnderlyingType(type); + if (underlyingType == typeof(bool)) { + _viewMode = ViewMode.CHECKBOX; + var dummyContent = false; + return dummyContent; + } + + + + + if (type.IsEnum || (underlyingType != null && underlyingType.IsEnum)) { + _viewMode = ViewMode.COMBOBOX; + } + + if (Mode == ViewMode.COMBOBOX) { + Enum dummyEnum; + + try + { + if (underlyingType != null) + { + dummyEnum = (Enum)Enum.Parse(underlyingType, underlyingType.GetEnumNames()[0]); + } + else + { + dummyEnum = (Enum)Enum.Parse(type, type.GetEnumNames()[0]); + } + } + catch (Exception ex) + { + Debug.WriteLine(ex.Message); + return null; + } + return dummyEnum; + } + + Type primitiveType = null; + + if (underlyingType != null && underlyingType.IsValueType) { + primitiveType = underlyingType; + } else if (type.IsValueType) { + primitiveType = type; + } + + + if (primitiveType != null) { + var dummyContent = Convert.ChangeType(0, primitiveType); + return dummyContent; + } + + + + + } + catch (Exception ex) + { + Debug.WriteLine(ex.Message); + return null; + } + + return null; + } + + + + public bool EditingEnabled + { + get => _editingEnabled; + set + { + var old_value = _editingEnabled; + var new_value = value; + _editingEnabled = value; + if (old_value != new_value){ + _editingChangedCallback?.Invoke(this); + if (new_value == false) + { + if (StoredContent != null) { + StoredContent = CurrentContent; + } + CurrentContent = null; + OnPropertyChanged(nameof(CurrentContent)); + } + else + { + if (StoredContent != null) { + CurrentContent = StoredContent; + } else { + if (Mode == ViewMode.TEXTBOX) { + CurrentContent = DummyContent; + } + } + OnPropertyChanged(nameof(CurrentContent)); + } + + } + + OnPropertyChanged(nameof(EditingEnabled)); + } + } + + public object CurrentContent + { + get => _currentContent; + set + { + if (value != null) { + EditingEnabled = true; + } + + var convertedValue = value; + + + //Convert value if neccessary + if (value != null) { + if (DummyContent != null) { + convertedValue = Convert.ChangeType(value, DummyContent.GetType()); + } + } + + + + if (SetProperty(ref _currentContent, convertedValue)) { + _propertyInfo.SetValue(_parentViewModel, _currentContent); + _propertyChangedCallback?.Invoke(this); + }; + + } + } + + public object DummyContent + { + get => _dummyContent; + set + { + //_propertyChangedCallback?.Invoke(this); + SetProperty(ref _dummyContent, value); + } + } + + public object StoredContent + { + get => _storedContent; + set + { + //_propertyChangedCallback.Invoke(this); + SetProperty(ref _storedContent, value); + } + } + + public string Label + { + get => _label; + set + { + _propertyChangedCallback?.Invoke(this); + SetProperty(ref _label, value); + } + } + + public ObservableCollection<Enum> AllowedItems + { + get => _allowedItems; + set + { + //_propertyChangedCallback?.Invoke(this); + SetProperty(ref _allowedItems, value); + } + } + + public ViewMode Mode => _viewMode; + + public ObservableCollection<Enum> GeneratedListItems + { + get => _generatedItems; + set => SetProperty(ref _generatedItems, value); + } + + public bool Mandatory + { + get + { + return _mandatory; + } + set + { + if (SetProperty(ref _mandatory, value)) { + OnPropertyChanged(nameof(ShowCheckBox)); + EditingEnabled = true; + }; + + } + } + + public object PreviousContent + { + get => _previousContent; + set => SetProperty(ref _previousContent, value); + } + + public bool ShowCheckBox + { + get => !_mandatory; + } + + public bool Optional + { + get => !_mandatory; + } + + #region Implementation of IDataErrorInfo + + public string this[string columnName] + { + get + { + var dataErrorinfo = _parentViewModel as IDataErrorInfo; + if (dataErrorinfo == null) { + return null; + } + + return dataErrorinfo[_propertyName]; + } + } + + public string Error => throw new NotImplementedException(); + + public Action<MultistageParameterViewModel> EditingChangedCallback + { + get => _editingChangedCallback; + set => _editingChangedCallback = value; + } + + #endregion + } +} \ No newline at end of file diff --git a/VECTO3GUI2020/Helper/NameResolver.cs b/VECTO3GUI2020/Helper/NameResolver.cs new file mode 100644 index 0000000000000000000000000000000000000000..022c954acad0c2257c9241babb061c9c2d3a4247 --- /dev/null +++ b/VECTO3GUI2020/Helper/NameResolver.cs @@ -0,0 +1,24 @@ +using System.Resources; +using Castle.Core.Internal; + +namespace VECTO3GUI2020.Helper +{ + public class NameResolver + { + public static string ResolveName(string propertyName, params ResourceManager[] resourceManagers) + { + foreach (var resourceManager in resourceManagers) + { + var resolvedName = resourceManager?.GetString(propertyName); + if (!resolvedName.IsNullOrEmpty()) + { + return resolvedName; + break; + } + } + + + return propertyName + "*"; + } + } +} \ No newline at end of file diff --git a/VECTO3GUI2020/MainWindow.xaml b/VECTO3GUI2020/MainWindow.xaml index 842bfa24aed0b4a9a5633d020a9ececf2031e69d..73a0a4efb0ecca551477ec3772aa586d54540eff 100644 --- a/VECTO3GUI2020/MainWindow.xaml +++ b/VECTO3GUI2020/MainWindow.xaml @@ -8,7 +8,8 @@ mc:Ignorable="d" Title="Vecto" Height="450" Width="820" WindowStartupLocation="CenterScreen" - AutomationProperties.Name="MainWindow"> + AutomationProperties.Name="=" + x:Name="MainView"> @@ -24,8 +25,8 @@ </Grid.RowDefinitions> <StackPanel Grid.Row="0" Orientation="Vertical"> - <Menu x:Name="menu" IsMainMenu="True"> - <MenuItem Header="File" VerticalAlignment="Stretch"> + <Menu x:Name="menu" AutomationProperties.Name="-" AutomationProperties.AutomationId="Test" IsMainMenu="True"> + <MenuItem Header="File" x:Name="MenuItemFile" AutomationProperties.Name="=" VerticalAlignment="Stretch"> <MenuItem Header="Settings" Command="{Binding OpenSettings}"/> <MenuItem Header="New File" Command="{Binding NewInterimFile}"/> <MenuItem Header="Open File" Command="{Binding AddJob}"/> diff --git a/VECTO3GUI2020/Properties/Settings.Designer.cs b/VECTO3GUI2020/Properties/Settings.Designer.cs index 9fa1af07057ef049e7720344f04432358d7cdf46..3bc037f81a86feca40ba4c55e737b1d9b27dfad0 100644 --- a/VECTO3GUI2020/Properties/Settings.Designer.cs +++ b/VECTO3GUI2020/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace VECTO3GUI2020.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.7.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -37,7 +37,7 @@ namespace VECTO3GUI2020.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("../../../VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration")] + [global::System.Configuration.DefaultSettingValueAttribute("")] public string DefaultFilePath { get { return ((string)(this["DefaultFilePath"])); @@ -46,5 +46,65 @@ namespace VECTO3GUI2020.Properties { this["DefaultFilePath"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool WriteModalResults { + get { + return ((bool)(this["WriteModalResults"])); + } + set { + this["WriteModalResults"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool ModalResults1Hz { + get { + return ((bool)(this["ModalResults1Hz"])); + } + set { + this["ModalResults1Hz"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool Validate { + get { + return ((bool)(this["Validate"])); + } + set { + this["Validate"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool ActualModalData { + get { + return ((bool)(this["ActualModalData"])); + } + set { + this["ActualModalData"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool SerializeVectoRunData { + get { + return ((bool)(this["SerializeVectoRunData"])); + } + set { + this["SerializeVectoRunData"] = value; + } + } } } diff --git a/VECTO3GUI2020/Properties/Settings.settings b/VECTO3GUI2020/Properties/Settings.settings index c23c4354162c1e922580b7254f21b4de0167650d..2df355f46b83587c3384a61d670b4bfbc489731c 100644 --- a/VECTO3GUI2020/Properties/Settings.settings +++ b/VECTO3GUI2020/Properties/Settings.settings @@ -6,7 +6,22 @@ <Value Profile="(Default)">False</Value> </Setting> <Setting Name="DefaultFilePath" Type="System.String" Scope="User"> - <Value Profile="(Default)">../../../VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration</Value> + <Value Profile="(Default)" /> + </Setting> + <Setting Name="WriteModalResults" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> + </Setting> + <Setting Name="ModalResults1Hz" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> + </Setting> + <Setting Name="Validate" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> + </Setting> + <Setting Name="ActualModalData" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> + </Setting> + <Setting Name="SerializeVectoRunData" Type="System.Boolean" Scope="User"> + <Value Profile="(Default)">True</Value> </Setting> </Settings> </SettingsFile> \ No newline at end of file diff --git a/VECTO3GUI2020/Resources/Converter.xaml b/VECTO3GUI2020/Resources/Converter.xaml index 64ee2552e563fc1f46a041810268dca58ea3f03f..ee924cdf0baa31fbe9a8b27f15c5c77b939709f5 100644 --- a/VECTO3GUI2020/Resources/Converter.xaml +++ b/VECTO3GUI2020/Resources/Converter.xaml @@ -1,6 +1,7 @@ <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" - xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter"> + xmlns:converter="clr-namespace:VECTO3GUI2020.Helper.Converter" + xmlns:helper="clr-namespace:VECTO3GUI2020.Helper"> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> <converter:SIToUnitString x:Shared="False" x:Key="SIToUnitStringConverter"/> @@ -16,5 +17,8 @@ <converter:EnumConverter x:Key="EnumConverter"></converter:EnumConverter> <converter:NullToUnsetValueConverter x:Key="NullToUnsetValue"></converter:NullToUnsetValueConverter> <converter:BoolToIntConverter x:Key="BoolToIntConverter"></converter:BoolToIntConverter> + + + </ResourceDictionary> diff --git a/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml b/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml new file mode 100644 index 0000000000000000000000000000000000000000..f3499fc795fdb1f56bf70c50d1759cc676333396 --- /dev/null +++ b/VECTO3GUI2020/Resources/MultistageParameterDataTemplates.xaml @@ -0,0 +1,10 @@ +<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" + xmlns:helper="clr-namespace:VECTO3GUI2020.Helper"> + + <helper:MultistageParameterDataTemplateSelector x:Key="MultistageParameterTemplateSelector"/> + <customControls:MultistageParameterTextView x:Key="MultistageTextBoxView"/> + <customControls:MultistageParameterComboBoxView x:Key="MultistageComboBoxView"/> + +</ResourceDictionary> \ No newline at end of file diff --git a/VECTO3GUI2020/VECTO3GUI2020.csproj b/VECTO3GUI2020/VECTO3GUI2020.csproj index 77bb4842dbfdf80cb6b0cf130b4de6478d49e462..adba1d390fb12b3c631e4fb029cb722db63531a0 100644 --- a/VECTO3GUI2020/VECTO3GUI2020.csproj +++ b/VECTO3GUI2020/VECTO3GUI2020.csproj @@ -162,7 +162,10 @@ <Compile Include="Helper\IndexedStorage.cs" /> <Compile Include="Helper\IWindowHelper.cs" /> <Compile Include="Helper\DialogHelper.cs" /> + <Compile Include="Helper\MultistageParameterDataTemplateSelector.cs" /> + <Compile Include="Helper\MultistageParameterViewModel.cs" /> <Compile Include="Helper\NameOfMarkUpExtension.cs" /> + <Compile Include="Helper\NameResolver.cs" /> <Compile Include="Helper\WindowHelper.cs" /> <Compile Include="Helper\XMLExtension.cs" /> <Compile Include="Helper\XmlHelper.cs" /> @@ -399,6 +402,15 @@ <Compile Include="Views\Multistage\CustomControls\MultiStageParameter.xaml.cs"> <DependentUpon>MultiStageParameter.xaml</DependentUpon> </Compile> + <Compile Include="Views\Multistage\CustomControls\MultistageParameterCheckBoxView.xaml.cs"> + <DependentUpon>MultistageParameterCheckBoxView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\Multistage\CustomControls\MultistageParameterComboBoxView.xaml.cs"> + <DependentUpon>MultistageParameterComboBoxView.xaml</DependentUpon> + </Compile> + <Compile Include="Views\Multistage\CustomControls\MultistageParameterTextView.xaml.cs"> + <DependentUpon>MultistageParameterTextView.xaml</DependentUpon> + </Compile> <Compile Include="Views\Multistage\ManufacturingStageAuxiliariesView.xaml.cs"> <DependentUpon>ManufacturingStageAuxiliariesView.xaml</DependentUpon> </Compile> @@ -441,6 +453,10 @@ <Generator>MSBuild:Compile</Generator> <SubType>Designer</SubType> </Page> + <Page Include="Resources\MultistageParameterDataTemplates.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="Resources\ObjectProvider.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> @@ -620,6 +636,18 @@ <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> </Page> + <Page Include="Views\Multistage\CustomControls\MultistageParameterCheckBoxView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Views\Multistage\CustomControls\MultistageParameterComboBoxView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> + <Page Include="Views\Multistage\CustomControls\MultistageParameterTextView.xaml"> + <SubType>Designer</SubType> + <Generator>MSBuild:Compile</Generator> + </Page> <Page Include="Views\Multistage\ManufacturingStageAuxiliariesView.xaml"> <SubType>Designer</SubType> <Generator>MSBuild:Compile</Generator> diff --git a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs index 02fa7b5a68fa649b879d4cd27e2ef14c0bc40ee7..53ef91bd260fc2da3d2bacc250b0b840c0325c4b 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/JobListViewModel.cs @@ -11,6 +11,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Data; +using System.Windows.Forms; using System.Windows.Input; using System.Xml; using System.Xml.Linq; @@ -25,6 +26,8 @@ using TUGraz.VectoCore; using TUGraz.VectoCore.Configuration; using TUGraz.VectoCore.InputData.FileIO.JSON; using TUGraz.VectoCore.InputData.FileIO.XML; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Interfaces; using TUGraz.VectoCore.InputData.Impl; using TUGraz.VectoCore.Models.Simulation.Impl; using TUGraz.VectoCore.OutputData; @@ -164,13 +167,15 @@ namespace VECTO3GUI2020.ViewModel.Implementation private async Task RunSimulationAsync(CancellationToken ct, IProgress<MessageEntry> outputMessages, IProgress<int> progress) { progress.Report(0); - for (int i = 0; i <= 100; i++) { - await Task.Delay(0); - progress.Report(i); - if (ct.IsCancellationRequested) { - return; - } - } + //for (int i = 0; i <= 100; i++) { + // await Task.Delay(100); + // progress.Report(i); + // if (ct.IsCancellationRequested) { + // return; + // } + //} + + IDocumentViewModel[] jobs; lock (_jobsLock) { @@ -186,6 +191,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation //TODO add output path to settings var outputPath = Settings.Default.DefaultFilePath; + var sumFileWriter = new FileOutputWriter(outputPath); @@ -231,34 +237,46 @@ namespace VECTO3GUI2020.ViewModel.Implementation var extension = Path.GetExtension(jobEntry.DataSource.SourceFile); IInputDataProvider input = null; - switch (extension) - { + IXMLMultistageInputDataProvider multistageInput = null; + + var FileWriter = new FileOutputWriter(fullFileName); + switch (extension) { case Constants.FileExtensions.VectoJobFile: input = JSONInputDataFactory.ReadJsonJob(fullFileName); var tmp = input as IDeclarationInputDataProvider; - mode = tmp?.JobInputData.SavedInDeclarationMode ?? false ? ExecutionMode.Declaration : ExecutionMode.Engineering; + mode = tmp?.JobInputData.SavedInDeclarationMode ?? false + ? ExecutionMode.Declaration + : ExecutionMode.Engineering; break; case ".xml": var xdoc = XDocument.Load(fullFileName); var rootNode = xdoc.Root?.Name.LocalName ?? ""; - if (XMLNames.VectoInputEngineering.Equals(rootNode, StringComparison.InvariantCultureIgnoreCase)) - { + if (XMLNames.VectoInputEngineering.Equals(rootNode, + StringComparison.InvariantCultureIgnoreCase)) { input = xmlReader.CreateEngineering(fullFileName); mode = ExecutionMode.Engineering; - } - else if (XMLNames.VectoInputDeclaration.Equals(rootNode, StringComparison.InvariantCultureIgnoreCase) - || XMLNames.VectoOutputMultistage.Equals(rootNode, StringComparison.InvariantCultureIgnoreCase)) - { - using (var reader = XmlReader.Create(fullFileName)) - { + } else if (XMLNames.VectoInputDeclaration.Equals(rootNode, + StringComparison.InvariantCultureIgnoreCase)) { + using (var reader = XmlReader.Create(fullFileName)) { input = xmlReader.CreateDeclaration(reader); } + + mode = ExecutionMode.Declaration; + } else if (XMLNames.VectoOutputMultistage.Equals(rootNode, + StringComparison.InvariantCultureIgnoreCase)) { + using (var reader = XmlReader.Create(fullFileName)) { + input = new XMLDeclarationVIFInputData(xmlReader.Create(fullFileName) as IMultistageBusInputDataProvider, null); + FileWriter = new FileOutputVIFWriter(fullFileName, + (jobEntry as MultiStageJobViewModel_v0_1).ManufacturingStages?.Count ?? 0); + } + mode = ExecutionMode.Declaration; } + break; } - if (input == null) + if (input == null && multistageInput == null) { outputMessages.Report( new MessageEntry() @@ -272,11 +290,11 @@ namespace VECTO3GUI2020.ViewModel.Implementation var fileWriter = new FileOutputWriter(GetOutputDirectory(fullFileName)); var runsFactory = new SimulatorFactory(mode, input, fileWriter) { - WriteModalResults = true, - ModalResults1Hz = true, - Validate = true, - ActualModalData = true, - SerializeVectoRunData = true + WriteModalResults = Settings.Default.WriteModalResults, + ModalResults1Hz = Settings.Default.ModalResults1Hz, + Validate = Settings.Default.Validate, + ActualModalData = Settings.Default.ActualModalData, + SerializeVectoRunData = Settings.Default.SerializeVectoRunData, }; foreach (var runId in jobContainer.AddRuns(runsFactory)) @@ -320,7 +338,113 @@ namespace VECTO3GUI2020.ViewModel.Implementation }); } } + foreach (var cycle in jobContainer.GetCycleTypes()) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, Message = $"Detected cycle {cycle.Name}: {cycle.CycleType}" + }); + } + + outputMessages.Report(new MessageEntry() { + Type = MessageType.StatusMessage, + Message = $"Starting simulation ({jobs.Length} jobs, {jobContainer.GetProgress().Count} runs)", + }); + + var start = Stopwatch.StartNew(); + jobContainer.Execute(true); + while (!jobContainer.AllCompleted) + { + if (ct.IsCancellationRequested) + { + jobContainer.Cancel(); + return; + } + + var jobProgress = jobContainer.GetProgress(); + var sumProgress = jobProgress.Sum(x => x.Value.Progress); + var duration = start.Elapsed.TotalSeconds; + + progress.Report(Convert.ToInt32(sumProgress * 100 / jobProgress.Count)); + //outputMessages.Report( + // new MessageEntry() + // { + // Type = VectoSimulationProgress.MsgType.Progress, + // Message = string.Format( + // "Duration: {0:F1}s, Curernt Progress: {1:P} ({2})", duration, sumProgress / progress.Count, + // string.Join(", ", progress.Select(x => string.Format("{0,4:P}", x.Value.Progress)))) + // }); + var justFinished = jobProgress.Where(x => x.Value.Done & !finishedRuns.Contains(x.Key)) + .ToDictionary(x => x.Key, x => x.Value); + //PrintRuns(justFinished, fileWriters); + finishedRuns.AddRange(justFinished.Select(x => x.Key)); + await Task.Delay(100); + } + start.Stop(); + + var remainingRuns = jobContainer.GetProgress().Where(x => x.Value.Done && !finishedRuns.Contains(x.Key)) + .ToDictionary(x => x.Key, x => x.Value); + //PrintRuns(remainingRuns, fileWriters); + + finishedRuns.Clear(); + fileWriters.Clear(); + foreach (var progressEntry in jobContainer.GetProgress()) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = + string.Format("{0,-60} {1,8:P} {2,10:F2}s - {3}", + $"{progressEntry.Value.RunName} {progressEntry.Value.CycleName} {progressEntry.Value.RunSuffix}", + progressEntry.Value.Progress, + progressEntry.Value.ExecTime / 1000.0, + progressEntry.Value.Success ? "Success" : "Aborted") + }); + if (!progressEntry.Value.Success) + { + outputMessages.Report( + new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = progressEntry.Value.Error.Message + } + ); + } + } + foreach (var jobEntry in jobs) + { + var w = new FileOutputWriter(GetOutputDirectory(jobEntry.DataSource.SourceFile)); + foreach (var entry in new Dictionary<string, string>() { { w.XMLFullReportName, "XML ManufacturereReport" }, { w.XMLCustomerReportName, "XML Customer Report" }, { w.XMLVTPReportName, "VTP Report" }, { w.XMLPrimaryVehicleReportName, "Primary Vehicle Information File" } }) + { + if (File.Exists(entry.Key)) + { + outputMessages.Report( + new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format( + "{2} for '{0}' written to {1}", Path.GetFileName(jobEntry.DataSource.SourceFile), entry.Key, entry.Value), + //Link = "<XML>" + entry.Key + }); + } + } + } + + if (File.Exists(sumFileWriter.SumFileName)) + { + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format("Sum file written to {0}", sumFileWriter.SumFileName), + //Link = "<CSV>" + sumFileWriter.SumFileName + }); + } + outputMessages.Report(new MessageEntry() + { + Type = MessageType.StatusMessage, + Message = string.Format("Simulation finished in {0:F1}s", start.Elapsed.TotalSeconds) + }); } diff --git a/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs b/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs index cb78c24f3d5bb74fdc641e058eb19d690329b7e3..af0ed0fcac68caf3bbfef1c8b134bc840c0b3562 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/MessageEntry.cs @@ -17,7 +17,7 @@ namespace VECTO3GUI2020.ViewModel.Implementation private string _message; - private DateTime _time = DateTime.Today; + private DateTime _time = DateTime.Now; private string _source; private MessageType _type; diff --git a/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs b/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs index 7e8ab4110f9dec686f51c379eb12af086a1df8c0..7b25852acf3f4f95f6ff09a89df4c1e8afd67061 100644 --- a/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs +++ b/VECTO3GUI2020/ViewModel/Implementation/SettingsViewModel.cs @@ -1,6 +1,7 @@ using System; using System.Diagnostics; using System.IO; +using System.Windows; using System.Windows.Forms; using System.Windows.Input; using VECTO3GUI2020.Helper; @@ -22,7 +23,13 @@ namespace VECTO3GUI2020.ViewModel.Implementation private String _defaultFilePath; - public String DefaultFilePath + private bool _writeModalResults; + private bool _modalResults1Hz; + private bool _validate; + private bool _actualModalData; + private bool _serializeVectoRunData; + + public String DefaultFilePath { get => _defaultFilePath; set @@ -32,16 +39,41 @@ namespace VECTO3GUI2020.ViewModel.Implementation SetProperty(ref _defaultFilePath, value, "DefaultFilePath"); } } - public SettingsViewModel(IDialogHelper dialogHelper) + + + + public SettingsViewModel(IDialogHelper dialogHelper) { base.Title = "Settings"; _settings = Settings.Default; _defaultFilePath = _settings.DefaultFilePath; + _writeModalResults = _settings.WriteModalResults; + _modalResults1Hz = _settings.ModalResults1Hz; + _validate = _settings.Validate; + _actualModalData = _settings.ActualModalData; + _serializeVectoRunData = _settings.SerializeVectoRunData; _dialogHelper = dialogHelper; } + private ICommand _closeWindowCommand; + public ICommand CloseWindowCommand + { + get + { + return _closeWindowCommand ?? new RelayCommand<Window>(window => CloseWindow(window, _dialogHelper), window => true); + } + } + + private void CloseWindow(Window window, bool ask) + { + + } + + + + - public ICommand ChangeFilePath + public ICommand ChangeFilePath { get { @@ -69,6 +101,71 @@ namespace VECTO3GUI2020.ViewModel.Implementation } } + public bool SerializeVectoRunData + { + get => _serializeVectoRunData; + set + { + if (SetProperty(ref _serializeVectoRunData, value)) { + _settings.SerializeVectoRunData = value; + _settings.Save(); + } + } + } - } + public bool ActualModalData + { + get => _actualModalData; + set + { + if (SetProperty(ref _actualModalData, value)) { + _settings.ActualModalData = value; + _settings.Save(); + + } + } + } + + public bool Validate + { + get => _validate; + set + { + if (SetProperty(ref _validate, value)) + { + _settings.Validate = value; + _settings.Save(); + + } + } + } + + public bool ModalResults1Hz + { + get => _modalResults1Hz; + set + { + if (SetProperty(ref _modalResults1Hz, value)) + { + _settings.ModalResults1Hz = value; + _settings.Save(); + + } + } + } + + public bool WriteModalResults + { + get => _writeModalResults; + set + { + if (SetProperty(ref _writeModalResults, value)) + { + _settings.WriteModalResults = value; + _settings.Save(); + + } + } + } + } } diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs index f139399557404b86ca8d9d4a89e1ff91c8812868..06c55f3cf12db2a3967d15b3ed6d232a7ff3fbed 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/InterimStageBusVehicleViewModel_v2_8.cs @@ -3,7 +3,9 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Configuration; +using System.Diagnostics; using System.Linq; +using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices.WindowsRuntime; using System.Text; @@ -16,6 +18,7 @@ using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.DataProvider; +using TUGraz.VectoCore.Models.Declaration; using VECTO3GUI2020.Helper; using VECTO3GUI2020.Ninject; using VECTO3GUI2020.Properties; @@ -24,6 +27,7 @@ using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle; using VECTO3GUI2020.ViewModel.Interfaces.JobEdit.Vehicle.Components; using VECTO3GUI2020.ViewModel.MultiStage.Implementation; using VECTO3GUI2020.ViewModel.MultiStage.Interfaces; +using VECTO3GUI2020.Views.Multistage.CustomControls; using Convert = System.Convert; using EnumHelper = VECTO3GUI2020.Helper.EnumHelper; @@ -31,7 +35,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { public enum AIRDRAGMODIFIED { - [GuiLabel("Unknown")] + [GuiLabel("")] UNKNOWN = 0, [GuiLabel("True")] TRUE = 1, @@ -109,6 +113,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } + private Dictionary<string, MultistageParameterViewModel> _parameterViewModels; + public Dictionary<string, MultistageParameterViewModel> ParameterViewModels + { + get => _parameterViewModels; + set => _parameterViewModels = value; + } + #endregion public static readonly string INPUTPROVIDERTYPE = @@ -139,16 +150,154 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation MultistageAuxiliariesViewModel = _multiStageViewModelFactory.GetAuxiliariesViewModel(consolidatedVehicleData?.Components? .BusAuxiliaries); - AirdragModifiedMultistageEditingEnabled = false; + _airdragModifiedEditingEnabled = false; _editingEnabledDictionary = new IndexedStorage<bool>((identifier) => { OnPropertyChanged(identifier); OnPropertyChanged(nameof(EditingEnabledDictionary)); - }); + + + _parameterViewModels = new Dictionary<string, MultistageParameterViewModel>(); + var properties = this.GetType().GetProperties(); + var backedUpParameters = new HashSet<string>() { + nameof(Manufacturer), + nameof(ManufacturerAddress), + nameof(VIN), + nameof(Model), + nameof(LegislativeClass), + nameof(CurbMassChassis), + nameof(GrossVehicleMassRating), + nameof(TankSystem), + nameof(AirdragModifiedEnum), + nameof(RegisteredClass), + nameof(NumberOfPassengersUpperDeck), + nameof(NumberOfPassengersLowerDeck), + nameof(VehicleCode), + nameof(LowEntry), + nameof(HeightInMm), + nameof(WidthInMm), + nameof(LengthInMm), + nameof(EntranceHeightInMm), + nameof(DoorDriveTechnology), + nameof(VehicleDeclarationType), + nameof(EngineStopStartNullable), + nameof(EcoRollTypeNullable), + nameof(PredictiveCruiseControlNullable), + nameof(ATEcoRollReleaseLockupClutch), + }; + + foreach(var property in properties) { + if (!backedUpParameters.Contains(property.Name)) { + continue; + } + + + object previousInputData = null; + try { + previousInputData = ConsolidatedVehicleData?.GetType().GetProperty(property.Name)? + .GetValue(ConsolidatedVehicleData); + + } catch (Exception e) { + Debug.WriteLine(e.Message); + } + + _parameterViewModels.Add(property.Name, new MultistageParameterViewModel(property.Name, previousInputData, this, resourceManagers:new ResourceManager[]{BusStrings.ResourceManager, Strings.ResourceManager} + )); + } + + _parameterViewModels[nameof(WidthInMm)].PreviousContent = ConsolidatedWidthInMm; + _parameterViewModels[nameof(WidthInMm)].DummyContent = ConvertedSIDummyCreator.CreateMillimeterDummy(); + _parameterViewModels[nameof(HeightInMm)].PreviousContent = ConsolidatedHeightInMm; + _parameterViewModels[nameof(HeightInMm)].DummyContent = ConvertedSIDummyCreator.CreateMillimeterDummy(); + _parameterViewModels[nameof(LengthInMm)].PreviousContent = ConsolidatedLengthInMm; + _parameterViewModels[nameof(LengthInMm)].DummyContent = ConvertedSIDummyCreator.CreateMillimeterDummy(); + _parameterViewModels[nameof(EntranceHeightInMm)].PreviousContent = ConsolidatedEntranceHeightInMm; + _parameterViewModels[nameof(EntranceHeightInMm)].DummyContent = ConvertedSIDummyCreator.CreateMillimeterDummy(); + + _parameterViewModels[nameof(AirdragModifiedEnum)].PreviousContent = ConsolidatedAirdragmodified; + + + ///Set up editing groups + + Action<MultistageParameterViewModel> MeasureMentsEditingGroupCallback = (MultistageParameterViewModel param) => { + MeasurementsGroupEditingEnabled = param.EditingEnabled; + }; + _parameterViewModels[nameof(WidthInMm)].EditingChangedCallback = MeasureMentsEditingGroupCallback; + _parameterViewModels[nameof(LengthInMm)].EditingChangedCallback = MeasureMentsEditingGroupCallback; + _parameterViewModels[nameof(HeightInMm)].EditingChangedCallback = MeasureMentsEditingGroupCallback; + _parameterViewModels[nameof(EntranceHeightInMm)].EditingChangedCallback = MeasureMentsEditingGroupCallback; + + Action<MultistageParameterViewModel> ADASGroupEditingCallback = (MultistageParameterViewModel param) => { + AdasEditingEnabled = param.EditingEnabled; + }; + + _parameterViewModels[nameof(EngineStopStartNullable)].EditingChangedCallback = ADASGroupEditingCallback; + _parameterViewModels[nameof(EcoRollTypeNullable)].EditingChangedCallback = ADASGroupEditingCallback; + _parameterViewModels[nameof(PredictiveCruiseControlNullable)].EditingChangedCallback = ADASGroupEditingCallback; + _parameterViewModels[nameof(ATEcoRollReleaseLockupClutch)].EditingChangedCallback = ADASGroupEditingCallback; + + Action<MultistageParameterViewModel> PassengerGroupEditingCallback = (MultistageParameterViewModel param) => { + NumberOfPassengersEditingEnabled = param.EditingEnabled; + }; + + _parameterViewModels[nameof(NumberOfPassengersUpperDeck)].EditingChangedCallback = + PassengerGroupEditingCallback; + _parameterViewModels[nameof(NumberOfPassengersLowerDeck)].EditingChangedCallback = + PassengerGroupEditingCallback; + + _parameterViewModels[nameof(AirdragModifiedEnum)].EditingChangedCallback = model => { + AirdragModifiedMultistageEditingEnabled = model.EditingEnabled; + }; + + //Setup allowed values + + + _parameterViewModels[nameof(VehicleCode)].AllowedItems = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, VehicleCode>((TUGraz.VectoCommon.Models.VehicleCode.NOT_APPLICABLE)); + + _parameterViewModels[nameof(LegislativeClass)].AllowedItems = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, LegislativeClass>((TUGraz.VectoCommon.Models.LegislativeClass.Unknown)); + + _parameterViewModels[nameof(RegisteredClass)].AllowedItems = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, RegistrationClass>(RegistrationClass.unknown); + + //Setup additional consolidatedVehicleData + _parameterViewModels[nameof(EngineStopStartNullable)].PreviousContent = + ConsolidatedVehicleData?.ADAS?.EngineStopStart; + _parameterViewModels[nameof(EcoRollTypeNullable)].PreviousContent = + ConsolidatedVehicleData?.ADAS?.EcoRoll; + _parameterViewModels[nameof(PredictiveCruiseControlNullable)].PreviousContent = + ConsolidatedVehicleData?.ADAS?.PredictiveCruiseControl; + _parameterViewModels[nameof(ATEcoRollReleaseLockupClutch)].PreviousContent = + ConsolidatedVehicleData?.ADAS?.ATEcoRollReleaseLockupClutch; + + //Set Mandatory Fields + + _parameterViewModels[nameof(Manufacturer)].Mandatory = true; + _parameterViewModels[nameof(ManufacturerAddress)].Mandatory = true; + _parameterViewModels[nameof(VIN)].Mandatory = true; + + + } + + #region Overrides of ViewModelBase + + protected override bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null) + { + var propertyChanged = base.SetProperty(ref field, value, propertyName); + + if (propertyChanged && _parameterViewModels != null && _parameterViewModels.ContainsKey(propertyName)) { + _parameterViewModels[propertyName].CurrentContent = value; + } + return propertyChanged; } + + + #endregion + public IVehicleDeclarationInputData ConsolidatedVehicleData { get { return _consolidatedVehicleData; } @@ -245,6 +394,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } + public string Model { get { return _model; } @@ -269,11 +419,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get { return _measurementsGroupEditingEnabled; } set { - SetProperty(ref _measurementsGroupEditingEnabled, value); - OnPropertyChanged(nameof(HeightInMm)); - OnPropertyChanged(nameof(WidthInMm)); - OnPropertyChanged(nameof(EntranceHeightInMm)); - OnPropertyChanged(nameof(LengthInMm)); + if (SetProperty(ref _measurementsGroupEditingEnabled, value)) { + _parameterViewModels[nameof(HeightInMm)].EditingEnabled = value; + _parameterViewModels[nameof(LengthInMm)].EditingEnabled = value; + _parameterViewModels[nameof(WidthInMm)].EditingEnabled = value; + _parameterViewModels[nameof(EntranceHeightInMm)].EditingEnabled = value; + } + } } @@ -318,7 +470,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set { SetProperty(ref _length, value); - OnPropertyChanged(nameof(LengthInMm)); + OnPropertyChanged(nameof(WidthInMm)); } } @@ -382,7 +534,14 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public bool NumberOfPassengersEditingEnabled { get { return _numberOfPassengersEditingEnabled; } - set { SetProperty(ref _numberOfPassengersEditingEnabled, value); } + set + { + if (SetProperty(ref _numberOfPassengersEditingEnabled, value)) { + _parameterViewModels[nameof(NumberOfPassengersUpperDeck)].EditingEnabled = value; + _parameterViewModels[nameof(NumberOfPassengersLowerDeck)].EditingEnabled = value; + } + + } } @@ -405,6 +564,11 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set { SetProperty(ref _tankSystem, value); } } + public MultistageParameterViewModel TankSystemVM + { + get => _parameterViewModels[nameof(TankSystem)]; + } + public Kilogram GrossVehicleMassRating //Technical Permissible Maximum Laden Mass { get => _grossVehicleMassRating; @@ -472,8 +636,19 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } return _airdragModifiedEditingEnabled; } - set => SetProperty(ref _airdragModifiedEditingEnabled, value); + set + { + var val = value; + if (_consolidatedVehicleData?.AirdragModifiedMultistage != null) { + val = true; + } + if (SetProperty(ref _airdragModifiedEditingEnabled, val)) { + + } + _parameterViewModels[nameof(AirdragModifiedEnum)].EditingEnabled = val; + } } + #endregion; public RegistrationClass? RegisteredClass @@ -488,8 +663,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation set => SetProperty(ref _vehicleCode, value); } - public ObservableCollection<Enum> VehicleCodeAllowedValues { get; } = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, VehicleCode>((TUGraz.VectoCommon.Models.VehicleCode.NOT_APPLICABLE)); public bool? LowEntry @@ -600,11 +773,12 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get => _adasEditingEnabled; set { - SetProperty(ref _adasEditingEnabled, value); - OnPropertyChanged(nameof(EngineStopStartNullable)); - OnPropertyChanged(nameof(EcoRollTypeNullable)); - OnPropertyChanged(nameof(PredictiveCruiseControlNullable)); - OnPropertyChanged(nameof(ATEcoRollReleaseLockupClutch)); + if(SetProperty(ref _adasEditingEnabled, value)) { + _parameterViewModels[nameof(EcoRollTypeNullable)].EditingEnabled = value; + _parameterViewModels[nameof(ATEcoRollReleaseLockupClutch)].EditingEnabled = value; + _parameterViewModels[nameof(EngineStopStartNullable)].EditingEnabled = value; + _parameterViewModels[nameof(PredictiveCruiseControlNullable)].EditingEnabled = value; + } } } @@ -880,12 +1054,12 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation case nameof(PredictiveCruiseControlNullable): case nameof(ATEcoRollReleaseLockupClutch): if (AdasEditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null){ - result = $"{propertyName} has to be set if editing is enabled}}"; + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; } break; default: - if (EditingEnabledDictionary[propertyName] == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) { - result = $"{propertyName} has to be set if editing is enabled}}"; + if (_parameterViewModels[propertyName].EditingEnabled == true && this.GetType().GetProperty(propertyName)?.GetValue(this) == null) { + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; } break; @@ -926,11 +1100,6 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } - - - - - } } \ No newline at end of file diff --git a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs index 178050c93e522a11f381f8cdb6447ab5bf6e7020..be883d42c0f6cba867a1ba52d6e39a9469c4a251 100644 --- a/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs +++ b/VECTO3GUI2020/ViewModel/MultiStage/Implementation/MultistageAuxiliariesViewModel.cs @@ -2,14 +2,21 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; +using System.Diagnostics; +using System.Resources; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices.WindowsRuntime; +using System.Windows.Forms; using System.Xml; using Castle.Core.Internal; using TUGraz.VectoCommon.BusAuxiliaries; using TUGraz.VectoCommon.InputData; using TUGraz.VectoCommon.Models; using TUGraz.VectoCommon.Utils; +using TUGraz.VectoCore.InputData.FileIO.XML.Declaration.Reader.Impl; using TUGraz.VectoCore.Models.BusAuxiliaries.Interfaces; using VECTO3GUI2020.Helper; +using VECTO3GUI2020.Properties; using VECTO3GUI2020.ViewModel.Implementation.Common; using EnumHelper = VECTO3GUI2020.Helper.EnumHelper; @@ -171,16 +178,29 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get => _heatPumpGroupEditingEnabled; set { - - SetProperty(ref _heatPumpGroupEditingEnabled, value); - OnPropertyChanged(nameof(HeatPumpModeDriverCompartment)); - OnPropertyChanged(nameof(HeatPumpTypeDriverCompartment)); - OnPropertyChanged(nameof(HeatPumpTypePassengerCompartment)); - OnPropertyChanged(nameof(HeatPumpModePassengerCompartment)); - OnPropertyChanged(nameof(SystemConfiguration)); + if (SetProperty(ref _heatPumpGroupEditingEnabled, value)) { + _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpTypePassengerCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(HeatPumpModePassengerCompartment)].EditingEnabled = value; + _parameterViewModels[nameof(SystemConfiguration)].EditingEnabled = value; + } } } + private ObservableCollection<Enum> _systemConfigurationAllowedValues; + public ObservableCollection<Enum> SystemConfigurationAllowedValues + { + get => _systemConfigurationAllowedValues; + set + { + if (SetProperty(ref _systemConfigurationAllowedValues, value)) { + _parameterViewModels[nameof(SystemConfiguration)].AllowedItems = value; + } + } + } + + public BusHVACSystemConfiguration? SystemConfiguration { get => _systemConfiguration; @@ -192,19 +212,22 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get => _heatPumpTypeDriverCompartment; set { - if (value == HeatPumpType.none) { - HeatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>(items:HeatPumpMode.N_A); - - } else { - HeatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( - items: HeatPumpMode.N_A); - - } + if (SetProperty(ref _heatPumpTypeDriverCompartment, value)) { + if (value == HeatPumpType.none) + { + HeatPumpModeDriverCompartmentAllowedValues = + EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>(items: HeatPumpMode.N_A); + + } + else + { + HeatPumpModeDriverCompartmentAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( + items: HeatPumpMode.N_A); + } - SetProperty(ref _heatPumpTypeDriverCompartment, value); + } } } @@ -218,8 +241,8 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } - private ObservableCollection<Enum> _heatPumpModeDriverCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(HeatPumpMode.N_A); + private ObservableCollection<Enum> _heatPumpModeDriverCompartmentAllowedValues; + public ObservableCollection<Enum> HeatPumpModeDriverCompartmentAllowedValues { get @@ -228,7 +251,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } private set { - SetProperty(ref _heatPumpModeDriverCompartmentAllowedValues, value); + if (SetProperty(ref _heatPumpModeDriverCompartmentAllowedValues, value)) { + _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].AllowedItems = value; + }; } } @@ -240,19 +265,17 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation get => _heatPumpTypePassengerCompartment; set { - SetProperty(ref _heatPumpTypePassengerCompartment, value); - if (value == HeatPumpType.none) - { - HeatPumpModePassengerCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>(items: HeatPumpMode.N_A); - //HeatPumpModePassengerCompartment = HeatPumpMode.N_A; - } - else - { - HeatPumpModePassengerCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( - items: HeatPumpMode.N_A); - //HeatPumpModePassengerCompartment = HeatPumpMode.cooling; + if (SetProperty(ref _heatPumpTypePassengerCompartment, value)) { + if (value == HeatPumpType.none) { + HeatPumpModePassengerCompartmentAllowedValues = + EnumHelper.GetValuesAsObservableCollectionIncluding<Enum, HeatPumpMode>( + items: HeatPumpMode.N_A); + } else { + HeatPumpModePassengerCompartmentAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>( + items: HeatPumpMode.N_A); + //HeatPumpModePassengerCompartment = HeatPumpMode.cooling; + } } } } @@ -267,8 +290,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } } - private ObservableCollection<Enum> _heatPumpModePassengerCompartmentAllowedValues = - EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(HeatPumpMode.N_A); + private ObservableCollection<Enum> _heatPumpModePassengerCompartmentAllowedValues; public ObservableCollection<Enum> HeatPumpModePassengerCompartmentAllowedValues { get @@ -277,7 +299,9 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } private set { - SetProperty(ref _heatPumpModePassengerCompartmentAllowedValues, value); + if (SetProperty(ref _heatPumpModePassengerCompartmentAllowedValues, value)) { + _parameterViewModels[nameof(HeatPumpModePassengerCompartment)].AllowedItems = value; + } } } @@ -295,7 +319,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation public bool? InteriorLightsLED { get => _interiorLightsLed; - set => SetProperty(ref _interiorLightsLed, value); + set + { + SetProperty(ref _interiorLightsLed, value); + if (value != null) { + OnPropertyChanged(nameof(EditingEnabledDictionary)); + } + } } public bool? DayrunninglightsLED @@ -333,7 +363,7 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation } private CompressorDrive _compressorDrive; - + private Dictionary<string, MultistageParameterViewModel> _parameterViewModels; public CompressorDrive CompressorDrive @@ -439,13 +469,137 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation { ConsolidatedInputData = consolidatedAuxiliariesInputData; _editingEnabledDictionary = new IndexedStorage<bool>((identifier) => { - - OnPropertyChanged(nameof(EditingEnabledDictionary)); OnPropertyChanged(nameof(identifier)); }); + + + _parameterViewModels = new Dictionary<string, MultistageParameterViewModel>(); + var properties = this.GetType().GetProperties(); + var backedUpParameters = new HashSet<string>() { + nameof(InteriorLightsLED), + nameof(DayrunninglightsLED), + nameof(PositionlightsLED), + nameof(BrakelightsLED), + nameof(HeadlightsLED), + + nameof(SystemConfiguration), + nameof(HeatPumpModeDriverCompartment), + nameof(HeatPumpModePassengerCompartment), + nameof(HeatPumpTypePassengerCompartment), + nameof(HeatPumpTypeDriverCompartment), + + + nameof(AuxHeaterPower), + nameof(DoubleGlazing), + nameof(AirElectricHeater), + nameof(AdjustableAuxiliaryHeater), + nameof(SeparateAirDistributionDucts), + nameof(OtherHeatingTechnology), + nameof(WaterElectricHeater) + + + + }; + + foreach (var property in properties) + { + if (!backedUpParameters.Contains(property.Name)) + { + continue; + } + + + object previousInputData = null; + try + { + previousInputData = ConsolidatedInputData?.GetType().GetProperty(nameof(property.Name))? + .GetValue(ConsolidatedInputData); + + } + catch (Exception e) + { + Debug.WriteLine(e.Message); + } + + _parameterViewModels.Add(property.Name, new MultistageParameterViewModel(property.Name, previousInputData, this, resourceManagers: new ResourceManager[] { BusStrings.ResourceManager, Strings.ResourceManager } + )); + } + + //Set consolidated Data + _parameterViewModels[nameof(InteriorLightsLED)].PreviousContent = + ConsolidatedInputData?.ElectricConsumers.InteriorLightsLED; + _parameterViewModels[nameof(DayrunninglightsLED)].PreviousContent = + ConsolidatedInputData?.ElectricConsumers.DayrunninglightsLED; + _parameterViewModels[nameof(PositionlightsLED)].PreviousContent = + ConsolidatedInputData?.ElectricConsumers.PositionlightsLED; + _parameterViewModels[nameof(BrakelightsLED)].PreviousContent = + ConsolidatedInputData?.ElectricConsumers.BrakelightsLED; + _parameterViewModels[nameof(HeadlightsLED)].PreviousContent = + ConsolidatedInputData?.ElectricConsumers.HeadlightsLED; + _parameterViewModels[nameof(SystemConfiguration)].PreviousContent = + ConsolidatedInputData?.HVACAux.SystemConfiguration; + _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpModeDriverCompartment; + _parameterViewModels[nameof(HeatPumpTypePassengerCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypePassengerCompartment; + _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpTypeDriverCompartment; + _parameterViewModels[nameof(HeatPumpModePassengerCompartment)].PreviousContent = + ConsolidatedInputData?.HVACAux.HeatPumpModePassengerCompartment; + _parameterViewModels[nameof(AuxHeaterPower)].PreviousContent = + ConsolidatedInputData?.HVACAux.AuxHeaterPower; + _parameterViewModels[nameof(DoubleGlazing)].PreviousContent = + ConsolidatedInputData?.HVACAux.DoubleGlazing; + _parameterViewModels[nameof(AdjustableAuxiliaryHeater)].PreviousContent = + ConsolidatedInputData?.HVACAux.AdjustableAuxiliaryHeater; + _parameterViewModels[nameof(SeparateAirDistributionDucts)].PreviousContent = + ConsolidatedInputData?.HVACAux.SeparateAirDistributionDucts; + _parameterViewModels[nameof(AirElectricHeater)].PreviousContent = + ConsolidatedInputData?.HVACAux.AirElectricHeater; + _parameterViewModels[nameof(OtherHeatingTechnology)].PreviousContent = + ConsolidatedInputData?.HVACAux.OtherHeatingTechnology; + + + + //Set editinggroups + Action<MultistageParameterViewModel> HeatPumpGroupEditingEnabledCallback = model => + { + HeatPumpGroupEditingEnabled = model.EditingEnabled; + }; + _parameterViewModels[nameof(SystemConfiguration)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpModeDriverCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpTypePassengerCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpTypeDriverCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + _parameterViewModels[nameof(HeatPumpModePassengerCompartment)].EditingChangedCallback = + HeatPumpGroupEditingEnabledCallback; + + //Setup AllowedValues + HeatPumpModeDriverCompartmentAllowedValues = EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(HeatPumpMode.N_A); + HeatPumpModePassengerCompartmentAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, HeatPumpMode>(HeatPumpMode.N_A); + SystemConfigurationAllowedValues = + EnumHelper.GetValuesAsObservableCollectionExcluding<Enum, BusHVACSystemConfiguration>( + BusHVACSystemConfiguration.Unknown); + + } + + protected override bool SetProperty<T>(ref T field, T value, [CallerMemberName] string propertyName = null) + { + var propertyChanged = base.SetProperty(ref field, value, propertyName); + + if (propertyChanged && _parameterViewModels != null && _parameterViewModels.ContainsKey(propertyName)) + { + _parameterViewModels[propertyName].CurrentContent = value; + } + return propertyChanged; } + #region Implementation of IElectricSupplyDeclarationData public AlternatorType AlternatorTechnology => throw new NotImplementedException(); @@ -502,13 +656,13 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation case nameof(SystemConfiguration): if (HeatPumpGroupEditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) { - result = $"{propertyName} has to be set if editing is enabled}}"; + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; } break; default: - if (EditingEnabledDictionary[propertyName] == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) + if (_parameterViewModels[propertyName].EditingEnabled == true && this.GetType().GetProperty(propertyName).GetValue(this) == null) { - result = $"{propertyName} has to be set if editing is enabled}}"; + result = $"{NameResolver.ResolveName(propertyName, BusStrings.ResourceManager, Strings.ResourceManager)} has to be set if editing is enabled}}"; } break; } @@ -537,6 +691,19 @@ namespace VECTO3GUI2020.ViewModel.MultiStage.Implementation return !Error.IsNullOrEmpty(); } } + + public Dictionary<string, MultistageParameterViewModel> ParameterViewModels + { + get + { + return _parameterViewModels; + } + set + { + SetProperty(ref _parameterViewModels, value); + } + } + #endregion } } \ No newline at end of file diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultiStageParameter.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/MultiStageParameter.xaml.cs index b73b9868210361aa3e18f276c167d13760a43a69..cea3f705e061f51681b1cfbf0a3571897e3bab9e 100644 --- a/VECTO3GUI2020/Views/Multistage/CustomControls/MultiStageParameter.xaml.cs +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultiStageParameter.xaml.cs @@ -171,7 +171,7 @@ namespace VECTO3GUI2020.Views.Multistage.CustomControls set { SetCurrentValue(EditingEnabledProperty, value); - OnPropertyChanged(nameof(EditingEnabled)); + //OnPropertyChanged(nameof(EditingEnabled)); } } @@ -336,7 +336,7 @@ namespace VECTO3GUI2020.Views.Multistage.CustomControls return; } - if (multiStageParameter.Content != null && multiStageParameter.EditingEnabled == false) + if (multiStageParameter.Content != null) { multiStageParameter.EditingEnabled = true; } diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml new file mode 100644 index 0000000000000000000000000000000000000000..a10a243e68b4fb48af4ca8d94f855a88368285b8 --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml @@ -0,0 +1,50 @@ +<UserControl x:Class="VECTO3GUI2020.Views.Multistage.CustomControls.MultistageParameterCheckBoxView" + 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:local="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" + mc:Ignorable="d" + d:DesignHeight="450" d:DesignWidth="800"> + <Grid> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + </Grid.ColumnDefinitions> + + <Label x:Name="label3"> + <PriorityBinding> + <Binding Path="Label" Converter="{StaticResource NullToUnsetValue}"></Binding> + <Binding Path="GeneratedLabelText"></Binding> + </PriorityBinding> + </Label> + <CheckBox Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Name="CheckBoxCheckBox" + Visibility="{Binding ShowCheckBox, + Converter={StaticResource BooleanToVisibilityConverter}}" + IsChecked="{Binding EditingEnabled, + Mode=TwoWay}" + /> + + <CheckBox x:Name="checkBox" Grid.Column="2" VerticalAlignment="Center" HorizontalAlignment="Center" IsTabStop="False" IsChecked="{Binding + Path=PreviousContent, + Converter={StaticResource XToBoolConverter}}" IsEnabled="False"> + </CheckBox> + + <CheckBox x:Name="checkBox1" Grid.Column="3" VerticalAlignment="Center" HorizontalAlignment="Center" + IsEnabled="{Binding + Path=EditingEnabled, UpdateSourceTrigger=PropertyChanged}" + IsChecked="{Binding CurrentContent, Mode=TwoWay, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, Converter={StaticResource XToBoolConverter}, + UpdateSourceTrigger=PropertyChanged}"> + + </CheckBox> + <!--<Label x:Name="label4" Grid.Column="4" + Content="{Binding DummyContent, Converter={StaticResource SIToUnitStringConverter}}"> + </Label>--> + </Grid> + + </Grid> +</UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml.cs new file mode 100644 index 0000000000000000000000000000000000000000..2e75ad6d41815c0cb4848005ce55ebe2a47eb5fe --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterCheckBoxView.xaml.cs @@ -0,0 +1,28 @@ +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 VECTO3GUI2020.Views.Multistage.CustomControls +{ + /// <summary> + /// Interaction logic for MultistageParameterCheckBoxView.xaml + /// </summary> + public partial class MultistageParameterCheckBoxView : UserControl + { + public MultistageParameterCheckBoxView() + { + InitializeComponent(); + } + } +} diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml new file mode 100644 index 0000000000000000000000000000000000000000..e930e5a7b775cc30e7a5c466a92d256e950e22a5 --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml @@ -0,0 +1,68 @@ +<UserControl x:Class="VECTO3GUI2020.Views.Multistage.CustomControls.MultistageParameterComboBoxView" + 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:local="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" + xmlns:helper="clr-namespace:VECTO3GUI2020.Helper" + mc:Ignorable="d" + d:DesignHeight="450" d:DesignWidth="800" d:DataContext="{d:DesignInstance helper:MultistageParameterViewModel }"> + <Grid> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + </Grid.ColumnDefinitions> + + <Label x:Name="label1"> + <PriorityBinding> + <Binding Path="Label" Converter="{StaticResource NullToUnsetValue}"></Binding> + <Binding Path="GeneratedLabelText"></Binding> + </PriorityBinding> + </Label> + <CheckBox Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Name="CheckBoxCombo" + Visibility="{Binding ShowCheckBox, + Converter={StaticResource BooleanToVisibilityConverter}}" + IsChecked="{Binding EditingEnabled, + Mode=TwoWay}" Checked="CheckBoxCombo_OnChecked"/> + + <ComboBox x:Name="comboBox" Grid.Column="2" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="2 0 2 0" IsTabStop="False" Visibility="{Binding Optional, + Converter={StaticResource BooleanToVisibilityConverter}}" IsHitTestVisible="False" Focusable="False" IsEditable="False" + SelectedValue="{Binding PreviousContent, Mode=TwoWay}" + ItemsSource="{Binding GeneratedListItems}"> + <ComboBox.ItemTemplate> + <DataTemplate> + <TextBlock x:Name="textBlock" Text="{Binding Converter={StaticResource EnumConverter}}" /> + </DataTemplate> + </ComboBox.ItemTemplate> + </ComboBox> + + <!--SelectedIndex="{Binding EditingEnabled, ElementName=MultistageParameterControl, Converter={StaticResource BoolToIntConverter}}"--> + <!--ItemsSource="{Binding ListItems, ElementName=MultistageParameterControl}"--> + <ComboBox x:Name="comboBoxCurrent" Grid.Column="3" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="2 0 2 0" + SelectedItem="{Binding CurrentContent, Mode=TwoWay, ValidatesOnExceptions=True, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" + IsEnabled="{Binding EditingEnabled}" + IsEditable="False"> + <ComboBox.ItemsSource> + <PriorityBinding> + <Binding Path="AllowedItems" Converter="{StaticResource NullToUnsetValue}" UpdateSourceTrigger="PropertyChanged"/> + <Binding Path="GeneratedListItems" UpdateSourceTrigger="PropertyChanged"/> + </PriorityBinding> + </ComboBox.ItemsSource> + <ComboBox.ItemTemplate> + <DataTemplate> + <TextBlock x:Name="textBlock" Text="{Binding Converter={StaticResource EnumConverter}}" /> + </DataTemplate> + </ComboBox.ItemTemplate> + </ComboBox> + + + <Label x:Name="label2" Grid.Column="4" + Content="{Binding DummyContent, Converter={StaticResource SIToUnitStringConverter}}"> + </Label> + </Grid> + </Grid> +</UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml.cs new file mode 100644 index 0000000000000000000000000000000000000000..16b02b44c4a8589d0e37456e9d1b280a3d1b985b --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterComboBoxView.xaml.cs @@ -0,0 +1,33 @@ +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 VECTO3GUI2020.Views.Multistage.CustomControls +{ + /// <summary> + /// Interaction logic for MultistageParameterComboBoxView.xaml + /// </summary> + public partial class MultistageParameterComboBoxView : UserControl + { + public MultistageParameterComboBoxView() + { + InitializeComponent(); + } + + private void CheckBoxCombo_OnChecked(object sender, RoutedEventArgs e) + { + + } + } +} diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml new file mode 100644 index 0000000000000000000000000000000000000000..a6027864ec4393aa6775a26bd3a4fa2b02345286 --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml @@ -0,0 +1,54 @@ +<UserControl x:Class="VECTO3GUI2020.Views.Multistage.CustomControls.MultistageParameterTextView" + 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:local="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" + xmlns:helper="clr-namespace:VECTO3GUI2020.Helper" + mc:Ignorable="d" + d:DesignHeight="450" d:DesignWidth="800"> + <Grid> + <Grid> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="4*" SharedSizeGroup="W"/> + <ColumnDefinition Width="1*" SharedSizeGroup="N"/> + </Grid.ColumnDefinitions> + + <Label x:Name="label" > + <PriorityBinding> + <Binding Path="Label" Converter="{StaticResource NullToUnsetValue}"></Binding> + <!--<Binding Path="GeneratedLabelText"></Binding>--> + </PriorityBinding> + </Label> + <CheckBox Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center" Name="EditingEnabledCheckBox" + Visibility="{Binding ShowCheckBox, + Converter={StaticResource BooleanToVisibilityConverter}}" + IsChecked="{Binding EditingEnabled, + Mode=TwoWay}"/> + + <TextBox x:Name="textBox" Grid.Column="2" VerticalAlignment="Center" Margin="2 0 2 0" IsReadOnly="True" IsTabStop="False" + Text="{Binding Path=PreviousContent, + Converter={StaticResource SIValueToStringConverter}}" + + Style="{DynamicResource TextBoxStyle1}" + Visibility="{Binding Optional, + Converter={StaticResource BooleanToVisibilityConverter}, UpdateSourceTrigger=PropertyChanged}"/> + + <TextBox Grid.Column="3" Name ="TextBoxContent" VerticalAlignment="Center" Margin="2 0 2 0" + Text="{Binding CurrentContent, Mode=TwoWay, + Converter={StaticResource SIValueToStringConverter}, + UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, ValidatesOnExceptions=True}" + Style="{DynamicResource TextBoxStyle1}" + IsReadOnly="{Binding + Path=EditingEnabled, + Converter={StaticResource InvertBoolConverter}}" MouseDoubleClick="Control_OnMouseDoubleClick"/> + + <Label Grid.Column="4" x:Name="AutoUnitLabel" + Content="{Binding DummyContent, Converter={StaticResource SIToUnitStringConverter}}"> + </Label> + </Grid> + </Grid> +</UserControl> diff --git a/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml.cs b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml.cs new file mode 100644 index 0000000000000000000000000000000000000000..910d88640054797fbea853f94b84549b6bafce96 --- /dev/null +++ b/VECTO3GUI2020/Views/Multistage/CustomControls/MultistageParameterTextView.xaml.cs @@ -0,0 +1,33 @@ +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 VECTO3GUI2020.Views.Multistage.CustomControls +{ + /// <summary> + /// Interaction logic for MultistageParameterTextView.xaml + /// </summary> + public partial class MultistageParameterTextView : UserControl + { + public MultistageParameterTextView() + { + InitializeComponent(); + } + + private void Control_OnMouseDoubleClick(object sender, MouseButtonEventArgs e) + { + EditingEnabledCheckBox.IsChecked = true; + } + } +} diff --git a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml index ba65f7d57ac1f7f26772815ce13313706f8872bf..03c893539b391d3f34084554a817ba8555b72c50 100644 --- a/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml +++ b/VECTO3GUI2020/Views/Multistage/ManufacturingStageAuxiliariesView.xaml @@ -13,7 +13,11 @@ <UserControl.Resources> <Style TargetType="customControls:MultiStageParameter"> <Setter Property="NameLookUpResourceManager" Value="{x:Static properties:BusStrings.ResourceManager}"/> - <Setter Property="Validation.ErrorTemplate" Value="{StaticResource multistageParameterControlErrorTemplate}"/> + <Setter Property="Validation.ErrorTemplate" Value="{DynamicResource multistageParameterControlErrorTemplate}"/> + </Style> + <Style TargetType="ContentControl"> + <Setter Property="ContentTemplateSelector" Value="{DynamicResource MultistageParameterTemplateSelector}"/> + <Setter Property="IsTabStop" Value="False"/> </Style> </UserControl.Resources> <Grid> @@ -22,66 +26,63 @@ <StackPanel DockPanel.Dock="Top"> <Label Style="{DynamicResource LabelStyle1}" FontSize="15" HorizontalAlignment="Stretch">AUXILIARIES</Label> <Label Style="{DynamicResource LabelStyle1}">LED Lights</Label> - <customControls:MultiStageParameter Mode="CHECKBOX" - PreviousContent="{Binding ConsolidatedInputData.ElectricConsumers.InteriorLightsLED}" - Content="{Binding InteriorLightsLED, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[InteriorLightsLED]}"/> - <customControls:MultiStageParameter Mode="CHECKBOX" - PreviousContent="{Binding ConsolidatedInputData.ElectricConsumers.DayrunninglightsLED}" - Content="{Binding DayrunninglightsLED,ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[DayrunninglightsLED]}"/> - <customControls:MultiStageParameter Mode="CHECKBOX" - PreviousContent="{Binding ConsolidatedInputData.ElectricConsumers.PositionlightsLED}" - Content="{Binding PositionlightsLED,ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[PositionlightsLED]}"/> - <customControls:MultiStageParameter Mode="CHECKBOX" - PreviousContent="{Binding ConsolidatedInputData.ElectricConsumers.BrakelightsLED}" - Content="{Binding BrakelightsLED,ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[BrakelightsLED]}"/> - <customControls:MultiStageParameter Mode="CHECKBOX" - PreviousContent="{Binding ConsolidatedInputData.ElectricConsumers.HeadlightsLED}" - Content="{Binding HeadlightsLED,ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[HeadlightsLED]}"/> + + <ContentControl Content="{Binding ParameterViewModels[InteriorLightsLED]}"/> + <ContentControl Content="{Binding ParameterViewModels[DayrunninglightsLED]}"/> + <ContentControl Content="{Binding ParameterViewModels[PositionlightsLED]}"/> + <ContentControl Content="{Binding ParameterViewModels[BrakelightsLED]}"/> + <ContentControl Content="{Binding ParameterViewModels[HeadlightsLED]}"/> + <!--<Separator/>--> <Label Style="{DynamicResource LabelStyle1}">Heating, Ventilation and Air Conditioning</Label> - <customControls:MultiStageParameter Mode="COMBOBOX" + <!--<customControls:MultiStageParameter Mode="COMBOBOX" EditingEnabled="{Binding HeatPumpGroupEditingEnabled, Mode=TwoWay}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.SystemConfiguration}" - Content="{Binding SystemConfiguration, ValidatesOnDataErrors=True}"/> + Content="{Binding SystemConfiguration, ValidatesOnDataErrors=True}" + ListItems="{Binding SystemConfigurationAllowedValues}"/>--> + <ContentControl Content="{Binding ParameterViewModels[SystemConfiguration]}"/> - <customControls:MultiStageParameter Mode="COMBOBOX" + <!--<customControls:MultiStageParameter Mode="COMBOBOX" EditingEnabled="{Binding HeatPumpGroupEditingEnabled, Mode=TwoWay}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.HeatPumpTypeDriverCompartment}" Content="{Binding HeatPumpTypeDriverCompartment, ValidatesOnDataErrors=True}" - ShowCheckBox="False"/> - <customControls:MultiStageParameter Mode="COMBOBOX" + ShowCheckBox="False"/>--> + + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypeDriverCompartment]}"/> + <!--<customControls:MultiStageParameter Mode="COMBOBOX" EditingEnabled="{Binding HeatPumpGroupEditingEnabled, Mode=TwoWay}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.HeatPumpModeDriverCompartment}" Content="{Binding HeatPumpModeDriverCompartment, ValidatesOnDataErrors=True}" ListItems="{Binding HeatPumpModeDriverCompartmentAllowedValues}" - ShowCheckBox="False"/> - <customControls:MultiStageParameter Mode="COMBOBOX" + ShowCheckBox="False"/>--> + + <ContentControl Content="{Binding ParameterViewModels[HeatPumpModeDriverCompartment]}"/> + <!--<customControls:MultiStageParameter Mode="COMBOBOX" EditingEnabled="{Binding HeatPumpGroupEditingEnabled, Mode=TwoWay}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.HeatPumpTypePassengerCompartment}" Content="{Binding HeatPumpTypePassengerCompartment,ValidatesOnDataErrors=True}" - ShowCheckBox="False"/> - <customControls:MultiStageParameter Mode="COMBOBOX" + ShowCheckBox="False"/>--> + + <ContentControl Content="{Binding ParameterViewModels[HeatPumpTypePassengerCompartment]}"/> + <!--<customControls:MultiStageParameter Mode="COMBOBOX" EditingEnabled="{Binding HeatPumpGroupEditingEnabled, Mode=TwoWay}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.HeatPumpModePassengerCompartment}" Content="{Binding HeatPumpModePassengerCompartment,ValidatesOnDataErrors=True}" ListItems="{Binding HeatPumpModePassengerCompartmentAllowedValues}" - ShowCheckBox="False"/> + ShowCheckBox="False"/>--> + <ContentControl Content="{Binding ParameterViewModels[HeatPumpModePassengerCompartment]}"/> <Separator/> <!--<customControls:MultiStageParameter Mode="COMBOBOX" PreviousContent="{Binding ConsolidatedInputData.PneumaticSupply.CompressorDrive}" Content="{Binding CompressorDrive}"></customControls:MultiStageParameter>--> - <customControls:MultiStageParameter Mode="TEXTBOX" + <!--<customControls:MultiStageParameter Mode="TEXTBOX" Validation.ErrorTemplate="{DynamicResource multistageParameterControlErrorTemplate}" PreviousContent="{Binding ConsolidatedInputData.HVACAux.AuxHeaterPower}" Content="{Binding AuxHeaterPower,ValidatesOnDataErrors=True}" EditingEnabled="{Binding EditingEnabledDictionary[AuxHeaterPower]}"/> + <customControls:MultiStageParameter Mode="CHECKBOX" PreviousContent="{Binding ConsolidatedInputData.HVACAux.DoubleGlazing}" @@ -95,9 +96,14 @@ <customControls:MultiStageParameter Mode="CHECKBOX" PreviousContent="{Binding ConsolidatedInputData.HVACAux.SeparateAirDistributionDucts}" EditingEnabled="{Binding EditingEnabledDictionary[SeparateAirDistributionDucts]}" - Content="{Binding SeparateAirDistributionDucts,ValidatesOnDataErrors=True}"/> + Content="{Binding SeparateAirDistributionDucts,ValidatesOnDataErrors=True}"/>--> + <ContentControl Content="{Binding ParameterViewModels[AuxHeaterPower]}"/> + <ContentControl Content="{Binding ParameterViewModels[DoubleGlazing]}"/> + <ContentControl Content="{Binding ParameterViewModels[AdjustableAuxiliaryHeater]}"/> + <ContentControl Content="{Binding ParameterViewModels[SeparateAirDistributionDucts]}"/> + - <StackPanel Visibility="{Binding PrimaryVehicleHybridElectric, Converter={StaticResource BooleanToVisibilityConverter}}"> + <!--<StackPanel Visibility="{Binding PrimaryVehicleHybridElectric, Converter={StaticResource BooleanToVisibilityConverter}}"> <customControls:MultiStageParameter Mode="CHECKBOX" PreviousContent="{Binding ConsolidatedInputData.HVACAux.WaterElectricHeater}" Content="{Binding WaterElectricHeater,ValidatesOnDataErrors=True}" @@ -110,7 +116,7 @@ PreviousContent="{Binding ConsolidatedInputData.HVACAux.OtherHeatingTechnology}" EditingEnabled="{Binding OtherHeatingTechnology}" Content="{Binding OtherHeatingTechnology,ValidatesOnDataErrors=True}"/> - </StackPanel> + </StackPanel>--> <Separator/> </StackPanel> </DockPanel> diff --git a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml index 3eb4584508a506adcebea3e1751586bf590a7697..2b7cf405dff4475dcd99a4fea093e590e40558b9 100644 --- a/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml +++ b/VECTO3GUI2020/Views/Multistage/MultistageAirDragView.xaml @@ -30,13 +30,13 @@ </DockPanel> <StackPanel HorizontalAlignment="Stretch" Margin="4" > - + <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> <StackPanel Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}}"> - <Label Style="{DynamicResource LabelStyle1}">Consolidated Airdrag Data</Label> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Manufacturer, Mode=OneWay}" ReadOnly="True"/> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.Model, Mode=OneWay}" ReadOnly="True"/> <customControlsMultistage:LabledTextBoxMultistage Content="{Binding ConsolidatedAirdragData.AirDragArea, Mode=OneWay}" ReadOnly="True"/> </StackPanel> + <Label Visibility="{Binding ConsolidatedAirdragData, Converter={StaticResource NullToVisibilityConverter}, ConverterParameter=invert}">No data set</Label> <Label Style="{DynamicResource LabelStyle1}">Data from File</Label> <ContentControl Content="{Binding AirDragViewModel}" Visibility="{Binding AirDragViewModel, Converter={StaticResource NullToVisibilityConverter}}"> diff --git a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml index 6614ba66c2aaef540306fde172836b4e93e7fdc2..1befd179aa906fa8d25dfe946634c04a767de114 100644 --- a/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml +++ b/VECTO3GUI2020/Views/Multistage/VehicleView_v2_8.xaml @@ -15,6 +15,11 @@ <Setter Property="NameLookUpResourceManager" Value="{x:Static properties:BusStrings.ResourceManager}"/> <Setter Property="Validation.ErrorTemplate" Value="{StaticResource multistageParameterControlErrorTemplate}"/> </Style> + + <Style TargetType="ContentControl"> + <Setter Property="ContentTemplateSelector" Value="{DynamicResource MultistageParameterTemplateSelector}"/> + <Setter Property="IsTabStop" Value="False"></Setter> + </Style> </UserControl.Resources> <!--RelativeSource={x:Static RelativeSource.Self}, {Binding RelativeSource={x:Static RelativeSource.Self}, Path=Name}] @@ -26,155 +31,93 @@ <Label Content="VEHICLE DATA" HorizontalAlignment="Stretch" FontSize="15" VerticalAlignment="Stretch" Style="{DynamicResource LabelStyle1}"/> - <custom:MultiStageParameter - Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - Optional="False" - Content="{Binding Manufacturer, ValidatesOnDataErrors=True}" - PreviousContent="{Binding }"/> - <custom:MultiStageParameter - Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - Optional="False" - Content="{Binding ManufacturerAddress, ValidatesOnDataErrors=True}"/> - <custom:MultiStageParameter - Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - Optional="False" - Content="{Binding VIN, ValidatesOnDataErrors=True}"/> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.Model}" - Content="{Binding Model, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[Model]}"/> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.LegislativeClass}" - EditingEnabled="{Binding EditingEnabledDictionary[LegislativeClass]}" - Content="{Binding LegislativeClass, ValidatesOnDataErrors=True}" - Mode="COMBOBOX" /> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.CurbMassChassis}" - EditingEnabled="{Binding EditingEnabledDictionary[CurbMassChassis]}" - Content="{Binding CurbMassChassis, ValidatesOnDataErrors=True}"/> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.GrossVehicleMassRating}" - EditingEnabled="{Binding EditingEnabledDictionary[GrossVehicleMassRating]}" - Content="{Binding GrossVehicleMassRating, ValidatesOnDataErrors=True}"/> - - - <custom:MultiStageParameter - Label="Airdrag modified" - EditingEnabled="{Binding AirdragModifiedMultistageEditingEnabled}" - PreviousContent="{Binding ConsolidatedAirdragmodified}" - Content="{Binding AirdragModifiedEnum, ValidatesOnDataErrors=True}" - Mode="COMBOBOX"/> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.TankSystem}" - Content="{Binding TankSystem, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[TankSystem]}" - Mode="COMBOBOX"> - </custom:MultiStageParameter> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.RegisteredClass}" - Content="{Binding RegisteredClass, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[RegisteredClass]}" - Mode="COMBOBOX" /> - <Separator/> - <custom:MultiStageParameter - EditingEnabled="{Binding NumberOfPassengersEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.NumberOfPassengersUpperDeck, ValidatesOnDataErrors=True}" - Content="{Binding NumberOfPassengersUpperDeck}"/> - <custom:MultiStageParameter - EditingEnabled="{Binding NumberOfPassengersEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.NumberOfPassengersLowerDeck, ValidatesOnDataErrors=True}" - Content="{Binding NumberOfPassengersLowerDeck}" - ShowCheckBox="False"/> - <Separator/> - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.VehicleCode}" - ListItems="{Binding VehicleCodeAllowedValues}" - Content="{Binding VehicleCode, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[VehicleCode]}" - Mode="COMBOBOX" - /> - - <custom:MultiStageParameter - PreviousContent="{Binding ConsolidatedVehicleData.LowEntry}" - Content="{Binding LowEntry, ValidatesOnDataErrors=True}" - EditingEnabled="{Binding EditingEnabledDictionary[LowEntry]}" - Mode="CHECKBOX" - /> - - <Separator/> - <custom:MultiStageParameter Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - EditingEnabled="{Binding - MeasurementsGroupEditingEnabled}" - PreviousContent="{Binding ConsolidatedHeightInMm}" - Content="{Binding HeightInMm, ValidatesOnExceptions=True}" - DummyContent="{Binding Source={StaticResource milimeterDummy}}"/> - <custom:MultiStageParameter Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - EditingEnabled="{Binding MeasurementsGroupEditingEnabled}" - PreviousContent="{Binding ConsolidatedWidthInMm}" - Content="{Binding WidthInMm, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - DummyContent="{Binding Source={StaticResource milimeterDummy}}"/> - <custom:MultiStageParameter Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - EditingEnabled="{Binding MeasurementsGroupEditingEnabled}" - PreviousContent="{Binding ConsolidatedLengthInMm}" - Content="{Binding LengthInMm, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - DummyContent="{Binding Source={StaticResource milimeterDummy}}"/> - - <custom:MultiStageParameter Validation.ErrorTemplate="{StaticResource multistageParameterControlErrorTemplate}" - EditingEnabled="{Binding MeasurementsGroupEditingEnabled}" - PreviousContent="{Binding ConsolidatedEntranceHeightInMm}" - Content="{Binding EntranceHeightInMm, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - DummyContent="{Binding Source={StaticResource milimeterDummy}}"/> - - <Separator/> - - - <custom:MultiStageParameter - x:Name="DoorDriveTechnology" - PreviousContent="{Binding ConsolidatedVehicleData.DoorDriveTechnology}" - EditingEnabled="{Binding EditingEnabledDictionary[DoorDriveTechnology]}" - Content="{Binding DoorDriveTechnology, ValidatesOnDataErrors=True}" Mode="COMBOBOX" /> - - - <custom:MultiStageParameter - EditingEnabled="True" - ShowCheckBox="False" - PreviousContent="{Binding ConsolidatedVehicleData.VehicleDeclarationType}" - Content="{Binding VehicleDeclarationType, ValidatesOnDataErrors=True}" Mode="COMBOBOX" /> - - <Label Content="ADAS" Style="{DynamicResource LabelStyle1}"/> - <custom:MultiStageParameter - EditingEnabled="{Binding AdasEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.ADAS.EngineStopStart}" - Content="{Binding EngineStopStartNullable, ValidatesOnDataErrors=True}" - Mode="CHECKBOX"/> - <custom:MultiStageParameter - EditingEnabled="{Binding AdasEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.ADAS.EcoRoll}" - Content="{Binding EcoRollTypeNullable, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - Mode="COMBOBOX"/> - <custom:MultiStageParameter - EditingEnabled="{Binding AdasEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.ADAS.PredictiveCruiseControl}" - Content="{Binding PredictiveCruiseControlNullable, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - Mode="COMBOBOX"/> - <custom:MultiStageParameter - EditingEnabled="{Binding AdasEditingEnabled}" - PreviousContent="{Binding ConsolidatedVehicleData.ADAS.ATEcoRollReleaseLockupClutch}" - Content="{Binding ATEcoRollReleaseLockupClutch, ValidatesOnDataErrors=True}" - ShowCheckBox="False" - Mode="CHECKBOX"/> - </StackPanel> + + <ContentControl Content="{Binding ParameterViewModels[Manufacturer]}" > + </ContentControl> + + + <ContentControl Content="{Binding ParameterViewModels[ManufacturerAddress]}"/> + + <ContentControl Content="{Binding ParameterViewModels[VIN]}"/> + + + <ContentControl Content="{Binding ParameterViewModels[Model]}"/> + + + <ContentControl Content="{Binding ParameterViewModels[LegislativeClass]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[CurbMassChassis]}"/> + + <ContentControl Content="{Binding + ParameterViewModels[GrossVehicleMassRating]}"></ContentControl> + + + <ContentControl + Content="{Binding ParameterViewModels[AirdragModifiedEnum]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[TankSystem]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[RegisteredClass]}"/> + + <Separator/> + <ContentControl + Content="{Binding ParameterViewModels[NumberOfPassengersUpperDeck]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[NumberOfPassengersLowerDeck]}"/> + <Separator/> + + <ContentControl + Content="{Binding ParameterViewModels[VehicleCode]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[LowEntry]}"/> + <Separator/> + + <ContentControl + Content="{Binding ParameterViewModels[HeightInMm]}"/> + + + + <ContentControl + Content="{Binding ParameterViewModels[WidthInMm]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[LengthInMm]}"/> + + + + + <ContentControl + Content="{Binding ParameterViewModels[EntranceHeightInMm]}"/> + <Separator/> + + <ContentControl + Content="{Binding ParameterViewModels[DoorDriveTechnology]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[VehicleDeclarationType]}"/> + + <Label Content="ADAS" Style="{DynamicResource LabelStyle1}"/> + + <ContentControl + Content="{Binding ParameterViewModels[EngineStopStartNullable]}"/> + + + + <ContentControl + Content="{Binding ParameterViewModels[EcoRollTypeNullable]}"/> + + + <ContentControl + Content="{Binding ParameterViewModels[PredictiveCruiseControlNullable]}"/> + + <ContentControl + Content="{Binding ParameterViewModels[ATEcoRollReleaseLockupClutch]}"/> + </StackPanel> </DockPanel> </ScrollViewer> </Grid> diff --git a/VECTO3GUI2020/Views/OutputView.xaml b/VECTO3GUI2020/Views/OutputView.xaml index 03784a8b05949d55c1fc1fe9811e1a66d349eb84..89a5c64cec674706e509832a5e5295d41a458ee2 100644 --- a/VECTO3GUI2020/Views/OutputView.xaml +++ b/VECTO3GUI2020/Views/OutputView.xaml @@ -14,7 +14,13 @@ IsReadOnly="True" HeadersVisibility="All" RowHeaderWidth="5" Name="MessageList"> <DataGrid.Columns> - <DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*" /> + <DataGridTextColumn Header="Message" Binding="{Binding Message}" Width="*"> + <DataGridTextColumn.ElementStyle> + <Style> + <Setter Property="TextBlock.TextWrapping" Value="Wrap" /> + </Style> + </DataGridTextColumn.ElementStyle> + </DataGridTextColumn> <DataGridTextColumn Header="Time" Binding="{Binding Time}" Width="130" /> </DataGrid.Columns> <DataGrid.RowStyle> diff --git a/VECTO3GUI2020/Views/SettingsView.xaml b/VECTO3GUI2020/Views/SettingsView.xaml index b026ea4a7bae84508a5d5df3b98a7e0a4ce289f0..3f8531f45b33c0e6b998e3a5ee58e71282ec22df 100644 --- a/VECTO3GUI2020/Views/SettingsView.xaml +++ b/VECTO3GUI2020/Views/SettingsView.xaml @@ -7,9 +7,64 @@ xmlns:customControls="clr-namespace:VECTO3GUI2020.Views.Multistage.CustomControls" xmlns:implementation="clr-namespace:VECTO3GUI2020.ViewModel.Implementation" mc:Ignorable="d" Height="450" Width="800" d:DataContext="{d:DesignInstance implementation:SettingsViewModel }"> + <UserControl.Resources> + <Style TargetType="Label"> + <Setter Property="Margin" Value="4 4 4 4"></Setter> + <Setter Property="Padding" Value="4 4 4 4"></Setter> + </Style> + <Style TargetType="CheckBox"> + <Setter Property="Margin" Value="4 4 4 4"></Setter> + <Setter Property="Padding" Value="4 4 4 4"></Setter> + <Setter Property="VerticalAlignment" Value="Center"></Setter> + </Style> + </UserControl.Resources> + <Grid> - <StackPanel> - <customControls:FilePicker Width="450" MinWidth="400" Text="{Binding DefaultFilePath}" HorizontalAlignment="Stretch" Command="{Binding ChangeFilePath}"/> - </StackPanel> + <DockPanel LastChildFill="False"> + <Grid DockPanel.Dock="Top"> + <Grid.ColumnDefinitions> + <ColumnDefinition Width="1*"/> + <ColumnDefinition Width="1*"></ColumnDefinition> + <ColumnDefinition Width="1*"></ColumnDefinition> + <ColumnDefinition Width="1*"></ColumnDefinition> + </Grid.ColumnDefinitions> + <Grid.RowDefinitions> + <RowDefinition Height="Auto"></RowDefinition> + <RowDefinition Height="30"></RowDefinition> + <RowDefinition Height="30"></RowDefinition> + <RowDefinition Height="30"></RowDefinition> + </Grid.RowDefinitions> + + + <Label Grid.Row="0" Grid.Column="0" DockPanel.Dock="Left">Default Path</Label> + <customControls:FilePicker Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" DockPanel.Dock="Right" + Text="{Binding DefaultFilePath}" + HorizontalAlignment="Stretch" Command="{Binding ChangeFilePath}"/> + + <Label Grid.Row="1" Grid.Column="0">Serialize Vecto Run Data</Label> + <CheckBox Grid.Row="1" Grid.Column="1" IsChecked="{Binding SerializeVectoRunData}"></CheckBox> + + <Label Grid.Row="1" Grid.Column="2">Write Modal Results</Label> + <CheckBox Grid.Row="1" Grid.Column="3" IsChecked="{Binding WriteModalResults}"></CheckBox> + + <Label Grid.Row="2" Grid.Column="0">Validate</Label> + <CheckBox Grid.Row="2" Grid.Column="1" IsChecked="{Binding Validate}"></CheckBox> + + <Label Grid.Row="2" Grid.Column="2">Actual Modal Data</Label> + <CheckBox Grid.Row="2" Grid.Column="3" IsChecked="{Binding ActualModalData}"></CheckBox> + + <Label Grid.Row="3" Grid.Column="0">ModalResults1Hz</Label> + <CheckBox Grid.Row="3" Grid.Column="1" IsChecked="{Binding ModalResults1Hz}"></CheckBox> + </Grid> + <!--<DockPanel DockPanel.Dock="Bottom" LastChildFill="False"> + <Button DockPanel.Dock="Right" + Width="100" + Command="{Binding CloseWindowCommand}" + CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" + Style="{DynamicResource MultiStageButtonStyle1}" + Margin="4" + Padding="4">Close</Button> + </DockPanel>--> + </DockPanel> </Grid> </UserControl> diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration.vsum b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration.vsum new file mode 100644 index 0000000000000000000000000000000000000000..9739a6c16b86fdf56a57d9ea42fccc65eb704dc7 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration.vsum @@ -0,0 +1,11 @@ +# VECTO-DEV 0.7.3.2247-DEV - 21.05.2021 09:51 +Job [-],Input File [-],Cycle [-],Status,Vehicle manufacturer [-],VIN number,Vehicle model [-],HDV CO2 vehicle class [-],Corrected Actual Curb Mass [kg],Loading [kg],Passenger count [-],Total vehicle mass [kg],Engine manufacturer [-],Engine model [-],Engine fuel type [-],Engine rated power [kW],Engine idling speed [rpm],Engine rated speed [rpm],Engine displacement [ccm],Engine WHTCUrban,Engine WHTCRural,Engine WHTCMotorway,Engine BFColdHot,Engine CFRegPer,Engine actual CF,Vehicle fuel type [-],AirDrag model [-],Declared CdxA [m²],CdxA [m²],Sleeper cab [-],Declared RRC axle 1 [-],Declared FzISO axle 1 [N],Declared RRC axle 2 [-],Declared FzISO axle 2 [N],Declared RRC axle 3 [-],Declared FzISO axle 3 [N],Declared RRC axle 4 [-],Declared FzISO axle 4 [N],total RRC [-],weighted RRC w/o trailer [-],r_dyn [m],Number axles vehicle driven [-],Number axles vehicle non-driven [-],Number axles trailer [-],Gearbox manufacturer [-],Gearbox model [-],Gearbox type [-],Gear ratio first gear [-],Gear ratio last gear [-],Torque converter manufacturer [-],Torque converter model [-],Retarder manufacturer [-],Retarder model [-],Retarder type [-],Angledrive manufacturer [-],Angledrive model [-],Angledrive ratio [-],Axle manufacturer [-],Axle model [-],Axle gear ratio [-],Auxiliary technology STP [-],Auxiliary technology FAN [-],Auxiliary technology AC [-],Auxiliary technology PS [-],Auxiliary technology ES [-],ShiftStrategy,ADAS technology combination [-],PTOShaftsGearWheels,REESS Capacity,Cargo Volume [m³],time [s],distance [km],speed [km/h],altitudeDelta [m],FC-Map [g/h],FC-Map [g/km],FC-NCVc [g/h],FC-NCVc [g/km],FC-WHTCc [g/h],FC-WHTCc [g/km],FC-ESS [g/h],FC-ESS [g/km],FC-ESS_Corr [g/h],FC-ESS_Corr [g/km],FC-BusAux_PS_Corr [g/h],FC-BusAux_PS_Corr [g/km],FC-BusAux_ES_Corr [g/h],FC-BusAux_ES_Corr [g/km],FC-WHR_Corr [g/h],FC-WHR_Corr [g/km],FC-BusAux_AuxHeater [g/h],FC-BusAux_AuxHeater [g/km],FC-BusAux_AuxHeater_Corr [g/h],FC-BusAux_AuxHeater_Corr [g/km],FC-Final [g/h],FC-Final [g/km],FC-Final [l/100km],FC-Final [l/100tkm],FC-Final [l/100m³km],FC-Final [l/100Pkm],k_vehline [g/kWh],k_engline [g/kWh],CO2 [g/km],CO2 [g/tkm],CO2 [g/m³km],CO2 [g/Pkm],P_wheel_in [kW],P_wheel_in_pos [kW],P_fcmap [kW],P_fcmap_pos [kW],E_fcmap_pos [kWh],E_fcmap_neg [kWh],E_powertrain_inertia [kWh],E_aux_FAN [kWh],E_aux_STP [kWh],E_aux_sum [kWh],E_aux_el(HV) [kWh],E_clutch_loss [kWh],E_tc_loss [kWh],E_shift_loss [kWh],E_gbx_loss [kWh],E_ret_loss [kWh],E_angle_loss [kWh],E_axl_loss [kWh],E_brake [kWh],E_vehi_inertia [kWh],E_air [kWh],E_roll [kWh],E_grad [kWh],BusAux PS air consumed [Nl],BusAux PS air generated [Nl],E_PS_compressorOff [kWh],E_PS_compressorOn [kWh],E_BusAux_ES_consumed [kWh],E_BusAux_ES_generated [kWh],ΔE_BusAux_Bat [kWh],E_BusAux_PS_corr [kWh],E_BusAux_ES_mech_corr [kWh],E_BusAux_HVAC_mech [kWh],E_BusAux_HVAC_el [kWh],E_BusAux_AuxhHeater [kWh],E_WHR_el [kWh],E_WHR_mech [kWh],E_ice_start [kWh],ice_starts [-],a [m/s^2],a_pos [m/s^2],a_neg [m/s^2],AccelerationTimeShare [%],DecelerationTimeShare [%],CruiseTimeShare [%],max. speed [km/h],max. acc [m/s²],max. dec [m/s²],n_eng_avg [rpm],n_eng_max [rpm],gear shifts [-],StopTimeShare [%],ICE max. Load time share [%],ICE off time share [%],CoastingTimeShare [%],BrakingTimeShare [%],a_avg_acc,Engine certification number,Average engine efficiency [-],Torque converter certification option,TorqueConverter certification number,Average torque converter efficiency w/o lockup [-],Average torque converter efficiency with lockup [-],Gearbox certification option,Gearbox certification number,Average gearbox efficiency [-],Retarder certification option,Retarder certification number,Angledrive certification option,Angledrive certification number,Average angledrive efficiency [-],Axlegear certification method,Axlegear certification number,Average axlegear efficiency [-],AirDrag certification number,AirDrag certification option,Gear 0 TimeShare [%],Gear 1 TimeShare [%],Gear 2 TimeShare [%],Gear 3 TimeShare [%],Gear 4 TimeShare [%],Gear 5 TimeShare [%],Gear 6 TimeShare [%] +1-0,VEH-8ed9de9562b44fd8b856,Interurban.vdri,Success,Some Manufacturer,VEH-1234567890,Sample Bus Model,32b,8300.0000,1058.5088,14.908575,9358.5088,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,0348485",Diesel CI,Generic Model,6.3400,6.3400,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00644681704423115,0.00644681704423115,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"7 (non_R_744_4_stage, non_R_744_2_stage)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,12817.8502,123.5900,34.7113,1.3106,8305.8968,239.2852,8305.8968,239.2852,8595.3449,247.6240,8595.3449,247.6240,8595.3449,247.6240,8501.9220,244.9325,8501.9220,244.9325,8501.9220,244.9325,0.0000,0.0000,8501.9220,244.9325,8501.9220,244.9325,29.2981,27.6787,,1.9652,232.5656,183.5391,766.6388,724.2631,,51.4227,15.4633,26.2126,39.3269,40.7038,144.9266,4.9024,0.0000,7.1210,2.0184,25.4737,0.0000,0.0000,0.1207,1.1546,11.0976,8.1684,0.0000,17.3940,22.7125,0.0000,34.7473,20.3048,0.0053,9822.4238,21234.7006,1.5746,5.0063,7.4427,10.6325,0.0000,-1.8123,0.0000,0.6955,1.9833,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.7138,-0.7229,18.1350,17.7581,50.7755,85.0000,1.0000,0.9400,1178.2155,2259.9238,913.0000,13.3314,5.5934,0.0000,0.0000,17.5144,0.6574,,0.399251564330983,Standard values,,0.99902428182543,0.913534455455257,Standard values,,0.915847700773797,Standard values,,,,,Standard values,,0.875661847626441,e12*0815/8051*2017/05E0000*00,Measured,14.8102,5.4163,5.6466,15.0517,21.4414,17.7497,19.8841 +1-1,VEH-8ed9de9562b44fd8b856,Interurban.vdri,Success,Generic Truck Manufacturer,VEH-1234567890_nonSmart,Generic Model,P32SD,13150.0000,1075.4370,15.147,14225.4370,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,0348485",Diesel CI,,3.4500,3.4500,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.0061824334364119,0.0061824334364119,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"6 (non_R_744_2_stage, none)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,12921.8960,123.5900,34.4318,1.3106,9579.6110,278.2200,9579.6110,278.2200,9913.4461,287.9155,9913.4461,287.9155,9913.4461,287.9155,9802.1996,284.6846,9802.1996,284.6846,9802.1996,284.6846,0.0000,0.0000,9802.1996,284.6846,9802.1996,284.6846,34.0532,31.6645,,2.2482,229.2541,186.0467,891.0627,828.5588,,58.8277,13.6622,32.2871,44.7764,46.6921,167.5973,6.8761,-0.0006,7.1788,2.0449,25.8862,0.0000,0.0000,0.3317,1.6835,13.6051,8.1006,0.0000,17.8545,45.9229,0.0006,19.4344,29.5985,0.0060,10634.3311,24127.5500,1.6709,5.5711,7.2366,10.3380,0.0000,-2.1463,0.0000,0.7534,2.2190,0.0000,0.0000,0.0000,0.0000,0.0000,0.0001,0.6578,-0.7160,19.2257,17.6180,49.9322,86.5000,1.0000,1.9398,1201.9875,2353.7884,919.0000,13.2241,11.8051,0.0000,0.0000,17.0948,0.5601,,0.397093918570611,Standard values,,0.997746369278747,0.807438962143271,Standard values,,0.913823642202997,Standard values,,,,,Standard values,,0.902977861638706,,Standard values,14.7022,5.6412,6.4592,15.5898,22.8465,16.1885,18.5726 +1-2,VEH-8ed9de9562b44fd8b856,Interurban.vdri,Success,Some Manufacturer,VEH-1234567890,Sample Bus Model,32b,8300.0000,2130.0000,30,10430.0000,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,0348485",Diesel CI,Generic Model,6.3400,6.3400,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00637731075673822,0.00637731075673822,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"7 (non_R_744_4_stage, non_R_744_2_stage)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,12841.0204,123.5900,34.6486,1.3106,8760.5109,252.8385,8760.5109,252.8385,9065.8015,261.6495,9065.8015,261.6495,9065.8015,261.6495,8968.1018,258.8298,8968.1018,258.8298,8968.1018,258.8298,0.0000,0.0000,8968.1018,258.8298,8968.1018,258.8298,30.9605,14.5354,,1.0320,233.0341,185.2902,810.1372,380.3461,,27.0046,15.9696,28.1687,41.5169,42.9565,153.2236,5.1349,0.0000,7.1339,2.0220,26.5194,0.0000,0.0000,0.1598,1.2509,11.8095,8.1494,0.0000,17.5302,26.9611,0.0000,34.5711,22.3856,0.0059,10000.3558,21845.4647,1.5760,5.1041,7.7803,11.1148,0.0000,-1.8808,0.0000,1.1446,2.3110,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.7018,-0.7200,18.3651,17.7507,50.5769,85.8619,1.0000,0.9400,1178.9158,2254.1075,905.0000,13.3074,6.9932,0.0000,0.0000,17.4122,0.6341,,0.399481849418415,Standard values,,0.998783381709677,0.888586446960969,Standard values,,0.915626140807778,Standard values,,,,,Standard values,,0.884329979085841,e12*0815/8051*2017/05E0000*00,Measured,14.7851,5.4135,5.8695,14.8992,21.6731,17.5902,19.7693 +1-3,VEH-8ed9de9562b44fd8b856,Interurban.vdri,Success,Generic Truck Manufacturer,VEH-1234567890_nonSmart,Generic Model,P32SD,13150.0000,3519.6120,49.572,16669.6120,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,0348485",Diesel CI,,3.4500,3.4500,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00608518045554018,0.00608518045554018,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"6 (non_R_744_2_stage, none)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,13001.3490,123.5900,34.2214,1.3106,10560.5789,308.5960,10560.5789,308.5960,10928.5992,319.3501,10928.5992,319.3501,10928.5992,319.3501,10810.8996,315.9108,10810.8996,315.9108,10810.8996,315.9108,0.0000,0.0000,10810.8996,315.9108,10810.8996,315.9108,37.7884,10.7365,,0.7623,228.6187,186.6465,988.8007,280.9403,,19.9468,14.7495,36.5746,49.6697,51.7367,186.8462,7.4649,-0.0012,7.2230,2.0575,27.9970,0.0000,0.0000,0.4474,1.9284,15.2751,8.0446,0.0000,18.1325,56.3418,0.0016,19.1431,34.1370,-0.0142,11070.0887,25331.4735,1.8635,5.9672,7.6272,10.8960,0.0000,-2.2774,0.0000,1.8534,2.5787,0.0000,0.0000,0.0000,0.0000,0.0000,0.0017,0.6242,-0.7177,20.1190,17.2680,49.4697,86.5000,1.0000,2.2289,1241.5241,2348.9795,891.0000,13.1433,16.1595,0.0000,0.0000,16.7880,0.5133,,0.399124603360318,Standard values,,0.997289827671648,0.780603763723825,Standard values,,0.913529123404111,Standard values,,,,,Standard values,,0.913022638218443,,Standard values,14.6096,5.8754,9.1425,14.6997,23.9821,16.1526,15.5382 +1-4,VEH-8ed9de9562b44fd8b856,Coach.vdri,Success,Some Manufacturer,VEH-1234567890,Sample Bus Model,32b,8300.0000,1077.7544,15.17964,9377.7544,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,009422",Diesel CI,Generic Model,6.3400,6.3400,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00644549276460333,0.00644549276460333,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"7 (non_R_744_4_stage, non_R_744_2_stage)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,15146.0276,275.1760,65.4055,0.8148,16563.2181,253.2389,16563.2181,253.2389,16719.2767,255.6249,16719.2767,255.6249,16719.2767,255.6249,16693.8557,255.2362,16693.8557,255.2362,16693.8557,255.2362,0.0000,0.0000,16693.8557,255.2362,16693.8557,255.2362,30.5307,28.3280,,2.0113,244.1615,183.1941,798.8894,741.2537,,52.6290,51.0541,55.5348,84.3741,85.1362,358.1874,3.2062,0.0000,8.4145,2.1326,30.6697,0.0000,0.0000,0.0206,0.2657,25.5061,28.1717,0.0000,50.9950,4.8907,0.0000,169.5004,45.2958,0.0001,10122.2487,13709.8861,3.5502,5.9077,9.3695,13.3849,0.0000,-0.5838,0.0000,0.8300,2.3436,0.0000,0.0000,0.0000,0.0000,0.0000,0.0000,0.4293,-0.5293,6.3700,5.1384,85.8242,102.5000,1.0000,2.7788,1581.5355,2353.7934,157.0000,2.6674,10.2031,0.0000,0.0000,4.0603,0.1975,,0.429310196023871,Standard values,,0.999937685311305,0.885678562479822,Standard values,,0.924231390036065,Standard values,,,,0,Standard values,,0.83587934120268,e12*0815/8051*2017/05E0000*00,Measured,2.8246,1.3316,0.6657,11.4741,13.1606,8.0139,62.5295 +1-5,VEH-8ed9de9562b44fd8b856,Coach.vdri,Success,Generic Truck Manufacturer,VEH-1234567890_nonSmart,Generic Model,P32SD,13150.0000,1094.9904,15.4224,14244.9904,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,009422",Diesel CI,,3.4500,3.4500,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00618158427943143,0.00618158427943143,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"6 (non_R_744_2_stage, none)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,15260.0325,275.1760,64.9169,0.8148,15167.1563,233.6397,15167.1563,233.6397,15310.0613,235.8410,15310.0613,235.8410,15310.0613,235.8410,15241.0519,234.7780,15241.0519,234.7780,15241.0519,234.7780,0.0000,0.0000,15241.0519,234.7780,15241.0519,234.7780,28.0835,25.6472,,1.8210,229.4290,178.0834,734.8551,671.1064,,47.6486,37.8900,49.7018,74.6115,76.5670,324.5596,8.2892,-0.0008,8.4778,2.1606,31.7478,0.0000,0.0000,0.0534,0.4393,23.8909,28.0713,0.0000,50.6903,21.3687,0.0011,94.6267,65.9876,-0.0037,10322.8199,20394.6601,3.7216,7.1714,9.1266,13.0380,0.0000,-1.6426,0.0000,0.9000,2.6205,0.0000,0.0000,0.0000,0.0000,0.0000,0.0003,0.3738,-0.4895,7.3823,5.6055,84.3648,102.5000,1.0000,2.7105,1605.7077,2353.7884,187.0000,2.6474,14.4408,0.0000,0.0000,3.8837,0.1548,,0.421637488548777,Standard values,,0.999821111621366,0.76920357603673,Standard values,,0.923604551729625,Standard values,,,,,Standard values,,0.834928921279073,,Standard values,2.8029,1.3747,2.1903,11.4035,14.1594,9.4904,58.5788 +1-6,VEH-8ed9de9562b44fd8b856,Coach.vdri,Success,Some Manufacturer,VEH-1234567890,Sample Bus Model,32b,8300.0000,2130.0000,30,10430.0000,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,009422",Diesel CI,Generic Model,6.3400,6.3400,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00637731075673822,0.00637731075673822,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"7 (non_R_744_4_stage, non_R_744_2_stage)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,15197.6227,275.1760,65.1835,0.8148,16920.5314,259.5832,16920.5314,259.5832,17079.9566,262.0290,17079.9566,262.0290,17079.9566,262.0290,17048.1297,261.5407,17048.1297,261.5407,17048.1297,261.5407,0.0000,0.0000,17048.1297,261.5407,17048.1297,261.5407,31.2848,14.6877,,1.0428,243.0648,183.1144,818.6225,384.3298,,27.2874,51.7195,57.1234,85.7708,86.6937,365.9826,3.8958,-0.0009,8.4431,2.1398,31.9813,0.0000,0.0000,0.0258,0.3479,26.2313,28.0630,0.0000,51.0805,6.4548,0.0008,168.4929,49.8451,-0.0020,10183.5406,14693.0157,3.5517,6.0671,9.7850,13.9786,0.0000,-0.7337,0.0000,1.3526,2.7352,0.0000,0.0000,0.0000,0.0000,0.0000,0.0002,0.4156,-0.5103,6.6009,5.3621,85.3786,102.5000,1.0000,2.7426,1578.3871,2353.7932,173.0000,2.6583,13.3860,0.0000,0.0000,3.9944,0.1628,,0.427932406139085,Standard values,,0.99992349134787,0.867669830655071,Standard values,,0.92401479165345,Standard values,,,,,Standard values,,0.841153733013261,e12*0815/8051*2017/05E0000*00,Measured,2.8161,1.3271,0.7295,11.5919,13.1697,7.7246,62.6412 +1-7,VEH-8ed9de9562b44fd8b856,Coach.vdri,Success,Generic Truck Manufacturer,VEH-1234567890_nonSmart,Generic Model,P32SD,13150.0000,2737.4760,38.556,15887.4760,,,Diesel CI,220.0000,700.0000,2200.0000,7700.0000,"1,05","1,02",1,"1,005",1,"1,009422",Diesel CI,,3.4500,3.4500,no,0.0055,31300.0000,0.0063,31300.0000,,,,,0.00611449395690455,0.00611449395690455,0.4922,1,1,0,Generic Gearbox Manufacturer,AT 6 Gear,ATSerial,3.3640,0.6150,,,,,Secondary Retarder,N/A,N/A,N/A,,,6.5000,Variable displacement elec. controlled,Hydraulic driven - Constant displacement pump,"6 (non_R_744_2_stage, none)",Large Supply 2-stage - none,Conventional,AT - EffShift,0,,,0.0000,15350.2204,275.1760,64.5355,0.8148,15793.7947,244.7305,15793.7947,244.7305,15942.6039,247.0363,15942.6039,247.0363,15942.6039,247.0363,15870.2281,245.9148,15870.2281,245.9148,15870.2281,245.9148,0.0000,0.0000,15870.2281,245.9148,15870.2281,245.9148,29.4157,10.7455,,0.7629,227.6127,178.1603,769.7134,281.1763,,19.9635,39.0542,52.6702,77.6174,79.7137,339.8953,8.9388,-0.0058,8.5279,2.1734,33.5534,0.0000,0.0000,0.0633,0.5710,25.1866,27.9110,0.0000,50.8393,27.1442,0.0065,93.8163,72.7923,-0.0899,10427.3948,21037.9172,3.8206,7.3789,9.5892,13.6988,0.0000,-1.7322,0.0000,1.7744,3.0446,0.0000,0.0000,0.0000,0.0000,0.0000,0.0051,0.3864,-0.4845,8.3601,5.6308,83.3772,102.5000,1.0000,2.6847,1614.0726,2353.7973,211.0000,2.6319,16.7125,0.0000,0.0000,3.7649,0.1604,,0.421549367470042,Standard values,,0.999797647409761,0.767229587208716,Standard values,,0.923282865687635,Standard values,,,,,Standard values,,0.84475458536789,,Standard values,2.7853,1.3761,3.2291,11.1124,14.4946,9.8085,57.1941 +#@ SHA256: zFagCksmiyBGxS7W278/G6dZRHtGB0G9rYpwMyC0eIU= diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml new file mode 100644 index 0000000000000000000000000000000000000000..283f53b26f531c059263566c1e11cb9c4f325c73 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/SchemaVersion1.0/test.VIF_Report_2.xml @@ -0,0 +1,654 @@ +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> + <vif0.1:PrimaryVehicle> + <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-4121ae4751874cefa376"> + <vif0.1:Vehicle xsi:type="VehiclePIFType"> + <vif0.1:ManufacturerPrimaryVehicle>Generic Truck Manufacturer</vif0.1:ManufacturerPrimaryVehicle> + <vif0.1:ManufacturerAddressPrimaryVehicle>Street, ZIP City</vif0.1:ManufacturerAddressPrimaryVehicle> + <vif0.1:Model>Generic Model</vif0.1:Model> + <vif0.1:VIN>VEH-1234567890_nonSmart</vif0.1:VIN> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:LegislativeCategory>M3</vif0.1:LegislativeCategory> + <vif0.1:ChassisConfiguration>Bus</vif0.1:ChassisConfiguration> + <vif0.1:AxleConfiguration>4x2</vif0.1:AxleConfiguration> + <vif0.1:Articulated>false</vif0.1:Articulated> + <vif0.1:TechnicalPermissibleMaximumLadenMass>28000</vif0.1:TechnicalPermissibleMaximumLadenMass> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:RetarderType>Transmission Output Retarder</vif0.1:RetarderType> + <vif0.1:RetarderRatio>1.000</vif0.1:RetarderRatio> + <vif0.1:AngledriveType>None</vif0.1:AngledriveType> + <vif0.1:ZeroEmissionVehicle>false</vif0.1:ZeroEmissionVehicle> + <vif0.1:ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType"> + <adas:EngineStopStart>false</adas:EngineStopStart> + <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop> + <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop> + <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType"> + <tcl:Entry gear="6" maxTorque="1800" /> + <tcl:Entry gear="1" maxTorque="2500" /> + </vif0.1:TorqueLimits> + <vif0.1:Components xsi:type="VehicleComponentsPIFType"> + <vif0.1:Engine> + <vif0.1:Data xsi:type="EngineDataPIFType"> + <vif0.1:Manufacturer>Generic Engine Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 Engine</vif0.1:Model> + <vif0.1:CertificationNumber>e12*0815/8051*2017/05E0000*00</vif0.1:CertificationNumber> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>VectoEngine x.y</vif0.1:AppVersion> + <vif0.1:Displacement>7700</vif0.1:Displacement> + <vif0.1:RatedSpeed>2200</vif0.1:RatedSpeed> + <vif0.1:RatedPower>220000</vif0.1:RatedPower> + <vif0.1:MaxEngineTorque>1100</vif0.1:MaxEngineTorque> + <vif0.1:WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</ElectricalOutput> + </vif0.1:WHRType> + <vif0.1:Mode> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:FullLoadAndDragCurve> + <vif0.1:Entry engineSpeed="600.00" maxTorque="546.02" dragTorque="-39.66" /> + <vif0.1:Entry engineSpeed="800.00" maxTorque="760.78" dragTorque="-48.83" /> + <vif0.1:Entry engineSpeed="1000.00" maxTorque="973.29" dragTorque="-56.44" /> + <vif0.1:Entry engineSpeed="1200.00" maxTorque="1092.03" dragTorque="-67.29" /> + <vif0.1:Entry engineSpeed="1400.00" maxTorque="1092.03" dragTorque="-77.58" /> + <vif0.1:Entry engineSpeed="1600.00" maxTorque="1092.03" dragTorque="-87.88" /> + <vif0.1:Entry engineSpeed="1800.00" maxTorque="1022.52" dragTorque="-94.11" /> + <vif0.1:Entry engineSpeed="2000.00" maxTorque="944.17" dragTorque="-100.76" /> + <vif0.1:Entry engineSpeed="2200.00" maxTorque="868.12" dragTorque="-113.36" /> + <vif0.1:Entry engineSpeed="2400.00" maxTorque="741.99" dragTorque="-122.60" /> + <vif0.1:Entry engineSpeed="2500.00" maxTorque="647.29" dragTorque="-126.66" /> + <vif0.1:Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-132.07" /> + </vif0.1:FullLoadAndDragCurve> + <vif0.1:Fuels> + <vif0.1:FuelType>Diesel CI</vif0.1:FuelType> + </vif0.1:Fuels> + </vif0.1:Mode> + </vif0.1:Data> + </vif0.1:Engine> + <vif0.1:Transmission> + <vif0.1:Data xsi:type="TransmissionDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>AT 6 Gear</vif0.1:Model> + <vif0.1:MainCertificationMethod>Standard values</vif0.1:MainCertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:TransmissionType>APT-S</vif0.1:TransmissionType> + <vif0.1:Gears xsi:type="TransmissionGearsPIFType"> + <vif0.1:Gear number="1"> + <vif0.1:Ratio>3.364</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="2"> + <vif0.1:Ratio>1.909</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="3"> + <vif0.1:Ratio>1.421</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="4"> + <vif0.1:Ratio>1.000</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="5"> + <vif0.1:Ratio>0.720</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="6"> + <vif0.1:Ratio>0.615</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + </vif0.1:Gears> + </vif0.1:Data> + </vif0.1:Transmission> + <vif0.1:Axlegear> + <vif0.1:Data xsi:type="AxlegearDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 AxleGear</vif0.1:Model> + <vif0.1:CertificationMethod>Standard values</vif0.1:CertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:LineType>Single portal axle</vif0.1:LineType> + <vif0.1:Ratio>6.500</vif0.1:Ratio> + </vif0.1:Data> + </vif0.1:Axlegear> + <vif0.1:AxleWheels> + <vif0.1:Data xsi:type="AxleWheelsDataPIFType"> + <vif0.1:Axles> + <vif0.1:Axle axleNumber="1" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + <vif0.1:Axle axleNumber="2" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + </vif0.1:Axles> + </vif0.1:Data> + </vif0.1:AxleWheels> + <vif0.1:Auxiliaries> + <vif0.1:Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType"> + <vif0.1:Fan> + <vif0.1:Technology>Hydraulic driven - Constant displacement pump</vif0.1:Technology> + </vif0.1:Fan> + <vif0.1:SteeringPump> + <vif0.1:Technology axleNumber="1">Variable displacement elec. controlled</vif0.1:Technology> + </vif0.1:SteeringPump> + <vif0.1:ElectricSystem> + <vif0.1:AlternatorTechnology>conventional</vif0.1:AlternatorTechnology> + <vif0.1:SupplyFromHEVPossible>false</vif0.1:SupplyFromHEVPossible> + </vif0.1:ElectricSystem> + <vif0.1:PneumaticSystem> + <vif0.1:SizeOfAirSupply>Large Supply 2-stage</vif0.1:SizeOfAirSupply> + <vif0.1:CompressorDrive>mechanically</vif0.1:CompressorDrive> + <vif0.1:Clutch>none</vif0.1:Clutch> + <vif0.1:CompressorRatio>1.000</vif0.1:CompressorRatio> + <vif0.1:SmartCompressionSystem>true</vif0.1:SmartCompressionSystem> + <vif0.1:SmartRegenerationSystem>false</vif0.1:SmartRegenerationSystem> + <vif0.1:AirsuspensionControl>electronically</vif0.1:AirsuspensionControl> + <vif0.1:PneumaticSCRReagentDosing>true</vif0.1:PneumaticSCRReagentDosing> + </vif0.1:PneumaticSystem> + <vif0.1:HVAC> + <vif0.1:AdjustableCoolantThermostat>true</vif0.1:AdjustableCoolantThermostat> + <vif0.1:EngineWasteGasHeatExchanger>true</vif0.1:EngineWasteGasHeatExchanger> + </vif0.1:HVAC> + </vif0.1:Data> + </vif0.1:Auxiliaries> + </vif0.1:Components> + </vif0.1:Vehicle> + <vif0.1:InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_nonSmart"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>gi7smqIT9b/iNr6yBm49IkS5ylirBLyHvjZQqlNpzUA=</di:DigestValue> + </di:Reference> + </vif0.1:InputDataSignature> + <vif0.1:ManufacturerRecordSignature> + <di:Reference URI="#RESULT-d5c4bf1b86394fd7b822"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>/z2B3MvXZr1k8vYmINK/6DLaXPreBcwwmHhHsfDvJRo=</di:DigestValue> + </di:Reference> + </vif0.1:ManufacturerRecordSignature> + <vif0.1:Results> + <vif0.1:Status>success</vif0.1:Status> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.73851</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1520.18</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">24.94611</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1828.60</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">16.93598</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1241.44</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.36950</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1493.13</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.03487</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1102.09</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">18.14589</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1330.13</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">12854.90</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">879.90</vif0.1:Payload> + <vif0.1:PassengerCount>12.39</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.90679</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">946.09</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15494.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.34621</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1051.61</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">21.81903</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1599.38</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">26.59833</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1949.71</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">17.82311</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1306.47</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">21.69768</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1590.49</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.74932</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1154.46</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.17775</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1405.77</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14225.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.19757</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">967.41</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16669.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.54412</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1066.11</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14244.99</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1094.99</vif0.1:Payload> + <vif0.1:PassengerCount>15.42</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.13867</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">816.49</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15887.48</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">2737.48</vif0.1:Payload> + <vif0.1:PassengerCount>38.56</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.58643</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">849.31</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14662.82</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1262.82</vif0.1:Payload> + <vif0.1:PassengerCount>17.79</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.62230</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">998.54</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17609.41</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">4209.41</vif0.1:Payload> + <vif0.1:PassengerCount>59.29</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.22020</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1115.67</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14747.01</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1347.01</vif0.1:Payload> + <vif0.1:PassengerCount>18.97</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.61807</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">851.63</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16767.53</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3367.53</vif0.1:Payload> + <vif0.1:PassengerCount>47.43</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.15012</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">890.63</vif0.1:CO2> + </vif0.1:Result> + </vif0.1:Results> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.6.1.1975-DEV !!NOT FOR CERTIFICATION!!</vif0.1:SimulationToolVersion> + <vif0.1:Date>2020-08-06T06:54:52.9756421Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#PIF-4121ae4751874cefa376"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>YnCPep7uMh3ghMrx6ZsEMLanOijFCZpku+ZDNd6rkLw=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:PrimaryVehicle> + <vif0.1:ManufacturingStage stageCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-ab066054c1bc431db1e3"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#PIF-4121ae4751874cefa376"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>YnCPep7uMh3ghMrx6ZsEMLanOijFCZpku+ZDNd6rkLw=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-a00526e499f144139792"> + <v2.8:Manufacturer>Some Manufacturer</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Infinite Loop 1</v2.8:ManufacturerAddress> + <v2.8:VIN>VEH-1234567890</v2.8:VIN> + <v2.8:Date>2021-05-23T22:00:00Z</v2.8:Date> + <v2.8:Model>Sample Bus Model</v2.8:Model> + <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> + <v2.8:CorrectedActualMass>8300</v2.8:CorrectedActualMass> + <v2.8:TechnicalPermissibleMaximumLadenMass>18000</v2.8:TechnicalPermissibleMaximumLadenMass> + <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> + <v2.8:ClassBus>II+III</v2.8:ClassBus> + <v2.8:NumberPassengersLowerDeck>30</v2.8:NumberPassengersLowerDeck> + <v2.8:NumberPassengersUpperDeck>0</v2.8:NumberPassengersUpperDeck> + <v2.8:BodyworkCode>CA</v2.8:BodyworkCode> + <v2.8:LowEntry>true</v2.8:LowEntry> + <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> + <v2.8:VehicleLength>11830</v2.8:VehicleLength> + <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> + <v2.8:EntranceHeight>120</v2.8:EntranceHeight> + <v2.8:DoorDriveTechnology>pneumatic</v2.8:DoorDriveTechnology> + <v2.8:VehicleDeclarationType>final</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:AirDrag> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <Signature xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <di:Reference URI="#CabinX23h" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </Signature> + </v2.8:AirDrag> + <v2.8:Auxiliaries> + <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> + <v2.8:ElectricSystem> + <v2.8:LEDLights> + <v2.8:Interiorlights>false</v2.8:Interiorlights> + <v2.8:Dayrunninglights>false</v2.8:Dayrunninglights> + <v2.8:Positionlights>false</v2.8:Positionlights> + <v2.8:Brakelights>false</v2.8:Brakelights> + <v2.8:Headlights>false</v2.8:Headlights> + </v2.8:LEDLights> + </v2.8:ElectricSystem> + <v2.8:HVAC> + <v2.8:SystemConfiguration>7</v2.8:SystemConfiguration> + <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> + <v2.8:HeatPumpModeDriverCompartment>cooling</v2.8:HeatPumpModeDriverCompartment> + <v2.8:HeatPumpTypePassengerCompartment>non R-744 4-stage</v2.8:HeatPumpTypePassengerCompartment> + <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> + <v2.8:AuxiliaryHeaterPower>0</v2.8:AuxiliaryHeaterPower> + <v2.8:DoubleGlazing>true</v2.8:DoubleGlazing> + <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> + <v2.8:SeparateAirDistributionDucts>true</v2.8:SeparateAirDistributionDucts> + </v2.8:HVAC> + </v2.8:Data> + </v2.8:Auxiliaries> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-05-24T12:44:06.9289488Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-ab066054c1bc431db1e3"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>nOfZudPCG54oOYKKanFSCDOEQpivinYCPj2CqOTwqvE=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> +</vif0.1:VectoOutputMultistage> \ No newline at end of file diff --git a/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/final41.VIF_Report_2.xml b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/final41.VIF_Report_2.xml new file mode 100644 index 0000000000000000000000000000000000000000..0bfe3fd7c80f34239924f65803afc587f694b868 --- /dev/null +++ b/VectoCore/VectoCoreTest/TestData/XML/XMLReaderDeclaration/final41.VIF_Report_2.xml @@ -0,0 +1,652 @@ +<?xml version="1.0" encoding="utf-8"?> +<vif0.1:VectoOutputMultistage xmlns="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xmlns:di="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:v2.0="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xmlns:v2.1="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xmlns:v2.3="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3" xmlns:v2.6="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xmlns:vif0.1="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1" xsi:schemaLocation="urn:tugraz:ivt:VectoAPI:DeclarationOutput:VehicleInterimFile:v0.1 V:\VectoCore\VectoCore\Resources\XSD/VectoOutputMultistage.0.1.xsd"> + <vif0.1:PrimaryVehicle> + <vif0.1:Data xsi:type="PrimaryVehicleDataType" id="PIF-4121ae4751874cefa376"> + <vif0.1:Vehicle xsi:type="VehiclePIFType"> + <vif0.1:ManufacturerPrimaryVehicle>Generic Truck Manufacturer</vif0.1:ManufacturerPrimaryVehicle> + <vif0.1:ManufacturerAddressPrimaryVehicle>Street, ZIP City</vif0.1:ManufacturerAddressPrimaryVehicle> + <vif0.1:Model>Generic Model</vif0.1:Model> + <vif0.1:VIN>VEH-1234567890_nonSmart</vif0.1:VIN> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:LegislativeCategory>M3</vif0.1:LegislativeCategory> + <vif0.1:ChassisConfiguration>Bus</vif0.1:ChassisConfiguration> + <vif0.1:AxleConfiguration>4x2</vif0.1:AxleConfiguration> + <vif0.1:Articulated>false</vif0.1:Articulated> + <vif0.1:TechnicalPermissibleMaximumLadenMass>28000</vif0.1:TechnicalPermissibleMaximumLadenMass> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:RetarderType>Transmission Output Retarder</vif0.1:RetarderType> + <vif0.1:RetarderRatio>1.000</vif0.1:RetarderRatio> + <vif0.1:AngledriveType>None</vif0.1:AngledriveType> + <vif0.1:ZeroEmissionVehicle>false</vif0.1:ZeroEmissionVehicle> + <vif0.1:ADAS xmlns:adas="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.1" xsi:type="adas:AdvancedDriverAssistantSystemsType"> + <adas:EngineStopStart>false</adas:EngineStopStart> + <adas:EcoRollWithoutEngineStop>false</adas:EcoRollWithoutEngineStop> + <adas:EcoRollWithEngineStop>false</adas:EcoRollWithEngineStop> + <adas:PredictiveCruiseControl>none</adas:PredictiveCruiseControl> + </vif0.1:ADAS> + <vif0.1:TorqueLimits xmlns:tcl="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0" xsi:type="tcl:TorqueLimitsType"> + <tcl:Entry gear="6" maxTorque="1800" /> + <tcl:Entry gear="1" maxTorque="2500" /> + </vif0.1:TorqueLimits> + <vif0.1:Components xsi:type="VehicleComponentsPIFType"> + <vif0.1:Engine> + <vif0.1:Data xsi:type="EngineDataPIFType"> + <vif0.1:Manufacturer>Generic Engine Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 Engine</vif0.1:Model> + <vif0.1:CertificationNumber>e12*0815/8051*2017/05E0000*00</vif0.1:CertificationNumber> + <vif0.1:Date>2017-02-15T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>VectoEngine x.y</vif0.1:AppVersion> + <vif0.1:Displacement>7700</vif0.1:Displacement> + <vif0.1:RatedSpeed>2200</vif0.1:RatedSpeed> + <vif0.1:RatedPower>220000</vif0.1:RatedPower> + <vif0.1:MaxEngineTorque>1100</vif0.1:MaxEngineTorque> + <vif0.1:WHRType> + <MechanicalOutputICE xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputICE> + <MechanicalOutputDrivetrain xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</MechanicalOutputDrivetrain> + <ElectricalOutput xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.3">false</ElectricalOutput> + </vif0.1:WHRType> + <vif0.1:Mode> + <vif0.1:IdlingSpeed>700</vif0.1:IdlingSpeed> + <vif0.1:FullLoadAndDragCurve> + <vif0.1:Entry engineSpeed="600.00" maxTorque="546.02" dragTorque="-39.66" /> + <vif0.1:Entry engineSpeed="800.00" maxTorque="760.78" dragTorque="-48.83" /> + <vif0.1:Entry engineSpeed="1000.00" maxTorque="973.29" dragTorque="-56.44" /> + <vif0.1:Entry engineSpeed="1200.00" maxTorque="1092.03" dragTorque="-67.29" /> + <vif0.1:Entry engineSpeed="1400.00" maxTorque="1092.03" dragTorque="-77.58" /> + <vif0.1:Entry engineSpeed="1600.00" maxTorque="1092.03" dragTorque="-87.88" /> + <vif0.1:Entry engineSpeed="1800.00" maxTorque="1022.52" dragTorque="-94.11" /> + <vif0.1:Entry engineSpeed="2000.00" maxTorque="944.17" dragTorque="-100.76" /> + <vif0.1:Entry engineSpeed="2200.00" maxTorque="868.12" dragTorque="-113.36" /> + <vif0.1:Entry engineSpeed="2400.00" maxTorque="741.99" dragTorque="-122.60" /> + <vif0.1:Entry engineSpeed="2500.00" maxTorque="647.29" dragTorque="-126.66" /> + <vif0.1:Entry engineSpeed="2600.00" maxTorque="0.00" dragTorque="-132.07" /> + </vif0.1:FullLoadAndDragCurve> + <vif0.1:Fuels> + <vif0.1:FuelType>Diesel CI</vif0.1:FuelType> + </vif0.1:Fuels> + </vif0.1:Mode> + </vif0.1:Data> + </vif0.1:Engine> + <vif0.1:Transmission> + <vif0.1:Data xsi:type="TransmissionDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>AT 6 Gear</vif0.1:Model> + <vif0.1:MainCertificationMethod>Standard values</vif0.1:MainCertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:TransmissionType>APT-S</vif0.1:TransmissionType> + <vif0.1:Gears xsi:type="TransmissionGearsPIFType"> + <vif0.1:Gear number="1"> + <vif0.1:Ratio>3.364</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="2"> + <vif0.1:Ratio>1.909</vif0.1:Ratio> + <vif0.1:MaxTorque>1900</vif0.1:MaxTorque> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="3"> + <vif0.1:Ratio>1.421</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="4"> + <vif0.1:Ratio>1.000</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="5"> + <vif0.1:Ratio>0.720</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + <vif0.1:Gear number="6"> + <vif0.1:Ratio>0.615</vif0.1:Ratio> + <vif0.1:MaxSpeed>2500</vif0.1:MaxSpeed> + </vif0.1:Gear> + </vif0.1:Gears> + </vif0.1:Data> + </vif0.1:Transmission> + <vif0.1:Axlegear> + <vif0.1:Data xsi:type="AxlegearDataPIFType"> + <vif0.1:Manufacturer>Generic Gearbox Manufacturer</vif0.1:Manufacturer> + <vif0.1:Model>Generic primary bus 41 AxleGear</vif0.1:Model> + <vif0.1:CertificationMethod>Standard values</vif0.1:CertificationMethod> + <vif0.1:Date>2017-01-11T11:00:00Z</vif0.1:Date> + <vif0.1:AppVersion>3.0.1</vif0.1:AppVersion> + <vif0.1:LineType>Single portal axle</vif0.1:LineType> + <vif0.1:Ratio>6.500</vif0.1:Ratio> + </vif0.1:Data> + </vif0.1:Axlegear> + <vif0.1:AxleWheels> + <vif0.1:Data xsi:type="AxleWheelsDataPIFType"> + <vif0.1:Axles> + <vif0.1:Axle axleNumber="1" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleNonDriven</AxleType> + <TwinTyres>false</TwinTyres> + <Steered>true</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0055</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>4TkUGQTX8tevHOU9Cj9uyCFuI/aqcEYlo/gyVjVQmv0=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + <vif0.1:Axle axleNumber="2" xsi:type="AxleDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <AxleType>VehicleDriven</AxleType> + <TwinTyres>true</TwinTyres> + <Steered>false</Steered> + <Tyre> + <Data id="WHL-5432198760-315-70-R22.5" xsi:type="TyreDataDeclarationType"> + <Manufacturer>Generic Wheels Manufacturer</Manufacturer> + <Model>Generic Wheel</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-01-11T14:00:00Z</Date> + <AppVersion>Tyre Generation App 1.0</AppVersion> + <Dimension>315/70 R22.5</Dimension> + <RRCDeclared>0.0063</RRCDeclared> + <FzISO>31300</FzISO> + </Data> + <Signature> + <di:Reference URI="#WHL-5432198760-315-70-R22.5" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>KljvtvGUUQ/L7MiLVAqU+bckL5PNDNNwdeLH9kUVrfM=</di:DigestValue> + </di:Reference> + </Signature> + </Tyre> + </vif0.1:Axle> + </vif0.1:Axles> + </vif0.1:Data> + </vif0.1:AxleWheels> + <vif0.1:Auxiliaries> + <vif0.1:Data xmlns:aux="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.6" xsi:type="AuxiliaryDataPIFType"> + <vif0.1:Fan> + <vif0.1:Technology>Hydraulic driven - Constant displacement pump</vif0.1:Technology> + </vif0.1:Fan> + <vif0.1:SteeringPump> + <vif0.1:Technology axleNumber="1">Variable displacement elec. controlled</vif0.1:Technology> + </vif0.1:SteeringPump> + <vif0.1:ElectricSystem> + <vif0.1:AlternatorTechnology>conventional</vif0.1:AlternatorTechnology> + <vif0.1:SupplyFromHEVPossible>false</vif0.1:SupplyFromHEVPossible> + </vif0.1:ElectricSystem> + <vif0.1:PneumaticSystem> + <vif0.1:SizeOfAirSupply>Large Supply 2-stage</vif0.1:SizeOfAirSupply> + <vif0.1:CompressorDrive>mechanically</vif0.1:CompressorDrive> + <vif0.1:Clutch>none</vif0.1:Clutch> + <vif0.1:CompressorRatio>1.000</vif0.1:CompressorRatio> + <vif0.1:SmartCompressionSystem>true</vif0.1:SmartCompressionSystem> + <vif0.1:SmartRegenerationSystem>false</vif0.1:SmartRegenerationSystem> + <vif0.1:AirsuspensionControl>electronically</vif0.1:AirsuspensionControl> + <vif0.1:PneumaticSCRReagentDosing>true</vif0.1:PneumaticSCRReagentDosing> + </vif0.1:PneumaticSystem> + <vif0.1:HVAC> + <vif0.1:AdjustableCoolantThermostat>true</vif0.1:AdjustableCoolantThermostat> + <vif0.1:EngineWasteGasHeatExchanger>true</vif0.1:EngineWasteGasHeatExchanger> + </vif0.1:HVAC> + </vif0.1:Data> + </vif0.1:Auxiliaries> + </vif0.1:Components> + </vif0.1:Vehicle> + <vif0.1:InputDataSignature> + <di:Reference URI="#VEH-PrimaryBus_nonSmart"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>gi7smqIT9b/iNr6yBm49IkS5ylirBLyHvjZQqlNpzUA=</di:DigestValue> + </di:Reference> + </vif0.1:InputDataSignature> + <vif0.1:ManufacturerRecordSignature> + <di:Reference URI="#RESULT-d5c4bf1b86394fd7b822"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>/z2B3MvXZr1k8vYmINK/6DLaXPreBcwwmHhHsfDvJRo=</di:DigestValue> + </di:Reference> + </vif0.1:ManufacturerRecordSignature> + <vif0.1:Results> + <vif0.1:Status>success</vif0.1:Status> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.73851</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1520.18</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">24.94611</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1828.60</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">16.93598</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1241.44</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">20.36950</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1493.13</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13098.63</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1123.63</vif0.1:Payload> + <vif0.1:PassengerCount>16.52</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.03487</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1102.09</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17593.16</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5618.16</vif0.1:Payload> + <vif0.1:PassengerCount>82.62</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">18.14589</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1330.13</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">12854.90</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">879.90</vif0.1:Payload> + <vif0.1:PassengerCount>12.39</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.90679</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">946.09</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15494.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.34621</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1051.61</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">21.81903</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1599.38</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Heavy Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">26.59833</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1949.71</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">17.82311</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1306.47</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Urban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">21.69768</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1590.49</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">13543.34</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1193.34</vif0.1:Payload> + <vif0.1:PassengerCount>17.55</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.74932</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1154.46</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P31DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Suburban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">18316.69</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">5966.69</vif0.1:Payload> + <vif0.1:PassengerCount>87.75</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">19.17775</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1405.77</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14225.44</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1075.44</vif0.1:Payload> + <vif0.1:PassengerCount>15.15</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.19757</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">967.41</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16669.61</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3519.61</vif0.1:Payload> + <vif0.1:PassengerCount>49.57</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">14.54412</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1066.11</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14244.99</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1094.99</vif0.1:Payload> + <vif0.1:PassengerCount>15.42</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.13867</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">816.49</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32SD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">15887.48</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">2737.48</vif0.1:Payload> + <vif0.1:PassengerCount>38.56</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.58643</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">849.31</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14662.82</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1262.82</vif0.1:Payload> + <vif0.1:PassengerCount>17.79</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">13.62230</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">998.54</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Interurban</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">17609.41</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">4209.41</vif0.1:Payload> + <vif0.1:PassengerCount>59.29</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">15.22020</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">1115.67</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">14747.01</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">1347.01</vif0.1:Payload> + <vif0.1:PassengerCount>18.97</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">11.61807</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">851.63</vif0.1:CO2> + </vif0.1:Result> + <vif0.1:Result status="success"> + <vif0.1:VehicleGroup>P32DD</vif0.1:VehicleGroup> + <vif0.1:Mission>Coach</vif0.1:Mission> + <vif0.1:SimulationParameters> + <vif0.1:TotalVehicleMass unit="kg">16767.53</vif0.1:TotalVehicleMass> + <vif0.1:Payload unit="kg">3367.53</vif0.1:Payload> + <vif0.1:PassengerCount>47.43</vif0.1:PassengerCount> + <vif0.1:FuelMode>single fuel mode</vif0.1:FuelMode> + </vif0.1:SimulationParameters> + <vif0.1:Fuel type="Diesel CI"> + <vif0.1:EnergyConsumption unit="MJ/km">12.15012</vif0.1:EnergyConsumption> + </vif0.1:Fuel> + <vif0.1:CO2 unit="g/km">890.63</vif0.1:CO2> + </vif0.1:Result> + </vif0.1:Results> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.6.1.1975-DEV !!NOT FOR CERTIFICATION!!</vif0.1:SimulationToolVersion> + <vif0.1:Date>2020-08-06T06:54:52.9756421Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#PIF-4121ae4751874cefa376"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>YnCPep7uMh3ghMrx6ZsEMLanOijFCZpku+ZDNd6rkLw=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:PrimaryVehicle> + <vif0.1:ManufacturingStage stageCount="2"> + <vif0.1:Data xsi:type="BusManufacturingStageDataType" id="MST-bb8c8ac8bc38424c9ec8"> + <vif0.1:HashPreviousStage> + <di:Reference URI="#PIF-4121ae4751874cefa376"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>YnCPep7uMh3ghMrx6ZsEMLanOijFCZpku+ZDNd6rkLw=</di:DigestValue> + </di:Reference> + </vif0.1:HashPreviousStage> + <vif0.1:Vehicle xsi:type="v2.8:InterimStageInputType" id="VEH-8ed9de9562b44fd8b856"> + <v2.8:Manufacturer>Some Manufacturer</v2.8:Manufacturer> + <v2.8:ManufacturerAddress>Infinite Loop 1</v2.8:ManufacturerAddress> + <v2.8:VIN>VEH-1234567890</v2.8:VIN> + <v2.8:Date>2021-05-20T22:00:00Z</v2.8:Date> + <v2.8:Model>Sample Bus Model</v2.8:Model> + <v2.8:LegislativeCategory>M3</v2.8:LegislativeCategory> + <v2.8:CorrectedActualMass>8300</v2.8:CorrectedActualMass> + <v2.8:TechnicalPermissibleMaximumLadenMass>18000</v2.8:TechnicalPermissibleMaximumLadenMass> + <v2.8:NgTankSystem>Compressed</v2.8:NgTankSystem> + <v2.8:ClassBus>II+III</v2.8:ClassBus> + <v2.8:NumberPassengersLowerDeck>30</v2.8:NumberPassengersLowerDeck> + <v2.8:NumberPassengersUpperDeck>0</v2.8:NumberPassengersUpperDeck> + <v2.8:BodyworkCode>CA</v2.8:BodyworkCode> + <v2.8:LowEntry>true</v2.8:LowEntry> + <v2.8:HeightIntegratedBody>3000</v2.8:HeightIntegratedBody> + <v2.8:VehicleLength>11830</v2.8:VehicleLength> + <v2.8:VehicleWidth>2550</v2.8:VehicleWidth> + <v2.8:EntranceHeight>120</v2.8:EntranceHeight> + <v2.8:DoorDriveTechnology>pneumatic</v2.8:DoorDriveTechnology> + <v2.8:VehicleDeclarationType>final</v2.8:VehicleDeclarationType> + <v2.8:Components xmlns:v2.8="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:DEV:v2.8" xsi:type="v2.8:CompletedVehicleComponentsDeclarationType"> + <v2.8:AirDrag> + <Data id="CabinX23h" xsi:type="AirDragDataDeclarationType" xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <Manufacturer>Generic Manufacturer</Manufacturer> + <Model>Generic Model</Model> + <CertificationNumber>e12*0815/8051*2017/05E0000*00</CertificationNumber> + <Date>2017-03-24T15:00:00Z</Date> + <AppVersion>Vecto AirDrag x.y</AppVersion> + <CdxA_0>6.31</CdxA_0> + <TransferredCdxA>6.32</TransferredCdxA> + <DeclaredCdxA>6.34</DeclaredCdxA> + </Data> + <Signature xmlns="urn:tugraz:ivt:VectoAPI:DeclarationDefinitions:v2.0"> + <di:Reference URI="#CabinX23h" xmlns:di="http://www.w3.org/2000/09/xmldsig#"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>b9SHCfOoVrBxFQ8wwDK32OO+9bd85DuaUdgs6j/29N8=</di:DigestValue> + </di:Reference> + </Signature> + </v2.8:AirDrag> + <v2.8:Auxiliaries> + <v2.8:Data xsi:type="v2.8:CompletedVehicleAuxiliaryDataDeclarationType"> + <v2.8:ElectricSystem> + <v2.8:LEDLights> + <v2.8:Interiorlights>false</v2.8:Interiorlights> + <v2.8:Dayrunninglights>false</v2.8:Dayrunninglights> + <v2.8:Positionlights>false</v2.8:Positionlights> + <v2.8:Brakelights>false</v2.8:Brakelights> + <v2.8:Headlights>false</v2.8:Headlights> + </v2.8:LEDLights> + </v2.8:ElectricSystem> + <v2.8:HVAC> + <v2.8:SystemConfiguration>7</v2.8:SystemConfiguration> + <v2.8:HeatPumpTypeDriverCompartment>non R-744 2-stage</v2.8:HeatPumpTypeDriverCompartment> + <v2.8:HeatPumpModeDriverCompartment>cooling</v2.8:HeatPumpModeDriverCompartment> + <v2.8:HeatPumpTypePassengerCompartment>non R-744 4-stage</v2.8:HeatPumpTypePassengerCompartment> + <v2.8:HeatPumpModePassengerCompartment>cooling</v2.8:HeatPumpModePassengerCompartment> + <v2.8:AdjustableAuxiliaryHeater>true</v2.8:AdjustableAuxiliaryHeater> + <v2.8:SeparateAirDistributionDucts>true</v2.8:SeparateAirDistributionDucts> + </v2.8:HVAC> + </v2.8:Data> + </v2.8:Auxiliaries> + </v2.8:Components> + </vif0.1:Vehicle> + <vif0.1:ApplicationInformation> + <vif0.1:SimulationToolVersion>0.7.3.2247-DEV</vif0.1:SimulationToolVersion> + <vif0.1:Date>2021-05-21T07:33:43.4186121Z</vif0.1:Date> + </vif0.1:ApplicationInformation> + </vif0.1:Data> + <vif0.1:Signature> + <di:Reference URI="#MST-bb8c8ac8bc38424c9ec8"> + <di:Transforms> + <di:Transform Algorithm="urn:vecto:xml:2017:canonicalization" /> + <di:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /> + </di:Transforms> + <di:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /> + <di:DigestValue>ZdRY8LTWDnFDHgN/sO9VGUWMeFBqrJ4K2M70lef01k0=</di:DigestValue> + </di:Reference> + </vif0.1:Signature> + </vif0.1:ManufacturingStage> +</vif0.1:VectoOutputMultistage> \ No newline at end of file