- miglioramento strategie

This commit is contained in:
Emmanuele Sassi
2025-05-15 18:53:57 +02:00
parent ecb2055690
commit 9865028f99
7 changed files with 710 additions and 493 deletions
@@ -233,12 +233,8 @@
<Compile Include="StatusBar\StatusBarV.xaml.vb">
<DependentUpon>StatusBarV.xaml</DependentUpon>
</Compile>
<Compile Include="StrategyManager\ActiveStrategyListBoxV.xaml.vb">
<DependentUpon>ActiveStrategyListBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="StrategyManager\DeactivateStrategyListBoxV.xaml.vb">
<DependentUpon>DeactivateStrategyListBoxV.xaml</DependentUpon>
</Compile>
<Compile Include="StrategyManager\JsonAvailableStrategyHelper.vb" />
<Compile Include="StrategyManager\JsonStrategyHelper.vb" />
<Compile Include="StrategyManager\ParameterStrategyV.xaml.vb">
<DependentUpon>ParameterStrategyV.xaml</DependentUpon>
</Compile>
@@ -725,14 +721,6 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="StrategyManager\ActiveStrategyListBoxV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="StrategyManager\DeactivateStrategyListBoxV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="StrategyManager\ParameterStrategyV.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -133,7 +133,7 @@ Public Class SaveAsStrategyVM
' Controllo se il file non è vuoto
Dim sFileNameCustomConfig As String = If(String.IsNullOrEmpty(m_sFileNameCustomConfig), CUSTOMERCONFIG_FILE, m_sFileNameCustomConfig)
' Crea il file JSON
Map.refStrategyManagerVM.CreateCustumerConfigJsonFile(sFileNameCustomConfig)
'Map.refStrategyManagerVM.CreateCustumerConfigJsonFile(sFileNameCustomConfig)
' Se il file ha un nome valido, aggiorna la configurazione
If Not String.IsNullOrEmpty(m_sFileNameCustomConfig) Then
' Aggiungo nuovo file a combobox elenco file
@@ -0,0 +1,373 @@
Imports EgtWPFLib5
Imports Newtonsoft.Json
Imports System.Collections.ObjectModel
'----------- Classe che fa riferimento alle Feature del file Json -----------
Public Class JsonAvailableStrategyFeature
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_nPRC As Integer
Public Property nPRC As Integer
Get
Return m_nPRC
End Get
Set(value As Integer)
m_nPRC = value
NotifyPropertyChanged(NameOf(nPRC))
End Set
End Property
Private m_nGRP As Integer
Public Property nGRP As Integer
Get
Return m_nGRP
End Get
Set(value As Integer)
m_nGRP = value
NotifyPropertyChanged(NameOf(nGRP))
End Set
End Property
Private m_TopologyList As New ObservableCollection(Of JsonAvailableTopology)
Public Property TopologyList As ObservableCollection(Of JsonAvailableTopology)
Get
Return m_TopologyList
End Get
Set(value As ObservableCollection(Of JsonAvailableTopology))
m_TopologyList = value
NotifyPropertyChanged(NameOf(TopologyList))
End Set
End Property
#End Region ' Fields & Propeties
<JsonConstructor>
Sub New(sName As String, nPRC As Integer, nGRP As Integer)
m_sName = sName
m_nPRC = nPRC
m_nGRP = nGRP
End Sub
Sub New(StrategyFeature As StrategyFeature)
m_sName = StrategyFeature.sName
m_nPRC = StrategyFeature.nPRC
m_nGRP = StrategyFeature.nGRP
For Each Topology In StrategyFeature.TopologyList
m_TopologyList.Add(New JsonAvailableTopology(Topology))
Next
End Sub
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature del file Json -----------
Public Class JsonAvailableTopology
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_StrategyList As New ObservableCollection(Of JsonAvailableStrategy)
Public Property StrategyList As ObservableCollection(Of JsonAvailableStrategy)
Get
Return m_StrategyList
End Get
Set(value As ObservableCollection(Of JsonAvailableStrategy))
m_StrategyList = value
NotifyPropertyChanged(NameOf(StrategyList))
End Set
End Property
#End Region ' Fields & Propeties
<JsonConstructor>
Sub New(sName As String)
m_sName = sName
End Sub
Sub New(Topology As Topology)
m_sName = Topology.sName
For Each Strategy In Topology.StrategyList
m_StrategyList.Add(New JsonAvailableStrategy(Strategy))
Next
End Sub
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
Public Class JsonAvailableStrategy
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sStrategyID As String
Public Property sStrategyID As String
Get
Return m_sStrategyID
End Get
Set(value As String)
m_sStrategyID = value
NotifyPropertyChanged(NameOf(sStrategyID))
End Set
End Property
Private m_nIndexInList As Integer = -1
Public Property nIndexInList As Integer
Get
Return m_nIndexInList
End Get
Set(value As Integer)
m_nIndexInList = value
NotifyPropertyChanged(NameOf(nIndexInList))
End Set
End Property
Private m_bActive As Boolean
Public Property bActive As Boolean
Get
Return m_bActive
End Get
Set(value As Boolean)
m_bActive = value
NotifyPropertyChanged(NameOf(bActive))
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of JsonAvailableGenericParameter)
Public Property ParameterList As ObservableCollection(Of JsonAvailableGenericParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonAvailableGenericParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
End Property
#End Region ' Fields & Propeties
<JsonConstructor>
Sub New(sStrategyID As String, nIndexInList As Integer)
m_sStrategyID = sStrategyID
m_nIndexInList = nIndexInList
End Sub
Sub New(Strategy As Strategy)
m_sStrategyID = Strategy.sStrategyID
m_nIndexInList = Strategy.nIndexInList
For Each Parameter In Strategy.ParameterList
m_ParameterList.Add(New JsonAvailableGenericParameter(Parameter))
Next
End Sub
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonAvailableGenericParameter
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_sNameNge As String
Public Property sNameNge As String
Get
Return m_sNameNge
End Get
Set(value As String)
m_sNameNge = value
NotifyPropertyChanged(NameOf(sNameNge))
End Set
End Property
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sType As String
Public Property sType As String
Get
Return m_sType
End Get
Set(value As String)
m_sType = value
NotifyPropertyChanged(NameOf(sType))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
End Set
End Property
Private m_sMinUserLevel As Integer
Public Property sMinUserLevel As Integer
Get
Return m_sMinUserLevel
End Get
Set(value As Integer)
m_sMinUserLevel = value
NotifyPropertyChanged(NameOf(sMinUserLevel))
End Set
End Property
Private m_Choices As New ObservableCollection(Of JsonAvailableChoiceParameter)
Public Property Choices As ObservableCollection(Of JsonAvailableChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonAvailableChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
#End Region ' Fields & Propeties
<JsonConstructor>
Sub New(sName As String, sNameNge As String, sValue As String, sDescriptionShort As String, sDescriptionLong As String, sType As String, sMessageId As String, sMinUserLevel As Integer)
m_sName = sName
m_sNameNge = sNameNge
m_sValue = sValue
m_sDescriptionShort = sDescriptionShort
m_sDescriptionLong = sDescriptionLong
m_sType = sType
m_sMessageId = sMessageId
m_sMinUserLevel = sMinUserLevel
End Sub
Sub New(StrategyParameter As StrategyParameter)
m_sName = StrategyParameter.sName
m_sNameNge = StrategyParameter.sNameNge
Select Case StrategyParameter.GetType()
Case GetType(BooleanStrategyParameter)
m_sValue = If(DirectCast(StrategyParameter, BooleanStrategyParameter).bValue, "true", "false")
Case GetType(DoubleStrategyParameter)
m_sValue = DirectCast(StrategyParameter, DoubleStrategyParameter).sValue
Case GetType(ComboStrategyParameter)
m_sValue = DirectCast(StrategyParameter, ComboStrategyParameter).SelValue.sValue
End Select
m_sDescriptionShort = StrategyParameter.sDescriptionShort
m_sDescriptionLong = StrategyParameter.sDescriptionLong
m_sMessageId = StrategyParameter.sMessageId
m_sMinUserLevel = StrategyParameter.sMinUserLevel
End Sub
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonAvailableChoiceParameter
Inherits VMBase
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
End Set
End Property
End Class
@@ -0,0 +1,3 @@
Public Class JsonStrategyHelper
End Class
@@ -8,44 +8,45 @@
<ItemsControl ItemsSource="{Binding SelTreeItem.SelParamStrategy.ParameterList}"
Foreground="Black">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type Optmizer:GenericParameter}">
<DataTemplate DataType="{x:Type Optmizer:BooleanStrategyParameter}">
<UniformGrid Columns="2"
Margin="0,2,5,0">
Margin="5,2,5,0">
<TextBlock Text="{Binding sDescriptionShort}"
HorizontalAlignment="Left"
Style="{StaticResource DialogWindow_TextBlock}"/>
<TabControl SelectedIndex="{Binding SelTypeValue}"
Background="Transparent"
BorderBrush="Transparent"
HorizontalAlignment="Right">
<TabControl.ItemContainerStyle>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Visibility" Value="Collapsed"/>
</Style>
</TabControl.ItemContainerStyle>
<TabItem Header="TEXT">
<TextBox Text="{Binding sValue}"
Style="{StaticResource ColorPicker_TextBox}"/>
</TabItem>
<TabItem Header="CHECKBOX">
<CheckBox IsChecked="{Binding sValue, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource OnlyProdFeatureInPartInRawPartList_CheckBox}"/>
</TabItem>
<TabItem Header="COMBOBOX">
<ComboBox ItemsSource="{Binding Choices}"
SelectedItem="{Binding SelectedChoice}"
Margin="0"
Foreground="Black"
Style="{StaticResource OnlyProdCalcPanel_ComboBox}">
<ComboBox.Resources>
<DataTemplate DataType="{x:Type Optmizer:ChoiceParameter}">
<TextBlock Text="{Binding sValue}"
Style="{StaticResource DialogWindow_TextBlock}"/>
</DataTemplate>
</ComboBox.Resources>
</ComboBox>
</TabItem>
</TabControl>
<CheckBox IsChecked="{Binding sValue, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource OnlyProdFeatureInPartInRawPartList_CheckBox}"/>
</UniformGrid>
</DataTemplate>
<DataTemplate DataType="{x:Type Optmizer:DoubleStrategyParameter}">
<UniformGrid Columns="2"
Margin="5,2,5,0">
<TextBlock Text="{Binding sDescriptionShort}"
HorizontalAlignment="Left"
Style="{StaticResource DialogWindow_TextBlock}"/>
<TextBox Text="{Binding sValue}"
Style="{StaticResource ColorPicker_TextBox}"/>
</UniformGrid>
</DataTemplate>
<DataTemplate DataType="{x:Type Optmizer:ComboStrategyParameter}">
<UniformGrid Columns="2"
Margin="5,2,5,0">
<TextBlock Text="{Binding sDescriptionShort}"
HorizontalAlignment="Left"
Style="{StaticResource DialogWindow_TextBlock}"/>
<ComboBox ItemsSource="{Binding ComboList}"
SelectedItem="{Binding SelValue}"
DisplayMemberPath="sValue"
Margin="0"
Foreground="Black"
Style="{StaticResource OnlyProdCalcPanel_ComboBox}">
<!--<ComboBox.Resources>
<DataTemplate DataType="{x:Type Optmizer:ComboParameter}">
<TextBlock Text="{Binding sValue}"
Style="{StaticResource DialogWindow_TextBlock}"/>
</DataTemplate>
</ComboBox.Resources>-->
</ComboBox>
</UniformGrid>
</DataTemplate>
</ItemsControl.Resources>
@@ -16,6 +16,12 @@
SelectedItem="{Binding SelStrategySetup}"
DisplayMemberPath="sName"
Style="{StaticResource Strategy_ComboBox}"/>
<Button Command="{Binding New_Command}"
ToolTip="{Binding SaveAsToolTip}"
Margin="10,0,10,0"
Style="{StaticResource SaveOptionPanel_Button}">
<Image Source="/Resources/NewPage/+.png" Stretch="Uniform"/>
</Button>
<Button Command="{Binding OpenFileNameCustomConfigCommand}"
ToolTip="{Binding SaveAsToolTip}"
Margin="10,0,10,0"
@@ -122,6 +122,7 @@ Public Class StrategyManagerVM
' Definizione Comandi
Private m_AddSelectedStrategyCommand As ICommand
Private m_RemoveSelectedStrategyCommand As ICommand
Private m_NewCommand As ICommand
Private m_OpenCommand As ICommand
Private m_SaveCommand As ICommand
Private m_OpenFileNameCustomConfigCommand As ICommand
@@ -154,89 +155,89 @@ Public Class StrategyManagerVM
#Region "METHODS"
''' <summary>
''' Funzione per creare file json
''' </summary>
Friend Sub CreateCustumerConfigJsonFile(fileCostumerConfig As String)
Try
Dim m_JsonStrategyFeatureList As New ObservableCollection(Of JsonStrategyFeature)(m_SelStrategySetup.StrategyFeatureList.Select(AddressOf ConvertToJsonStrategy))
' Serializzazione in JSON
Dim AvailableStrategyListjsonFile As String = JsonConvert.SerializeObject(m_JsonStrategyFeatureList, Formatting.Indented)
' Scrittura su file
File.WriteAllText(Map.refMainWindowVM.MainWindowM.GetAISetupDirPath() & "\" & fileCostumerConfig & ".json", AvailableStrategyListjsonFile)
Catch ex As Exception
EgtOutLog("Errore durante la creazione del file JSON: " & ex.Message)
End Try
End Sub
'''' <summary>
'''' Funzione per creare file json
'''' </summary>
'Friend Sub CreateCustumerConfigJsonFile(fileCostumerConfig As String)
' Try
' Dim m_JsonStrategyFeatureList As New ObservableCollection(Of JsonAvailableStrategyFeature)(m_SelStrategySetup.StrategyFeatureList.Select(AddressOf ConvertToJsonStrategy))
' ' Serializzazione in JSON
' Dim AvailableStrategyListjsonFile As String = JsonConvert.SerializeObject(m_JsonStrategyFeatureList, Formatting.Indented)
' ' Scrittura su file
' File.WriteAllText(Map.refMainWindowVM.MainWindowM.GetAISetupDirPath() & "\" & fileCostumerConfig & ".json", AvailableStrategyListjsonFile)
' Catch ex As Exception
' EgtOutLog("Errore durante la creazione del file JSON: " & ex.Message)
' End Try
'End Sub
''' <summary>
''' Funzione per convertire da AvailableStrategy a JsonAvailableStrategy
''' </summary>
''' <param name="StrategyFeature"></param>
''' <returns></returns>
Private Function ConvertToJsonStrategy(StrategyFeature As StrategyFeature) As JsonStrategyFeature
Return New JsonStrategyFeature With {
.sName = StrategyFeature.sName,
.nPRC = StrategyFeature.nPRC,
.nGRP = StrategyFeature.nGRP,
.TopologyList = New ObservableCollection(Of JsonTopology)(StrategyFeature.TopologyList.Select(AddressOf ConvertToJsonTopology))}
End Function
'''' <summary>
'''' Funzione per convertire da AvailableStrategy a JsonAvailableStrategy
'''' </summary>
'''' <param name="StrategyFeature"></param>
'''' <returns></returns>
''Private Function ConvertToJsonStrategy(StrategyFeature As StrategyFeature) As JsonAvailableStrategyFeature
'' Return New JsonAvailableStrategyFeature With {
' .sName = StrategyFeature.sName,
' .nPRC = StrategyFeature.nPRC,
' .nGRP = StrategyFeature.nGRP,
' .TopologyList = New ObservableCollection(Of JsonAvailableTopology)(StrategyFeature.TopologyList.Select(AddressOf ConvertToJsonTopology))}
'End Function
''' <summary>
''' Funzione per convertire da Topology a JsonTopology
''' </summary>
''' <param name="topology"></param>
''' <returns></returns>
Private Function ConvertToJsonTopology(Topology As Topology) As JsonTopology
Return New JsonTopology With {
.sName = Topology.sName,
.StrategyList = New ObservableCollection(Of JsonStrategy)(Topology.StrategyList.Select(AddressOf ConvertToJsonStrategyConfiguration))
}
End Function
'''' <summary>
'''' Funzione per convertire da Topology a JsonTopology
'''' </summary>
'''' <param name="topology"></param>
'''' <returns></returns>
'Private Function ConvertToJsonTopology(Topology As Topology) As JsonAvailableTopology
' Return New JsonAvailableTopology With {
' .sName = Topology.sName,
' .StrategyList = New ObservableCollection(Of JsonAvailableStrategy)(Topology.StrategyList.Select(AddressOf ConvertToJsonStrategyConfiguration))
' }
'End Function
''' <summary>
''' Funzione per convertire da StrategyConfiguration a JsonStrategyConfiguration
''' </summary>
''' <param name="Strategy"></param>
''' <returns></returns>
Private Function ConvertToJsonStrategyConfiguration(Strategy As Strategy) As JsonStrategy
Return New JsonStrategy With {
.sStrategyID = Strategy.sStrategyID,
.nIndexInList = Strategy.nIndexInList,
.bActive = Strategy.bActive,
.ParameterList = New ObservableCollection(Of JsonGenericParameter)(Strategy.ParameterList.Select(AddressOf ConvertToJsonParameter))}
End Function
'''' <summary>
'''' Funzione per convertire da StrategyConfiguration a JsonStrategyConfiguration
'''' </summary>
'''' <param name="Strategy"></param>
'''' <returns></returns>
'Private Function ConvertToJsonStrategyConfiguration(Strategy As Strategy) As JsonAvailableStrategy
' Return New JsonAvailableStrategy With {
' .sStrategyID = Strategy.sStrategyID,
' .nIndexInList = Strategy.nIndexInList,
' .bActive = Strategy.bActive,
' .ParameterList = New ObservableCollection(Of JsonAvailableGenericParameter)(Strategy.ParameterList.Select(AddressOf ConvertToJsonParameter))}
'End Function
''' <summary>
''' Funzione per convertire da GenericParameter a JsonGenericParameter
''' </summary>
''' <param name="genericParameter"></param>
''' <returns></returns>
Private Function ConvertToJsonParameter(GenericParameter As GenericParameter) As JsonGenericParameter
Return New JsonGenericParameter With {
.sName = GenericParameter.sName,
.sNameNge = GenericParameter.sNameNge,
.sValue = GenericParameter.sValue,
.sDescriptionShort = GenericParameter.sDescriptionShort,
.sDescriptionLong = GenericParameter.sDescriptionLong,
.sType = GenericParameter.sType,
.sMessageId = GenericParameter.sMessageId,
.sMinUserLevel = GenericParameter.sMinUserLevel,
.Choices = New ObservableCollection(Of JsonChoiceParameter)(GenericParameter.Choices.Select(AddressOf ConvertToJsonChoiceParameter))}
End Function
'''' <summary>
'''' Funzione per convertire da GenericParameter a JsonGenericParameter
'''' </summary>
'''' <param name="genericParameter"></param>
'''' <returns></returns>
'Private Function ConvertToJsonParameter(GenericParameter As StrategyParameter) As JsonAvailableGenericParameter
' Return New JsonAvailableGenericParameter With {
' .sName = GenericParameter.sName,
' .sNameNge = GenericParameter.sNameNge,
' .sValue = GenericParameter.sValue,
' .sDescriptionShort = GenericParameter.sDescriptionShort,
' .sDescriptionLong = GenericParameter.sDescriptionLong,
' .sType = GenericParameter.Type,
' .sMessageId = GenericParameter.sMessageId,
' .sMinUserLevel = GenericParameter.sMinUserLevel,
' .Choices = New ObservableCollection(Of JsonAvailableChoiceParameter)(GenericParameter.Choices.Select(AddressOf ConvertToJsonChoiceParameter))}
'End Function
''' <summary>
''' Funzione per convertire da ChoicesParameter a JsonChoicesParameter
''' </summary>
''' <param name="choiceParameter"></param>
''' <returns></returns>
Private Function ConvertToJsonChoiceParameter(ChoiceParameter As ChoiceParameter) As JsonChoiceParameter
Return New JsonChoiceParameter With {
.sValue = ChoiceParameter.sValue,
.sDescriptionShort = ChoiceParameter.sDescriptionShort,
.sDescriptionLong = ChoiceParameter.sDescriptionLong,
.sMessageId = ChoiceParameter.sMessageId}
End Function
'''' <summary>
'''' Funzione per convertire da ChoicesParameter a JsonChoicesParameter
'''' </summary>
'''' <param name="choiceParameter"></param>
'''' <returns></returns>
'Private Function ConvertToJsonChoiceParameter(ChoiceParameter As ComboParameter) As JsonAvailableChoiceParameter
' Return New JsonAvailableChoiceParameter With {
' .sValue = ChoiceParameter.sValue,
' .sDescriptionShort = ChoiceParameter.sDescriptionShort,
' .sDescriptionLong = ChoiceParameter.sDescriptionLong,
' .sMessageId = ChoiceParameter.sMessageId}
'End Function
''' <summary>
''' Funzione che salva il file CustomConfig Json
@@ -252,7 +253,7 @@ Public Class StrategyManagerVM
NotifyPropertyChanged(NameOf(StrategySetupList))
End If
' Crea il file JSON
CreateCustumerConfigJsonFile(fileCustomerConfigJson)
'CreateCustumerConfigJsonFile(fileCustomerConfigJson)
' Se un file è stato selezionato, resetta il flag di modifica
SetbIsModifyStrategy(False)
End Sub
@@ -369,6 +370,32 @@ Public Class StrategyManagerVM
#End Region ' OpenFileNameCustomConfigCommand
#Region "New"
Public ReadOnly Property New_Command As ICommand
Get
If m_NewCommand Is Nothing Then
m_NewCommand = New Command(AddressOf NewAiSetup)
End If
Return m_NewCommand
End Get
End Property
''' <summary>
''' Funzione che salva il file json CustomerConfig
''' </summary>
Public Sub NewAiSetup()
Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath()
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & "Test1" & ".json"
Dim NewStrategy As New StrategySetup("Test1")
m_StrategySetupList.Add(NewStrategy)
SelStrategySetup = NewStrategy
NotifyPropertyChanged(NameOf(StrategySetupList))
'SaveJson()
End Sub
#End Region ' New
#Region "SaveCommand"
Public ReadOnly Property SaveCommand As ICommand
@@ -384,7 +411,8 @@ Public Class StrategyManagerVM
''' Funzione che salva il file json CustomerConfig
''' </summary>
Public Sub Save()
SaveJson()
m_SelStrategySetup.Write()
'SaveJson()
End Sub
#End Region ' SaveCommand
@@ -552,7 +580,7 @@ Public Class StrategySetup
Dim sAvailableStrategiesFilePath As String = sStrategiesDirPath & "\" & AVAILABLESTRATEGYLIST_FILE & ".json"
If File.Exists(sAvailableStrategiesFilePath) Then
Dim sReadedFile As String = File.ReadAllText(sAvailableStrategiesFilePath)
Dim JsonStrategyFeatureList As List(Of JsonStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonStrategyFeature))(sReadedFile)
Dim JsonStrategyFeatureList As List(Of JsonAvailableStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonAvailableStrategyFeature))(sReadedFile)
m_StrategyFeatureList = New ObservableCollection(Of StrategyFeature)((From JsonStrategyFeature In JsonStrategyFeatureList
Select New StrategyFeature(JsonStrategyFeature)).ToList())
@@ -562,7 +590,7 @@ Public Class StrategySetup
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sName & ".json"
If File.Exists(sStrategyConfigurationFilePath) Then
Dim sReadedFile As String = File.ReadAllText(sStrategyConfigurationFilePath)
Dim JsonStrategyFeatureList As List(Of JsonStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonStrategyFeature))(sReadedFile)
Dim JsonStrategyFeatureList As List(Of JsonAvailableStrategyFeature) = JsonConvert.DeserializeObject(Of List(Of JsonAvailableStrategyFeature))(sReadedFile)
For Each Feature In JsonStrategyFeatureList
Dim DefaultFeature As StrategyFeature = m_StrategyFeatureList.FirstOrDefault(Function(x) x.nPRC = Feature.nPRC AndAlso x.nGRP = Feature.nGRP)
' gestire caso non venga trovata perchè non esiste più in default??'
@@ -585,6 +613,17 @@ Public Class StrategySetup
End If
End Sub
Friend Sub Write()
Dim WriteList As New List(Of JsonAvailableStrategyFeature)
For Each StrategyFeature In m_StrategyFeatureList
WriteList.Add(StrategyFeature.Serialize())
Next
Dim JsonFromStrategy As String = JsonConvert.SerializeObject(WriteList, Formatting.Indented)
Dim sAISetupDirPath As String = Map.refMainWindowVM.MainWindowM.GetAISetupDirPath()
Dim sStrategyConfigurationFilePath As String = sAISetupDirPath & "\" & sName & ".json"
File.WriteAllText(sStrategyConfigurationFilePath, JsonFromStrategy)
End Sub
#End Region ' Methods
End Class
@@ -643,7 +682,7 @@ Public Class StrategyFeature
#Region "CONSTRUCTOR"
Sub New(JsonStrategyFeature As JsonStrategyFeature)
Sub New(JsonStrategyFeature As JsonAvailableStrategyFeature)
If IsNothing(JsonStrategyFeature) Then Return
m_sName = JsonStrategyFeature.sName
m_nPRC = JsonStrategyFeature.nPRC
@@ -654,6 +693,12 @@ Public Class StrategyFeature
#End Region ' Constructor
Friend Function Serialize() As JsonAvailableStrategyFeature
Dim JsonAvailableStrategyFeature As New JsonAvailableStrategyFeature(Me)
Return JsonAvailableStrategyFeature
End Function
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature -----------
@@ -754,7 +799,7 @@ Public Class Topology
#Region "CONSTRUCTOR"
Sub New(JsonTopology As JsonTopology)
Sub New(JsonTopology As JsonAvailableTopology)
If IsNothing(JsonTopology) Then Return
m_sName = JsonTopology.sName
m_StrategyList = New ObservableCollection(Of Strategy)(JsonTopology.StrategyList.Select(Function(jsonStrategy) New Strategy(Me, jsonStrategy)))
@@ -835,12 +880,12 @@ Public Class Strategy
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of GenericParameter)
Public Property ParameterList As ObservableCollection(Of GenericParameter)
Private m_ParameterList As New ObservableCollection(Of StrategyParameter)
Public Property ParameterList As ObservableCollection(Of StrategyParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of GenericParameter))
Set(value As ObservableCollection(Of StrategyParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
@@ -850,7 +895,7 @@ Public Class Strategy
#Region "CONSTRUCTOR"
Sub New(ParentTopology As Topology, JsonStrategy As JsonStrategy)
Sub New(ParentTopology As Topology, JsonStrategy As JsonAvailableStrategy)
m_ParentTopology = ParentTopology
If IsNothing(JsonStrategy) Then Return
m_sStrategyID = JsonStrategy.sStrategyID
@@ -872,23 +917,30 @@ Public Class Strategy
If Not File.Exists(StrategyPath) Then Return
' Leggo il contenuto del file JSON e deserializzo
Dim StrategyJson As String = File.ReadAllText(StrategyPath)
Dim strategyConfig As JsonStrategy = JsonConvert.DeserializeObject(Of JsonStrategy)(StrategyJson)
' Assegno ParamList per poter visualizzarla da interfaccia econtrollo di che tipo è se Strategy o JsonStrategy
m_ParameterList = New ObservableCollection(Of GenericParameter)(strategyConfig.ParameterList.Select(Function(p) New GenericParameter(p)).ToList())
Dim strategyConfig As JsonAvailableStrategy = JsonConvert.DeserializeObject(Of JsonAvailableStrategy)(StrategyJson)
' Assegno ParamList per poter visualizzarla da interfaccia e controllo di che tipo è se Strategy o JsonStrategy
m_ParameterList = New ObservableCollection(Of StrategyParameter)(strategyConfig.ParameterList.Select(Function(p) StrategyParameter.NewStrategyParameter(p)).ToList())
End Sub
Friend Sub ReadConfiguration(ConfigurationStrategy As JsonStrategy)
Friend Sub ReadConfiguration(ConfigurationStrategy As JsonAvailableStrategy)
m_nIndexInList = ConfigurationStrategy.nIndexInList
NotifyPropertyChanged(NameOf(nIndexInList))
'm_ParentTopology.NotifyPropertyChanged(NameOf(m_ParentTopology.AvailableStrategyList_View))
'm_ParentTopology.NotifyPropertyChanged(NameOf(m_ParentTopology.ActiveStrategyList_View))
For Each Parameter In ConfigurationStrategy.ParameterList
Dim DefaultParameter As GenericParameter = m_ParameterList.FirstOrDefault(Function(x) x.sNameNge = Parameter.sNameNge)
Dim DefaultParameter As StrategyParameter = m_ParameterList.FirstOrDefault(Function(x) x.sNameNge = Parameter.sNameNge)
If IsNothing(DefaultParameter) Then
m_ParameterList.Add(New GenericParameter(Parameter))
m_ParameterList.Add(StrategyParameter.NewStrategyParameter(Parameter))
' verifico indici!!
Else
DefaultParameter.sValue = Parameter.sValue
Select Case DefaultParameter.GetType()
Case GetType(BooleanStrategyParameter)
DirectCast(DefaultParameter, BooleanStrategyParameter).SetValue(Parameter.sValue)
Case GetType(DoubleStrategyParameter)
DirectCast(DefaultParameter, DoubleStrategyParameter).SetValue(Parameter.sValue)
Case GetType(ComboStrategyParameter)
DirectCast(DefaultParameter, ComboStrategyParameter).SetSelValue(Parameter.sValue)
End Select
End If
Next
End Sub
@@ -896,9 +948,16 @@ Public Class Strategy
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie -----------
Public Class GenericParameter
Public Class StrategyParameter
Inherits VMBase
Public Enum StrategyParameterTypes As Integer
BOOLEAN_ = 1
DOUBLE_ = 2
STRING_ = 3
COMBO = 4
End Enum
#Region "FIELDS & PROPETIES"
Private m_ParentStrategy As Strategy
@@ -925,16 +984,16 @@ Public Class GenericParameter
End Set
End Property
Friend m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
'Friend m_sValue As String
'Public Property sValue As String
' Get
' Return m_sValue
' End Get
' Set(value As String)
' m_sValue = value
' NotifyPropertyChanged(NameOf(sValue))
' End Set
'End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
@@ -958,15 +1017,11 @@ Public Class GenericParameter
End Set
End Property
Private m_sType As String
Public Property sType As String
Private m_Type As StrategyParameterTypes
Public ReadOnly Property Type As StrategyParameterTypes
Get
Return m_sType
Return m_Type
End Get
Set(value As String)
m_sType = value
NotifyPropertyChanged(NameOf(sType))
End Set
End Property
Private m_sMessageId As String
@@ -991,32 +1046,17 @@ Public Class GenericParameter
End Set
End Property
Private m_Choices As New ObservableCollection(Of ChoiceParameter)
Public Property Choices As ObservableCollection(Of ChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of ChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
'Private m_Choices As New ObservableCollection(Of ChoiceParameter)
'Public Property Choices As ObservableCollection(Of ChoiceParameter)
' Get
' Return m_Choices
' End Get
' Set(value As ObservableCollection(Of ChoiceParameter))
' m_Choices = value
' NotifyPropertyChanged(NameOf(Choices))
' End Set
'End Property
' Seleziona elemento nella combobox Choices
Public m_SelectedChoice As ChoiceParameter
Public Property SelectedChoice As ChoiceParameter
Get
Return m_SelectedChoice
End Get
Set(value As ChoiceParameter)
m_SelectedChoice = value
If Not IsNothing(m_SelectedChoice) Then
m_sValue = m_SelectedChoice.sValue
End If
NotifyPropertyChanged(NameOf(SelectedChoice))
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Friend m_SelTypeValue As Integer = 0
Public Property SelTypeValue As Integer
@@ -1033,26 +1073,131 @@ Public Class GenericParameter
#Region "CONSTRUCTOR"
Sub New(JsonGenericParameter As JsonGenericParameter)
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
m_sName = JsonGenericParameter.sName
m_sNameNge = JsonGenericParameter.sNameNge
m_sValue = JsonGenericParameter.sValue
'm_sValue = JsonGenericParameter.sValue
m_sDescriptionShort = JsonGenericParameter.sDescriptionShort
m_sDescriptionLong = JsonGenericParameter.sDescriptionLong
m_sType = JsonGenericParameter.sType
'm_Type = JsonGenericParameter.sType
StringToDouble(JsonGenericParameter.sType, m_Type)
m_sMessageId = JsonGenericParameter.sMessageId
m_sMinUserLevel = JsonGenericParameter.sMinUserLevel
m_Choices = New ObservableCollection(Of ChoiceParameter)(JsonGenericParameter.Choices.Select(Function(jsonChoice) New ChoiceParameter(jsonChoice)))
NotifyPropertyChanged(NameOf(Choices))
'm_Choices = New ObservableCollection(Of ChoiceParameter)(JsonGenericParameter.Choices.Select(Function(jsonChoice) New ChoiceParameter(jsonChoice)))
'NotifyPropertyChanged(NameOf(Choices))
End Sub
#End Region ' Constructor
Public Shared Function NewStrategyParameter(JsonGenericParameter As JsonAvailableGenericParameter) As StrategyParameter
Select Case JsonGenericParameter.sType
Case "b"
Return New BooleanStrategyParameter(JsonGenericParameter)
Case "d"
Return New DoubleStrategyParameter(JsonGenericParameter)
Case "combo"
Return New ComboStrategyParameter(JsonGenericParameter)
End Select
End Function
End Class
Public Class BooleanStrategyParameter
Inherits StrategyParameter
Friend m_bValue As Boolean
Public Property bValue As Boolean
Get
Return m_bValue
End Get
Set(value As Boolean)
m_bValue = value
End Set
End Property
Friend Sub SetValue(sValue As String)
m_bValue = sValue.ToLower() = "true"
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
m_bValue = JsonGenericParameter.sValue.ToLower() = "true"
End Sub
End Class
Public Class DoubleStrategyParameter
Inherits StrategyParameter
Private m_dValue As Double
Public Property sValue As String
Get
Return DoubleToString(m_dValue, 2)
End Get
Set(value As String)
Dim dValue As Double
If StringToDouble(value, dValue) Then
m_dValue = dValue
Else
NotifyPropertyChanged(NameOf(sValue))
End If
End Set
End Property
Friend Sub SetValue(sValue As String)
If Not StringToDouble(sValue, m_dValue) Then
EgtOutLog("Error reading DoubleStrategyParameter " & sValue)
End If
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
If Not StringToDouble(JsonGenericParameter.sValue, m_dValue) Then
EgtOutLog("Error reading DoubleStrategyParameter " & JsonGenericParameter.sValue)
End If
End Sub
End Class
Public Class ComboStrategyParameter
Inherits StrategyParameter
Private m_ComboList As New List(Of ComboParameter)
Public Property ComboList As List(Of ComboParameter)
Get
Return m_ComboList
End Get
Set(value As List(Of ComboParameter))
m_ComboList = value
End Set
End Property
' Seleziona elemento nella combobox Choices
Private m_SelValue As ComboParameter
Public Property SelValue As ComboParameter
Get
Return m_SelValue
End Get
Set(value As ComboParameter)
m_SelValue = value
End Set
End Property
Friend Sub SetSelValue(sValue As String)
m_SelValue = m_ComboList.FirstOrDefault(Function(x) x.sValue = sValue)
End Sub
Sub New(JsonGenericParameter As JsonAvailableGenericParameter)
MyBase.New(JsonGenericParameter)
If IsNothing(JsonGenericParameter) Then Return
ComboList = JsonGenericParameter.Choices.Select(Function(jsonChoice) New ComboParameter(jsonChoice)).ToList()
m_SelValue = m_ComboList.FirstOrDefault(Function(x) x.sValue = JsonGenericParameter.sValue)
End Sub
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte -----------
Public Class ChoiceParameter
Public Class ComboParameter
Inherits VMBase
#Region "FIELD & PROPERTIES"
@@ -1105,7 +1250,7 @@ Public Class ChoiceParameter
#Region "CONSTRUCTOR"
Sub New(JsonChoiceParameter As JsonChoiceParameter)
Sub New(JsonChoiceParameter As JsonAvailableChoiceParameter)
If Not IsNothing(JsonChoiceParameter) Then
m_sValue = JsonChoiceParameter.sValue
m_sDescriptionShort = JsonChoiceParameter.sDescriptionShort
@@ -1118,305 +1263,6 @@ Public Class ChoiceParameter
End Class
'----------- Classe che fa riferimento alle Feature del file Json -----------
Public Class JsonStrategyFeature
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_nPRC As Integer
Public Property nPRC As Integer
Get
Return m_nPRC
End Get
Set(value As Integer)
m_nPRC = value
NotifyPropertyChanged(NameOf(nPRC))
End Set
End Property
Private m_nGRP As Integer
Public Property nGRP As Integer
Get
Return m_nGRP
End Get
Set(value As Integer)
m_nGRP = value
NotifyPropertyChanged(NameOf(nGRP))
End Set
End Property
Private m_TopologyList As New ObservableCollection(Of JsonTopology)
Public Property TopologyList As ObservableCollection(Of JsonTopology)
Get
Return m_TopologyList
End Get
Set(value As ObservableCollection(Of JsonTopology))
m_TopologyList = value
NotifyPropertyChanged(NameOf(TopologyList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento alle Topologie delle Feature del file Json -----------
Public Class JsonTopology
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_StrategyList As New ObservableCollection(Of JsonStrategy)
Public Property StrategyList As ObservableCollection(Of JsonStrategy)
Get
Return m_StrategyList
End Get
Set(value As ObservableCollection(Of JsonStrategy))
m_StrategyList = value
NotifyPropertyChanged(NameOf(StrategyList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa alle Strategie delle Topologie delle Feature del file Json -----------
Public Class JsonStrategy
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sStrategyID As String
Public Property sStrategyID As String
Get
Return m_sStrategyID
End Get
Set(value As String)
m_sStrategyID = value
NotifyPropertyChanged(NameOf(sStrategyID))
End Set
End Property
Private m_nIndexInList As Integer = -1
Public Property nIndexInList As Integer
Get
Return m_nIndexInList
End Get
Set(value As Integer)
m_nIndexInList = value
NotifyPropertyChanged(NameOf(nIndexInList))
End Set
End Property
Private m_bActive As Boolean
Public Property bActive As Boolean
Get
Return m_bActive
End Get
Set(value As Boolean)
m_bActive = value
NotifyPropertyChanged(NameOf(bActive))
End Set
End Property
Private m_ParameterList As New ObservableCollection(Of JsonGenericParameter)
Public Property ParameterList As ObservableCollection(Of JsonGenericParameter)
Get
Return m_ParameterList
End Get
Set(value As ObservableCollection(Of JsonGenericParameter))
m_ParameterList = value
NotifyPropertyChanged(NameOf(ParameterList))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento ai parametri delle Strategie nel file Json -----------
Public Class JsonGenericParameter
Inherits VMBase
#Region "FIELDS & PROPETIES"
Private m_sName As String
Public Property sName As String
Get
Return m_sName
End Get
Set(value As String)
m_sName = value
NotifyPropertyChanged(NameOf(sName))
End Set
End Property
Private m_sNameNge As String
Public Property sNameNge As String
Get
Return m_sNameNge
End Get
Set(value As String)
m_sNameNge = value
NotifyPropertyChanged(NameOf(sNameNge))
End Set
End Property
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sType As String
Public Property sType As String
Get
Return m_sType
End Get
Set(value As String)
m_sType = value
NotifyPropertyChanged(NameOf(sType))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
End Set
End Property
Private m_sMinUserLevel As Integer
Public Property sMinUserLevel As Integer
Get
Return m_sMinUserLevel
End Get
Set(value As Integer)
m_sMinUserLevel = value
NotifyPropertyChanged(NameOf(sMinUserLevel))
End Set
End Property
Private m_Choices As New ObservableCollection(Of JsonChoiceParameter)
Public Property Choices As ObservableCollection(Of JsonChoiceParameter)
Get
Return m_Choices
End Get
Set(value As ObservableCollection(Of JsonChoiceParameter))
m_Choices = value
NotifyPropertyChanged(NameOf(Choices))
End Set
End Property
#End Region ' Fields & Propeties
End Class
'----------- Classe che fa riferimento ai parametri delle Scelte nel file Json -----------
Public Class JsonChoiceParameter
Inherits VMBase
Private m_sValue As String
Public Property sValue As String
Get
Return m_sValue
End Get
Set(value As String)
m_sValue = value
NotifyPropertyChanged(NameOf(sValue))
End Set
End Property
Private m_sDescriptionShort As String
Public Property sDescriptionShort As String
Get
Return m_sDescriptionShort
End Get
Set(value As String)
m_sDescriptionShort = value
NotifyPropertyChanged(NameOf(sDescriptionShort))
End Set
End Property
Private m_sDescriptionLong As String
Public Property sDescriptionLong As String
Get
Return m_sDescriptionLong
End Get
Set(value As String)
m_sDescriptionLong = value
NotifyPropertyChanged(NameOf(sDescriptionLong))
End Set
End Property
Private m_sMessageId As String
Public Property sMessageId As String
Get
Return m_sMessageId
End Get
Set(value As String)
m_sMessageId = value
NotifyPropertyChanged(NameOf(sMessageId))
End Set
End Property
End Class
Public Class StrategyTypeToFocusableConverter
Implements IValueConverter