Compare commits

...

3 Commits

Author SHA1 Message Date
Emmanuele Sassi 9eb30b0697 - Ulteriori modifiche a paginazione e filtri nuova finestra apri 2023-10-16 18:20:53 +02:00
Emmanuele Sassi 0c73db4f52 Merge branch 'feature/NewOpenWindow' into feature/NewOpenWindowNotWorking 2023-10-09 11:18:19 +02:00
Emmanuele Sassi 1f36c9a5b0 test modifiche non OK 2023-10-02 15:31:52 +02:00
8 changed files with 547 additions and 72 deletions
@@ -23,5 +23,8 @@
Public Const COL_USAGE As String = "colUSAGE"
Public Const COL_WASTE As String = "colWASTE"
Public Const COL_ARCHIVED As String = "colARCHIVED"
Public Const COL_PROJID As String = "colPROJID"
Public Const COL_PRODID As String = "colPRODID"
Public Const COL_CREATEDATE As String = "colCRTDATE"
End Module
@@ -68,6 +68,7 @@
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<ComboBox ItemsSource="{Binding FilterTypeList}"
SelectedItem="{Binding SelFilterType}"
@@ -80,6 +81,17 @@
Visibility="{Binding SearchText_Visibility}"/>
<StackPanel Grid.Column="2"
Orientation="Horizontal">
<TextBlock Text="Page index"
Style="{StaticResource OptionTextBlock}"/>
<Button Content="&lt;"
Command="{Binding PrevPage_Command}" />
<TextBlock Text="{Binding nPageIndex}"
Style="{StaticResource OptionTextBlock}"/>
<Button Content="&gt;"
Command="{Binding NextPage_Command}" />
</StackPanel>
<StackPanel Grid.Column="3"
Orientation="Horizontal">
<TextBlock Text="{Binding Rows_Msg}"
Style="{StaticResource OptionTextBlock}"/>
<ComboBox ItemsSource="{Binding RowQuantityList}"
@@ -92,7 +104,7 @@
<EgtBEAMWALL:EgtDataGrid x:Name="MainDataGrid"
Grid.Row="1"
ItemsSource="{Binding ProjectList}"
ItemsSource="{Binding PageList}"
SelectedItem="{Binding SelProject}"
CanUserAddRows="False"
AutoGenerateColumns="False"
@@ -104,10 +116,12 @@
Margin="5"
RowDetailsVisibilityMode="Visible"
CellEditEnding="MainDataGrid_CellEditEnding"
BindingColumns="{Binding ProdColumns}">
BindingColumns="{Binding ProdColumns}"
Sorting="MainDataGrid_Sorting">
<DataGrid.Resources>
<!-- ProdId -->
<DataGridTextColumn x:Key="colPRODID" Binding="{Binding sProdId}">
<DataGridTextColumn x:Key="colPRODID"
Binding="{Binding sProdId}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=DataContext.Id_Msg,RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:NewOpenProjectFileDialogV}}}"/>
@@ -115,7 +129,8 @@
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
<!--Name-->
<DataGridTextColumn x:Key="colNAME" Binding="{Binding sName}">
<DataGridTextColumn x:Key="colNAME"
Binding="{Binding sName}">
<DataGridTextColumn.Header>
<Grid>
<Grid.ColumnDefinitions>
@@ -134,19 +149,23 @@
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Creation date -->
<DataGridTextColumn x:Key="colCRTDATE" Binding="{Binding dtCreateDate}">
<DataGridTextColumn x:Key="colCRTDATE"
Binding="{Binding dtCreateDate}">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.CreateDate_Msg, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:NewOpenProjectFileDialogV}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Machine -->
<DataGridTextColumn x:Key="colMACHINE" Binding="{Binding sMachine}">
<DataGridTextColumn x:Key="colMACHINE"
Binding="{Binding sMachine}"
CanUserSort="False">
<DataGridTextColumn.Header>
<TextBlock Text="{Binding Path=DataContext.Machine_Msg, RelativeSource={RelativeSource AncestorType={x:Type EgtBEAMWALL:NewOpenProjectFileDialogV}}}"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<!-- Archived -->
<DataGridTemplateColumn x:Key="colARCHIVED">
<DataGridTemplateColumn x:Key="colARCHIVED"
CanUserSort="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="\Resources\OpenProjectFileDialog\Archived.png"
@@ -83,4 +83,182 @@ Public Class NewOpenProjectFileDialogV
'm_OpenProjFileDialogVM.SetIsEditNameActive(False)
End Sub
End Class
Private Sub MainDataGrid_Sorting(sender As Object, e As DataGridSortingEventArgs)
' aggiorno direziona colonna
Dim column As DataGridColumn = e.Column
column.SortDirection = If((column.SortDirection <> ListSortDirection.Ascending), ListSortDirection.Ascending, ListSortDirection.Descending)
'' ricalcolo colonne sort
'Dim datagrid As DataGrid = sender
'ProdItemComparer.RefreshColumns()
'' lancio sort custom
'm_OpenProjFileDialogVM.RefreshProdItemSort()
m_OpenProjFileDialogVM.SortPageList()
m_OpenProjFileDialogVM.UpdatePageList()
e.Handled = True
End Sub
End Class
Friend Class ProdItemComparer
Implements IComparer
Private Shared DataGrid As DataGrid
Friend Shared Sub SetDataGrid(value As DataGrid)
DataGrid = value
End Sub
Private Shared m_OpenProjFileDialogVM As NewOpenProjectFileDialogVM
Friend Shared Sub SetOpenProjFileDialogVM(value As NewOpenProjectFileDialogVM)
m_OpenProjFileDialogVM = value
End Sub
Private Shared m_ColumnList As New List(Of DataGridColumn)
Private Shared m_EgtColumnList As New List(Of EgtDataGridColumn)
Friend Shared Sub RefreshColumns()
m_ColumnList.Clear()
m_EgtColumnList.Clear()
For Each col In DataGrid.Columns
If Not IsNothing(col.SortDirection) Then
m_ColumnList.Add(col)
m_EgtColumnList.Add(m_OpenProjFileDialogVM.ProdColumns(col.DisplayIndex))
End If
Next
' Map.refRawPartListVM.SetRawPartListSorted(m_ColumnList.Count > 0)
End Sub
Public Function Compare(x As Object, y As Object) As Integer Implements IComparer.Compare
' Dim First As MyMachGroupVM = DirectCast(x, MyMachGroupVM)
' Dim Second As MyMachGroupVM = DirectCast(y, MyMachGroupVM)
' Dim bFirstProduced As Boolean = First.nProduction_State = Core.ItemState.WIP OrElse First.nProduction_State = Core.ItemState.Produced
' Dim bSecondProduced As Boolean = Second.nProduction_State = Core.ItemState.WIP OrElse Second.nProduction_State = Core.ItemState.Produced
' Dim bFirstInQueue As Boolean = First.bToBeProduced
' Dim bSecondInQueue As Boolean = Second.bToBeProduced
' ' verifico se gia' prodotti
' If bFirstProduced AndAlso bSecondProduced Then
' If First.nProductionIndex > Second.nProductionIndex Then
' Return 1
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
' Return -1
' Else
' Return 0
' End If
' ElseIf bFirstProduced Then
' Return -1
' ElseIf bSecondProduced Then
' Return 1
' ElseIf bFirstInQueue AndAlso bSecondInQueue Then
' If First.nProductionIndex > Second.nProductionIndex Then
' Return 1
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
' Return -1
' Else
' Return 0
' End If
' ElseIf bFirstInQueue Then
' Return -1
' ElseIf bSecondInQueue Then
' Return 1
' Else
' ' verifico ordine per colonne
' Dim ColumnIndex = 0
' While ColumnIndex <= m_EgtColumnList.Count - 1
' Dim nDir As ListSortDirection = If(m_ColumnList(ColumnIndex).SortDirection, 1, -1)
' Dim nCheck As Integer = Check(First, Second, nDir, m_EgtColumnList(ColumnIndex))
' If nCheck <> 0 Then
' Return nCheck
' End If
' ColumnIndex += 1
' End While
' ' se non trovo colonne, metto in ordine indice di produzione
' If First.nProductionIndex > Second.nProductionIndex Then
' Return 1
' ElseIf First.nProductionIndex < Second.nProductionIndex Then
' Return -1
' Else
' Return 0
' End If
' End If
End Function
Private Function Check(First As MyMachGroupVM, Second As MyMachGroupVM, nDirection As Integer, Column As EgtDataGridColumn) As Integer
Select Case Column.Name
Case COL_NAME
If First.nName > Second.nName Then
Return 1 * nDirection
ElseIf First.nName < Second.nName Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_STARTCUT
If First.Id > Second.Id Then
Return 1 * nDirection
ElseIf First.Id < Second.Id Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_W
If First.dW > Second.dW Then
Return 1 * nDirection
ElseIf First.dW < Second.dW Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_H
If First.dH > Second.dH Then
Return 1 * nDirection
ElseIf First.dH < Second.dH Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_L
If First.dL > Second.dL Then
Return 1 * nDirection
ElseIf First.dL < Second.dL Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_POSZ
'If First.posz > Second.dL Then
' Return 1 * nDirection
'ElseIf First.dL < Second.dL Then
' Return -1 * nDirection
'Else
' Return 0
'End If
Case COL_MATERIAL
If First.sMATERIAL > Second.sMATERIAL Then
Return 1 * nDirection
ElseIf First.sMATERIAL < Second.sMATERIAL Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_USAGE
If First.dUsage > Second.dUsage Then
Return 1 * nDirection
ElseIf First.dUsage < Second.dUsage Then
Return -1 * nDirection
Else
Return 0
End If
Case COL_WASTE
If First.dWaste > Second.dWaste Then
Return 1 * nDirection
ElseIf First.dWaste < Second.dWaste Then
Return -1 * nDirection
Else
Return 0
End If
End Select
End Function
End Class
@@ -19,7 +19,7 @@ Public MustInherit Class NewOpenProjectFileDialogVM
EXPORTDATE = 1
End Enum
Private Enum FilterTypes As Integer
Protected Enum FilterTypes As Integer
NULL = 0
ID = 1
BTLFILENAME = 2
@@ -36,9 +36,9 @@ Public MustInherit Class NewOpenProjectFileDialogVM
End Enum
Public Enum RowQuantities As Integer
FIFTY = 0
HUNDRED = 1
HUNDREDANDFIFTY = 2
TEN = 0
TWENTY = 1
THIRTY = 2
End Enum
Friend Event m_CloseWindow(bDialogResult As Boolean)
@@ -67,6 +67,27 @@ Public MustInherit Class NewOpenProjectFileDialogVM
End Get
End Property
Private m_colProjId_Name As EgtDataGridColumn
Public ReadOnly Property colProjId_Name As EgtDataGridColumn
Get
Return m_colProjId_Name
End Get
End Property
Private m_colProdId_Name As EgtDataGridColumn
Public ReadOnly Property colProdId_Name As EgtDataGridColumn
Get
Return m_colProdId_Name
End Get
End Property
Private m_colCreateDate_Name As EgtDataGridColumn
Public ReadOnly Property colCreateDate_Name As EgtDataGridColumn
Get
Return m_colCreateDate_Name
End Get
End Property
Protected m_ProjColumns As New ObservableCollection(Of EgtDataGridColumn)
Public Property ProjColumns As ObservableCollection(Of EgtDataGridColumn)
Get
@@ -106,7 +127,13 @@ Public MustInherit Class NewOpenProjectFileDialogVM
End Get
End Property
Public m_ProjectList_View As CollectionView = Nothing
Private m_ProjectList_View As CollectionView = Nothing
Public ReadOnly Property ProjectList_View As CollectionView
Get
Return m_ProjectList_View
End Get
End Property
Protected m_ProjectList As New ObservableCollection(Of ProdItem)
Public ReadOnly Property ProjectList As ObservableCollection(Of ProdItem)
Get
@@ -185,7 +212,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Set(value As Integer)
' aggiorno lista da Db
RefreshProjectList()
m_ProjectList_View.Refresh()
'm_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -227,7 +255,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
NotifyPropertyChanged(NameOf(Date_Visibility))
' aggiorno lista da Db
RefreshProjectList()
m_ProjectList_View.Refresh()
' m_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -242,7 +271,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
WriteMainPrivateProfileString(S_OPENFILEDIALOG, K_STARTDATE, lStartDate.ToString())
' aggiorno lista da Db
RefreshProjectList()
m_ProjectList_View.Refresh()
' m_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -257,7 +287,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
WriteMainPrivateProfileString(S_OPENFILEDIALOG, K_ENDDATE, lEndDate.ToString())
' aggiorno lista da Db
RefreshProjectList()
m_ProjectList_View.Refresh()
' m_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -275,7 +306,7 @@ Public MustInherit Class NewOpenProjectFileDialogVM
End Get
End Property
Private m_SelRowQuantity As RowQuantities
Protected m_SelRowQuantity As RowQuantities
Public Property SelRowQuantity As Integer
Get
Return m_SelRowQuantity
@@ -283,7 +314,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Set(value As Integer)
m_SelRowQuantity = value
RefreshProjectList()
m_ProjectList_View.Refresh()
' m_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -308,7 +340,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
If Not IsNothing(SearchDate) Then SearchDate.Clear()
' setto il Tipo Filtro a NULL e refresho la lista dei progetti (in modo da averli visibili tutti)
m_SelFilterType = m_FilterTypeList(0)
m_ProjectList_View.Refresh()
'm_ProjectList_View.Refresh()
UpdatePageList()
' ora setto il valore scelto come Tipo Filtro
m_SelFilterType = value
Select Case m_SelFilterType.Id
@@ -332,7 +365,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
End Get
Set(value As String)
m_SearchText = value
m_ProjectList_View.Refresh()
'm_ProjectList_View.Refresh()
UpdatePageList()
End Set
End Property
@@ -390,9 +424,9 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Set(value As Boolean)
m_bViewArchived = value
WriteMainPrivateProfileString(S_OPENFILEDIALOG, K_VIEWARCHIVED, If(bViewArchived, 1, 0))
If Not IsNothing( m_colArchived_Name) Then
m_colArchived_Name.Visible = value
RefreshProjectList()
If Not IsNothing(m_colArchived_Name) Then
m_colArchived_Name.Visible = value
RefreshProjectList()
End If
End Set
End Property
@@ -419,6 +453,30 @@ Public MustInherit Class NewOpenProjectFileDialogVM
NotifyPropertyChanged(NameOf(bDelete_IsEnabled))
End Sub
Private m_PageList_View As ListCollectionView = Nothing
Public ReadOnly Property PageList_View As ListCollectionView
Get
Return m_PageList_View
End Get
End Property
Protected m_PageList As New ObservableCollection(Of ProdItem)
Public Property PageList As ObservableCollection(Of ProdItem)
Get
Return m_PageList
End Get
Set(value As ObservableCollection(Of ProdItem))
m_PageList = value
End Set
End Property
Private m_nPageIndex As Integer = 1
Public ReadOnly Property nPageIndex As Integer
Get
Return m_nPageIndex
End Get
End Property
Protected m_ChangeOpenedProjectOnCancel As Boolean = False
#Region "Messages"
@@ -545,6 +603,8 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Private m_cmdDelete As ICommand
Private m_cmdArchive As ICommand
Private m_cmdCancel As ICommand
Private m_cmdPrevPage As ICommand
Private m_cmdNextPage As ICommand
#End Region ' FIELDS & PROPERTIES
@@ -555,6 +615,9 @@ Public MustInherit Class NewOpenProjectFileDialogVM
LoadColumns()
m_colProdFile_Name = m_ProdColumns.FirstOrDefault(Function(x) x.Name = COL_NAME)
m_colArchived_Name = m_ProdColumns.FirstOrDefault(Function(x) x.Name = COL_ARCHIVED)
m_colProjId_Name = m_ProdColumns.FirstOrDefault(Function(x) x.Name = COL_PROJID)
m_colProdId_Name = m_ProdColumns.FirstOrDefault(Function(x) x.Name = COL_PRODID)
m_colCreateDate_Name = m_ProdColumns.FirstOrDefault(Function(x) x.Name = COL_CREATEDATE)
' leggo valori per filtri
m_SelDayType = GetMainPrivateProfileInt(S_OPENFILEDIALOG, K_DAYTYPE, 0)
Select Case m_SelDayType
@@ -589,6 +652,29 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Public Overridable Sub RefreshProjectList(Optional GoToProd As Boolean = False)
End Sub
Private m_ProdItemComparer As ProdItemComparer
Friend ReadOnly Property ProdItemComparer As ProdItemComparer
Get
Return m_ProdItemComparer
End Get
End Property
Friend Sub SetPageListView()
m_PageList_View = CollectionViewSource.GetDefaultView(m_PageList)
m_ProdItemComparer = New ProdItemComparer
m_PageList_View.CustomSort = m_ProdItemComparer
NotifyPropertyChanged(NameOf(PageList_View))
End Sub
Friend Sub RefreshProdItemSort()
m_PageList_View.CustomSort = m_ProdItemComparer
End Sub
Friend Sub SortPageList()
' m_ProjectList = New ObservableCollection(Of ProdItem)(m_ProjectList.OrderBy(Of Integer)(Function(x) If(String.IsNullOrWhiteSpace(x.sProdId), 0, CInt(x.sProdId))))
End Sub
Protected Sub LoadColumns()
'If ProjectType = ProjectType.PROJ Then
' carico le colonne della datagrid
@@ -650,17 +736,69 @@ Public MustInherit Class NewOpenProjectFileDialogVM
Return AllFilesInDir.Any(Function(x) Path.GetExtension(x).ToLower() = ".nge")
End Function
Protected Function ProjectFilter(Proj As Object) As Boolean
Dim bProjectOk As Boolean = True
'If TypeOf Proj Is ProjFileVM Then
Dim CurrProj As ProdItem = DirectCast(Proj, ProdItem)
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
(m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not CurrProj.ProjFileList.Any(Function(x) SearchDate.Contains(DirectCast(x, ProjFileVM).dtExportDate.Date))) OrElse
(m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
(m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
'Protected Function ProjectFilter(Proj As Object) As Boolean
' Dim bProjectOk As Boolean = True
' 'If TypeOf Proj Is ProjFileVM Then
' Dim CurrProj As ProdItem = DirectCast(Proj, ProdItem)
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
' (m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not CurrProj.ProjFileList.Any(Function(x) SearchDate.Contains(DirectCast(x, ProjFileVM).dtExportDate.Date))) OrElse
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
' 'ElseIf TypeOf Proj Is ProdFileVM Then
' ' Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM)
' ' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
' ' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
' ' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
' ' (m_SelFilterType.Id = FilterTypes.ID AndAlso CurrProj.sProdId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
' ' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
' ' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
' 'End If
' Return bProjectOk
'End Function
Public Overridable Function UpdatePageList() As Boolean
Dim FilteredList As IEnumerable(Of ProdItem) = m_ProjectList.Where(Function(x)
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso
((m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.MACHINE AndAlso x.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then Return False
Return True
End Function)
Dim nPageRowQty As Integer = 0
Select Case m_SelRowQuantity
Case RowQuantities.TEN
nPageRowQty = 10
Case RowQuantities.TWENTY
nPageRowQty = 20
Case RowQuantities.THIRTY
nPageRowQty = 30
End Select
Dim nStart = nPageIndex * nPageRowQty
If (nPageIndex - 1) * nPageRowQty + 1 > FilteredList.Count() Then
Return False
End If
' FilteredList = FilteredList.OrderBy(Of ProdItem)()
' m_PageList = New ObservableCollection(Of ProdItem)(FilteredList.Skip((nPageIndex - 1) * nPageRowQty + 1).Take(nPageIndex * nPageRowQty).Select(Function(x) x))
m_PageList.Clear()
For Index = (nPageIndex - 1) * nPageRowQty + 1 To nPageIndex * nPageRowQty
m_PageList.Add(FilteredList(Index))
Next
NotifyPropertyChanged(NameOf(PageList))
Return True
'Dim bProjectOk As Boolean = True
''If TypeOf Proj Is ProjFileVM Then
'Dim CurrProj As ProdItem = DirectCast(PROJ, ProdItem)
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
' (m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not CurrProj.ProjFileList.Any(Function(x) SearchDate.Contains(DirectCast(x, ProjFileVM).dtExportDate.Date))) OrElse
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
'ElseIf TypeOf Proj Is ProdFileVM Then
' Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM)
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
@@ -670,6 +808,15 @@ Public MustInherit Class NewOpenProjectFileDialogVM
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
'End If
' Return bProjectOk
End Function
Protected Function ProjectFilter(CurrProj As ProdItem) As Boolean
Dim bProjectOk As Boolean = True
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
(m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
Return bProjectOk
End Function
@@ -775,6 +922,60 @@ Public MustInherit Class NewOpenProjectFileDialogVM
#End Region ' Cancel
#Region "PrevPage"
''' <summary>
''' Returns a command that do New.
''' </summary>
Public ReadOnly Property PrevPage_Command As ICommand
Get
If m_cmdPrevPage Is Nothing Then
m_cmdPrevPage = New Command(AddressOf PrevPage)
End If
Return m_cmdPrevPage
End Get
End Property
''' <summary>
''' Execute the New. This method is invoked by the NewCommand.
''' </summary>
Public Overridable Sub PrevPage()
If m_nPageIndex > 1 Then
m_nPageIndex -= 1
End If
UpdatePageList()
NotifyPropertyChanged(NameOf(nPageIndex))
End Sub
#End Region ' PrevPage
#Region "NextPage"
''' <summary>
''' Returns a command that do New.
''' </summary>
Public ReadOnly Property NextPage_Command As ICommand
Get
If m_cmdNextPage Is Nothing Then
m_cmdNextPage = New Command(AddressOf NextPage)
End If
Return m_cmdNextPage
End Get
End Property
''' <summary>
''' Execute the New. This method is invoked by the NewCommand.
''' </summary>
Public Overridable Sub NextPage()
m_nPageIndex += 1
If Not UpdatePageList() Then
m_nPageIndex -= 1
End If
NotifyPropertyChanged(NameOf(nPageIndex))
End Sub
#End Region ' NextPage
#End Region ' Commands
End Class
@@ -46,6 +46,7 @@ Public Class SupervisorMachGroupPanelVM
#End Region ' FIELDS & PROPERTIES
#Region "CONSTRUCTOR"
Private m_MachGroupVMListComparer As MyComparer
Friend ReadOnly Property MachGroupVMListComparer As MyComparer
Get
@@ -95,7 +95,9 @@ Public Class SupervisorManagerVM
#End Region ' ToolTip
#End Region ' Fields & Properties
#Region "CONSTRUCTOR"
Sub New()
@@ -34,8 +34,9 @@ Public Class NewOpenProjectFileDialogVM
SetFixedProjectList(True)
NotifyPropertyChanged(NameOf(ProjectList))
End If
m_ProjectList_View = CollectionViewSource.GetDefaultView(m_ProjectList)
m_ProjectList_View.Filter = AddressOf ProjectFilter
'm_ProjectList_View = CollectionViewSource.GetDefaultView(m_ProjectList)
'm_ProjectList_View.Filter = AddressOf ProjectFilter
UpdatePageList()
End Function
Public Overrides Sub RefreshProjectList(Optional GoToProd As Boolean = False)
@@ -45,19 +46,19 @@ Public Class NewOpenProjectFileDialogVM
Dim dtEnd As DateTime
Dim nRowQuantity As Integer = 20
Select Case SelRowQuantity
Case RowQuantities.FIFTY
nRowQuantity = 50
Case RowQuantities.HUNDRED
nRowQuantity = 100
Case RowQuantities.HUNDREDANDFIFTY
nRowQuantity = 150
Case RowQuantities.TEN
nRowQuantity = 10
Case RowQuantities.TWENTY
nRowQuantity = 20
Case RowQuantities.THIRTY
nRowQuantity = 30
End Select
Select Case m_SelDayType
Case DayTypes.LASTMONTH
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
dtStart = dtEnd - TimeSpan.FromDays(30.5)
dtEnd = DateTime.Today.AddDays(1)
dtStart = dtEnd.AddMonths(-1)
Case DayTypes.LAST3MONTHS
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
dtEnd = DateTime.Today.AddDays(1)
dtStart = dtEnd - TimeSpan.FromDays(30.5 * 3)
Case DayTypes.LAST6MONTHS
dtEnd = DateTime.Today + TimeSpan.FromDays(1)
@@ -71,31 +72,48 @@ Public Class NewOpenProjectFileDialogVM
End Select
' leggo da db
If m_ProjectType = ProjectType.PROJ Then
Dim DbProjList As New List(Of ProjFileM)
If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then
DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
Else
DbProjList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
End If
For Each Project In DbProjList
If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For
' verifico se ha prod
If Not IsNothing(Project.nProdId) And Project.nProdId > 0 Then
' verifico se prod e' gia' stato creato
Dim SameProdItem As ProdItem = m_ProjectList.FirstOrDefault(Function(x) Not IsNothing(x.ProdFileVM) AndAlso Not IsNothing(x.ProdFileVM.nProdId) AndAlso x.ProdFileVM.nProdId = Project.nProdId)
If Not IsNothing(SameProdItem) Then
SameProdItem.ProjFileList.Add(New ProjFileVM(Project))
Else
' recupero Prod
Dim NewDbProd As ProdFileM = DbControllers.m_ProdController.FindCoreByProdId(Project.nProdId)
If Not IsNothing(NewDbProd) Then
m_ProjectList.Add(New ProdItem(New ProdFileVM(NewDbProd), New ProjFileVM(Project)))
End If
End If
Else
m_ProjectList.Add(New ProdItem(New ProjFileVM(Project)))
End If
Next
'Dim DbProjList As New List(Of ProjFileM)
'If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then
' DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, 100000, True, bViewArchived)
' 'DbProjList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
'Else
' DbProjList = DbControllers.m_ProjController.GetLastByExpDesc(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived)
'End If
'For Each Project In DbProjList
' If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For
' ' verifico se ha prod
' If Not IsNothing(Project.nProdId) And Project.nProdId > 0 Then
' ' verifico se prod e' gia' stato creato
' Dim SameProdItem As ProdItem = m_ProjectList.FirstOrDefault(Function(x) Not IsNothing(x.ProdFileVM) AndAlso Not IsNothing(x.ProdFileVM.nProdId) AndAlso x.ProdFileVM.nProdId = Project.nProdId)
' If Not IsNothing(SameProdItem) Then
' SameProdItem.ProjFileList.Add(New ProjFileVM(Project))
' Else
' ' recupero Prod
' Dim NewDbProd As ProdFileM = DbControllers.m_ProdController.FindCoreByProdId(Project.nProdId)
' If Not IsNothing(NewDbProd) Then
' m_ProjectList.Add(New ProdItem(New ProdFileVM(NewDbProd), New ProjFileVM(Project)))
' End If
' End If
' Else
' m_ProjectList.Add(New ProdItem(New ProjFileVM(Project)))
' End If
'Next
m_ProjectList = New ObservableCollection(Of Core.ProdItem)(DbControllers.m_ProdController.GetLastDescFull(dtStart, dtEnd, nRowQuantity * 3, True, bViewArchived))
'Dim sMachine As String = ""
'Dim sBtlFileName As String = ""
'Dim sListName As String = ""
'Dim bIsCreationDate As Boolean = True
'If SelFilterType.Id = FilterTypes.ID Then
' ' sMachine = SearchText
'ElseIf SelFilterType.Id = FilterTypes.BTLFILENAME Then
' sBtlFileName = SearchText
'ElseIf SelFilterType.Id = FilterTypes.LISTNAME Then
' sListName = SearchText
'ElseIf SelFilterType.Id = FilterTypes.MACHINE Then
' sMachine = SearchText
'End If
'm_ProjectList = New ObservableCollection(Of Core.ProdItem)(DbControllers.m_ProdController.GetLastDescFull(dtStart, dtEnd, bIsCreationDate, nRowQuantity * 3, True, sMachine, sBtlFileName, sListName, bViewArchived))
NotifyPropertyChanged(NameOf(ProjectList))
ElseIf m_ProjectType = ProjectType.PROD Then
Dim DbProdList As New List(Of ProdFileM)
DbProdList = DbControllers.m_ProdController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True, bViewArchived)
@@ -136,6 +154,59 @@ Public Class NewOpenProjectFileDialogVM
End If
End Sub
Public Overrides Function UpdatePageList() As Boolean
Dim FilteredList As IEnumerable(Of Core.ProdItem) = m_ProjectList.Where(Function(x)
If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso
((m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso x.ProjFileList.Any(Function(y) DirectCast(y, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
(m_SelFilterType.Id = FilterTypes.MACHINE AndAlso x.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then Return False
Return True
End Function)
Dim nPageRowQty As Integer = 0
Select Case m_SelRowQuantity
Case RowQuantities.TEN
nPageRowQty = 10
Case RowQuantities.TWENTY
nPageRowQty = 20
Case RowQuantities.THIRTY
nPageRowQty = 30
End Select
Dim nStart = (nPageIndex - 1) * nPageRowQty
Dim nEnd = Math.Min((nPageIndex * nPageRowQty), FilteredList.Count())
If nStart > FilteredList.Count() Then
Return False
End If
' FilteredList = FilteredList.OrderBy(Of ProdItem)()
m_PageList = New ObservableCollection(Of ProdItem)(FilteredList.Skip(nStart).Take(nPageRowQty).Select(Function(x) x))
'm_PageList.Clear()
'For Index = nStart To nEnd
' m_PageList.Add(FilteredList(Index))
'Next
NotifyPropertyChanged(NameOf(PageList))
Return True
'Dim bProjectOk As Boolean = True
''If TypeOf Proj Is ProjFileVM Then
'Dim CurrProj As ProdItem = DirectCast(PROJ, ProdItem)
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
' (m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not CurrProj.ProjFileList.Any(Function(x) SearchDate.Contains(DirectCast(x, ProjFileVM).dtExportDate.Date))) OrElse
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
'If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.LISTNAME AndAlso CurrProj.ProjFileList.Any(Function(x) DirectCast(x, ProjFileVM).sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) OrElse
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
'ElseIf TypeOf Proj Is ProdFileVM Then
' Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM)
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso (
' (m_SelFilterType.Id = BTLDateTypes.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False
' If m_SelFilterType.Id <> FilterTypes.NULL AndAlso m_SearchText <> String.Empty AndAlso (
' (m_SelFilterType.Id = FilterTypes.ID AndAlso CurrProj.sProdId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
' (m_SelFilterType.Id = FilterTypes.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse
' (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False
'End If
' Return bProjectOk
End Function
Public Overrides Sub Archive()
If IsNothing(SelProject) Then Return
If Not IsNothing(SelProject.ProdFileVM) Then
@@ -438,7 +438,7 @@ Public Class ProjManagerVM
Dim OpenFile As New NewOpenProjectFileDialogV(Application.Current.MainWindow, OpenProdFileDialogVM)
Dim DialogResult As Boolean? = OpenFile.EgtShowDialog(ProjectType.PROJ)
If IsNothing(DialogResult) OrElse Not DialogResult Then Return
Dim TempProd As ProdItem = OpenProdFileDialogVM.SelProject
Dim TempProd As Core.ProdItem = OpenProdFileDialogVM.SelProject
If TempProd.ProjFileList.Count > 1 Then
' apro dialogo di scelta Proj
Dim OpenProjFileDialogVM As OpenProjectFileDialogVM = Nothing