From 3133c1d78cb9f97d07b8a86cc34b44dcb3a6d8ee Mon Sep 17 00:00:00 2001 From: Emmanuele Sassi Date: Fri, 16 Jun 2023 15:06:18 +0200 Subject: [PATCH] - Aggiunto parametro Description a ProjFileVM - Modificati filtri apertura file --- EgtBEAMWALL.Core/Constants/ConstIni.vb | 2 + .../OpenProjectFileDialogV.xaml | 105 ++++++-- .../OpenProjectFileDialogV.xaml.vb | 24 +- .../OpenProjectFileDialogVM.vb | 251 ++++++++++++++---- EgtBEAMWALL.Core/ProjectManager/ProjFileVM.vb | 6 + .../OpenProjectFileDialogVM.vb | 4 +- .../OpenProjectFileDialogVM.vb | 156 ++++++----- .../ProjectFileVM/ProjFileVM.vb | 5 + .../Utility/Dictionary.xaml | 14 + 9 files changed, 429 insertions(+), 138 deletions(-) diff --git a/EgtBEAMWALL.Core/Constants/ConstIni.vb b/EgtBEAMWALL.Core/Constants/ConstIni.vb index 083d4c91..192e08cf 100644 --- a/EgtBEAMWALL.Core/Constants/ConstIni.vb +++ b/EgtBEAMWALL.Core/Constants/ConstIni.vb @@ -127,6 +127,8 @@ Public Module ConstIni Public Const K_STARTDATE As String = "StartDate" Public Const K_ENDDATE As String = "EndDate" + Public Const S_OPENFILEDIALOG As String = "OpenFileDialog" + 'Public Const S_NEST As String = "Nest" Public Const K_NESTEXEC As String = "NestExec" Public Const K_FLIPROT As String = "FlipRot" diff --git a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml index 1ea88efc..eca28990 100644 --- a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml +++ b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml @@ -5,9 +5,9 @@ xmlns:EgtBEAMWALL="clr-namespace:EgtBEAMWALL.Core" Title="{Binding Title}" Style="{DynamicResource {x:Type EgtWPFLib5:EgtCustomWindow}}" - WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsResizable="False" + WindowStyle="None" ResizeMode="NoResize" TitleBarHeight="30" IsResizable="True" IsMinimizable="False" WindowStartupLocation="CenterScreen" ShowInTaskbar="False" - Height="500" Width="500" Topmost="True" + MinHeight="500" MinWidth="500" Topmost="True" DataContext="{Binding RelativeSource={RelativeSource Self}}"> @@ -21,42 +21,105 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + - - - - - - + + --> - - + diff --git a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb index 83d507b6..06dc095d 100644 --- a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb +++ b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogV.xaml.vb @@ -5,6 +5,8 @@ Imports System.Windows.Controls Imports System.Windows.Input Imports EgtBEAMWALL.Core.ConstBeam Imports EgtUILib +Imports EgtWPFLib5 +Imports EgtBEAMWALL Public Class OpenProjectFileDialogV @@ -19,6 +21,8 @@ Public Class OpenProjectFileDialogV Me.DataContext = OpenProjFileDialogVM ' Assegno al riferimento locale al VM il VM preso dal DataContext m_OpenProjFileDialogVM = OpenProjFileDialogVM + AddHandler Me.Loaded, AddressOf OpenProjectFileDialog_Loaded + AddHandler Me.Closing, AddressOf OpenProjectFileDialog_Closing End Sub #End Region ' CONSTRUCTOR @@ -42,6 +46,20 @@ Public Class OpenProjectFileDialogV Return Me.ShowDialog() End Function + Private Sub OpenProjectFileDialog_Loaded(sender As Object, e As RoutedEventArgs) + ' Carico e imposto posizione finestra + WinPosFromIniToWindow(S_OPENFILEDIALOG, K_VIEWOPTIMWINPLACE, Me) + End Sub + + Private Sub OpenProjectFileDialog_Closing(sender As Object, e As System.ComponentModel.CancelEventArgs) + If (Keyboard.Modifiers And ModifierKeys.Alt) = ModifierKeys.Alt OrElse Keyboard.IsKeyDown(Key.F4) Then + e.Cancel = True + Return + End If + ' Salvo posizione finestra (se non minimizzata) + WinPosFromWindowToIni(Me, S_OPENFILEDIALOG, K_VIEWOPTIMWINPLACE) + End Sub + #End Region ' METHODS #Region "EVENTS" @@ -60,10 +78,4 @@ Public Class OpenProjectFileDialogV Me.DialogResult = bDialogResult End Sub - Private Sub Calendar_SelectedDatesChanged(sender As Object, e As SelectionChangedEventArgs) - Dim cal As System.Windows.Controls.Calendar = sender - m_OpenProjFileDialogVM.m_SearchDate = cal.SelectedDates - m_OpenProjFileDialogVM.m_ProjectList_View.Refresh() - End Sub - End Class \ No newline at end of file diff --git a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogVM.vb b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogVM.vb index 1d7ebef8..dcc32dc0 100644 --- a/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogVM.vb +++ b/EgtBEAMWALL.Core/OpenProjectFileDialog/OpenProjectFileDialogVM.vb @@ -14,6 +14,32 @@ Public MustInherit Class OpenProjectFileDialogVM #Region "FIELDS & PROPERTIES" + Public Enum BTLDateTypes As Integer + CREATEDATE = 0 + EXPORTDATE = 1 + End Enum + + Private Enum FilterTypes As Integer + NULL = 0 + ID = 1 + BTLFILENAME = 2 + LISTNAME = 3 + MACHINE = 4 + End Enum + + Public Enum DayTypes As Integer + LASTMONTH = 0 + LAST3MONTHS = 1 + LAST6MONTHS = 2 + PERIOD = 3 + End Enum + + Public Enum RowQuantities As Integer + FIFTY = 0 + HUNDRED = 1 + HUNDREDANDFIFTY = 2 + End Enum + Friend Event m_CloseWindow(bDialogResult As Boolean) Protected m_ProjectColumns As New ObservableCollection(Of EgtDataGridColumn) @@ -83,18 +109,131 @@ Public MustInherit Class OpenProjectFileDialogVM End Set End Property - ' lista campi per ricerca testuale e con datepicker - Protected m_SearchColumnList As New ObservableCollection(Of IdNameStruct) - Public ReadOnly Property SearchColumnList As ObservableCollection(Of IdNameStruct) + Protected m_BTLDateTypeList As New List(Of String) + Public ReadOnly Property BTLDateTypeList As List(Of String) Get - Return m_SearchColumnList + Return m_BTLDateTypeList End Get End Property - Protected m_SelSearchColumn As IdNameStruct = Nothing - Public Property SelSearchColumn As IdNameStruct + Protected m_SelBTLDateType As BTLDateTypes = Nothing + Public Property SelBTLDateType As Integer Get - Return m_SelSearchColumn + Return m_SelBTLDateType + End Get + Set(value As Integer) + ' aggiorno lista da Db + RefreshProjectList() + m_ProjectList_View.Refresh() + End Set + End Property + + + Private m_DayTypeList As New List(Of String)({"Last Month", "Last 3 Months", "Last 6 Months", EgtMsg(62531)}) + Public ReadOnly Property DayTypeList As List(Of String) + Get + Return m_DayTypeList + End Get + End Property + + Protected m_SelDayType As DayTypes = DayTypes.LASTMONTH + Public Property SelDayType As Integer + Get + Return m_SelDayType + End Get + Set(value As Integer) + Dim PrevSelDayType As DayTypes = m_SelDayType + m_SelDayType = value + WriteMainPrivateProfileString(S_OPENFILEDIALOG, K_DAYTYPE, Convert.ToInt32(m_SelDayType)) + m_Date_Visibility = If(m_SelDayType = DayTypes.PERIOD, Visibility.Visible, Visibility.Collapsed) + If m_SelDayType = DayTypes.PERIOD Then + Select Case PrevSelDayType + Case DayTypes.LASTMONTH + m_dtStartDate = DateTime.Today + TimeSpan.FromDays(1) + m_dtEndDate = m_dtStartDate - TimeSpan.FromDays(31) + Case DayTypes.LAST3MONTHS + + Case DayTypes.LAST6MONTHS + + End Select + NotifyPropertyChanged(NameOf(dtStartDate)) + NotifyPropertyChanged(NameOf(dtEndDate)) + End If + NotifyPropertyChanged(NameOf(Date_Visibility)) + ' aggiorno lista da Db + RefreshProjectList() + m_ProjectList_View.Refresh() + End Set + End Property + + Private m_dtStartDate As DateTime = DateTime.Today + Public Property dtStartDate As DateTime + Get + Return m_dtStartDate + End Get + Set(value As DateTime) + m_dtStartDate = value + Dim lStartDate As Long = m_dtStartDate.ToFileTimeUtc() + WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_STARTDATE, lStartDate.ToString()) + ' aggiorno lista da Db + RefreshProjectList() + m_ProjectList_View.Refresh() + End Set + End Property + + Private m_dtEndDate As DateTime = DateTime.Today + Public Property dtEndDate As DateTime + Get + Return m_dtEndDate + End Get + Set(value As DateTime) + m_dtEndDate = value + Dim lEndDate As Long = m_dtEndDate.ToFileTimeUtc() + WriteMainPrivateProfileString(S_MACHINELOGFILTER, K_ENDDATE, lEndDate.ToString()) + ' aggiorno lista da Db + RefreshProjectList() + m_ProjectList_View.Refresh() + End Set + End Property + + Private m_Date_Visibility As Visibility = Visibility.Collapsed + Public ReadOnly Property Date_Visibility As Visibility + Get + Return m_Date_Visibility + End Get + End Property + + Private m_RowQuantityList As New List(Of String)({50, 100, 150}) + Public ReadOnly Property RowQuantityList As List(Of String) + Get + Return m_RowQuantityList + End Get + End Property + + Private m_SelRowQuantity As RowQuantities + Public Property SelRowQuantity As Integer + Get + Return m_SelRowQuantity + End Get + Set(value As Integer) + m_SelRowQuantity = value + RefreshProjectList() + m_ProjectList_View.Refresh() + End Set + End Property + + ' lista campi per ricerca testuale e con datepicker + Protected m_FilterTypeList As New ObservableCollection(Of IdNameStruct) + Public ReadOnly Property FilterTypeList As ObservableCollection(Of IdNameStruct) + Get + Return m_FilterTypeList + End Get + End Property + + Protected m_SelFilterType As IdNameStruct = Nothing + Public Property SelFilterType As IdNameStruct + Get + Return m_SelFilterType End Get Set(value As IdNameStruct) ' resetto il contenuto della barra di ricerca testuale @@ -103,15 +242,15 @@ Public MustInherit Class OpenProjectFileDialogVM ' resetto le selezioni sul calendario 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_SelSearchColumn = m_SearchColumnList(0) + m_SelFilterType = m_FilterTypeList(0) m_ProjectList_View.Refresh() ' ora setto il valore scelto come Tipo Filtro - m_SelSearchColumn = value - Select Case m_SelSearchColumn.Id - Case OpenProjFileColumn.ID, OpenProjFileColumn.BTLFILENAME, OpenProjFileColumn.LISTNAME, OpenProjFileColumn.MACHINE + m_SelFilterType = value + Select Case m_SelFilterType.Id + Case FilterTypes.ID, FilterTypes.BTLFILENAME, FilterTypes.LISTNAME, FilterTypes.MACHINE SearchText_Visibility = Visibility.Visible SearchDate_Visibility = Visibility.Collapsed - Case OpenProjFileColumn.EXPORTDATE, OpenProjFileColumn.CREATEDATE + Case BTLDateTypes.EXPORTDATE, BTLDateTypes.CREATEDATE SearchText_Visibility = Visibility.Collapsed SearchDate_Visibility = Visibility.Visible Case Else @@ -161,16 +300,6 @@ Public MustInherit Class OpenProjectFileDialogVM End Set End Property - Public Enum OpenProjFileColumn As Integer - NULL = 0 - ID = 1 - BTLFILENAME = 2 - LISTNAME = 3 - EXPORTDATE = 4 - CREATEDATE = 5 - MACHINE = 6 - End Enum - #Region "Messages" Public ReadOnly Property FilterType_Msg As String @@ -236,6 +365,18 @@ Public MustInherit Class OpenProjectFileDialogVM End Get End Property + Public ReadOnly Property From_Msg As String + Get + Return EgtMsg(62523) + End Get + End Property + + Public ReadOnly Property To_Msg As String + Get + Return EgtMsg(62524) + End Get + End Property + #End Region ' Definizione comandi @@ -244,31 +385,45 @@ Public MustInherit Class OpenProjectFileDialogVM #End Region ' FIELDS & PROPERTIES + Sub New() + End Sub + #Region "METHODS" Public MustOverride Function Init(ProjectType As ProjectType, Optional CurrProjectList As List(Of ProjectFileVM) = Nothing, Optional GoToProd As Boolean = False) As Boolean? + Public Overridable Sub RefreshProjectList(Optional GoToProd As Boolean = False) + End Sub Protected Sub LoadColumns(ProjectType As ProjectType) If ProjectType = ProjectType.PROJ Then ' carico le colonne della datagrid GetPrivateProfileColumns(S_OPENPROJFILEDLG_PROJ, ProjectColumns) ' carico campi su cui eseguire il filtro di ricerca - m_SearchColumnList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(OpenProjFileColumn.NULL, ""), - New IdNameStruct(OpenProjFileColumn.ID, Id_Msg), - New IdNameStruct(OpenProjFileColumn.BTLFILENAME, BTLFileName_Msg), - New IdNameStruct(OpenProjFileColumn.LISTNAME, ListName_Msg), - New IdNameStruct(OpenProjFileColumn.EXPORTDATE, ExportDate_Msg), - New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg), - New IdNameStruct(OpenProjFileColumn.MACHINE, Machine_Msg)}) + m_BTLDateTypeList = New List(Of String)({CreateDate_Msg, ExportDate_Msg}) + m_SelBTLDateType = BTLDateTypes.CREATEDATE + NotifyPropertyChanged(NameOf(BTLDateTypeList)) + NotifyPropertyChanged(NameOf(SelBTLDateType)) + m_FilterTypeList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(FilterTypes.NULL, ""), + New IdNameStruct(FilterTypes.ID, Id_Msg), + New IdNameStruct(FilterTypes.BTLFILENAME, BTLFileName_Msg), + New IdNameStruct(FilterTypes.LISTNAME, ListName_Msg), + New IdNameStruct(FilterTypes.MACHINE, Machine_Msg)}) + m_SelFilterType = m_FilterTypeList.FirstOrDefault(Function(x) x.Id = FilterTypes.NULL) + NotifyPropertyChanged(NameOf(SelFilterType)) ElseIf ProjectType = ProjectType.PROD Then ' carico le colonne della datagrid GetPrivateProfileColumns(S_OPENPROJFILEDLG_PROD, ProjectColumns) ' carico campi su cui eseguire il filtro di ricerca - m_SearchColumnList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(OpenProjFileColumn.NULL, ""), - New IdNameStruct(OpenProjFileColumn.ID, Id_Msg), - New IdNameStruct(OpenProjFileColumn.BTLFILENAME, BTLFileName_Msg), - New IdNameStruct(OpenProjFileColumn.CREATEDATE, CreateDate_Msg), - New IdNameStruct(OpenProjFileColumn.MACHINE, Machine_Msg)}) + m_BTLDateTypeList = New List(Of String)({CreateDate_Msg}) + m_SelBTLDateType = BTLDateTypes.CREATEDATE + NotifyPropertyChanged(NameOf(BTLDateTypeList)) + NotifyPropertyChanged(NameOf(SelBTLDateType)) + m_FilterTypeList = New ObservableCollection(Of IdNameStruct)({New IdNameStruct(FilterTypes.NULL, ""), + New IdNameStruct(FilterTypes.ID, Id_Msg), + New IdNameStruct(FilterTypes.BTLFILENAME, BTLFileName_Msg), + New IdNameStruct(FilterTypes.MACHINE, Machine_Msg)}) + m_SelFilterType = m_FilterTypeList.FirstOrDefault(Function(x) x.Id = FilterTypes.NULL) + NotifyPropertyChanged(NameOf(SelFilterType)) End If ' setto la visibilità delle colonne delle EgtDataGrid For Each col In ProjectColumns @@ -301,22 +456,22 @@ Public MustInherit Class OpenProjectFileDialogVM Dim bProjectOk As Boolean = True If m_ProjectType = ProjectType.PROJ Then Dim CurrProj As ProjFileVM = DirectCast(Proj, ProjFileVM) - If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso ( - (m_SelSearchColumn.Id = OpenProjFileColumn.EXPORTDATE AndAlso Not SearchDate.Contains(CurrProj.dtExportDate.Date)) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False - If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso m_SearchText <> String.Empty AndAlso ( - (m_SelSearchColumn.Id = OpenProjFileColumn.ID AndAlso CurrProj.sProjId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.LISTNAME AndAlso CurrProj.sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False + If m_SelFilterType.Id <> FilterTypes.NULL AndAlso ( + (m_SelFilterType.Id = BTLDateTypes.EXPORTDATE AndAlso Not SearchDate.Contains(CurrProj.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.ID AndAlso CurrProj.sProjId.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.LISTNAME AndAlso CurrProj.sListName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse + (m_SelFilterType.Id = FilterTypes.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False ElseIf m_ProjectType = ProjectType.PROD Then Dim CurrProj As ProdFileVM = DirectCast(Proj, ProdFileVM) - If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso ( - (m_SelSearchColumn.Id = OpenProjFileColumn.CREATEDATE AndAlso Not SearchDate.Contains(CurrProj.dtCreateDate.Date))) Then bProjectOk = False - If m_SelSearchColumn.Id <> OpenProjFileColumn.NULL AndAlso m_SearchText <> String.Empty AndAlso ( - (m_SelSearchColumn.Id = OpenProjFileColumn.ID AndAlso CurrProj.sProdId.ToString.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.BTLFILENAME AndAlso CurrProj.sBTLFileName.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0) OrElse - (m_SelSearchColumn.Id = OpenProjFileColumn.MACHINE AndAlso CurrProj.sMachine.IndexOf(SearchText, StringComparison.InvariantCultureIgnoreCase) < 0)) Then bProjectOk = False + 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 diff --git a/EgtBEAMWALL.Core/ProjectManager/ProjFileVM.vb b/EgtBEAMWALL.Core/ProjectManager/ProjFileVM.vb index 4e2574b6..3dab13b2 100644 --- a/EgtBEAMWALL.Core/ProjectManager/ProjFileVM.vb +++ b/EgtBEAMWALL.Core/ProjectManager/ProjFileVM.vb @@ -68,6 +68,12 @@ Public Class ProjFileVM End Get End Property + Public ReadOnly Property sDescription As String + Get + Return ProjFileM.sDescription + End Get + End Property + Public ReadOnly Property sListName As String Get Return ProjFileM.sListName diff --git a/EgtBEAMWALL.Supervisor/OpenProjectFileDialog/OpenProjectFileDialogVM.vb b/EgtBEAMWALL.Supervisor/OpenProjectFileDialog/OpenProjectFileDialogVM.vb index 819d2648..23166cc7 100644 --- a/EgtBEAMWALL.Supervisor/OpenProjectFileDialog/OpenProjectFileDialogVM.vb +++ b/EgtBEAMWALL.Supervisor/OpenProjectFileDialog/OpenProjectFileDialogVM.vb @@ -13,8 +13,8 @@ Public Class OpenProjectFileDialogVM m_ProjectType = ProjectType ' carico colonne LoadColumns(ProjectType) - NotifyPropertyChanged(NameOf(SearchColumnList)) - m_SelSearchColumn = m_SearchColumnList(0) + NotifyPropertyChanged(NameOf(FilterTypeList)) + m_SelFilterType = m_FilterTypeList(0) ' carico lista progetti If IsNothing(CurrProjectList) OrElse CurrProjectList.Count = 0 Then ' leggo da db diff --git a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb index c9e4e8cf..32dbe05b 100644 --- a/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/OpenProjectFileDialog/OpenProjectFileDialogVM.vb @@ -14,59 +14,11 @@ Public Class OpenProjectFileDialogVM m_ProjectType = ProjectType ' carico colonne LoadColumns(ProjectType) - NotifyPropertyChanged(NameOf(SearchColumnList)) - m_SelSearchColumn = m_SearchColumnList(0) + NotifyPropertyChanged(NameOf(FilterTypeList)) + m_SelFilterType = m_FilterTypeList(0) ' carico lista progetti If IsNothing(CurrProjectList) OrElse CurrProjectList.Count = 0 Then - ' leggo da db - If ProjectType = ProjectType.PROJ Then - Dim DbProjectList As New List(Of ProjFileM) - ' CheckMe: lasciato come prima, anche NON attivi (cancellazione logica) - DbProjectList = DbControllers.m_ProjController.GetLastDesc(5000, False) - For Each Project In DbProjectList - ' recupero path per verificare esista - If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For - Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProjsDir & "\" & Project.nProjId.ToString("0000") & "\" & Project.nProjId.ToString("0000") & ".nge" - If File.Exists(sPath) Then - m_ProjectList.Add(New ProjFileVM(Project)) - Else - ' CheckMe impostata come cancellazione FISICA dal DB... - DbControllers.m_ProjController.DeleteProj(Project.nProjId, False) - EgtOutLog("Found project on Db without the folder and erased it! Proj number " & Project.nProjId.ToString("0000")) - End If - Next - ElseIf ProjectType = ProjectType.PROD Then - Dim DbProjectList As New List(Of ProdFileM) - DbProjectList = DbControllers.m_ProdController.GetLastDesc(5000) - If GoToProd Then - For Each Project In DbProjectList - ' recupero path per verificare esista - If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For - Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge" - If Project.sMachine = Map.refProjManagerVM.CurrProj.sMachine AndAlso - Project.nType = Map.refProjManagerVM.CurrProj.nType Then - If File.Exists(sPath) Then - m_ProjectList.Add(New ProdFileVM(Project)) - Else - DbControllers.m_ProdController.DeleteProd(Project.nProdId) - EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) - End If - End If - Next - Else - For Each Project In DbProjectList - ' recupero path per verificare esista - If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For - Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge" - If File.Exists(sPath) Then - m_ProjectList.Add(New ProdFileVM(Project)) - Else - DbControllers.m_ProdController.DeleteProd(Project.nProdId) - EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) - End If - Next - End If - End If + RefreshProjectList(GoToProd) Else m_ProjectList = New ObservableCollection(Of ProjectFileVM)(CurrProjectList) NotifyPropertyChanged(NameOf(ProjectList)) @@ -75,6 +27,88 @@ Public Class OpenProjectFileDialogVM m_ProjectList_View.Filter = AddressOf ProjectFilter End Function + Public Overrides Sub RefreshProjectList(Optional GoToProd As Boolean = False) + m_ProjectList.Clear() + ' leggo da db + If m_ProjectType = ProjectType.PROJ Then + Dim DbProjectList As New List(Of ProjFileM) + ' CheckMe: lasciato come prima, anche NON attivi (cancellazione logica) + Dim dtStart As DateTime + 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 + End Select + Select Case m_SelDayType + Case DayTypes.LASTMONTH + dtEnd = DateTime.Today + TimeSpan.FromDays(1) + dtStart = dtEnd - TimeSpan.FromDays(31) + Case DayTypes.LAST3MONTHS + dtEnd = DateTime.Today + TimeSpan.FromDays(1) + dtStart = dtEnd - TimeSpan.FromDays(31 * 3) + Case DayTypes.LAST6MONTHS + dtEnd = DateTime.Today + TimeSpan.FromDays(1) + dtStart = dtEnd - TimeSpan.FromDays(31 * 6) + Case DayTypes.PERIOD + dtStart = dtStartDate + TimeSpan.FromDays(1) + dtEnd = dtEndDate + End Select + If m_SelBTLDateType = BTLDateTypes.CREATEDATE Then + DbProjectList = DbControllers.m_ProjController.GetLastDesc(dtStart, dtEnd, nRowQuantity, True) + Else + 'DbProjectList = DbControllers.m_ProjController.(dtStart, dtEnd, nRowQuantity, False) + End If + For Each Project In DbProjectList + ' recupero path per verificare esista + If IsNothing(Project.nProjId) OrElse Project.nProjId = 0 Then Continue For + Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProjsDir & "\" & Project.nProjId.ToString("0000") & "\" & Project.nProjId.ToString("0000") & ".nge" + If File.Exists(sPath) Then + m_ProjectList.Add(New ProjFileVM(Project)) + Else + ' CheckMe impostata come cancellazione FISICA dal DB... + DbControllers.m_ProjController.DeleteProj(Project.nProjId, False) + EgtOutLog("Found project on Db without the folder and erased it! Proj number " & Project.nProjId.ToString("0000")) + End If + Next + ElseIf m_ProjectType = ProjectType.PROD Then + Dim DbProjectList As New List(Of ProdFileM) + DbProjectList = DbControllers.m_ProdController.GetLastDesc(5000) + If GoToProd Then + For Each Project In DbProjectList + ' recupero path per verificare esista + If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For + Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge" + If Project.sMachine = Map.refProjManagerVM.CurrProj.sMachine AndAlso + Project.nType = Map.refProjManagerVM.CurrProj.nType Then + If File.Exists(sPath) Then + m_ProjectList.Add(New ProdFileVM(Project)) + Else + DbControllers.m_ProdController.DeleteProd(Project.nProdId) + EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) + End If + End If + Next + Else + For Each Project In DbProjectList + ' recupero path per verificare esista + If IsNothing(Project.nProdId) OrElse Project.nProdId = 0 Then Continue For + Dim sPath As String = Map.refMainWindowVM.MainWindowM.sProdsDir & "\" & Project.nProdId.ToString("0000") & "\" & Project.nProdId.ToString("0000") & ".nge" + If File.Exists(sPath) Then + m_ProjectList.Add(New ProdFileVM(Project)) + Else + DbControllers.m_ProdController.DeleteProd(Project.nProdId) + EgtOutLog("Found project on Db without the folder and erased it! Prod number " & Project.nProdId.ToString("0000")) + End If + Next + End If + End If + End Sub + Public Overrides Sub Delete() If IsNothing(SelProject) Then Return ' recupero indice per riselezionare @@ -92,19 +126,19 @@ Public Class OpenProjectFileDialogVM End If Map.refProjManagerVM.m_MruFiles.Remove(SelProject.sProjPath) Map.refProjManagerVM.NotifyPropertyChanged(NameOf(Map.refProjManagerVM.MruFileNames)) - ' cancello progetto - ' CheckMe impostata come cancellazione FISICA dal DB... - DbControllers.m_ProjController.DeleteProj(SelProject.nProjId, False) - ' cancello cartella del Proj - Try - Directory.Delete(SelProject.sProjDirPath, True) - Catch ex As Exception - EgtOutLog("Error in deleting directory " & SelProject.sProjDirPath) - End Try + ' cancello progetto + ' CheckMe impostata come cancellazione FISICA dal DB... + DbControllers.m_ProjController.DeleteProj(SelProject.nProjId, False) + ' cancello cartella del Proj + Try + Directory.Delete(SelProject.sProjDirPath, True) + Catch ex As Exception + EgtOutLog("Error in deleting directory " & SelProject.sProjDirPath) + End Try ' aggiorno lista progetti m_ProjectList.Clear() Dim DbProjectList As New List(Of ProjFileM) - DbProjectList = DbControllers.m_ProjController.GetLastDesc(50) + DbProjectList = DbControllers.m_ProjController.GetLastDesc(50, False) For Each Project In DbProjectList m_ProjectList.Add(New ProjFileVM(Project)) Next diff --git a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb index dae9e3e7..c29f6baa 100644 --- a/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb +++ b/EgtBEAMWALL.ViewerOptimizer/ProjectFileVM/ProjFileVM.vb @@ -15,6 +15,11 @@ Public Class ProjFileVM Sub New(ProjectFileM As ProjFileM) MyBase.New(ProjectFileM) + ' verifico valore description + If String.IsNullOrWhiteSpace(ProjectFileM.sDescription) Then + DbControllers.m_ProjController.UpdateDescription(ProjectFileM.nProjId, ProjectFileM.sBTLFileName) + ProjectFileM.sDescription = ProjectFileM.sBTLFileName + End If End Sub #End Region ' CONSTRUCTORS diff --git a/EgtBEAMWALL.ViewerOptimizer/Utility/Dictionary.xaml b/EgtBEAMWALL.ViewerOptimizer/Utility/Dictionary.xaml index a81677b8..33c94bce 100644 --- a/EgtBEAMWALL.ViewerOptimizer/Utility/Dictionary.xaml +++ b/EgtBEAMWALL.ViewerOptimizer/Utility/Dictionary.xaml @@ -346,6 +346,11 @@ + + @@ -802,4 +807,13 @@ + + + + + +