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