diff --git a/ServiceFwUpdate/Common/FwUpdateConfig/Consts/FwUpdateConfig.cs b/ServiceFwUpdate/Common/FwUpdateConfig/Consts/FwUpdateConfig.cs index 58b80075..5981557a 100644 --- a/ServiceFwUpdate/Common/FwUpdateConfig/Consts/FwUpdateConfig.cs +++ b/ServiceFwUpdate/Common/FwUpdateConfig/Consts/FwUpdateConfig.cs @@ -96,5 +96,11 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateConfig.Consts /// public const Char FwUpdateFileFieldSeparator = '_'; + /// + /// Separator in file name between OrderNumber and position for the FW-Update Safe and all report + /// files. + /// + public const Char FwUpdateFileOrderPosSeparator = '-'; + } } diff --git a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs index f5908ac0..85915707 100644 --- a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs +++ b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateDb.cs @@ -332,7 +332,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb try { var url = ServiceUrls.ListAllFwUpdateBuilderOperatorsServiceUrl(); - var requestResponse = LocalWebRequest.GetRequest(url, 1200); + var requestResponse = LocalWebRequest.GetRequest(url, 5000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -455,7 +455,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb try { var url = ServiceUrls.ListAllConfigurationFilePackages(); - var requestResponse = LocalWebRequest.GetRequest(url, 10000); + var requestResponse = LocalWebRequest.GetRequest(url, 5000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -518,7 +518,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb try { var url = ServiceUrls.ListAllFwUpdateSafes(); - var requestResponse = LocalWebRequest.GetRequest(url, 5000); + var requestResponse = LocalWebRequest.GetRequest(url, 10000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -559,7 +559,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb { var url = ServiceUrls.ListAllFwUpdateSafesForUserServiceUrl(); url += $"{userId}"; - var requestResponse = LocalWebRequest.GetRequest(url, 3000); + var requestResponse = LocalWebRequest.GetRequest(url, 10000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -597,7 +597,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb { var url = ServiceUrls.DownloadFileParts(); url += $"{fileId}&readContent={readContent}"; - var requestResponse = LocalWebRequest.GetRequest(url, 5000); + var requestResponse = LocalWebRequest.GetRequest(url, 10000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -635,7 +635,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb { var url = ServiceUrls.DownloadFileParts(); url += $"{fileId}&readContent={readContent}"; - var requestResponse = LocalWebRequest.GetRequest(url, 5000); + var requestResponse = LocalWebRequest.GetRequest(url, 10000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -675,7 +675,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb { var url = ServiceUrls.ListAllCordonelCustomersWithFilterServiceUrl(); url += searchPattern; - var requestResponse = LocalWebRequest.GetRequest(url, 1200); + var requestResponse = LocalWebRequest.GetRequest(url, 10000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -1293,6 +1293,40 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb } } + /// + /// Download all pcbIds contained in a special FW update safe for information referenced by container id + /// + /// + /// true if file content exists + /// + /// - Initial. + /// + public List GetFwUpdateSafePcbIdsFromDb(Int32 containerId) + { + var fwUpdateSafesPcbIds = new List(); + try + { + var url = ServiceUrls.ListAllPcbIdsFromSafe(); + url += $"{containerId}"; + var requestResponse = LocalWebRequest.GetRequest(url, 10000); + if (string.IsNullOrEmpty(requestResponse)) + { + DbIsConnected = false; + return fwUpdateSafesPcbIds; + } + + DbIsConnected = true; + fwUpdateSafesPcbIds = JsonConvert.DeserializeObject>(requestResponse); + + return fwUpdateSafesPcbIds; + } + catch (Exception) + { + DbIsConnected = false; + return fwUpdateSafesPcbIds; + } + } + /// /// Getting file contents referenced by file part id. /// -http://localhost:56011/GetFileContent?FileId=3831 @@ -1333,20 +1367,25 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb /// Get reports from DB. /// It can be searched for: /// PCB ID, - /// User ID or - /// Order Number. + /// User ID, + /// Order Number, + /// Read content ( if false, a preview is available only). /// Leaving all empty will search all reports. /// /// list of reports /// optional pcbId /// optional userId /// optional order number - /// true if app list could be loaded + /// if false a preview of the reports will be loaded + /// true reports could be loaded /// /// - Initial. /// + /// + /// - Read content. + /// public Boolean DownloadFwUpdateReportsFromDb(out List fwUpdRpt, Int64 pcbId = 0, - Int32 userId = 0, Int64 orderNr = 0) + Int32 userId = 0, Int64 orderNr = 0, Boolean readContent = false) { fwUpdRpt = new List(); try @@ -1368,7 +1407,9 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb url += $"OrderNr={orderNr}"; } - var requestResponse = LocalWebRequest.GetRequest(url, 10000); + url += $"&readContent={readContent}"; + + var requestResponse = LocalWebRequest.GetRequest(url, 20000); if (string.IsNullOrEmpty(requestResponse)) { DbIsConnected = false; @@ -1454,7 +1495,7 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb url = ServiceUrls.AddPcbIdsToSafeServiceUrl(); url += containerId; - if (LocalWebRequest.PostRequestAsync(url, 1200, pcbIds)) + if (LocalWebRequest.PostRequestAsync(url, 10000, pcbIds)) { DbIsConnected = true; return true; diff --git a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateSafeDb.cs b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateSafeDb.cs index 6bcd58cc..3405e5d3 100644 --- a/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateSafeDb.cs +++ b/ServiceFwUpdate/Common/FwUpdateDb/FwUpdateSafeDb.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb { @@ -39,6 +40,11 @@ namespace Xylem.ServiceFwUpdate.Common.FwUpdateDb /// public Int32 FilePartId { get; set; } + /// + /// List of PcbIds + /// + public List PcbIds { get; set; } + /// /// automatic (DB-job) delete all FwUpdateSafeContainer with invalid date /// diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Const/ProcessState.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Const/ProcessState.cs index 10eaad90..cf98c05e 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Const/ProcessState.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Const/ProcessState.cs @@ -61,13 +61,17 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder.Const /// /// Load all Cordonel FW update safes from DB /// - GetFwUpdateSafesFromDb, + GetFwUpdateSafesInfosFromDb, /// /// Load all Cordonel FW update report files from DB /// - GetReportFilesFromDb, + GetReportsFromDb, + /// + /// Load selected Cordonel FW update report file from DB and display it + /// + GetAndDisplaySingleReportFromDb, /// /// Load all Cordonel serial numbers off a specific order from DB /// diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.Designer.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.Designer.cs index cda57dd0..00991a95 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.Designer.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.Designer.cs @@ -91,7 +91,13 @@ this.tabPageSafeBuildReport = new System.Windows.Forms.TabPage(); this.rtbReport = new System.Windows.Forms.RichTextBox(); this.tabPageFwUpdateSafes = new System.Windows.Forms.TabPage(); + this.tblFwUpdateSafeSelection = new System.Windows.Forms.TableLayoutPanel(); + this.tblPanelFwUpdateSafeSearch = new System.Windows.Forms.TableLayoutPanel(); + this.gridViewFwUpdateSafeSelection = new System.Windows.Forms.DataGridView(); this.tabPageReports = new System.Windows.Forms.TabPage(); + this.tblPanelFwUpdateReports = new System.Windows.Forms.TableLayoutPanel(); + this.tblPanelFwUpdateReportsSearch = new System.Windows.Forms.TableLayoutPanel(); + this.gridViewFwUpdateReportSelection = new System.Windows.Forms.DataGridView(); this.tblPanelLayer1Top = new System.Windows.Forms.TableLayoutPanel(); this.tblPanelSafeInfo = new System.Windows.Forms.TableLayoutPanel(); this.lblCustomerNameText = new System.Windows.Forms.Label(); @@ -154,6 +160,12 @@ this.tabPagePreBuildSummary.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.gridViewPreBuildSummary)).BeginInit(); this.tabPageSafeBuildReport.SuspendLayout(); + this.tabPageFwUpdateSafes.SuspendLayout(); + this.tblFwUpdateSafeSelection.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gridViewFwUpdateSafeSelection)).BeginInit(); + this.tabPageReports.SuspendLayout(); + this.tblPanelFwUpdateReports.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.gridViewFwUpdateReportSelection)).BeginInit(); this.tblPanelLayer1Top.SuspendLayout(); this.tblPanelSafeInfo.SuspendLayout(); this.tableLayoutPanel1.SuspendLayout(); @@ -645,16 +657,71 @@ // this.tabPageFwUpdateSafes.BackColor = System.Drawing.SystemColors.Control; this.tabPageFwUpdateSafes.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tabPageFwUpdateSafes.Controls.Add(this.tblFwUpdateSafeSelection); resources.ApplyResources(this.tabPageFwUpdateSafes, "tabPageFwUpdateSafes"); this.tabPageFwUpdateSafes.Name = "tabPageFwUpdateSafes"; // + // tblFwUpdateSafeSelection + // + resources.ApplyResources(this.tblFwUpdateSafeSelection, "tblFwUpdateSafeSelection"); + this.tblFwUpdateSafeSelection.Controls.Add(this.tblPanelFwUpdateSafeSearch, 0, 0); + this.tblFwUpdateSafeSelection.Controls.Add(this.gridViewFwUpdateSafeSelection, 0, 1); + this.tblFwUpdateSafeSelection.Name = "tblFwUpdateSafeSelection"; + // + // tblPanelFwUpdateSafeSearch + // + resources.ApplyResources(this.tblPanelFwUpdateSafeSearch, "tblPanelFwUpdateSafeSearch"); + this.tblPanelFwUpdateSafeSearch.Name = "tblPanelFwUpdateSafeSearch"; + // + // gridViewFwUpdateSafeSelection + // + this.gridViewFwUpdateSafeSelection.AllowUserToAddRows = false; + this.gridViewFwUpdateSafeSelection.AllowUserToDeleteRows = false; + this.gridViewFwUpdateSafeSelection.AllowUserToResizeColumns = false; + this.gridViewFwUpdateSafeSelection.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.gridViewFwUpdateSafeSelection.BackgroundColor = System.Drawing.SystemColors.Control; + this.gridViewFwUpdateSafeSelection.BorderStyle = System.Windows.Forms.BorderStyle.None; + resources.ApplyResources(this.gridViewFwUpdateSafeSelection, "gridViewFwUpdateSafeSelection"); + this.gridViewFwUpdateSafeSelection.EnableHeadersVisualStyles = false; + this.gridViewFwUpdateSafeSelection.GridColor = System.Drawing.SystemColors.ControlLight; + this.gridViewFwUpdateSafeSelection.Name = "gridViewFwUpdateSafeSelection"; + this.gridViewFwUpdateSafeSelection.ReadOnly = true; + // // tabPageReports // this.tabPageReports.BackColor = System.Drawing.SystemColors.Control; this.tabPageReports.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tabPageReports.Controls.Add(this.tblPanelFwUpdateReports); resources.ApplyResources(this.tabPageReports, "tabPageReports"); this.tabPageReports.Name = "tabPageReports"; // + // tblPanelFwUpdateReports + // + resources.ApplyResources(this.tblPanelFwUpdateReports, "tblPanelFwUpdateReports"); + this.tblPanelFwUpdateReports.Controls.Add(this.tblPanelFwUpdateReportsSearch, 0, 0); + this.tblPanelFwUpdateReports.Controls.Add(this.gridViewFwUpdateReportSelection, 0, 1); + this.tblPanelFwUpdateReports.Name = "tblPanelFwUpdateReports"; + // + // tblPanelFwUpdateReportsSearch + // + resources.ApplyResources(this.tblPanelFwUpdateReportsSearch, "tblPanelFwUpdateReportsSearch"); + this.tblPanelFwUpdateReportsSearch.Name = "tblPanelFwUpdateReportsSearch"; + // + // gridViewFwUpdateReportSelection + // + this.gridViewFwUpdateReportSelection.AllowUserToAddRows = false; + this.gridViewFwUpdateReportSelection.AllowUserToDeleteRows = false; + this.gridViewFwUpdateReportSelection.AllowUserToResizeRows = false; + this.gridViewFwUpdateReportSelection.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.gridViewFwUpdateReportSelection.BackgroundColor = System.Drawing.SystemColors.Control; + this.gridViewFwUpdateReportSelection.BorderStyle = System.Windows.Forms.BorderStyle.None; + resources.ApplyResources(this.gridViewFwUpdateReportSelection, "gridViewFwUpdateReportSelection"); + this.gridViewFwUpdateReportSelection.EnableHeadersVisualStyles = false; + this.gridViewFwUpdateReportSelection.GridColor = System.Drawing.SystemColors.ControlLight; + this.gridViewFwUpdateReportSelection.Name = "gridViewFwUpdateReportSelection"; + this.gridViewFwUpdateReportSelection.ReadOnly = true; + this.gridViewFwUpdateReportSelection.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.gridViewFwUpdateReportSelection_CellClick); + // // tblPanelLayer1Top // resources.ApplyResources(this.tblPanelLayer1Top, "tblPanelLayer1Top"); @@ -933,6 +1000,12 @@ this.tabPagePreBuildSummary.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.gridViewPreBuildSummary)).EndInit(); this.tabPageSafeBuildReport.ResumeLayout(false); + this.tabPageFwUpdateSafes.ResumeLayout(false); + this.tblFwUpdateSafeSelection.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gridViewFwUpdateSafeSelection)).EndInit(); + this.tabPageReports.ResumeLayout(false); + this.tblPanelFwUpdateReports.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.gridViewFwUpdateReportSelection)).EndInit(); this.tblPanelLayer1Top.ResumeLayout(false); this.tblPanelSafeInfo.ResumeLayout(false); this.tblPanelSafeInfo.PerformLayout(); @@ -1047,6 +1120,12 @@ private System.Windows.Forms.Label lblCordonelSelectedCountText; private System.Windows.Forms.Label lblCordonelsSelectedCount; private System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel1; + private System.Windows.Forms.TableLayoutPanel tblPanelFwUpdateReports; + private System.Windows.Forms.TableLayoutPanel tblPanelFwUpdateReportsSearch; + private System.Windows.Forms.DataGridView gridViewFwUpdateReportSelection; + private System.Windows.Forms.TableLayoutPanel tblFwUpdateSafeSelection; + private System.Windows.Forms.TableLayoutPanel tblPanelFwUpdateSafeSearch; + private System.Windows.Forms.DataGridView gridViewFwUpdateSafeSelection; } } diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs index 1adb3dd1..028143e4 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.cs @@ -97,12 +97,34 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder private DataTable _dataTableCordonels; private DataTable _dataTableUpdateOperators; private DataTable _dataTableCustomers; + private DataTable _dataTableReportFiles; + private DataTable _dataTableUpdateSafes; + + // external update remarks form + + // external update remarks form + private readonly FrmHistory _frmFwUpdateReport = new FrmHistory(); /// /// Collection of software needed for the FW-Update safe! /// private SoftwareContainer _fwUpdateSwContainer; /// + /// All report files from the DB! + /// This information will only be used by the FW Update Builder! + /// + private readonly List _fwUpdateReports = new List(); + /// + /// One selected report file on grid view by the user from the DB! + /// This information will only be used by the FW Update Builder! + /// + private readonly FwUpdateReportDb _selectedReport = new FwUpdateReportDb(); + /// + /// All FW update safes from the DB! + /// This information will only be used by the FW Update Builder! + /// + private readonly List _fwUpdateSafesInfos = new List(); + /// /// All customer specific production order numbers to search mask from the DB! /// This information will only be used by the FW Update Builder! /// @@ -176,7 +198,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder private Boolean _customersPropertyChanged; private Boolean _cordonelsPropertyChanged; private Boolean _fwPackagePropertyChanged; - private Boolean _fwReportFilesPropertyChanged; + private Boolean _fwReportsPropertyChanged; private Boolean _fwUpdateSafesPropertyChanged; private Boolean _preBuildSummaryPropertyChanged; @@ -285,12 +307,16 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder LoadDbCordonelCustomersTask(); break; - case ProcessState.GetReportFilesFromDb: - LoadDbReportFilesTask(); + case ProcessState.GetReportsFromDb: + LoadDbReportsTask(); break; - case ProcessState.GetFwUpdateSafesFromDb: - LoadDbOutstandingFwUpdateSafesTask(); + case ProcessState.GetAndDisplaySingleReportFromDb: + LoadDbReportAndDisplayTask(); + break; + + case ProcessState.GetFwUpdateSafesInfosFromDb: + LoadDbFwUpdateSafesInfosTask(); break; case ProcessState.GetFwUpdateOperatorsFromDb: @@ -396,7 +422,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder CheckCordonelChange(); CheckFwPackageChange(); CheckFwUpdateSafesChange(); - CheckReportFilesChange(); + CheckReportsChange(); break; case ProcessState.BuildFwUpdateSafe: SetStatusProgressBar(ProgressBarStatus.Value + 1 > 100 ? 0 : ProgressBarStatus.Value + 1); @@ -407,8 +433,9 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder case ProcessState.GetCustomersFromDb: case ProcessState.GetFwPackagesFromDb: case ProcessState.GetCordonelSerialNumbersFromDb: - case ProcessState.GetFwUpdateSafesFromDb: - case ProcessState.GetReportFilesFromDb: + case ProcessState.GetFwUpdateSafesInfosFromDb: + case ProcessState.GetReportsFromDb: + case ProcessState.GetAndDisplaySingleReportFromDb: case ProcessState.UploadFwUpdateSafeToDb: CheckDbConnectionTimeout(); SetStatusProgressBar(ProgressBarStatus.Value + 1 > 100 ? 0 : ProgressBarStatus.Value + 1); @@ -686,17 +713,17 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder UiInvoker.ToolStripLabelInvoker(lblStatusDbConnect, ColorSuccess, Resources.StrReadingFwUpdateSafes); SetStatusProgressBar(); _dbAccessDelayCtrMs = 0; - _processState = ProcessState.GetFwUpdateSafesFromDb; + _processState = ProcessState.GetFwUpdateSafesInfosFromDb; } - + if (e.TabPage == tabPageReports) { DisableAllControlsInvoked(); - UiInvoker.ToolStripLabelInvoker(lblStatusDbConnect, ColorSuccess, Resources.StrReadingReportFiles); + UiInvoker.ToolStripLabelInvoker(lblStatusDbConnect, ColorSuccess, Resources.StrReadingReports); SetStatusProgressBar(); _dbAccessDelayCtrMs = 0; - _processState = ProcessState.GetReportFilesFromDb; + _processState = ProcessState.GetReportsFromDb; } @@ -1081,6 +1108,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// private void FrmFwUpdateBuilder_FormClosing(Object sender, FormClosingEventArgs e) { + _frmFwUpdateReport?.Close(); _datePicker?.Dispose(); _cbxFwReleaseSelection?.Dispose(); _processToken?.Cancel(); @@ -1128,6 +1156,9 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// /// - Added BuildFwUpdateSwContainerFromDb, not longer taken from locally file system! /// + /// + /// - Skip loading of FW upadte SW if already done in preceding run. + /// public Boolean BuildFwUpdateSafe() { if (string.IsNullOrEmpty(lblUpdateOperator.Text)) return false; @@ -1186,9 +1217,8 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder LogSuccessText($@"{Resources.StrSwLicenseLoadedSuccessfully} {FwUpdateProjectName}" + $" {fwUpdateSafe.License.Major}.{fwUpdateSafe.License.Minor}.{fwUpdateSafe.License.Build}"); - // local files: if (!BuildFwUpdateSwContainer(fwUpdateSafe.License) || - if (!BuildFwUpdateSwContainerFromDb(fwUpdateSafe.License) || - _fwUpdateSwContainer?.RegisterDefinitionFile == null || + // Skip loading of FW update SW if already done in preceding run + if (_fwUpdateSwContainer?.RegisterDefinitionFile == null || _fwUpdateSwContainer.SoftwareSetupFile == null || _fwUpdateSwContainer.MeterFilesEraseRestore == null || string.IsNullOrEmpty(_fwUpdateSwContainer.RegisterDefinitionFile.FileName) || @@ -1197,12 +1227,26 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder _fwUpdateSwContainer.SoftwareDynLinkLibs == null || _fwUpdateSwContainer.SoftwareDynLinkLibs.Count == 0) { - LogErrorText(Resources.StrSwContainerCollectionFailed); - MessageBoxShow(Resources.StrSwContainerCollectionFailed, Resources.StrError, MessageBoxButtons.OK, - MessageBoxIcon.Error); - _processState = ProcessState.Error; - return false; + // local files: if (!BuildFwUpdateSwContainer(fwUpdateSafe.License) || + if (!BuildFwUpdateSwContainerFromDb(fwUpdateSafe.License) || + _fwUpdateSwContainer?.RegisterDefinitionFile == null || + _fwUpdateSwContainer.SoftwareSetupFile == null || + _fwUpdateSwContainer.MeterFilesEraseRestore == null || + string.IsNullOrEmpty(_fwUpdateSwContainer.RegisterDefinitionFile.FileName) || + string.IsNullOrEmpty(_fwUpdateSwContainer.SoftwareSetupFile.FileName) || + string.IsNullOrEmpty(_fwUpdateSwContainer.MeterFilesEraseRestore.FileName) || + _fwUpdateSwContainer.SoftwareDynLinkLibs == null || + _fwUpdateSwContainer.SoftwareDynLinkLibs.Count == 0) + { + LogErrorText(Resources.StrSwContainerCollectionFailed); + MessageBoxShow(Resources.StrSwContainerCollectionFailed, Resources.StrError, + MessageBoxButtons.OK, + MessageBoxIcon.Error); + _processState = ProcessState.Error; + return false; + } } + fwUpdateSafe.Software = _fwUpdateSwContainer; LogSuccessText(Resources.StrSwContainerCollectionSuccess); @@ -1812,7 +1856,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder // update output information FillDataGridWithUpdateOperatorInfos(); } - + /// /// Check for change of customer. /// @@ -1831,7 +1875,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder // update output information FillDataGridWithCustomerInfos(); } - + /// /// Check for change of Cordonels. /// @@ -1885,13 +1929,13 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// /// - Initial /// - private void CheckReportFilesChange() + private void CheckReportsChange() { - if (!_fwReportFilesPropertyChanged) return; + if (!_fwReportsPropertyChanged) return; - _fwReportFilesPropertyChanged = false; + _fwReportsPropertyChanged = false; // update output information - FillDataGridWithReportFilesInfos(); + FillDataGridWithReportsInfos(); } /// @@ -1911,6 +1955,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder #endregion --------------------------------------- Checks ----------------------------------------------------- #region ------------------------------------------ Tools ------------------------------------------------------ + ///// ///// Build the meter file update ruler to define releases which can be updated to another release. ///// @@ -2065,7 +2110,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder break; } } - + /// /// Common message window. /// @@ -2457,13 +2502,44 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder }); } + /// + /// Acquire one report file from DB and display it. + /// + /// + /// - Initial + /// + private void LoadDbReportAndDisplayTask() + { + _invokerProcessState = _processState; + + Task.Factory.StartNew(() => + { + Thread.CurrentThread.CurrentUICulture = _cultureInfo; + Thread.CurrentThread.CurrentCulture = _cultureInfo; + try + { + // check DB connection in advance to overcome the timing issues for DB service startup + _fwUpdateDbAccess.CheckDbConnection(); + GetAndDisplaySingleReportFromDb(); + } + catch (Exception) + { + _processState = ProcessState.Error; + } + }).ContinueWith(delegate + { + _fwReportsPropertyChanged = true; + _processState = ProcessState.Idle; + }); + } + /// /// Acquire all report files from DB. /// /// /// - Initial /// - private void LoadDbReportFilesTask() + private void LoadDbReportsTask() { _invokerProcessState = _processState; Task.Factory.StartNew(() => @@ -2474,7 +2550,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder { // check DB connection in advance to overcome the timing issues for DB service startup _fwUpdateDbAccess.CheckDbConnection(); - GetReportFilesFromDb(); + GetReportsFromDb(); } catch (Exception) { @@ -2482,7 +2558,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder } }).ContinueWith(delegate { - _fwReportFilesPropertyChanged = true; + _fwReportsPropertyChanged = true; _processState = ProcessState.Idle; }); } @@ -2493,7 +2569,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// /// - Initial /// - private void LoadDbOutstandingFwUpdateSafesTask() + private void LoadDbFwUpdateSafesInfosTask() { _invokerProcessState = _processState; Task.Factory.StartNew(() => @@ -2504,7 +2580,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder { // check DB connection in advance to overcome the timing issues for DB service startup _fwUpdateDbAccess.CheckDbConnection(); - GetOutstandingFwUpdateSafesFromDb(); + GetFwUpdateSafesInfosFromDb(); } catch (Exception) { @@ -2817,23 +2893,197 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// /// Build data grid for FW-Update update safes /// - /// + /// /// - Initial. /// private void FillDataGridWithFwUpdateSafesInfos() { + grpLanguageSelection.Enabled = false; + + _dataTableUpdateSafes?.Dispose(); + Thread.CurrentThread.CurrentUICulture = _cultureInfo; + Thread.CurrentThread.CurrentCulture = _cultureInfo; + _dataTableUpdateSafes = new DataTable(); + + _dataTableUpdateSafes.Columns.Add(Resources.StrTableUserValidDate, typeof(DateTime)); + _dataTableUpdateSafes.Columns.Add(Resources.StrTableCordonelPcbId, typeof(String)); + + _dataTableUpdateSafes.Columns.Add(Resources.StrTableCordonelUpdateOrder, typeof(Int64)); + _dataTableUpdateSafes.Columns.Add(Resources.StrTableCordonelProductionPos, typeof(Int64)); + + _dataTableUpdateSafes.Columns.Add(Resources.StrTableCustomerName, typeof(String)); + _dataTableUpdateSafes.Columns.Add(Resources.StrTableUserFullName, typeof(String)); + + try + { + foreach (var safeInfo in _fwUpdateSafesInfos) + { + + // create one line per PcbId + foreach (var pcbId in safeInfo.PcbIds) + { + var row = _dataTableUpdateSafes.NewRow(); + + row[Resources.StrTableUserValidDate] = safeInfo.ValidDate.DateTime; + row[Resources.StrTableCordonelPcbId] = pcbId; + + // extract customer name , order and position from file name + var info = safeInfo.Name.Split(FwUpdateConfig.FwUpdateFileFieldSeparator); + var replace = info[1].Replace(FwUpdateConfig.FwUpdateFileExtension, ""); + var orderPos = replace.Split(FwUpdateConfig.FwUpdateFileOrderPosSeparator); + + + row[Resources.StrTableCordonelUpdateOrder] = orderPos[0]; + row[Resources.StrTableCordonelProductionPos] = orderPos[1]; + + row[Resources.StrTableCustomerName] = info[0]; + var userName = "?"; + foreach (var user in _fwUpdateDbAccess.DbFullQualifiedUpdateOperators.Where(user => + user.Id == safeInfo.UserId)) + { + userName = user.FullName; + break; + } + + row[Resources.StrTableUserFullName] = userName; + _dataTableUpdateSafes.Rows.Add(row); + } + } + + gridViewFwUpdateSafeSelection.DataSource = _dataTableUpdateSafes; + + foreach (DataGridViewColumn column in gridViewFwUpdateSafeSelection.Columns) + { + column.SortMode = DataGridViewColumnSortMode.Automatic; + } + } + catch (Exception) + { + _processState = ProcessState.Error; + } + finally + { + grpLanguageSelection.Enabled = true; + } } #endregion --------------------------------------- Data Grid Update Safes -------------------------------------- #region ------------------------------------------ Data Grid Report Files -------------------------------------- /// - /// Build data grid for FW-Update report files + /// Overwrite cell click, because edit of cells is denied (read only == true). /// - /// + /// + /// + /// /// - Initial. /// - private void FillDataGridWithReportFilesInfos() + private void gridViewFwUpdateReportSelection_CellClick(Object sender, DataGridViewCellEventArgs e) { + try + { + if (e.ColumnIndex < 0 || e.RowIndex < 0 || _dataTableReportFiles == null) + { + return; + } + + for (var columnIndex = 0; columnIndex < gridViewFwUpdateReportSelection.ColumnCount; columnIndex++) + { + if (gridViewFwUpdateReportSelection.Columns[columnIndex].Name == Resources.StrTableSelect) + _selectedReport.UserId = + Convert.ToInt32(gridViewFwUpdateReportSelection.Rows[e.RowIndex].Cells[columnIndex].Value); + if (gridViewFwUpdateReportSelection.Columns[columnIndex].Name == Resources.StrTableDate) + _selectedReport.Date = Convert.ToDateTime( + gridViewFwUpdateReportSelection.Rows[e.RowIndex].Cells[columnIndex].Value); + if (gridViewFwUpdateReportSelection.Columns[columnIndex].Name == Resources.StrTableCordonelPcbId) + _selectedReport.PcbId = + Convert.ToInt64(gridViewFwUpdateReportSelection.Rows[e.RowIndex].Cells[columnIndex].Value); + if (gridViewFwUpdateReportSelection.Columns[columnIndex].Name == + Resources.StrTableCordonelUpdateOrder) + _selectedReport.OrderNr = + Convert.ToInt64(gridViewFwUpdateReportSelection.Rows[e.RowIndex].Cells[columnIndex].Value); + if (gridViewFwUpdateReportSelection.Columns[columnIndex].Name == + Resources.StrTableCordonelProductionPos) + _selectedReport.OrderPos = + Convert.ToInt64(gridViewFwUpdateReportSelection.Rows[e.RowIndex].Cells[columnIndex].Value); + } + DisableAllControlsInvoked(); + UiInvoker.ToolStripLabelInvoker(lblStatusDbConnect, ColorSuccess, Resources.StrReadingReports); + SetStatusProgressBar(); + _dbAccessDelayCtrMs = 0; + + _processState = ProcessState.GetAndDisplaySingleReportFromDb; + } + catch (Exception) + { + _processState = ProcessState.Error; + } + } + + /// + /// Build data grid for FW-Update report files + /// + /// + /// - Initial. + /// + private void FillDataGridWithReportsInfos() + { + grpLanguageSelection.Enabled = false; + + _dataTableReportFiles?.Dispose(); + Thread.CurrentThread.CurrentUICulture = _cultureInfo; + Thread.CurrentThread.CurrentCulture = _cultureInfo; + _dataTableReportFiles = new DataTable(); + + _dataTableReportFiles.Columns.Add(Resources.StrTableDate, typeof(DateTime)); + _dataTableReportFiles.Columns.Add(Resources.StrTableCordonelPcbId, typeof(String)); + + _dataTableReportFiles.Columns.Add(Resources.StrTableCordonelUpdateOrder, typeof(Int64)); + _dataTableReportFiles.Columns.Add(Resources.StrTableCordonelProductionPos, typeof(Int64)); + + _dataTableReportFiles.Columns.Add(Resources.StrTableUserFullName, typeof(String)); + _dataTableReportFiles.Columns.Add(Resources.StrTableSelect, typeof(Int32)); + + try + { + foreach (var report in _fwUpdateReports) + { + + var row = _dataTableReportFiles.NewRow(); + + row[Resources.StrTableDate] = report.Date.Date; + row[Resources.StrTableCordonelPcbId] = report.PcbId; + + row[Resources.StrTableCordonelUpdateOrder] = report.OrderNr; + row[Resources.StrTableCordonelProductionPos] = report.OrderPos; + + var userName = "?"; + foreach (var user in _fwUpdateDbAccess.DbFullQualifiedUpdateOperators.Where(user => user.Id == report.UserId)) + { + userName = user.FullName; + break; + } + + row[Resources.StrTableUserFullName] = userName; + row[Resources.StrTableSelect] = report.UserId; + + _dataTableReportFiles.Rows.Add(row); + } + + gridViewFwUpdateReportSelection.DataSource = _dataTableReportFiles; + + foreach (DataGridViewColumn column in gridViewFwUpdateReportSelection.Columns) + { + column.SortMode = DataGridViewColumnSortMode.Automatic; + } + } + catch (Exception) + { + _processState = ProcessState.Error; + } + finally + { + grpLanguageSelection.Enabled = true; + } } #endregion --------------------------------------- Data Grid Report Files -------------------------------------- @@ -4157,31 +4407,126 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder } /// - /// Get all FW update report files from DB. + /// Get the content of one selected FW update report from DB. /// - /// + /// content of report + /// + /// + /// + /// + /// + /// true if text is set with valid content + /// /// - Initial. /// - private void GetReportFilesFromDb() + private Boolean GetOneSelectedReportFromDb(out String reportText, Int64 pcbId, Int32 userId, Int64 orderNo, + Int64 position, DateTimeOffset dateTime) { - var fwUpdateReports = new List(); - _fwUpdateDbAccess?.DownloadFwUpdateReportsFromDb(out fwUpdateReports); + reportText = ""; + // The DB access will load a list of all reports assigned to the input. + if (_fwUpdateDbAccess == null || + !_fwUpdateDbAccess.DownloadFwUpdateReportsFromDb(out var fwUpdateReports, pcbId, userId, orderNo)) + { + return false; + } + + //The order number has to be extracted and the date has to match! + foreach (var report in fwUpdateReports.Where(report => report.Date == dateTime && + report.OrderPos == position)) + { + reportText = report.Content; + break; + } + + return !string.IsNullOrEmpty(reportText); } + /// + /// Get one selected FW update report from DB and display it. + /// + /// + /// - Initial. + /// + private void GetAndDisplaySingleReportFromDb() + { + //open rich text view with report details + if (_frmFwUpdateReport == null) return; + Invoke(new Action(() => + { + _frmFwUpdateReport.rtbHistory?.Clear(); + })); + + if (!GetOneSelectedReportFromDb(out var reportText, _selectedReport.PcbId, _selectedReport.UserId, + _selectedReport.OrderNr, _selectedReport.OrderPos, _selectedReport.Date)) return; + + //open rich text view with report details + Invoke(new Action(() => + { + if (_frmFwUpdateReport.rtbHistory != null) + { + _frmFwUpdateReport.rtbHistory.AppendText(reportText); + _frmFwUpdateReport.rtbHistory.ScrollToCaret(); + } + + _frmFwUpdateReport.Show(); + })); + } + /// + /// Get all FW update report files from DB. Loading only the preview (readContent = false as default) to speed up + /// the access, as the content will only be needed on inspection of the report. + /// + /// + /// - Initial. + /// + private void GetReportsFromDb() + { + if (_fwUpdateDbAccess == null) return; + + _fwUpdateReports.Clear(); + // if the users are not acquired, get these first + if (_fwUpdateDbAccess.DbFullQualifiedUpdateOperators == null || + _fwUpdateDbAccess.DbFullQualifiedUpdateOperators.Count == 0) + { + GetAllUpdateOperatorsFromDb(); + } + + if (_fwUpdateDbAccess.DbFullQualifiedUpdateOperators == null) return; + foreach (var user in _fwUpdateDbAccess.DbFullQualifiedUpdateOperators) + { + var fwUpdateReportsOfUser = new List(); + _fwUpdateDbAccess?.DownloadFwUpdateReportsFromDb(out fwUpdateReportsOfUser, userId: user.Id); + _fwUpdateReports.AddRange(fwUpdateReportsOfUser); + } + } + /// /// Get all active FW update safes from DB. Outdated safes cannot be accessed. /// - /// + /// /// - Initial. /// - private void GetOutstandingFwUpdateSafesFromDb() + private void GetFwUpdateSafesInfosFromDb() { - var fwUpdateSafes= new List(); - if (_fwUpdateDbAccess != null) + if (_fwUpdateDbAccess == null) return; + + _fwUpdateSafesInfos.Clear(); + // if the users are not acquired, get these first + if (_fwUpdateDbAccess.DbFullQualifiedUpdateOperators == null || + _fwUpdateDbAccess.DbFullQualifiedUpdateOperators.Count == 0) { - foreach (var user in _fwUpdateDbAccess.DbFullQualifiedUpdateOperators) + GetAllUpdateOperatorsFromDb(); + } + + if (_fwUpdateDbAccess.DbFullQualifiedUpdateOperators == null) return; + foreach (var user in _fwUpdateDbAccess.DbFullQualifiedUpdateOperators) + { + _fwUpdateDbAccess.ListAllFwUpdateSafesOfUserFromDb(user.Id, out var fwUpdateSafesOfUser); + + foreach (var safe in fwUpdateSafesOfUser) { - _fwUpdateDbAccess.ListAllFwUpdateSafesOfUserFromDb(user.Id, out var fwUpdateSafesOfUser); - fwUpdateSafes.AddRange(fwUpdateSafesOfUser); + var pcbIdsOfSafe = _fwUpdateDbAccess.GetFwUpdateSafePcbIdsFromDb(safe.ContainerId); + var fwUpdateSafe = safe; + fwUpdateSafe.PcbIds = pcbIdsOfSafe; + _fwUpdateSafesInfos.Add(fwUpdateSafe); } } } @@ -4303,13 +4648,13 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder { // Copy MeterFwUpdateRuler either to exe-path or if existing to Library-subfolder var fwUpdateBuilderExePath = AppDomain.CurrentDomain.BaseDirectory; - var fwUpdateBuilderLibraryPath = Path.Combine(fwUpdateBuilderExePath, + var fwUpdateBuilderLibraryPath = Path.Combine(fwUpdateBuilderExePath, FwUpdateConfig.LibrarySubFolderName); // check the Library path existence (will be used in Release build) - var meterFwUpdateRulerPath = Directory.Exists(fwUpdateBuilderLibraryPath) ? + var meterFwUpdateRulerPath = Directory.Exists(fwUpdateBuilderLibraryPath) ? fwUpdateBuilderLibraryPath : fwUpdateBuilderExePath; - + var sourceFile = Path.Combine(meterFwUpdateRulerPath, f.FileName); var fs = File.Open(sourceFile, FileMode.Create); fs.Write(f.FileContent, 0, f.FileContent.Length); @@ -4338,6 +4683,10 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder /// private Boolean BuildFwUpdateSwContainerFromDb(SoftwareLicense fwUpdateSwLicense) { + if (_fwUpdateDbAccess?.DbFwUpdateConfigFiles == null || + _fwUpdateDbAccess.DbFwUpdateConfigFiles.Count == 0) + GetFwUpdateConfigFilesFromDb(); + if (_fwUpdateDbAccess?.DbFwUpdateConfigFiles == null || !_fwUpdateDbAccess.DownloadFwUpdateSwContainerFromDb() || _fwUpdateDbAccess.DbFwUpdateSwPackage.Count == 0 || @@ -4794,7 +5143,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder _customersPropertyChanged = true; _cordonelsPropertyChanged = true; _fwPackagePropertyChanged = true; - _fwReportFilesPropertyChanged = true; + _fwReportsPropertyChanged = true; _fwUpdateSafesPropertyChanged = true; _preBuildSummaryPropertyChanged = true; diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.resx index a9053e67..b6c3d6ee 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.resx +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmFwUpdateBuilder.resx @@ -1684,6 +1684,105 @@ 5 + + 1 + + + 2 + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 1 + + + 986, 31 + + + 0 + + + tblPanelFwUpdateSafeSearch + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tblFwUpdateSafeSelection + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls /><Columns Styles="Percent,50,Percent,50" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + Fill + + + 0, 31 + + + 0, 0, 0, 0 + + + 986, 390 + + + 1 + + + gridViewFwUpdateSafeSelection + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tblFwUpdateSafeSelection + + + 1 + + + Fill + + + 3, 3 + + + 0, 0, 0, 0 + + + 2 + + + 986, 421 + + + 0 + + + tblFwUpdateSafeSelection + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageFwUpdateSafes + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tblPanelFwUpdateSafeSearch" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="gridViewFwUpdateSafeSelection" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,31,Percent,100" /></TableLayoutSettings> + 4, 22 @@ -1711,6 +1810,105 @@ 6 + + 1 + + + 2 + + + Fill + + + 0, 0 + + + 0, 0, 0, 0 + + + 1 + + + 986, 31 + + + 0 + + + tblPanelFwUpdateReportsSearch + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tblPanelFwUpdateReports + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls /><Columns Styles="Percent,50,Percent,50" /><Rows Styles="Percent,50" /></TableLayoutSettings> + + + Fill + + + 0, 31 + + + 0, 0, 0, 0 + + + 986, 390 + + + 1 + + + gridViewFwUpdateReportSelection + + + System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tblPanelFwUpdateReports + + + 1 + + + Fill + + + 3, 3 + + + 0, 0, 0, 0 + + + 2 + + + 986, 421 + + + 0 + + + tblPanelFwUpdateReports + + + System.Windows.Forms.TableLayoutPanel, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageReports + + + 0 + + + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tblPanelFwUpdateReportsSearch" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="gridViewFwUpdateReportSelection" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="Absolute,31,Percent,100" /></TableLayoutSettings> + 4, 22 diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.Designer.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.Designer.cs new file mode 100644 index 00000000..bc820382 --- /dev/null +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.Designer.cs @@ -0,0 +1,124 @@ +namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder +{ + partial class FrmHistory + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmHistory)); + this.rtbHistory = new System.Windows.Forms.RichTextBox(); + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel(); + this.picBoxLogo = new System.Windows.Forms.PictureBox(); + this.tableLayoutPanel1.SuspendLayout(); + this.tableLayoutPanel2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picBoxLogo)).BeginInit(); + this.SuspendLayout(); + // + // rtbHistory + // + this.rtbHistory.Dock = System.Windows.Forms.DockStyle.Fill; + this.rtbHistory.Location = new System.Drawing.Point(3, 53); + this.rtbHistory.Name = "rtbHistory"; + this.rtbHistory.Size = new System.Drawing.Size(568, 673); + this.rtbHistory.TabIndex = 31; + this.rtbHistory.Text = ""; + this.rtbHistory.TextChanged += new System.EventHandler(this.rtbHistory_TextChanged); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 1; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel1.Controls.Add(this.rtbHistory, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.tableLayoutPanel2, 0, 0); + this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 50F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 111F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(574, 729); + this.tableLayoutPanel1.TabIndex = 38; + // + // tableLayoutPanel2 + // + this.tableLayoutPanel2.ColumnCount = 2; + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel2.Controls.Add(this.picBoxLogo, 1, 0); + this.tableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill; + this.tableLayoutPanel2.Location = new System.Drawing.Point(3, 3); + this.tableLayoutPanel2.Name = "tableLayoutPanel2"; + this.tableLayoutPanel2.RowCount = 1; + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.tableLayoutPanel2.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.tableLayoutPanel2.Size = new System.Drawing.Size(568, 44); + this.tableLayoutPanel2.TabIndex = 36; + // + // picBoxLogo + // + this.picBoxLogo.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D; + this.picBoxLogo.Dock = System.Windows.Forms.DockStyle.Right; + this.picBoxLogo.ErrorImage = null; + this.picBoxLogo.Image = ((System.Drawing.Image)(resources.GetObject("picBoxLogo.Image"))); + this.picBoxLogo.ImeMode = System.Windows.Forms.ImeMode.NoControl; + this.picBoxLogo.InitialImage = null; + this.picBoxLogo.Location = new System.Drawing.Point(460, 3); + this.picBoxLogo.Name = "picBoxLogo"; + this.picBoxLogo.Size = new System.Drawing.Size(105, 38); + this.picBoxLogo.TabIndex = 35; + this.picBoxLogo.TabStop = false; + // + // FrmHistory + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.ClientSize = new System.Drawing.Size(574, 729); + this.Controls.Add(this.tableLayoutPanel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.MaximizeBox = false; + this.MinimumSize = new System.Drawing.Size(400, 768); + this.Name = "FrmHistory"; + this.StartPosition = System.Windows.Forms.FormStartPosition.Manual; + this.Text = "FW-Update Report"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.FrmHistory_FormClosing); + this.tableLayoutPanel1.ResumeLayout(false); + this.tableLayoutPanel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.picBoxLogo)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.PictureBox picBoxLogo; + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel2; + public System.Windows.Forms.RichTextBox rtbHistory; + } +} \ No newline at end of file diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.cs new file mode 100644 index 00000000..b3a6ed20 --- /dev/null +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.cs @@ -0,0 +1,37 @@ +using System; +using System.Windows.Forms; + +namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder +{ + /// + /// History display of update process + /// + [Serializable] + public partial class FrmHistory : Form + { + /// + /// Ctor + /// + public FrmHistory() + { + InitializeComponent(); + } + + private void FrmHistory_FormClosing(Object sender, FormClosingEventArgs e) + { + //avoid destroying of object + e.Cancel = true; + //instead just hide it + Hide(); + } + + /// + /// Select always the last line for the display. + /// + private void rtbHistory_TextChanged(Object sender, EventArgs e) + { + //rtbHistory.SelectionStart = rtbHistory.Text.Length; + //rtbHistory.ScrollToCaret(); + } + } +} diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.de.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.de.resx new file mode 100644 index 00000000..bba31d09 --- /dev/null +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.de.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 428, 673 + + + 434, 729 + + + 434, 729 + + + + AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP// + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3d3cAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAA + AAAABwAAAAAAAAAAAAAAAAB3cAcAAAAAAAAAAAAHcHAAd3AHAABwAAAAAAAAdwAHAHhwAAAABwAAAAAA + B3CAAAd4dwAAcABwAAAAAAcIiAd3d3d3B3cABwAAAAAAj4iHf///B3iHcAcAAAAAAAiIiPiIiP8IhwBw + AAAAAAAAiAiIh3d48HAAcAAAAAd3CIiIiAAHd493AHd3cABwAAjwiAB3dwd/BwAAAHAHAACPCIgIAAd3 + ePdwAABwBwiIjwiA8I+AcHj3d3cAcAcI+I8HgPBw8HB494h3AHAHCIiPB4Dwd4BwiPd3dwBwBwAAjweI + /wAICIj3cAAAcAAAAAjweA//8AiPdwBwAAAAAAAI8HeIAAiIiHcAcAAAAAAAAI8HeIiIiAhwAHAAAAAA + AAiP8Ad3iAiIhwAHAAAAAACPiI/wAAD4eIdwBwAAAAAHCPgIj///iAeHAHAAAAAAB3CAAAiIiAAAcAcA + AAAAAAB3AHAAiIAHAABwAAAAAAAAB3cAAI+ABwAHAAAAAAAAAAAAAACIgAcAAAAAAAAAAAAAAAAAAAAH + AAAAAAAAAAAAAAAAB3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////wP///8D///+A////gP//4Y + Dn/8AAQ/+AAAH/gAAA/4AAAP/AAAH/4AAB/gAAABwAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB/AAAH/wA + AB/+AAAf/AAAD/gAAA/4AAAf+AAAP/wYDH/+OA7///gP///4D///+A///////w== + + + + FW-Update Info + + \ No newline at end of file diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.resx new file mode 100644 index 00000000..f9baba62 --- /dev/null +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FrmHistory.resx @@ -0,0 +1,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + /9j/4AAQSkZJRgABAQEAYABgAAD/4QC8RXhpZgAATU0AKgAAAAgABAESAAMAAAABAAEAAAE7AAIAAAAH + AAAAPodpAAQAAAABAAAARpydAAEAAAAOAAAApgAAAABUaG9tYXMAAAAEkAMAAgAAABQAAAB8kAQAAgAA + ABQAAACQkpEAAgAAAAM1MwAAkpIAAgAAAAM1MwAAAAAAADIwMjE6MDQ6MDEgMTQ6NTk6MjkAMjAyMTow + NDowMSAxNDo1OToyOQAAAFQAaABvAG0AYQBzAAAA/9sAQwACAQECAQECAgICAgICAgMFAwMDAwMGBAQD + BQcGBwcHBgcHCAkLCQgICggHBwoNCgoLDAwMDAcJDg8NDA4LDAwM/9sAQwECAgIDAwMGAwMGDAgHCAwM + DAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAIwBkAwEi + AAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAAB + fQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNE + RUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1 + tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEA + AAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRC + kaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpz + dHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ + 2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A/fi5vYbML50scW7gb2C5p28Yrzr9qv8AZm0H + 9rX4Map4O8QK0cV0vm2d5GP32nXKg+XOnuMkEfxKWXoa/M7wp8XfjF8ZtT0j9j288SafptxpGsz6Xqvi + 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 + wxRrtSJFACqo7AAAAUUUVhvqzsSSVkf/2Q== + + + + + AAABAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP// + AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB3d3cAAAAAAAAAAAAAAAAAAAAHAAAAAAAAAAAAAAAA + AAAABwAAAAAAAAAAAAAAAAB3cAcAAAAAAAAAAAAHcHAAd3AHAABwAAAAAAAAdwAHAHhwAAAABwAAAAAA + B3CAAAd4dwAAcABwAAAAAAcIiAd3d3d3B3cABwAAAAAAj4iHf///B3iHcAcAAAAAAAiIiPiIiP8IhwBw + AAAAAAAAiAiIh3d48HAAcAAAAAd3CIiIiAAHd493AHd3cABwAAjwiAB3dwd/BwAAAHAHAACPCIgIAAd3 + ePdwAABwBwiIjwiA8I+AcHj3d3cAcAcI+I8HgPBw8HB494h3AHAHCIiPB4Dwd4BwiPd3dwBwBwAAjweI + /wAICIj3cAAAcAAAAAjweA//8AiPdwBwAAAAAAAI8HeIAAiIiHcAcAAAAAAAAI8HeIiIiAhwAHAAAAAA + AAiP8Ad3iAiIhwAHAAAAAACPiI/wAAD4eIdwBwAAAAAHCPgIj///iAeHAHAAAAAAB3CAAAiIiAAAcAcA + AAAAAAB3AHAAiIAHAABwAAAAAAAAB3cAAI+ABwAHAAAAAAAAAAAAAACIgAcAAAAAAAAAAAAAAAAAAAAH + AAAAAAAAAAAAAAAAB3d3dwAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////wP///8D///+A////gP//4Y + Dn/8AAQ/+AAAH/gAAA/4AAAP/AAAH/4AAB/gAAABwAAAAYAAAAGAAAABgAAAAYAAAAGAAAAB/AAAH/wA + AB/+AAAf/AAAD/gAAA/4AAAf+AAAP/wYDH/+OA7///gP///4D///+A///////w== + + + \ No newline at end of file diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FwUpdateBuilder.csproj b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FwUpdateBuilder.csproj index 2f1249fc..0e08e477 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FwUpdateBuilder.csproj +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/FwUpdateBuilder.csproj @@ -101,6 +101,12 @@ FrmFwUpdateBuilder.cs + + Form + + + FrmHistory.cs + Form @@ -118,6 +124,13 @@ FrmFwUpdateBuilder.cs Designer + + FrmHistory.cs + + + FrmHistory.cs + Designer + FrmRegister.cs diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.Designer.cs b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.Designer.cs index cc286d53..dc0af3e3 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.Designer.cs +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.Designer.cs @@ -362,9 +362,9 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder.Properties { /// /// Looks up a localized string similar to Acquiring Report Files..... /// - internal static string StrReadingReportFiles { + internal static string StrReadingReports { get { - return ResourceManager.GetString("StrReadingReportFiles", resourceCulture); + return ResourceManager.GetString("StrReadingReports", resourceCulture); } } @@ -629,6 +629,15 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder.Properties { } } + /// + /// Looks up a localized string similar to FW-Update Order Number. + /// + internal static string StrTableCordonelUpdateOrder { + get { + return ResourceManager.GetString("StrTableCordonelUpdateOrder", resourceCulture); + } + } + /// /// Looks up a localized string similar to Customer Location. /// @@ -656,6 +665,15 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder.Properties { } } + /// + /// Looks up a localized string similar to Date. + /// + internal static string StrTableDate { + get { + return ResourceManager.GetString("StrTableDate", resourceCulture); + } + } + /// /// Looks up a localized string similar to Core Max. /// @@ -747,7 +765,7 @@ namespace Xylem.ServiceFwUpdate.Ui.FwUpdateBuilder.Properties { } /// - /// Looks up a localized string similar to Full Name. + /// Looks up a localized string similar to Update Operator. /// internal static string StrTableUserFullName { get { diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.de.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.de.resx index 9883451d..21776cb3 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.de.resx +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.de.resx @@ -156,7 +156,7 @@ Ermittelle FW Update Safes.... - + Ermittelle Berichte.... @@ -279,6 +279,9 @@ Produktionsnummer + + FW-Update Auftragsnummer + Position @@ -321,6 +324,9 @@ Releasedatum + + Datum + Region @@ -328,7 +334,7 @@ Funkfrequenz [MHz] - Benutzername + Update Operator Domain diff --git a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.resx b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.resx index 8a9730b5..1f240b2a 100644 --- a/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.resx +++ b/ServiceFwUpdate/Ui/ServiceFwUpdateBuilder/Properties/Resources.resx @@ -162,7 +162,7 @@ Acquiring FW Update Safes.... - + Acquiring Report Files.... @@ -282,6 +282,9 @@ Order Number + + FW-Update Order Number + Position @@ -324,6 +327,9 @@ Release Date + + Date + Region @@ -331,7 +337,7 @@ Radio Frequency [MHz] - Full Name + Update Operator Domain