- eliminata riga selezionata su lista programmi

- aggiunti messaggi e tooltip
- aggiunte verifiche su comandi
- aggiunto backup json per stato e momento di inizio e fine
This commit is contained in:
Emmanuele Sassi
2026-05-11 16:41:50 +02:00
parent 5ce2c38baa
commit ae7768425e
3 changed files with 225 additions and 177 deletions
@@ -17,103 +17,31 @@
Background="{StaticResource Omag_DarkGray}">
<StackPanel Orientation="Horizontal"
IsEnabled="{Binding bExecButton_IsEnabled}">
<Button ToolTip="Mette in coda di produzione tutte le porte"
<Button ToolTip="{Binding ProduceAll_Tooltip}"
Command="{Binding ProduceAll_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/ProduceAll.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Riporta tutte le porte pronte per essere lavorate allo stato Verificate state"
<Button ToolTip="{Binding ResetProductionQueue_Tooltip}"
Command="{Binding ResetProductionQueue_Command}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/ResetProduction.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Cancella tutte le porte presenti in lista"
<Button ToolTip="{Binding DeleteAll_Tooltip}"
Command="{Binding DeleteAll_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Table_Button}">
<Image Source="../Resources/DoorListPage/DeleteAll.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<!--<Button ToolTip="Mette in coda di produzione la porta selezionata"
Command="{Binding Produce_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Produce.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Sposta su"
Command="{Binding MoveUp_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MoveUp.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>
<Button ToolTip="Sposta giù"
Command="{Binding MoveDown_Command}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MoveDown.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Mark the selected door as not to be produced"
Command="{Binding NotProduceDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/NotProduce.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Aggiunge una porta alla lista"
Command="{Binding AddDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Add.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Copia la porta selezionata"
Command="{Binding CopyDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Copy.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Copia Multipla della porta selezionata"
Command="{Binding MultipleCopyDoor_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/MultipleCopy.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Cancella porta selezionata"
Command="{Binding Delete_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Delete.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<Button ToolTip="Verifica tutte le porte in stato Non Verificata"
Command="{Binding Verify_Command}"
IsEnabled="{Binding bExecButton_IsEnabled}"
Style="{StaticResource Button.DoorList}">
<Image Source="../Resources/DoorListPage/Verify.png"
Style="{StaticResource Button.Image.DoorList}"/>
</Button>-->
<!--<TextBlock Text="{Binding sExecPercentage}"
VerticalAlignment="Center"
Margin="10,0,5,0"
Visibility="{Binding ExecPercentage_Visibility, Mode=OneWay}"/>
<ProgressBar Minimum="0"
Maximum="100"
Value="{Binding dExecPercentage, Mode=OneWay}"
Height="15"
Width="100"
Margin="5,0,0,0"
Visibility="{Binding ExecPercentage_Visibility}"/>-->
</StackPanel>
</Border>
<FrameworkElement x:Name="dummyElement" Visibility="Collapsed"/>
<DataGrid Grid.Row="2"
ItemsSource="{Binding DoorList}"
SelectedItem="{Binding SelDoor}"
AutoGenerateColumns="False"
CanUserDeleteRows="False"
CanUserResizeRows="False"
@@ -143,18 +71,28 @@
</Style>
</DataGrid.ColumnHeaderStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ID"
Binding="{Binding nId}"
<DataGridTextColumn Binding="{Binding nId}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="File Name"
Binding="{Binding sFileNameWithoutExtension}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.Id_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sFileNameWithoutExtension}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.FileName_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
@@ -166,42 +104,73 @@
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="# Table"
Binding="{Binding nTable}"
<DataGridTextColumn Binding="{Binding nTable}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="File Dimension"
Binding="{Binding sFileDimension}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.Table_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sFileDimension}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="State"
Binding="{Binding nState}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.FileDimension_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sState}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining Start"
Binding="{Binding sMachiningStart}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.State_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sMachiningStart}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining End"
Binding="{Binding sMachiningEnd}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.MachiningStart_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding sMachiningEnd}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
<DataGridTextColumn Header="Machining Time"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.MachiningEnd_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTextColumn Header="{Binding sMachiningTime_Msg}"
Binding="{Binding sMachiningTime}"
Width="Auto"
IsReadOnly="True"
ElementStyle="{StaticResource TextBlock.DataGridTextColumn.DoorList}"
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}"/>
EditingElementStyle="{StaticResource TextBox.DataGridTextColumn.DoorList}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.MachiningTime_Msg, RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}}"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<DataGridTemplateColumn Width="Auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
@@ -262,11 +231,33 @@
RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:RawPartListV}}}"/>
</DataGrid.InputBindings>-->
<DataGrid.RowStyle>
<Style TargetType="DataGridRow" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
<Style TargetType="{x:Type DataGridRow}" BasedOn="{StaticResource RowDataGrid_CustomHighLight}">
<Setter Property="Background" Value="{Binding Background}"/>
<Setter Property="Foreground" Value="{Binding Foreground}"/>
<Setter Property="BorderBrush" Value="{Binding nState, Converter={StaticResource StateToSelColorConverter}}"/>
<Setter Property="BorderBrush" Value="Green"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{Binding Background}"/>
<Setter Property="Foreground" Value="{Binding Foreground}"/>
<Setter Property="BorderBrush" Value="Green"/>
<Setter Property="BorderThickness" Value="2,0,2,0"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.RowStyle>
<DataGrid.CellStyle>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Background" Value="{Binding Background}"/>
<Setter Property="Foreground" Value="{Binding Foreground}"/>
<Setter Property="BorderBrush" Value="{Binding Background}"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{Binding Background}"/>
<Setter Property="Foreground" Value="{Binding Foreground}"/>
<Setter Property="BorderBrush" Value="{Binding Background}"/>
</Trigger>
</Style.Triggers>
</Style>
</DataGrid.CellStyle>
</DataGrid>
</Grid>
@@ -38,15 +38,6 @@ Public Class DoorListPageVM
Return m_DoorList
End Get
End Property
Private m_SelDoor As Door
Public Property SelDoor As Door
Get
Return m_SelDoor
End Get
Set(value As Door)
m_SelDoor = value
End Set
End Property
Private m_DDTList As New ObservableCollection(Of String)
Public ReadOnly Property DDTList As ObservableCollection(Of String)
@@ -107,6 +98,78 @@ Public Class DoorListPageVM
Private m_nTotCreatingDdf As Integer
Private m_nCurrCreatingDdf As Integer
#Region "Messages"
Public ReadOnly Property Id_Msg As String
Get
Return EgtMsg(12001)
End Get
End Property
Public ReadOnly Property FileName_Msg As String
Get
Return EgtMsg(12002)
End Get
End Property
Public ReadOnly Property Table_Msg As String
Get
Return EgtMsg(12003)
End Get
End Property
Public ReadOnly Property FileDimension_Msg As String
Get
Return EgtMsg(12004)
End Get
End Property
Public ReadOnly Property State_Msg As String
Get
Return EgtMsg(12005)
End Get
End Property
Public ReadOnly Property MachiningStart_Msg As String
Get
Return EgtMsg(12006)
End Get
End Property
Public ReadOnly Property MachiningEnd_Msg As String
Get
Return EgtMsg(12007)
End Get
End Property
Public ReadOnly Property MachiningTime_Msg As String
Get
Return EgtMsg(12008)
End Get
End Property
#End Region ' Messages
#Region "Tooltip"
Public ReadOnly Property ProduceAll_Tooltip As String
Get
Return EgtMsg(12021)
End Get
End Property
Public ReadOnly Property ResetProductionQueue_Tooltip As String
Get
Return EgtMsg(12022)
End Get
End Property
Public ReadOnly Property DeleteAll_Tooltip As String
Get
Return EgtMsg(12023)
End Get
End Property
#End Region ' Tooltip
' Definizione comandi
Private m_cmdProduce As ICommand
Private m_cmdProduceAll As ICommand
@@ -129,6 +192,7 @@ Public Class DoorListPageVM
GetPluginPrivateProfileString(S_GENERAL, "BackupDir", "", sBackupDirPath)
Dim sBackupFilePath As String = sBackupDirPath & "\Backup.json"
Read(sBackupFilePath)
ResetProductionQueue()
m_BackupTimer.Interval = New TimeSpan(0, 0, 1)
AddHandler m_BackupTimer.Tick, AddressOf BackupTimer_Tick
m_WriteCSVTimer.Interval = New TimeSpan(0, 1, 0)
@@ -415,7 +479,7 @@ Public Class DoorListPageVM
If IsNothing(CurrDoor) Then Return
Dim nOldIndex As Integer = m_DoorList.IndexOf(CurrDoor)
If nOldIndex = 0 Then Return
If m_DoorList(nOldIndex - 1).nState >= Door.PartProgramStates.READY_FOR_PRODUCTION Then Return
If (m_DoorList(nOldIndex - 1).nState >= Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso m_DoorList(nOldIndex - 1).nState <> Door.PartProgramStates.NOTPRODUCE) Then Return
m_DoorList.Move(nOldIndex, nOldIndex - 1)
WriteBackup()
End Sub
@@ -434,7 +498,7 @@ Public Class DoorListPageVM
End Property
Public Sub MoveDown(CurrDoor As Door)
If IsNothing(CurrDoor) OrElse CurrDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION Then Return
If IsNothing(CurrDoor) OrElse (CurrDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso CurrDoor.nState <> Door.PartProgramStates.NOTPRODUCE) Then Return
Dim nOldIndex As Integer = m_DoorList.IndexOf(CurrDoor)
If nOldIndex = m_DoorList.Count - 1 Then Return
m_DoorList.Move(nOldIndex, nOldIndex + 1)
@@ -455,7 +519,7 @@ Public Class DoorListPageVM
End Property
Public Sub Delete(CurrDoor As Door)
If m_DoorList.Count = 0 OrElse IsNothing(CurrDoor) Then Return
If m_DoorList.Count = 0 OrElse IsNothing(CurrDoor) OrElse CurrDoor.nState = PartProgramStates.READY_FOR_PRODUCTION OrElse CurrDoor.nState = PartProgramStates.SENT_TO_NC OrElse CurrDoor.nState = PartProgramStates.MACHINE_START Then Return
Dim bReset As Boolean = True
'If Not LuaGetGlobVar("bReset", bReset) OrElse Not bReset Then
' If (SelDoor.nState >= Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso SelDoor.nState < Door.PartProgramStates.MACHINE_1_END) Then Return
@@ -469,7 +533,7 @@ Public Class DoorListPageVM
Catch ex As Exception
End Try
m_DoorList.Remove(SelDoor)
m_DoorList.Remove(CurrDoor)
WriteBackup()
End If
End Sub
@@ -490,21 +554,6 @@ Public Class DoorListPageVM
Public Sub DeleteAll()
If m_DoorList.Count = 0 Then Return
Dim bReset As Boolean = True
'If Not LuaGetGlobVar("bReset", bReset) OrElse Not bReset Then
' MessageBox.Show("Impossibile cancellare tutte le porte!" & Environment.NewLine & "La macchina deve essere in stato Reset per poter cancellare tutte le porte!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning)
' Return
'End If
'' verifico che tutte le porte siano in stato prodotto o da non produrre
'Dim bAllProduced As Boolean = True
'For Each CsvDoor In m_DoorList
' If CsvDoor.nState <> PartProgramStates.MACHINE_1_END AndAlso CsvDoor.nState <> PartProgramStates.PRODUCED AndAlso CsvDoor.nState <> PartProgramStates.NOTPRODUCE AndAlso CsvDoor.nState <> PartProgramStates.VERIFICATION_FAILED AndAlso CsvDoor.nState <> PartProgramStates.VERIFIED Then
' bAllProduced = False
' End If
'Next
'If Not bAllProduced Then
' MessageBox.Show("Impossibile cancellare tutte le porte!" & Environment.NewLine & "Per cancellare tutte le porte, devono essere tutte non in lavorazione!", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning)
' Return
'End If
If MessageBox.Show("Sei sicuro di voler cancellare tutte le porte?", "Info", MessageBoxButton.YesNo, MessageBoxImage.Information) = MessageBoxResult.Yes Then
For PartProgramIndex = m_DoorList.Count - 1 To 0 Step -1
' cancello file
@@ -518,15 +567,6 @@ Public Class DoorListPageVM
m_DoorList.RemoveAt(PartProgramIndex)
Next
WriteBackup()
'' cancello backup lua per ripartire pulito
'Try
' Dim sBackupDirPath As String = ""
' GetPluginPrivateProfileString(S_GENERAL, K_BACKUPDIR, "", sBackupDirPath)
' Dim sLuaBackupFilePath As String = sBackupDirPath & "\LuaBackup.json"
' File.Delete(sLuaBackupFilePath)
'Catch ex As Exception
' Map.refSupervisorFunction.PlgOutLog("Fallita cancellazione del file LuaBackup!")
'End Try
End If
End Sub
@@ -549,9 +589,10 @@ Public Class DoorListPageVM
End Sub
Public Sub ProduceDoor(DoorToProduce As Door, Optional bWriteBackup As Boolean = True)
If DoorToProduce.nState <> PartProgramStates.NULL Then Return
If IsNothing(DoorToProduce) Then Return
' la sposto dopo l'ultima da produrre
Dim nNewIndex As Integer = m_DoorList.IndexOf(m_DoorList.FirstOrDefault(Function(x) x.nState < Door.PartProgramStates.READY_FOR_PRODUCTION))
Dim nNewIndex As Integer = m_DoorList.IndexOf(m_DoorList.FirstOrDefault(Function(x) x.nState < Door.PartProgramStates.READY_FOR_PRODUCTION OrElse x.nState = Door.PartProgramStates.NOTPRODUCE))
Dim nOldIndex As Integer = m_DoorList.IndexOf(DoorToProduce)
m_DoorList.Move(nOldIndex, nNewIndex)
DoorToProduce.SetState(Door.PartProgramStates.READY_FOR_PRODUCTION, bWriteBackup)
@@ -574,7 +615,7 @@ Public Class DoorListPageVM
If m_DoorList.Count = 0 Then Return
For nDoorIndex = 0 To m_DoorList.Count - 1
Dim CurrDoor As Door = m_DoorList(nDoorIndex)
If CurrDoor.nState <> Door.PartProgramStates.MACHINE_START AndAlso CurrDoor.nState <> Door.PartProgramStates.PRODUCED Then
If CurrDoor.nState <> Door.PartProgramStates.READY_FOR_PRODUCTION AndAlso CurrDoor.nState <> Door.PartProgramStates.SENT_TO_NC AndAlso CurrDoor.nState <> Door.PartProgramStates.MACHINE_START AndAlso CurrDoor.nState <> Door.PartProgramStates.PRODUCED Then
ProduceDoor(CurrDoor, False)
End If
Next
@@ -681,11 +722,32 @@ Public Class Door
Return m_nState
End Get
End Property
Public ReadOnly Property sState As String
Get
Select Case m_nState
Case PartProgramStates.NULL
Return EgtMsg(12031)
Case PartProgramStates.READY_FOR_PRODUCTION
Return EgtMsg(12032)
Case PartProgramStates.SENT_TO_NC
Return EgtMsg(12033)
Case PartProgramStates.MACHINE_START
Return EgtMsg(12034)
Case PartProgramStates.PRODUCED
Return EgtMsg(12035)
Case PartProgramStates.NOTPRODUCE
Return EgtMsg(12036)
Case Else
Return EgtMsg(12037)
End Select
End Get
End Property
Friend Sub SetState(value As PartProgramStates, Optional bWriteBackup As Boolean = True, Optional bUpdate As Boolean = True)
m_nState = value
If bWriteBackup Then Map.refDoorListPageVM.WriteBackup()
If bUpdate Then
NotifyPropertyChanged(NameOf(nState))
NotifyPropertyChanged(NameOf(sState))
NotifyPropertyChanged(NameOf(Background))
End If
End Sub
@@ -732,7 +794,8 @@ Public Class Door
Public ReadOnly Property sMachiningTime As String
Get
If m_dtMachiningStart = DateTime.MinValue OrElse m_dtMachiningEnd = DateTime.MinValue Then Return String.Format("{0:c}", TimeSpan.Zero)
Return String.Format("{0:c}", (m_dtMachiningEnd - m_dtMachiningStart))
Dim Time As TimeSpan = m_dtMachiningEnd - m_dtMachiningStart
Return String.Format("{0}:{1:00}:{2:00}", (Time.Days * 24 + Time.Hours), Time.Minutes, Time.Seconds + 1)
End Get
End Property
@@ -759,28 +822,12 @@ Public Class Door
Public ReadOnly Property Foreground As SolidColorBrush
Get
Select Case m_nState
Case PartProgramStates.NULL
Return Brushes.White
Case PartProgramStates.NOTPRODUCE
Return Dictionary.Effector_Yellow_Status
Case PartProgramStates.MACHINE_START
Return Dictionary.Effector_Blue_Status
Case PartProgramStates.PRODUCED
Return Dictionary.Effector_Gray_Status
Case Else
Return Brushes.White
End Select
Return Brushes.White
End Get
End Property
' Definizione comandi
Private m_cmdMoveUp As ICommand
Private m_cmdMoveDown As ICommand
Private m_cmdNotProduce As ICommand
Private m_cmdCopyDoor As ICommand
'Private m_cmdMultipleCopyDoor As ICommand
Private m_cmdDelete As ICommand
#Region "CONSTRUCTOR"
@@ -796,6 +843,9 @@ Public Class Door
m_sFileName = JsonDoor.sFileName
m_nTable = JsonDoor.nTable
m_dFileDimension = JsonDoor.dFileDimension
m_nState = JsonDoor.nState
m_dtMachiningStart = JsonDoor.dtMachiningStart
m_dtMachiningEnd = JsonDoor.dtMachiningEnd
End Sub
#End Region ' CONSTRUCTOR
@@ -816,7 +866,6 @@ Public Class Door
File.Copy(sPartProgramDirPath & "\" & m_sFileName, sPartProgramDirPath & "\" & sFileName & "_" & nCopyIndex & sFileExtension)
bFileCopy = True
Catch ex As Exception
End Try
If bFileCopy Then
Return New Door(nId, sFileName & "_" & nCopyIndex & sFileExtension, m_nTable, m_dFileDimension)
@@ -840,6 +889,7 @@ Public Class Door
End Property
Public Sub NotProduce()
If nState = Door.PartProgramStates.PRODUCED Then Return
SetState(If(nState = Door.PartProgramStates.NULL, Door.PartProgramStates.NOTPRODUCE, Door.PartProgramStates.NULL))
End Sub
@@ -880,24 +930,24 @@ Public Class StateToSelColorConverter
Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert
If Not TypeOf value Is PartProgramStates Then Return Brushes.Aqua
'Select Case value
' Case PartProgramStates.LOADED_FROM_CSV
' Return Dictionary.Effector_White_SelStatus
' Case PartProgramStates.VERIFIED
' Return Dictionary.Effector_Green_SelStatus
' Case PartProgramStates.VERIFICATION_FAILED
' Return Dictionary.Effector_Red_SelStatus
' Case PartProgramStates.SKIPPED, PartProgramStates.NOTPRODUCE
' Return Dictionary.Effector_Yellow_SelStatus
' Case PartProgramStates.READY_FOR_PRODUCTION, PartProgramStates.ON_LOAD_STATION
' Return Dictionary.Effector_LightBlue_SelStatus
' Case PartProgramStates.MACHINE_1_START
' Return Dictionary.Effector_Blue_SelStatus
' Case PartProgramStates.MACHINE_1_END, PartProgramStates.PRODUCED
' Return Dictionary.Effector_Gray_SelStatus
' Case Else
' Return Dictionary.Effector_White_SelStatus
'End Select
Select Case value
'Case PartProgramStates.LOADED_FROM_CSV
' Return Dictionary.Effector_White_SelStatus
'Case PartProgramStates.VERIFIED
' Return Dictionary.Effector_Green_SelStatus
'Case PartProgramStates.VERIFICATION_FAILED
' Return Dictionary.Effector_Red_SelStatus
Case PartProgramStates.NOTPRODUCE
Return Dictionary.Effector_Yellow_SelStatus
Case PartProgramStates.READY_FOR_PRODUCTION
Return Dictionary.Effector_LightBlue_SelStatus
Case PartProgramStates.MACHINE_START
Return Dictionary.Effector_Blue_SelStatus
Case PartProgramStates.PRODUCED
Return Dictionary.Effector_Gray_SelStatus
Case Else
Return Dictionary.Effector_White_SelStatus
End Select
End Function
Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack
@@ -75,11 +75,15 @@ Public Class JsonDoor
#End Region ' Statistics
<JsonConstructor>
Sub New(nId As Integer, sFileName As String, nTable As Integer, dFileDimension As Double)
Sub New(nListIndex As Integer, nId As Integer, sFileName As String, nTable As Integer, dFileDimension As Double, nState As PartProgramStates, dtMachiningStart As DateTime, dtMachiningEnd As DateTime)
m_nListIndex = nListIndex
m_nId = nId
m_sFileName = sFileName
m_nTable = nTable
m_dFileDimension = dFileDimension
m_nState = nState
m_dtMachiningStart = dtMachiningStart
m_dtMachiningEnd = dtMachiningEnd
End Sub
Sub New(nListIndex As Integer, Door As Door)
@@ -88,6 +92,9 @@ Public Class JsonDoor
m_sFileName = Door.sFileName
m_nTable = Door.nTable
m_dFileDimension = Door.dFileDimension
m_nState = Door.nState
m_dtMachiningStart = Door.dtMachiningStart
m_dtMachiningEnd = Door.dtMachiningEnd
End Sub
End Class