diff --git a/.gitignore b/.gitignore index 3e6385a91..652d398f5 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,8 @@ MergeResultsDBs/bin/ MergeResultsDBs/obj/ OrderManagement/bin/ OrderManagement/obj/ +ProductionTracing/bin/ +ProductionTracing/obj/ RecordProcessing/bin/ RecordProcessing/obj/ ResetBatchNr/bin/ diff --git a/Common/Forms/ListViewEx.cs b/Common/Forms/ListViewEx.cs index acc5894d3..8fd75da2c 100644 --- a/Common/Forms/ListViewEx.cs +++ b/Common/Forms/ListViewEx.cs @@ -61,6 +61,9 @@ namespace Common.Forms private const int HDN_ITEMCHANGINGW = (HDN_FIRST-20); #endregion + public MySortOrder SortOrder = MySortOrder.None; + public int SortColumn = -1; + /// /// Required designer variable. /// diff --git a/OrderManagement/SettingsDlg.cs b/OrderManagement/SettingsDlg.cs index 4fcfc028d..d9816036e 100644 --- a/OrderManagement/SettingsDlg.cs +++ b/OrderManagement/SettingsDlg.cs @@ -38,14 +38,14 @@ namespace OrderManagement { Localize(); + if (ls == null) return; + languageComboBox.Items.Add("EN"); languageComboBox.Items.Add("ZH_CN"); languageComboBox.Items.Add("DE"); languageComboBox.Items.Add("SK"); languageComboBox.Text = ls.Language; - if (ls == null) return; - loginRequiredCheckBox.Checked = ls.IsUserLoginRequired; showPredefinedOrdersCheckBox.Checked = ls.IsShowPredefinedOrders; diff --git a/ProductionTracing/FiltersConfig.cs b/ProductionTracing/FiltersConfig.cs new file mode 100644 index 000000000..4f829290f --- /dev/null +++ b/ProductionTracing/FiltersConfig.cs @@ -0,0 +1,89 @@ +/// +/// Copyright (c) 2016-2018 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Text; +using System.Xml.Serialization; +using System.Windows.Forms; +using ProductionTracing.Resources; + +namespace ProductionTracing +{ + /// + /// Class to be serialized to an XML file... + /// Public members are filters / parts of a query. + /// + [XmlRootAttribute("Query")] + public class FiltersConfig + { + public bool[] FilterEnabled; + + [XmlIgnore] + public int FiterEnabledCount { get { return (FilterEnabled != null) ? FilterEnabled.Length : 0; } } + + public string[] ResultItems; + + [XmlArrayAttribute("ResultsClmnWidths")] + public int[] ResultsClmnWidths; + [XmlIgnore] + public int ResultsClmnCount { get { return (ResultsClmnWidths != null) ? ResultsClmnWidths.Length : 0; } } + + + public FiltersConfig() + { + ResultItems = new string[] + { + "Code1~Housing s/n~{0}~~0", + "Code2~eRegister nr.~{0}~~0", + "Code3~S/N~{0}~~0", + "Code4~Radio address~{0}~~0", + "POrder~Order~{0}~~0", + "Workflow~Workflow~{0}~~0", + "Timestamp~Time stamp~{0:dd.MM.yyyy HH:mm:ss}~~0" + }; + } + + /// + /// Load public fields of this class from the XML file. + /// + public static FiltersConfig Load(string fileName) + { + try + { + using (TextReader reader = new StreamReader(fileName)) + { + FiltersConfig ls = (new XmlSerializer(typeof(FiltersConfig))).Deserialize(reader) as FiltersConfig; + // Copy the settings just in case De-serialize() completes OK + return ls; + } + } + catch (Exception exc) + { + string msg = exc.Message; + return null; + } + } + + /// + /// Save public fields of this class to the XML file. + /// + public bool Save(string fileName) + { + try + { + using (TextWriter writer = new StreamWriter(fileName)) + { + (new XmlSerializer(typeof(FiltersConfig))).Serialize(writer, this); + } + return true; + } + catch (Exception exc) + { + MessageBox.Show(exc.Message, Strings.Error_saving_file, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return false; + } + } + } +} diff --git a/ProductionTracing/Forms/MoreInfoDlg.Designer.cs b/ProductionTracing/Forms/MoreInfoDlg.Designer.cs new file mode 100644 index 000000000..8dbe2fa74 --- /dev/null +++ b/ProductionTracing/Forms/MoreInfoDlg.Designer.cs @@ -0,0 +1,65 @@ +namespace ProductionTracing.Forms +{ + partial class MoreInfoDlg + { + /// + /// 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() + { + this.listViewEx = new Common.Forms.ListViewEx(); + this.SuspendLayout(); + // + // listViewEx + // + this.listViewEx.AllowColumnReorder = true; + this.listViewEx.Dock = System.Windows.Forms.DockStyle.Fill; + this.listViewEx.DoubleClickActivation = false; + this.listViewEx.FullRowSelect = true; + this.listViewEx.Location = new System.Drawing.Point(0, 0); + this.listViewEx.Name = "listViewEx"; + this.listViewEx.Size = new System.Drawing.Size(1434, 461); + this.listViewEx.TabIndex = 0; + this.listViewEx.UseCompatibleStateImageBehavior = false; + this.listViewEx.View = System.Windows.Forms.View.Details; + // + // MoreInfoDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1434, 461); + this.Controls.Add(this.listViewEx); + this.Name = "MoreInfoDlg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "More informations"; + this.ResumeLayout(false); + + } + + #endregion + + private Common.Forms.ListViewEx listViewEx; + + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/MoreInfoDlg.cs b/ProductionTracing/Forms/MoreInfoDlg.cs new file mode 100644 index 000000000..e507ded97 --- /dev/null +++ b/ProductionTracing/Forms/MoreInfoDlg.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using NHibernate; +using SharedDatabase.Entities; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class MoreInfoDlg : Form + { + public MoreInfoDlg(int refRecordId, ISession session) + { + InitializeComponent(); + Text = Strings.More_informations; + + listViewEx.Columns.Add("Date/time", 150); + listViewEx.Columns.Add("Workstep", 100); + listViewEx.Columns.Add("Workplace", 100); + listViewEx.Columns.Add("User", 70); + listViewEx.Columns.Add("Result", 70); + listViewEx.Columns.Add("Parts and serial numbers", 1000); + + var refRecords = session.QueryOver() + .Where(x => (x.Id == refRecordId)) + .OrderBy(x => x.Timestamp).Asc + .List(); + + foreach (var rr in refRecords) + { + foreach (var step in rr.StepRecords) + { + ListViewItem lvi = new ListViewItem(step.Timestamp.ToString()); + lvi.SubItems.Add(step.Workstep != null ? step.Workstep : string.Empty); + lvi.SubItems.Add(step.Workplace != null ? step.Workplace : string.Empty); + lvi.SubItems.Add(step.User != null ? step.User : string.Empty); + lvi.SubItems.Add(step.Result == 0 ? "OK" : string.Format("Err{0}", step.Result)); + + StringBuilder sb = new StringBuilder(); + if (!string.IsNullOrEmpty(rr.Name1)) sb.Append(string.Format(" {0}={1}", rr.Name1, rr.Code1 != null ? rr.Code1 : string.Empty)); + if (!string.IsNullOrEmpty(rr.Name2)) sb.Append(string.Format(" {0}={1}", rr.Name2, rr.Code1 != null ? rr.Code2 : string.Empty)); + if (!string.IsNullOrEmpty(rr.Code3)) sb.Append(string.Format(" S/N={0}", rr.Code3)); + if (!string.IsNullOrEmpty(rr.Code4)) sb.Append(string.Format(" radio addres={0}", rr.Code4)); + foreach (var rec in step.Records) + { + sb.Append(string.Format(" {0}={1}", rec.Name, rec.Code != null ? rec.Code : string.Empty)); + } + lvi.SubItems.Add(sb.ToString()); + listViewEx.Items.Add(lvi); + } + } + } + } +} diff --git a/ProductionTracing/Forms/MoreInfoDlg.resx b/ProductionTracing/Forms/MoreInfoDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/Forms/MoreInfoDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/Forms/NoBenchOrDatabaseDlg.Designer.cs b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.Designer.cs new file mode 100644 index 000000000..763f5dd07 --- /dev/null +++ b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.Designer.cs @@ -0,0 +1,120 @@ +namespace ProductionTracing.Forms +{ + partial class NoBenchOrDatabaseDlg + { + /// + /// 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(NoBenchOrDatabaseDlg)); + this.exitButton = new System.Windows.Forms.Button(); + this.retryButton = new System.Windows.Forms.Button(); + this.configureButton = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.errorMessageLabel = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + this.SuspendLayout(); + // + // exitButton + // + this.exitButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.exitButton.Location = new System.Drawing.Point(42, 68); + this.exitButton.Name = "exitButton"; + this.exitButton.Size = new System.Drawing.Size(246, 33); + this.exitButton.TabIndex = 0; + this.exitButton.Text = "Exit"; + this.exitButton.UseVisualStyleBackColor = true; + this.exitButton.Click += new System.EventHandler(this.exitButton_Click); + // + // retryButton + // + this.retryButton.Location = new System.Drawing.Point(42, 146); + this.retryButton.Name = "retryButton"; + this.retryButton.Size = new System.Drawing.Size(246, 33); + this.retryButton.TabIndex = 1; + this.retryButton.Text = "Retry database connection"; + this.retryButton.UseVisualStyleBackColor = true; + this.retryButton.Click += new System.EventHandler(this.retryButton_Click); + // + // configureButton + // + this.configureButton.Location = new System.Drawing.Point(42, 107); + this.configureButton.Name = "configureButton"; + this.configureButton.Size = new System.Drawing.Size(246, 33); + this.configureButton.TabIndex = 2; + this.configureButton.Text = "Configure test benches (password required)"; + this.configureButton.UseVisualStyleBackColor = true; + this.configureButton.Click += new System.EventHandler(this.configureButton_Click); + // + // pictureBox1 + // + this.pictureBox1.ErrorImage = ((System.Drawing.Image)(resources.GetObject("pictureBox1.ErrorImage"))); + this.pictureBox1.Image = ((System.Drawing.Image)(resources.GetObject("pictureBox1.Image"))); + this.pictureBox1.InitialImage = null; + this.pictureBox1.Location = new System.Drawing.Point(42, 21); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(32, 32); + this.pictureBox1.TabIndex = 3; + this.pictureBox1.TabStop = false; + // + // errorMessageLabel + // + this.errorMessageLabel.AutoSize = true; + this.errorMessageLabel.Location = new System.Drawing.Point(80, 31); + this.errorMessageLabel.Name = "errorMessageLabel"; + this.errorMessageLabel.Size = new System.Drawing.Size(160, 13); + this.errorMessageLabel.TabIndex = 4; + this.errorMessageLabel.Text = "Cannot connect to the database"; + // + // NoBenchOrDatabaseDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.exitButton; + this.ClientSize = new System.Drawing.Size(328, 194); + this.Controls.Add(this.errorMessageLabel); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.configureButton); + this.Controls.Add(this.retryButton); + this.Controls.Add(this.exitButton); + this.Name = "NoBenchOrDatabaseDlg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Error"; + this.Load += new System.EventHandler(this.NoDatabaseMsgDlg_Load); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button exitButton; + private System.Windows.Forms.Button retryButton; + private System.Windows.Forms.Button configureButton; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Label errorMessageLabel; + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/NoBenchOrDatabaseDlg.cs b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.cs new file mode 100644 index 000000000..c26167cca --- /dev/null +++ b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.cs @@ -0,0 +1,48 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class NoBenchOrDatabaseDlg : Form + { + public string Message; + public bool ShowRetry; + + public NoBenchOrDatabaseDlg() + { + InitializeComponent(); + } + + private void NoDatabaseMsgDlg_Load(object sender, EventArgs e) + { + Text = Strings.Error; + errorMessageLabel.Text = (Message != null) ? Message : Strings.Error; + exitButton.Text = Strings.ExitBtnText; + retryButton.Text = Strings.RetryDatabaseText; + configureButton.Text = Strings.ConfigureDatabaseText; + if (!ShowRetry) retryButton.Enabled = false; + } + + private void exitButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Abort; + } + + private void retryButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Retry; + } + + private void configureButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + } + } +} diff --git a/ProductionTracing/Forms/NoBenchOrDatabaseDlg.resx b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.resx new file mode 100644 index 000000000..e42c6fc53 --- /dev/null +++ b/ProductionTracing/Forms/NoBenchOrDatabaseDlg.resx @@ -0,0 +1,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + iVBORw0KGgoAAAANSUhEUgAAA0sAAALBCAIAAAAGeq0rAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAF7tJREFUeF7t3Vtw + l/Wdx3HvCEkQldrOdJiOhx6o2GqrUEAQFDlExcNuW7fVqb2o3c44g9Orbhc7uDe7nemO2M5gdXWtBBYS + BA0oa1By4BwIIWAgIYEi4aCEJFhd123VKfvk0O1h2t274H7m9Zonmf/h9/s+t+95kv/zv+Dc/6qnp2fn + jh3VVVVLHn304UWLHlq4sDiKB8XT4sXirWLB8FIAAD4a/mLhdXZ2rq6ufmTx4srKysbGxq6urrP9/R8M + Kh4UT4sXi7eKBcWyYvHwNgAAzrc/U3i9vb01NTVLlixpaGjoK550HjpZV3dkVVXH0scP/OOP9/5o8Ws/ + +efOymXd9Y1nOjv7zpwplhWLiy3F2uERAACcP39aeIc6OpYuXbqxtvatvr5TW7Z2P7/29L8+c+yhh7rv + u+/4X321++67Xr/zzsN33tl+192td9/ddP/9bcuWHWva+ebJk8WWYmOxfXgQAADnyR8V3v79+3/62GNt + bW19+/a9Xr26r7LyxAMPvHH33SfvvPPkgjuPLVjw+oIFRxYsOFxx+6Fbb22vmHdg3rzmioqtt92279FH + T+9pKTYW24shw+MAADgffl94hzo6ij7r7u4+vmHDyZWrTv3g704Ntt3xO+4o2u7o7bcfue22wxUVHfPn + H5w3r23OnP1z5rTOnr3n5pubZ87cMnv2v8+Ze2Tt2mJ7McSVPACA82i48Hp7e5cuXdrW1jaQd888c/y7 + f/vGXXccmzu3a8aMI7fcMtB28+d3zpt/cO7cttm37J89u/Xmm1tm39Q0bdr2a760ddKkrdOn18+YsWHm + rCNr1hRDilH+Jw8A4HwZLryampqNtbV9+/YdXrLkxPe+d/yOOw7PurHngQf+a/36kw888NoNUzvmzj0w + e/ZQ2zXPmrV75sxt113XfMcdx595pvXe+1656vObJk+unTJ13Y0ze5qbi1HFwKHJAACMsIHC6+zsXLJk + yVt9fe2PP35i0aJjty04fNNNb9x//7k33xxY0tNz5Jvf3H3ddUNtt2vGjKYbZ2y59tpd8+f/srHx6Nm+ + Y/v27fzq116cMOGlL3953fXXv/zXXy1GFQPdQgUA4LwYKLzV1dX19fVv7N51+Id///rttxd5d+yee86d + OTO0YsCbpzvuvXfHF7+468Ybt0+btvmLVzdV3PrLLVu6Tpw4cPBgW1dXZ/PuV+fNW/uZz6yZePXzX77u + 0Ip/a2hoKMYObwcAYARd0NPT88jixb09PV2rVh3+9rcPz5vTPn360Xv+5tw77wwvGfTr06cP3Htv3YQJ + dROv2l5RcXjr1q6TJw8ePLhv795Tp0+/++67L1RUrLz88pVXXVU98erae77Wd+ZMMdY3XgAAjLwLdu7Y + UVlZeaazq/XBBztuuaV99k1tN9/ccv31h7/znXNvvVWs+PDDD9977713P/zwV93H99x11+ZZs4q8O9Td + ffDAgdbW1oG8e+edylmzniwvrxw79tmxY/917Njqa649vX//8uXLi+FDpwEAYMRcUF1V1djY2P1KXevX + vn7gpptemzlz78yZe2bM2HrV1W3f+tZ7vb3vnzv39ttvn+3v7/nVr9547bX2urq2rq6i7Xbv2nX81Kn/ + ePvtZ6dNe6K8fHlZ2S/Kyp4ZPFaMH9/29NObN28uhg+fBwCAkXLBkkcf7erqOvjU0y0VFftm3Lh3xvTd + 06c3TZu2c+oNdRMm7Lnvvv5Tp/rfffeNU6eOHj3aeeRIW2dnS0tLU1NT91DezZz5ZHn5itLSZWVlzw4e + RedVjhvX+OCDxdhi+PB5AAAYKRc8vGjR2f7+5kcW77lp1lDbNU2bsm3KlC2TJzdOnfrylZdvufXWo83N + R44da29vb3vttb0tLbt27eo+fvydt99efvPNQ3k3dCwvKyuOIvWWXXhhzexbirHF8OHzAAAwUi54aOHC + Dz74oP4b39h9ww1F3m37yle2TJrUOHly/eTJtVdeuW706FWlpfUVFQfa2/e3tQ1dvdu6bVt/f/+L99// + RHl58e7K3x1F5A39XlFWtvILXyjGFsOHzwMAwEgZKLzf/OY3m7/73YHrdkXbXX99/aRJm6699qVx49aO + Hl1VWvripz61b/Xqlra2PXv2DOTd1q2bt2xp2Latef36lyZOLHquWFMc1X94FIX3pS+9//77Cg8AYOQN + /JW290zvzod/1DBlSn2Rd5Mn1V51Vc3o0WsG827d+PH71q/f09HR3NzctHPn1qLwduzY3NBQV1e3afv2 + vbW1Gz7/+WJZsbjIwRd+d9SUl78wb15/X5+/0gIAjLyBT1p0HOrc/+STr06Zsmny5JevvrpoterBP7a+ + MH5867p1ze3tzXv27Ny5s/vkybN9fS+vWbNpy5aG+vrGxsYdra0HN2+u/dznisJbP3i8VBwlJRsuvLBh + 4cKBr8rwSQsAgBE3cLeU+vr6I6++8vLUabXXXDOUdytLS9dcemnr2rVF3u1ubt6xY0eRd2+dPbtsypTK + K66ofW5NY1NT086dLS0tnd3d3bubNn3600XYbSwpeaWk5NWSkucuHHuwclmRgO6WAgAw8gbuePzssmdP + drS/OG3a2ksuqRq8erd63LjW554byLvdu4u8OzaYd0M3Rini77kJExrWr9976NCh9vZjx471/+d7/fv3 + N47/VP2oUQ2jRjWOGrX6sst7DrYtX17pjscAACNv+FvLTp04sX7u3KqPfazIu2fLyqovv3x3XV3Tvn3b + t2/vPnHirf7+Z2688YnBvBv6UEXNxIktjY3Hz5zp7e399W9/e7a/v27ChG2jRu0cXbJt7NjmH/9TX2/v + PzzyiG8tAwAYeRcUP6urqxsaGg4+9dTK8eOXlZf/oqzsX8rKVk2aVL9hw+tvvFHk3dPTp/988L53ReEV + ebd29Oia0aM3fPazR/fu/eDcubfPnn1l/vxNJSUtpaV7y8qeu/jiY431DY0NxdihcwAAMJIGCm/gIxFL + lrzV17duzpwVH//4U2VlT5aXP15eXnnddfs2bnxq2tSl5eXLysqKwltVWvpcaWmRdy+VlLxcUrLlmmuO + P/98w2231Y8atb+srK28fM+4j62bP78YVQwsxg6dAwCAkTRQeIWampqNtbWnd+9e/unP/GLcuJ+XlxdV + Vxw/Hfz9zODXkRWFVzV4AW/96NG1JSWbSkoaR40qfm8fNapou44xY/Zfcsmqyy7rbWl5ZePGYuDQZAAA + Rthw4fX29i5durStra2zqmrFZZc9NW7czwbbrki9J/+g8Ab+A2/wAt6rg3m3o7R0z+jRRd4dGjOmbdy4 + qk9+8uja5w8cOFCMKgYOTQYAYIQNF17hUEfHTx97rLu7u6uq6tkrr3z60kt/NmZMEXn/U3gDt1D5gwt4 + W0tKdpWX7ysvbx8zpnXcuOorrjj6wgvF9mJIMWp4KAAAI+73hVfYv39/0WdtbW2nd++umX3Lk5/4xNMX + X/xEeflTf1x4r5SUNIwa1TS6bO+YMXsuvviFiy5aX3Frb2trsbHYXgwZHgcAwPnwR4VXONTRsXTp0o21 + tW/19b3e2LjtBz989vIrnrrkkhUXXVRVXr6mtPSl0tKNpaX1Y8asGzt25cUX137960fWPl8sLrYUG129 + AwA47/608Aq9vb01NTVLliypq6vr7enp6ez85YYNLT/5ycvf/EbV1K+suHriuopbN3//+x2Vy063tfWe + OdNQX18sLrb43zsAgI+CP1N4Qzo7O1dXVz+yeHFlZWVjY2NXV9fZ/v4PBhUPiqfFi8VbxYJimRujAAB8 + dPzFwhvS09Ozc8eO6qqqJY8++vCiRQ8tXFgcxYPiafFi8ZZvrQAA+Kj5PwoPAID/dxQeAEAahQcAkEbh + AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk + UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA + AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU + HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA + GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH + AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG + 4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA + pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4 + AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp + FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A + QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF + BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ + RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB + AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR + eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA + aRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQe + AEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAa + hQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcA + kEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbh + AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk + UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA + AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU + HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA + GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH + AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG + 4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA + pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4 + AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp + FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A + QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF + BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ + RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB + AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR + eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA + aRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQe + AEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAa + hQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcA + kEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbh + AQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCk + UXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgA + AGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkU + HgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBA + GoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUH + AJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG + 4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEA + pFF4AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4 + AABpFB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABp + FB4AQBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4A + QBqFBwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqF + BwCQRuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQ + RuEBAKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEB + AKRReAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRR + eAAAaRQeAEAahQcAkEbhAQCkUXgAAGkUHgBAGoUHAJBG4QEApFF4AABpFB4AQBqFBwCQRuEBAKRReAAA + Wc6d+2/gNp2ukwoN8QAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAAOvwAA + Dr8BOAVTJAAACG1JREFUSEu1lmlQW9cVx/mG0GIZZCczGcZjvCQEiLHNYpABAQKEwBjTeqmXCfkQ3Mx4 + xp58SlMnY/dLmxl3TJIZu3UhBAQBsYNsisBoByS0C21oMUhCYIQkbFzqxo4n9C89TElqt/3SM1dv3tM7 + 93fOPfecc1/M+n+UQCCgnJzs5PPrb9787OrVK5cvY+AGj/gTr6Cwofoaea0Bh8PR1dl5/do1Ho8nlUqd + TudKOPxDVHCDR/yJV1CAGpQ3pv2bvMJAMBgcGBior6+XSCQhPDhm/CKRu4Nvv3Xb8vsv9J9fm77xRwev + xSuWLjscoeVlqEEZU6C7gdgiPzcwY7ffunVrRCh8FAotyBXevt6lb5o8V654L1zw/eKkt+bEXHW1q7ra + dqLGUFOjqq01t7R4VMqHfj+mYCKmb4Beyk8MmEymr7780mw2h4zGuc6uEI83X1e3WFPjr672V1V7qqrm + qqrcVVUu7rGZigobl2PhcDRcrqKy0njz5pJWh4mYDsgGLir/MgDjeO31en1DQ/72joVPfrMQRfuOHwd6 + 9tgxd2Wli8u1l5dbORxzaamptNTAZmuLizUslpzN/mtpmbu3F9MB2bqODQMIHxYIFyL0pibfxV8vnjju + KStz5ue7S0oi6PJyB6fcWlZmZpeY2GxDcbGOXaRiMifSDymyshR5eeL8/CFWobunBxCgNvdjwwC2CEFE + ZFz19fMffQSvXYUFgbq6fwgE/rq66aO59rIyC5tNoDWFhWoWazwjQ3P8uK+pyXD+wmjKu2PZ2cKc3MEC + VkCjAQpAghwxgCRDGmBXbbdvz1+96qmschUVLdbWrj98GFEJBNznzqkzMgj0VH6+qiBffvDgVHn5A6l0 + diXkMRqVJ0/dTU6+d/jwYGbm8C9PAgUgkbsRA0hksVi8qJ5yffrbuWPHQPecObO+vByhE/JwyX7+/OSB + A1MFBRNMpuxAmopb8UAud87PW6xWs9Pp0Kjvczi9+/f3pKb1Hc6YafsOuQsspsagFFEswUDA2dHh+uAD + F6fUlpc3e+ZX60+eEHBCvl9aspw/L0pOFqWmTHC5LoXC6fdbrVajXr+wtLS2ttbP5bYnJbWnpHSmpgnP + nEJ9AAt4DModBbnscBouXbKXlNjYRWZsYGam68MP1x89AvrFixdPnz5de/HisdenPXFCVlgI+ozXa7VY + DAZDhP7kCa+w8A6VyqPTm+n0b+j0zvSDSyZTa2sr4DFoKSh676jIcOq0pahomsXSs1ja/HxFSpr5/fef + BoPP19dXV1fRHgKPHy9OT9tEIsQEaPXUlG9h4W+rq81M5p+p1FYK5VsKpSk62hITzY2NMpkM8Bi0LTQW + a0Ojjss15hfo8/PUeXnIP2XuUQREe+FCeGEhvLa2uLAwOzvrcLvNDodOp1OpVF6CzmLB9zYyuYVCaY4O + mOExGNJLl4AFPAatEd5prl/TFhUSaBUzZzwnR56dLc3NHd6bJK+omNVo3B6PzWYzT0/rdbqpqSmvz/dk + dbW1uJigEwOLwICllm3bBtglwAIeg/aLBik+e1Z99Cjo40eOyLOypNnZYuT13r2DcXEdZLKYy7XYbCaz + mfBdMT4eDofv1tYiMnjb/nLABnFto1Da33sPWMAjBp49eya7eDHiNdCZmeKsrLGDB+8xGL1xcXwy+e6u + XcauLjQarVYboSsUMrlcMj6uEQjupaYCBx2Mzq0DBg4dev78ecQAVhFcDio/+1ySkyMGPTtLmJIyEBfX + E6UPJiYaBQKt3a7RaFRKpQIGJidlEolIJBqbmNALhUPvvgs1KMOb/pdjgErt53DCoVAkRNgH+4zDdOfO + /ZwclPtwWhpU4QVc609MNAwOamw2jVarVCq9fv9KKDTc0zOGFYjFyL1Jg8EqkwnfeQcGBNFxD4NEGtq2 + TXL5cqRBYJORSShj9/3R4VymMD2doCOUPTt3Gnp7QVdrNJOTk6A/Wllpycnh7dkj7O6RIlhKJbbEgf6p + Vo3t2wfuCIk0SiLdJ5G6t9GtvBZ4EElT1EJzS7PfbrvLZPYmJGC98L2LwTB0d0foajXoniidyEjY7k5O + lggE+pmZGZvN4/GE//40bDJJE3eJY2MlsbHS2Niu3UkBq7m1lRcpNKJVLMzPC8rK+Dt2gI5c7kxKUotE + KqNxYmLCOz//KBxuKihAzoBO7OdAaqpOKvUtL6Mtf//jj8hIFM14bKwyjjROp2u++APO2t9dvx5pFWgG + 6EroTdaGhvbExBYqFZXyFwqlIytLPDQ0t7gIemNe3p+i+Q4DoCOMyIKht9+e1et/QJ2vrIyWl4+RSDoy + WU+hdMfHe6RiifRls8Nvs10Plpa2vfFGA4WCUNxGb8nIMI6MNDBzb1GpKB8YQNZ3w/3oTg6TSPL0dF9f + n6SyEsExUShmKlXL2DFYXv7zdg0hDpwltbp13/5vGQz4CyjGV9Er2gviBgOID9xHtghJJLiMcOM6ERsL + tJ1GMyUkdOzeHdTpRkdGfnLgQDaPTAef37Z7dwOD8XUUDUtYzaaBSPSj7iNVQJ8kk7VxcaDP0GhmBoP/ + 1luzvX0Wi+UVRyZk89B38vnNe/c27tz5NY0GG5sGIrm7xX0FiTRFpRqpVBuNZmAwOvfsme3vf+2hT8jm + ZwtihW515803G+PjkTzYla0GkOxIR1UcRU+jaePj+7dvF3ArggbDf/lsIQTGsUDiw2tOKh3/5NPmpD0N + CQlt27fzqdQeMvkemTyC9kejDdLp7fHxwtOn3b19UP6fPrwIQfiwRUgDNBwcpQGH48HQkO7GjeFzZ/m5 + R9rSUge5FbKPP7bzWpbM5iA+HcViKGPKZty3yisMEIIkQyL/Xz5+twoWgHJHS0HbQmtE+8XADR7xJ15B + YUP1lbK+/k8KJ49ubHudCAAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/ProductionTracing/Forms/SettingsDlg.Designer.cs b/ProductionTracing/Forms/SettingsDlg.Designer.cs new file mode 100644 index 000000000..b5071e4a7 --- /dev/null +++ b/ProductionTracing/Forms/SettingsDlg.Designer.cs @@ -0,0 +1,179 @@ +namespace ProductionTracing.Forms +{ + partial class SettingsDlg + { + /// + /// 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() + { + this.commonGroupBox = new System.Windows.Forms.GroupBox(); + this.loginRequiredCheckBox = new System.Windows.Forms.CheckBox(); + this.languageComboBox = new System.Windows.Forms.ComboBox(); + this.languageLabel = new System.Windows.Forms.Label(); + this.connStrForTracingGroupBox = new System.Windows.Forms.GroupBox(); + this.tracingDBConnStringTextBox = new System.Windows.Forms.TextBox(); + this.connStrForUsersGroupBox = new System.Windows.Forms.GroupBox(); + this.usersDBConnStringTextBox = new System.Windows.Forms.TextBox(); + this.saveButton = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.commonGroupBox.SuspendLayout(); + this.connStrForTracingGroupBox.SuspendLayout(); + this.connStrForUsersGroupBox.SuspendLayout(); + this.SuspendLayout(); + // + // commonGroupBox + // + this.commonGroupBox.Controls.Add(this.languageComboBox); + this.commonGroupBox.Controls.Add(this.languageLabel); + this.commonGroupBox.Location = new System.Drawing.Point(12, 161); + this.commonGroupBox.Name = "commonGroupBox"; + this.commonGroupBox.Size = new System.Drawing.Size(418, 53); + this.commonGroupBox.TabIndex = 16; + this.commonGroupBox.TabStop = false; + // + // loginRequiredCheckBox + // + this.loginRequiredCheckBox.AutoSize = true; + this.loginRequiredCheckBox.Location = new System.Drawing.Point(19, 46); + this.loginRequiredCheckBox.Name = "loginRequiredCheckBox"; + this.loginRequiredCheckBox.Size = new System.Drawing.Size(114, 17); + this.loginRequiredCheckBox.TabIndex = 2; + this.loginRequiredCheckBox.Text = "User login required"; + this.loginRequiredCheckBox.UseVisualStyleBackColor = true; + // + // languageComboBox + // + this.languageComboBox.FormattingEnabled = true; + this.languageComboBox.Location = new System.Drawing.Point(292, 19); + this.languageComboBox.Name = "languageComboBox"; + this.languageComboBox.Size = new System.Drawing.Size(80, 21); + this.languageComboBox.TabIndex = 1; + // + // languageLabel + // + this.languageLabel.AutoSize = true; + this.languageLabel.Location = new System.Drawing.Point(19, 23); + this.languageLabel.Name = "languageLabel"; + this.languageLabel.Size = new System.Drawing.Size(134, 13); + this.languageLabel.TabIndex = 0; + this.languageLabel.Text = "Language, Sprache, Jazyk"; + // + // connStrForTracingGroupBox + // + this.connStrForTracingGroupBox.Controls.Add(this.tracingDBConnStringTextBox); + this.connStrForTracingGroupBox.Location = new System.Drawing.Point(12, 14); + this.connStrForTracingGroupBox.Name = "connStrForTracingGroupBox"; + this.connStrForTracingGroupBox.Size = new System.Drawing.Size(660, 50); + this.connStrForTracingGroupBox.TabIndex = 17; + this.connStrForTracingGroupBox.TabStop = false; + this.connStrForTracingGroupBox.Text = "Connection string for production tracing records"; + // + // tracingDBConnStringTextBox + // + this.tracingDBConnStringTextBox.Location = new System.Drawing.Point(19, 18); + this.tracingDBConnStringTextBox.Name = "tracingDBConnStringTextBox"; + this.tracingDBConnStringTextBox.Size = new System.Drawing.Size(617, 20); + this.tracingDBConnStringTextBox.TabIndex = 0; + // + // connStrForUsersGroupBox + // + this.connStrForUsersGroupBox.Controls.Add(this.loginRequiredCheckBox); + this.connStrForUsersGroupBox.Controls.Add(this.usersDBConnStringTextBox); + this.connStrForUsersGroupBox.Location = new System.Drawing.Point(12, 73); + this.connStrForUsersGroupBox.Name = "connStrForUsersGroupBox"; + this.connStrForUsersGroupBox.Size = new System.Drawing.Size(660, 70); + this.connStrForUsersGroupBox.TabIndex = 18; + this.connStrForUsersGroupBox.TabStop = false; + this.connStrForUsersGroupBox.Text = "Connection string for central DB of users"; + // + // usersDBConnStringTextBox + // + this.usersDBConnStringTextBox.Location = new System.Drawing.Point(19, 18); + this.usersDBConnStringTextBox.Name = "usersDBConnStringTextBox"; + this.usersDBConnStringTextBox.Size = new System.Drawing.Size(617, 20); + this.usersDBConnStringTextBox.TabIndex = 0; + // + // saveButton + // + this.saveButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.saveButton.Location = new System.Drawing.Point(475, 166); + this.saveButton.Name = "saveButton"; + this.saveButton.Size = new System.Drawing.Size(74, 47); + this.saveButton.TabIndex = 19; + this.saveButton.Text = "Save"; + this.saveButton.UseVisualStyleBackColor = true; + this.saveButton.Click += new System.EventHandler(this.saveButton_Click); + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.Location = new System.Drawing.Point(577, 166); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(71, 47); + this.cancelButton.TabIndex = 20; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // SettingsDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(688, 237); + this.ControlBox = false; + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.saveButton); + this.Controls.Add(this.connStrForUsersGroupBox); + this.Controls.Add(this.connStrForTracingGroupBox); + this.Controls.Add(this.commonGroupBox); + this.Name = "SettingsDlg"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "Settings"; + this.Load += new System.EventHandler(this.SettingsDlg_Load); + this.commonGroupBox.ResumeLayout(false); + this.commonGroupBox.PerformLayout(); + this.connStrForTracingGroupBox.ResumeLayout(false); + this.connStrForTracingGroupBox.PerformLayout(); + this.connStrForUsersGroupBox.ResumeLayout(false); + this.connStrForUsersGroupBox.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.GroupBox commonGroupBox; + private System.Windows.Forms.ComboBox languageComboBox; + private System.Windows.Forms.Label languageLabel; + private System.Windows.Forms.CheckBox loginRequiredCheckBox; + private System.Windows.Forms.GroupBox connStrForTracingGroupBox; + private System.Windows.Forms.TextBox tracingDBConnStringTextBox; + private System.Windows.Forms.GroupBox connStrForUsersGroupBox; + private System.Windows.Forms.TextBox usersDBConnStringTextBox; + private System.Windows.Forms.Button saveButton; + private System.Windows.Forms.Button cancelButton; + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/SettingsDlg.cs b/ProductionTracing/Forms/SettingsDlg.cs new file mode 100644 index 000000000..8fbc61541 --- /dev/null +++ b/ProductionTracing/Forms/SettingsDlg.cs @@ -0,0 +1,126 @@ +/// +/// Copyright (c) 2021 Sensus Slovensko a.s. +/// +using System; +using System.Windows.Forms; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class SettingsDlg : Form + { + private LocalSettings ls; + + public SettingsDlg() + { + InitializeComponent(); + } + + public SettingsDlg(LocalSettings localSettings) + { + InitializeComponent(); + this.ls = localSettings; + } + + void Localize() + { + Text = Strings.Settings; + languageLabel.Text = Strings.Language; + loginRequiredCheckBox.Text = Strings.User_login_is_required; + saveButton.Text = Strings.Save; + cancelButton.Text = Strings.Cancel; + connStrForTracingGroupBox.Text = Strings.Connection_string_tracing_DB; + connStrForUsersGroupBox.Text = Strings.Connection_string_users_DB; + } + + private void SettingsDlg_Load(object sender, EventArgs e) + { + Localize(); + + if (ls == null) return; + + languageComboBox.Items.Add("EN"); + languageComboBox.Items.Add("ZH_CN"); + languageComboBox.Items.Add("DE"); + languageComboBox.Items.Add("SK"); + languageComboBox.Text = ls.Language; + + loginRequiredCheckBox.Checked = ls.IsUserLoginRequired; + + tracingDBConnStringTextBox.Text = ls.ConnectionString; + usersDBConnStringTextBox.Text = ls.UsersDBConnString; + } + + /// + /// Verifies UI content + /// + /// None-empty string (message) when invalid + string IsUIContentValid() + { + if (!languageComboBox.Items.Contains(languageComboBox.Text)) + { + return "Invalid language"; + } + + return null; + } + + /// + /// Updates settings, checks for differences compared to previous setrtings + /// + /// true when settings are different + bool UpdateSettings() + { + if (ls == null) return false; + + bool isDifferent = false; + + if (ls.Language != languageComboBox.Text) + { + ls.Language = languageComboBox.Text; + isDifferent = true; + } + + if (ls.IsUserLoginRequired != loginRequiredCheckBox.Checked) + { + ls.IsUserLoginRequired = loginRequiredCheckBox.Checked; + isDifferent = true; + } + + if (ls.ConnectionString != tracingDBConnStringTextBox.Text) + { + ls.ConnectionString = tracingDBConnStringTextBox.Text; + isDifferent = true; + } + + if (ls.UsersDBConnString != usersDBConnStringTextBox.Text) + { + ls.UsersDBConnString = usersDBConnStringTextBox.Text; + isDifferent = true; + } + + return isDifferent; + } + + private void saveButton_Click(object sender, EventArgs e) + { + string message = IsUIContentValid(); + if (string.IsNullOrEmpty(message)) + { + UpdateSettings(); + DialogResult = DialogResult.OK; + Close(); + } + else + { + MessageBox.Show(message); + } + } + + private void cancelButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + } +} diff --git a/ProductionTracing/Forms/SettingsDlg.resx b/ProductionTracing/Forms/SettingsDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/Forms/SettingsDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/Forms/StatisticsDlg.Designer.cs b/ProductionTracing/Forms/StatisticsDlg.Designer.cs new file mode 100644 index 000000000..e3069d432 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsDlg.Designer.cs @@ -0,0 +1,139 @@ +namespace ProductionTracing.Forms +{ + partial class StatisticsDlg + { + /// + /// 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() + { + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.statisticsListView = new System.Windows.Forms.ListView(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.okButton = new System.Windows.Forms.Button(); + this.exportButton = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + this.SuspendLayout(); + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer1.Location = new System.Drawing.Point(0, 0); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.statisticsListView); + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer2); + this.splitContainer1.Size = new System.Drawing.Size(572, 409); + this.splitContainer1.SplitterDistance = 320; + this.splitContainer1.TabIndex = 0; + // + // statisticsListView + // + this.statisticsListView.Dock = System.Windows.Forms.DockStyle.Fill; + this.statisticsListView.GridLines = true; + this.statisticsListView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; + this.statisticsListView.Location = new System.Drawing.Point(0, 0); + this.statisticsListView.Name = "statisticsListView"; + this.statisticsListView.Size = new System.Drawing.Size(572, 320); + this.statisticsListView.TabIndex = 0; + this.statisticsListView.UseCompatibleStateImageBehavior = false; + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.exportButton); + this.splitContainer2.Panel2.Controls.Add(this.okButton); + this.splitContainer2.Size = new System.Drawing.Size(572, 85); + this.splitContainer2.SplitterDistance = 250; + this.splitContainer2.TabIndex = 0; + // + // okButton + // + this.okButton.Location = new System.Drawing.Point(195, 22); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(102, 41); + this.okButton.TabIndex = 0; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // exportButton + // + this.exportButton.Location = new System.Drawing.Point(74, 22); + this.exportButton.Name = "exportButton"; + this.exportButton.Size = new System.Drawing.Size(102, 41); + this.exportButton.TabIndex = 1; + this.exportButton.Text = "Export"; + this.exportButton.UseVisualStyleBackColor = true; + this.exportButton.Click += new System.EventHandler(this.exportButton_Click); + // + // StatisticsDlg + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(572, 409); + this.Controls.Add(this.splitContainer1); + this.Name = "StatisticsDlg"; + this.Text = "StatisticsDlg"; + this.Load += new System.EventHandler(this.StatisticsDlg_Load); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.ListView statisticsListView; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Button exportButton; + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/StatisticsDlg.cs b/ProductionTracing/Forms/StatisticsDlg.cs new file mode 100644 index 000000000..4ddb45050 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsDlg.cs @@ -0,0 +1,232 @@ +/// +/// Copyright (c) 2016-2022 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class StatisticsDlg : Form + { + IList results; + IList items; + + bool twoDim; + int rowItemIx; + int columnItemIx; + bool filterEnabled; + int filteredItemIx; + string filteredValue; + + ItemSpec rowItem; + ItemSpec columnItem; + ItemSpec filteredItem; + + IList rowValues; + IList columnValues; + int[,] occurances; + + public StatisticsDlg(QueryResults results, bool twoDim, int rowItemIx, int columnItemIx, bool filterEnabled, int filteredItemIx, string filteredValue) + { + InitializeComponent(); + + Text = results.Description; + okButton.Text = Strings.OkBtnText; + + this.results = results.Results; + this.items = results.ProjectedItems; + + this.twoDim = twoDim; + this.rowItemIx = rowItemIx; + this.columnItemIx = columnItemIx; + this.filterEnabled = filterEnabled; + this.filteredItemIx = filteredItemIx; + this.filteredValue = filteredValue; + + rowItem = items[rowItemIx].Clone(); + if (twoDim) + { + columnItem = items[columnItemIx].Clone(); + } + if (filterEnabled) + { + filteredItem = items[filteredItemIx].Clone(); + } + + Localize(); + } + + private void StatisticsDlg_Load(object sender, EventArgs e) + { + Calculate(); + } + + void Localize() + { + okButton.Text = Strings.OkBtnText; + exportButton.Text = Strings.Export; + } + + bool Calculate() + { + try + { + rowValues = new List(); + columnValues = new List(); + + /// + /// Find discrete values of rows and columns + /// + foreach (var result in results) + { + if (!filterEnabled || filteredItem.Print(result[filteredItemIx]).Equals(filteredValue)) + { + string value = rowItem.Print(result[rowItemIx]); + if (!rowValues.Contains(value)) rowValues.Add(value); + + if (twoDim) + { + value = columnItem.Print(result[columnItemIx]); + if (!columnValues.Contains(value)) columnValues.Add(value); + } + } + } + + /// + /// Sort discrete values of rows and columns + /// + int dummy; + bool rowValuesAreInts = true; + foreach (var rVal in rowValues) if (!int.TryParse(rVal, out dummy)) { rowValuesAreInts = false; break; } + if (rowValuesAreInts) rowValues = rowValues.OrderBy(x => int.Parse(x)).ToList(); + else rowValues = rowValues.OrderBy(x => x).ToList(); + + if (twoDim) + { + bool colValuesAreInts = true; + foreach (var cVal in columnValues) if (!int.TryParse(cVal, out dummy)) { colValuesAreInts = false; break; } + if (colValuesAreInts) columnValues = columnValues.OrderBy(x => int.Parse(x)).ToList(); + else columnValues = columnValues.OrderBy(x => x).ToList(); + } + + /// + /// Calculate occurances + /// + int columns = Math.Max(1, columnValues.Count); + occurances = new int[rowValues.Count, columns]; + + foreach (var result in results) + { + if (!filterEnabled || filteredItem.Print(result[filteredItemIx]).Equals(filteredValue)) + { + for (int row = 0; row < rowValues.Count; row++) + { + if (twoDim) + { + for (int column = 0; column < columns; column++) + { + if (rowItem.Print(result[rowItemIx]).Equals(rowValues[row]) && columnItem.Print(result[columnItemIx]).Equals(columnValues[column])) + { + occurances[row, column]++; + } + } + } + else + { + if (rowItem.Print(result[rowItemIx]).Equals(rowValues[row])) occurances[row, 0]++; + } + } + } + } + + /// + /// Update ListBox + /// + statisticsListView.View = View.Details; + statisticsListView.GridLines = true; + statisticsListView.FullRowSelect = true; + + statisticsListView.Columns.Add((twoDim ? string.Empty : rowItem.Caption), 200); + for (int column = 0; column < columns; column++) + { + statisticsListView.Columns.Add((twoDim ? columnValues[column] : Strings.Count), 70); + } + + for (int row = 0; row < rowValues.Count; row++) + { + ListViewItem lvi = new ListViewItem(rowValues[row]); + for (int column = 0; column < columns; column++) lvi.SubItems.Add(occurances[row, column].ToString()); + statisticsListView.Items.Add(lvi); + } + + return true; + } + catch (Exception exc) + { + MessageBox.Show(exc.Message, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return false; + } + } + + private void okButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + Close(); + } + + private void exportButton_Click(object sender, EventArgs e) + { + if (rowValues == null || columnValues == null || occurances == null) return; + + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"; + + if (dlg.ShowDialog() == DialogResult.OK) + { + //IList items = currentQR.ProjectedItems; + + try + { + using (TextWriter writer = new StreamWriter(dlg.FileName, false, Encoding.UTF8)) + { + if (twoDim) + { + /// Write column headers + for (int i = 0; i < columnValues.Count; i++) + { + writer.Write(string.Format(";\"{0}\"", columnValues[i])); + } + writer.WriteLine(); + } + else + { + writer.WriteLine(string.Format("\"{0}\";\"{1}\"", rowItem.Caption, Strings.Count)); + } + + int nrColumns = Math.Max(1, columnValues.Count); + + /// Write rows, row header first + for (int j = 0; j < rowValues.Count; j++) + { + writer.Write(string.Format("\"{0}\"", rowValues[j])); + for (int i = 0; i < nrColumns; i++) + { + writer.Write(string.Format(";{0}", occurances[j,i])); + } + writer.WriteLine(); + } + } + } + catch (Exception exc) + { + MessageBox.Show(exc.Message, Strings.Error_exporting_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + } + } +} diff --git a/ProductionTracing/Forms/StatisticsDlg.resx b/ProductionTracing/Forms/StatisticsDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/Forms/StatisticsOptionsDlg.Designer.cs b/ProductionTracing/Forms/StatisticsOptionsDlg.Designer.cs new file mode 100644 index 000000000..a195249b7 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsOptionsDlg.Designer.cs @@ -0,0 +1,194 @@ +namespace ProductionTracing.Forms +{ + partial class StatisticsOptionsDlg + { + /// + /// 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() + { + this.cancelButton = new System.Windows.Forms.Button(); + this.okButton = new System.Windows.Forms.Button(); + this.rowsGroupBox = new System.Windows.Forms.GroupBox(); + this.rowsComboBox = new System.Windows.Forms.ComboBox(); + this.columnsGroupBox = new System.Windows.Forms.GroupBox(); + this.columnsComboBox = new System.Windows.Forms.ComboBox(); + this.twoDimCheckBox = new System.Windows.Forms.CheckBox(); + this.filterCheckBox = new System.Windows.Forms.CheckBox(); + this.filterGroupBox = new System.Windows.Forms.GroupBox(); + this.filteredValueTextBox = new System.Windows.Forms.TextBox(); + this.filteredItemComboBox = new System.Windows.Forms.ComboBox(); + this.rowsGroupBox.SuspendLayout(); + this.columnsGroupBox.SuspendLayout(); + this.filterGroupBox.SuspendLayout(); + this.SuspendLayout(); + // + // cancelButton + // + this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(353, 268); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(95, 38); + this.cancelButton.TabIndex = 9; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // okButton + // + this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.okButton.Location = new System.Drawing.Point(242, 268); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(95, 38); + this.okButton.TabIndex = 8; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // rowsGroupBox + // + this.rowsGroupBox.Controls.Add(this.rowsComboBox); + this.rowsGroupBox.Location = new System.Drawing.Point(30, 35); + this.rowsGroupBox.Name = "rowsGroupBox"; + this.rowsGroupBox.Size = new System.Drawing.Size(250, 56); + this.rowsGroupBox.TabIndex = 10; + this.rowsGroupBox.TabStop = false; + this.rowsGroupBox.Text = "Rows"; + // + // rowsComboBox + // + this.rowsComboBox.FormattingEnabled = true; + this.rowsComboBox.Location = new System.Drawing.Point(32, 21); + this.rowsComboBox.Name = "rowsComboBox"; + this.rowsComboBox.Size = new System.Drawing.Size(185, 21); + this.rowsComboBox.TabIndex = 0; + // + // columnsGroupBox + // + this.columnsGroupBox.Controls.Add(this.columnsComboBox); + this.columnsGroupBox.Location = new System.Drawing.Point(30, 97); + this.columnsGroupBox.Name = "columnsGroupBox"; + this.columnsGroupBox.Size = new System.Drawing.Size(250, 56); + this.columnsGroupBox.TabIndex = 11; + this.columnsGroupBox.TabStop = false; + this.columnsGroupBox.Text = "Columns"; + // + // columnsComboBox + // + this.columnsComboBox.FormattingEnabled = true; + this.columnsComboBox.Location = new System.Drawing.Point(32, 20); + this.columnsComboBox.Name = "columnsComboBox"; + this.columnsComboBox.Size = new System.Drawing.Size(185, 21); + this.columnsComboBox.TabIndex = 1; + // + // twoDimCheckBox + // + this.twoDimCheckBox.AutoSize = true; + this.twoDimCheckBox.Location = new System.Drawing.Point(30, 12); + this.twoDimCheckBox.Name = "twoDimCheckBox"; + this.twoDimCheckBox.Size = new System.Drawing.Size(40, 17); + this.twoDimCheckBox.TabIndex = 12; + this.twoDimCheckBox.Text = "2D"; + this.twoDimCheckBox.UseVisualStyleBackColor = true; + this.twoDimCheckBox.CheckedChanged += new System.EventHandler(this.twoDimCheckBox_CheckedChanged); + // + // filterCheckBox + // + this.filterCheckBox.AutoSize = true; + this.filterCheckBox.Location = new System.Drawing.Point(30, 169); + this.filterCheckBox.Name = "filterCheckBox"; + this.filterCheckBox.Size = new System.Drawing.Size(48, 17); + this.filterCheckBox.TabIndex = 13; + this.filterCheckBox.Text = "Filter"; + this.filterCheckBox.UseVisualStyleBackColor = true; + this.filterCheckBox.CheckedChanged += new System.EventHandler(this.filterCheckBox_CheckedChanged); + // + // filterGroupBox + // + this.filterGroupBox.Controls.Add(this.filteredValueTextBox); + this.filterGroupBox.Controls.Add(this.filteredItemComboBox); + this.filterGroupBox.Location = new System.Drawing.Point(30, 192); + this.filterGroupBox.Name = "filterGroupBox"; + this.filterGroupBox.Size = new System.Drawing.Size(418, 56); + this.filterGroupBox.TabIndex = 14; + this.filterGroupBox.TabStop = false; + this.filterGroupBox.Text = "Rows"; + // + // filteredValueTextBox + // + this.filteredValueTextBox.Location = new System.Drawing.Point(239, 21); + this.filteredValueTextBox.Name = "filteredValueTextBox"; + this.filteredValueTextBox.Size = new System.Drawing.Size(158, 20); + this.filteredValueTextBox.TabIndex = 1; + // + // filteredItemComboBox + // + this.filteredItemComboBox.FormattingEnabled = true; + this.filteredItemComboBox.Location = new System.Drawing.Point(32, 21); + this.filteredItemComboBox.Name = "filteredItemComboBox"; + this.filteredItemComboBox.Size = new System.Drawing.Size(185, 21); + this.filteredItemComboBox.TabIndex = 0; + // + // StatisticsOptionsDlg + // + this.AcceptButton = this.okButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.cancelButton; + this.ClientSize = new System.Drawing.Size(482, 322); + this.Controls.Add(this.filterGroupBox); + this.Controls.Add(this.filterCheckBox); + this.Controls.Add(this.columnsGroupBox); + this.Controls.Add(this.twoDimCheckBox); + this.Controls.Add(this.rowsGroupBox); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.Name = "StatisticsOptionsDlg"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "StatisticsOptionsDlg"; + this.rowsGroupBox.ResumeLayout(false); + this.columnsGroupBox.ResumeLayout(false); + this.filterGroupBox.ResumeLayout(false); + this.filterGroupBox.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.GroupBox rowsGroupBox; + private System.Windows.Forms.ComboBox rowsComboBox; + private System.Windows.Forms.GroupBox columnsGroupBox; + private System.Windows.Forms.ComboBox columnsComboBox; + private System.Windows.Forms.CheckBox twoDimCheckBox; + private System.Windows.Forms.CheckBox filterCheckBox; + private System.Windows.Forms.GroupBox filterGroupBox; + private System.Windows.Forms.TextBox filteredValueTextBox; + private System.Windows.Forms.ComboBox filteredItemComboBox; + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/StatisticsOptionsDlg.cs b/ProductionTracing/Forms/StatisticsOptionsDlg.cs new file mode 100644 index 000000000..cd1102fd0 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsOptionsDlg.cs @@ -0,0 +1,176 @@ +/// +/// Copyright (c) 2016-2022 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class StatisticsOptionsDlg : Form + { + public bool TwoDim; + public int RowItemIx; + public int ColumnItemIx; + public bool FilterEnabled; + public int FilteredItemIx; + public string FilteredValue; + + IList projectedItems; + + public StatisticsOptionsDlg(IList projectedItems) + { + InitializeComponent(); + + Localize(); + + this.projectedItems = projectedItems; + + TwoDim = Program.LocalSettings.TwoDim; + twoDimCheckBox.Checked = TwoDim; + columnsComboBox.Enabled = TwoDim; + + FilterEnabled = Program.LocalSettings.FilterEnabled; + filterCheckBox.Checked = FilterEnabled; + filterGroupBox.Enabled = FilterEnabled; + filteredValueTextBox.Text = Program.LocalSettings.FilteredValue; + + RowItemIx = 0; + rowsComboBox.Text = projectedItems[0].Caption; + /// + ColumnItemIx = 0; + columnsComboBox.Text = projectedItems[0].Caption; + /// + FilteredItemIx = 0; + filteredItemComboBox.Text = projectedItems[0].Caption; + /// + for (int i = 1; i < projectedItems.Count; i++) + { + string columnCaption = projectedItems[i].Caption; + + rowsComboBox.Items.Add(columnCaption); + columnsComboBox.Items.Add(columnCaption); + filteredItemComboBox.Items.Add(columnCaption); + + if (columnCaption == Program.LocalSettings.RowItemID) + { + RowItemIx = i; + rowsComboBox.Text = columnCaption; + } + + if (columnCaption == Program.LocalSettings.ColumnItemID) + { + ColumnItemIx = i; + columnsComboBox.Text = columnCaption; + } + + if (columnCaption == Program.LocalSettings.FilteredItemId) + { + FilteredItemIx = i; + filteredItemComboBox.Text = columnCaption; + } + } + } + + void Localize() + { + Text = Strings.Statistics; + okButton.Text = Strings.OkBtnText; + cancelButton.Text = Strings.Cancel; + rowsGroupBox.Text = Strings.Rows; + columnsGroupBox.Text = Strings.Columns; + } + + private void twoDimCheckBox_CheckedChanged(object sender, EventArgs e) + { + columnsComboBox.Enabled = twoDimCheckBox.Checked; + } + + private void filterCheckBox_CheckedChanged(object sender, EventArgs e) + { + filterGroupBox.Enabled = filterCheckBox.Checked; + } + + private void okButton_Click(object sender, EventArgs e) + { + TwoDim = twoDimCheckBox.Checked; + + RowItemIx = -1; /// -1 = No selection + + for (int i = 0; i < rowsComboBox.Items.Count; i++) + { + if (rowsComboBox.Text.Equals(rowsComboBox.Items[i])) + { + RowItemIx = i + 1; + break; + } + } + + if (TwoDim) + { + ColumnItemIx = -1; /// -1 = No selection + + for (int i = 0; i < columnsComboBox.Items.Count; i++) + { + if (columnsComboBox.Text.Equals(columnsComboBox.Items[i])) + { + ColumnItemIx = i + 1; + break; + } + } + } + else + { + ColumnItemIx = 0; + } + + FilterEnabled = filterCheckBox.Checked; + if (FilterEnabled) + { + FilteredItemIx = -1; /// -1 = No selection + + for (int i = 0; i < filteredItemComboBox.Items.Count; i++) + { + if (filteredItemComboBox.Text.Equals(filteredItemComboBox.Items[i])) + { + FilteredItemIx = i + 1; + break; + } + } + } + else + { + FilteredItemIx = 0; + } + + if (RowItemIx == -1 || ColumnItemIx == -1) + { + MessageBox.Show(Strings.Error, Strings.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + DialogResult = DialogResult.Cancel; + } + + Program.LocalSettings.TwoDim = TwoDim; + Program.LocalSettings.RowItemID = rowsComboBox.Text; + if (TwoDim) + { + Program.LocalSettings.ColumnItemID = columnsComboBox.Text; + } + Program.LocalSettings.FilterEnabled = FilterEnabled; + if (FilterEnabled) + { + Program.LocalSettings.FilteredItemId = filteredItemComboBox.Text; + FilteredValue = filteredValueTextBox.Text; + Program.LocalSettings.FilteredValue = FilteredValue; + } + Program.LocalSettings.Save(); + + DialogResult = DialogResult.OK; + Close(); + } + + private void cancelButton_Click(object sender, EventArgs e) + { + } + } +} diff --git a/ProductionTracing/Forms/StatisticsOptionsDlg.resx b/ProductionTracing/Forms/StatisticsOptionsDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/Forms/StatisticsOptionsDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/Forms/TracingConfigDlg.cs b/ProductionTracing/Forms/TracingConfigDlg.cs new file mode 100644 index 000000000..858a8d35f --- /dev/null +++ b/ProductionTracing/Forms/TracingConfigDlg.cs @@ -0,0 +1,300 @@ +/// +/// Copyright (c) 2016-2022 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using log4net; +using Common.Forms; +using SharedDatabase.Entities; +using ProductionTracing.Resources; + +namespace ProductionTracing.Forms +{ + public partial class TracingConfigDlg : Form + { + /// + /// ListViewEx columns + /// + enum Column + { + Item, + Caption, + Format, + Precision, + Width, + Count, + } + Control[] editors; + + + public IList AvailableItems; + public IList SelectedItems; + + + public bool Compound; /// false = single meter items, true = combined meter items + + public TracingConfigDlg() + { + InitializeComponent(); + } + + void Localize() + { + Text = Strings.Configuration; + availableResultsLabel.Text = Strings.Available_results; + selectedResultsLabel.Text = Strings.Selected_results; + addButton.Text = Strings.Add; + removeButton.Text = Strings.Remove; + removeAllButton.Text = Strings.Remove_all; + okButton.Text = Strings.OkBtnText; + cancelButton.Text = Strings.Cancel; + upButton.Text = Strings.UpBtnText; + downButton.Text = Strings.DownBtnText; + } + + void ResultsConfig_Load(object sender, EventArgs e) + { + Localize(); + + /// Add columns to ListViewEx + selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Item, Width = 120 }); + selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Caption }); + selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Format }); + selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Precision }); + selectedResultsListViewEx.Columns.Add(new ColumnHeader { Text = Strings.Width }); + + editors = new Control[] + { + null, + new TextBox(), + new TextBox(), + new TextBox(), + new TextBox(), + }; + foreach (var edi in editors) + { + if (edi != null) + { + edi.Visible = false; + Controls.Add(edi); + } + } + + selectedResultsListViewEx.SubItemClicked += new SubItemEventHandler(selectedResultsListViewEx_SubItemClicked); + selectedResultsListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(selectedResultsListViewEx_SubItemEndEditing); + + RedrawAvailable(); + RedrawSelected(); + } + + void selectedResultsListViewEx_SubItemClicked(object sender, SubItemEventArgs e) + { + if ((e.SubItem > 0) && (e.SubItem < (int)Column.Count)) + { + selectedResultsListViewEx.StartEditing(editors[e.SubItem], e.Item, e.SubItem); + } + } + + void selectedResultsListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) + { + ListViewItem lvi = e.Item; + ItemSpec item = lvi.Tag as ItemSpec; + + switch ((Column)e.SubItem) + { + case Column.Caption: item.Caption = e.DisplayText; return; + case Column.Format: item.Format = e.DisplayText; return; + case Column.Precision: item.Precision = e.DisplayText; return; + + case Column.Width: + { + int width; + if (Int32.TryParse(editors[e.SubItem].Text, out width) && width >= 0) + { + item.Width = width; + return; /// OK + } + break; /// Error + } + default: + return; /// OK + } + + e.DisplayText = e.Item.SubItems[e.SubItem].Text; + e.Cancel = true; + return; + } + + /// + /// Redraw selected items (right hand side) + /// + void RedrawAvailable() + { + availableResultsListBox.Items.Clear(); + AvailableItems = new List(); + foreach (var item in ItemSpec.AllItems) + { + AvailableItems.Add(item); + availableResultsListBox.Items.Add(item.Name); + } + } + + /// + /// Redraw selected items (right hand side) + /// + void RedrawSelected() + { + selectedResultsListViewEx.Items.Clear(); + foreach (var item in SelectedItems) + { + ListViewItem lvi = new ListViewItem(item.Name); /// Item + lvi.Tag = item; + lvi.SubItems.Add(item.Caption); /// Header + lvi.SubItems.Add(item.Format); /// Format + lvi.SubItems.Add(item.Precision); /// Precision + lvi.SubItems.Add(item.Width.ToString()); /// Width + + selectedResultsListViewEx.Items.Add(lvi); + } + } + + void UpdateSelectedFromView() + { + } + + void availableResultsListBox_DoubleClick(object sender, EventArgs e) + { + /// Double click works when just one item is selected + if (availableResultsListBox.SelectedIndices.Count == 1) + { + var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[0]]; + SelectedItems.Add(oriItem.Clone()); + RedrawAvailable(); + RedrawSelected(); + + /// Select the last item + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true; + selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible(); + } + } + + void addButton_Click(object sender, EventArgs e) + { + /// Append at the end, this code supports multiple selected items, + /// although ListBox control settings may limit the max.number of selected items to one. + + for (int i = availableResultsListBox.SelectedIndices.Count - 1; i >= 0; i--) + { + var oriItem = AvailableItems[availableResultsListBox.SelectedIndices[i]]; + SelectedItems.Add(oriItem.Clone()); + } + RedrawAvailable(); + RedrawSelected(); + + /// Select the last item + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true; + selectedResultsListViewEx.Items[SelectedItems.Count - 1].EnsureVisible(); + } + + private void selectedResultsListBox_DoubleClick(object sender, EventArgs e) + { + /// Double click works when just one item is selected + + if (selectedResultsListViewEx.SelectedIndices.Count == 1) + { + SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[0]); + RedrawAvailable(); + RedrawSelected(); + } + } + + void removeButton_Click(object sender, EventArgs e) + { + /// Remove from the list (the last selected item first so that the indexes are not affected) + + for (int i = selectedResultsListViewEx.SelectedIndices.Count - 1; i >= 0; i--) + { + SelectedItems.RemoveAt(selectedResultsListViewEx.SelectedIndices[i]); + } + RedrawAvailable(); + RedrawSelected(); + } + + void removeAllButton_Click(object sender, EventArgs e) + { + /// Remove all items from 'Selected' list + + SelectedItems.Clear(); + RedrawAvailable(); + RedrawSelected(); + } + + void okButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.OK; + Close(); + } + + private void ResultsConfigDlg_KeyPress(object sender, KeyPressEventArgs e) + { + e.Handled = true; + } + + private void upButton_Click(object sender, EventArgs e) + { + if (selectedResultsListViewEx.SelectedIndices.Count != 1) return; + + int selIdx = selectedResultsListViewEx.SelectedIndices[0]; + if (selIdx == 0) + { + /// Cannot move up + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[0].Selected = true; + return; + } + + ItemSpec tmp = SelectedItems[selIdx - 1]; + SelectedItems[selIdx - 1] = SelectedItems[selIdx]; + SelectedItems[selIdx] = tmp; + + RedrawSelected(); + + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[selIdx - 1].Selected = true; + selectedResultsListViewEx.Items[selIdx - 1].EnsureVisible(); + } + + private void downButton_Click(object sender, EventArgs e) + { + if (selectedResultsListViewEx.SelectedIndices.Count != 1) return; + + int selIdx = selectedResultsListViewEx.SelectedIndices[0]; + if (selIdx == SelectedItems.Count - 1) + { + /// Cannot move down + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[SelectedItems.Count - 1].Selected = true; + return; + } + + ItemSpec tmp = SelectedItems[selIdx + 1]; + SelectedItems[selIdx + 1] = SelectedItems[selIdx]; + SelectedItems[selIdx] = tmp; + + RedrawSelected(); + + selectedResultsListViewEx.Focus(); + selectedResultsListViewEx.Items[selIdx + 1].Selected = true; + selectedResultsListViewEx.Items[selIdx + 1].EnsureVisible(); + } + + private void cancelButton_Click(object sender, EventArgs e) + { + DialogResult = DialogResult.Cancel; + Close(); + } + } +} diff --git a/ProductionTracing/Forms/TracingConfigDlg.designer.cs b/ProductionTracing/Forms/TracingConfigDlg.designer.cs new file mode 100644 index 000000000..fa6cd4fd8 --- /dev/null +++ b/ProductionTracing/Forms/TracingConfigDlg.designer.cs @@ -0,0 +1,201 @@ +/// +/// Copyright (c) 2016-2022 Sensus Slovensko a.s. +/// +namespace ProductionTracing.Forms +{ + partial class TracingConfigDlg + { + /// + /// 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() + { + this.okButton = new System.Windows.Forms.Button(); + this.cancelButton = new System.Windows.Forms.Button(); + this.availableResultsListBox = new System.Windows.Forms.ListBox(); + this.availableResultsLabel = new System.Windows.Forms.Label(); + this.selectedResultsLabel = new System.Windows.Forms.Label(); + this.removeAllButton = new System.Windows.Forms.Button(); + this.removeButton = new System.Windows.Forms.Button(); + this.addButton = new System.Windows.Forms.Button(); + this.selectedResultsListViewEx = new Common.Forms.ListViewEx(); + this.upButton = new System.Windows.Forms.Button(); + this.downButton = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // okButton + // + this.okButton.Location = new System.Drawing.Point(344, 401); + this.okButton.Name = "okButton"; + this.okButton.Size = new System.Drawing.Size(104, 30); + this.okButton.TabIndex = 4; + this.okButton.Text = "OK"; + this.okButton.UseVisualStyleBackColor = true; + this.okButton.Click += new System.EventHandler(this.okButton_Click); + // + // cancelButton + // + this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.cancelButton.Location = new System.Drawing.Point(465, 401); + this.cancelButton.Name = "cancelButton"; + this.cancelButton.Size = new System.Drawing.Size(104, 30); + this.cancelButton.TabIndex = 5; + this.cancelButton.Text = "Cancel"; + this.cancelButton.UseVisualStyleBackColor = true; + this.cancelButton.Click += new System.EventHandler(this.cancelButton_Click); + // + // availableResultsListBox + // + this.availableResultsListBox.FormattingEnabled = true; + this.availableResultsListBox.Location = new System.Drawing.Point(12, 31); + this.availableResultsListBox.Name = "availableResultsListBox"; + this.availableResultsListBox.Size = new System.Drawing.Size(162, 355); + this.availableResultsListBox.TabIndex = 6; + this.availableResultsListBox.DoubleClick += new System.EventHandler(this.availableResultsListBox_DoubleClick); + // + // availableResultsLabel + // + this.availableResultsLabel.AutoSize = true; + this.availableResultsLabel.Location = new System.Drawing.Point(12, 9); + this.availableResultsLabel.Name = "availableResultsLabel"; + this.availableResultsLabel.Size = new System.Drawing.Size(86, 13); + this.availableResultsLabel.TabIndex = 8; + this.availableResultsLabel.Text = "Available results:"; + // + // selectedResultsLabel + // + this.selectedResultsLabel.AutoSize = true; + this.selectedResultsLabel.Location = new System.Drawing.Point(284, 9); + this.selectedResultsLabel.Name = "selectedResultsLabel"; + this.selectedResultsLabel.Size = new System.Drawing.Size(85, 13); + this.selectedResultsLabel.TabIndex = 9; + this.selectedResultsLabel.Text = "Selected results:"; + // + // removeAllButton + // + this.removeAllButton.Location = new System.Drawing.Point(184, 144); + this.removeAllButton.Name = "removeAllButton"; + this.removeAllButton.Size = new System.Drawing.Size(94, 30); + this.removeAllButton.TabIndex = 46; + this.removeAllButton.Text = "<< R&emove all"; + this.removeAllButton.UseVisualStyleBackColor = true; + this.removeAllButton.Click += new System.EventHandler(this.removeAllButton_Click); + // + // removeButton + // + this.removeButton.Location = new System.Drawing.Point(184, 109); + this.removeButton.Name = "removeButton"; + this.removeButton.Size = new System.Drawing.Size(93, 30); + this.removeButton.TabIndex = 45; + this.removeButton.Text = "< &Remove"; + this.removeButton.UseVisualStyleBackColor = true; + this.removeButton.Click += new System.EventHandler(this.removeButton_Click); + // + // addButton + // + this.addButton.Location = new System.Drawing.Point(184, 74); + this.addButton.Name = "addButton"; + this.addButton.Size = new System.Drawing.Size(93, 30); + this.addButton.TabIndex = 44; + this.addButton.Text = "&Add >"; + this.addButton.UseVisualStyleBackColor = true; + this.addButton.Click += new System.EventHandler(this.addButton_Click); + // + // selectedResultsListViewEx + // + this.selectedResultsListViewEx.AllowColumnReorder = true; + this.selectedResultsListViewEx.DoubleClickActivation = false; + this.selectedResultsListViewEx.FullRowSelect = true; + this.selectedResultsListViewEx.Location = new System.Drawing.Point(287, 31); + this.selectedResultsListViewEx.Name = "selectedResultsListViewEx"; + this.selectedResultsListViewEx.Size = new System.Drawing.Size(594, 355); + this.selectedResultsListViewEx.TabIndex = 47; + this.selectedResultsListViewEx.UseCompatibleStateImageBehavior = false; + this.selectedResultsListViewEx.View = System.Windows.Forms.View.Details; + this.selectedResultsListViewEx.SubItemClicked += new Common.Forms.SubItemEventHandler(this.selectedResultsListViewEx_SubItemClicked); + this.selectedResultsListViewEx.SubItemEndEditing += new Common.Forms.SubItemEndEditingEventHandler(this.selectedResultsListViewEx_SubItemEndEditing); + // + // upButton + // + this.upButton.Location = new System.Drawing.Point(184, 236); + this.upButton.Name = "upButton"; + this.upButton.Size = new System.Drawing.Size(93, 30); + this.upButton.TabIndex = 48; + this.upButton.Text = "Up"; + this.upButton.UseVisualStyleBackColor = true; + this.upButton.Click += new System.EventHandler(this.upButton_Click); + // + // downButton + // + this.downButton.Location = new System.Drawing.Point(184, 272); + this.downButton.Name = "downButton"; + this.downButton.Size = new System.Drawing.Size(93, 30); + this.downButton.TabIndex = 49; + this.downButton.Text = "Down"; + this.downButton.UseVisualStyleBackColor = true; + this.downButton.Click += new System.EventHandler(this.downButton_Click); + // + // ResultsConfigDlg + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(893, 445); + this.Controls.Add(this.downButton); + this.Controls.Add(this.upButton); + this.Controls.Add(this.selectedResultsListViewEx); + this.Controls.Add(this.removeAllButton); + this.Controls.Add(this.removeButton); + this.Controls.Add(this.addButton); + this.Controls.Add(this.selectedResultsLabel); + this.Controls.Add(this.availableResultsLabel); + this.Controls.Add(this.availableResultsListBox); + this.Controls.Add(this.cancelButton); + this.Controls.Add(this.okButton); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.Name = "ResultsConfigDlg"; + this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ResultsConfig"; + this.Load += new System.EventHandler(this.ResultsConfig_Load); + this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.ResultsConfigDlg_KeyPress); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button okButton; + private System.Windows.Forms.Button cancelButton; + private System.Windows.Forms.ListBox availableResultsListBox; + private System.Windows.Forms.Label availableResultsLabel; + private System.Windows.Forms.Label selectedResultsLabel; + private System.Windows.Forms.Button removeAllButton; + private System.Windows.Forms.Button removeButton; + private System.Windows.Forms.Button addButton; + private Common.Forms.ListViewEx selectedResultsListViewEx; + private System.Windows.Forms.Button upButton; + private System.Windows.Forms.Button downButton; + } +} \ No newline at end of file diff --git a/ProductionTracing/Forms/TracingConfigDlg.resx b/ProductionTracing/Forms/TracingConfigDlg.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/Forms/TracingConfigDlg.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/ItemSpec.cs b/ProductionTracing/ItemSpec.cs new file mode 100644 index 000000000..290a0e45e --- /dev/null +++ b/ProductionTracing/ItemSpec.cs @@ -0,0 +1,315 @@ +/// +/// Copyright (c) 2016-2021 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using NHibernate; +using NHibernate.Criterion; +using SharedDatabase.Entities; +using ProductionTracing.Resources; + +namespace ProductionTracing +{ + public enum ItemSpecID + { + RefRecordId, + + POrder, + Workflow, + Timestamp, + Name1, + Code1, + Name2, + Code2, + Code3, + Code4, + + PartName, + PartCode, + + Workstep, + Workplace, + UserName, + WstepTstamp, + Result, + } + + public enum ItemCaps + { + None = 0, + RefRecord = 1, + StepRecord = 2, + Record = 4, + } + + public class ItemSpec + { + /// + /// Function delegate to pick a reference record and convert it to a string + /// + public delegate string PrintDlgt(object x, string format, string precision, int width); + + /// + /// Public fields + /// + public readonly ItemSpecID Uid; /// Unique Uid used to distinguish items + public readonly string Name; /// Name that can be localized to identify the item in a list + public readonly PrintDlgt PrintFn; /// Function used to convert the result to a text + + public string Caption; /// User defined text printed in the column header + public string Format; /// Specifies the text generation + public string Precision; /// Specifies the text generation + public int Width; /// Specifies the text generation + + readonly ItemCaps itemSpecCaps; + + /// Public parameterless constructor + public ItemSpec() + { + } + + /// Constructor to specify all items + public ItemSpec(ItemSpecID uid, string name, ItemCaps itemSpecCaps, PrintDlgt printFn) + { + Uid = uid; + Name = name; + PrintFn = printFn; + this.itemSpecCaps = itemSpecCaps; + /// + Caption = name; + Format = "{0}"; + Precision = string.Empty; + Width = 0; + } + + public override string ToString() + { + return string.Format("uid={0}, name={1}, caption={2}", Uid, Name, Caption); + } + + /// Copy constructor + public ItemSpec Clone() + { + ItemSpec newItem = new ItemSpec(Uid, Name, itemSpecCaps, PrintFn); + newItem.Caption = Caption; + newItem.Format = Format; + newItem.Precision = Precision; + newItem.Width = Width; + return newItem; + } + + + /// Safe wrapper which replaces null-s by empty strings + public string Print(object x) + { + string str = PrintFn(x, Format, Precision, Width); + return (str == null) ? string.Empty : str; + } + + + /// Similar to Print(), in addition embeds text into "" + public string Export(object x) + { + string str = PrintFn(x, Format, Precision, Width); + if (str == null) str = string.Empty; + + if (Uid == ItemSpecID.POrder || (Uid >= ItemSpecID.Name1 && Uid == ItemSpecID.PartCode)) + { + return string.Format("=\"{0}\"", str); + } + return str; + } + + + /// Static list of all available items + public static readonly IList AllItems; + + /// + /// Static constructor that initializes the list of all items + /// + static ItemSpec() + { + AllItems = new List(); + + AllItems.Add(new ItemSpec(ItemSpecID.RefRecordId, Strings.RefRecordId, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, ((int)x).ToString()))); + + AllItems.Add(new ItemSpec(ItemSpecID.POrder, Strings.Order, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Workflow, Strings.Workflow, ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Timestamp, Strings.Time_stamp, ItemCaps.RefRecord, (x, f, p, w) => string.IsNullOrEmpty(f) ? ((DateTime)x).ToString() : string.Format(f, (DateTime)x))); + AllItems.Add(new ItemSpec(ItemSpecID.Name1, "Name1", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Code1, "Code1", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Name2, "Name2", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Code2, "Code2", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Code3, "Code3", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + AllItems.Add(new ItemSpec(ItemSpecID.Code4, "Code4", ItemCaps.RefRecord, (x, f, p, w) => FormatStr(f, x))); + + //AllItems.Add(new ItemSpec(ItemSpecID.PartName, Strings.Part_name, ItemCaps.RefRecord | ItemCaps.Record, (x, f, p, w) => FormatStr(f, ((Part)x).Name))); + //AllItems.Add(new ItemSpec(ItemSpecID.PartCode, Strings.Part_barcode, ItemCaps.RefRecord | ItemCaps.Record, (x, f, p, w) => FormatStr(f, x))); + + //AllItems.Add(new ItemSpec(ItemSpecID.Workstep, Strings.Workstep, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x is Workstep ? (x as Workstep).Name : ""))); + //AllItems.Add(new ItemSpec(ItemSpecID.Workplace, Strings.Workplace, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x))); + //AllItems.Add(new ItemSpec(ItemSpecID.UserName, Strings.User_name, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, x))); + //AllItems.Add(new ItemSpec(ItemSpecID.WstepTstamp, Strings.Workstep + " " + Strings.Time_stamp, + // ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => string.IsNullOrEmpty(f) ? ((DateTime)x).ToString() : string.Format(f, (DateTime)x))); + //AllItems.Add(new ItemSpec(ItemSpecID.Result, Strings.Result, ItemCaps.RefRecord | ItemCaps.StepRecord, (x, f, p, w) => FormatStr(f, ((int)x).ToString()))); + } + + + public static string FormatStr(string format, object value) + { + int len; + + if (string.IsNullOrEmpty(format)) + { + return (string)value; + } + else if (int.TryParse(format, out len) && len > 0) + { + if (((string)value).Length >= len) + { + return ((string)value).Substring(0, len); + } + else + { + return (string)value; + } + } + else + { + return string.Format(format, value); + } + } + + public PropertyProjection GetProperty(ReferenceRecord refRecord, StepRecord stepRecord, Record record) + { + switch (Uid) + { + default: + case ItemSpecID.RefRecordId: return Projections.Property(() => refRecord.Id); + case ItemSpecID.POrder: return Projections.Property(() => refRecord.POName); + case ItemSpecID.Workflow: return Projections.Property(() => refRecord.Workflow); + case ItemSpecID.Timestamp: return Projections.Property(() => refRecord.Timestamp); + case ItemSpecID.Name1: return Projections.Property(() => refRecord.Name1); + case ItemSpecID.Code1: return Projections.Property(() => refRecord.Code1); + case ItemSpecID.Name2: return Projections.Property(() => refRecord.Name2); + case ItemSpecID.Code2: return Projections.Property(() => refRecord.Code2); + case ItemSpecID.Code3: return Projections.Property(() => refRecord.Code3); + case ItemSpecID.Code4: return Projections.Property(() => refRecord.Code4); + + case ItemSpecID.PartName: return Projections.Property(() => record.Name); + case ItemSpecID.PartCode: return Projections.Property(() => record.Code); + + case ItemSpecID.Workstep: return Projections.Property(() => stepRecord.Workstep); + case ItemSpecID.Workplace: return Projections.Property(() => stepRecord.Workplace); + case ItemSpecID.UserName: return Projections.Property(() => stepRecord.User); + case ItemSpecID.Result: return Projections.Property(() => stepRecord.Result); + } + } + + public ItemCaps GetCaps() + { + return itemSpecCaps; + } + + + public static ItemSpec GetItem(ItemSpecID id) + { + foreach (var item in AllItems) + if (item.Uid == id) + return item.Clone(); + + return null; + } + + public static ItemSpec GetItem(string uidName) + { + foreach (var item in AllItems) + if (item.Uid.ToString() == uidName) + return item.Clone(); + + return null; + } + + + public static ProjectionList GetProjections(IList items, ReferenceRecord refRecord, StepRecord stepRecord, Record record) + { + ProjectionList projections = Projections.ProjectionList(); + foreach (var item in items) + { + PropertyProjection projection = item.GetProperty(refRecord, stepRecord, record); + if (projection != null) + projections.Add(projection); + } + + return projections; + } + + public static IList Expand(IList data, IList items) + { + if (data.Count == 0) return data; + + int iSize = data[0].Length; + int oSize = items.Count; + for (int i = 0; i < data.Count; i++) + { + object[] inArr = data[i]; + + object[] outArr = new object[oSize]; + int srcIx = 0; + for (int dstIx = 0; dstIx < oSize; dstIx++) + { + outArr[dstIx] = inArr[srcIx++]; + } + + data[i] = outArr; + } + + return data; + } + + public static string[] ToStrArray(IList items) + { + int count = (items != null) ? items.Count : 0; + string[] result = new string[count]; + for (int i = 0; i < count; i++) + { + result[i] = string.Format("{0}~{1}~{2}~{3}~{4}", + items[i].Uid, + items[i].Caption, + items[i].Format, + items[i].Precision, + items[i].Width); + } + return result; + } + + public static IList FromStrArray(string[] strArray) + { + IList result = new List(); + if (strArray != null) + { + for (int i = 0; i < strArray.Length; i++) + { + string[] field = strArray[i].Split(new char[] { '~' }); + try + { + ItemSpec item = GetItem(field[0]); + item.Caption = field[1]; + item.Format = field[2]; + item.Precision = field[3]; + item.Width = int.Parse(field[4]); + + result.Add(item); + } + catch + { + ItemSpec item = GetItem(ItemSpecID.RefRecordId); + item.Format = string.Format("Parse error: {0}", strArray[i]); + result.Add(item); + } + } + } + return result; + } + } +} diff --git a/ProductionTracing/LocalSettings.cs b/ProductionTracing/LocalSettings.cs new file mode 100644 index 000000000..b13db7e71 --- /dev/null +++ b/ProductionTracing/LocalSettings.cs @@ -0,0 +1,265 @@ +/// +/// Copyright (c) 2015-2022 Sensus Slovensko a.s. +/// +using System; +using System.IO; +using System.Security.Cryptography; +using System.Text; +using System.Xml.Serialization; + +namespace ProductionTracing +{ + /// + /// Class to be serialized to an XML file... + /// Public members are local settings. + /// These settings are modified by dialogs invoked by menu items + /// Edit->Preferences ... PreferencesDlg ... S1.1(language, etc. local settings), and + /// Edit->Advanced settings ... AdvancedSettingsDlg ... S1.2(spec. where bench settings are stored) + /// + [XmlRootAttribute("ProductionTracing")] + public class LocalSettings + { + static XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(LocalSettings) })[0]; + + /// Configuration file ecryption/decryption key and initialization vector + static byte[] key = new byte[] { 83, 254, 105, 64, 184, 201, 195, 127, 52, 99, 77, 45, 252, 132, 163, 156 }; + static byte[] IV = new byte[] { 189, 23, 137, 56, 204, 241, 242, 118, 28, 89, 9, 198, 224, 111, 186, 125 }; + + /// + /// User interface language (used as CultureInfo(..) constructor argument). + /// + public string Language; + public bool IsUserLoginRequired; + + /// Database settings of servers. + public string ConnectionString; + public string UsersDBConnString; + + /// Statistics options + public bool TwoDim; + public string RowItemID; /// Caption of the selected row item + public string ColumnItemID; /// Caption of the selected column item (applies when TwoDim == true) + public bool FilterEnabled; + public string FilteredItemId; /// Caption of the item to be filtered + public string FilteredValue; + + /// MainWnd + public int MainWndLeft; + public int MainWndTop; + public int MainWndWidth; + public int MainWndHeight; + public bool MainWndMaximized; + + /// History of texts entered in ComboBoxes + public string[] Combo1History; + public string[] Combo2History; + public string[] Combo4History; + public string[] Combo5History; + public string[] Combo6History; + public string[] Combo7History; + public string[] Combo8History; + public string[] Combo9History; + + /// Last configuration file name + public string LastConfigFileName; + + /// Report file name history + public string LastReportFileName; + public string[] ReportFileNameHistory; + [XmlIgnore] + public int ReportFileNameHistoryCount { get { return (ReportFileNameHistory != null) ? ReportFileNameHistory.Length : 0; } } + + /// Report configuration + public string[] ReportItems; + + /// Parameterless constructor required by serialization + public LocalSettings() { } + + public LocalSettings(bool createNew) + { + if (createNew) + { + Language = "EN"; + IsUserLoginRequired = false; +#if DEBUG + ConnectionString = "SERVER=localhost; DATABASE=nanjingshared; UID=root; PASSWORD=kraken; CHARSET=utf8;"; + UsersDBConnString = "SERVER=localhost; DATABASE=nanjingshared; UID=root; PASSWORD=kraken; CHARSET=utf8;"; +#else + ConnectionString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;"; + UsersDBConnString = "SERVER=10.116.192.200; DATABASE=nanjingshared; UID=nanjingshared; PASSWORD=C1ern4V0d4; CHARSET=utf8;"; +#endif + MainWndLeft = 20; + MainWndTop = 20; + MainWndWidth = 1406; + MainWndHeight = 750; + MainWndMaximized = false; + LastConfigFileName = string.Empty; + } + } + + /// + /// Load public fields of this class from the XML file. + /// + /// LocalSettings object or null when Load() fails + public static LocalSettings Load(string fileName) + { + try + { + bool isEncrypted = true; + using (StreamReader reader = new StreamReader(fileName)) + { + isEncrypted = !reader.ReadLine().StartsWith(" + /// Save public fields of this class to the XML file. + /// + public void Save() + { + try + { + /// Encrypt and write to file 'Program.LocalSettingsFileName' + using (RijndaelManaged aes = new RijndaelManaged { Padding = PaddingMode.Zeros }) + { + using (FileStream fsCrypt = new FileStream(Program.LocalSettingsFileName, FileMode.Create)) + { + using (ICryptoTransform encryptor = aes.CreateEncryptor(key, IV)) + { + using (CryptoStream cs = new CryptoStream(fsCrypt, encryptor, CryptoStreamMode.Write)) + { + using (MemoryStream mStream = new MemoryStream()) + { + using (var writer = new StreamWriter(mStream)) + { + /// Serialize and write settings to a memory stream + serializer.Serialize(writer, this); + writer.Flush(); + mStream.Position = 0; + + using (var reader = new StreamReader(mStream)) + { + /// Encrypt and write to file 'Program.LocalSettingsFileName' + int data; + while ((data = mStream.ReadByte()) != -1) cs.WriteByte((byte)data); + } + } + } + } + } + } + } + } + catch (Exception e) + { + string msg = e.Message; + } + } + + public static void PrepareCombo(System.Windows.Forms.ComboBox comboBox, string[] history) + { + if (history == null) history = new string[0]; + + for (int i = 0; i < history.Length; i++) comboBox.Items.Add(history[i]); + + if (comboBox.Items.Count > 0) comboBox.Text = comboBox.Items[0].ToString(); + } + + /// + /// Updates history stored in a string array by a new latest string. + /// + /// Lste entered string + /// true = updated and saved + public bool UpdateHistory(string lastStrValue, ref string[] history, int maxHistoryLen = 10) + { + if (string.IsNullOrEmpty(lastStrValue)) return false; + + int currentHistoryCount = (history != null) ? history.Length : 0; + + int match = -1; + for (int i = 0; i < currentHistoryCount; i++) + { + if (history[i] == lastStrValue) + { + match = i; + break; + } + } + + if (match >= 0 || currentHistoryCount >= maxHistoryLen) + { + /// History does not have to be (because of a match) or should not be extended (because of the lenght) + if (match < 0) match = currentHistoryCount - 1; + + for (int j = match; j > 0; j--) + { + history[j] = history[j - 1]; + } + history[0] = lastStrValue; + } + else + { + /// History wiil be extended, new item inserted at the beginning + string[] newHistory = new string[currentHistoryCount + 1]; + newHistory[0] = lastStrValue; + for (int j = 1; j <= currentHistoryCount; j++) + { + newHistory[j] = history[j - 1]; + } + history = newHistory; + } + return true; + } + } +} diff --git a/ProductionTracing/ProductionTracing.csproj b/ProductionTracing/ProductionTracing.csproj new file mode 100644 index 000000000..0316348f0 --- /dev/null +++ b/ProductionTracing/ProductionTracing.csproj @@ -0,0 +1,207 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {328AD6D5-6E62-42FB-B348-9899F813DBD3} + WinExe + Properties + ProductionTracing + ProductionTracing + v4.7.2 + + + 512 + + + AnyCPU + true + full + false + bin\Debug\ + TRACE;DEBUG + prompt + 4 + false + false + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + false + + + ProductionTracing.Program + + + + ..\packages\FluentNHibernate.2.0.3.0\lib\net40\FluentNHibernate.dll + True + + + ..\packages\Iesi.Collections.4.0.0.4000\lib\net40\Iesi.Collections.dll + True + + + ..\packages\log4net.2.0.2\lib\net40-full\log4net.dll + + + False + ..\packages\MySql.Data.6.6.5\lib\net40\MySql.Data.dll + + + ..\packages\NHibernate.4.0.4.4000\lib\net40\NHibernate.dll + True + + + + + + + + + + + + + + + Form + + + MoreInfoDlg.cs + + + Form + + + NoBenchOrDatabaseDlg.cs + + + Form + + + SettingsDlg.cs + + + Form + + + StatisticsDlg.cs + + + Form + + + StatisticsOptionsDlg.cs + + + Form + + + TracingConfigDlg.cs + + + + + + + + + True + True + Strings.resx + + + Form + + + ProductionTracingWnd.cs + + + MoreInfoDlg.cs + + + NoBenchOrDatabaseDlg.cs + + + SettingsDlg.cs + + + StatisticsDlg.cs + + + StatisticsOptionsDlg.cs + + + TracingConfigDlg.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + True + + + + + ResXFileCodeGenerator + Strings1.Designer.cs + Designer + + + Designer + + + ProductionTracingWnd.cs + + + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + Always + + + + + {c8939821-ba5c-4988-a3d0-bf53b74865c7} + Common + + + {211b5e3f-9996-48a7-abde-c878dd2d71c2} + SharedDatabase + + + + + \ No newline at end of file diff --git a/ProductionTracing/ProductionTracingWnd.Designer.cs b/ProductionTracing/ProductionTracingWnd.Designer.cs new file mode 100644 index 000000000..526fbcf5e --- /dev/null +++ b/ProductionTracing/ProductionTracingWnd.Designer.cs @@ -0,0 +1,971 @@ +namespace ProductionTracing +{ + partial class ProductionTracingWnd + { + /// + /// 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() + { + this.vSplitContainer = new System.Windows.Forms.SplitContainer(); + this.hSplitContainer = new System.Windows.Forms.SplitContainer(); + this.filtersItemsSplitContainer = new System.Windows.Forms.SplitContainer(); + this.filtersGroupBox = new System.Windows.Forms.GroupBox(); + this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.groupBox1 = new System.Windows.Forms.GroupBox(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.splitContainer2 = new System.Windows.Forms.SplitContainer(); + this.groupBox2 = new System.Windows.Forms.GroupBox(); + this.comboBox2 = new System.Windows.Forms.ComboBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.splitContainer3 = new System.Windows.Forms.SplitContainer(); + this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.last30dButton = new System.Windows.Forms.Button(); + this.last7dButton = new System.Windows.Forms.Button(); + this.yesterdayButton = new System.Windows.Forms.Button(); + this.toLabel = new System.Windows.Forms.Label(); + this.toDateTimePicker = new System.Windows.Forms.DateTimePicker(); + this.fromLabel = new System.Windows.Forms.Label(); + this.fromDateTimePicker = new System.Windows.Forms.DateTimePicker(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); + this.v2SplitContainer = new System.Windows.Forms.SplitContainer(); + this.splitContainer8 = new System.Windows.Forms.SplitContainer(); + this.groupBox8 = new System.Windows.Forms.GroupBox(); + this.comboBox8 = new System.Windows.Forms.ComboBox(); + this.checkBox8 = new System.Windows.Forms.CheckBox(); + this.splitContainer9 = new System.Windows.Forms.SplitContainer(); + this.groupBox9 = new System.Windows.Forms.GroupBox(); + this.comboBox9 = new System.Windows.Forms.ComboBox(); + this.checkBox9 = new System.Windows.Forms.CheckBox(); + this.splitContainer4 = new System.Windows.Forms.SplitContainer(); + this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.comboBox4 = new System.Windows.Forms.ComboBox(); + this.checkBox4 = new System.Windows.Forms.CheckBox(); + this.splitContainer5 = new System.Windows.Forms.SplitContainer(); + this.groupBox5 = new System.Windows.Forms.GroupBox(); + this.comboBox5 = new System.Windows.Forms.ComboBox(); + this.checkBox5 = new System.Windows.Forms.CheckBox(); + this.splitContainer6 = new System.Windows.Forms.SplitContainer(); + this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.comboBox6 = new System.Windows.Forms.ComboBox(); + this.checkBox6 = new System.Windows.Forms.CheckBox(); + this.groupBox7 = new System.Windows.Forms.GroupBox(); + this.comboBox7 = new System.Windows.Forms.ComboBox(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); + this.itemsGroupBox = new System.Windows.Forms.GroupBox(); + this.tabControl = new System.Windows.Forms.TabControl(); + this.statisticsBtn = new System.Windows.Forms.Button(); + this.printQueryResultsBtn = new System.Windows.Forms.Button(); + this.exportQueryResultsBtn = new System.Windows.Forms.Button(); + this.formatOfResultsBtn = new System.Windows.Forms.Button(); + this.settingsBtn = new System.Windows.Forms.Button(); + this.saveConfigBtn = new System.Windows.Forms.Button(); + this.loadConfigBtn = new System.Windows.Forms.Button(); + this.executeQueryBtn = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.vSplitContainer)).BeginInit(); + this.vSplitContainer.Panel1.SuspendLayout(); + this.vSplitContainer.Panel2.SuspendLayout(); + this.vSplitContainer.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.hSplitContainer)).BeginInit(); + this.hSplitContainer.Panel1.SuspendLayout(); + this.hSplitContainer.Panel2.SuspendLayout(); + this.hSplitContainer.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.filtersItemsSplitContainer)).BeginInit(); + this.filtersItemsSplitContainer.Panel1.SuspendLayout(); + this.filtersItemsSplitContainer.Panel2.SuspendLayout(); + this.filtersItemsSplitContainer.SuspendLayout(); + this.filtersGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); + this.splitContainer1.Panel1.SuspendLayout(); + this.splitContainer1.Panel2.SuspendLayout(); + this.splitContainer1.SuspendLayout(); + this.groupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit(); + this.splitContainer2.Panel1.SuspendLayout(); + this.splitContainer2.Panel2.SuspendLayout(); + this.splitContainer2.SuspendLayout(); + this.groupBox2.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).BeginInit(); + this.splitContainer3.Panel1.SuspendLayout(); + this.splitContainer3.Panel2.SuspendLayout(); + this.splitContainer3.SuspendLayout(); + this.groupBox3.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.v2SplitContainer)).BeginInit(); + this.v2SplitContainer.Panel1.SuspendLayout(); + this.v2SplitContainer.Panel2.SuspendLayout(); + this.v2SplitContainer.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer8)).BeginInit(); + this.splitContainer8.Panel1.SuspendLayout(); + this.splitContainer8.Panel2.SuspendLayout(); + this.splitContainer8.SuspendLayout(); + this.groupBox8.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer9)).BeginInit(); + this.splitContainer9.Panel1.SuspendLayout(); + this.splitContainer9.SuspendLayout(); + this.groupBox9.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).BeginInit(); + this.splitContainer4.Panel1.SuspendLayout(); + this.splitContainer4.Panel2.SuspendLayout(); + this.splitContainer4.SuspendLayout(); + this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).BeginInit(); + this.splitContainer5.Panel1.SuspendLayout(); + this.splitContainer5.Panel2.SuspendLayout(); + this.splitContainer5.SuspendLayout(); + this.groupBox5.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer6)).BeginInit(); + this.splitContainer6.Panel1.SuspendLayout(); + this.splitContainer6.Panel2.SuspendLayout(); + this.splitContainer6.SuspendLayout(); + this.groupBox6.SuspendLayout(); + this.groupBox7.SuspendLayout(); + this.SuspendLayout(); + // + // vSplitContainer + // + this.vSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.vSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.vSplitContainer.Location = new System.Drawing.Point(0, 0); + this.vSplitContainer.Name = "vSplitContainer"; + // + // vSplitContainer.Panel1 + // + this.vSplitContainer.Panel1.Controls.Add(this.hSplitContainer); + this.vSplitContainer.Panel1MinSize = 100; + // + // vSplitContainer.Panel2 + // + this.vSplitContainer.Panel2.Controls.Add(this.statisticsBtn); + this.vSplitContainer.Panel2.Controls.Add(this.printQueryResultsBtn); + this.vSplitContainer.Panel2.Controls.Add(this.exportQueryResultsBtn); + this.vSplitContainer.Panel2.Controls.Add(this.formatOfResultsBtn); + this.vSplitContainer.Panel2.Controls.Add(this.settingsBtn); + this.vSplitContainer.Panel2.Controls.Add(this.saveConfigBtn); + this.vSplitContainer.Panel2.Controls.Add(this.loadConfigBtn); + this.vSplitContainer.Panel2.Controls.Add(this.executeQueryBtn); + this.vSplitContainer.Panel2MinSize = 100; + this.vSplitContainer.Size = new System.Drawing.Size(1390, 711); + this.vSplitContainer.SplitterDistance = 1246; + this.vSplitContainer.TabIndex = 0; + // + // hSplitContainer + // + this.hSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.hSplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.hSplitContainer.IsSplitterFixed = true; + this.hSplitContainer.Location = new System.Drawing.Point(0, 0); + this.hSplitContainer.Name = "hSplitContainer"; + this.hSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // hSplitContainer.Panel1 + // + this.hSplitContainer.Panel1.Controls.Add(this.filtersItemsSplitContainer); + // + // hSplitContainer.Panel2 + // + this.hSplitContainer.Panel2.Controls.Add(this.tabControl); + this.hSplitContainer.Size = new System.Drawing.Size(1246, 711); + this.hSplitContainer.SplitterDistance = 285; + this.hSplitContainer.TabIndex = 0; + // + // filtersItemsSplitContainer + // + this.filtersItemsSplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.filtersItemsSplitContainer.Location = new System.Drawing.Point(0, 0); + this.filtersItemsSplitContainer.Name = "filtersItemsSplitContainer"; + // + // filtersItemsSplitContainer.Panel1 + // + this.filtersItemsSplitContainer.Panel1.Controls.Add(this.filtersGroupBox); + // + // filtersItemsSplitContainer.Panel2 + // + this.filtersItemsSplitContainer.Panel2.Controls.Add(this.itemsGroupBox); + this.filtersItemsSplitContainer.Size = new System.Drawing.Size(1246, 285); + this.filtersItemsSplitContainer.SplitterDistance = 623; + this.filtersItemsSplitContainer.TabIndex = 1; + // + // filtersGroupBox + // + this.filtersGroupBox.Controls.Add(this.splitContainer1); + this.filtersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.filtersGroupBox.Location = new System.Drawing.Point(0, 0); + this.filtersGroupBox.Name = "filtersGroupBox"; + this.filtersGroupBox.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.filtersGroupBox.Size = new System.Drawing.Size(623, 285); + this.filtersGroupBox.TabIndex = 0; + this.filtersGroupBox.TabStop = false; + this.filtersGroupBox.Text = "Filters"; + // + // splitContainer1 + // + this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer1.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer1.IsSplitterFixed = true; + this.splitContainer1.Location = new System.Drawing.Point(3, 16); + this.splitContainer1.Name = "splitContainer1"; + this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer1.Panel1 + // + this.splitContainer1.Panel1.Controls.Add(this.splitContainer2); + this.splitContainer1.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No; + // + // splitContainer1.Panel2 + // + this.splitContainer1.Panel2.Controls.Add(this.splitContainer3); + this.splitContainer1.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.splitContainer1.Size = new System.Drawing.Size(617, 266); + this.splitContainer1.SplitterDistance = 41; + this.splitContainer1.TabIndex = 0; + // + // groupBox1 + // + this.groupBox1.Controls.Add(this.comboBox1); + this.groupBox1.Controls.Add(this.checkBox1); + this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox1.Location = new System.Drawing.Point(0, 0); + this.groupBox1.Name = "groupBox1"; + this.groupBox1.Size = new System.Drawing.Size(120, 41); + this.groupBox1.TabIndex = 0; + this.groupBox1.TabStop = false; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(3, 17); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(114, 21); + this.comboBox1.TabIndex = 1; + // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Location = new System.Drawing.Point(3, 0); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(52, 17); + this.checkBox1.TabIndex = 0; + this.checkBox1.Text = "Order"; + this.checkBox1.UseVisualStyleBackColor = true; + this.checkBox1.CheckedChanged += new System.EventHandler(this.checkBox1_CheckedChanged); + // + // splitContainer2 + // + this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer2.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer2.IsSplitterFixed = true; + this.splitContainer2.Location = new System.Drawing.Point(0, 0); + this.splitContainer2.Name = "splitContainer2"; + // + // splitContainer2.Panel1 + // + this.splitContainer2.Panel1.Controls.Add(this.groupBox1); + this.splitContainer2.Panel1.RightToLeft = System.Windows.Forms.RightToLeft.No; + // + // splitContainer2.Panel2 + // + this.splitContainer2.Panel2.Controls.Add(this.groupBox2); + this.splitContainer2.Panel2.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.splitContainer2.Size = new System.Drawing.Size(617, 41); + this.splitContainer2.SplitterDistance = 120; + this.splitContainer2.TabIndex = 0; + // + // groupBox2 + // + this.groupBox2.Controls.Add(this.comboBox2); + this.groupBox2.Controls.Add(this.checkBox2); + this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox2.Location = new System.Drawing.Point(0, 0); + this.groupBox2.Name = "groupBox2"; + this.groupBox2.Size = new System.Drawing.Size(493, 41); + this.groupBox2.TabIndex = 0; + this.groupBox2.TabStop = false; + // + // comboBox2 + // + this.comboBox2.Dock = System.Windows.Forms.DockStyle.Fill; + this.comboBox2.FormattingEnabled = true; + this.comboBox2.Location = new System.Drawing.Point(3, 16); + this.comboBox2.Name = "comboBox2"; + this.comboBox2.Size = new System.Drawing.Size(487, 21); + this.comboBox2.TabIndex = 1; + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Location = new System.Drawing.Point(3, 0); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(71, 17); + this.checkBox2.TabIndex = 0; + this.checkBox2.Text = "Workflow"; + this.checkBox2.UseVisualStyleBackColor = true; + this.checkBox2.CheckedChanged += new System.EventHandler(this.checkBox2_CheckedChanged); + // + // splitContainer3 + // + this.splitContainer3.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer3.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer3.IsSplitterFixed = true; + this.splitContainer3.Location = new System.Drawing.Point(0, 0); + this.splitContainer3.Name = "splitContainer3"; + this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer3.Panel1 + // + this.splitContainer3.Panel1.Controls.Add(this.groupBox3); + // + // splitContainer3.Panel2 + // + this.splitContainer3.Panel2.Controls.Add(this.v2SplitContainer); + this.splitContainer3.Size = new System.Drawing.Size(617, 221); + this.splitContainer3.SplitterDistance = 41; + this.splitContainer3.TabIndex = 0; + // + // groupBox3 + // + this.groupBox3.Controls.Add(this.last30dButton); + this.groupBox3.Controls.Add(this.last7dButton); + this.groupBox3.Controls.Add(this.yesterdayButton); + this.groupBox3.Controls.Add(this.toLabel); + this.groupBox3.Controls.Add(this.toDateTimePicker); + this.groupBox3.Controls.Add(this.fromLabel); + this.groupBox3.Controls.Add(this.fromDateTimePicker); + this.groupBox3.Controls.Add(this.checkBox3); + this.groupBox3.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox3.Location = new System.Drawing.Point(0, 0); + this.groupBox3.Name = "groupBox3"; + this.groupBox3.Size = new System.Drawing.Size(617, 41); + this.groupBox3.TabIndex = 0; + this.groupBox3.TabStop = false; + // + // last30dButton + // + this.last30dButton.Location = new System.Drawing.Point(553, 15); + this.last30dButton.Name = "last30dButton"; + this.last30dButton.Size = new System.Drawing.Size(62, 23); + this.last30dButton.TabIndex = 11; + this.last30dButton.Text = "Last 30 d."; + this.last30dButton.UseVisualStyleBackColor = true; + // + // last7dButton + // + this.last7dButton.Location = new System.Drawing.Point(486, 15); + this.last7dButton.Name = "last7dButton"; + this.last7dButton.Size = new System.Drawing.Size(62, 23); + this.last7dButton.TabIndex = 10; + this.last7dButton.Text = "Last 7 d."; + this.last7dButton.UseVisualStyleBackColor = true; + // + // yesterdayButton + // + this.yesterdayButton.Location = new System.Drawing.Point(419, 15); + this.yesterdayButton.Name = "yesterdayButton"; + this.yesterdayButton.Size = new System.Drawing.Size(62, 23); + this.yesterdayButton.TabIndex = 9; + this.yesterdayButton.Text = "Yesterday"; + this.yesterdayButton.UseVisualStyleBackColor = true; + // + // toLabel + // + this.toLabel.AutoSize = true; + this.toLabel.Location = new System.Drawing.Point(225, 20); + this.toLabel.Name = "toLabel"; + this.toLabel.RightToLeft = System.Windows.Forms.RightToLeft.No; + this.toLabel.Size = new System.Drawing.Size(20, 13); + this.toLabel.TabIndex = 8; + this.toLabel.Text = "To"; + // + // toDateTimePicker + // + this.toDateTimePicker.Location = new System.Drawing.Point(262, 17); + this.toDateTimePicker.Name = "toDateTimePicker"; + this.toDateTimePicker.Size = new System.Drawing.Size(151, 20); + this.toDateTimePicker.TabIndex = 7; + // + // fromLabel + // + this.fromLabel.AutoSize = true; + this.fromLabel.Location = new System.Drawing.Point(23, 20); + this.fromLabel.Name = "fromLabel"; + this.fromLabel.Size = new System.Drawing.Size(30, 13); + this.fromLabel.TabIndex = 6; + this.fromLabel.Text = "From"; + // + // fromDateTimePicker + // + this.fromDateTimePicker.Location = new System.Drawing.Point(59, 17); + this.fromDateTimePicker.Name = "fromDateTimePicker"; + this.fromDateTimePicker.Size = new System.Drawing.Size(151, 20); + this.fromDateTimePicker.TabIndex = 5; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Location = new System.Drawing.Point(3, 0); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(92, 17); + this.checkBox3.TabIndex = 0; + this.checkBox3.Text = "Date and time"; + this.checkBox3.UseVisualStyleBackColor = true; + this.checkBox3.CheckedChanged += new System.EventHandler(this.checkBox3_CheckedChanged); + // + // v2SplitContainer + // + this.v2SplitContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.v2SplitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.v2SplitContainer.IsSplitterFixed = true; + this.v2SplitContainer.Location = new System.Drawing.Point(0, 0); + this.v2SplitContainer.Name = "v2SplitContainer"; + // + // v2SplitContainer.Panel1 + // + this.v2SplitContainer.Panel1.Controls.Add(this.splitContainer8); + // + // v2SplitContainer.Panel2 + // + this.v2SplitContainer.Panel2.Controls.Add(this.splitContainer4); + this.v2SplitContainer.Size = new System.Drawing.Size(617, 176); + this.v2SplitContainer.SplitterDistance = 120; + this.v2SplitContainer.TabIndex = 0; + // + // splitContainer8 + // + this.splitContainer8.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer8.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer8.IsSplitterFixed = true; + this.splitContainer8.Location = new System.Drawing.Point(0, 0); + this.splitContainer8.Name = "splitContainer8"; + this.splitContainer8.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer8.Panel1 + // + this.splitContainer8.Panel1.Controls.Add(this.groupBox8); + // + // splitContainer8.Panel2 + // + this.splitContainer8.Panel2.Controls.Add(this.splitContainer9); + this.splitContainer8.Size = new System.Drawing.Size(120, 176); + this.splitContainer8.SplitterDistance = 41; + this.splitContainer8.TabIndex = 0; + // + // groupBox8 + // + this.groupBox8.Controls.Add(this.comboBox8); + this.groupBox8.Controls.Add(this.checkBox8); + this.groupBox8.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox8.Location = new System.Drawing.Point(0, 0); + this.groupBox8.Name = "groupBox8"; + this.groupBox8.Size = new System.Drawing.Size(120, 41); + this.groupBox8.TabIndex = 0; + this.groupBox8.TabStop = false; + // + // comboBox8 + // + this.comboBox8.FormattingEnabled = true; + this.comboBox8.Location = new System.Drawing.Point(3, 17); + this.comboBox8.Name = "comboBox8"; + this.comboBox8.Size = new System.Drawing.Size(114, 21); + this.comboBox8.TabIndex = 1; + // + // checkBox8 + // + this.checkBox8.AutoSize = true; + this.checkBox8.Location = new System.Drawing.Point(3, 0); + this.checkBox8.Name = "checkBox8"; + this.checkBox8.Size = new System.Drawing.Size(115, 17); + this.checkBox8.TabIndex = 0; + this.checkBox8.Text = "Housing part name"; + this.checkBox8.UseVisualStyleBackColor = true; + this.checkBox8.CheckedChanged += new System.EventHandler(this.checkBox8_CheckedChanged); + // + // splitContainer9 + // + this.splitContainer9.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer9.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer9.IsSplitterFixed = true; + this.splitContainer9.Location = new System.Drawing.Point(0, 0); + this.splitContainer9.Name = "splitContainer9"; + this.splitContainer9.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer9.Panel1 + // + this.splitContainer9.Panel1.Controls.Add(this.groupBox9); + this.splitContainer9.Size = new System.Drawing.Size(120, 131); + this.splitContainer9.SplitterDistance = 41; + this.splitContainer9.TabIndex = 0; + // + // groupBox9 + // + this.groupBox9.Controls.Add(this.comboBox9); + this.groupBox9.Controls.Add(this.checkBox9); + this.groupBox9.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox9.Location = new System.Drawing.Point(0, 0); + this.groupBox9.Name = "groupBox9"; + this.groupBox9.Size = new System.Drawing.Size(120, 41); + this.groupBox9.TabIndex = 0; + this.groupBox9.TabStop = false; + // + // comboBox9 + // + this.comboBox9.FormattingEnabled = true; + this.comboBox9.Location = new System.Drawing.Point(3, 17); + this.comboBox9.Name = "comboBox9"; + this.comboBox9.Size = new System.Drawing.Size(114, 21); + this.comboBox9.TabIndex = 1; + // + // checkBox9 + // + this.checkBox9.AutoSize = true; + this.checkBox9.Location = new System.Drawing.Point(3, 0); + this.checkBox9.Name = "checkBox9"; + this.checkBox9.Size = new System.Drawing.Size(121, 17); + this.checkBox9.TabIndex = 0; + this.checkBox9.Text = "eRegister part name"; + this.checkBox9.UseVisualStyleBackColor = true; + this.checkBox9.CheckedChanged += new System.EventHandler(this.checkBox9_CheckedChanged); + // + // splitContainer4 + // + this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer4.IsSplitterFixed = true; + this.splitContainer4.Location = new System.Drawing.Point(0, 0); + this.splitContainer4.Name = "splitContainer4"; + this.splitContainer4.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer4.Panel1 + // + this.splitContainer4.Panel1.Controls.Add(this.groupBox4); + // + // splitContainer4.Panel2 + // + this.splitContainer4.Panel2.Controls.Add(this.splitContainer5); + this.splitContainer4.Size = new System.Drawing.Size(493, 176); + this.splitContainer4.SplitterDistance = 41; + this.splitContainer4.TabIndex = 0; + // + // groupBox4 + // + this.groupBox4.Controls.Add(this.comboBox4); + this.groupBox4.Controls.Add(this.checkBox4); + this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox4.Location = new System.Drawing.Point(0, 0); + this.groupBox4.Name = "groupBox4"; + this.groupBox4.Size = new System.Drawing.Size(493, 41); + this.groupBox4.TabIndex = 0; + this.groupBox4.TabStop = false; + // + // comboBox4 + // + this.comboBox4.FormattingEnabled = true; + this.comboBox4.Location = new System.Drawing.Point(3, 17); + this.comboBox4.Name = "comboBox4"; + this.comboBox4.Size = new System.Drawing.Size(200, 21); + this.comboBox4.TabIndex = 1; + // + // checkBox4 + // + this.checkBox4.AutoSize = true; + this.checkBox4.Location = new System.Drawing.Point(3, 0); + this.checkBox4.Name = "checkBox4"; + this.checkBox4.Size = new System.Drawing.Size(88, 17); + this.checkBox4.TabIndex = 0; + this.checkBox4.Text = "Housing S/N"; + this.checkBox4.UseVisualStyleBackColor = true; + this.checkBox4.CheckedChanged += new System.EventHandler(this.checkBox4_CheckedChanged); + // + // splitContainer5 + // + this.splitContainer5.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer5.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer5.IsSplitterFixed = true; + this.splitContainer5.Location = new System.Drawing.Point(0, 0); + this.splitContainer5.Name = "splitContainer5"; + this.splitContainer5.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer5.Panel1 + // + this.splitContainer5.Panel1.Controls.Add(this.groupBox5); + // + // splitContainer5.Panel2 + // + this.splitContainer5.Panel2.Controls.Add(this.splitContainer6); + this.splitContainer5.Size = new System.Drawing.Size(493, 131); + this.splitContainer5.SplitterDistance = 41; + this.splitContainer5.TabIndex = 0; + // + // groupBox5 + // + this.groupBox5.Controls.Add(this.comboBox5); + this.groupBox5.Controls.Add(this.checkBox5); + this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox5.Location = new System.Drawing.Point(0, 0); + this.groupBox5.Name = "groupBox5"; + this.groupBox5.Size = new System.Drawing.Size(493, 41); + this.groupBox5.TabIndex = 0; + this.groupBox5.TabStop = false; + // + // comboBox5 + // + this.comboBox5.FormattingEnabled = true; + this.comboBox5.Location = new System.Drawing.Point(3, 17); + this.comboBox5.Name = "comboBox5"; + this.comboBox5.Size = new System.Drawing.Size(200, 21); + this.comboBox5.TabIndex = 2; + // + // checkBox5 + // + this.checkBox5.AutoSize = true; + this.checkBox5.Location = new System.Drawing.Point(3, 0); + this.checkBox5.Name = "checkBox5"; + this.checkBox5.Size = new System.Drawing.Size(109, 17); + this.checkBox5.TabIndex = 0; + this.checkBox5.Text = "eRegister number"; + this.checkBox5.UseVisualStyleBackColor = true; + this.checkBox5.CheckedChanged += new System.EventHandler(this.checkBox5_CheckedChanged); + // + // splitContainer6 + // + this.splitContainer6.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer6.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer6.IsSplitterFixed = true; + this.splitContainer6.Location = new System.Drawing.Point(0, 0); + this.splitContainer6.Name = "splitContainer6"; + this.splitContainer6.Orientation = System.Windows.Forms.Orientation.Horizontal; + // + // splitContainer6.Panel1 + // + this.splitContainer6.Panel1.Controls.Add(this.groupBox6); + // + // splitContainer6.Panel2 + // + this.splitContainer6.Panel2.Controls.Add(this.groupBox7); + this.splitContainer6.Size = new System.Drawing.Size(493, 86); + this.splitContainer6.SplitterDistance = 41; + this.splitContainer6.TabIndex = 0; + // + // groupBox6 + // + this.groupBox6.Controls.Add(this.comboBox6); + this.groupBox6.Controls.Add(this.checkBox6); + this.groupBox6.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox6.Location = new System.Drawing.Point(0, 0); + this.groupBox6.Name = "groupBox6"; + this.groupBox6.Size = new System.Drawing.Size(493, 41); + this.groupBox6.TabIndex = 0; + this.groupBox6.TabStop = false; + // + // comboBox6 + // + this.comboBox6.FormattingEnabled = true; + this.comboBox6.Location = new System.Drawing.Point(3, 17); + this.comboBox6.Name = "comboBox6"; + this.comboBox6.Size = new System.Drawing.Size(200, 21); + this.comboBox6.TabIndex = 2; + // + // checkBox6 + // + this.checkBox6.AutoSize = true; + this.checkBox6.Location = new System.Drawing.Point(3, 0); + this.checkBox6.Name = "checkBox6"; + this.checkBox6.Size = new System.Drawing.Size(90, 17); + this.checkBox6.TabIndex = 0; + this.checkBox6.Text = "Serial number"; + this.checkBox6.UseVisualStyleBackColor = true; + this.checkBox6.CheckedChanged += new System.EventHandler(this.checkBox6_CheckedChanged); + // + // groupBox7 + // + this.groupBox7.Controls.Add(this.comboBox7); + this.groupBox7.Controls.Add(this.checkBox7); + this.groupBox7.Dock = System.Windows.Forms.DockStyle.Fill; + this.groupBox7.Location = new System.Drawing.Point(0, 0); + this.groupBox7.Name = "groupBox7"; + this.groupBox7.Size = new System.Drawing.Size(493, 41); + this.groupBox7.TabIndex = 0; + this.groupBox7.TabStop = false; + // + // comboBox7 + // + this.comboBox7.FormattingEnabled = true; + this.comboBox7.Location = new System.Drawing.Point(3, 17); + this.comboBox7.Name = "comboBox7"; + this.comboBox7.Size = new System.Drawing.Size(200, 21); + this.comboBox7.TabIndex = 2; + // + // checkBox7 + // + this.checkBox7.AutoSize = true; + this.checkBox7.Location = new System.Drawing.Point(3, 0); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(94, 17); + this.checkBox7.TabIndex = 0; + this.checkBox7.Text = "Radio address"; + this.checkBox7.UseVisualStyleBackColor = true; + this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox7_CheckedChanged); + // + // itemsGroupBox + // + this.itemsGroupBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.itemsGroupBox.Location = new System.Drawing.Point(0, 0); + this.itemsGroupBox.Name = "itemsGroupBox"; + this.itemsGroupBox.Size = new System.Drawing.Size(619, 285); + this.itemsGroupBox.TabIndex = 0; + this.itemsGroupBox.TabStop = false; + this.itemsGroupBox.Text = "Items"; + // + // tabControl + // + this.tabControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.tabControl.Location = new System.Drawing.Point(0, 0); + this.tabControl.Name = "tabControl"; + this.tabControl.SelectedIndex = 0; + this.tabControl.Size = new System.Drawing.Size(1246, 422); + this.tabControl.TabIndex = 1; + this.tabControl.SelectedIndexChanged += new System.EventHandler(this.tabControl_SelectedIndexChanged); + // + // statisticsBtn + // + this.statisticsBtn.Location = new System.Drawing.Point(29, 452); + this.statisticsBtn.Name = "statisticsBtn"; + this.statisticsBtn.Size = new System.Drawing.Size(83, 41); + this.statisticsBtn.TabIndex = 11; + this.statisticsBtn.Text = "Statistics"; + this.statisticsBtn.UseVisualStyleBackColor = true; + this.statisticsBtn.Click += new System.EventHandler(this.statisticsBtn_Click); + // + // printQueryResultsBtn + // + this.printQueryResultsBtn.Enabled = false; + this.printQueryResultsBtn.Location = new System.Drawing.Point(8, 396); + this.printQueryResultsBtn.Name = "printQueryResultsBtn"; + this.printQueryResultsBtn.Size = new System.Drawing.Size(125, 28); + this.printQueryResultsBtn.TabIndex = 10; + this.printQueryResultsBtn.Text = "Print query results"; + this.printQueryResultsBtn.UseVisualStyleBackColor = true; + this.printQueryResultsBtn.Click += new System.EventHandler(this.printQueryResultsBtn_Click); + // + // exportQueryResultsBtn + // + this.exportQueryResultsBtn.Location = new System.Drawing.Point(8, 364); + this.exportQueryResultsBtn.Name = "exportQueryResultsBtn"; + this.exportQueryResultsBtn.Size = new System.Drawing.Size(125, 28); + this.exportQueryResultsBtn.TabIndex = 9; + this.exportQueryResultsBtn.Text = "Export query results"; + this.exportQueryResultsBtn.UseVisualStyleBackColor = true; + this.exportQueryResultsBtn.Click += new System.EventHandler(this.exportQueryResultsBtn_Click); + // + // formatOfResultsBtn + // + this.formatOfResultsBtn.Location = new System.Drawing.Point(8, 126); + this.formatOfResultsBtn.Name = "formatOfResultsBtn"; + this.formatOfResultsBtn.Size = new System.Drawing.Size(125, 28); + this.formatOfResultsBtn.TabIndex = 4; + this.formatOfResultsBtn.Text = "Format of results"; + this.formatOfResultsBtn.UseVisualStyleBackColor = true; + this.formatOfResultsBtn.Click += new System.EventHandler(this.formatOfResultsBtn_Click); + // + // settingsBtn + // + this.settingsBtn.Location = new System.Drawing.Point(8, 12); + this.settingsBtn.Name = "settingsBtn"; + this.settingsBtn.Size = new System.Drawing.Size(125, 33); + this.settingsBtn.TabIndex = 0; + this.settingsBtn.Text = "Settings"; + this.settingsBtn.UseVisualStyleBackColor = true; + this.settingsBtn.Click += new System.EventHandler(this.settingsBtn_Click); + // + // saveConfigBtn + // + this.saveConfigBtn.Location = new System.Drawing.Point(8, 157); + this.saveConfigBtn.Name = "saveConfigBtn"; + this.saveConfigBtn.Size = new System.Drawing.Size(125, 28); + this.saveConfigBtn.TabIndex = 5; + this.saveConfigBtn.Text = "Save configuration"; + this.saveConfigBtn.UseVisualStyleBackColor = true; + this.saveConfigBtn.Click += new System.EventHandler(this.saveConfigBtn_Click); + // + // loadConfigBtn + // + this.loadConfigBtn.Location = new System.Drawing.Point(8, 188); + this.loadConfigBtn.Name = "loadConfigBtn"; + this.loadConfigBtn.Size = new System.Drawing.Size(125, 28); + this.loadConfigBtn.TabIndex = 6; + this.loadConfigBtn.Text = "Load configuration"; + this.loadConfigBtn.UseVisualStyleBackColor = true; + this.loadConfigBtn.Click += new System.EventHandler(this.loadConfigBtn_Click); + // + // executeQueryBtn + // + this.executeQueryBtn.Location = new System.Drawing.Point(29, 268); + this.executeQueryBtn.Name = "executeQueryBtn"; + this.executeQueryBtn.Size = new System.Drawing.Size(83, 41); + this.executeQueryBtn.TabIndex = 7; + this.executeQueryBtn.Text = "Execute query"; + this.executeQueryBtn.UseVisualStyleBackColor = true; + this.executeQueryBtn.Click += new System.EventHandler(this.executeQueryBtn_Click); + // + // ProductionTracingWnd + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1390, 711); + this.Controls.Add(this.vSplitContainer); + this.Name = "ProductionTracingWnd"; + this.Text = "Production Tracing"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ProductionTracingWnd_FormClosing); + this.Load += new System.EventHandler(this.ProductionTracingWnd_Load); + this.vSplitContainer.Panel1.ResumeLayout(false); + this.vSplitContainer.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.vSplitContainer)).EndInit(); + this.vSplitContainer.ResumeLayout(false); + this.hSplitContainer.Panel1.ResumeLayout(false); + this.hSplitContainer.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.hSplitContainer)).EndInit(); + this.hSplitContainer.ResumeLayout(false); + this.filtersItemsSplitContainer.Panel1.ResumeLayout(false); + this.filtersItemsSplitContainer.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.filtersItemsSplitContainer)).EndInit(); + this.filtersItemsSplitContainer.ResumeLayout(false); + this.filtersGroupBox.ResumeLayout(false); + this.splitContainer1.Panel1.ResumeLayout(false); + this.splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); + this.splitContainer1.ResumeLayout(false); + this.groupBox1.ResumeLayout(false); + this.groupBox1.PerformLayout(); + this.splitContainer2.Panel1.ResumeLayout(false); + this.splitContainer2.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit(); + this.splitContainer2.ResumeLayout(false); + this.groupBox2.ResumeLayout(false); + this.groupBox2.PerformLayout(); + this.splitContainer3.Panel1.ResumeLayout(false); + this.splitContainer3.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer3)).EndInit(); + this.splitContainer3.ResumeLayout(false); + this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); + this.v2SplitContainer.Panel1.ResumeLayout(false); + this.v2SplitContainer.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.v2SplitContainer)).EndInit(); + this.v2SplitContainer.ResumeLayout(false); + this.splitContainer8.Panel1.ResumeLayout(false); + this.splitContainer8.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer8)).EndInit(); + this.splitContainer8.ResumeLayout(false); + this.groupBox8.ResumeLayout(false); + this.groupBox8.PerformLayout(); + this.splitContainer9.Panel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer9)).EndInit(); + this.splitContainer9.ResumeLayout(false); + this.groupBox9.ResumeLayout(false); + this.groupBox9.PerformLayout(); + this.splitContainer4.Panel1.ResumeLayout(false); + this.splitContainer4.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer4)).EndInit(); + this.splitContainer4.ResumeLayout(false); + this.groupBox4.ResumeLayout(false); + this.groupBox4.PerformLayout(); + this.splitContainer5.Panel1.ResumeLayout(false); + this.splitContainer5.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer5)).EndInit(); + this.splitContainer5.ResumeLayout(false); + this.groupBox5.ResumeLayout(false); + this.groupBox5.PerformLayout(); + this.splitContainer6.Panel1.ResumeLayout(false); + this.splitContainer6.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer6)).EndInit(); + this.splitContainer6.ResumeLayout(false); + this.groupBox6.ResumeLayout(false); + this.groupBox6.PerformLayout(); + this.groupBox7.ResumeLayout(false); + this.groupBox7.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.SplitContainer vSplitContainer; + private System.Windows.Forms.SplitContainer hSplitContainer; + private System.Windows.Forms.Button saveConfigBtn; + private System.Windows.Forms.Button loadConfigBtn; + private System.Windows.Forms.Button executeQueryBtn; + private System.Windows.Forms.Button settingsBtn; + private System.Windows.Forms.GroupBox filtersGroupBox; + private System.Windows.Forms.Button exportQueryResultsBtn; + private System.Windows.Forms.Button formatOfResultsBtn; + private System.Windows.Forms.Button printQueryResultsBtn; + private System.Windows.Forms.Button statisticsBtn; + private System.Windows.Forms.TabControl tabControl; + private System.Windows.Forms.Button wizard2Button; + private System.Windows.Forms.Button wizard3Button; + private System.Windows.Forms.SplitContainer filtersItemsSplitContainer; + private System.Windows.Forms.GroupBox itemsGroupBox; + private System.Windows.Forms.SplitContainer splitContainer1; + private System.Windows.Forms.GroupBox groupBox1; + private System.Windows.Forms.SplitContainer splitContainer2; + private System.Windows.Forms.GroupBox groupBox2; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.ComboBox comboBox1; + private System.Windows.Forms.ComboBox comboBox2; + private System.Windows.Forms.SplitContainer splitContainer3; + private System.Windows.Forms.GroupBox groupBox3; + private System.Windows.Forms.Button last30dButton; + private System.Windows.Forms.Button last7dButton; + private System.Windows.Forms.Button yesterdayButton; + private System.Windows.Forms.Label toLabel; + private System.Windows.Forms.DateTimePicker toDateTimePicker; + private System.Windows.Forms.Label fromLabel; + private System.Windows.Forms.DateTimePicker fromDateTimePicker; + private System.Windows.Forms.CheckBox checkBox3; + private System.Windows.Forms.SplitContainer splitContainer4; + private System.Windows.Forms.GroupBox groupBox4; + private System.Windows.Forms.CheckBox checkBox4; + private System.Windows.Forms.SplitContainer splitContainer5; + private System.Windows.Forms.GroupBox groupBox5; + private System.Windows.Forms.CheckBox checkBox5; + private System.Windows.Forms.SplitContainer splitContainer6; + private System.Windows.Forms.GroupBox groupBox6; + private System.Windows.Forms.CheckBox checkBox6; + private System.Windows.Forms.GroupBox groupBox7; + private System.Windows.Forms.CheckBox checkBox7; + private System.Windows.Forms.ComboBox comboBox4; + private System.Windows.Forms.ComboBox comboBox5; + private System.Windows.Forms.ComboBox comboBox6; + private System.Windows.Forms.ComboBox comboBox7; + private System.Windows.Forms.SplitContainer v2SplitContainer; + private System.Windows.Forms.SplitContainer splitContainer8; + private System.Windows.Forms.GroupBox groupBox8; + private System.Windows.Forms.ComboBox comboBox8; + private System.Windows.Forms.CheckBox checkBox8; + private System.Windows.Forms.SplitContainer splitContainer9; + private System.Windows.Forms.GroupBox groupBox9; + private System.Windows.Forms.ComboBox comboBox9; + private System.Windows.Forms.CheckBox checkBox9; + } +} \ No newline at end of file diff --git a/ProductionTracing/ProductionTracingWnd.cs b/ProductionTracing/ProductionTracingWnd.cs new file mode 100644 index 000000000..566e0cb1d --- /dev/null +++ b/ProductionTracing/ProductionTracingWnd.cs @@ -0,0 +1,640 @@ +/// +/// Copyright (c) 2016-2022 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.Drawing; +using System.IO; +using System.Text; +using System.Threading; +using System.Windows.Forms; +using Common; +using Common.Forms; +using SharedDatabase; +using SharedDatabase.Entities; +using NHibernate; +using NHibernate.Criterion; +using ProductionTracing.Resources; +using System.Globalization; + +namespace ProductionTracing +{ + public partial class ProductionTracingWnd : Form + { + const string OpenFileDlg_SaveFileDlg_Filter = "{0} (*.que)|*.que|{1} (*.*)|*.*"; + + string[] args; + FiltersConfig filtersConfig; /// Serializable configuration of filters and displayed results + QueryResults currentQR; + + GroupBox[] groupBoxes; + CheckBox[] checkBoxes; + ComboBox[] comboBoxes; + + public ProductionTracingWnd(string[] args = null) + { + try + { + string culture = Program.LocalSettings.Language.Replace('_', '-'); + System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(culture); + } + catch (Exception) + { + MessageBox.Show("Selected language is not supported.\nUsing English.", + "Warning", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + System.Threading.Thread.CurrentThread.CurrentUICulture = + new System.Globalization.CultureInfo("en"); + } + + InitializeComponent(); + + /// enum Filter values 0 1 2 3 4 5 6 7 8 + groupBoxes = new GroupBox[] { groupBox1, groupBox2, groupBox3, groupBox4, groupBox5, groupBox6, groupBox7, groupBox8, groupBox9 }; + checkBoxes = new CheckBox[] { checkBox1, checkBox2, checkBox3, checkBox4, checkBox5, checkBox6, checkBox7, checkBox8, checkBox9 }; + comboBoxes = new ComboBox[] { comboBox1, comboBox2, null, comboBox4, comboBox5, comboBox6, comboBox7, comboBox8, comboBox9 }; + + LocalSettings.PrepareCombo(comboBox1, Program.LocalSettings.Combo1History); + LocalSettings.PrepareCombo(comboBox2, Program.LocalSettings.Combo2History); + LocalSettings.PrepareCombo(comboBox4, Program.LocalSettings.Combo4History); + LocalSettings.PrepareCombo(comboBox5, Program.LocalSettings.Combo5History); + LocalSettings.PrepareCombo(comboBox6, Program.LocalSettings.Combo6History); + LocalSettings.PrepareCombo(comboBox7, Program.LocalSettings.Combo7History); + LocalSettings.PrepareCombo(comboBox8, Program.LocalSettings.Combo8History); + LocalSettings.PrepareCombo(comboBox9, Program.LocalSettings.Combo9History); + + for (int i = 0; i < Math.Min(groupBoxes.Length, checkBoxes.Length); i++) + { + ManageCheckGroupBox(checkBoxes[i],groupBoxes[i]); + } + + this.args = args; + + filtersConfig = new FiltersConfig(); + } + + private void ProductionTracingWnd_Load(object sender, EventArgs e) + { + LocalSettings ls = Program.LocalSettings; + + Width = (ls.MainWndWidth > 0) ? ls.MainWndWidth : 1000; + Height = (ls.MainWndHeight > 0) ? ls.MainWndHeight : 750; + Left = (ls.MainWndLeft != 0) ? ls.MainWndLeft : 50; + Top = (ls.MainWndTop != 0) ? ls.MainWndTop : 50; + + Localize(); + + if (args != null && args.Length == 1 && args[0].IndexOf(".que") == args[0].Length - 4) + LoadConfigFromFile(args[0]); + else if (!string.IsNullOrEmpty(Program.LocalSettings.LastConfigFileName)) + LoadConfigFromFile(Program.LocalSettings.LastConfigFileName); + else + Text = string.Format("{0} ver.{1}", Strings.Production_Tracing, Program.Version); + } + + /// + /// Localize strings + /// + void Localize() + { + filtersGroupBox.Text = Strings.Filters; + itemsGroupBox.Text = Strings.Items; + settingsBtn.Text = Strings.Settings; + loadConfigBtn.Text = Strings.Load_configuration; + saveConfigBtn.Text = Strings.Save_configuration; + executeQueryBtn.Text = Strings.Execute_query; + formatOfResultsBtn.Text = Strings.Format_of_results; + exportQueryResultsBtn.Text = Strings.Export_query_results; + printQueryResultsBtn.Text = Strings.Print_query_results; + statisticsBtn.Text = Strings.Statistics; + } + + /// + /// Open 'Settings' dialog and update UI + /// + private void settingsBtn_Click(object sender, EventArgs e) + { + if (new Forms.SettingsDlg(Program.LocalSettings).ShowDialog() == DialogResult.OK) + { + /// TODO (connection string might have changed) + } + } + + /// + /// Load configuration from a file + /// + private void loadConfigBtn_Click(object sender, EventArgs e) + { + OpenFileDialog dlg = new OpenFileDialog(); + dlg.Filter = string.Format(OpenFileDlg_SaveFileDlg_Filter, Strings.Query_files, Strings.All_files); + if (dlg.ShowDialog() == DialogResult.OK) + { + LoadConfigFromFile(dlg.FileName); + } + } + + /// + /// Load configuration from a file and apply it + /// + /// Configuration file name + void LoadConfigFromFile(string fileName) + { + FiltersConfig localFiltersConfig = FiltersConfig.Load(fileName); + if (localFiltersConfig != null) + { + filtersConfig = localFiltersConfig; + + /// TODO + } + + Program.LocalSettings.LastConfigFileName = fileName; + Program.LocalSettings.Save(); + Text = string.Format("{0} ver.{1} ({2})", Strings.Production_Tracing, Program.Version, Program.LocalSettings.LastConfigFileName); + } + + private void saveConfigBtn_Click(object sender, EventArgs e) + { + /// Save the file + SaveFileDialog dlg = new SaveFileDialog(); + if (!string.IsNullOrEmpty(Program.LocalSettings.LastConfigFileName)) + { + dlg.FileName = Program.LocalSettings.LastConfigFileName; + } + dlg.Filter = string.Format(OpenFileDlg_SaveFileDlg_Filter, Strings.Query_files, Strings.All_files); + + if (dlg.ShowDialog() == DialogResult.OK) + { + filtersConfig.Save(dlg.FileName); + + Program.LocalSettings.LastConfigFileName = dlg.FileName; + Program.LocalSettings.Save(); + Text = string.Format("{0} ver.{1} ({2})", Strings.Production_Tracing, Program.Version, Program.LocalSettings.LastConfigFileName); + } + } + + void UpdateAndSaveHistory() + { + LocalSettings ls = Program.LocalSettings; + + if (checkBox1.Checked) ls.UpdateHistory(comboBox1.Text, ref ls.Combo1History); + if (checkBox2.Checked) ls.UpdateHistory(comboBox2.Text, ref ls.Combo2History); + if (checkBox4.Checked) ls.UpdateHistory(comboBox4.Text, ref ls.Combo4History); + if (checkBox5.Checked) ls.UpdateHistory(comboBox5.Text, ref ls.Combo5History); + if (checkBox6.Checked) ls.UpdateHistory(comboBox6.Text, ref ls.Combo6History); + if (checkBox7.Checked) ls.UpdateHistory(comboBox7.Text, ref ls.Combo7History); + if (checkBox8.Checked) ls.UpdateHistory(comboBox8.Text, ref ls.Combo8History); + if (checkBox9.Checked) ls.UpdateHistory(comboBox9.Text, ref ls.Combo9History); + + ls.Save(); + } + + private void executeQueryBtn_Click(object sender, EventArgs e) + { + UpdateAndSaveHistory(); + + Thread thread = new Thread(() => Application.Run(new Common.Forms.ModelessForm(Strings.searching))); + thread.CurrentCulture = CultureInfo.CurrentCulture; + thread.CurrentUICulture = CultureInfo.CurrentUICulture; + thread.Start(); + + string currentConnStr = Program.LocalSettings.ConnectionString; + string[] elems = currentConnStr.Split(new char[] { '=', ';' }); + string description = string.Format("{1}/{2}", tabControl.TabPages.Count + 1, (elems.Length > 1 ? elems[1] : "-"), (elems.Length > 3 ? elems[3] : "-")); + + currentQR = new QueryResults(currentConnStr, description); + ISession session = null; + + try + { + /// Load query result items + IList items = ItemSpec.FromStrArray(filtersConfig.ResultItems); + items.Insert(0, new ItemSpec(ItemSpecID.RefRecordId, Strings.RefRecordId, ItemCaps.RefRecord, (x, f, p, w) => ((int)x).ToString())); + + /// New database session + using (session = TracingDB.CreateSession(currentConnStr)) + { + currentQR.Results = DoOneQuery(session, items); + currentQR.ProjectedItems = items; + session.Close(); + } + } + catch (Exception exc) + { + if (session != null && session.IsOpen) session.Close(); + Common.Forms.ModelessForm.CloseForm(); + MessageBox.Show(exc.Message, + Strings.Error, + MessageBoxButtons.OK, + MessageBoxIcon.Exclamation); + return; + } + + currentQR.EndTime = DateTime.Now; + TabPage newTabPage = CreateTabPage(currentQR); + tabControl.TabPages.Add(newTabPage); + tabControl.SelectTab(newTabPage); + + Common.Forms.ModelessForm.CloseForm(); + } + + /// + /// Execute a chain of all filters once (without a loop) + /// + /// Result items + IList DoOneQuery(ISession session, IList items) + { + ReferenceRecord refRecord = null; + IQueryOver query = session.QueryOver(() => refRecord); + + int ix; + ix = (int)Idx.Code1; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code1 == comboBoxes[ix].Text); + ix = (int)Idx.Code2; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code2 == comboBoxes[ix].Text); + ix = (int)Idx.Code3; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code3 == comboBoxes[ix].Text); + ix = (int)Idx.Code4; if (checkBoxes[ix].Checked) query = query.Where(x => x.Code4 == comboBoxes[ix].Text); + ix = (int)Idx.Order; if (checkBoxes[ix].Checked) query = query.Where(x => x.POName == comboBoxes[ix].Text); + ix = (int)Idx.Name1; if (checkBoxes[ix].Checked) query = query.Where(x => x.Name1 == comboBoxes[ix].Text); + ix = (int)Idx.Name2; if (checkBoxes[ix].Checked) query = query.Where(x => x.Name2 == comboBoxes[ix].Text); + ix = (int)Idx.Workflow; if (checkBoxes[ix].Checked) query = query.Where(x => x.Workflow == comboBoxes[ix].Text); + ix = (int)Idx.DateTime; if (checkBoxes[ix].Checked) + { + DateTime from; + DateTime to; + GetDateRange(Selection.Other, fromDateTimePicker.Value.Date, + toDateTimePicker.Value.Date.AddDays(1).AddTicks(-1), out from, out to); + query = query.WhereRestrictionOn(rr => rr.Timestamp).IsBetween(from).And(to); + } + + Record record = null; + StepRecord stepRecord = null; + ProjectionList projections = ItemSpec.GetProjections(items, refRecord, stepRecord, record); + + IList result = query.Select(projections).List(); + + return result; + } + + /// + /// Create a new Tab page with and fill it with query results + /// + /// Query results + /// A new tab page + TabPage CreateTabPage(QueryResults results) + { + /// + /// Prepare a new list view control with query results + /// + Common.Forms.ListViewEx listView = new Common.Forms.ListViewEx(); + listView.Dock = System.Windows.Forms.DockStyle.Fill; + listView.FullRowSelect = true; + listView.GridLines = true; + listView.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Clickable; + listView.Location = new System.Drawing.Point(3, 16); + listView.Name = results.Description; + listView.Size = new System.Drawing.Size(411, 144); + listView.TabIndex = 0; + listView.UseCompatibleStateImageBehavior = false; + listView.View = System.Windows.Forms.View.Details; + listView.DoubleClick += new System.EventHandler(listView_DoubleClick); + listView.ColumnClick += new ColumnClickEventHandler(listView_ColumnClick); + RedrawResults(results, listView); + + /// + /// Create a new tab page and add the just created list view control into it + /// + TabPage newTabPage = new TabPage(string.Format("{0} ({1})", results.Description, results.Results.Count)); + newTabPage.Controls.Add(listView); + newTabPage.Tag = results; + + return newTabPage; + } + + + private void formatOfResultsBtn_Click(object sender, EventArgs e) + { + Forms.TracingConfigDlg dlg = new Forms.TracingConfigDlg(); + dlg.Compound = false; + dlg.SelectedItems = ItemSpec.FromStrArray(filtersConfig.ResultItems); + dlg.AvailableItems = new List(); + foreach (var v in ItemSpec.AllItems) dlg.AvailableItems.Add(v); + + if (dlg.ShowDialog() == DialogResult.OK) + { + filtersConfig.ResultItems = ItemSpec.ToStrArray(dlg.SelectedItems); + } + } + + + /// + /// Displays obtained results as configured by result items in the ListView + /// + void RedrawResults(QueryResults results, ListView listView) + { + IList items = results.ProjectedItems; + + listView.Clear(); + if (results == null || results.Results == null || results.Results.Count == 0 || items == null || items.Count == 0) return; + + try + { + if (items.Count >= 2) + { + /// 1st item (=item[0]) is ref. record ID and it is not displayed, it is copied to lvi.tag + for (int i = 1; i < items.Count; i++) + { + listView.Columns.Add(items[i].Caption, (filtersConfig.ResultsClmnCount > i) ? filtersConfig.ResultsClmnWidths[i] : 70); + } + foreach (var resItems in results.Results) + { + ListViewItem lvi = new ListViewItem(items[1].Print(resItems[1])); + for (int i = 2; i < items.Count; i++) lvi.SubItems.Add(items[i].Print(resItems[i])); + lvi.Tag = resItems[0]; + listView.Items.Add(lvi); + + } + } + } + catch (Exception exc) + { + MessageBox.Show(exc.Message, Strings.Error_displaying_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + + + private void exportQueryResultsBtn_Click(object sender, EventArgs e) + { + if (currentQR == null || currentQR.Results == null || currentQR.Results.Count == 0 + || currentQR.ProjectedItems == null || currentQR.ProjectedItems.Count == 0) + { + return; + } + + SaveFileDialog dlg = new SaveFileDialog(); + dlg.Filter = "CSV files (*.csv)|*.csv|All files (*.*)|*.*"; + + if (dlg.ShowDialog() == DialogResult.OK) + { + IList items = currentQR.ProjectedItems; + + try + { + using (TextWriter writer = new StreamWriter(dlg.FileName, false, Encoding.UTF8)) + { + for (int i = 1; i < items.Count; i++) + { + writer.Write(items[i].Caption); + + if (i == items.Count - 1) + writer.WriteLine(); + else + writer.Write(";"); + } + foreach (var resItems in currentQR.Results) + { + for (int i = 1; i < items.Count; i++) + { + writer.Write(items[i].Export(resItems[i])); + + if (i == items.Count - 1) + writer.WriteLine(); + else + writer.Write(";"); + } + } + } + } + catch (Exception exc) + { + MessageBox.Show(exc.Message, Strings.Error_exporting_results, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + } + } + } + + + private void printQueryResultsBtn_Click(object sender, EventArgs e) + { +// if (referenceRecords == null || referenceRecords.Count == 0) return; + + /// TODO: Reimplement + //foreach (var wm in referenceRecords) + //{ + // new Results.Output.Printers.Munich.MunichPrintDocument("", wm, Config.Entities.PageOrientation.Portrait).Print(); + //} + } + + private void statisticsBtn_Click(object sender, EventArgs e) + { + if (currentQR == null || currentQR.Results == null || currentQR.Results.Count == 0 + || currentQR.ProjectedItems == null || currentQR.ProjectedItems.Count == 0) + { + MessageBox.Show("Žiadne výsledky vyhľadávania", "Chyba", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); + return; + } + + /// + /// Enter options + /// + Forms.StatisticsOptionsDlg dlg = new Forms.StatisticsOptionsDlg(currentQR.ProjectedItems); + if (dlg.ShowDialog() != DialogResult.OK) return; + + /// + /// Calculate statistics + /// + Forms.StatisticsDlg statisticsDlg = new Forms.StatisticsDlg(currentQR, dlg.TwoDim, dlg.RowItemIx, dlg.ColumnItemIx, dlg.FilterEnabled, dlg.FilteredItemIx, dlg.FilteredValue); + statisticsDlg.Show(); + } + + + private void ProductionTracingWnd_FormClosing(object sender, FormClosingEventArgs e) + { + LocalSettings ls = Program.LocalSettings; + + ls.MainWndMaximized = (WindowState == FormWindowState.Maximized); + if (WindowState == FormWindowState.Normal) + { + ls.MainWndLeft = Location.X; + ls.MainWndTop = Location.Y; + ls.MainWndWidth = Size.Width; + ls.MainWndHeight = Size.Height; + } + else + { + /// Maximized or minimized (when restarted, minimized window is restored as normal) + ls.MainWndLeft = RestoreBounds.Left; + ls.MainWndTop = RestoreBounds.Top; + ls.MainWndWidth = RestoreBounds.Width; + ls.MainWndHeight = RestoreBounds.Height; + } + + ls.Save(); + } + + + private void tabControl_SelectedIndexChanged(object sender, EventArgs e) + { + currentQR = tabControl.SelectedTab.Tag as QueryResults; + } + + + private void listView_DoubleClick(object sender, EventArgs e) + { + ListView resultsListView = sender as ListView; + + /// Double click works when just one item is selected + if (resultsListView != null && resultsListView.SelectedIndices.Count == 1) + { + int ix = resultsListView.SelectedIndices[0]; + int refRecordID = (int)resultsListView.Items[ix].Tag; + if (refRecordID == 0) return; + + using (ISession session = TracingDB.CreateSession(Program.LocalSettings.ConnectionString)) + { + new Forms.MoreInfoDlg(refRecordID, session).ShowDialog(); + session.Close(); + } + } + } + + private void listView_ColumnClick(object sender, ColumnClickEventArgs e) + { + Common.Forms.ListViewEx listViewEx = sender as Common.Forms.ListViewEx; + if (listViewEx == null) return; + + if (e.Column == listViewEx.SortColumn) + { + listViewEx.SortOrder = (listViewEx.SortOrder == MySortOrder.Ascending) ? MySortOrder.Descending : MySortOrder.Ascending; + } + else + { + /// Clicked on another column header => set sortOrder to SortOrder.Ascending + listViewEx.SortColumn = e.Column; + listViewEx.SortOrder = MySortOrder.Ascending; + } + + listViewEx.ListViewItemSorter = new LviTextColumnComparer(listViewEx.SortColumn, listViewEx.SortOrder); + + ListViewExtensions.SetSortIcon(listViewEx, listViewEx.SortColumn, listViewEx.SortOrder); + listViewEx.Sort(); + } + + void GetDateRange(Selection selection, DateTime uiFrom, DateTime uiTo, out DateTime from, out DateTime to) + { + DateTime now = DateTime.Now.Date; + + if (selection == Selection.Today) + { + from = now.Date; + to = from.AddDays(1).AddTicks(-1); + } + else if (selection == Selection.Yesterday) + { + from = now.Date.AddDays(-1); + to = from.AddDays(1).AddTicks(-1); + } + else if (selection == Selection.ThisWeek) + { + from = now.Date.AddDays(-GetDayOfWeek0(now)); + to = from.AddDays(7).AddTicks(-1); + } + else if (selection == Selection.LastWeek) + { + from = now.Date.AddDays(-GetDayOfWeek0(now) - 7); + to = from.AddDays(7).AddTicks(-1); + } + else if (selection == Selection.ThisMonth) + { + from = now.Date.AddDays(1 - now.Day); + to = now.Date.AddDays(1).AddTicks(-1); + } + else if (selection == Selection.LastMonth) + { + int daysLastMonth = (now.Month > 1) ? DateTime.DaysInMonth(now.Year, now.Month - 1) + : DateTime.DaysInMonth(now.Year - 1, 12); + from = now.Date.AddDays(1 - now.Day - daysLastMonth); + to = from.AddDays(daysLastMonth).AddTicks(-1); + } + else if (selection == Selection.ThisYear) + { + from = new DateTime(now.Year, 1, 1); + to = now.Date.AddDays(1).AddTicks(-1); + } + else if (selection == Selection.LastYear) + { + from = new DateTime(now.Year - 1, 1, 1); + to = new DateTime(now.Year, 1, 1).AddTicks(-1); + } + else /// Values for Selection.Other + { + from = uiFrom; + to = uiTo; + } + + //int Offset = 0; + //from = from.AddHours(Offset); + //to = to.AddHours(Offset); + } + + int GetDayOfWeek0(DateTime dateTime) + { + switch (dateTime.DayOfWeek) + { + default: + case DayOfWeek.Monday: return 0; + case DayOfWeek.Tuesday: return 1; + case DayOfWeek.Wednesday: return 2; + case DayOfWeek.Thursday: return 3; + case DayOfWeek.Friday: return 4; + case DayOfWeek.Saturday: return 5; + case DayOfWeek.Sunday: return 6; + } + } + + private void checkBox1_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox1, groupBox1); } + private void checkBox2_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox2, groupBox2); } + private void checkBox3_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox3, groupBox3); } + private void checkBox4_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox4, groupBox4); } + private void checkBox5_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox5, groupBox5); } + private void checkBox6_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox6, groupBox6); } + private void checkBox7_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox7, groupBox7); } + private void checkBox8_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox8, groupBox8); } + private void checkBox9_CheckedChanged(object sender, EventArgs e) { ManageCheckGroupBox(checkBox9, groupBox9); } + + private void ManageCheckGroupBox(CheckBox chk, GroupBox grp) + { + /// Make sure the CheckBox isn't in the GroupBox. This will only happen the first time. + if (chk.Parent == grp) + { + grp.Parent.Controls.Add(chk); /// Reparent the CheckBox so it's not in the GroupBox. + chk.Location = new Point(chk.Left + grp.Left, chk.Top + grp.Top); /// Adjust the CheckBox's location. + chk.BringToFront(); /// Move the CheckBox to the top of the stacking order. + } + + /// Enable or disable the GroupBox. + grp.Enabled = chk.Checked; + } + } + + enum Idx + { + Order, /// 0 = checkBox1, comboBox1 + Workflow, /// 1 = checkBox2, comboBox2 + DateTime, /// 2 = checkBox3 + Code1, /// 3 = checkBox4, comboBox4 + Code2, /// 4 = checkBox5, comboBox5 + Code3, /// 5 = checkBox6, comboBox6 + Code4, /// 6 = checkBox7, comboBox7 + Name1, /// 7 = checkBox8, comboBox8 + Name2, /// 8 = checkBox9, comboBox9 + } + + enum Selection + { + Today, + Yesterday, + ThisWeek, + LastWeek, + ThisMonth, + LastMonth, + ThisYear, + LastYear, + Other, + } +} diff --git a/ProductionTracing/ProductionTracingWnd.resx b/ProductionTracing/ProductionTracingWnd.resx new file mode 100644 index 000000000..1af7de150 --- /dev/null +++ b/ProductionTracing/ProductionTracingWnd.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProductionTracing/Program.cs b/ProductionTracing/Program.cs new file mode 100644 index 000000000..51a04b3c8 --- /dev/null +++ b/ProductionTracing/Program.cs @@ -0,0 +1,255 @@ +/// +/// Copyright (c) 2021 Sensus Slovensko a.s. +/// +using System; +using System.Collections.Generic; +using System.IO; +using System.Reflection; +using System.Windows.Forms; +using log4net; +using NHibernate; +using Common; +using SharedDatabase; +using SharedDatabase.Entities; +using ProductionTracing.Resources; + +namespace ProductionTracing +{ + static class Program + { + /// Constants + public static GID[] SettingsAccessLevel = new GID[] { GID.TraceabilityManagement }; /// Group membership to access settings + public const string ProgramName = "Production Tracing"; + public const string ConfigFName = "config.xml"; + public const string BackupConfigFName = "config.backup.xml"; + public const string Log4NetConfigFName = "log4netConfig.xml"; + + /// Program information + public static readonly string Version; /// version string + public static readonly DateTime BuildDateTime; /// date and time of program build + public static readonly string ExeDirectory; + public static readonly string ConfigDirectory; + public static readonly string LogDirectory; + public static readonly string LocalSettingsFileName; + public static readonly string LocalSettingsBackupName; + + /// Local settings + public static LocalSettings LocalSettings; + + /// log4net + static ILog log; + + + static Program() + { + /// Program version string + Assembly thisAssembly = Assembly.GetExecutingAssembly(); + Version ver = thisAssembly.GetName().Version; + Version = string.Format("{0}.{1}.{2}", ver.Major, ver.Minor, ver.Build); + BuildDateTime = new FileInfo(thisAssembly.Location).LastWriteTime; + + /// Local program configuration directory including the trailing backslash + ExeDirectory = Path.GetDirectoryName(thisAssembly.Location); + ConfigDirectory = Path.Combine(ExeDirectory, "..\\Cfg"); + LogDirectory = Path.Combine(ExeDirectory, "..", "Logs"); + LocalSettingsFileName = Path.Combine(ConfigDirectory, ConfigFName); + LocalSettingsBackupName = Path.Combine(ConfigDirectory, BackupConfigFName); + } + + + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + /// + /// Check if another instance is running + /// + Assembly thisAssembly = Assembly.GetExecutingAssembly(); + string processName = Path.GetFileNameWithoutExtension(thisAssembly.Location); + if (System.Diagnostics.Process.GetProcessesByName(processName).Length > 1) + { + MessageBox.Show(string.Format("{0}{1}{2}", string.Format(Strings.Program_0_is_running_already, ProgramName), + Environment.NewLine, + Strings.Close_it_please), + Strings.Error, + MessageBoxButtons.OK, + MessageBoxIcon.Asterisk); + return; + } + + AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyHandler); + + bool configDirectoryCreated = false; + if (!Directory.Exists(ConfigDirectory) || new DirectoryInfo(ConfigDirectory).GetFileSystemInfos().Length == 0) + { + MessageBox.Show(string.Format("{0}{1}{2}", Strings.Program_is_running_for_the_1st_time_on_this_PC, + Environment.NewLine, + Strings.Default_settings_are_used), + Strings.Warning, + MessageBoxButtons.OK, + MessageBoxIcon.Exclamation); + /// + /// Create a new config subdirectory + /// + Directory.CreateDirectory(ConfigDirectory); + configDirectoryCreated = true; + + Program.LocalSettings = new LocalSettings(true); + Program.LocalSettings.Save(); + + if (File.Exists(Path.Combine(ExeDirectory, "SampleConfig", Log4NetConfigFName))) + { + File.Copy(Path.Combine(ExeDirectory, "SampleConfig", Log4NetConfigFName), + Path.Combine(ConfigDirectory, Log4NetConfigFName)); + } + + File.SetAttributes(Path.Combine(ConfigDirectory, Log4NetConfigFName), FileAttributes.Normal); + } + + /// + /// Configue and start logging + /// + log4net.Config.XmlConfigurator.Configure(new FileInfo(Path.Combine(ConfigDirectory, Log4NetConfigFName))); + log = LogManager.GetLogger(typeof(Program)); + log.Fatal("--------------------------------------------------------------------------------"); + log.FatalFormat("{0} ver.{1}", ProgramName, Version); + log.FatalFormat("Executable directory is {0}", ExeDirectory); + if (configDirectoryCreated) + { + log.Fatal("A new config directory and configuration files created !"); + } + + /// + /// Load the local settings + /// + LocalSettings = LocalSettings.Load(Program.LocalSettingsFileName); + if (LocalSettings == null) + { + /// Loading local seetings from regular config file failed. Use the backup + LocalSettings = LocalSettings.Load(Program.LocalSettingsBackupName); + if (LocalSettings == null) + { + log.FatalFormat("Local settings: Could not load file {0}, nor {1}.", ConfigFName, BackupConfigFName); + log.Fatal("Application terminated."); + MessageBox.Show(string.Format("Could not load file {0}, nor {1}.", ConfigFName, BackupConfigFName), "Fatal error"); + return; /// Fatal error + } + else + { + LocalSettings.Save(); /// Save the settings to overwrite the wrong file + log.FatalFormat("Local settings: Could not load file {0}, successfully loaded {1}", ConfigFName, BackupConfigFName); + } + } + else + { + /// Loading local seetings from the regular config file was successful. Update the backup + File.Copy(Program.LocalSettingsFileName, Program.LocalSettingsBackupName, true); + } + + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + /// + /// User login + /// + if (LocalSettings.IsUserLoginRequired && !string.IsNullOrEmpty(LocalSettings.UsersDBConnString)) + { + try + { + Common.GlobalData.RemoteUsersDB = new DBSettings(Common.DBType.MySql, LocalSettings.UsersDBConnString); + + DialogResult dr = new SharedDatabase.Forms.LoginDlg().ShowDialog(); + if (dr != DialogResult.OK) return; + } + catch (Exception exc) + { + log.ErrorFormat("Failed to connect to the database of users: {0}", exc.Message); + } + } + + ISession session; + IList listOfOrders = null; + IList listOfWorkflows = null; + while (true) + { + try + { + session = SharedDatabase.TracingDB.CreateSession(LocalSettings.ConnectionString); + listOfOrders = session.QueryOver() + .List(); + listOfWorkflows = session.QueryOver() + .Where(x => x.ReleaseStatus != ReleaseStatus.Deactivated) + .List(); + break; + } + catch (Exception exc) + { + log.FatalFormat("Failed to connect to production tracing database: {0}", exc.Message); + if (exc.InnerException != null) + { + log.FatalFormat("InnerException: {0}", exc.InnerException.Message); + } + + MessageBox.Show(string.Format("Failed to connect to production tracing database:{0}{1}", Environment.NewLine, exc.Message)); + + if (new Forms.SettingsDlg(LocalSettings).ShowDialog() == DialogResult.OK) + { + LocalSettings.Save(); + } + else + { + return; + } + } + } + + try + { + Application.Run(new ProductionTracingWnd()); + } + catch (Exception e) + { + LogException(log, "Exception in Application.Run(MainWnd)", e); + + MessageBox.Show("Program crashed:" + + Environment.NewLine + Environment.NewLine + e.Message + + ((e.InnerException == null) ? string.Empty : (Environment.NewLine + e.InnerException.Message)) + + Environment.NewLine + e.StackTrace, + "Fatal error", + MessageBoxButtons.OK, + MessageBoxIcon.Exclamation); + } + } + + + static void MyHandler(object sender, UnhandledExceptionEventArgs args) + { + Exception e = args.ExceptionObject as Exception; + if (e == null) return; + + LogException(log, "Unhandled exception", e); + + MessageBox.Show("Program crashed:" + + Environment.NewLine + Environment.NewLine + e.Message + + ((e.InnerException == null) ? string.Empty : (Environment.NewLine + e.InnerException.Message)) + + Environment.NewLine + e.StackTrace, + "Fatal error", + MessageBoxButtons.OK, + MessageBoxIcon.Exclamation); + } + + static void LogException(ILog log, string description, Exception e) + { + log.FatalFormat("---------------( {0} )---------------", description); + log.FatalFormat("Message : {0}", e.Message); + if (e.InnerException != null) + { + log.FatalFormat("InnerMessage : {0}", e.InnerException.Message); + } + log.FatalFormat("StackTrace : {0}{1}", Environment.NewLine, e.StackTrace); + log.Fatal("--------------------------------------"); + } + } +} diff --git a/ProductionTracing/Properties/AssemblyInfo.cs b/ProductionTracing/Properties/AssemblyInfo.cs new file mode 100644 index 000000000..c67ba6039 --- /dev/null +++ b/ProductionTracing/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("ResultsBrowser")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Sensus")] +[assembly: AssemblyProduct("ResultsBrowser")] +[assembly: AssemblyCopyright("Copyright © 2016 - 2022 Sensus Slovensko a.s.")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("3bb098ac-f5d3-4eb1-90ea-7ba296ce8fd7")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("3.0.2")] +[assembly: AssemblyFileVersion("3.0.2")] diff --git a/ProductionTracing/Properties/Resources.Designer.cs b/ProductionTracing/Properties/Resources.Designer.cs new file mode 100644 index 000000000..67e334e65 --- /dev/null +++ b/ProductionTracing/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34209 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ProductionTracing.Properties { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ResultsBrowser.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/ProductionTracing/Properties/Resources.resx b/ProductionTracing/Properties/Resources.resx new file mode 100644 index 000000000..af7dbebba --- /dev/null +++ b/ProductionTracing/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ProductionTracing/Properties/Settings.Designer.cs b/ProductionTracing/Properties/Settings.Designer.cs new file mode 100644 index 000000000..bf8b1b2af --- /dev/null +++ b/ProductionTracing/Properties/Settings.Designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.34209 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ProductionTracing.Properties { + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default { + get { + return defaultInstance; + } + } + } +} diff --git a/ProductionTracing/Properties/Settings.settings b/ProductionTracing/Properties/Settings.settings new file mode 100644 index 000000000..39645652a --- /dev/null +++ b/ProductionTracing/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/ProductionTracing/QueryResults.cs b/ProductionTracing/QueryResults.cs new file mode 100644 index 000000000..8a7181a30 --- /dev/null +++ b/ProductionTracing/QueryResults.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ProductionTracing +{ + public class QueryResults + { + public readonly string ConnectionString; + public readonly string Description; + public DateTime StartTime; + public DateTime EndTime; + public IList Results; + public IList ProjectedItems; + + public QueryResults(string connectionString, string description) + { + ConnectionString = connectionString; + Description = description; + StartTime = DateTime.Now; + Results = new List(); + ProjectedItems = new List(); + } + } +} diff --git a/ProductionTracing/Resources/Strings.cs.resx b/ProductionTracing/Resources/Strings.cs.resx new file mode 100644 index 000000000..f29576afb --- /dev/null +++ b/ProductionTracing/Resources/Strings.cs.resx @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Přidat filtr + + + Zrušit + + + Zmazat filtry + + + Řetězec pro spojní s databázou + + + Datum + + + Chyba + + + Chyba při zobrazování výsledků + + + Chyba při ukládání souboru + + + Chyba při serializaci filtru + + + Vykonat dotaz + + + Exportovat výsledky + + + Filtry + + + Formát výsledků + + + Od + + + Jazyk + + + OK + + + Vytlačit výsledky + + + Výsledky dotazu + + + Prohlížeč výsledků + + + Obnovit spojení s databázou + + + Řádky + + + Vybrané výsledky + + + Vyberte filtr + + + Sériové číslo + + + Nastavení + + + Statistiky + + + Do + + + vyhledávání + + + Adresa + + + Všechny soubory + + + Všechny položky + + + < Zpět + + + Čárový kód + + + Zmazat výsledky + + + hodin + + + Minulý měsíc + + + Minulý týden + + + Minulý rok + + + Otevřít konfiguraci + + + Posun + + + Jiný --> + + + Prac. postup + + + Uložit konfiguraci + + + Server + + + Směna + + + Tento měsíc + + + Tento týden + + + Tento rok + + + Dnes + + + Přidat > + + + Sloupce + + + Jméno uživatele + + + Pracoviště + + + Včera + + + Označení součástky + + + Součástka a kód + + + Čárový kód (jiný než referenční) + + + Součástka a kód (jiný než referenční) + + + musí být první filtr v pořadí. + + + Filtr + + + Více informací + + + Zakázka + + + Sériové č. + + + Krok postupu + + + Krok postupu a přidružená součástka + + + Položky + + + Název + + + Formát + + + Položka + + + Kód součástky + + + Přesnost + + + Výsledek + + + Šíŕka + + \ No newline at end of file diff --git a/ProductionTracing/Resources/Strings.de.resx b/ProductionTracing/Resources/Strings.de.resx new file mode 100644 index 000000000..aafd733bf --- /dev/null +++ b/ProductionTracing/Resources/Strings.de.resx @@ -0,0 +1,249 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Filter hinzufügen + + + Abbrechen + + + Filter löschen + + + Spalten + + + Datenbank-Verbindungszeichenfolge + + + Datum + + + Fehler + + + Abfrage ausführen + + + Ergebnise exportieren + + + Filter + + + Format der Ergebnisse + + + Bis + + + Sprache + + + Filter laden + + + OK + + + Ergebnise drucken + + + Prüfvorlage + + + Protokoll + + + Ergebnisse + + + Analyse der Ergebnisse + + + Datenbankverbindung wiederherstellen + + + Reihen + + + Filter speichern + + + Ergebnisse ausgewählt + + + Wählen Sie einen Filter + + + Seriennummer + + + Einstellungen + + + Einzel + + + Statistiken + + + Prüfpunkt + + + Prüfstand + + + Prüfstand + + + Zu + + + Ändern + + + Wasserzähler + + + Fehler beim Anzeigen der Ergebnisse + + + Fehler beim Speichern der Datei + + + Fehler Serialisierung Filter + + + suche + + + Mehr Informationen + + + Bestellung + + + Seriennr. + + + Datenbank + + \ No newline at end of file diff --git a/ProductionTracing/Resources/Strings.resx b/ProductionTracing/Resources/Strings.resx new file mode 100644 index 000000000..fe78aea84 --- /dev/null +++ b/ProductionTracing/Resources/Strings.resx @@ -0,0 +1,639 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Confirmation + + + Do you want to save the procedure? + + + Error + + + Error loading users from the database: + + + Failed to create a sample database: + + + Failed to export the database: + + + Invalid user, password, or bench + + + (max. _X_ alphanumeric characters) + + + Name + + + no + + + Nr. + + + Add + + + Close + + + Lock + + + Remove + + + OK + + + Correction [l/h] + + + Correction [mbar] + + + Invalid username or password + + + Copy + + + Down + + + Edit + + + Up + + + Cannot connect to the database. + + + Configure test benches (password required) + + + Exit + + + Enter password + + + Invalid password + + + The database was successfully created! + + + The database will be overwritten + + + Do you want to proceed? + + + Notification + + + No test bench in the program configuration. + + + Description + + + Procedure + + + Error while creating the database. Reason: + + + Ignore + + + Loading the procedure + + + Ready + + + < Back + + + Finish + + + Next > + + + Component + + + <none> + + + Clear results + + + Configure + + + Horizontally + + + Configuration + + + NOK + + + Clear + + + Producer + + + Printer + + + Version + + + <nothing to configure> + + + No + + + Question + + + Connection string + + + Create DB + + + Database type + + + Logging + + + Mode + + + New Tab + + + &Add > + + + Available results + + + < &Remove + + + << R&emove all + + + Message + + + dflt + + + Less + + + More + + + Changes will be lost. Do you want to proceed? + + + Printer + + + Data + + + Serial number + + + Date and time: + + + Address + + + Evaluate + + + Language + + + Database Settings + + + Copyright © 2013 - {0} + + + Edit User + + + An unhandled error occured + + + Ignore + + + Add filter + + + Clear filters + + + Execute query + + + Export query results + + + Filters + + + Format of results + + + Load configuration + + + Print query results + + + Query results + + + Production Tracing + + + Save configuration + + + Settings + + + Retry + + + Selected results + + + Unlock + + + Date + + + From + + + To + + + Statistics + + + Columns + + + Rows + + + Select a filter + + + Error displaying results + + + All files + + + Error saving file + + + Error serializing filters + + + Query files + + + Barcode + + + Workflow + + + Last month + + + Last week + + + Last year + + + Other --> + + + This month + + + This week + + + This year + + + Today + + + Yesterday + + + Workplace + + + User name + + + Shift + + + searching + + + Database + + + + + + Offset + + + Part name + + + Part with barcode + + + Barcode (not ref.) + + + Part with barcode (not ref.) + + + can only be used as the first filter. + + + Filter + + + More informations + + + Workstep + + + Ref. part name (SAP nr.) + + + Order + + + Serial nr. + + + Add data from Oracle + + + There should be one '{0}' filter configured + + + Max. pruefindex + + + Test result + + + Time stamp + + + Flow tube + + + Time + + + Error exporting results + + + Export + + + Count + + + Databases + + + Record Id + + + Add data from Oracle - 2nd query + + + Ref. part barcode (s/n) + + + Workstep and associated part + + + Associated part + + + Default settings are used. + + + Program is running for the 1st time on this PC. + + + Warning + + + Items + + + Caption + + + Format + + + Item + + + Part barcode + + + Precision + + + Result + + + Width + + + Close it please using 'Task manager' + + + Program '{0}' is running already. + + + Cancel + + + Connection string for production tracing database + + + Connection string for database of users + + + Save + + + User login is required + + \ No newline at end of file diff --git a/ProductionTracing/Resources/Strings.sk.resx b/ProductionTracing/Resources/Strings.sk.resx new file mode 100644 index 000000000..2d8ff3a46 --- /dev/null +++ b/ProductionTracing/Resources/Strings.sk.resx @@ -0,0 +1,381 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + Minulý mesiac + + + Minulý týždeň + + + Minulý rok + + + Iný --> + + + vyhľadávam + + + Tento mesiac + + + Tento týždeň + + + Tento rok + + + Dnes + + + Databáza + + + Pridať > + + + Adresa + + + Pridať filter + + + Všetky súbory + + + Všetky položky + + + < Späť + + + Čiarový kód + + + Vymazať filtre + + + Vymazať výsledky + + + Dátum + + + Spusti hľadanie + + + Filtre + + + Formát výsledkov + + + Od + + + hodín + + + Jazyk + + + Otvoriť konfiguráciu + + + Posun + + + Prac. postup + + + Výsledky vyhľadávania + + + Uložiť konfiguráciu + + + Nastavenia + + + Smena + + + Štatistiky + + + Do + + + Meno používateľa + + + Pracovisko + + + Včera + + + Reťazec pre spojenie s databázou + + + Chyba + + + Chyba pri zobrazovaní výsledkov + + + Chyba pri ukladaní súboru + + + Chyba pri serializácii filtra + + + Exportovať výsledky + + + OK + + + Obnoviť spojenie s databázou + + + Stĺpce + + + Vytlačiť výsledky + + + Sledovanie výroby + + + Riadky + + + Vybrané výsledky + + + Vyberte filter + + + Sériové číslo + + + Označenie súčiastky + + + Súčiastka a kód + + + Čiarový kód (iný ako referečný) + + + Súčiastka a kód (iný ako referečný) + + + musí byť prvý filter v poradí. + + + Filter + + + Detaily + + + Sériové č. + + + Mal by byť nakonfigurovaný jeden filter '{0}' + + + Prietoková trubica + + + Výsledok overovania + + + Zákazka + + + Časová značka + + + Čas + + + Exportovať + + + Chyba pri exportovaní výsledkov + + + Počet + + + Databázy + + + Id záznamu + + + Kód referenčnej súčiastky + + + Dohľadaj údaje z Oracle + + + Krok postupu a pridružená súčiastka + + + Pridružená súčiastka + + + Krok postupu + + + Použijú sa základné nastavenia. + + + Na tomto počítači nebol tento program ani raz spustený. + + + Upozornenie + + + Zavrite ho prosím 'Správcom úloh' (Task manager). + + + Program '[0}' už beží. + + + Zrušiť + + + Uložiť + + + Vyžaduje sa prihlásenie používateľa + + + Konfigurácia databázy sledovania výroby + + + Konfigurácia databázy používateľov + + \ No newline at end of file diff --git a/ProductionTracing/Resources/Strings1.Designer.cs b/ProductionTracing/Resources/Strings1.Designer.cs new file mode 100644 index 000000000..12b76f3a8 --- /dev/null +++ b/ProductionTracing/Resources/Strings1.Designer.cs @@ -0,0 +1,1620 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace ProductionTracing.Resources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Strings { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Strings() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProductionTracing.Resources.Strings", typeof(Strings).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to <none>. + /// + internal static string _none_ { + get { + return ResourceManager.GetString("_none_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to &Add >. + /// + internal static string Add { + get { + return ResourceManager.GetString("Add", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Add data from Oracle. + /// + internal static string Add_data_from_Oracle { + get { + return ResourceManager.GetString("Add_data_from_Oracle", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Add filter. + /// + internal static string Add_filter { + get { + return ResourceManager.GetString("Add_filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Add. + /// + internal static string AddBtnText { + get { + return ResourceManager.GetString("AddBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Address. + /// + internal static string Address { + get { + return ResourceManager.GetString("Address", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to All files. + /// + internal static string All_files { + get { + return ResourceManager.GetString("All_files", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to An unhandled error occured. + /// + internal static string An_unhandled_error_occured { + get { + return ResourceManager.GetString("An_unhandled_error_occured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Associated part. + /// + internal static string Associated_part { + get { + return ResourceManager.GetString("Associated_part", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Available results. + /// + internal static string Available_results { + get { + return ResourceManager.GetString("Available_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to < Back. + /// + internal static string BackBtnText { + get { + return ResourceManager.GetString("BackBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Barcode. + /// + internal static string Barcode { + get { + return ResourceManager.GetString("Barcode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Barcode (not ref.). + /// + internal static string Barcode_no_ref { + get { + return ResourceManager.GetString("Barcode_no_ref", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to can only be used as the first filter.. + /// + internal static string can_only_be_used_as_the_first_filter { + get { + return ResourceManager.GetString("can_only_be_used_as_the_first_filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cancel. + /// + internal static string Cancel { + get { + return ResourceManager.GetString("Cancel", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Caption. + /// + internal static string Caption { + get { + return ResourceManager.GetString("Caption", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Changes will be lost. Do you want to proceed?. + /// + internal static string Changes_will_be_lost_Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Changes_will_be_lost_Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clear filters. + /// + internal static string Clear_filters { + get { + return ResourceManager.GetString("Clear_filters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clear results. + /// + internal static string Clear_results { + get { + return ResourceManager.GetString("Clear_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clear. + /// + internal static string ClearBtnText { + get { + return ResourceManager.GetString("ClearBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Close it please using 'Task manager'. + /// + internal static string Close_it_please { + get { + return ResourceManager.GetString("Close_it_please", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Close. + /// + internal static string CloseBtnText { + get { + return ResourceManager.GetString("CloseBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Columns. + /// + internal static string Columns { + get { + return ResourceManager.GetString("Columns", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Component. + /// + internal static string Component { + get { + return ResourceManager.GetString("Component", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Configuration. + /// + internal static string Configuration { + get { + return ResourceManager.GetString("Configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Configure. + /// + internal static string Configure { + get { + return ResourceManager.GetString("Configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Configure test benches (password required). + /// + internal static string ConfigureDatabaseText { + get { + return ResourceManager.GetString("ConfigureDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Confirmation. + /// + internal static string Confirmation { + get { + return ResourceManager.GetString("Confirmation", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connection string. + /// + internal static string Connection_string { + get { + return ResourceManager.GetString("Connection_string", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connection string for production tracing database. + /// + internal static string Connection_string_tracing_DB { + get { + return ResourceManager.GetString("Connection_string_tracing_DB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Connection string for database of users. + /// + internal static string Connection_string_users_DB { + get { + return ResourceManager.GetString("Connection_string_users_DB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Copy. + /// + internal static string CopyBtnText { + get { + return ResourceManager.GetString("CopyBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Copyright © 2013 - {0}. + /// + internal static string CopyrightStr { + get { + return ResourceManager.GetString("CopyrightStr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Correction [l/h]. + /// + internal static string Correction_lph { + get { + return ResourceManager.GetString("Correction_lph", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Correction [mbar]. + /// + internal static string Correction_mbar { + get { + return ResourceManager.GetString("Correction_mbar", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Count. + /// + internal static string Count { + get { + return ResourceManager.GetString("Count", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Create DB. + /// + internal static string Create_DB { + get { + return ResourceManager.GetString("Create_DB", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Data. + /// + internal static string Data { + get { + return ResourceManager.GetString("Data", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Database. + /// + internal static string Database { + get { + return ResourceManager.GetString("Database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Database Settings. + /// + internal static string Database_Settings { + get { + return ResourceManager.GetString("Database_Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Database type. + /// + internal static string Database_type { + get { + return ResourceManager.GetString("Database_type", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Databases. + /// + internal static string Databases { + get { + return ResourceManager.GetString("Databases", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Date. + /// + internal static string Date { + get { + return ResourceManager.GetString("Date", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Date and time: . + /// + internal static string Date_and_time_ { + get { + return ResourceManager.GetString("Date_and_time_", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The database was successfully created!. + /// + internal static string DB_was_successfully_created { + get { + return ResourceManager.GetString("DB_was_successfully_created", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to The database will be overwritten. + /// + internal static string DB_will_be_overwritten { + get { + return ResourceManager.GetString("DB_will_be_overwritten", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Default settings are used.. + /// + internal static string Default_settings_are_used { + get { + return ResourceManager.GetString("Default_settings_are_used", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Description. + /// + internal static string DescriptionColHdr { + get { + return ResourceManager.GetString("DescriptionColHdr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to dflt. + /// + internal static string dflt { + get { + return ResourceManager.GetString("dflt", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Do you want to proceed?. + /// + internal static string Do_you_want_to_proceed { + get { + return ResourceManager.GetString("Do_you_want_to_proceed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Do you want to save the procedure?. + /// + internal static string Do_you_want_to_save_the_procedure { + get { + return ResourceManager.GetString("Do_you_want_to_save_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Down. + /// + internal static string DownBtnText { + get { + return ResourceManager.GetString("DownBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Edit User. + /// + internal static string Edit_User { + get { + return ResourceManager.GetString("Edit_User", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Edit. + /// + internal static string EditBtnText { + get { + return ResourceManager.GetString("EditBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Enter password. + /// + internal static string Enter_password { + get { + return ResourceManager.GetString("Enter_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error. + /// + internal static string Error { + get { + return ResourceManager.GetString("Error", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error displaying results. + /// + internal static string Error_displaying_results { + get { + return ResourceManager.GetString("Error_displaying_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error exporting results. + /// + internal static string Error_exporting_results { + get { + return ResourceManager.GetString("Error_exporting_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error loading users from the database:. + /// + internal static string Error_loading_users_from_the_database { + get { + return ResourceManager.GetString("Error_loading_users_from_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error saving file. + /// + internal static string Error_saving_file { + get { + return ResourceManager.GetString("Error_saving_file", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error serializing filters. + /// + internal static string Error_serializing_filters { + get { + return ResourceManager.GetString("Error_serializing_filters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Error while creating the database. Reason: . + /// + internal static string Error_while_creating_DB_Reason { + get { + return ResourceManager.GetString("Error_while_creating_DB_Reason", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Evaluate. + /// + internal static string Evaluate { + get { + return ResourceManager.GetString("Evaluate", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Execute query. + /// + internal static string Execute_query { + get { + return ResourceManager.GetString("Execute_query", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Exit. + /// + internal static string ExitBtnText { + get { + return ResourceManager.GetString("ExitBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Export. + /// + internal static string Export { + get { + return ResourceManager.GetString("Export", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Export query results. + /// + internal static string Export_query_results { + get { + return ResourceManager.GetString("Export_query_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to NOK. + /// + internal static string Failed { + get { + return ResourceManager.GetString("Failed", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to create a sample database:. + /// + internal static string Failed_to_create_a_sample_database { + get { + return ResourceManager.GetString("Failed_to_create_a_sample_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Failed to export the database:. + /// + internal static string Failed_to_export_the_database { + get { + return ResourceManager.GetString("Failed_to_export_the_database", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filter. + /// + internal static string Filter { + get { + return ResourceManager.GetString("Filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Filters. + /// + internal static string Filters { + get { + return ResourceManager.GetString("Filters", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Finish. + /// + internal static string FinishBtnText { + get { + return ResourceManager.GetString("FinishBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Flow tube. + /// + internal static string Flow_tube { + get { + return ResourceManager.GetString("Flow_tube", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Format. + /// + internal static string Format { + get { + return ResourceManager.GetString("Format", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Format of results. + /// + internal static string Format_of_results { + get { + return ResourceManager.GetString("Format_of_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to From. + /// + internal static string From { + get { + return ResourceManager.GetString("From", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Horizontally. + /// + internal static string Horizontally { + get { + return ResourceManager.GetString("Horizontally", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to . + /// + internal static string hours { + get { + return ResourceManager.GetString("hours", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignore. + /// + internal static string Ignore { + get { + return ResourceManager.GetString("Ignore", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ignore. + /// + internal static string IgnoreBtnText { + get { + return ResourceManager.GetString("IgnoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid password. + /// + internal static string Invalid_password { + get { + return ResourceManager.GetString("Invalid_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid user, password, or bench. + /// + internal static string Invalid_user_password_or_bench { + get { + return ResourceManager.GetString("Invalid_user_password_or_bench", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Invalid username or password. + /// + internal static string Invalid_username_or_password { + get { + return ResourceManager.GetString("Invalid_username_or_password", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Item. + /// + internal static string Item { + get { + return ResourceManager.GetString("Item", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Items. + /// + internal static string Items { + get { + return ResourceManager.GetString("Items", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Language. + /// + internal static string Language { + get { + return ResourceManager.GetString("Language", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Last month. + /// + internal static string Last_month { + get { + return ResourceManager.GetString("Last_month", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Last week. + /// + internal static string Last_week { + get { + return ResourceManager.GetString("Last_week", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Last year. + /// + internal static string Last_year { + get { + return ResourceManager.GetString("Last_year", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Less. + /// + internal static string LessBtnText { + get { + return ResourceManager.GetString("LessBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Load configuration. + /// + internal static string Load_configuration { + get { + return ResourceManager.GetString("Load_configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Loading the procedure. + /// + internal static string Loading_the_procedure { + get { + return ResourceManager.GetString("Loading_the_procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Lock. + /// + internal static string LockBtnText { + get { + return ResourceManager.GetString("LockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Logging. + /// + internal static string Logging { + get { + return ResourceManager.GetString("Logging", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Max. pruefindex. + /// + internal static string Max_pruefindex { + get { + return ResourceManager.GetString("Max_pruefindex", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to (max. _X_ alphanumeric characters). + /// + internal static string MaxChars { + get { + return ResourceManager.GetString("MaxChars", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Message. + /// + internal static string Message { + get { + return ResourceManager.GetString("Message", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Mode. + /// + internal static string Mode { + get { + return ResourceManager.GetString("Mode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to More informations. + /// + internal static string More_informations { + get { + return ResourceManager.GetString("More_informations", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to More. + /// + internal static string MoreBtnText { + get { + return ResourceManager.GetString("MoreBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Name. + /// + internal static string Name { + get { + return ResourceManager.GetString("Name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to New Tab. + /// + internal static string NewTabBtnText { + get { + return ResourceManager.GetString("NewTabBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Next >. + /// + internal static string NextBtnText { + get { + return ResourceManager.GetString("NextBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to no. + /// + internal static string no { + get { + return ResourceManager.GetString("no", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No test bench in the program configuration.. + /// + internal static string NoBenchMsg { + get { + return ResourceManager.GetString("NoBenchMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to No. + /// + internal static string NoBtn { + get { + return ResourceManager.GetString("NoBtn", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Cannot connect to the database.. + /// + internal static string NoDatabaseMsg { + get { + return ResourceManager.GetString("NoDatabaseMsg", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to <nothing to configure>. + /// + internal static string nothing_to_configure { + get { + return ResourceManager.GetString("nothing_to_configure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Notification. + /// + internal static string Notification { + get { + return ResourceManager.GetString("Notification", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Nr.. + /// + internal static string Nr { + get { + return ResourceManager.GetString("Nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Offset. + /// + internal static string Offset { + get { + return ResourceManager.GetString("Offset", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to OK. + /// + internal static string OkBtnText { + get { + return ResourceManager.GetString("OkBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Order. + /// + internal static string Order { + get { + return ResourceManager.GetString("Order", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Other -->. + /// + internal static string Other__v { + get { + return ResourceManager.GetString("Other__v", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Part barcode. + /// + internal static string Part_barcode { + get { + return ResourceManager.GetString("Part_barcode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Part name. + /// + internal static string Part_name { + get { + return ResourceManager.GetString("Part_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Part with barcode. + /// + internal static string Part_with_barcode { + get { + return ResourceManager.GetString("Part_with_barcode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Part with barcode (not ref.). + /// + internal static string Part_with_barcode_no_ref { + get { + return ResourceManager.GetString("Part_with_barcode_no_ref", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Precision. + /// + internal static string Precision { + get { + return ResourceManager.GetString("Precision", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Print query results. + /// + internal static string Print_query_results { + get { + return ResourceManager.GetString("Print_query_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Printer. + /// + internal static string Printer { + get { + return ResourceManager.GetString("Printer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Printer. + /// + internal static string PrinterBtnText { + get { + return ResourceManager.GetString("PrinterBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Procedure. + /// + internal static string Procedure { + get { + return ResourceManager.GetString("Procedure", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Producer. + /// + internal static string Producer { + get { + return ResourceManager.GetString("Producer", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Production Tracing. + /// + internal static string Production_Tracing { + get { + return ResourceManager.GetString("Production_Tracing", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Program '{0}' is running already.. + /// + internal static string Program_0_is_running_already { + get { + return ResourceManager.GetString("Program_0_is_running_already", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Program is running for the 1st time on this PC.. + /// + internal static string Program_is_running_for_the_1st_time_on_this_PC { + get { + return ResourceManager.GetString("Program_is_running_for_the_1st_time_on_this_PC", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Query files. + /// + internal static string Query_files { + get { + return ResourceManager.GetString("Query_files", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Query results. + /// + internal static string Query_results { + get { + return ResourceManager.GetString("Query_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Question. + /// + internal static string Question { + get { + return ResourceManager.GetString("Question", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ready. + /// + internal static string Ready { + get { + return ResourceManager.GetString("Ready", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref. part barcode (s/n). + /// + internal static string Ref_part_barcode { + get { + return ResourceManager.GetString("Ref_part_barcode", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Ref. part name (SAP nr.). + /// + internal static string Ref_part_name { + get { + return ResourceManager.GetString("Ref_part_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Record Id. + /// + internal static string RefRecordId { + get { + return ResourceManager.GetString("RefRecordId", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to < &Remove. + /// + internal static string Remove { + get { + return ResourceManager.GetString("Remove", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to << R&emove all. + /// + internal static string Remove_all { + get { + return ResourceManager.GetString("Remove_all", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Remove. + /// + internal static string RemoveBtnText { + get { + return ResourceManager.GetString("RemoveBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Result. + /// + internal static string Result { + get { + return ResourceManager.GetString("Result", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Retry. + /// + internal static string RetryDatabaseText { + get { + return ResourceManager.GetString("RetryDatabaseText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Rows. + /// + internal static string Rows { + get { + return ResourceManager.GetString("Rows", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save. + /// + internal static string Save { + get { + return ResourceManager.GetString("Save", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Save configuration. + /// + internal static string Save_configuration { + get { + return ResourceManager.GetString("Save_configuration", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to searching. + /// + internal static string searching { + get { + return ResourceManager.GetString("searching", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Add data from Oracle - 2nd query. + /// + internal static string Second_Oracle_Query { + get { + return ResourceManager.GetString("Second_Oracle_Query", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Select a filter. + /// + internal static string Select_a_filter { + get { + return ResourceManager.GetString("Select_a_filter", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Selected results. + /// + internal static string Selected_results { + get { + return ResourceManager.GetString("Selected_results", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Serial nr.. + /// + internal static string Serial_nr { + get { + return ResourceManager.GetString("Serial_nr", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Serial number. + /// + internal static string Serial_number { + get { + return ResourceManager.GetString("Serial_number", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Settings. + /// + internal static string Settings { + get { + return ResourceManager.GetString("Settings", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Shift. + /// + internal static string Shift { + get { + return ResourceManager.GetString("Shift", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Statistics. + /// + internal static string Statistics { + get { + return ResourceManager.GetString("Statistics", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Test result. + /// + internal static string Test_result { + get { + return ResourceManager.GetString("Test_result", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to There should be one '{0}' filter configured. + /// + internal static string There_should_be_one_0_filter_configured { + get { + return ResourceManager.GetString("There_should_be_one_0_filter_configured", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This month. + /// + internal static string This_month { + get { + return ResourceManager.GetString("This_month", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This week. + /// + internal static string This_week { + get { + return ResourceManager.GetString("This_week", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to This year. + /// + internal static string This_year { + get { + return ResourceManager.GetString("This_year", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Time. + /// + internal static string Time { + get { + return ResourceManager.GetString("Time", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Time stamp. + /// + internal static string Time_stamp { + get { + return ResourceManager.GetString("Time_stamp", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to To. + /// + internal static string To { + get { + return ResourceManager.GetString("To", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Today. + /// + internal static string Today { + get { + return ResourceManager.GetString("Today", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Unlock. + /// + internal static string UnlockBtnText { + get { + return ResourceManager.GetString("UnlockBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Up. + /// + internal static string UpBtnText { + get { + return ResourceManager.GetString("UpBtnText", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to User login is required. + /// + internal static string User_login_is_required { + get { + return ResourceManager.GetString("User_login_is_required", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to User name. + /// + internal static string User_name { + get { + return ResourceManager.GetString("User_name", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Version. + /// + internal static string Version { + get { + return ResourceManager.GetString("Version", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Warning. + /// + internal static string Warning { + get { + return ResourceManager.GetString("Warning", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Width. + /// + internal static string Width { + get { + return ResourceManager.GetString("Width", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Workflow. + /// + internal static string Workflow { + get { + return ResourceManager.GetString("Workflow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Workplace. + /// + internal static string Workplace { + get { + return ResourceManager.GetString("Workplace", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Workstep. + /// + internal static string Workstep { + get { + return ResourceManager.GetString("Workstep", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Workstep and associated part. + /// + internal static string Workstep_and_associated_part { + get { + return ResourceManager.GetString("Workstep_and_associated_part", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Yesterday. + /// + internal static string Yesterday { + get { + return ResourceManager.GetString("Yesterday", resourceCulture); + } + } + } +} diff --git a/ProductionTracing/SampleConfig/log4netConfig.xml b/ProductionTracing/SampleConfig/log4netConfig.xml new file mode 100644 index 000000000..85f76866f --- /dev/null +++ b/ProductionTracing/SampleConfig/log4netConfig.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ProductionTracing/app.config b/ProductionTracing/app.config new file mode 100644 index 000000000..7126a7bcf --- /dev/null +++ b/ProductionTracing/app.config @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/ProductionTracing/packages.config b/ProductionTracing/packages.config new file mode 100644 index 000000000..3f52f5e26 --- /dev/null +++ b/ProductionTracing/packages.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/TBF.sln b/TBF.sln index c2d28be47..e9f60260a 100644 --- a/TBF.sln +++ b/TBF.sln @@ -90,6 +90,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RecordProcessing", "RecordP EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GenericTest", "GenericTest\GenericTest.csproj", "{1F6B4580-9D4F-43D6-9E76-E063298391E8}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProductionTracing", "ProductionTracing\ProductionTracing.csproj", "{328AD6D5-6E62-42FB-B348-9899F813DBD3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -404,6 +406,16 @@ Global {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|Mixed Platforms.Build.0 = Release|Any CPU {1F6B4580-9D4F-43D6-9E76-E063298391E8}.Release|x86.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Debug|x86.ActiveCfg = Debug|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Any CPU.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|Mixed Platforms.Build.0 = Release|Any CPU + {328AD6D5-6E62-42FB-B348-9899F813DBD3}.Release|x86.ActiveCfg = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/TBF/LocalSettings.cs b/TBF/LocalSettings.cs index eeb5dd934..c682b448d 100644 --- a/TBF/LocalSettings.cs +++ b/TBF/LocalSettings.cs @@ -511,7 +511,7 @@ namespace TBF } history = newHistory; } - Save(); + return true; } } diff --git a/clean.bat b/clean.bat index 5a6de1e1c..63648390e 100644 --- a/clean.bat +++ b/clean.bat @@ -34,8 +34,8 @@ rmdir /s /q OrderManagement\bin\Debug rmdir /s /q OrderManagement\bin\Release rmdir /s /q OrderManagement\bin\Logs rmdir /s /q OrderManagement\obj -rmdir /s /q TracingDB\bin -rmdir /s /q TracingDB\obj +rmdir /s /q ProductionTracing\bin +rmdir /s /q ProductionTracing\obj rmdir /s /q RecordProcessing\bin rmdir /s /q RecordProcessing\obj rmdir /s /q ResetBatchNr\bin