[성현모] TRA HEX 값 표기 수정

This commit is contained in:
SHM
2025-03-20 08:35:24 +09:00
parent b76569d02f
commit 773aa49a27
118 changed files with 172244 additions and 0 deletions

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
</configuration>

View File

@ -0,0 +1,41 @@

namespace SystemX.Product.CP.TRA.BaseView
{
partial class Form1
{
/// <summary>
/// 필수 디자이너 변수입니다.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// 사용 중인 모든 리소스를 정리합니다.
/// </summary>
/// <param name="disposing">관리되는 리소스를 삭제해야 하면 true이고, 그렇지 않으면 false입니다.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form
/// <summary>
/// 디자이너 지원에 필요한 메서드입니다.
/// 이 메서드의 내용을 코드 편집기로 수정하지 마세요.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(800, 450);
this.Text = "Form1";
}
#endregion
}
}

View File

@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SystemX.Product.CP.TRA.BaseView
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}

View File

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SystemX.Product.CP.TRA.BaseView
{
static class Program
{
/// <summary>
/// 해당 애플리케이션의 주 진입점입니다.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}

View File

@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 어셈블리에 대한 일반 정보는 다음 특성 집합을 통해
// 제어됩니다. 어셈블리와 관련된 정보를 수정하려면
// 이러한 특성 값을 변경하세요.
[assembly: AssemblyTitle("SystemX.Product.CP.TRA.BaseView")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("SystemX.Product.CP.TRA.BaseView")]
[assembly: AssemblyCopyright("Copyright © 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// ComVisible을 false로 설정하면 이 어셈블리의 형식이 COM 구성 요소에
// 표시되지 않습니다. COM에서 이 어셈블리의 형식에 액세스하려면
// 해당 형식에 대해 ComVisible 특성을 true로 설정하세요.
[assembly: ComVisible(false)]
// 이 프로젝트가 COM에 노출되는 경우 다음 GUID는 typelib의 ID를 나타냅니다.
[assembly: Guid("910bb092-a5f3-4ace-bbf8-c19434f1fa8e")]
// 어셈블리의 버전 정보는 다음 네 가지 값으로 구성됩니다.
//
// 주 버전
// 부 버전
// 빌드 번호
// 수정 버전
//
// 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를
// 기본값으로 할 수 있습니다.
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View File

@ -0,0 +1,173 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SystemX.Product.CP.TRA.BaseView.Properties {
using System;
/// <summary>
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
/// </summary>
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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() {
}
/// <summary>
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
/// </summary>
[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("SystemX.Product.CP.TRA.BaseView.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap ExplodedPie3D_16x16 {
get {
object obj = ResourceManager.GetObject("ExplodedPie3D_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Find_16x16 {
get {
object obj = ResourceManager.GetObject("Find_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Find2_16x16 {
get {
object obj = ResourceManager.GetObject("Find2_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap HistoryItem_16x16 {
get {
object obj = ResourceManager.GetObject("HistoryItem_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap IpAddress {
get {
object obj = ResourceManager.GetObject("IpAddress", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Kefico_CI {
get {
object obj = ResourceManager.GetObject("Kefico_CI", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Linear_16x16 {
get {
object obj = ResourceManager.GetObject("Linear_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap ModelEditor_DetailView {
get {
object obj = ResourceManager.GetObject("ModelEditor_DetailView", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Password {
get {
object obj = ResourceManager.GetObject("Password", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap UpdateField_16x16 {
get {
object obj = ResourceManager.GetObject("UpdateField_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap UpdateTableOfContents_16x16 {
get {
object obj = ResourceManager.GetObject("UpdateTableOfContents_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ModelEditor_DetailView" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ModelEditor_DetailView.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Password" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Password.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Find_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Find_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Linear_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Linear_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="HistoryItem_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\HistoryItem_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Kefico_CI" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Kefico CI.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="IpAddress" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\IpAddress.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UpdateField_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdateField_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UpdateTableOfContents_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdateTableOfContents_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Find2_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Find2_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ExplodedPie3D_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ExplodedPie3D_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,29 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 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.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SystemX.Product.CP.TRA.BaseView.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.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;
}
}
}
}

View File

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

View File

@ -0,0 +1,110 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>SystemX.Product.CP.TRA.BaseView</RootNamespace>
<AssemblyName>SystemX.Product.CP.TRA.BaseView</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\x64\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Form1.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
<DependentUpon>Form1.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="UcTRABaseView.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UcTRABaseView.Designer.cs">
<DependentUpon>UcTRABaseView.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="UcTRABaseView.resx">
<DependentUpon>UcTRABaseView.cs</DependentUpon>
</EmbeddedResource>
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Find2_16x16.png" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\ExplodedPie3D_16x16.png" />
</ItemGroup>
<ItemGroup>
<Content Include="Resources\Find_16x16.png" />
<Content Include="Resources\HistoryItem_16x16.png" />
<Content Include="Resources\IpAddress.PNG" />
<Content Include="Resources\Kefico CI.PNG" />
<Content Include="Resources\Linear_16x16.png" />
<Content Include="Resources\ModelEditor_DetailView.png" />
<Content Include="Resources\Password.jpg" />
<Content Include="Resources\UpdateField_16x16.png" />
<Content Include="Resources\UpdateTableOfContents_16x16.png" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,184 @@

using System.Windows.Forms;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRABaseView
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.contextMenuStripTest = new System.Windows.Forms.ContextMenuStrip(this.components);
this.ToolStripMenuItemOverview = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this.ToolStripMenuItemHistory = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItemSummary = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItemDetail = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItemFindError = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.toolStripMenuItemExplorer = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripTextBoxBeginRelDate = new System.Windows.Forms.ToolStripTextBox();
this.toolStripMenuItemBeginRelDate = new System.Windows.Forms.ToolStripMenuItem();
this.ToolStripMenuItemDetailOverview = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStripTest.SuspendLayout();
this.SuspendLayout();
//
// contextMenuStripTest
//
this.contextMenuStripTest.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.ToolStripMenuItemOverview,
this.ToolStripMenuItemDetailOverview,
this.toolStripSeparator1,
this.ToolStripMenuItemHistory,
this.ToolStripMenuItemSummary,
this.ToolStripMenuItemDetail,
this.ToolStripMenuItemFindError,
this.toolStripSeparator2,
this.toolStripMenuItemExplorer});
this.contextMenuStripTest.Name = "contextMenuStripTest";
this.contextMenuStripTest.Size = new System.Drawing.Size(260, 192);
this.contextMenuStripTest.Text = "Menu";
//
// ToolStripMenuItemOverview
//
this.ToolStripMenuItemOverview.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.Find_16x16;
this.ToolStripMenuItemOverview.Name = "ToolStripMenuItemOverview";
this.ToolStripMenuItemOverview.ShortcutKeyDisplayString = "Ctrl+O";
this.ToolStripMenuItemOverview.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
this.ToolStripMenuItemOverview.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemOverview.Tag = "0";
this.ToolStripMenuItemOverview.Text = "&Overview";
//
// toolStripSeparator1
//
this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(256, 6);
//
// ToolStripMenuItemHistory
//
this.ToolStripMenuItemHistory.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.HistoryItem_16x16;
this.ToolStripMenuItemHistory.Name = "ToolStripMenuItemHistory";
this.ToolStripMenuItemHistory.ShortcutKeyDisplayString = "Ctrl+H";
this.ToolStripMenuItemHistory.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.H)));
this.ToolStripMenuItemHistory.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemHistory.Tag = "1";
this.ToolStripMenuItemHistory.Text = "Test &History";
//
// ToolStripMenuItemSummary
//
this.ToolStripMenuItemSummary.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.Linear_16x16;
this.ToolStripMenuItemSummary.Name = "ToolStripMenuItemSummary";
this.ToolStripMenuItemSummary.ShortcutKeyDisplayString = "Ctrl+S";
this.ToolStripMenuItemSummary.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
this.ToolStripMenuItemSummary.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemSummary.Tag = "2";
this.ToolStripMenuItemSummary.Text = "Test &Summary";
//
// ToolStripMenuItemDetail
//
this.ToolStripMenuItemDetail.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.ModelEditor_DetailView;
this.ToolStripMenuItemDetail.Name = "ToolStripMenuItemDetail";
this.ToolStripMenuItemDetail.ShortcutKeyDisplayString = "Ctrl+D";
this.ToolStripMenuItemDetail.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.D)));
this.ToolStripMenuItemDetail.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemDetail.Tag = "3";
this.ToolStripMenuItemDetail.Text = "Detail &Data";
//
// ToolStripMenuItemFindError
//
this.ToolStripMenuItemFindError.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.ExplodedPie3D_16x16;
this.ToolStripMenuItemFindError.Name = "ToolStripMenuItemFindError";
this.ToolStripMenuItemFindError.ShortcutKeyDisplayString = "Ctrl+E";
this.ToolStripMenuItemFindError.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
this.ToolStripMenuItemFindError.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemFindError.Tag = "4";
this.ToolStripMenuItemFindError.Text = "Test-&Error/Extended Search";
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(256, 6);
//
// toolStripMenuItemExplorer
//
this.toolStripMenuItemExplorer.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripTextBoxBeginRelDate,
this.toolStripMenuItemBeginRelDate});
this.toolStripMenuItemExplorer.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.Find2_16x16;
this.toolStripMenuItemExplorer.Name = "toolStripMenuItemExplorer";
this.toolStripMenuItemExplorer.Size = new System.Drawing.Size(259, 22);
this.toolStripMenuItemExplorer.Tag = "5";
this.toolStripMenuItemExplorer.Text = "Date Explorer Parameter";
//
// toolStripTextBoxBeginRelDate
//
this.toolStripTextBoxBeginRelDate.Font = new System.Drawing.Font("맑은 고딕", 9F);
this.toolStripTextBoxBeginRelDate.Name = "toolStripTextBoxBeginRelDate";
this.toolStripTextBoxBeginRelDate.Size = new System.Drawing.Size(100, 23);
this.toolStripTextBoxBeginRelDate.Tag = "6";
this.toolStripTextBoxBeginRelDate.Text = "0";
this.toolStripTextBoxBeginRelDate.TextBoxTextAlign = System.Windows.Forms.HorizontalAlignment.Right;
this.toolStripTextBoxBeginRelDate.ToolTipText = "BeginRelDate";
//
// toolStripMenuItemBeginRelDate
//
this.toolStripMenuItemBeginRelDate.DoubleClickEnabled = true;
this.toolStripMenuItemBeginRelDate.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.UpdateField_16x16;
this.toolStripMenuItemBeginRelDate.Name = "toolStripMenuItemBeginRelDate";
this.toolStripMenuItemBeginRelDate.ShortcutKeyDisplayString = "Ctrl+R";
this.toolStripMenuItemBeginRelDate.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
this.toolStripMenuItemBeginRelDate.Size = new System.Drawing.Size(217, 22);
this.toolStripMenuItemBeginRelDate.Tag = "7";
this.toolStripMenuItemBeginRelDate.Text = "Begin &Related Date";
//
// ToolStripMenuItemDetailOverview
//
this.ToolStripMenuItemDetailOverview.Image = global::SystemX.Product.CP.TRA.BaseView.Properties.Resources.Find_16x16;
this.ToolStripMenuItemDetailOverview.Name = "ToolStripMenuItemDetailOverview";
this.ToolStripMenuItemDetailOverview.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.O)));
this.ToolStripMenuItemDetailOverview.Size = new System.Drawing.Size(259, 22);
this.ToolStripMenuItemDetailOverview.Tag = "8";
this.ToolStripMenuItemDetailOverview.Text = "Detail &Overview";
//
// UcTRABaseView
//
this.Name = "UcTRABaseView";
this.contextMenuStripTest.ResumeLayout(false);
this.ResumeLayout(false);
}
protected ContextMenuStrip contextMenuStripTest;
protected ToolStripMenuItem ToolStripMenuItemHistory;
protected ToolStripMenuItem ToolStripMenuItemOverview;
protected ToolStripSeparator toolStripSeparator1;
protected ToolStripMenuItem ToolStripMenuItemSummary;
protected ToolStripMenuItem ToolStripMenuItemDetail;
protected ToolStripMenuItem ToolStripMenuItemFindError;
protected ToolStripSeparator toolStripSeparator2;
protected ToolStripMenuItem toolStripMenuItemExplorer;
protected ToolStripTextBox toolStripTextBoxBeginRelDate;
protected ToolStripMenuItem toolStripMenuItemBeginRelDate;
private ToolStripMenuItem ToolStripMenuItemDetailOverview;
}
}

View File

@ -0,0 +1,120 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SystemX.Product.CP.TRA;
namespace SystemX.Product.TRA.UIControl
{
public enum eContents
{
None,
HostUseHistory,
Overview,
DetailOverview,
TestHistory,
NgHistory,
ProductHistory,
TestResult,
TestSummary,
TestTrend
}
public enum eDataView
{
C1,
C2
}
public partial class UcTRABaseView : UserControl
{
public UcTRABaseView()
{
InitializeComponent();
}
public string ViewID { get; set; }
public eContents ContentsType { get; protected set; }
public eDataView DataViewType { get; protected set; }
virtual public void ExportData() { }
protected void SetMenuFindErrorEnabled(bool bEnabled)
{
ToolStripMenuItemFindError.Enabled = bEnabled;
}
protected void SetMenuEnabled(eContents GeteContents)
{
switch(GeteContents)
{
case eContents.HostUseHistory:
ToolStripMenuItemOverview.Visible = false;
ToolStripMenuItemOverview.Enabled = false;
ToolStripMenuItemDetailOverview.Visible = false;
ToolStripMenuItemDetailOverview.Enabled = false;
ToolStripMenuItemHistory.Enabled = false;
ToolStripMenuItemOverview.Enabled = false;
ToolStripMenuItemSummary.Enabled = false;
ToolStripMenuItemDetail.Enabled = false;
ToolStripMenuItemFindError.Enabled = false;
//
toolStripSeparator2.Visible = false;
toolStripMenuItemExplorer.Visible = false;
toolStripMenuItemBeginRelDate.Enabled = false;
break;
case eContents.Overview:
ToolStripMenuItemOverview.Visible = false;
ToolStripMenuItemOverview.Enabled = false;
ToolStripMenuItemDetailOverview.Visible = true;
ToolStripMenuItemDetailOverview.Enabled = true;
ToolStripMenuItemHistory.Enabled = false;
ToolStripMenuItemOverview.Enabled = false;
ToolStripMenuItemSummary.Enabled = false;
ToolStripMenuItemDetail.Enabled = false;
//ToolStripMenuItemFindError.Enabled = false;
//
toolStripSeparator2.Visible = false;
toolStripMenuItemExplorer.Visible = false;
toolStripMenuItemBeginRelDate.Enabled = false;
break;
case eContents.DetailOverview:
ToolStripMenuItemOverview.Visible = true;
ToolStripMenuItemOverview.Enabled = true;
ToolStripMenuItemDetailOverview.Visible = false;
ToolStripMenuItemDetailOverview.Enabled = false;
ToolStripMenuItemSummary.Enabled = false;
ToolStripMenuItemDetail.Enabled = false;
break;
case eContents.TestHistory:
ToolStripMenuItemOverview.Visible = true;
ToolStripMenuItemOverview.Enabled = true;
ToolStripMenuItemDetailOverview.Visible = true;
ToolStripMenuItemDetailOverview.Enabled = true;
ToolStripMenuItemHistory.Enabled = false;
ToolStripMenuItemFindError.Enabled = false;
//
toolStripSeparator2.Visible = false;
toolStripMenuItemExplorer.Visible = false;
toolStripMenuItemBeginRelDate.Enabled = false;
break;
}
}
}
}

View File

@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="contextMenuStripTest.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@ -0,0 +1,47 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.33027.164
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{18C1E9B6-823D-49DB-8253-ED32EEA21DB1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemX.Product.CP.TRA", "SystemX.Product.CP.TRA\SystemX.Product.CP.TRA.csproj", "{74C67745-2E9A-4F85-A170-2C1F5990E6F4}"
ProjectSection(ProjectDependencies) = postProject
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E} = {910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemX.Product.CP.TRA.BaseView", "SystemX.Product.CP.TRA.BaseView\SystemX.Product.CP.TRA.BaseView.csproj", "{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Debug|x64.ActiveCfg = Debug|x64
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Debug|x64.Build.0 = Debug|x64
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Release|Any CPU.Build.0 = Release|Any CPU
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Release|x64.ActiveCfg = Release|x64
{74C67745-2E9A-4F85-A170-2C1F5990E6F4}.Release|x64.Build.0 = Release|x64
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Debug|x64.ActiveCfg = Debug|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Debug|x64.Build.0 = Debug|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Release|Any CPU.Build.0 = Release|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Release|x64.ActiveCfg = Release|Any CPU
{910BB092-A5F3-4ACE-BBF8-C19434F1FA8E}.Release|x64.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
VisualSVNWorkingCopyRoot = .
SolutionGuid = {34BF09E0-D510-452D-8E8B-B0D1C6FE25BF}
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System">
<section name="DevExpress.LookAndFeel.Design.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<section name="SystemX.Product.TRA.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<SystemX.Product.TRA.Properties.Settings>
<setting name="ApplicationThemeName" serializeAs="String">
<value>Coffee</value>
</setting>
</SystemX.Product.TRA.Properties.Settings>
</userSettings>
<applicationSettings>
<DevExpress.LookAndFeel.Design.AppSettings>
<setting name="DPIAwarenessMode" serializeAs="String">
<value>System</value>
</setting>
<setting name="RegisterBonusSkins" serializeAs="String">
<value>True</value>
</setting>
<setting name="DefaultAppSkin" serializeAs="String">
<value></value>
</setting>
<setting name="DefaultPalette" serializeAs="String">
<value>Pine Dark</value>
</setting>
<setting name="TouchUI" serializeAs="String">
<value></value>
</setting>
<setting name="CompactUI" serializeAs="String">
<value></value>
</setting>
<setting name="TouchScaleFactor" serializeAs="String">
<value></value>
</setting>
<setting name="DirectX" serializeAs="String">
<value></value>
</setting>
<setting name="RegisterUserSkins" serializeAs="String">
<value></value>
</setting>
<setting name="FontBehavior" serializeAs="String">
<value></value>
</setting>
<setting name="DefaultAppFont" serializeAs="String">
<value></value>
</setting>
<setting name="CustomPaletteCollection" serializeAs="Xml">
<value />
</setting>
</DevExpress.LookAndFeel.Design.AppSettings>
</applicationSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Configuration.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Caching.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Options" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.1.32.0" newVersion="3.1.32.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.ComponentModel.Annotations" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.1.0" newVersion="4.2.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@ -0,0 +1,86 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraBars;
using SystemX.Product.ALIS.UI.View;
using static SystemX.Product.ALIS.UI.View.ViewCfg;
using SystemX.Net.Platform.Common.Util;
using DataBaseConnection.Control;
using System.Data.SqlClient;
using SystemX.Product.ALIS.UI.Subs;
using System.Diagnostics;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using SystemX.Product.ALIS.Interface;
using System.Net;
using static SystemX.Product.CP.TRA.MainForm;
using SystemX.Product.TRA.UIControl;
namespace SystemX.Product.CP.TRA
{
public partial class MainForm
{
//IChildControl
public void SetOverview()
{
SelectOverviewTab();
}
public void SetDetailOverview()
{
SelectDetailOverviewTab();
}
public void SetHistoryView()
{
SetHostHistoryView();
}
public void SetSummaryView()
{
SetHostTrendView();
}
public void CallDetailOverView()
{
SetDetailOerviewFindData(SelectedData, barToggleSwitchItemOverviewMerge.Checked);
}
public void AnnounceContentsType(eContents GetType)
{
SelectedContents = GetType;
}
public bool GetOverviewMergeState()
{
return barToggleSwitchItemOverviewMerge.Checked;
}
public SelectedDataCollection GetSelectDataOverView(int nDataValue = int.MaxValue)
{
SelectedDataCollection MakeSelectData = (SelectedDataCollection)SelectedData.Clone();
DateTime dtStart = DateTime.Parse(barEditItemDateStart.EditValue.ToString());
DateTime dtEnd = DateTime.Parse(barEditItemDateEnd.EditValue.ToString());
if (nDataValue != int.MaxValue)
dtStart = dtStart.AddDays(-nDataValue);
dtEnd = dtEnd.AddHours(23.99999);
MakeSelectData.SearchRangeStart = dtStart;
MakeSelectData.SearchRangeEnd = dtEnd;
return MakeSelectData;
}
public void SetNgHistView(eContents GetCallType)
{
SetNgHistoryView(GetCallType);
}
}
}

View File

@ -0,0 +1,406 @@
using DevExpress.CodeParser;
using DevExpress.Data.Helpers;
using DevExpress.Data.ODataLinq.Helpers;
using DevExpress.Internal.WinApi.Windows.UI.Notifications;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using SystemX.Net.Platform.Common.Util;
using static SystemX.Net.Platform.Common.Util.LogMessage;
namespace DataBaseConnection.Control
{
public class DatabaseConnControl
{
/*public static string MainCatalogName = "CPX";
public static string ShortTermCatalogName = "CPX";
public static string LongTermCatalogName = "CPXLog";*/
public static string MainCatalogName = "CPXV2";
public static string ShortTermCatalogName = "";
public static List<string> LongTermCatalogName = new List<string> { "" } ;
public static string SelectLongTermCatalogNameCon1 = string.Empty;
public static string SelectLongTermCatalogNameCon2 = string.Empty;
public static bool ScanLongTermLog = false;
public const string Address = "192.168.0.43";
public const int CatalogConnPort = 1433;
public const string CatalogConnUID = "Alis";
public const string CatalogConnPW = "Kefico!@34";
private static SqlConnection connMain = null;
private static SqlConnection connShortTerm1 = null;
private static Dictionary<string, SqlConnection> connLongTerm1 = new Dictionary<string, SqlConnection>();
private static SqlConnection connShortTerm2 = null;
private static Dictionary<string, SqlConnection> connLongTerm2 = new Dictionary<string, SqlConnection>();
public static SqlConnection GetMainConn()
{
return connMain;
}
public static SqlConnection GetShortTermConn1()
{
return connShortTerm1;
}
public static Dictionary<string, SqlConnection> GetLongTermConn1()
{
return connLongTerm1;
}
public static SqlConnection GetShortTermConn2()
{
return connShortTerm2;
}
public static Dictionary<string, SqlConnection> GetLongTermConn2()
{
return connLongTerm2;
}
public DatabaseConnControl()
{
//conn = new SqlConnection($"Data Source=200.200.200.48,1433; Initial Catalog={CatalogName}; User ID=Alis; Password=kefico; MultipleActiveResultSets=True;");
//conn = new SqlConnection($"Data Source=DESKTOP-5UQ1Q22;Initial Catalog={CatalogName};Integrated Security=True;");
//conn = new SqlConnection($"Data Source = 125.130.37.164,1433; Initial Catalog = {CatalogName}; User ID = Alis; Password = kefico; MultipleActiveResultSets=True;");
//"Data Source = {IP},{Port}; Initial Catalog = {CatalogName}; User ID = Alis; Password = kefico; MultipleActiveResultSets=True;";
//"Data Source = localhost; Initial Catalog = {CatalogName}; Integrated Security = SSPI; MultipleActiveResultSets=True;";
}
public static void DisconnectDB()
{
if (connMain != null)
{
if (connMain.State == System.Data.ConnectionState.Open)
connMain.Close();
}
//
if (connShortTerm1 != null)
{
if (connShortTerm1.State == System.Data.ConnectionState.Open)
connShortTerm1.Close();
}
//
if (connLongTerm1?.Count > 0)
{
foreach (var logTermConnection in connLongTerm1.Values)
{
if (logTermConnection.State == System.Data.ConnectionState.Open)
logTermConnection.Close();
}
}
//
if (connShortTerm2 != null)
{
if (connShortTerm2.State == System.Data.ConnectionState.Open)
connShortTerm2.Close();
}
//
if (connLongTerm2?.Count > 0)
{
foreach (var logTermConnection in connLongTerm2.Values)
{
if (logTermConnection.State == System.Data.ConnectionState.Open)
logTermConnection.Close();
}
}
}
public static void ConnectTestListDB()
{
try
{
connMain = new SqlConnection($"Data Source=localhost; Initial Catalog={MainCatalogName}; Integrated Security = SSPI; MultipleActiveResultSets=True;");
connMain.Open();
SqlCommand SQLCmd = new SqlCommand("spGetDBList", connMain);
SQLCmd.CommandType = CommandType.StoredProcedure;
DbDataReader dtReader = SQLCmd.ExecuteReader();
DataTable dtResult = new DataTable();
dtResult.Load(dtReader);
List<string> list = dtResult?.AsEnumerable()?.Select(x=>x.ItemArray?.First()?.ToString())?.ToList();
if(list?.Count > 0)
{
//short term
var shortTermCatalogName = list.Find(x => x.ToLower().Contains("short") && x.ToLower().Contains("json"));
if(string.IsNullOrEmpty(shortTermCatalogName) ==false)
{
ShortTermCatalogName = shortTermCatalogName;
}
//long term
var longTermCatalogName = list.FindAll(x => x.ToLower().Contains("long") && x.ToLower().Contains("json"));
if(longTermCatalogName?.Count() > 0)
{
LongTermCatalogName?.Clear();
LongTermCatalogName.AddRange(longTermCatalogName);
}
}
dtReader.Close();
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"TestList DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connMain = null;
}
}
public static void ConnectDataDB1()
{
try
{
SqlConnection connecction;
connShortTerm1 = new SqlConnection($"Data Source=localhost; Initial Catalog={ShortTermCatalogName}; Integrated Security = SSPI; MultipleActiveResultSets=True;"); // MultipleActiveResultSets=True;");
connShortTerm1.Open();
foreach(var catalog in LongTermCatalogName)
{
connLongTerm1.Add(catalog, new SqlConnection($"Data Source=localhost; Initial Catalog={catalog}; Integrated Security = SSPI; MultipleActiveResultSets=True;")); // MultipleActiveResultSets=True;");
if (connLongTerm1.TryGetValue(catalog, out connecction) == true)
{
connecction.Open();
}
}
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connShortTerm1 = null;
connLongTerm1 = null;
}
}
public static void ConnectDataDB2()
{
try
{
SqlConnection connecction;
connShortTerm2 = new SqlConnection($"Data Source=localhost; Initial Catalog={ShortTermCatalogName}; Integrated Security = SSPI; MultipleActiveResultSets=True;"); // MultipleActiveResultSets=True;");
connShortTerm2.Open();
foreach (var catalog in LongTermCatalogName)
{
connLongTerm2.Add(catalog, new SqlConnection($"Data Source=localhost; Initial Catalog={catalog}; Integrated Security = SSPI; MultipleActiveResultSets=True;")); // MultipleActiveResultSets=True;");
if (connLongTerm2.TryGetValue(catalog, out connecction) == true)
{
connecction.Open();
}
}
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connShortTerm2 = null;
connLongTerm2 = null;
}
}
public static void ConnectTestListDB(string strGetConnIPAddress, int nGetConnPort = CatalogConnPort)
{
try
{
//conn = new SqlConnection("Data Source=200.200.200.48,1433; Initial Catalog=LSU_Trimming_4th_ALIS; User ID=Alis; Password=kefico; MultipleActiveResultSets=True;");
//Data Source = {IP},{Port}; Initial Catalog = {SCHEMA}; User ID = {ID}; Password = {PW}; MultipleActiveResultSets=True;
//conn = new SqlConnection("Data Source=DESKTOP-5UQ1Q22;Initial Catalog=LSU_Trimming_4th_ALIS;Integrated Security=True;");
//conn = new SqlConnection("Data Source = 125.130.37.164,1433; Initial Catalog = LSU_Trimming_4th_ALIS; User ID = Alis; Password = kefico; MultipleActiveResultSets=True;");
//conn = new SqlConnection("Data Source = 127.0.0.1; Initial Catalog = Smart_Inhibitor_1th_ALIS; User ID = Alis; Password = kefico;"); //Integrated Security = SSPI;");
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString();
builder.UserID = "Alis";
builder.Password = "Kefico!@34";
builder.InitialCatalog = MainCatalogName;
builder.MultipleActiveResultSets = true;
connMain = new SqlConnection(builder.ConnectionString);
connMain.Open();
//
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString();
SqlCommand SQLCmd = new SqlCommand("spGetDBList", connMain);
SQLCmd.CommandType = CommandType.StoredProcedure;
DbDataReader dtReader = SQLCmd.ExecuteReader();
DataTable dtResult = new DataTable();
dtResult.Load(dtReader);
List<string> list = dtResult?.AsEnumerable()?.Select(x => x.ItemArray?.First()?.ToString())?.ToList();
if (list?.Count > 0)
{
//short term
var shortTermCatalogName = list.Find(x => x.ToLower().Contains("short") && x.ToLower().Contains("json"));
if (string.IsNullOrEmpty(shortTermCatalogName) == false)
{
ShortTermCatalogName = shortTermCatalogName;
}
//long term
var longTermCatalogName = list.FindAll(x => x.ToLower().Contains("long") && x.ToLower().Contains("json"));
if (longTermCatalogName?.Count() > 0)
{
LongTermCatalogName?.Clear();
LongTermCatalogName.AddRange(longTermCatalogName);
}
}
dtReader.Close();
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"TestList DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connMain = null;
}
}
public static void ConnectDataDB1(string strGetConnIPAddress, int nGetConnPort = CatalogConnPort, string CatalogName = "")
{
try
{
//conn = new SqlConnection("Data Source=200.200.200.48,1433; Initial Catalog=LSU_Trimming_4th_ALIS; User ID=Alis; Password=kefico; MultipleActiveResultSets=True;");
//Data Source = {IP},{Port}; Initial Catalog = {SCHEMA}; User ID = {ID}; Password = {PW}; MultipleActiveResultSets=True;
//conn = new SqlConnection("Data Source=DESKTOP-5UQ1Q22;Initial Catalog=LSU_Trimming_4th_ALIS;Integrated Security=True;");
//conn = new SqlConnection("Data Source = 125.130.37.164,1433; Initial Catalog = LSU_Trimming_4th_ALIS; User ID = Alis; Password = kefico; MultipleActiveResultSets=True;");
//conn = new SqlConnection("Data Source = 127.0.0.1; Initial Catalog = Smart_Inhibitor_1th_ALIS; User ID = Alis; Password = kefico;"); //Integrated Security = SSPI;");
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString();
builder.UserID = "Alis";
builder.Password = "Kefico!@34"; //"Kefico!@34";
//builder.Password = "KEFICO!@34";
builder.InitialCatalog = ShortTermCatalogName;
//conn = new SqlConnection(builder.ConnectionString);
connShortTerm1 = new SqlConnection(builder.ConnectionString);
//conn = new SqlConnection("Data Source = " + strGetConnIPAddress.ToString() + ",1433; Initial Catalog = Smart_Inhibitor_1th_ALIS; User ID=Alis; Password=KEFICO!@34;"); // MultipleActiveResultSets=True;");
connShortTerm1.Open();
//
builder = new SqlConnectionStringBuilder();
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString(); //9000 50001 50002
builder.UserID = "Alis";
builder.Password = "Kefico!@34";
builder.InitialCatalog = CatalogName;
builder.MultipleActiveResultSets = true;
try
{
var con = new SqlConnection(builder.ConnectionString);
con.Open();
connLongTerm1.Add(CatalogName, con);
}
catch(Exception ex)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {ex.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
}
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connShortTerm1 = null;
connLongTerm1 = null;
}
}
public static void ConnectDataDB2(string strGetConnIPAddress, int nGetConnPort = CatalogConnPort, string CatalogName = "")
{
try
{
//conn = new SqlConnection("Data Source=200.200.200.48,1433; Initial Catalog=LSU_Trimming_4th_ALIS; User ID=Alis; Password=kefico; MultipleActiveResultSets=True;");
//Data Source = {IP},{Port}; Initial Catalog = {SCHEMA}; User ID = {ID}; Password = {PW}; MultipleActiveResultSets=True;
//conn = new SqlConnection("Data Source=DESKTOP-5UQ1Q22;Initial Catalog=LSU_Trimming_4th_ALIS;Integrated Security=True;");
//conn = new SqlConnection("Data Source = 125.130.37.164,1433; Initial Catalog = LSU_Trimming_4th_ALIS; User ID = Alis; Password = kefico; MultipleActiveResultSets=True;");
//conn = new SqlConnection("Data Source = 127.0.0.1; Initial Catalog = Smart_Inhibitor_1th_ALIS; User ID = Alis; Password = kefico;"); //Integrated Security = SSPI;");
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString();
builder.UserID = "Alis";
builder.Password = "Kefico!@34"; //"Kefico!@34";
//builder.Password = "KEFICO!@34";
builder.InitialCatalog = ShortTermCatalogName;
//conn = new SqlConnection(builder.ConnectionString);
connShortTerm2 = new SqlConnection(builder.ConnectionString);
//conn = new SqlConnection("Data Source = " + strGetConnIPAddress.ToString() + ",1433; Initial Catalog = Smart_Inhibitor_1th_ALIS; User ID=Alis; Password=KEFICO!@34;"); // MultipleActiveResultSets=True;");
connShortTerm2.Open();
//
builder = new SqlConnectionStringBuilder();
if (strGetConnIPAddress.Split(',').Length == 2)
builder.DataSource = strGetConnIPAddress;
else
builder.DataSource = strGetConnIPAddress + "," + nGetConnPort.ToString(); //9000 50001 50002
builder.UserID = "Alis";
builder.Password = "Kefico!@34";
builder.InitialCatalog = CatalogName;
builder.MultipleActiveResultSets = true;
try
{
var con = new SqlConnection(builder.ConnectionString);
con.Open();
connLongTerm2.Add(CatalogName, con);
}
catch (Exception ex)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {ex.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
}
}
catch (SqlException sqlEx)
{
MessageOutput.ConsoleWrite($"Data DB Connection Error: {sqlEx.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
connShortTerm2 = null;
connLongTerm2 = null;
}
}
}
}

View File

@ -0,0 +1,229 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraBars;
using SystemX.Product.ALIS.UI.View;
using static SystemX.Product.ALIS.UI.View.ViewCfg;
using SystemX.Net.Platform.Common.Util;
using DataBaseConnection.Control;
using System.Data.SqlClient;
using SystemX.Product.ALIS.UI.Subs;
using System.Diagnostics;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using SystemX.Product.ALIS.Interface;
using System.Net;
using static SystemX.Product.CP.TRA.MainForm;
namespace SystemX.Product.CP.TRA
{
public partial class MainForm
{
/// <summary>
/// IDataBaseController
/// </summary>
/// <returns></returns>
public SqlConnection GetMainConn()
{
return DatabaseConnControl.GetMainConn();
}
public SqlConnection GetShortTermConn1()
{
return DatabaseConnControl.GetShortTermConn1();
}
public Dictionary<string, SqlConnection> GetLongTermConn1()
{
return DatabaseConnControl.GetLongTermConn1();
}
public SqlConnection GetShortTermConn2()
{
return DatabaseConnControl.GetShortTermConn2();
}
public Dictionary<string, SqlConnection> GetLongTermConn2()
{
return DatabaseConnControl.GetLongTermConn2();
}
//IDataControl
/*
object objSQLControl = new object();
public UserInfo GetLoginInfo()
{
return CurrentUser;
}
private DataTable QuerySQL(string strQueryText)
{
lock (objSQLControl)
{
SqlDataReader sqlReader = null;
DataTable dt = new DataTable();
try
{
SQLCmd.CommandText = strQueryText;
sqlReader = SQLCmd.ExecuteReader();
if (sqlReader.HasRows != false)
dt.Load(sqlReader);
}
catch (Exception ex)
{
MessageOutput.ConsoleWrite(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss>> ") + @"Query process fail. [SystemX.Product.ALIS.UI : IDataControl.getDuplicateCheck]\r\n" + ex.Message, ConsoleColor.Yellow, LogMessageLevel.DEBUG);
}
finally
{
if (sqlReader != null)
sqlReader.Close();
}
if (Commons.isHasRow(dt))
return dt;
else
return null;
}
}
public DataTable GetTable(string strQueryText)
{
return QuerySQL(strQueryText);
}
/// <summary>
/// IDataController - GetTable
/// </summary>
/// <param name="tblName"></param>
/// <returns></returns>
public DataTable GetTable(eDbTableList tblName)
{
string strQueryText = string.Empty;
strQueryText = $"SELECT * FROM {tblName.ToString()} ORDER BY No ASC;";
if (tblName == eDbTableList.PROD_TestList)
{
strQueryText = $"SELECT X.No, " +
$"X.ProdNo_P AS 'P_ProdNo', " +
$"X.TestType, " +
$"X.FileName, " +
$"X.Version AS 'FileVersion', " +
$"X.ProdCode, " +
$"X.RegDT, " +
$"X.RegUser, " +
$"X.UpdateDT, " +
$"X.UpdateUser, " +
$"Y.No AS 'GroupNo', " +
$"Y.GroupName, " +
$"Y.ModelName, " +
$"Y.Comment, " +
$"X.Description, " +
$"X.TestListData FROM {tblName.ToString()} AS X INNER JOIN PROD_Group AS Y ON X.GroupNo = Y.No ORDER BY No ASC;";
}
else if (tblName == eDbTableList.PROD_Release)
{
strQueryText = $"SELECT X.No, " +
$"X.ProdNo_C AS 'C_ProdNo', " +
$"Y.No AS 'TestCodeNo', " +
$"Y.TestCode, " +
$"Z.No AS 'TestListNo', " +
$"Z.ProdNo_P AS 'P_ProdNo', " +
$"Z.TestType, " +
$"Z.Version AS 'FileVersion', " +
$"Z.ProdCode, " +
$"X.Config, " +
$"X.RegDT, " +
$"X.RegUser, " +
$"X.RegUserComment " +
$"FROM {tblName.ToString()} AS X INNER JOIN STAT_TestCode AS Y ON X.TestCodeNo = Y.No INNER JOIN PROD_TestList AS Z ON X.TestListNo = Z.No ORDER BY No ASC;";
}
return QuerySQL(strQueryText);
}
public DataTable GetTable(eDbTableList tblName, string strColName, string strParameter)
{
string strQueryText = $"SELECT * FROM {tblName.ToString()} WHERE {strColName} = {strParameter} ORDER BY No ASC;";
return QuerySQL(strQueryText);
}
public string GetServerDateTimeString()
{
string strGetDateTime = string.Empty;
string strQueryText = "SELECT CONVERT(datetime2, GETDATE(), 121) AS CURRENT_DATETIME;";
DataTable getDt = QuerySQL(strQueryText);
if (Commons.isHasRow(getDt))
strGetDateTime = getDt.Rows[0].ItemArray[0].ToString();
return strGetDateTime;
}
public DateTime GetServerDateTime()
{
string strGetDateTime = string.Empty;
string strQueryText = "SELECT CONVERT(datetime2, GETDATE(), 121) AS CURRENT_DATETIME;";
DataTable getDt = QuerySQL(strQueryText);
if (Commons.isHasRow(getDt))
strGetDateTime = getDt.Rows[0].ItemArray[0].ToString();
DateTime dtSetDateTime = new DateTime();
DateTime.TryParse(strGetDateTime, out dtSetDateTime);
return dtSetDateTime;
}
public string SetConvertDateTime(string strGetConvertText)
{
string strQueryConvertText = string.Empty;
if (strGetConvertText.IndexOf("AM") >= 0 || strGetConvertText.IndexOf("PM") >= 0 ||
strGetConvertText.IndexOf("오전") >= 0 || strGetConvertText.IndexOf("오후") >= 0)
{
if (strGetConvertText.IndexOf("AM") >= 0 || strGetConvertText.IndexOf("PM") >= 0)
strQueryConvertText = "SELECT dbo.XConvertDateE('" + strGetConvertText + "') AS CONVERT_DATETIME_E;";
else if (strGetConvertText.IndexOf("오전") >= 0 || strGetConvertText.IndexOf("오후") >= 0)
strQueryConvertText = "SELECT dbo.XConvertDateK('" + strGetConvertText + "') AS CONVERT_DATETIME_K;";
}
DataTable getDt = null;
string strGetResultText1 = string.Empty;
string strGetResultText2 = string.Empty;
if (strQueryConvertText != string.Empty)
getDt = QuerySQL(strQueryConvertText);
else
strGetResultText1 = strGetConvertText;
if (Commons.isHasRow(getDt))
strGetResultText1 = getDt.Rows[0].ItemArray[0].ToString();
string strQueryText = "SELECT CONVERT(VARCHAR, '" + strGetResultText1 + "', 121) AS CONVERT_DATETIME;";
if (strGetResultText1 != string.Empty)
getDt = QuerySQL(strQueryText);
if (Commons.isHasRow(getDt))
strGetResultText2 = getDt.Rows[0].ItemArray[0].ToString();
return strGetResultText2;
}
*/
}
}

View File

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.TRA.UIControl;
namespace SystemX.Product.TRA.DataManager
{
public static class DMCommon
{
public static string SummaryHistTable = "HIST_TesterSummary";
public static string SummaryLogTable = "HIST_LogSummary";
public static string ResultLogTable = "HIST_TestResult";
//default, longterm 스위칭할때 필요
public const string SummaryLogTableDefault = "HIST_LogSummary";
public const string ResultLogTableDefault = "HIST_TestResult";
public static int nDefaultScanTime = 1800;
public static int nFullScanTime = 7200;
}
}

View File

@ -0,0 +1,399 @@
using DataBaseConnection.Control;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.DataManager
{
public class DMDetailOverview
{
public enum eCommand
{
PowerON,
PowerOFF,
QUERY
}
public enum eColList
{
TestDate,
StationName,
Host,
Section,
Start,
Final,
ProductNo,
TestType,
ParentNo,
ProductID,
TestListFileNo,
TestListVariantNo,
TestCode,
FileVersion,
FileCode,
StepVersion,
FirstTestTime,
FinalTestTime,
Total,
OK,
NG, //NOK,
TestListCntID
}
public enum eColListHide
{
TestListCntID,
RN
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
private SqlConnection LongTermDBConn { get; set; }
private SqlCommand SQLCmd { get; set; }
private SelectedDataCollection SelectedOverViewItemData;
public string strDetailOverviewUseQuery;
public DataTable dtRaw;
public DataTable dtSubRaw;
eOverviewModelNameInfo GetSelectInfo;
IDataBaseController GetDBController;
public DMDetailOverview(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
{
GetSelectInfo = SelectInfo;
DBConn = getDBController.GetMainConn();
GetDBController = getDBController;
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().First().Value;
}
strDetailOverviewUseQuery = string.Empty;
}
public DataTable GetDataView(eSelectDataView SelectView, SelectedDataCollection data, OverviewSearchOption inputOption)
{
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
LongTermDBConn = GetDBController.GetLongTermConn1().Where(x => x.Key.Contains(data.StartTime.Year.ToString()))?.FirstOrDefault().Value;
if (LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn1().FirstOrDefault().Value;
}
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
LongTermDBConn = GetDBController.GetLongTermConn2().Where(x => x.Key.Contains(data.StartTime.Year.ToString()))?.FirstOrDefault().Value;
if (LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn2().FirstOrDefault().Value;
}
}
DataTable dtResult = new DataTable();
SelectedOverViewItemData = data;
string strGetUseQuery = string.Empty;
dtRaw = GetRawResult(inputOption, out strGetUseQuery);
if (inputOption.DisplayByStation == false)
dtSubRaw = GetSubRawResult();
else
dtSubRaw = null;
strDetailOverviewUseQuery = strGetUseQuery;
return dtRaw;
}
DataTable GetRawResult(OverviewSearchOption inputOption, out string strGetSendQuery)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
DateTime dtNow = DateTime.Now;
strGetSendQuery = string.Empty;
strQuery += $"SELECT * FROM (";
strQuery += $"SELECT ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
if (inputOption.DisplayByStation)
{
strQuery += $"{DMCommon.SummaryLogTable}.[StationName] AS {eColList.StationName.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[HostID] AS {eColList.Host.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Section] AS {eColList.Section.ToString()},";
}
//
strQuery += $"Y.ModelName,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
if (SelectedOverViewItemData.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
if (inputOption.DisplayByStation)
{
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] ";
}
else
{
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN ";
}
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
strQuery += $"WITH(NOLOCK) ";
switch (GetSelectInfo)
{
case eOverviewModelNameInfo.L:
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P1:
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P2:
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
}
/*
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = CONVERT(NVARCHAR, {DMCommon.SummaryLogTable}.[TestListVariantNo]) ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
*/
strQuery += $"WHERE TestDT >= '{SelectedOverViewItemData.SearchRangeStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{SelectedOverViewItemData.SearchRangeEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
if (SelectedOverViewItemData.ProductID.Length > 0)
{
strQuery += $"AND ProductID = '{SelectedOverViewItemData.ProductID}' ";
}
strQuery += $"GROUP BY ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE),";
//
strQuery += $"Y.ModelName,";
if (inputOption.DisplayByStation)
{
strQuery += $"{DMCommon.SummaryLogTable}.[StationName],";
strQuery += $"{DMCommon.SummaryLogTable}.[HostID],";
strQuery += $"{DMCommon.SummaryLogTable}.[Section],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
}
if (SelectedOverViewItemData.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
//strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestType],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C],";
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode],";
strQuery += $"{DMCommon.SummaryLogTable}.[Version],";
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion]";
strQuery += " ";
strQuery += ") AS X ";
if (inputOption.DisplayByStation)
{
strQuery += "WHERE X.Host = '" + SelectedOverViewItemData.HostID + "' AND X.Section = '" + SelectedOverViewItemData.SectionID + "' ";
//strQuery += "ORDER BY X.TestDate, X.Host, X.Section ASC;";
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
}
else
{
strQuery += "WHERE X.ProductNo = '" + SelectedOverViewItemData.ProductNo + "' AND X.TestType = '" + SelectedOverViewItemData.TestType + "' AND X.TestCode = '" + SelectedOverViewItemData.TestCode + "' AND X.ParentNo = '" + SelectedOverViewItemData.ParentNo + "' ";
//strQuery += "ORDER BY X.TestDate, X.ProductNo, X.ParentNo ASC;";
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
}
//
strGetSendQuery = strQuery;
if (DatabaseConnControl.ScanLongTermLog)
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
DataTable GetSubRawResult()
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
DateTime dtNow = DateTime.Now;
strQuery += $"SELECT * FROM (";
strQuery += $"SELECT ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
strQuery += $"Y.ModelName,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
if (SelectedOverViewItemData.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[ProdNo_P] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] ";
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
strQuery += $"WITH(NOLOCK) ";
switch (GetSelectInfo)
{
case eOverviewModelNameInfo.L:
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P1:
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [P1].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P2:
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
}
/*
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
*/
strQuery += $"WHERE TestDT >= '{SelectedOverViewItemData.SearchRangeStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{SelectedOverViewItemData.SearchRangeEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
if (SelectedOverViewItemData.ProductID.Length > 0)
{
strQuery += $"AND ProductID = '{SelectedOverViewItemData.ProductID}' ";
}
strQuery += $"GROUP BY ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE),";
//
strQuery += $"Y.ModelName,";
if (SelectedOverViewItemData.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestType],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C],";
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P],";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode],";
strQuery += $"{DMCommon.SummaryLogTable}.[Version],";
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion]";
strQuery += " ";
strQuery += ") AS X ";
strQuery += "WHERE X.ProductNo = '" + SelectedOverViewItemData.ProductNo + "' AND X.TestType = '" + SelectedOverViewItemData.TestType + "' AND X.TestCode = '" + SelectedOverViewItemData.TestCode + "' AND X.ParentNo = '" + SelectedOverViewItemData.ParentNo + "' ";
//strQuery += "ORDER BY X.TestDate, X.ProductNo, X.ParentNo ASC;";
strQuery += "ORDER BY X.TestDate ASC, X.FirstTestTime ASC;";
if (DatabaseConnControl.ScanLongTermLog)
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,353 @@
using DataBaseConnection.Control;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.DataManager
{
public class DMOverview
{
public enum eCommand
{
PowerON,
PowerOFF,
QUERY
}
public enum eColList
{
TestDate,
StationName,
Host,
Section,
ProductID,
Start,
Final,
ProductNo,
TestType,
ParentNo,
TestListFileNo,
TestListVariantNo,
TestCode,
FileVersion,
FileCode,
StepVersion,
FirstTestTime,
FinalTestTime,
Total,
OK,
NG, //NOK,
TestListCntID
}
public enum eColListHide
{
TestListCntID,
RN
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
private SqlConnection LongTermDBConn { get; set; }
private SqlCommand SQLCmd { get; set; }
public void SetSqlCommandCancel()
{
CTS.Cancel();
}
public bool GetSqlCommandCancelState()
{
return CTS.IsCancellationRequested;
}
public string strOverviewUseQuery;
eOverviewModelNameInfo GetSelectInfo;
CancellationTokenSource CTS;
CancellationToken CT;
IDataBaseController GetDBController;
public DMOverview(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
{
GetSelectInfo = SelectInfo;
DBConn = getDBController.GetMainConn();
GetDBController = getDBController;
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().First().Value;
}
strOverviewUseQuery = string.Empty;
CTS = new CancellationTokenSource();
CT = CTS.Token;
}
public async Task<DataTable> GetDataView(eSelectDataView SelectView, DateTime dtStart, DateTime dtEnd, OverviewSearchOption inputOption, bool bUseMainConn = false, string strTestQuery = "")
{
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
LongTermDBConn = GetDBController.GetLongTermConn1().Where(x => x.Key.Contains(dtStart.Year.ToString()))?.FirstOrDefault().Value;
if(LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn1().FirstOrDefault().Value;
}
DatabaseConnControl.SelectLongTermCatalogNameCon1 = LongTermDBConn.Database;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
LongTermDBConn = GetDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtStart.Year.ToString()))?.FirstOrDefault().Value;
if (LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn2().FirstOrDefault().Value;
}
DatabaseConnControl.SelectLongTermCatalogNameCon2 = LongTermDBConn.Database;
}
DataTable dtResult = new DataTable();
string strGetUseQuery = string.Empty;
CTS = new CancellationTokenSource();
CT = CTS.Token;
//For Test
/*
try
{
await Task.Delay(5000, CT);
}
catch
{
}
*/
Tuple<DataTable, string> dtRawInfo = await GetRawResult(dtStart, dtEnd, inputOption, bUseMainConn, strTestQuery);
strOverviewUseQuery = dtRawInfo.Item2;
return dtRawInfo.Item1;
}
private async Task<Tuple<DataTable, string>> GetRawResult(DateTime dtStart, DateTime dtEnd, OverviewSearchOption inputOption, bool bUseMainConn = false, string strTestQuery = "")
{
DataTable dtResult = new DataTable();
bool bFullScanOn = false;
string strQuery = string.Empty;
DateTime dtNow = DateTime.Now;
string strGetSendQuery = string.Empty;
strQuery += $"SELECT * FROM (";
strQuery += $"SELECT ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.[TestDT] AS DATE) AS {eColList.TestDate.ToString()},";
if (inputOption.DisplayByStation)
{
strQuery += $"{DMCommon.SummaryLogTable}.[StationName] AS {eColList.StationName.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[HostID] AS {eColList.Host.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Section] AS {eColList.Section.ToString()},";
}
//
strQuery += $"Y.ModelName,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestType] AS {eColList.TestType.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_C] AS {eColList.ProductNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Testcode] AS {eColList.TestCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdNo_P] AS {eColList.ParentNo.ToString()},";
if (inputOption.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.[ProductID] as {eColList.ProductID.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo] AS {eColList.TestListFileNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo] AS {eColList.TestListVariantNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[ProdCode] AS {eColList.FileCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[Version] AS {eColList.FileVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[StepVersion] AS {eColList.StepVersion.ToString()},";
strQuery += $"CONVERT(CHAR(8), MIN({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FirstTestTime.ToString()},";
strQuery += $"CONVERT(CHAR(8), MAX({DMCommon.SummaryLogTable}.[TestDT]), 108) AS {eColList.FinalTestTime.ToString()},";
strQuery += $"COUNT({DMCommon.SummaryLogTable}.[Result]) AS {eColList.Total.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] = 'OK' THEN 1 END) AS {eColList.OK.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.[Result] != 'OK' THEN 1 END) AS {eColList.NG.ToString()},";
if (inputOption.DisplayByStation)
{
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[HostID], {DMCommon.SummaryLogTable}.[Section] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID]";
}
else
{
strQuery += $"ROW_NUMBER() OVER(PARTITION BY {DMCommon.SummaryLogTable}.[ProdNo_C], {DMCommon.SummaryLogTable}.[Testcode] ORDER BY CONVERT(CHAR(23), MAX({DMCommon.SummaryLogTable}.[TestDT]), 121) DESC) AS RN,";
strQuery = strQuery.Remove(strQuery.Length - 1, 1);
}
strQuery += " ";
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
strQuery += $"WITH(NOLOCK) ";
//strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = CONVERT(NVARCHAR, {DMCommon.SummaryLogTable}.[TestListVariantNo]) ";
switch(GetSelectInfo)
{
case eOverviewModelNameInfo.L:
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P1:
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
case eOverviewModelNameInfo.P2:
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [P2].[CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
break;
}
/*
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Variant] AS X WITH(NOLOCK) ON X.No = {DMCommon.SummaryLogTable}.[TestListVariantNo] ";
strQuery += $"LEFT JOIN [CPXV2].[dbo].[PROD_Group] AS Y WITH(NOLOCK) ON Y.No = X.GroupNo ";
*/
strQuery += $"WHERE ";
if (inputOption.ProductID.Length > 0 && inputOption.FullScanData)
{
bFullScanOn = true;
}
else
strQuery += $"TestDT >= '{dtStart.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{dtEnd.ToString("yyyy-MM-dd HH:mm:ss")}' AND ";
strQuery += $"ProdNo_C NOT IN('PowerON', 'PowerOFF', 'QUERY') AND ";
strQuery += $"ProductID NOT IN('PowerON', 'PowerOFF', 'QUERY') ";
if (inputOption.ProductID.Length > 0)
{
strQuery += $"AND ProductID = '{inputOption.ProductID}' ";
}
strQuery += $"GROUP BY ";
strQuery += $"CAST({DMCommon.SummaryLogTable}.TestDT AS DATE),";
//
strQuery += $"Y.ModelName,";
if (inputOption.DisplayByStation)
{
strQuery += $"{DMCommon.SummaryLogTable}.StationName,";
strQuery += $"{DMCommon.SummaryLogTable}.HostID,";
strQuery += $"{DMCommon.SummaryLogTable}.Section,";
strQuery += $"{DMCommon.SummaryLogTable}.TestListCntID,";
}
if (inputOption.ProductID.Length > 0)
strQuery += $"{DMCommon.SummaryLogTable}.ProductID,";
strQuery += $"{DMCommon.SummaryLogTable}.TestType,";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C,";
strQuery += $"{DMCommon.SummaryLogTable}.Testcode,";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P,";
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode,";
strQuery += $"{DMCommon.SummaryLogTable}.Version,";
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion";
strQuery += " ";
strQuery += ") AS X WHERE X.RN = 1 ";
if (inputOption.DisplayByStation)
{
strQuery += "ORDER BY Host, Section ASC;";
//strQuery += "ORDER BY Host, Section DESC;";
}
else
{
strQuery += "ORDER BY ProductNo, ParentNo ASC;";
//strQuery += ";";
}
if (strTestQuery.Length > 0)
strQuery = strTestQuery;
strGetSendQuery = strQuery;
if (bUseMainConn)
{
SQLCmd = new SqlCommand(strQuery, DBConn);
}
else
{
if (DatabaseConnControl.ScanLongTermLog)
{
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
}
else
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
}
if(bFullScanOn)
SQLCmd.CommandTimeout = DMCommon.nFullScanTime;
else
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = null;
try
{
dtReader = await SQLCmd.ExecuteReaderAsync(CT);
}
catch(Exception e)
{
if (dtReader != null)
{
dtReader.Close();
dtReader = null;
}
}
finally
{
if (dtReader != null)
{
dtResult.Load(dtReader);
dtReader.Close();
}
}
return new Tuple<DataTable, string>(dtResult, strGetSendQuery);
}
}
}

View File

@ -0,0 +1,189 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using DataBaseConnection.Control;
namespace SystemX.Product.TRA.DataManager
{
public class DMProductHistory
{
public enum eColList
{
LastTestDateTime,
ProductID,
ProductNo,
TestType,
TestCode,
ParentNo,
FileVersion,
FileCode,
StepVersion,
AvgDuration,
TestResult,
OK,
NG, //NOK,
TestlistNo,
TestlistFile,
TestlistReqID
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
private SqlConnection LongTermDBConn { get; set; }
private SqlCommand SQLCmd { get; set; }
public DMProductHistory(eSelectDataView SelectView, IDataBaseController getDBController)
{
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().First().Value;
}
}
public DataTable SearchTestHistory(SelectedDataCollection data, TestHistorySearchOption option)
{
DataTable dtResult = GetRawResult(data, option);
return dtResult;
}
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
DateTime dtNow = DateTime.Now;
DateTime dtCheckTime = DateTime.Now;
if (option.Time_WholeRange)
dtCheckTime = data.SearchRangeStart;
else if (option.Time_SelectedTest)
dtCheckTime = data.StartTime;
else if (option.Time_Day)
dtCheckTime = data.StartTime;
strQuery += $"select ";
strQuery += $"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},";
//strQuery += $"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.LastTestDateTime.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},";
strQuery += $"avg(CONVERT(int, {DMCommon.SummaryLogTable}.Duration)) as {eColList.AvgDuration.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.Result = 'OK' THEN 1 ELSE 0 END) as {eColList.OK.ToString()},";
strQuery += $"COUNT(CASE WHEN {DMCommon.SummaryLogTable}.Result = '-' THEN 0 WHEN {DMCommon.SummaryLogTable}.Result != 'OK' THEN 1 ELSE 0 END) as {eColList.NG.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestlistNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestlistFile]";
strQuery += " ";
strQuery += $"from {DMCommon.SummaryLogTable} ";
strQuery += $"WITH(NOLOCK) ";
if (option.Time_WholeRange)
strQuery += $"where TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' and TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ";
else if(option.Time_SelectedTest)
strQuery += $"where TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' and TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ";
else if(option.Time_Day)
strQuery += $"where TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' and TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ";
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
strQuery += $" and (StationName = '{data.StationName}' or StationName = '-') ";
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
strQuery += $" and (HostID = '{data.HostID}' or HostID = '-') ";
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
strQuery += $" and (Section = '{data.SectionID}' or Section = '-') ";
if (option.TestType)
strQuery += $" and (TestType = '{data.TestType}' or TestType = '-') ";
if (option.ProductNo)
{
strQuery += $" and (ProdNo_C = '{data.ProductNo}' ";
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
{
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
strQuery += $"or ProdNo_C = '{strCmd}'";
}
strQuery += $" )";
}
if (option.TestCode)
strQuery += $" and (Testcode = '{data.TestCode}' or Testcode = '-') ";
if (option.ParentNo)
strQuery += $" and (ProdNo_P = '{data.ParentNo}' or ProdNo_P = '-') ";
if (option.ProductionCode)
strQuery += $" and (ProdCode = '{data.ProductionCode}' or ProdCode = '-') ";
if (option.FileVersion)
strQuery += $" and (Version = '{data.FileVersion}' or Version = '-') ";
if (option.StepVersion)
strQuery += $" and (StepVersion = '{data.StepVersion}' or StepVersion = '-1') ";
if (option.Time_SelectedTest)
strQuery += $" and (TestListCntID = '{data.TestRequestID[0]}' or TestListCntID = '-') ";
strQuery += $" group by ";
strQuery += $" {DMCommon.SummaryLogTable}.ProductID, ";
strQuery += $" {DMCommon.SummaryLogTable}.TestType, ";
strQuery += $" {DMCommon.SummaryLogTable}.ProdNo_C, ";
strQuery += $" {DMCommon.SummaryLogTable}.Testcode, ";
strQuery += $" {DMCommon.SummaryLogTable}.ProdNo_P, ";
strQuery += $" {DMCommon.SummaryLogTable}.ProdCode, ";
strQuery += $" {DMCommon.SummaryLogTable}.Version, ";
strQuery += $" {DMCommon.SummaryLogTable}.StepVersion, ";
strQuery += $" {DMCommon.SummaryLogTable}.TestlistNo, ";
strQuery += $" {DMCommon.SummaryLogTable}.TestlistFile ";
strQuery += " ";
//strQuery += $"order by ";
//strQuery += $"{DMCommon.SummaryLogTable}.TestDT";
strQuery += ";";
if (DatabaseConnControl.ScanLongTermLog)
SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,176 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using DataBaseConnection.Control;
namespace SystemX.Product.TRA.DataManager
{
public class DMStepTrend
{
public SqlConnection DBConn { get; private set; }
public SqlConnection ShortTermDBConn { get; private set; }
public SqlConnection LongTermDBConn { get; private set; }
private SqlCommand SQLCmd { get; set; }
eSelectDataView TrendSelectView { get; set; }
IDataBaseController GetDBController;
public DMStepTrend(eSelectDataView SelectView, IDataBaseController getDBController, DateTime dtStart)
{
GetDBController = getDBController;
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
TrendSelectView = eSelectDataView.DataDocumentViewC1;
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().Where(x=>x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
TrendSelectView = eSelectDataView.DataDocumentViewC2;
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
}
public DataTable SearchTestResult(DateTime dtTest, ulong nAccNo)
{
if (TrendSelectView == eSelectDataView.DataDocumentViewC1)
{
TrendSelectView = eSelectDataView.DataDocumentViewC1;
ShortTermDBConn = GetDBController.GetShortTermConn1();
LongTermDBConn = GetDBController.GetLongTermConn1().Where(x => x.Key.Contains(dtTest.Year.ToString())).First().Value;
}
else if (TrendSelectView == eSelectDataView.DataDocumentViewC2)
{
TrendSelectView = eSelectDataView.DataDocumentViewC2;
ShortTermDBConn = GetDBController.GetShortTermConn2();
LongTermDBConn = GetDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtTest.Year.ToString())).First().Value;
}
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
//string strLongTerm = "HIST_TestResult";
//string strShortTerm = "HIST_TestResult";
//DateTime dtNow = DateTime.Now;
//int nDiffMonth = 12 * (dtNow.Year - dtTest.Year) + (dtNow.Month - dtTest.Month);
//string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
strQuery += $"SELECT ";
strQuery += $"*";
strQuery += " ";
strQuery += $"from {DMCommon.ResultLogTable} ";
strQuery += $"WITH(NOLOCK) ";
strQuery += $"where [No] = {nAccNo}";
strQuery += " ";
//strQuery += $"order by ";
//strQuery += $"[No]";
strQuery += ";";
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
public DataTable GetTestStepResults(DateTime dtTest, List<ulong> vnData)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
//string strLongTerm = "HIST_TestResult";
//string strShortTerm = "HIST_TestResult";
//DateTime dtNow = DateTime.Now;
//int nDiffMonth = 12 * (dtNow.Year - dtTest.Year) + (dtNow.Month - dtTest.Month);
//string strTableTerm = nDiffMonth > 3 ? strLongTerm : strShortTerm;
strQuery += $"SELECT ";
strQuery += $"*";
strQuery += " ";
strQuery += $"from {DMCommon.ResultLogTable} ";
strQuery += $"WITH(NOLOCK) ";
strQuery += $"where ";
int nIdx = 0;
foreach (ulong no in vnData)
{
strQuery += $"No = {no}";
if (nIdx < vnData.Count - 1)
strQuery += " or ";
nIdx++;
}
strQuery += " ";
strQuery += $"order by ";
strQuery += $"[No]";
strQuery += ";";
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
DataTable GetRawResult(DetailTestDataCollection data)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,303 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.CP.TRA;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using SystemX.Net.Platform.SystemX.Net.XEFCore;
using CPXV2Log = SystemX.Net.Platform.SystemX.Net.XEFCore.DBContext.CPXV2Log;
using CPXV2LogJson = SystemX.Net.Platform.SystemX.Net.XEFCore.DBContext.CPXV2LogJson;
using Newtonsoft.Json;
using DataBaseConnection.Control;
using SystemX.Common.Util;
namespace SystemX.Product.TRA.DataManager
{
public class DMTestDetail
{
public enum eColHideListLog
{
No,
AccessKey,
//TestID
}
public enum eColTestLog
{
No,
StepID,
MeasVal,
MeasValStr,
Message,
GlobalMin,
GlobalMax,
Result,
SpentTime,
DataDT
}
public enum eColHideListTL
{
No,
TestListNo,
StepVersion,
Enable,
IsGlobal,
UpdateDT
}
public enum eColTestlist
{
No,
TestListNo,
StepID,
Variant,
Gate,
Activate,
StepVersion,
Enable,
Position,
StepDesc,
UseFunction,
SpecMin,
SpecMax,
Dim,
IsGlobal,
UpdateDT
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
public SqlConnection LongTermDBConn { get; private set; }
private SqlCommand SQLCmd { get; set; }
private IDataBaseController DBControllers { get; set; }
public eSelectDataView NgHistorySelectView { get; set; }
public DMTestDetail(eSelectDataView SelectView, IDataBaseController getDBController, DateTime dtStart)
{
DBControllers = getDBController;
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
NgHistorySelectView = eSelectDataView.DataDocumentViewC1;
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().Where(x=>x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
NgHistorySelectView = eSelectDataView.DataDocumentViewC2;
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
}
public DataTable SearchTestlist(DetailTestDataCollection data)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
/*
--최신 목록 스텝 Index Seek 특정 버전 이하 만 찾기
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC)
AS RN FROM VRFY_Release WITH (INDEX=[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = 28 AND StepVersion <= 18) AS X
WHERE X.RN = 1 ORDER BY X.StepID ASC;
--최신 목록 스텝 Index Seek
SELECT * FROM (SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC)
AS RN FROM VRFY_Release WITH (INDEX=[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = 4) AS X
WHERE X.RN = 1 ORDER BY X.StepID ASC;
*/
/*
strQuery += $"SELECT * FROM(SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_Release WITH(INDEX =[CSK_VRFY_Release_1], NOLOCK) WHERE TestlistNo = {data.TestlistNo}) AS X " +
$"WHERE X.RN = 1 ORDER BY X.StepID ASC;";
*/
strQuery = $"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
$"WHERE A.ProdNo_C = '{data.ProductNo}' AND D.TestCode = '{data.TestCode}' AND E.TestType = '{data.TestType}' AND E.Version = '{data.FileVersion}' AND E.ProdCode = '{data.FileCode}';";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
DataTable dtCompResult = new DataTable();
dtCompResult.Load(dtCompReader);
if (Commons.isHasRow(dtCompResult) == false)
return dtResult;
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
dtCompReader.Close();
string strGetTestListFileNo = string.Empty;
if (strCompVariNo.CompareTo(data.TestListVariantNo) == 0 &&
strCompFileNo.CompareTo(data.TestListFileNo) == 0)
strGetTestListFileNo = data.TestListFileNo;
else
strGetTestListFileNo = strCompFileNo;
strQuery = $"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} " +
$"AND StepVersion <= {data.StepVersion}) X WHERE RN = 1 ORDER BY X.StepID ASC;";
/*strQuery += $"SELECT ";
strQuery += $"*";
strQuery += " ";
strQuery += $"from [VRFY_Release] ";
strQuery += $"WITH(NOLOCK) ";
strQuery += $"where [TestListNo] = {data.TestlistNo}";
strQuery += " ";
strQuery += $"order by ";
strQuery += $"[StepID]";
strQuery += ";";*/
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
//PK 키 지정
DataColumn[] keys1 = new DataColumn[1];
keys1[0] = new DataColumn();
keys1[0] = dtResult.Columns["StepID"];
dtResult.PrimaryKey = keys1;
//StepID 마다 가장 높은 버전 찾기
//SQL 수정으로 사용 X
//dtResult = RefineStepVersion(dtResult, data);
return dtResult;
}
public DataTable RefineStepVersion(DataTable dtTestlist, DetailTestDataCollection data)
{
var DuplicatedSteps = dtTestlist.AsEnumerable().GroupBy(x => x[eColTestlist.StepID.ToString()]).
Select(x => new { StepID = x.Key, Count = x.Count() }).Where(x => x.Count > 1);
foreach(var value in DuplicatedSteps)
{
List<DataRow> vdtRow = dtTestlist.AsEnumerable().Where(x => x[eColTestlist.StepID.ToString()].ToString() == value.StepID.ToString()).ToList();
DataRow vExcRow = vdtRow.Where(x => x[eColTestlist.StepVersion.ToString()].ToString() == data.StepVersion).FirstOrDefault();
if(vExcRow == null)
{
int nMaxVer = vdtRow.Max(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]));
vExcRow = vdtRow.Where(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]) == nMaxVer).FirstOrDefault();
}
vdtRow.Remove(vExcRow);
foreach (DataRow dtRow in vdtRow)
dtTestlist.Rows.Remove(dtRow);
}
return dtTestlist;
}
public DataTable SearchTestHistory(DetailTestDataCollection data)
{
if (NgHistorySelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = DBControllers.GetShortTermConn1();
LongTermDBConn = DBControllers.GetLongTermConn1().Where(x => x.Key.Contains(data.StartTime.Year.ToString())).First().Value;
}
else if (NgHistorySelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = DBControllers.GetShortTermConn2();
LongTermDBConn = DBControllers.GetLongTermConn2().Where(x => x.Key.Contains(data.StartTime.Year.ToString())).First().Value;
}
DataTable dtResult = new DataTable();
List<CPXV2Log.Tables.HIST_TestResult> list = new List<CPXV2Log.Tables.HIST_TestResult>();
StringBuilder strQuery = new StringBuilder();
if (data == null)
return dtResult;
strQuery.Append($"SELECT ");
strQuery.Append($"*");
strQuery.Append(" ");
strQuery.Append($"FROM {DMCommon.ResultLogTable} ");
strQuery.Append($"WITH(NOLOCK) ");
strQuery.Append($"WHERE No='{data.No}' ");
strQuery.Append(";");
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery.ToString(), LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery.ToString(), ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
if (dtResult.Rows.Count > 0)
{
var logData = dtResult.Rows[0]["LogData"].ToString();
var decompStr = logData.GzipDecompress();
list = JsonConvert.DeserializeObject<List<CPXV2Log.Tables.HIST_TestResult>>(decompStr);
dtResult = list.ToDataTable();
}
return dtResult;
}
DataTable GetRawResult(DetailTestDataCollection data)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,213 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using DataBaseConnection.Control;
namespace SystemX.Product.TRA.DataManager
{
public class DMTestHistory
{
public enum eColList
{
No,
TestDateTime,
StationName,
Host,
Section,
ProductID,
ProductNo,
TestType,
TestCode,
ParentNo,
FileVersion,
FileCode,
StepVersion,
Duration,
TestResult,
//OK,
//NOK,
TestListFileNo,
TestListVariantNo,
TestlistFileName,
TestlistReqID
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
private SqlConnection LongTermDBConn { get; set; }
private SqlCommand SQLCmd { get; set; }
IDataBaseController GetDBController;
public DMTestHistory(eSelectDataView SelectView, IDataBaseController getDBController)
{
GetDBController = getDBController;
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().First().Value;
}
}
public DataTable SearchTestHistory(eSelectDataView SelectView, SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
{
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
LongTermDBConn = GetDBController.GetLongTermConn1().Where(x => x.Key.Contains(data.StartTime.Year.ToString()))?.FirstOrDefault().Value;
if (LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn1().FirstOrDefault().Value;
}
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
LongTermDBConn = GetDBController.GetLongTermConn2().Where(x => x.Key.Contains(data.StartTime.Year.ToString()))?.FirstOrDefault().Value;
if (LongTermDBConn == null)
{
LongTermDBConn = GetDBController.GetLongTermConn2().FirstOrDefault().Value;
}
}
DataTable dtResult = GetRawResult(data, option, nReqIdPos);
return dtResult;
}
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
DateTime dtCheckTime = DateTime.Now;
//데이터 검색 시작 시간 확인
if (option.Time_WholeRange)
dtCheckTime = data.SearchRangeStart;
else if (option.Time_SelectedTest)
dtCheckTime = data.StartTime;
else if (option.Time_Day)
dtCheckTime = data.StartTime;
DateTime dtNow = DateTime.Now;
int nDiffMonth = 12 * (dtNow.Year - dtCheckTime.Year) + (dtNow.Month - dtCheckTime.Month);
if (data == null)
return dtResult;
strQuery += $"SELECT ";
strQuery += $"{DMCommon.SummaryLogTable}.No,";
strQuery += $"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.TestDateTime.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.StationName as {eColList.StationName.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.HostID as {eColList.Host.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Section as {eColList.Section.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Duration as {eColList.Duration.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.Result as {eColList.TestResult.ToString()},";
//strQuery += $"CASE WHEN {DMCommon.SummaryLogTable}.Result = 'OK' THEN 1 ELSE 0 END as {eColList.OK.ToString()},";
//strQuery += $"CASE WHEN {DMCommon.SummaryLogTable}.Result = '-' THEN 0 WHEN {DMCommon.SummaryLogTable}.Result != 'OK' THEN 1 ELSE 0 END as {eColList.NG.ToString()},";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListVariantNo],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListFileName],";
strQuery += $"{DMCommon.SummaryLogTable}.[TestListCntID] as {eColList.TestlistReqID.ToString()}";
strQuery += " ";
strQuery += $"FROM {DMCommon.SummaryLogTable} ";
strQuery += $"WITH(NOLOCK) ";
if (option.Time_WholeRange)
strQuery += $"where TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' and TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ";
else if(option.Time_SelectedTest)
strQuery += $"where TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' and TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ";
else if(option.Time_Day)
strQuery += $"where TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' and TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ";
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
strQuery += $" and (StationName = '{data.StationName}' or StationName = '-') ";
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
strQuery += $" and (HostID = '{data.HostID}' or HostID = '-') ";
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
strQuery += $" and (Section = '{data.SectionID}' or Section = '-') ";
if (option.TestType)
strQuery += $" and (TestType = '{data.TestType}' or TestType = '-') ";
if (option.ProductNo)
{
strQuery += $" and (ProdNo_C = '{data.ProductNo}' ";
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
{
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
strQuery += $"or ProdNo_C = '{strCmd}'";
}
strQuery += $" )";
}
if (option.TestCode)
strQuery += $" and (Testcode = '{data.TestCode}' or Testcode = '-') ";
if (option.ParentNo)
strQuery += $" and (ProdNo_P = '{data.ParentNo}' or ProdNo_P = '-') ";
if (option.ProductionCode)
strQuery += $" and (ProdCode = '{data.ProductionCode}' or ProdCode = '-') ";
if (option.FileVersion)
strQuery += $" and (Version = '{data.FileVersion}' or Version = '-') ";
if (option.StepVersion)
strQuery += $" and (StepVersion = '{data.StepVersion}' or StepVersion = '-1') ";
if (option.Time_SelectedTest)
{
if(nReqIdPos == int.MaxValue)
strQuery += $" and (TestListCntID = '{data.TestRequestID[0]}' or TestListCntID = '-') ";
else
strQuery += $" and (TestListCntID = '{data.TestRequestID[nReqIdPos]}' or TestListCntID = '-') ";
}
//if (option.ShowRedundantData)
// strQuery += $" group by {DMCommon.SummaryLogTable}.ProductID ";
strQuery += " ";
strQuery += $"ORDER BY ";
strQuery += $"{DMCommon.SummaryLogTable}.TestDT";
strQuery += ";";
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,281 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.CP.TRA;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using DataBaseConnection.Control;
namespace SystemX.Product.TRA.DataManager
{
public class DMTestNgHistory
{
public enum eColList
{
No,
TestDateTime,
StationName,
Host,
Section,
ProductID,
ProductNo,
TestType,
TestCode,
ParentNo,
FileVersion,
FileCode,
StepVersion,
Duration,
TestResult,
//OK,
//NOK,
TestListFileNo,
TestListVariantNo,
TestlistFileName,
TestlistReqID
}
private SqlConnection DBConn { get; set; }
private SqlConnection ShortTermDBConn { get; set; }
private SqlConnection LongTermDBConn { get; set; }
private SqlCommand SQLCmd { get; set; }
private IDataBaseController DBControllers { get; set; }
public eSelectDataView NgHistorySelectView { get; set; }
public DMTestNgHistory(eSelectDataView SelectView, IDataBaseController getDBController, DateTime dtStart)
{
DBControllers = getDBController;
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
NgHistorySelectView = eSelectDataView.DataDocumentViewC1;
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().Where(x=>x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
NgHistorySelectView = eSelectDataView.DataDocumentViewC2;
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
}
public DataTable SearchTestNgHistory(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
{
DataTable dtResult = GetRawResult(data, option, nReqIdPos);
return dtResult;
}
public int[] CheckTestListFileNo(string strProductNo, string strTestCode, string strTestType, string strFileVer, string strFileCode)
{
DataTable dtResult = new DataTable();
StringBuilder strQuery = new StringBuilder();
//string strQuery = string.Empty;
strQuery.Append($"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
$"WHERE A.ProdNo_C = '{strProductNo}' AND D.TestCode = '{strTestCode}' AND E.TestType = '{strTestType}' AND E.Version = '{strFileVer}' AND E.ProdCode = '{strFileCode}';");
SQLCmd = new SqlCommand(strQuery.ToString(), DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
DataTable dtCompResult = new DataTable();
dtCompResult.Load(dtCompReader);
if (Commons.isHasRow(dtCompResult) == false)
return new int[] { int.MinValue, int.MinValue };
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
dtCompReader.Close();
return new int[] { int.Parse(strCompFileNo), int.Parse(strCompVariNo) };
}
public DataTable GetUseTestListInformation(int nTestListNo, int nUseStepVersion)
{
DataTable dtResult = new DataTable();
StringBuilder strQuery = new StringBuilder();
//string strQuery = string.Empty;
strQuery.Append($"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {nTestListNo.ToString()} " +
$"AND StepVersion <= {nUseStepVersion.ToString()}) X WHERE RN = 1 ORDER BY X.StepID ASC;");
/*
strQuery.Append($"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {nTestListNo.ToString()} " +
$"AND StepVersion <= {nUseStepVersion.ToString()}) X ORDER BY X.StepID ASC;");
*/
SQLCmd = new SqlCommand(strQuery.ToString(), DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
//PK 지정
DataColumn[] keys1 = new DataColumn[1];
keys1[0] = new DataColumn();
keys1[0] = dtResult.Columns["StepID"];
dtResult.PrimaryKey = keys1;
return dtResult;
}
DataTable GetRawResult(SelectedDataCollection data, TestHistorySearchOption option, int nReqIdPos = int.MaxValue)
{
if (NgHistorySelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = DBControllers.GetShortTermConn1();
LongTermDBConn = DBControllers.GetLongTermConn1().Where(x => x.Key.Contains(data.SearchRangeStart.Year.ToString())).First().Value;
}
else if (NgHistorySelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = DBControllers.GetShortTermConn2();
LongTermDBConn = DBControllers.GetLongTermConn2().Where(x => x.Key.Contains(data.SearchRangeStart.Year.ToString())).First().Value;
}
DataTable dtResult = new DataTable();
//string strQuery = string.Empty;
StringBuilder strQuery = new StringBuilder();
DateTime dtCheckTime = DateTime.Now;
//데이터 검색 시작 시간 확인
if (option.Time_WholeRange)
dtCheckTime = data.SearchRangeStart;
else if (option.Time_SelectedTest)
dtCheckTime = data.StartTime;
else if (option.Time_Day)
dtCheckTime = data.StartTime;
DateTime dtNow = DateTime.Now;
if (data == null)
return dtResult;
strQuery.Append($"SELECT ");
strQuery.Append($"{DMCommon.SummaryLogTable}.No,");
strQuery.Append($"CONVERT(char(20), {DMCommon.SummaryLogTable}.TestDT, 20) as {eColList.TestDateTime.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.StationName as {eColList.StationName.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.HostID as {eColList.Host.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.Section as {eColList.Section.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.ProductID as {eColList.ProductID.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.TestType as {eColList.TestType.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdNo_C as {eColList.ProductNo.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.Testcode as {eColList.TestCode.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdNo_P as {eColList.ParentNo.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.ProdCode as {eColList.FileCode.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.Version as {eColList.FileVersion.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.StepVersion as {eColList.StepVersion.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.Duration as {eColList.Duration.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.Result as {eColList.TestResult.ToString()},");
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListFileNo],");
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListVariantNo],");
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListFileName],");
strQuery.Append($"{DMCommon.SummaryLogTable}.[TestListCntID] as {eColList.TestlistReqID.ToString()}");
strQuery.Append(" ");
strQuery.Append($"FROM {DMCommon.SummaryLogTable} ");
strQuery.Append($"WITH(NOLOCK) ");
if (option.Time_WholeRange)
strQuery.Append($"WHERE TestDT >= '{data.SearchRangeStart.ToString("yyyy-MM-dd 00:00:00")}' AND TestDT <= '{data.SearchRangeEnd.ToString("yyyy-MM-dd 23:59:59")}' ");
else if(option.Time_SelectedTest)
strQuery.Append($"WHERE TestDT >= '{data.StartTime.ToString("yyyy-MM-dd HH:mm:ss")}' AND TestDT <= '{data.EndTime.ToString("yyyy-MM-dd HH:mm:ss")}' ");
else if(option.Time_Day)
strQuery.Append($"WHERE TestDT >= '{data.StartTime.ToShortDateString()} 00:00:00' AND TestDT <= '{data.EndTime.ToShortDateString()} 23:59:59' ");
if (option.Station && !string.IsNullOrWhiteSpace(data.StationName))
strQuery.Append($" AND (StationName = '{data.StationName}' OR StationName = '-') ");
if (option.Host && !string.IsNullOrWhiteSpace(data.HostID))
strQuery.Append($" AND (HostID = '{data.HostID}' OR HostID = '-') ");
if (option.Section && !string.IsNullOrWhiteSpace(data.SectionID))
strQuery.Append($" AND (Section = '{data.SectionID}' OR Section = '-') ");
if (option.TestType)
strQuery.Append($" AND (TestType = '{data.TestType}' OR TestType = '-') ");
if (option.ProductNo)
{
strQuery.Append($" AND (ProdNo_C = '{data.ProductNo}' ");
if(option.Host && !string.IsNullOrWhiteSpace(data.HostID))
{
foreach(string strCmd in Enum.GetNames(typeof(eCommand)))
strQuery.Append($"OR ProdNo_C = '{strCmd}'");
}
strQuery.Append($" )");
}
if (option.TestCode)
strQuery.Append($" AND (Testcode = '{data.TestCode}' OR Testcode = '-') ");
if (option.ParentNo)
strQuery.Append($" AND (ProdNo_P = '{data.ParentNo}' OR ProdNo_P = '-') ");
if (option.ProductionCode)
strQuery.Append($" AND (ProdCode = '{data.ProductionCode}' OR ProdCode = '-') ");
if (option.FileVersion)
strQuery.Append($" AND (Version = '{data.FileVersion}' OR Version = '-') ");
if (option.StepVersion)
strQuery.Append($" AND (StepVersion = '{data.StepVersion}' OR StepVersion = '-1') ");
if (option.Time_SelectedTest)
{
if (nReqIdPos == int.MaxValue)
strQuery.Append($" AND (TestListCntID = '{data.TestRequestID[0]}' OR TestListCntID = '-') ");
else
strQuery.Append($" AND (TestListCntID = '{data.TestRequestID[nReqIdPos]}' OR TestListCntID = '-') ");
}
// strQuery.Append($" AND (Result = 'NG' OR Result = 'SYSTEM_ERROR' OR Result = 'STOP') ";
strQuery.Append($" AND (Result != 'OK') ");
strQuery.Append(" ");
strQuery.Append($"ORDER BY ");
strQuery.Append($"{DMCommon.SummaryLogTable}.TestDT");
strQuery.Append(";");
var query = strQuery.ToString();
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery.ToString(), LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery.ToString(), ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,447 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.CP.TRA;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.TRA.DataManager.DMOverview;
using static SystemX.Product.CP.TRA.Commons;
using DataBaseConnection.Control;
using Newtonsoft.Json;
using SystemX.Common.Util;
using CPXV2Log = SystemX.Net.Platform.SystemX.Net.XEFCore.DBContext.CPXV2Log;
namespace SystemX.Product.TRA.DataManager
{
public class DMTestSummary
{
public enum eColHideListLog
{
No,
//TestID
}
public enum eColTestLog
{
No,
//TestID,
StepID,
MeasVal,
MeasValStr,
Message,
GlobalMin,
GlobalMax,
Result
//Duration
}
public enum eColHideListTL
{
No,
TestlistNo,
StepVersion,
Enable,
IsGlobal,
UpdateDT
}
public enum eColTestlist
{
No,
TestlistNo,
StepID,
Variant,
Gate,
Activate,
StepVersion,
Enable,
Position,
StepDesc,
UseFunction,
SpecMin,
SpecMax,
Dim,
IsGlobal,
UpdateDT
}
public enum eColTestSummary
{
StepID,
Average,
Total,
OK,
NG //NOK
}
public SqlConnection DBConn { get; private set; }
public SqlConnection ShortTermDBConn { get; private set; }
public SqlConnection LongTermDBConn { get; private set; }
private SqlCommand SQLCmd { get; set; }
public DataTable dtHistVersionTL;
eSelectDataView TestSummarySelectView { get; set; }
IDataBaseController GetDBController;
public int nCurrentTLMaxStepVersion { get; set; }
//public DataTable this[int i] => dtEachVersionTL[i];
public DMTestSummary(eSelectDataView SelectView, IDataBaseController getDBController, DateTime dtStart)
{
GetDBController = getDBController;
DBConn = getDBController.GetMainConn();
if (SelectView == eSelectDataView.DataDocumentViewC1)
{
TestSummarySelectView = eSelectDataView.DataDocumentViewC1;
ShortTermDBConn = getDBController.GetShortTermConn1();
LongTermDBConn = getDBController.GetLongTermConn1().Where(x=>x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
else if (SelectView == eSelectDataView.DataDocumentViewC2)
{
TestSummarySelectView = eSelectDataView.DataDocumentViewC2;
ShortTermDBConn = getDBController.GetShortTermConn2();
LongTermDBConn = getDBController.GetLongTermConn2().Where(x => x.Key.Contains(dtStart.Year.ToString())).First().Value;
}
}
public DataTable SearchTestlist(SelectedDataCollection data, int nHistChkStepVer = int.MinValue, bool bOnlyNewStepVersion = true)
{
DataTable dtResult = new DataTable();
DataTable dtResultChk = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
strQuery = $"SELECT A.ProdNo_C, B.ProdNo_P, B.UpdateDT, D.TestCode, D.Gate1, D.Gate2, E.FileName, A.RegUserComment, B.Description, C.GroupName, C.ModelName, A.VariantNo AS 'TestListNo', A.Config, E.TestType, E.Version, E.ProdCode, B.UseTLPosition, B.TestListFileNo, E.UpdateDT AS 'TestListFileUpdateDT', A.VariantNo FROM [PROD_Release] AS A WITH(NOLOCK) " +
$"INNER JOIN(SELECT * FROM [PROD_Variant] WITH(NOLOCK)) AS B ON A.VariantNo = B.No " +
$"INNER JOIN(SELECT * FROM [PROD_Group] WITH(NOLOCK)) AS C ON B.GroupNo = C.No " +
$"INNER JOIN(SELECT * FROM [STAT_TestCode] WITH(NOLOCK)) AS D ON A.TestCodeNo = D.No " +
$"INNER JOIN(SELECT * FROM [STOR_TestListFile] WITH(NOLOCK)) AS E ON B.TestListFileNo = E.No " +
$"WHERE A.ProdNo_C = '{data.ProductNo}' AND D.TestCode = '{data.TestCode}' AND E.TestType = '{data.TestType}' AND E.Version = '{data.FileVersion}' AND E.ProdCode = '{data.ProductionCode}';";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtCompReader = SQLCmd.ExecuteReader();
DataTable dtCompResult = new DataTable();
dtCompResult.Load(dtCompReader);
if (Commons.isHasRow(dtCompResult) == false)
return dtResult;
string strCompVariNo = dtCompResult.Rows[0]["VariantNo"].ToString();
string strCompFileNo = dtCompResult.Rows[0]["TestListFileNo"].ToString();
dtCompReader.Close();
string strGetTestListFileNo = string.Empty;
if (strCompVariNo.CompareTo(data.TestListVariantNo) == 0 &&
strCompFileNo.CompareTo(data.TestListFileNo) == 0)
strGetTestListFileNo = data.TestListFileNo;
else
strGetTestListFileNo = strCompFileNo;
strQuery = $"SELECT LatestStepVersion FROM [HIST_TestListFileLatestStepVersion] WITH(NOLOCK) WHERE TestListFileNo = {strGetTestListFileNo};";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReaderChk = SQLCmd.ExecuteReader();
dtResultChk.Clear();
dtResultChk.Load(dtReaderChk);
int nMaxStepVersion = Convert.ToInt32(dtResultChk.Rows[0]["LatestStepVersion"].ToString());
nCurrentTLMaxStepVersion = nMaxStepVersion;
dtReaderChk.Close();
//항상 최신 스텝 버전을 체크
strQuery = $"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo}) AS X " +
$"WHERE X.RN = 1 ORDER BY X.StepID ASC;";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Clear();
dtResult.Load(dtReader);
dtReader.Close();
if (bOnlyNewStepVersion)
{
dtHistVersionTL = null;
}
else
{
//Hist 목록 검색 스텝 버전 리스트만 검색하여 사용
dtHistVersionTL = new DataTable();
strQuery = $"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} AND StepVersion <= {nHistChkStepVer}) AS X " +
$"WHERE X.RN = 1 ORDER BY X.StepID ASC, StepVersion DESC;";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtHistReader = SQLCmd.ExecuteReader();
dtHistVersionTL.Clear();
dtHistVersionTL.Load(dtHistReader);
dtHistReader.Close();
//PK 키 지정 >
//TODO : Primary Key Access Error > 업데이트 된 동일 스텝이 존재시 PK 지정 실패
DataColumn[] keysHistStepVer = new DataColumn[1];
keysHistStepVer[0] = new DataColumn();
keysHistStepVer[0] = dtHistVersionTL.Columns["StepID"];
dtHistVersionTL.PrimaryKey = keysHistStepVer;
/*
dtEachVersionTL = new DataTable[nMaxStepVersion + 1];
int nStartStepVer = nMaxStepVersion - 5;
if (nStartStepVer < 0)
nStartStepVer = 0;
for (int i = nStartStepVer; i <= nMaxStepVersion; i++)
{
dtEachVersionTL[i] = new DataTable();
strQuery = $"SELECT * FROM ( " +
$"SELECT *, ROW_NUMBER() OVER(PARTITION BY StepID ORDER BY StepVersion DESC) " +
$"AS RN FROM VRFY_TestListFileRelease WITH (NOLOCK, INDEX=[CSK_VRFY_Release_2]) WHERE TestListFileNo = {strGetTestListFileNo} AND StepVersion <= {i}) AS X " +
$"WHERE X.RN = 1 ORDER BY X.StepID ASC, StepVersion DESC;";
SQLCmd = new SqlCommand(strQuery, DBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtEachVersionTL[i].Clear();
dtEachVersionTL[i].Load(dtReader);
dtReader.Close();
//PK 키 지정 >
//TODO : Primary Key Access Error > 업데이트 된 동일 스텝이 존재시 PK 지정 실패
DataColumn[] keysEachStepVer = new DataColumn[1];
keysEachStepVer[0] = new DataColumn();
keysEachStepVer[0] = dtEachVersionTL[i].Columns["StepID"];
dtEachVersionTL[i].PrimaryKey = keysEachStepVer;
}
*/
}
//PK 키 지정
DataColumn[] keys1 = new DataColumn[1];
keys1[0] = new DataColumn();
keys1[0] = dtResult.Columns["StepID"];
dtResult.PrimaryKey = keys1;
return dtResult;
}
public DataTable RefineStepVersion(DataTable dtTestlist, SelectedDataCollection data)
{
var DuplicatedSteps = dtTestlist.AsEnumerable().GroupBy(x => x[eColTestlist.StepID.ToString()]).
Select(x => new { StepID = x.Key, Count = x.Count() }).Where(x => x.Count > 1);
foreach(var value in DuplicatedSteps)
{
List<DataRow> vdtRow = dtTestlist.AsEnumerable().Where(x => x[eColTestlist.StepID.ToString()].ToString() == value.StepID.ToString()).ToList();
DataRow vExcRow = vdtRow.Where(x => x[eColTestlist.StepVersion.ToString()].ToString() == data.StepVersion).FirstOrDefault();
if(vExcRow == null)
{
int nMaxVer = vdtRow.Max(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]));
vExcRow = vdtRow.Where(x => Convert.ToInt32(x[eColTestlist.StepVersion.ToString()]) == nMaxVer).FirstOrDefault();
}
vdtRow.Remove(vExcRow);
foreach (DataRow dtRow in vdtRow)
dtTestlist.Rows.Remove(dtRow);
}
return dtTestlist;
}
public DataTable SearchTestSummary(string[] testReqID, List<Int64> vnpSummaryNo)
{
DateTime start = DateTime.Now;
try
{
string requId = testReqID?.First();
if (string.IsNullOrEmpty(requId) == false && requId.Contains(";") == true || requId.Contains("@") == true)
{
start = Convert.ToDateTime(requId.Split(';', '@')[0]);
}
}
catch (Exception e)
{
//start = DateTime
}
//string strGetDataTime = testReqID?.First().Split(';')[0];
//int nGetDataTimeYYYY = Convert.ToInt32(strGetDataTime.Substring(0, 4));
//int nGetDataTimemm = Convert.ToInt32(strGetDataTime.Substring(4, 2));
//int nGetDataTimeDD = Convert.ToInt32(strGetDataTime.Substring(6, 2));
//int nGetDataTimeHH = Convert.ToInt32(strGetDataTime.Substring(8, 2));
//int nGetDataTimeMM = Convert.ToInt32(strGetDataTime.Substring(10, 2));
//int nGetDataTimeSS = Convert.ToInt32(strGetDataTime.Substring(12, 2));
//int nGetDataTimeFFF = Convert.ToInt32(strGetDataTime.Substring(14, 3));
//DateTime start = new DateTime(nGetDataTimeYYYY, nGetDataTimemm, nGetDataTimeDD, nGetDataTimeHH, nGetDataTimeMM, nGetDataTimeSS, nGetDataTimeFFF);//Convert.ToDateTime(testReqID?.First().Split('@')[0]);
if (TestSummarySelectView == eSelectDataView.DataDocumentViewC1)
{
ShortTermDBConn = GetDBController.GetShortTermConn1();
LongTermDBConn = GetDBController.GetLongTermConn1().Where(x => x.Key.Contains(start.Year.ToString())).First().Value;
}
else if (TestSummarySelectView == eSelectDataView.DataDocumentViewC2)
{
ShortTermDBConn = GetDBController.GetShortTermConn2();
LongTermDBConn = GetDBController.GetLongTermConn2().Where(x => x.Key.Contains(start.Year.ToString())).First().Value;
}
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
strQuery += $"SELECT * ";
strQuery += $"FROM {DMCommon.SummaryLogTable} AS X ";
strQuery += $"INNER JOIN {DMCommon.ResultLogTable} AS Y ON X.No = Y.No ";
strQuery += $"WHERE ";
for (int i = 0; i < vnpSummaryNo.Count; i++)
{
strQuery += $"X.[No]=N'{vnpSummaryNo[i]}' ";
if (i != vnpSummaryNo.Count - 1)
strQuery += "OR ";
}
//for(int i=0 ; i<testReqID.Length ; i++)
//{
// strQuery += $"TestListCntID=N'{testReqID[i]}' ";
// if (i != testReqID.Length - 1)
// strQuery += "OR ";
//}
strQuery += $";";
if (DatabaseConnControl.ScanLongTermLog) SQLCmd = new SqlCommand(strQuery, LongTermDBConn);
else SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
List<CPXV2Log.Tables.HIST_TestResult> list = new List<CPXV2Log.Tables.HIST_TestResult>();
for (int i=0; i<dtResult.Rows.Count; i++)
{
list.AddRange(JsonConvert.DeserializeObject<List<CPXV2Log.Tables.HIST_TestResult>>(dtResult.Rows[i]["LogData"].ToString().GzipDecompress()));
}
/*
strQuery += $"SELECT ";
strQuery += $"Y.[StepID], ";
strQuery += $"AVG(CASE WHEN (Y.[MeasValStr] = NULL OR Y.[MeasValStr] = '') AND (Y.[Message] = NULL OR Y.[Message] = '') AND (Y.[MeasVal] != 0.00000 AND Y.[Result] != 'NONE') THEN Y.[MeasVal] ELSE NULL END) AS Average, ";
strQuery += $"COUNT(Y.[Result]) AS Total, ";
strQuery += $"COUNT(CASE WHEN Y.[Result] = 'OK' THEN 1 END) AS OK, ";
strQuery += $"COUNT(CASE WHEN Y.[Result] = 'NG' OR X.[Result] = 'ERROR' THEN 1 END) AS NG ";
strQuery += $" ";
strQuery += $"FROM [{DMCommon.SummaryLogTable}] AS X WITH(NOLOCK) ";
strQuery += $"INNER JOIN [{strTableTerm}] AS Y WITH(NOLOCK) ON (Y.AccessKey BETWEEN X.AccessStart AND X.AccessEnd) ";
*/
dtResult = list.GroupBy(x => x.StepID).Select(y => new
{
StepID = y.First().StepID,
Average = GetAvg(y.ToList()),
Total = y.Count(),
OK = y.Count(z => !z.Result.Contains("NG") && !z.Result.Contains("ERROR")),
NG = y.Count() - y.Count(z => !z.Result.Contains("NG") && !z.Result.Contains("ERROR"))
}).OrderBy(y => y.StepID).ToDataTable();
return dtResult;
}
string GetAvg(List<CPXV2Log.Tables.HIST_TestResult> res)
{
CPXV2Log.Tables.HIST_TestResult value = res.First();
if (string.IsNullOrEmpty(value.MeasValStr) &&
string.IsNullOrEmpty(value.Message) &&
((value.MeasVal != 0) &&
string.Compare(value.Result, "NONE") != 0))
return res.Average(x => x.MeasVal).ToString();
string strDefaultValue = string.Empty;
if (string.IsNullOrEmpty(value.MeasValStr) == false)
strDefaultValue = value.MeasValStr;
else if (string.IsNullOrEmpty(value.Message) == false)
strDefaultValue = value.Message;
return strDefaultValue;
}
DataTable GetRawResult(DetailTestDataCollection data)
{
DataTable dtResult = new DataTable();
string strQuery = string.Empty;
if (data == null)
return dtResult;
SQLCmd = new SqlCommand(strQuery, ShortTermDBConn);
SQLCmd.CommandTimeout = DMCommon.nDefaultScanTime;
DbDataReader dtReader = SQLCmd.ExecuteReader();
dtResult.Load(dtReader);
dtReader.Close();
return dtResult;
}
}
}

View File

@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.TRA.UIControl;
using static SystemX.Product.ALIS.UI.View.ViewCfg;
namespace SystemX.Product.ALIS.Interface
{
public interface IChildController
{
void SetOverview();
void SetDetailOverview();
void SetHistoryView();
void SetSummaryView();
void CallDetailOverView();
void AnnounceContentsType(eContents GetType);
bool GetOverviewMergeState();
SelectedDataCollection GetSelectDataOverView(int nDataValue = int.MaxValue);
void SetNgHistView(eContents GetCallType);
}
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.ALIS.Interface
{
interface IChildSubscribe
{
void setLoginStateNotice(LoginAccessLevel CurrentAccessLevel, bool bLoginState);
}
}

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.UI;
using static SystemX.Product.CP.TRA.MainForm;
namespace SystemX.Product.ALIS.Interface
{
public interface IDataBaseController
{
SqlConnection GetMainConn();
SqlConnection GetShortTermConn1();
Dictionary<string, SqlConnection> GetLongTermConn1();
SqlConnection GetShortTermConn2();
Dictionary<string, SqlConnection> GetLongTermConn2();
}
}

View File

@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SystemX.Product.ALIS.UI;
using static SystemX.Product.CP.TRA.MainForm;
namespace SystemX.Product.ALIS.Interface
{
public enum eDbTableList
{
NONE,
STAT_Host,
STAT_User,
STAT_TestCode,
PROD_Group,
PROD_TestList,
PROD_Release,
VRFY_Release,
HIST_LatestStepVersion,
HIST_LatestAccessKey,
HIST_Summary,
HIST_TestList,
HIST_TestResult,
HIST_TestResultShrotTerm,
HIST_TestResultLongTerm
}
public interface IDataController
{
SqlCommand GetConnSqlCmd();
bool GetDuplicateCheck(string strTableName, string strFieldName, string strValue);
UserInfo GetLoginInfo();
//TODO : DB CONTROL
DataTable GetTable(string strQueryText);
DataTable GetTable(eDbTableList tblName);
DataTable GetTable(eDbTableList tblName, string strColName, string strParameter);
string GetServerDateTimeString();
DateTime GetServerDateTime();
string SetConvertDateTime(string strGetConvertText);
}
}

View File

@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.ALIS.Interface
{
interface IUserControlSubscribe
{
void setLoginStateNotice(LoginAccessLevel CurrentAccessLevel, bool bLoginState);
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
DEFAULT
HEX
BIN
STR
STRING
STRCMP
ASCII

View File

@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using DevExpress.UserSkins;
using DevExpress.Skins;
using DevExpress.LookAndFeel;
using SystemX.Product.TRA;
namespace SystemX.Product.CP.TRA
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

View File

@ -0,0 +1,32 @@
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("SystemX.Product.CP.ALIS_Analysis")]
[assembly: AssemblyDescription("SystemX")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SystemX")]
[assembly: AssemblyProduct("SystemX.Product.CP.ALIS_Analysis")]
[assembly: AssemblyCopyright("Copyright © 2022")]
[assembly: AssemblyTrademark("CP-ServerX")]
[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("9006f149-aa49-4b8e-ba69-386d945fa738")]
// 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("20.22.11.29")]
[assembly: AssemblyFileVersion("20.22.11.29")]

View File

@ -0,0 +1,173 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SystemX.Product.TRA.Properties {
using System;
/// <summary>
/// 지역화된 문자열 등을 찾기 위한 강력한 형식의 리소스 클래스입니다.
/// </summary>
// 이 클래스는 ResGen 또는 Visual Studio와 같은 도구를 통해 StronglyTypedResourceBuilder
// 클래스에서 자동으로 생성되었습니다.
// 멤버를 추가하거나 제거하려면 .ResX 파일을 편집한 다음 /str 옵션을 사용하여 ResGen을
// 다시 실행하거나 VS 프로젝트를 다시 빌드하십시오.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.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() {
}
/// <summary>
/// 이 클래스에서 사용하는 캐시된 ResourceManager 인스턴스를 반환합니다.
/// </summary>
[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("SystemX.Product.TRA.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// 이 강력한 형식의 리소스 클래스를 사용하여 모든 리소스 조회에 대해 현재 스레드의 CurrentUICulture 속성을
/// 재정의합니다.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap ExplodedPie3D_16x16 {
get {
object obj = ResourceManager.GetObject("ExplodedPie3D_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Find_16x16 {
get {
object obj = ResourceManager.GetObject("Find_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Find2_16x16 {
get {
object obj = ResourceManager.GetObject("Find2_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap HistoryItem_16x16 {
get {
object obj = ResourceManager.GetObject("HistoryItem_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap IpAddress {
get {
object obj = ResourceManager.GetObject("IpAddress", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Kefico_CI {
get {
object obj = ResourceManager.GetObject("Kefico_CI", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Linear_16x16 {
get {
object obj = ResourceManager.GetObject("Linear_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap ModelEditor_DetailView {
get {
object obj = ResourceManager.GetObject("ModelEditor_DetailView", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap Password {
get {
object obj = ResourceManager.GetObject("Password", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap UpdateField_16x16 {
get {
object obj = ResourceManager.GetObject("UpdateField_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
/// <summary>
/// System.Drawing.Bitmap 형식의 지역화된 리소스를 찾습니다.
/// </summary>
internal static System.Drawing.Bitmap UpdateTableOfContents_16x16 {
get {
object obj = ResourceManager.GetObject("UpdateTableOfContents_16x16", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View File

@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="UpdateTableOfContents_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdateTableOfContents_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Password" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Password.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Linear_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Linear_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="HistoryItem_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\HistoryItem_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Kefico_CI" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Kefico CI.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="IpAddress" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\IpAddress.PNG;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="UpdateField_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\UpdateField_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Find_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Find_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ModelEditor_DetailView" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ModelEditor_DetailView.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="ExplodedPie3D_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\ExplodedPie3D_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Find2_16x16" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Find2_16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -0,0 +1,38 @@
//------------------------------------------------------------------------------
// <auto-generated>
// 이 코드는 도구를 사용하여 생성되었습니다.
// 런타임 버전:4.0.30319.42000
//
// 파일 내용을 변경하면 잘못된 동작이 발생할 수 있으며, 코드를 다시 생성하면
// 이러한 변경 내용이 손실됩니다.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SystemX.Product.TRA.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.10.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;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("Coffee")]
public string ApplicationThemeName {
get {
return ((string)(this["ApplicationThemeName"]));
}
set {
this["ApplicationThemeName"] = value;
}
}
}
}

View File

@ -0,0 +1,9 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="SystemX.Product.TRA.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="ApplicationThemeName" Type="System.String" Scope="User">
<Value Profile="(Default)">Coffee</Value>
</Setting>
</Settings>
</SettingsFile>

View File

@ -0,0 +1,16 @@
DevExpress.Patch.InMemoryPatch, DevExpress.Patch.Common, Version=7.0.0.0, Culture=neutral, PublicKeyToken=7fc7bfca2443de66
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemCheckEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemProgressBar, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraCharts.ChartControl, DevExpress.XtraCharts.v20.2.UI, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraVerticalGrid.VGridControl, DevExpress.XtraVerticalGrid.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemDateEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.Repository.RepositoryItemTextEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

Binary file not shown.

After

Width:  |  Height:  |  Size: 763 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1000 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 659 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 488 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 700 B

View File

@ -0,0 +1,340 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using SystemX.Net.Platform.Common.ExtensionMethods;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.CP.TRA
{
public class AccessLevelAlarm : EventArgs
{
public AccessLevelAlarm(LoginAccessLevel CurrentAccessLevel, bool bLoginState)
{
this.CurrentLevel = CurrentAccessLevel;
this.GetLoginState = bLoginState;
}
public LoginAccessLevel CurrentLevel { get; private set; }
public bool GetLoginState { get; private set; }
}
public static class Commons
{
static public bool DEBUG_MODE = false;
[Flags]
public enum LoginAccessLevel
{
None = 0x01,
Basic = 0x02,
Admin = 0x04
}
public enum eSelectDataView
{
DataDocumentViewC1 = 0,
DataDocumentViewC2
}
public enum eOverviewModelNameInfo
{
L = 0,
P1,
P2
}
public static bool isHasRow(DataSet ds)
{
return (ds != null) ? ds.Tables.Cast<DataTable>().Any(table => table.Rows.Count != 0) : false;
}
public static bool isHasRow(DataTable dt)
{
return (dt != null) ? dt.Rows.Count > 0 : false;
}
public static bool IsValidEmail(string email)
{
bool valid = Regex.IsMatch(email, @"[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?");
return valid;
}
public static bool CheckGateLetter(char letter)
{
Regex engRegex = new Regex(@"[A-Z]");
return engRegex.IsMatch(letter.ToString());
}
public static byte[] ConvertHexStringToByte(string convertString)
{
byte[] convertArr = new byte[convertString.Length / 2];
for (int i = 0; i < convertArr.Length; i++)
{
convertArr[i] = Convert.ToByte(convertString.Substring(i * 2, 2), 16);
}
return convertArr;
}
[DllImport("msvcrt.dll", CallingConvention = CallingConvention.Cdecl)]
static extern int memcmp(byte[] b1, byte[] b2, long count);
public static bool ByteArrayCompare(byte[] b1, byte[] b2)
{
if (b1 == null || b2 == null)
return false;
// Validate buffers are the same length.
// This also ensures that the count does not exceed the length of either buffer.
return b1.Length == b2.Length && memcmp(b1, b2, b1.Length) == 0;
}
public static T ConvertTextToTryValue<T>(string strText, object objFailValue)
{
object obj;
obj = typeof(T);
int iGetValue = 0;
uint uiGetValue = 0;
double dGetValue = 0;
if (obj.ToString().IndexOf("Int") >= 0)
{
if (!int.TryParse(strText, out iGetValue))
obj = objFailValue;
else
obj = iGetValue;
}
if (obj.ToString().IndexOf("UInt") >= 0)
{
if (!uint.TryParse(strText, out uiGetValue))
obj = objFailValue;
else
obj = uiGetValue;
}
else if (obj.ToString().IndexOf("Double") >= 0)
{
if (!double.TryParse(strText, out dGetValue))
obj = objFailValue;
else
obj = dGetValue;
}
return (T)Convert.ChangeType(obj, typeof(T));
}
public class INICtrl
{
public static int MAX_INFORMATION = 10;
protected static int FILE_ATTRIBUTE_HIDDEN = 2;
[DllImport("kernel32")]
protected static extern long WritePrivateProfileString(string section, string key, string val, string filePath);
[DllImport("kernel32")]
protected static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);
[DllImport("kernel32")]
protected static extern int SetFileAttributes(string lpFileName, int dwFileAttributes);
public virtual void SetValue(string Section, string Key, string Value, string path = "")
{
WritePrivateProfileString(Section, Key, Value, path);
}
public virtual string GetValue(string Section, string Key, string Default, string path = "")
{
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, Default, temp, 255, path);
if (temp != null && temp.Length > 0) return temp.ToString();
else return Default;
}
}
public class ConnectInfoINICtrl : INICtrl
{
private static string ConnectHistoryINIPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + @"\ConnectConfig_TRA_CPXV2.ini";
public ConnectInfoINICtrl()
{
if (File.Exists(ConnectHistoryINIPath) == false)
{
using (File.Create(ConnectHistoryINIPath)) { }
SetFileAttributes(ConnectHistoryINIPath, FILE_ATTRIBUTE_HIDDEN);
SetValue("LastestConnect", "Info", "");
}
}
public string GetUserTheme()
{
return GetValue("UserSelectTheme", "ThemeName", "Basic");
}
public void SetUserTheme(string strThemeName)
{
SetValue("UserSelectTheme", "ThemeName", strThemeName);
}
public void SetLastestConnectInfo(string strSuccessInfo1, string strSuccessInfo2, string strSuccessInfo3,
bool bCheckedInfo, int nOverInfoC1, int nOverInfoC2)
{
string strSetUpperText = strSuccessInfo1.ToUpper();
string[] strInfoSet = null;
int? findIdx = null;
if (strSuccessInfo1.CompareTo("") == 0 ||
strSuccessInfo1.CompareTo("127.0.0.1") == 0 ||
strSetUpperText.CompareTo("LOCALHOST") == 0 ||
strSuccessInfo1.IndexOf("If you do not enter the ip, will be connected to the local area.") >= 0)
{
;//
}
else
{
SetValue("LastestConnect", "Info1", strSuccessInfo1);
strInfoSet = new string[MAX_INFORMATION];
for (int i = 0; i < MAX_INFORMATION; i++)
strInfoSet[i] = GetValue("HistoryConnect" + i.ToString(), "Info1", "");
findIdx = strInfoSet.FindIndex(x => x == strSuccessInfo1);
if (findIdx == null)
{
for (int i = MAX_INFORMATION - 1; i > 0; i--)
{
if (i > 0)
strInfoSet[i] = strInfoSet[i - 1];
}
strInfoSet[0] = strSuccessInfo1;
for (int i = 0; i < MAX_INFORMATION; i++)
SetValue("HistoryConnect" + i.ToString(), "Info1", strInfoSet[i]);
}
}
//
strSetUpperText = strSuccessInfo2.ToUpper();
if (strSuccessInfo2.CompareTo("") == 0 ||
strSuccessInfo2.CompareTo("127.0.0.1") == 0 ||
strSetUpperText.CompareTo("LOCALHOST") == 0 ||
strSuccessInfo2.IndexOf("If you do not enter the ip, will be connected to the local area.") >= 0)
{
;//
}
else
{
SetValue("LastestConnect", "Info2", strSuccessInfo2);
strInfoSet = new string[MAX_INFORMATION];
for (int i = 0; i < MAX_INFORMATION; i++)
strInfoSet[i] = GetValue("HistoryConnect" + i.ToString(), "Info2", "");
findIdx = strInfoSet.FindIndex(x => x == strSuccessInfo2);
if (findIdx == null)
{
for (int i = MAX_INFORMATION - 1; i > 0; i--)
{
if (i > 0)
strInfoSet[i] = strInfoSet[i - 1];
}
strInfoSet[0] = strSuccessInfo2;
for (int i = 0; i < MAX_INFORMATION; i++)
SetValue("HistoryConnect" + i.ToString(), "Info2", strInfoSet[i]);
}
}
//
if (bCheckedInfo)
SetValue("LastestConnect", "UseDataServer2", "True");
else
SetValue("LastestConnect", "UseDataServer2", "False");
//
SetValue("LastestConnect", "OverviewModelInfoC1", nOverInfoC1.ToString());
SetValue("LastestConnect", "OverviewModelInfoC2", nOverInfoC2.ToString());
//
if (bCheckedInfo == false)
{
;//
}
else
{
strSetUpperText = strSuccessInfo3.ToUpper();
if (strSuccessInfo3.CompareTo("") == 0 ||
strSuccessInfo3.CompareTo("127.0.0.1") == 0 ||
strSetUpperText.CompareTo("LOCALHOST") == 0 ||
strSuccessInfo3.IndexOf("If you do not enter the ip, will be connected to the local area.") >= 0)
{
;//
}
else
{
SetValue("LastestConnect", "Info3", strSuccessInfo3);
strInfoSet = new string[MAX_INFORMATION];
for (int i = 0; i < MAX_INFORMATION; i++)
strInfoSet[i] = GetValue("HistoryConnect" + i.ToString(), "Info3", "");
findIdx = strInfoSet.FindIndex(x => x == strSuccessInfo3);
if (findIdx == null)
{
for (int i = MAX_INFORMATION - 1; i > 0; i--)
{
if (i > 0)
strInfoSet[i] = strInfoSet[i - 1];
}
strInfoSet[0] = strSuccessInfo3;
for (int i = 0; i < MAX_INFORMATION; i++)
SetValue("HistoryConnect" + i.ToString(), "Info3", strInfoSet[i]);
}
}
}
}
public override void SetValue(string Section, string Key, string Value, string path = "")
{
if (path.Length <= 0)
path = ConnectHistoryINIPath;
WritePrivateProfileString(Section, Key, Value, path);
}
public override string GetValue(string Section, string Key, string Default, string path = "")
{
if (path.Length <= 0)
path = ConnectHistoryINIPath;
StringBuilder temp = new StringBuilder(255);
int i = GetPrivateProfileString(Section, Key, Default, temp, 255, path);
if (temp != null && temp.Length > 0) return temp.ToString();
else return Default;
}
}
}
}

View File

@ -0,0 +1,390 @@

namespace SystemX.Product.ALIS.UI.Subs
{
partial class ConnectForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ConnectForm));
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
this.simpleButtonOK = new DevExpress.XtraEditors.SimpleButton();
this.panel1 = new System.Windows.Forms.Panel();
this.simpleButtonReset = new DevExpress.XtraEditors.SimpleButton();
this.panel2 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.maskedTextBoxTLIP = new DevExpress.XtraEditors.ComboBoxEdit();
this.panel4 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
this.panel5 = new System.Windows.Forms.Panel();
this.maskedTextBoxDT1IP = new DevExpress.XtraEditors.ComboBoxEdit();
this.panel6 = new System.Windows.Forms.Panel();
this.comboBoxOverviewModel1 = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.panel7 = new System.Windows.Forms.Panel();
this.maskedTextBoxDT2IP = new DevExpress.XtraEditors.ComboBoxEdit();
this.panel8 = new System.Windows.Forms.Panel();
this.comboBoxOverviewModel2 = new System.Windows.Forms.ComboBox();
this.checkBoxUseDT2 = new System.Windows.Forms.CheckBox();
this.label3 = new System.Windows.Forms.Label();
this.panel1.SuspendLayout();
this.panel3.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxTLIP.Properties)).BeginInit();
this.panel4.SuspendLayout();
this.panel5.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxDT1IP.Properties)).BeginInit();
this.panel6.SuspendLayout();
this.panel7.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxDT2IP.Properties)).BeginInit();
this.panel8.SuspendLayout();
this.SuspendLayout();
//
// labelControl1
//
this.labelControl1.Appearance.BackColor = System.Drawing.Color.Transparent;
this.labelControl1.Appearance.Font = new System.Drawing.Font("Times New Roman", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelControl1.Appearance.ForeColor = System.Drawing.Color.Black;
this.labelControl1.Appearance.Options.UseBackColor = true;
this.labelControl1.Appearance.Options.UseFont = true;
this.labelControl1.Appearance.Options.UseForeColor = true;
this.labelControl1.AutoEllipsis = true;
this.labelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
this.labelControl1.Dock = System.Windows.Forms.DockStyle.Top;
this.labelControl1.Location = new System.Drawing.Point(0, 0);
this.labelControl1.Name = "labelControl1";
this.labelControl1.Size = new System.Drawing.Size(366, 36);
this.labelControl1.TabIndex = 2;
this.labelControl1.Text = "Input - Access information";
//
// simpleButtonOK
//
this.simpleButtonOK.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.simpleButtonOK.Appearance.Options.UseFont = true;
this.simpleButtonOK.Dock = System.Windows.Forms.DockStyle.Right;
this.simpleButtonOK.Location = new System.Drawing.Point(1071, 0);
this.simpleButtonOK.Name = "simpleButtonOK";
this.simpleButtonOK.Size = new System.Drawing.Size(66, 64);
this.simpleButtonOK.TabIndex = 4;
this.simpleButtonOK.Text = "OK";
this.simpleButtonOK.Click += new System.EventHandler(this.simpleButtonOK_Click);
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.Controls.Add(this.simpleButtonReset);
this.panel1.Controls.Add(this.simpleButtonOK);
this.panel1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panel1.Location = new System.Drawing.Point(0, 396);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(1137, 64);
this.panel1.TabIndex = 5;
//
// simpleButtonReset
//
this.simpleButtonReset.Appearance.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.simpleButtonReset.Appearance.Options.UseFont = true;
this.simpleButtonReset.Dock = System.Windows.Forms.DockStyle.Left;
this.simpleButtonReset.Location = new System.Drawing.Point(0, 0);
this.simpleButtonReset.Name = "simpleButtonReset";
this.simpleButtonReset.Size = new System.Drawing.Size(66, 64);
this.simpleButtonReset.TabIndex = 5;
this.simpleButtonReset.Text = "Reset";
this.simpleButtonReset.Click += new System.EventHandler(this.simpleButtonReset_Click);
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.Transparent;
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 36);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1137, 3);
this.panel2.TabIndex = 6;
//
// panel3
//
this.panel3.BackColor = System.Drawing.Color.Transparent;
this.panel3.Controls.Add(this.maskedTextBoxTLIP);
this.panel3.Controls.Add(this.panel4);
this.panel3.Dock = System.Windows.Forms.DockStyle.Top;
this.panel3.Location = new System.Drawing.Point(0, 39);
this.panel3.Name = "panel3";
this.panel3.Size = new System.Drawing.Size(1137, 108);
this.panel3.TabIndex = 8;
//
// maskedTextBoxTLIP
//
this.maskedTextBoxTLIP.Dock = System.Windows.Forms.DockStyle.Fill;
this.maskedTextBoxTLIP.EditValue = "If you do not enter the ip, will be connected to the local area.";
this.maskedTextBoxTLIP.Location = new System.Drawing.Point(0, 65);
this.maskedTextBoxTLIP.Name = "maskedTextBoxTLIP";
this.maskedTextBoxTLIP.Properties.Appearance.BackColor = System.Drawing.Color.White;
this.maskedTextBoxTLIP.Properties.Appearance.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.maskedTextBoxTLIP.Properties.Appearance.ForeColor = System.Drawing.Color.Black;
this.maskedTextBoxTLIP.Properties.Appearance.Options.UseBackColor = true;
this.maskedTextBoxTLIP.Properties.Appearance.Options.UseFont = true;
this.maskedTextBoxTLIP.Properties.Appearance.Options.UseForeColor = true;
this.maskedTextBoxTLIP.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.maskedTextBoxTLIP.Size = new System.Drawing.Size(1137, 28);
this.maskedTextBoxTLIP.TabIndex = 8;
this.maskedTextBoxTLIP.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.maskedTextBoxIP_PreviewKeyDown);
//
// panel4
//
this.panel4.BackColor = System.Drawing.Color.Transparent;
this.panel4.Controls.Add(this.label2);
this.panel4.Dock = System.Windows.Forms.DockStyle.Top;
this.panel4.Location = new System.Drawing.Point(0, 0);
this.panel4.Name = "panel4";
this.panel4.Size = new System.Drawing.Size(1137, 65);
this.panel4.TabIndex = 7;
//
// label2
//
this.label2.BackColor = System.Drawing.Color.WhiteSmoke;
this.label2.Dock = System.Windows.Forms.DockStyle.Top;
this.label2.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label2.ForeColor = System.Drawing.Color.Black;
this.label2.Location = new System.Drawing.Point(0, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(1137, 51);
this.label2.TabIndex = 9;
this.label2.Text = "TestList Server";
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// panel5
//
this.panel5.BackColor = System.Drawing.Color.Transparent;
this.panel5.Controls.Add(this.maskedTextBoxDT1IP);
this.panel5.Controls.Add(this.panel6);
this.panel5.Dock = System.Windows.Forms.DockStyle.Top;
this.panel5.Location = new System.Drawing.Point(0, 147);
this.panel5.Name = "panel5";
this.panel5.Size = new System.Drawing.Size(1137, 129);
this.panel5.TabIndex = 9;
//
// maskedTextBoxDT1IP
//
this.maskedTextBoxDT1IP.Dock = System.Windows.Forms.DockStyle.Fill;
this.maskedTextBoxDT1IP.EditValue = "If you do not enter the ip, will be connected to the local area.";
this.maskedTextBoxDT1IP.Location = new System.Drawing.Point(0, 85);
this.maskedTextBoxDT1IP.Name = "maskedTextBoxDT1IP";
this.maskedTextBoxDT1IP.Properties.Appearance.BackColor = System.Drawing.Color.White;
this.maskedTextBoxDT1IP.Properties.Appearance.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.maskedTextBoxDT1IP.Properties.Appearance.ForeColor = System.Drawing.Color.Black;
this.maskedTextBoxDT1IP.Properties.Appearance.Options.UseBackColor = true;
this.maskedTextBoxDT1IP.Properties.Appearance.Options.UseFont = true;
this.maskedTextBoxDT1IP.Properties.Appearance.Options.UseForeColor = true;
this.maskedTextBoxDT1IP.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.maskedTextBoxDT1IP.Size = new System.Drawing.Size(1137, 28);
this.maskedTextBoxDT1IP.TabIndex = 8;
this.maskedTextBoxDT1IP.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.maskedTextBoxIP_PreviewKeyDown);
//
// panel6
//
this.panel6.BackColor = System.Drawing.Color.Transparent;
this.panel6.Controls.Add(this.comboBoxOverviewModel1);
this.panel6.Controls.Add(this.label1);
this.panel6.Dock = System.Windows.Forms.DockStyle.Top;
this.panel6.Location = new System.Drawing.Point(0, 0);
this.panel6.Name = "panel6";
this.panel6.Size = new System.Drawing.Size(1137, 85);
this.panel6.TabIndex = 7;
//
// comboBoxOverviewModel1
//
this.comboBoxOverviewModel1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxOverviewModel1.FormattingEnabled = true;
this.comboBoxOverviewModel1.Items.AddRange(new object[] {
"L",
"P1",
"P2"});
this.comboBoxOverviewModel1.Location = new System.Drawing.Point(280, 22);
this.comboBoxOverviewModel1.Name = "comboBoxOverviewModel1";
this.comboBoxOverviewModel1.Size = new System.Drawing.Size(106, 28);
this.comboBoxOverviewModel1.TabIndex = 10;
this.comboBoxOverviewModel1.Visible = false;
//
// label1
//
this.label1.BackColor = System.Drawing.Color.WhiteSmoke;
this.label1.Dock = System.Windows.Forms.DockStyle.Top;
this.label1.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.Black;
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(1137, 70);
this.label1.TabIndex = 9;
this.label1.Text = "Log Server [1]";
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label1.DoubleClick += new System.EventHandler(this.label1_DoubleClick);
//
// panel7
//
this.panel7.BackColor = System.Drawing.Color.Transparent;
this.panel7.Controls.Add(this.maskedTextBoxDT2IP);
this.panel7.Controls.Add(this.panel8);
this.panel7.Dock = System.Windows.Forms.DockStyle.Top;
this.panel7.Location = new System.Drawing.Point(0, 276);
this.panel7.Name = "panel7";
this.panel7.Size = new System.Drawing.Size(1137, 150);
this.panel7.TabIndex = 10;
//
// maskedTextBoxDT2IP
//
this.maskedTextBoxDT2IP.Dock = System.Windows.Forms.DockStyle.Fill;
this.maskedTextBoxDT2IP.EditValue = "If you do not enter the ip, will be connected to the local area.";
this.maskedTextBoxDT2IP.Location = new System.Drawing.Point(0, 83);
this.maskedTextBoxDT2IP.Name = "maskedTextBoxDT2IP";
this.maskedTextBoxDT2IP.Properties.Appearance.BackColor = System.Drawing.Color.White;
this.maskedTextBoxDT2IP.Properties.Appearance.Font = new System.Drawing.Font("Times New Roman", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.maskedTextBoxDT2IP.Properties.Appearance.ForeColor = System.Drawing.Color.Black;
this.maskedTextBoxDT2IP.Properties.Appearance.Options.UseBackColor = true;
this.maskedTextBoxDT2IP.Properties.Appearance.Options.UseFont = true;
this.maskedTextBoxDT2IP.Properties.Appearance.Options.UseForeColor = true;
this.maskedTextBoxDT2IP.Properties.Buttons.AddRange(new DevExpress.XtraEditors.Controls.EditorButton[] {
new DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)});
this.maskedTextBoxDT2IP.Size = new System.Drawing.Size(1137, 28);
this.maskedTextBoxDT2IP.TabIndex = 8;
this.maskedTextBoxDT2IP.PreviewKeyDown += new System.Windows.Forms.PreviewKeyDownEventHandler(this.maskedTextBoxIP_PreviewKeyDown);
//
// panel8
//
this.panel8.BackColor = System.Drawing.Color.Transparent;
this.panel8.Controls.Add(this.comboBoxOverviewModel2);
this.panel8.Controls.Add(this.checkBoxUseDT2);
this.panel8.Controls.Add(this.label3);
this.panel8.Dock = System.Windows.Forms.DockStyle.Top;
this.panel8.Location = new System.Drawing.Point(0, 0);
this.panel8.Name = "panel8";
this.panel8.Size = new System.Drawing.Size(1137, 83);
this.panel8.TabIndex = 7;
//
// comboBoxOverviewModel2
//
this.comboBoxOverviewModel2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.comboBoxOverviewModel2.FormattingEnabled = true;
this.comboBoxOverviewModel2.Items.AddRange(new object[] {
"L",
"P1",
"P2"});
this.comboBoxOverviewModel2.Location = new System.Drawing.Point(280, 21);
this.comboBoxOverviewModel2.Name = "comboBoxOverviewModel2";
this.comboBoxOverviewModel2.Size = new System.Drawing.Size(106, 28);
this.comboBoxOverviewModel2.TabIndex = 13;
this.comboBoxOverviewModel2.Visible = false;
//
// checkBoxUseDT2
//
this.checkBoxUseDT2.AutoSize = true;
this.checkBoxUseDT2.BackColor = System.Drawing.Color.WhiteSmoke;
this.checkBoxUseDT2.ForeColor = System.Drawing.Color.Black;
this.checkBoxUseDT2.Location = new System.Drawing.Point(43, 23);
this.checkBoxUseDT2.Name = "checkBoxUseDT2";
this.checkBoxUseDT2.Size = new System.Drawing.Size(63, 24);
this.checkBoxUseDT2.TabIndex = 12;
this.checkBoxUseDT2.Text = "Use";
this.checkBoxUseDT2.UseVisualStyleBackColor = false;
//
// label3
//
this.label3.BackColor = System.Drawing.Color.WhiteSmoke;
this.label3.Dock = System.Windows.Forms.DockStyle.Top;
this.label3.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label3.ForeColor = System.Drawing.Color.Black;
this.label3.Location = new System.Drawing.Point(0, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(1137, 69);
this.label3.TabIndex = 9;
this.label3.Text = "Log Server [2]";
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.label3.DoubleClick += new System.EventHandler(this.label3_DoubleClick);
//
// ConnectForm
//
this.Appearance.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.Appearance.Options.UseBackColor = true;
this.Appearance.Options.UseFont = true;
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.BackgroundImageLayoutStore = System.Windows.Forms.ImageLayout.Stretch;
this.BackgroundImageStore = global::SystemX.Product.TRA.Properties.Resources.IpAddress;
this.ClientSize = new System.Drawing.Size(1137, 460);
this.Controls.Add(this.panel1);
this.Controls.Add(this.panel7);
this.Controls.Add(this.panel5);
this.Controls.Add(this.panel3);
this.Controls.Add(this.panel2);
this.Controls.Add(this.labelControl1);
this.DoubleBuffered = true;
this.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.IconOptions.Icon = ((System.Drawing.Icon)(resources.GetObject("ConnectForm.IconOptions.Icon")));
this.IconOptions.SvgImage = ((DevExpress.Utils.Svg.SvgImage)(resources.GetObject("ConnectForm.IconOptions.SvgImage")));
this.Name = "ConnectForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Connect CP-ALIS";
this.TopMost = true;
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.ConnectForm_FormClosing);
this.panel1.ResumeLayout(false);
this.panel3.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxTLIP.Properties)).EndInit();
this.panel4.ResumeLayout(false);
this.panel5.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxDT1IP.Properties)).EndInit();
this.panel6.ResumeLayout(false);
this.panel7.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.maskedTextBoxDT2IP.Properties)).EndInit();
this.panel8.ResumeLayout(false);
this.panel8.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DevExpress.XtraEditors.LabelControl labelControl1;
private DevExpress.XtraEditors.SimpleButton simpleButtonOK;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.Panel panel3;
private DevExpress.XtraEditors.ComboBoxEdit maskedTextBoxTLIP;
private System.Windows.Forms.Panel panel4;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Panel panel5;
private DevExpress.XtraEditors.ComboBoxEdit maskedTextBoxDT1IP;
private System.Windows.Forms.Panel panel6;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Panel panel7;
private DevExpress.XtraEditors.ComboBoxEdit maskedTextBoxDT2IP;
private System.Windows.Forms.Panel panel8;
private System.Windows.Forms.Label label3;
private DevExpress.XtraEditors.SimpleButton simpleButtonReset;
private System.Windows.Forms.CheckBox checkBoxUseDT2;
private System.Windows.Forms.ComboBox comboBoxOverviewModel1;
private System.Windows.Forms.ComboBox comboBoxOverviewModel2;
}
}

View File

@ -0,0 +1,327 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Net;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using DataBaseConnection.Control;
using DevExpress.XtraBars.Docking;
using DevExpress.XtraEditors;
using SystemX.Product.ALIS.Interface;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.ALIS.UI.Subs
{
public partial class ConnectForm : DevExpress.XtraEditors.XtraForm
{
private enum eCehckType
{
TestListServer = 1,
DataLogServer1 = 2,
DataLogServer2 = 3
}
private IDataController ctrlDB;
//TL Server
public string strInputTextTL;
private string strSetIPAddressTL;
public string strGetIPAddressTL { get { return strSetIPAddressTL; } private set { strSetIPAddressTL = value; } }
private int nSetConnPortTL;
public int nGetConnPortTL { get { return nSetConnPortTL; } private set { nSetConnPortTL = value; } }
//DT Server 1
public string strInputTextDT1;
private string strSetIPAddressDT1;
public string strGetIPAddressDT1 { get { return strSetIPAddressDT1; } private set { strSetIPAddressDT1 = value; } }
private int nSetConnPortDT1;
public int nGetConnPortDT1 { get { return nSetConnPortDT1; } private set { nSetConnPortDT1 = value; } }
//
//DT Server 2
public bool bSelectUseDataServer2;
public string strInputTextDT2;
private string strSetIPAddressDT2;
public string strGetIPAddressDT2 { get { return strSetIPAddressDT2; } private set { strSetIPAddressDT2 = value; } }
private int nSetConnPortDT2;
public int nGetConnPortDT2 { get { return nSetConnPortDT2; } private set { nSetConnPortDT2 = value; } }
//
public int nOverviewModelC1;
public int nOverviewModelC2;
public DialogResult TestListServerCheckResult;
public DialogResult DataServerCheckResult1;
public DialogResult DataServerCheckResult2;
public ConnectForm(IDataController ctrlDB)
{
InitializeComponent();
//this.MinimumSize = new Size(400, 250);
//this.MaximumSize = new Size(400, 250);
this.ctrlDB = ctrlDB;
//maskedTextBoxIP.Mask = "###.###.###.###";
//maskedTextBoxIP.ValidatingType = typeof(System.Net.IPAddress);
this.BringToFront();
this.Focus();
DialogResult = DialogResult.None;
comboBoxOverviewModel1.SelectedIndex = 0;
comboBoxOverviewModel2.SelectedIndex = 1;
ConnectInfoINICtrl CCtrl = new ConnectInfoINICtrl();
string strGetConnectInfo1 = CCtrl.GetValue("LastestConnect", "Info1", "");
string strGetConnectInfo2 = CCtrl.GetValue("LastestConnect", "Info2", "");
string strGetConnectInfo3 = CCtrl.GetValue("LastestConnect", "Info3", "");
string strGetConnectInfo4 = CCtrl.GetValue("LastestConnect", "UseDataServer2", "False");
string strGetConnectInfo5 = CCtrl.GetValue("LastestConnect", "OverviewModelInfoC1", "0");
string strGetConnectInfo6 = CCtrl.GetValue("LastestConnect", "OverviewModelInfoC2", "1");
int nOverInfoC1 = 0;
int nOverInfoC2 = 1;
if(int.TryParse(strGetConnectInfo5, out nOverInfoC1))
comboBoxOverviewModel1.SelectedIndex = nOverInfoC1;
if(int.TryParse(strGetConnectInfo6, out nOverInfoC2))
comboBoxOverviewModel2.SelectedIndex = nOverInfoC2;
if (strGetConnectInfo1.Length > 0)
maskedTextBoxTLIP.Text = strGetConnectInfo1;
if (strGetConnectInfo2.Length > 0)
maskedTextBoxDT1IP.Text = strGetConnectInfo2;
if (strGetConnectInfo3.Length > 0)
maskedTextBoxDT2IP.Text = strGetConnectInfo3;
if (strGetConnectInfo4.Length > 0)
{
bool bGetUseState = false;
if (bool.TryParse(strGetConnectInfo4, out bGetUseState))
checkBoxUseDT2.Checked = bGetUseState;
else
checkBoxUseDT2.Checked = false;
}
for (int i = 0; i < INICtrl.MAX_INFORMATION; i++)
{
string strGetInfo1 = CCtrl.GetValue("HistoryConnect" + i.ToString(), "Info1", "");
string strGetInfo2 = CCtrl.GetValue("HistoryConnect" + i.ToString(), "Info2", "");
string strGetInfo3 = CCtrl.GetValue("HistoryConnect" + i.ToString(), "Info3", "");
if (strGetInfo1.Length > 0)
maskedTextBoxTLIP.Properties.Items.Add(strGetInfo1);
if (strGetInfo2.Length > 0)
maskedTextBoxDT1IP.Properties.Items.Add(strGetInfo2);
if (strGetInfo3.Length > 0)
maskedTextBoxDT2IP.Properties.Items.Add(strGetInfo3);
}
}
private void InvaildIPAlarm()
{
MessageBox.Show("Invalid IP. Enter it in the normal format. (An empty string or [localhost] will attempt to connect to the local server.)", "[SystemX.Product.ALIS.UI]", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private DialogResult CheckInformation(eCehckType ChkTyp, object sender, string strText)
{
DialogResult CheckResult = DialogResult.None;
IPAddress getIPAddress = null;
string strGetText = strText;
string[] strGetSplitCommaText = strGetText.Split(',');
string[] strGetSplitDotText = strGetText.Split('.');
if (ChkTyp == eCehckType.TestListServer)
{
strGetIPAddressTL = string.Empty;
nGetConnPortTL = DatabaseConnControl.CatalogConnPort;
strInputTextTL = strText;
}
else if (ChkTyp == eCehckType.DataLogServer1)
{
strGetIPAddressDT1 = string.Empty;
nGetConnPortDT1 = DatabaseConnControl.CatalogConnPort;
strInputTextDT1 = strText;
}
else if (ChkTyp == eCehckType.DataLogServer2)
{
strGetIPAddressDT2 = string.Empty;
nGetConnPortDT2 = DatabaseConnControl.CatalogConnPort;
strInputTextDT2 = strText;
}
if (IPAddress.TryParse(strText, out getIPAddress) == false)
{
if (strGetSplitCommaText.Length == 2)
{
string strGetIP = strGetSplitCommaText[0];
string strGetPort = strGetSplitCommaText[1];
int nGetPort = int.MaxValue;
if (IPAddress.TryParse(strGetIP, out getIPAddress) &&
int.TryParse(strGetPort, out nGetPort))
{
if (ChkTyp == eCehckType.TestListServer)
{
strGetIPAddressTL = strGetIP;
nGetConnPortTL = nGetPort;
}
else if (ChkTyp == eCehckType.DataLogServer1)
{
strGetIPAddressDT1 = strGetIP;
nGetConnPortDT1 = nGetPort;
}
else if (ChkTyp == eCehckType.DataLogServer2)
{
strGetIPAddressDT2 = strGetIP;
nGetConnPortDT2 = nGetPort;
}
CheckResult = DialogResult.OK;
return CheckResult;
}
}
string strGetUpperText = strText.ToUpper();
if (strText.Length == 0)
CheckResult = DialogResult.Ignore;
else if (strGetUpperText.CompareTo("LOCALHOST") == 0)
CheckResult = DialogResult.Ignore;
else if (strText.CompareTo("If you do not enter the ip, will be connected to the local area.") == 0)
CheckResult = DialogResult.Ignore;
else
{
((ComboBoxEdit)sender).Text = "";
InvaildIPAlarm();
}
}
else
{
if (strGetSplitDotText.Length == 4)
{
if (ChkTyp == eCehckType.TestListServer)
strGetIPAddressTL = strText;
else if (ChkTyp == eCehckType.DataLogServer1)
strGetIPAddressDT1 = strText;
else if (ChkTyp == eCehckType.DataLogServer2)
strGetIPAddressDT2 = strText;
CheckResult = DialogResult.OK;
}
else
{
((ComboBoxEdit)sender).Text = "";
InvaildIPAlarm();
}
}
return CheckResult;
}
private void simpleButtonOK_Click(object sender, EventArgs e)
{
bSelectUseDataServer2 = checkBoxUseDT2.Checked;
//
nOverviewModelC1 = comboBoxOverviewModel1.SelectedIndex;
nOverviewModelC2 = comboBoxOverviewModel2.SelectedIndex;
TestListServerCheckResult = DialogResult.None;
DataServerCheckResult1 = DialogResult.None;
TestListServerCheckResult = CheckInformation(eCehckType.TestListServer, maskedTextBoxTLIP, maskedTextBoxTLIP.Text);
DataServerCheckResult1 = CheckInformation(eCehckType.DataLogServer1, maskedTextBoxDT1IP, maskedTextBoxDT1IP.Text);
if (bSelectUseDataServer2)
DataServerCheckResult2 = CheckInformation(eCehckType.DataLogServer2, maskedTextBoxDT2IP, maskedTextBoxDT2IP.Text);
else
DataServerCheckResult2 = DialogResult.Ignore;
if ((TestListServerCheckResult.HasFlag(DialogResult.OK) || TestListServerCheckResult.HasFlag(DialogResult.Ignore)) &&
(DataServerCheckResult1.HasFlag(DialogResult.OK) || DataServerCheckResult1.HasFlag(DialogResult.Ignore)) &&
(DataServerCheckResult2.HasFlag(DialogResult.OK) || DataServerCheckResult2.HasFlag(DialogResult.Ignore)))
DialogResult = DialogResult.OK;
}
private void ConnectForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (DialogResult == DialogResult.None)
DialogResult = DialogResult.Abort;
/*if (maskedTextBoxIP.Text.Length == 0)
DialogResult = DialogResult.Cancel;
else if (maskedTextBoxIP.Text.CompareTo("localhost") == 0)
DialogResult = DialogResult.Cancel;
else if (maskedTextBoxIP.Text.CompareTo("If you do not enter the ip, will be connected to the local area.") == 0)
DialogResult = DialogResult.Cancel;
else
{
e.Cancel = true;
if (IPAddress.TryParse(maskedTextBoxIP.Text, out IPAddress))
e.Cancel = false;
}*/
}
private void maskedTextBoxIP_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
if (((ComboBoxEdit)sender).Text.CompareTo("If you do not enter the ip, will be connected to the local area.") == 0)
((ComboBoxEdit)sender).Text = string.Empty;
}
private void simpleButtonReset_Click(object sender, EventArgs e)
{
maskedTextBoxTLIP.Text = "If you do not enter the ip, will be connected to the local area.";
maskedTextBoxDT1IP.Text = "If you do not enter the ip, will be connected to the local area.";
maskedTextBoxDT2IP.Text = "If you do not enter the ip, will be connected to the local area.";
checkBoxUseDT2.Checked = false;
}
private void label1_DoubleClick(object sender, EventArgs e)
{
comboBoxOverviewModel1.Visible = !comboBoxOverviewModel1.Visible;
}
private void label3_DoubleClick(object sender, EventArgs e)
{
comboBoxOverviewModel2.Visible = !comboBoxOverviewModel2.Visible;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,189 @@

namespace SystemX.Product.ALIS.UI.Subs
{
partial class LoginForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
this.labelControl1 = new DevExpress.XtraEditors.LabelControl();
this.labelControl2 = new DevExpress.XtraEditors.LabelControl();
this.btnLogin = new System.Windows.Forms.Button();
this.labelAlarm = new System.Windows.Forms.Label();
this.panel1 = new System.Windows.Forms.Panel();
this.txtUserId = new DevExpress.XtraEditors.TextEdit();
this.panel2 = new System.Windows.Forms.Panel();
this.txtPassword = new System.Windows.Forms.MaskedTextBox();
this.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.txtUserId.Properties)).BeginInit();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// labelControl1
//
this.labelControl1.Appearance.BackColor = System.Drawing.Color.White;
this.labelControl1.Appearance.Font = new System.Drawing.Font("Arial Black", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelControl1.Appearance.ForeColor = System.Drawing.Color.MidnightBlue;
this.labelControl1.Appearance.Options.UseBackColor = true;
this.labelControl1.Appearance.Options.UseFont = true;
this.labelControl1.Appearance.Options.UseForeColor = true;
this.labelControl1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D;
this.labelControl1.Dock = System.Windows.Forms.DockStyle.Left;
this.labelControl1.Location = new System.Drawing.Point(0, 0);
this.labelControl1.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.labelControl1.Name = "labelControl1";
this.labelControl1.Size = new System.Drawing.Size(52, 21);
this.labelControl1.TabIndex = 2;
this.labelControl1.Text = "User ID";
//
// labelControl2
//
this.labelControl2.Appearance.BackColor = System.Drawing.Color.White;
this.labelControl2.Appearance.Font = new System.Drawing.Font("Arial Black", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelControl2.Appearance.ForeColor = System.Drawing.Color.MidnightBlue;
this.labelControl2.Appearance.Options.UseBackColor = true;
this.labelControl2.Appearance.Options.UseFont = true;
this.labelControl2.Appearance.Options.UseForeColor = true;
this.labelControl2.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.Style3D;
this.labelControl2.Dock = System.Windows.Forms.DockStyle.Left;
this.labelControl2.Location = new System.Drawing.Point(0, 0);
this.labelControl2.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.labelControl2.Name = "labelControl2";
this.labelControl2.Size = new System.Drawing.Size(67, 21);
this.labelControl2.TabIndex = 4;
this.labelControl2.Text = "Password";
//
// btnLogin
//
this.btnLogin.Dock = System.Windows.Forms.DockStyle.Bottom;
this.btnLogin.Font = new System.Drawing.Font("Arial Black", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.btnLogin.Location = new System.Drawing.Point(0, 86);
this.btnLogin.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.btnLogin.Name = "btnLogin";
this.btnLogin.Size = new System.Drawing.Size(298, 32);
this.btnLogin.TabIndex = 5;
this.btnLogin.Text = "Login";
this.btnLogin.UseVisualStyleBackColor = true;
this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click);
//
// labelAlarm
//
this.labelAlarm.BackColor = System.Drawing.Color.LightGray;
this.labelAlarm.Dock = System.Windows.Forms.DockStyle.Bottom;
this.labelAlarm.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.labelAlarm.Location = new System.Drawing.Point(0, 54);
this.labelAlarm.Name = "labelAlarm";
this.labelAlarm.Size = new System.Drawing.Size(298, 32);
this.labelAlarm.TabIndex = 6;
this.labelAlarm.Text = "-";
this.labelAlarm.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.labelAlarm.Visible = false;
//
// panel1
//
this.panel1.BackColor = System.Drawing.Color.Transparent;
this.panel1.Controls.Add(this.txtUserId);
this.panel1.Controls.Add(this.labelControl1);
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
this.panel1.Location = new System.Drawing.Point(0, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(298, 25);
this.panel1.TabIndex = 7;
//
// txtUserId
//
this.txtUserId.Dock = System.Windows.Forms.DockStyle.Fill;
this.txtUserId.Location = new System.Drawing.Point(52, 0);
this.txtUserId.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.txtUserId.Name = "txtUserId";
this.txtUserId.Size = new System.Drawing.Size(246, 20);
this.txtUserId.TabIndex = 3;
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.Transparent;
this.panel2.Controls.Add(this.txtPassword);
this.panel2.Controls.Add(this.labelControl2);
this.panel2.Dock = System.Windows.Forms.DockStyle.Top;
this.panel2.Location = new System.Drawing.Point(0, 25);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(298, 25);
this.panel2.TabIndex = 8;
//
// txtPassword
//
this.txtPassword.Dock = System.Windows.Forms.DockStyle.Fill;
this.txtPassword.Location = new System.Drawing.Point(67, 0);
this.txtPassword.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.txtPassword.Name = "txtPassword";
this.txtPassword.PasswordChar = '*';
this.txtPassword.Size = new System.Drawing.Size(231, 21);
this.txtPassword.TabIndex = 5;
this.txtPassword.UseSystemPasswordChar = true;
//
// LoginForm
//
this.Appearance.Options.UseFont = true;
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImageLayoutStore = System.Windows.Forms.ImageLayout.Stretch;
this.BackgroundImageStore = global::SystemX.Product.TRA.Properties.Resources.Password;
this.ClientSize = new System.Drawing.Size(298, 118);
this.Controls.Add(this.panel2);
this.Controls.Add(this.panel1);
this.Controls.Add(this.labelAlarm);
this.Controls.Add(this.btnLogin);
this.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F);
this.IconOptions.Icon = ((System.Drawing.Icon)(resources.GetObject("LoginForm.IconOptions.Icon")));
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.MaximumSize = new System.Drawing.Size(300, 150);
this.MinimumSize = new System.Drawing.Size(300, 130);
this.Name = "LoginForm";
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "Login";
this.TopMost = true;
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.txtUserId.Properties)).EndInit();
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraEditors.LabelControl labelControl1;
private DevExpress.XtraEditors.LabelControl labelControl2;
private System.Windows.Forms.Button btnLogin;
private System.Windows.Forms.Label labelAlarm;
private System.Windows.Forms.Panel panel1;
private DevExpress.XtraEditors.TextEdit txtUserId;
private System.Windows.Forms.Panel panel2;
private System.Windows.Forms.MaskedTextBox txtPassword;
}
}

View File

@ -0,0 +1,90 @@
using DevExpress.XtraEditors;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SystemX.Product.ALIS.Interface;
namespace SystemX.Product.ALIS.UI.Subs
{
public partial class LoginForm : DevExpress.XtraEditors.XtraForm
{
private IDataController ctrlDB;
private DataSet ds = new DataSet();
private DataTable dt = new DataTable();
public string UserID { internal set; get; }
public string UserName { internal set; get; }
public string UserDept { internal set; get; }
public string UserEmail { internal set; get; }
public string UserComment { internal set; get; }
public string UserPassword { internal set; get; }
public LoginForm(IDataController ctrlDB)
{
InitializeComponent();
this.ctrlDB = ctrlDB;
}
private void btnLogin_Click(object sender, EventArgs e)
{
this.DialogResult = DialogResult.None;
SqlDataReader dr = null;
try
{
ctrlDB.GetConnSqlCmd().CommandText = "SELECT * FROM STAT_User WHERE UserID = '" + txtUserId.Text + "' AND Password = '" + txtPassword.Text + "';";
dr = ctrlDB.GetConnSqlCmd().ExecuteReader();
if (dr != null)
{
DataSet ds = new DataSet();
DataTable dt = new DataTable();
int iFieldCnt = dr.FieldCount;
int iRecordsAffectedCnt = dr.RecordsAffected;
bool bHasRow = dr.HasRows;
dt.Load(dr);
ds.Tables.Add(dt);
if (dt.Rows.Count > 0)
{
UserID = dt.Rows[0]["UserID"].ToString();
UserName = dt.Rows[0]["Name"].ToString();
UserDept = dt.Rows[0]["Dept"].ToString();
UserEmail = dt.Rows[0]["Email"].ToString();
UserComment = dt.Rows[0]["Comment"].ToString();
UserPassword = dt.Rows[0]["Password"].ToString();
this.DialogResult = DialogResult.OK;
}
}
}
finally
{
if (dr != null)
dr.Close();
}
if (this.DialogResult == DialogResult.None)
{
this.MaximumSize = new Size(300, 180);
this.MinimumSize = new Size(300, 180);
this.Size = new Size(300, 180);
labelAlarm.Visible = true;
labelAlarm.Text = "User information does not match or\r\n the password is incorrect.";
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,296 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
using SystemX.Net.Platform.Common.Util;
using static SystemX.Product.ALIS.UI.View.ViewCfg;
namespace SystemX.Product.ALIS.UI.View
{
public static class ViewCfg
{
public enum eOperationMode
{
ALL,
AUTO,
MANUAL
}
public enum eWorkMode
{
NORMAL,
RETEST,
REWORK
}
public enum eAppFunctionType
{
None = 0,
M_HostList,
M_UserList,
M_GroupList,
M_TestCodeList,
M_TestList,
M_TestListRel,
A_AnalysisPartID,
A_LogSearchTrend,
A_AnalysisProcessTrend
}
public enum eSelectType
{
None = 0,
HostList,
UserList,
GroupList,
TestCodeList,
TestList,
TestListRel
}
public enum eEditType
{
Insert = 0,
Modify
}
public enum eModelType
{
NONE,
IMAGE,
TEXT,
CPLOG,
PARTID_MAP
}
public enum eProcessTable
{
HIST_ProdLoad = 0,
HIST_CapDeassy,
HIST_PreHeating,
HIST_PreMeas,
HIST_Leak,
HIST_LaserTrim,
HIST_LaserTrimVision,
HIST_IsoRes,
HIST_CapAssy,
HIST_Function,
HIST_OutSealPress,
HIST_PinLVDT,
HIST_PinVision,
HIST_ProdUnload
}
private enum eProcessTableNumber
{
HIST_ProdLoad = 180,
HIST_CapDeassy = 180,
HIST_PreHeating = 190,
HIST_PreMeas = 190,
HIST_Leak = 200,
HIST_LaserTrim = 210,
HIST_LaserTrimVision = 220,
HIST_IsoRes = 220,
HIST_CapAssy = 230,
HIST_Function = 240,
HIST_OutSealPress = 250,
HIST_PinLVDT = 260,
HIST_PinVision = 260,
HIST_ProdUnload = 270
}
public static string GetTableProcessNumber(eProcessTable processTable)
{
string[] strSetProcessNumberList = new string[]
{ "180", "180", "190", "190", "200", "210", "220", "220", "230", "240", "250", "260", "260", "270" };
if (strSetProcessNumberList.Length > (int)processTable)
return strSetProcessNumberList[(int)processTable];
else
return "";
}
public enum eDataTable
{
HIST_TestResultData,
HIST_TestResultDatail
}
public const string SystemConfigPath = @"./Config/SystemConfig.xml";
public const string SaveLayoutPath = @"./Layout/Search/";
public enum eConfigElemList
{
Root,
RegisteredModels,
Model
}
public static XElement OpenSystemConfig()
{
var xElement = XMLControl.OpenXMLDocument(SystemConfigPath, eConfigElemList.Root.ToString());
if (xElement == null) return null;
return xElement;
}
public static XElement SaveSystemConfig(List<SysModelDef> registeredModels)
{
XDocument xmlDoc = new XDocument();
XElement xRoot = new XElement(eConfigElemList.Root.ToString());
XElement xRegModels = new XElement(eConfigElemList.RegisteredModels.ToString());
foreach (SysModelDef modeldef in registeredModels)
xRegModels.Add(modeldef.SaveXML());
xRoot.Add(xRegModels);
xmlDoc.Add(xRoot);
xmlDoc.Save(SystemConfigPath);
return xRoot;
}
public static List<SysModelDef> GetRegisteredModels(XElement xelemRoot)
{
XElement elemModelRoot = xelemRoot.Element(eConfigElemList.RegisteredModels.ToString());
List<SysModelDef> modeldef = new List<SysModelDef>();
foreach (XElement elemModel in elemModelRoot.Elements())
modeldef.Add(new SysModelDef(elemModel));
return modeldef;
}
public static Dictionary<string, string> GetProcessTableNameMap()
{
Dictionary<string, string> NameMap = new Dictionary<string, string>();
NameMap.Add(eProcessTable.HIST_ProdLoad.ToString(), "LX/LU-180:Loading");
NameMap.Add(eProcessTable.HIST_CapDeassy.ToString(), "LX/LU-180:Cap De-Ass'y");
NameMap.Add(eProcessTable.HIST_PreHeating.ToString(), "LX/LU-190:Pre-Heating");
NameMap.Add(eProcessTable.HIST_PreMeas.ToString(), "LX/LU-190:Pre-Measuring");
NameMap.Add(eProcessTable.HIST_Leak.ToString(), "LX/LU-200:Leak Test");
NameMap.Add(eProcessTable.HIST_LaserTrim.ToString(), "LX/LU-210:Laser Trimming");
NameMap.Add(eProcessTable.HIST_LaserTrimVision.ToString(), "LX/LU-220:Trimming Vision Inspection");
NameMap.Add(eProcessTable.HIST_IsoRes.ToString(), "LX/LU-220:Isolation Resistance Test");
NameMap.Add(eProcessTable.HIST_CapAssy.ToString(), "LX/LU-230:Cap Ass'y");
NameMap.Add(eProcessTable.HIST_Function.ToString(), "LX/LU-240:Function Test");
NameMap.Add(eProcessTable.HIST_OutSealPress.ToString(), "LX/LU-250:Outer Seal Press");
NameMap.Add(eProcessTable.HIST_PinLVDT.ToString(), "LX/LU-260:Pin Height Inspection");
NameMap.Add(eProcessTable.HIST_PinVision.ToString(), "LX/LU-260:Pin-Align Vision Inspection");
NameMap.Add(eProcessTable.HIST_ProdUnload.ToString(), "LX/LU-270:Unloading");
return NameMap;
}
public class NameMapItem
{
public string TableName { get; set; }
public string ProcName { get; set; }
}
}
public class SysModelDef
{
public string ID { get; set; }
public string Path { get; set; }
public string Type { get; set; }
public eModelType eType { get; set; } = eModelType.NONE;
public SysModelDef(XElement elem)
{
SetModelDef(elem);
SetType(Type);
}
public SysModelDef(string strPath)
{
Path = strPath;
}
public bool SetType(string strType)
{
eModelType eparsetype = eModelType.NONE;
if (!Enum.TryParse(strType.ToUpper(), out eparsetype))
return false;
eType = eparsetype;
return true;
}
public bool SetModelDef(XElement elem)
{
try
{
foreach (XAttribute regAttrb in elem.Attributes())
{
string strAttrbName = regAttrb.Name.LocalName;
if (CommonUtil.GetProperty(this, strAttrbName) == null)
continue;
CommonUtil.SetPropertyValue(this, strAttrbName, regAttrb.Value);
}
}
catch (Exception ex)
{
LogMessage.MessageOutput.ConsoleWrite("Error during Read Mdoel Definition in System Config.", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
LogMessage.MessageOutput.ConsoleWrite($" - Message: {ex.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
throw;
}
return true;
}
public XElement SaveXML()
{
XElement xelemSave = new XElement(eConfigElemList.Model.ToString());
xelemSave.SetAttributeValue("ID", ID);
xelemSave.SetAttributeValue("Path", Path);
xelemSave.SetAttributeValue("Type", Type);
return xelemSave;
}
}
public class LogInfo
{
public string LogAccKey { get; set; }
public string ProductID { get; set; }
public string PalletID { get; set; }
public string UpdateDT { get; set; }
public string ProcessNo { get; set; }
public string PalletNo { get; set; }
public string PalletIndex { get; set; }
public string Status { get; set; }
public string TestTime { get; set; }
public string Result { get; set; }
public Dictionary<int, string> TestResult { get; set; }
}
public class ChartLogInfo
{
public string TableName { get; set; }
public string StartDateTime { get; set; }
public string EndDateTime { get; set; }
public string ProductNo { get; set; }
public string PalletNo { get; set; }
public string PalletIndex { get; set; }
public string WorkMode { get; set; }
public string OperationMode { get; set; }
public string StepNo { get; set; }
public string MO { get; set; }
public string FuncName { get; set; }
public string Min { get; set; }
public string Max { get; set; }
public Dictionary<string, double> MeasuredData = new Dictionary<string, double>();
}
}

View File

@ -0,0 +1,94 @@

namespace SystemX.Product.ALIS.UI.Subs
{
partial class WaitProgressForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.progressPanel1 = new DevExpress.XtraWaitForm.ProgressPanel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// progressPanel1
//
this.progressPanel1.Appearance.BackColor = System.Drawing.Color.Transparent;
this.progressPanel1.Appearance.Font = new System.Drawing.Font("Arial Rounded MT", 9F);
this.progressPanel1.Appearance.Options.UseBackColor = true;
this.progressPanel1.Appearance.Options.UseFont = true;
this.progressPanel1.AppearanceCaption.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F);
this.progressPanel1.AppearanceCaption.Options.UseFont = true;
this.progressPanel1.AppearanceDescription.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F);
this.progressPanel1.AppearanceDescription.Options.UseFont = true;
this.progressPanel1.Description = "";
this.progressPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.progressPanel1.ImageHorzOffset = 20;
this.progressPanel1.Location = new System.Drawing.Point(0, 16);
this.progressPanel1.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.progressPanel1.Name = "progressPanel1";
this.progressPanel1.Size = new System.Drawing.Size(287, 35);
this.progressPanel1.TabIndex = 0;
this.progressPanel1.Text = "progressPanel1";
//
// tableLayoutPanel1
//
this.tableLayoutPanel1.AutoSize = true;
this.tableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.tableLayoutPanel1.BackColor = System.Drawing.Color.Transparent;
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.progressPanel1, 0, 0);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.Padding = new System.Windows.Forms.Padding(0, 13, 0, 13);
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(287, 67);
this.tableLayoutPanel1.TabIndex = 1;
//
// WaitProgressForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.ClientSize = new System.Drawing.Size(287, 67);
this.Controls.Add(this.tableLayoutPanel1);
this.Name = "WaitProgressForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.Manual;
this.tableLayoutPanel1.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DevExpress.XtraWaitForm.ProgressPanel progressPanel1;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
}
}

View File

@ -0,0 +1,52 @@
using DevExpress.XtraWaitForm;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace SystemX.Product.ALIS.UI.Subs
{
public partial class WaitProgressForm : WaitForm
{
public WaitProgressForm()
{
InitializeComponent();
this.progressPanel1.AutoHeight = true;
}
#region Overrides
public override void SetCaption(string caption)
{
base.SetCaption(caption);
this.progressPanel1.Caption = caption;
}
public override void SetDescription(string description)
{
base.SetDescription(description);
this.progressPanel1.Description = description;
}
public override void ProcessCommand(Enum cmd, object arg)
{
base.ProcessCommand(cmd, arg);
}
#endregion
public void setDescription(string sText)
{
this.SetDescription(sText);
}
public enum WaitFormCommand
{
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,467 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{74C67745-2E9A-4F85-A170-2C1F5990E6F4}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SystemX.Product.TRA</RootNamespace>
<AssemblyName>SystemX.Product.TRA</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup>
<ApplicationIcon>TRA-Logo.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x64\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x64'">
<OutputPath>bin\x64\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<Optimize>true</Optimize>
<DebugType>pdbonly</DebugType>
<PlatformTarget>x64</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
<Prefer32Bit>true</Prefer32Bit>
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.BonusSkins.v20.2" />
<Reference Include="DevExpress.Charts.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Data.Desktop.v20.2" />
<Reference Include="DevExpress.Data.v20.2" />
<Reference Include="DevExpress.DataAccess.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.DataVisualization.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>bin\Debug\DevExpress.DataVisualization.v20.2.Core.dll</HintPath>
</Reference>
<Reference Include="DevExpress.Docs.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Images.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Office.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Pdf.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.RichEdit.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Spreadsheet.v20.2.Core, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v20.2" />
<Reference Include="DevExpress.Sparkline.v20.2.Core" />
<Reference Include="DevExpress.Utils.v20.2.UI, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraCharts.v20.2.UI, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraCharts.v20.2.Wizard, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraEditors.v20.2" />
<Reference Include="DevExpress.Printing.v20.2.Core" />
<Reference Include="DevExpress.XtraGrid.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraPrinting.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraRichEdit.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraVerticalGrid.v20.2, Version=20.2.6.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="log4net">
<HintPath>.\log4net.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.1\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.HashCode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.HashCode.1.1.1\lib\net461\Microsoft.Bcl.HashCode.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Data.SqlClient, Version=1.13.20136.2, Culture=neutral, PublicKeyToken=23ec7fc2d6eaa4a5, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Data.SqlClient.1.1.3\lib\net46\Microsoft.Data.SqlClient.dll</HintPath>
</Reference>
<Reference Include="Microsoft.EntityFrameworkCore, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.EntityFrameworkCore.3.1.32\lib\netstandard2.0\Microsoft.EntityFrameworkCore.dll</HintPath>
</Reference>
<Reference Include="Microsoft.EntityFrameworkCore.Abstractions, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.EntityFrameworkCore.Abstractions.3.1.32\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.EntityFrameworkCore.Relational, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.EntityFrameworkCore.Relational.3.1.32\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Relational.dll</HintPath>
</Reference>
<Reference Include="Microsoft.EntityFrameworkCore.SqlServer, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.EntityFrameworkCore.SqlServer.3.1.32\lib\netstandard2.0\Microsoft.EntityFrameworkCore.SqlServer.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Caching.Abstractions, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Abstractions.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Caching.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Caching.Memory, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Caching.Memory.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Caching.Memory.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Configuration, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Configuration.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Configuration.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Configuration.Abstractions, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Configuration.Abstractions.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Configuration.Binder, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Configuration.Binder.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Configuration.Binder.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.3.1.32\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.3.1.32\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Options, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Options.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Options.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Primitives, Version=3.1.32.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Primitives.3.1.32\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Identity.Client, Version=3.0.8.0, Culture=neutral, PublicKeyToken=0a613f4dd989e8ae, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Identity.Client.3.0.8\lib\net45\Microsoft.Identity.Client.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.JsonWebTokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.JsonWebTokens.5.5.0\lib\net461\Microsoft.IdentityModel.JsonWebTokens.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Logging, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Logging.5.5.0\lib\net461\Microsoft.IdentityModel.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.5.5.0\lib\net461\Microsoft.IdentityModel.Protocols.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Protocols.OpenIdConnect, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Protocols.OpenIdConnect.5.5.0\lib\net461\Microsoft.IdentityModel.Protocols.OpenIdConnect.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IdentityModel.Tokens, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IdentityModel.Tokens.5.5.0\lib\net461\Microsoft.IdentityModel.Tokens.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=1.2.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Data.Common, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.Common.4.3.0\lib\net451\System.Data.Common.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Data.Linq" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.IdentityModel" />
<Reference Include="System.IdentityModel.Tokens.Jwt, Version=5.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\System.IdentityModel.Tokens.Jwt.5.5.0\lib\net461\System.IdentityModel.Tokens.Jwt.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http" />
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Core">
<HintPath>..\..\RPDM\Output.SystemX\System.Reactive.Core.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Interfaces">
<HintPath>..\..\RPDM\Output.SystemX\System.Reactive.Interfaces.dll</HintPath>
</Reference>
<Reference Include="System.Reactive.Linq">
<HintPath>..\..\RPDM\Output.SystemX\System.Reactive.Linq.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="SystemX.Net.Platform">
<HintPath>..\..\Output.SystemX\SystemX.Net.Platform.dll</HintPath>
</Reference>
<Reference Include="SystemX.Net.XAdaptor.PC.UIM">
<HintPath>..\..\Output.SystemX\SystemX.Net.XAdaptor.PC.UIM.dll</HintPath>
</Reference>
<Reference Include="SystemX.Product.CP.TRA.BaseView">
<HintPath>..\SystemX.Product.CP.TRA.BaseView\bin\x64\SystemX.Product.CP.TRA.BaseView.dll</HintPath>
</Reference>
<Reference Include="SystemX.XEFCore">
<HintPath>..\..\Output.SystemX\SystemX.XEFCore.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="ChildControl.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DataControl.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DataManager\DMCommon.cs" />
<Compile Include="DataManager\DMDetailOverview.cs" />
<Compile Include="DataManager\DMOverview.cs" />
<Compile Include="DataManager\DMStepTrend.cs" />
<Compile Include="DataManager\DMProductHistory.cs" />
<Compile Include="DataManager\DMTestNgHistory.cs" />
<Compile Include="DataManager\DMTestSummary.cs" />
<Compile Include="DataManager\DMTestDetail.cs" />
<Compile Include="DataManager\DMTestHistory.cs" />
<Compile Include="DB\DataBaseConn.cs" />
<Compile Include="Interface\IChildControl.cs" />
<Compile Include="Interface\IChildSubscribe.cs" />
<Compile Include="Interface\IDataBaseControl.cs" />
<Compile Include="Interface\IDataControl.cs" />
<Compile Include="Interface\IUserControlSubscribe.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Subs\Commons.cs" />
<Compile Include="Subs\ConnectForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Subs\ConnectForm.Designer.cs">
<DependentUpon>ConnectForm.cs</DependentUpon>
</Compile>
<Compile Include="Subs\LoginForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Subs\LoginForm.Designer.cs">
<DependentUpon>LoginForm.cs</DependentUpon>
</Compile>
<Compile Include="Subs\ViewCfg.cs" />
<Compile Include="Subs\WaitProgressForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Subs\WaitProgressForm.Designer.cs">
<DependentUpon>WaitProgressForm.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\FrmOptionOverview.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UIControl\FrmOptionOverview.Designer.cs">
<DependentUpon>FrmOptionOverview.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\FrmOptionStationSearch.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UIControl\FrmOptionStationSearch.Designer.cs">
<DependentUpon>FrmOptionStationSearch.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\FrmOptionSummary.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UIControl\FrmOptionSummary.Designer.cs">
<DependentUpon>FrmOptionSummary.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\Helper\MergedRowsHelper.cs" />
<Compile Include="UIControl\UcTRADetailOverview.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRADetailOverview.Designer.cs">
<DependentUpon>UcTRADetailOverview.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRAStepTrend.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRAStepTrend.Designer.cs">
<DependentUpon>UcTRAStepTrend.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRASummaryTestResult.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRASummaryTestResult.Designer.cs">
<DependentUpon>UcTRASummaryTestResult.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRADetailTestResult.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRADetailTestResult.Designer.cs">
<DependentUpon>UcTRADetailTestResult.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRAOverview.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRAOverview.Designer.cs">
<DependentUpon>UcTRAOverview.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRAProductHist.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRAProductHist.Designer.cs">
<DependentUpon>UcTRAProductHist.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRAProdHistHost.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRAProdHistHost.Designer.cs">
<DependentUpon>UcTRAProdHistHost.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRATestNgHist.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRATestNgHist.Designer.cs">
<DependentUpon>UcTRATestNgHist.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRATestHistHost.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="UIControl\UcTRATestHistHost.Designer.cs">
<DependentUpon>UcTRATestHistHost.cs</DependentUpon>
</Compile>
<Compile Include="UIControl\UcTRAViewStatic.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\licenses.licx" />
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<EmbeddedResource Include="Subs\ConnectForm.resx">
<DependentUpon>ConnectForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Subs\LoginForm.resx">
<DependentUpon>LoginForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Subs\WaitProgressForm.resx">
<DependentUpon>WaitProgressForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\FrmOptionOverview.resx">
<DependentUpon>FrmOptionOverview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\FrmOptionStationSearch.resx">
<DependentUpon>FrmOptionStationSearch.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\FrmOptionSummary.resx">
<DependentUpon>FrmOptionSummary.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRADetailOverview.resx">
<DependentUpon>UcTRADetailOverview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRAStepTrend.resx">
<DependentUpon>UcTRAStepTrend.cs</DependentUpon>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRASummaryTestResult.resx">
<DependentUpon>UcTRASummaryTestResult.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRADetailTestResult.resx">
<DependentUpon>UcTRADetailTestResult.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRAOverview.resx">
<DependentUpon>UcTRAOverview.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRAProductHist.resx">
<DependentUpon>UcTRAProductHist.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRAProdHistHost.resx">
<DependentUpon>UcTRAProdHistHost.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRATestNgHist.resx">
<DependentUpon>UcTRATestNgHist.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIControl\UcTRATestHistHost.resx">
<DependentUpon>UcTRATestHistHost.cs</DependentUpon>
</EmbeddedResource>
<None Include="App.config" />
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
</ItemGroup>
<ItemGroup>
<Content Include="NoChartSpec.def" />
<None Include="Resources\IpAddress.PNG" />
<None Include="Resources\Kefico CI.PNG" />
<None Include="Resources\Password.jpg" />
<None Include="Resources\Find_16x16.png" />
<None Include="Resources\HistoryItem_16x16.png" />
<None Include="Resources\Linear_16x16.png" />
<None Include="Resources\UpdateField_16x16.png" />
<None Include="Resources\UpdateTableOfContents_16x16.png" />
<None Include="Resources\ModelEditor_DetailView.png" />
<None Include="Resources\ExplodedPie3D_16x16.png" />
<None Include="Resources\Find2_16x16.png" />
<Content Include="TRA-Logo.ico" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>copy /Y "$(SolutionDir)\\SystemX.Product.CP.TRA\NoChartSpec.def" "$(TargetDir)\NoChartSpec.def"</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Microsoft.Data.SqlClient.SNI.1.1.0\build\net46\Microsoft.Data.SqlClient.SNI.targets" Condition="Exists('..\packages\Microsoft.Data.SqlClient.SNI.1.1.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>이 프로젝트는 이 컴퓨터에 없는 NuGet 패키지를 참조합니다. 해당 패키지를 다운로드하려면 NuGet 패키지 복원을 사용하십시오. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=322105를 참조하십시오. 누락된 파일은 {0}입니다.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.Data.SqlClient.SNI.1.1.0\build\net46\Microsoft.Data.SqlClient.SNI.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.Data.SqlClient.SNI.1.1.0\build\net46\Microsoft.Data.SqlClient.SNI.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

View File

@ -0,0 +1,178 @@
namespace SystemX.Product.TRA.UIControl
{
partial class FrmOptionOverview
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
this.checkedListBoxControlOption = new DevExpress.XtraEditors.CheckedListBoxControl();
this.simpleButtonOK = new DevExpress.XtraEditors.SimpleButton();
this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
this.groupControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.checkedListBoxControlOption)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
this.SuspendLayout();
//
// groupControl1
//
this.groupControl1.AppearanceCaption.BackColor = System.Drawing.Color.Transparent;
this.groupControl1.AppearanceCaption.BorderColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
this.groupControl1.AppearanceCaption.Options.UseBackColor = true;
this.groupControl1.AppearanceCaption.Options.UseBorderColor = true;
this.groupControl1.Controls.Add(this.layoutControl1);
this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl1.Location = new System.Drawing.Point(0, 0);
this.groupControl1.Name = "groupControl1";
this.groupControl1.Size = new System.Drawing.Size(373, 456);
this.groupControl1.TabIndex = 0;
this.groupControl1.Text = "Data Overview Option";
//
// layoutControl1
//
this.layoutControl1.Controls.Add(this.checkedListBoxControlOption);
this.layoutControl1.Controls.Add(this.simpleButtonOK);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(2, 23);
this.layoutControl1.Name = "layoutControl1";
this.layoutControl1.Root = this.Root;
this.layoutControl1.Size = new System.Drawing.Size(369, 431);
this.layoutControl1.TabIndex = 0;
this.layoutControl1.Text = "layoutControl1";
//
// checkedListBoxControlOption
//
this.checkedListBoxControlOption.Location = new System.Drawing.Point(12, 12);
this.checkedListBoxControlOption.Name = "checkedListBoxControlOption";
this.checkedListBoxControlOption.Size = new System.Drawing.Size(345, 371);
this.checkedListBoxControlOption.StyleController = this.layoutControl1;
this.checkedListBoxControlOption.TabIndex = 6;
this.checkedListBoxControlOption.ItemCheck += new DevExpress.XtraEditors.Controls.ItemCheckEventHandler(this.checkedListBoxControlOption_ItemCheck);
this.checkedListBoxControlOption.Click += new System.EventHandler(this.checkedListBoxControlOption_Click);
//
// simpleButtonOK
//
this.simpleButtonOK.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
this.simpleButtonOK.Appearance.Options.UseBackColor = true;
this.simpleButtonOK.Location = new System.Drawing.Point(12, 387);
this.simpleButtonOK.Name = "simpleButtonOK";
this.simpleButtonOK.Size = new System.Drawing.Size(345, 22);
this.simpleButtonOK.StyleController = this.layoutControl1;
this.simpleButtonOK.TabIndex = 5;
this.simpleButtonOK.Text = "Search";
this.simpleButtonOK.Click += new System.EventHandler(this.simpleButtonOK_Click);
//
// Root
//
this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
this.Root.GroupBordersVisible = false;
this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
this.emptySpaceItem1,
this.layoutControlItem2,
this.layoutControlItem3});
this.Root.Name = "Root";
this.Root.Size = new System.Drawing.Size(369, 431);
this.Root.TextVisible = false;
//
// emptySpaceItem1
//
this.emptySpaceItem1.AllowHotTrack = false;
this.emptySpaceItem1.Location = new System.Drawing.Point(0, 401);
this.emptySpaceItem1.Name = "emptySpaceItem1";
this.emptySpaceItem1.Size = new System.Drawing.Size(349, 10);
this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
//
// layoutControlItem2
//
this.layoutControlItem2.Control = this.simpleButtonOK;
this.layoutControlItem2.Location = new System.Drawing.Point(0, 375);
this.layoutControlItem2.MaxSize = new System.Drawing.Size(0, 26);
this.layoutControlItem2.MinSize = new System.Drawing.Size(89, 26);
this.layoutControlItem2.Name = "layoutControlItem2";
this.layoutControlItem2.Size = new System.Drawing.Size(349, 26);
this.layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem2.TextVisible = false;
//
// layoutControlItem3
//
this.layoutControlItem3.Control = this.checkedListBoxControlOption;
this.layoutControlItem3.Location = new System.Drawing.Point(0, 0);
this.layoutControlItem3.Name = "layoutControlItem3";
this.layoutControlItem3.Size = new System.Drawing.Size(349, 375);
this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem3.TextVisible = false;
//
// FrmOptionOverview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(373, 456);
this.ControlBox = false;
this.Controls.Add(this.groupControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "FrmOptionOverview";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "FrmOptionStationSearch";
this.TopMost = true;
this.Load += new System.EventHandler(this.FrmOptionStationSearch_Load);
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
this.groupControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
this.layoutControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.checkedListBoxControlOption)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraEditors.GroupControl groupControl1;
private DevExpress.XtraLayout.LayoutControl layoutControl1;
private DevExpress.XtraEditors.CheckedListBoxControl checkedListBoxControlOption;
private DevExpress.XtraEditors.SimpleButton simpleButtonOK;
private DevExpress.XtraLayout.LayoutControlGroup Root;
private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
}
}

View File

@ -0,0 +1,101 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SystemX.Product.TRA.UIControl
{
public partial class FrmOptionOverview : Form
{
OverviewSearchOption Option { get; set; } = new OverviewSearchOption();
public FrmOptionOverview()
{
InitializeComponent();
}
public OverviewSearchOption GetSelectedResult()
{
return Option;
}
void DispData()
{
string strTypeName = "SystemX.Product.TRA.UIControl.OverviewSearchOption";
try
{
Type typeObj = Type.GetType(strTypeName);
foreach(PropertyInfo info in typeObj.GetProperties())
{
if (info.PropertyType == typeof(string))
continue;
string strProp = info.Name;
string strValue = info.GetValue(Option, null).ToString();
bool bState = Convert.ToBoolean(strValue);
checkedListBoxControlOption.Items.Add(strProp, bState ? CheckState.Checked : CheckState.Unchecked, true);
}
}
catch(Exception ex)
{
MessageBox.Show("Error during option display: " + ex.Message);
}
}
private void FrmOptionStationSearch_Load(object sender, EventArgs e)
{
DispData();
}
private void simpleButtonOK_Click(object sender, EventArgs e)
{
string strTypeName = "SystemX.Product.TRA.UIControl.OverviewSearchOption";
try
{
Type typeObj = Type.GetType(strTypeName);
foreach (PropertyInfo info in typeObj.GetProperties())
{
if (info.PropertyType == typeof(string))
continue;
string strProp = info.Name;
bool bChecked = checkedListBoxControlOption.Items[strProp].CheckState == CheckState.Checked ? true : false;
info.SetValue(Option, bChecked);
}
this.DialogResult = DialogResult.OK;
}
catch (Exception ex)
{
MessageBox.Show("Error during option matching: " + ex.Message);
}
this.Close();
}
private void checkedListBoxControlOption_Click(object sender, EventArgs e)
{
}
private void checkedListBoxControlOption_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
{
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,179 @@
namespace SystemX.Product.TRA.UIControl
{
partial class FrmOptionStationSearch
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
this.checkedListBoxControlOption = new DevExpress.XtraEditors.CheckedListBoxControl();
this.simpleButtonOK = new DevExpress.XtraEditors.SimpleButton();
this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
this.emptySpaceItem1 = new DevExpress.XtraLayout.EmptySpaceItem();
this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
this.groupControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.checkedListBoxControlOption)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
this.SuspendLayout();
//
// groupControl1
//
this.groupControl1.AppearanceCaption.BackColor = System.Drawing.Color.Transparent;
this.groupControl1.AppearanceCaption.BorderColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
this.groupControl1.AppearanceCaption.Options.UseBackColor = true;
this.groupControl1.AppearanceCaption.Options.UseBorderColor = true;
this.groupControl1.Controls.Add(this.layoutControl1);
this.groupControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.groupControl1.Location = new System.Drawing.Point(0, 0);
this.groupControl1.Name = "groupControl1";
this.groupControl1.Size = new System.Drawing.Size(373, 456);
this.groupControl1.TabIndex = 0;
this.groupControl1.Text = "Station Test History Search Option";
//
// layoutControl1
//
this.layoutControl1.Controls.Add(this.checkedListBoxControlOption);
this.layoutControl1.Controls.Add(this.simpleButtonOK);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(2, 23);
this.layoutControl1.Name = "layoutControl1";
this.layoutControl1.Root = this.Root;
this.layoutControl1.Size = new System.Drawing.Size(369, 431);
this.layoutControl1.TabIndex = 0;
this.layoutControl1.Text = "layoutControl1";
//
// checkedListBoxControlOption
//
this.checkedListBoxControlOption.Location = new System.Drawing.Point(12, 12);
this.checkedListBoxControlOption.Name = "checkedListBoxControlOption";
this.checkedListBoxControlOption.Size = new System.Drawing.Size(345, 371);
this.checkedListBoxControlOption.StyleController = this.layoutControl1;
this.checkedListBoxControlOption.TabIndex = 6;
this.checkedListBoxControlOption.ItemCheck += new DevExpress.XtraEditors.Controls.ItemCheckEventHandler(this.checkedListBoxControlOption_ItemCheck);
this.checkedListBoxControlOption.CheckMemberChanged += new System.EventHandler(this.checkedListBoxControlOption_CheckMemberChanged);
this.checkedListBoxControlOption.SelectedValueChanged += new System.EventHandler(this.checkedListBoxControlOption_SelectedValueChanged);
//
// simpleButtonOK
//
this.simpleButtonOK.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
this.simpleButtonOK.Appearance.Options.UseBackColor = true;
this.simpleButtonOK.Location = new System.Drawing.Point(12, 387);
this.simpleButtonOK.Name = "simpleButtonOK";
this.simpleButtonOK.Size = new System.Drawing.Size(345, 22);
this.simpleButtonOK.StyleController = this.layoutControl1;
this.simpleButtonOK.TabIndex = 5;
this.simpleButtonOK.Text = "Search";
this.simpleButtonOK.Click += new System.EventHandler(this.simpleButtonOK_Click);
//
// Root
//
this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
this.Root.GroupBordersVisible = false;
this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
this.emptySpaceItem1,
this.layoutControlItem2,
this.layoutControlItem3});
this.Root.Name = "Root";
this.Root.Size = new System.Drawing.Size(369, 431);
this.Root.TextVisible = false;
//
// emptySpaceItem1
//
this.emptySpaceItem1.AllowHotTrack = false;
this.emptySpaceItem1.Location = new System.Drawing.Point(0, 401);
this.emptySpaceItem1.Name = "emptySpaceItem1";
this.emptySpaceItem1.Size = new System.Drawing.Size(349, 10);
this.emptySpaceItem1.TextSize = new System.Drawing.Size(0, 0);
//
// layoutControlItem2
//
this.layoutControlItem2.Control = this.simpleButtonOK;
this.layoutControlItem2.Location = new System.Drawing.Point(0, 375);
this.layoutControlItem2.MaxSize = new System.Drawing.Size(0, 26);
this.layoutControlItem2.MinSize = new System.Drawing.Size(89, 26);
this.layoutControlItem2.Name = "layoutControlItem2";
this.layoutControlItem2.Size = new System.Drawing.Size(349, 26);
this.layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem2.TextVisible = false;
//
// layoutControlItem3
//
this.layoutControlItem3.Control = this.checkedListBoxControlOption;
this.layoutControlItem3.Location = new System.Drawing.Point(0, 0);
this.layoutControlItem3.Name = "layoutControlItem3";
this.layoutControlItem3.Size = new System.Drawing.Size(349, 375);
this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem3.TextVisible = false;
//
// FrmOptionStationSearch
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(373, 456);
this.ControlBox = false;
this.Controls.Add(this.groupControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "FrmOptionStationSearch";
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "FrmOptionStationSearch";
this.TopMost = true;
this.Load += new System.EventHandler(this.FrmOptionStationSearch_Load);
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
this.groupControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
this.layoutControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.checkedListBoxControlOption)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.emptySpaceItem1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraEditors.GroupControl groupControl1;
private DevExpress.XtraLayout.LayoutControl layoutControl1;
private DevExpress.XtraEditors.CheckedListBoxControl checkedListBoxControlOption;
private DevExpress.XtraEditors.SimpleButton simpleButtonOK;
private DevExpress.XtraLayout.LayoutControlGroup Root;
private DevExpress.XtraLayout.EmptySpaceItem emptySpaceItem1;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
}
}

View File

@ -0,0 +1,159 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SystemX.Product.TRA.UIControl
{
public partial class FrmOptionStationSearch : Form
{
TestHistorySearchOption Option { get; set; } = new TestHistorySearchOption();
private bool bSelectedTime_DaySearched = false;
public enum eExclusion
{
Time_SelectedTest,
Time_Day,
Time_WholeRange
}
public FrmOptionStationSearch(bool bDialog = true, bool bSelectTime_Day = false)
{
InitializeComponent();
bSelectedTime_DaySearched = bSelectTime_Day;
DispData();
if(bDialog == false)
SetOption();
}
public TestHistorySearchOption GetSelectedResult()
{
return Option;
}
void DispData()
{
string strTypeName = "SystemX.Product.TRA.UIControl.TestHistorySearchOption";
try
{
Type typeObj = Type.GetType(strTypeName);
foreach(PropertyInfo info in typeObj.GetProperties())
{
string strProp = info.Name;
string strValue = info.GetValue(Option, null).ToString();
bool bState = Convert.ToBoolean(strValue);
checkedListBoxControlOption.Items.Add(strProp, bState ? CheckState.Checked : CheckState.Unchecked, true);
if (strProp == "StepVersion" || strProp == "FileVersion")
checkedListBoxControlOption.Items[strProp].Enabled = false;
}
}
catch(Exception ex)
{
MessageBox.Show("Error during option display: " + ex.Message);
}
if (bSelectedTime_DaySearched)
{
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState = CheckState.Checked;
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_WholeRange.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_Day.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
}
}
private void FrmOptionStationSearch_Load(object sender, EventArgs e)
{
DispData();
}
private void SetOption()
{
string strTypeName = "SystemX.Product.TRA.UIControl.TestHistorySearchOption";
try
{
if (checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState == CheckState.Unchecked &&
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_Day.ToString()).FirstOrDefault().CheckState == CheckState.Unchecked &&
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_WholeRange.ToString()).FirstOrDefault().CheckState == CheckState.Unchecked)
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState = CheckState.Checked;
Type typeObj = Type.GetType(strTypeName);
foreach (PropertyInfo info in typeObj.GetProperties())
{
string strProp = info.Name;
bool bChecked = checkedListBoxControlOption.Items[strProp].CheckState == CheckState.Checked ? true : false;
info.SetValue(Option, bChecked);
}
}
catch (Exception ex)
{
MessageBox.Show("Error during option matching: " + ex.Message);
}
}
private void simpleButtonOK_Click(object sender, EventArgs e)
{
SetOption();
this.DialogResult = DialogResult.OK;
this.Close();
}
private void checkedListBoxControlOption_ItemCheck(object sender, DevExpress.XtraEditors.Controls.ItemCheckEventArgs e)
{
bool bChecked = e.State == CheckState.Checked ? true : false;
string strName = checkedListBoxControlOption.Items[e.Index].Value.ToString();
if (strName == eExclusion.Time_SelectedTest.ToString() && bChecked)
{
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_Day.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_WholeRange.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
}
else if (strName == eExclusion.Time_Day.ToString() && bChecked)
{
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_WholeRange.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
}
else if (strName == eExclusion.Time_WholeRange.ToString() && bChecked)
{
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_Day.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
}
//else if (!bChecked)
//{
// checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_SelectedTest.ToString()).FirstOrDefault().CheckState = CheckState.Checked;
// checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_Day.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
// checkedListBoxControlOption.Items.Where(x => x.Value.ToString() == eExclusion.Time_WholeRange.ToString()).FirstOrDefault().CheckState = CheckState.Unchecked;
//}
}
private void checkedListBoxControlOption_CheckMemberChanged(object sender, EventArgs e)
{
}
private void checkedListBoxControlOption_SelectedValueChanged(object sender, EventArgs e)
{
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,164 @@
namespace SystemX.Product.TRA.UIControl
{
partial class FrmOptionSummary
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
this.simpleButtonOptionB = new DevExpress.XtraEditors.SimpleButton();
this.simpleButtonOptionA = new DevExpress.XtraEditors.SimpleButton();
this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
this.simpleButtonCancel = new DevExpress.XtraEditors.SimpleButton();
this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
this.SuspendLayout();
//
// layoutControl1
//
this.layoutControl1.Controls.Add(this.simpleButtonCancel);
this.layoutControl1.Controls.Add(this.simpleButtonOptionB);
this.layoutControl1.Controls.Add(this.simpleButtonOptionA);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(0, 0);
this.layoutControl1.Name = "layoutControl1";
this.layoutControl1.Root = this.Root;
this.layoutControl1.Size = new System.Drawing.Size(463, 144);
this.layoutControl1.TabIndex = 0;
this.layoutControl1.Text = "layoutControl1";
//
// simpleButtonOptionB
//
this.simpleButtonOptionB.Location = new System.Drawing.Point(233, 12);
this.simpleButtonOptionB.Name = "simpleButtonOptionB";
this.simpleButtonOptionB.Size = new System.Drawing.Size(218, 94);
this.simpleButtonOptionB.StyleController = this.layoutControl1;
this.simpleButtonOptionB.TabIndex = 5;
this.simpleButtonOptionB.Text = "All Testlist Version Base";
this.simpleButtonOptionB.Click += new System.EventHandler(this.simpleButtonOptionB_Click);
//
// simpleButtonOptionA
//
this.simpleButtonOptionA.Location = new System.Drawing.Point(12, 12);
this.simpleButtonOptionA.Name = "simpleButtonOptionA";
this.simpleButtonOptionA.Size = new System.Drawing.Size(217, 94);
this.simpleButtonOptionA.StyleController = this.layoutControl1;
this.simpleButtonOptionA.TabIndex = 4;
this.simpleButtonOptionA.Text = "New Testlist Version Base";
this.simpleButtonOptionA.Click += new System.EventHandler(this.simpleButtonOptionA_Click);
//
// Root
//
this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
this.Root.GroupBordersVisible = false;
this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
this.layoutControlItem1,
this.layoutControlItem2,
this.layoutControlItem3});
this.Root.Name = "Root";
this.Root.Size = new System.Drawing.Size(463, 144);
this.Root.TextVisible = false;
//
// layoutControlItem1
//
this.layoutControlItem1.Control = this.simpleButtonOptionA;
this.layoutControlItem1.Location = new System.Drawing.Point(0, 0);
this.layoutControlItem1.MinSize = new System.Drawing.Size(89, 26);
this.layoutControlItem1.Name = "layoutControlItem1";
this.layoutControlItem1.Size = new System.Drawing.Size(221, 98);
this.layoutControlItem1.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem1.TextVisible = false;
//
// layoutControlItem2
//
this.layoutControlItem2.Control = this.simpleButtonOptionB;
this.layoutControlItem2.Location = new System.Drawing.Point(221, 0);
this.layoutControlItem2.MinSize = new System.Drawing.Size(89, 26);
this.layoutControlItem2.Name = "layoutControlItem2";
this.layoutControlItem2.Size = new System.Drawing.Size(222, 98);
this.layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem2.TextVisible = false;
//
// simpleButtonCancel
//
this.simpleButtonCancel.Location = new System.Drawing.Point(12, 110);
this.simpleButtonCancel.Name = "simpleButtonCancel";
this.simpleButtonCancel.Size = new System.Drawing.Size(439, 22);
this.simpleButtonCancel.StyleController = this.layoutControl1;
this.simpleButtonCancel.TabIndex = 6;
this.simpleButtonCancel.Text = "Cancel";
this.simpleButtonCancel.Click += new System.EventHandler(this.simpleButtonCancel_Click);
//
// layoutControlItem3
//
this.layoutControlItem3.Control = this.simpleButtonCancel;
this.layoutControlItem3.Location = new System.Drawing.Point(0, 98);
this.layoutControlItem3.Name = "layoutControlItem3";
this.layoutControlItem3.Size = new System.Drawing.Size(443, 26);
this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem3.TextVisible = false;
//
// FrmOptionSummary
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(463, 144);
this.Controls.Add(this.layoutControl1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
this.Name = "FrmOptionSummary";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Summary Display Option";
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
this.layoutControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraLayout.LayoutControl layoutControl1;
private DevExpress.XtraLayout.LayoutControlGroup Root;
private DevExpress.XtraEditors.SimpleButton simpleButtonOptionB;
private DevExpress.XtraEditors.SimpleButton simpleButtonOptionA;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
private DevExpress.XtraEditors.SimpleButton simpleButtonCancel;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
}
}

View File

@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SystemX.Product.TRA.UIControl
{
public partial class FrmOptionSummary : Form
{
public FrmOptionSummary()
{
InitializeComponent();
}
public bool OptaionA { get; set; } = false;
public bool OptaionB { get; set; } = false;
private void simpleButtonOptionA_Click(object sender, EventArgs e)
{
OptaionA = true;
DialogResult = DialogResult.OK;
}
private void simpleButtonOptionB_Click(object sender, EventArgs e)
{
OptaionB = true;
DialogResult = DialogResult.OK;
}
private void simpleButtonCancel_Click(object sender, EventArgs e)
{
DialogResult = DialogResult.Cancel;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DevExpress.XtraGrid.Views.Grid;
namespace SystemX.Product.TRA.UIControl.Helper {
public class MergedRowsHelper {
List<int> _rows = new List<int>();
GridView _gridView;
public void Register(GridView gridView) {
if(gridView == null) return;
_gridView = gridView;
gridView.FocusedRowChanged += gridView_FocusedRowChanged;
gridView.RowStyle += gridView_RowStyle;
gridView.GridControl.Load += GridControl_Load;
gridView.RowCellStyle += gridView_RowCellStyle;
}
void GridControl_Load(object sender, EventArgs e) {
RefreshMergedRows();
}
void gridView_RowStyle(object sender, RowStyleEventArgs e) {
if (_rows.Contains(_gridView.GetDataSourceRowIndex(e.RowHandle))) {
e.Appearance.Assign(_gridView.PaintAppearance.FocusedRow);
e.HighPriority = true;
}
}
void gridView_RowCellStyle(object sender, RowCellStyleEventArgs e)
{
e.Appearance.TextOptions.HAlignment = e.Column.AppearanceCell.HAlignment;
}
void gridView_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e) {
RefreshMergedRows();
_gridView.LayoutChanged();
}
void RefreshMergedRows() {
_rows = GetMergedRows(_gridView.FocusedRowHandle);
_gridView.RefreshData();
}
List<int> GetMergedRows(int rowHandle) {
HashSet<int> mergedRows = new HashSet<int>();
foreach(DevExpress.XtraGrid.Columns.GridColumn col in _gridView.VisibleColumns) {
var originalCell = _gridView.GetRowCellDisplayText(rowHandle, col);
for(int i = rowHandle; ; i--) {
if(!_gridView.IsValidRowHandle(i)) break;
var cell = _gridView.GetRowCellDisplayText(i, col);
if(cell == originalCell) mergedRows.Add(i);
else break;
}
for(int i = rowHandle; ; i++) {
if(!_gridView.IsValidRowHandle(i)) break;
var cell = _gridView.GetRowCellDisplayText(i, col);
if(cell == originalCell) mergedRows.Add(i);
else break;
}
}
List<int> result = new List<int>();
foreach(var item in mergedRows) {
result.Add(_gridView.GetDataSourceRowIndex(item));
}
return result;
}
}
}

View File

@ -0,0 +1,130 @@
namespace SystemX.Product.TRA.UIControl
{
partial class UcTRADetailOverview
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.gridControlMain = new DevExpress.XtraGrid.GridControl();
this.gridViewMain = new DevExpress.XtraGrid.Views.Grid.GridView();
this.filterModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.filtrToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).BeginInit();
this.SuspendLayout();
//
// gridControlMain
//
this.gridControlMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridControlMain.Location = new System.Drawing.Point(0, 0);
this.gridControlMain.MainView = this.gridViewMain;
this.gridControlMain.Name = "gridControlMain";
this.gridControlMain.Size = new System.Drawing.Size(1040, 576);
this.gridControlMain.TabIndex = 0;
this.gridControlMain.UseDirectXPaint = DevExpress.Utils.DefaultBoolean.True;
this.gridControlMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridViewMain});
//
// gridViewMain
//
this.gridViewMain.Appearance.FocusedRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.FocusedRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.FocusedRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.FocusedRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold);
this.gridViewMain.Appearance.FocusedRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.FocusedRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.FocusedRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseFont = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseForeColor = true;
this.gridViewMain.Appearance.HideSelectionRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.HideSelectionRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.HideSelectionRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.HideSelectionRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold);
this.gridViewMain.Appearance.HideSelectionRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.HideSelectionRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseFont = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseForeColor = true;
this.gridViewMain.Appearance.SelectedRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.SelectedRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.SelectedRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.SelectedRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.gridViewMain.Appearance.SelectedRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.SelectedRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.SelectedRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseFont = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseForeColor = true;
this.gridViewMain.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
this.gridViewMain.GridControl = this.gridControlMain;
this.gridViewMain.Name = "gridViewMain";
this.gridViewMain.OptionsBehavior.Editable = false;
this.gridViewMain.OptionsScrollAnnotations.ShowSelectedRows = DevExpress.Utils.DefaultBoolean.True;
this.gridViewMain.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewMain.OptionsSelection.MultiSelect = true;
this.gridViewMain.OptionsView.AllowHtmlDrawGroups = false;
this.gridViewMain.OptionsView.BestFitMode = DevExpress.XtraGrid.Views.Grid.GridBestFitMode.Fast;
this.gridViewMain.OptionsView.ShowAutoFilterRow = true;
this.gridViewMain.OptionsView.ShowGroupPanel = false;
this.gridViewMain.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(this.gridViewMain_RowClick);
this.gridViewMain.RowCellClick += new DevExpress.XtraGrid.Views.Grid.RowCellClickEventHandler(this.gridViewMain_RowCellClick);
this.gridViewMain.RowStyle += new DevExpress.XtraGrid.Views.Grid.RowStyleEventHandler(this.gridViewMain_RowStyle);
this.gridViewMain.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gridViewMain_MouseDown);
//
// filterModeToolStripMenuItem
//
this.filterModeToolStripMenuItem.Name = "filterModeToolStripMenuItem";
this.filterModeToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.filterModeToolStripMenuItem.Text = "Merge Mode";
//
// filtrToolStripMenuItem
//
this.filtrToolStripMenuItem.Name = "filtrToolStripMenuItem";
this.filtrToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.filtrToolStripMenuItem.Text = "Filter Row";
//
// UcTRADetailOverview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.gridControlMain);
this.Name = "UcTRADetailOverview";
this.Size = new System.Drawing.Size(1040, 576);
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ToolStripMenuItem filterModeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem filtrToolStripMenuItem;
private DevExpress.XtraGrid.GridControl gridControlMain;
public DevExpress.XtraGrid.Views.Grid.GridView gridViewMain;
}
}

View File

@ -0,0 +1,384 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using SystemX.Product.TRA.DataManager;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using SystemX.Product.TRA.UIControl.Helper;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using SystemX.Product.ALIS.Interface;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using SystemX.Net.Platform.Common.Util;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRADetailOverview : UcTRABaseView
{
public enum eColHide
{
TestlistNo,
StepVersion,
RN
}
DMDetailOverview DataManager { get; set; }
public string GetUseQuery()
{
return DataManager.strDetailOverviewUseQuery;
}
public OverviewSearchOption Option { get; set; }
public delegate void evtDataSelectHandler(SelectedDataCollection data);
public event evtDataSelectHandler OnSelect;
public DateTime SearchStart { get; set; }
public DateTime SearchEnd { get; set; }
private IChildController refChildInterface;
private string GridViewGetActiveFilterText;
private bool bProductMergeOption = false;
private int nMergeDataCnt;
private string[] strMergeReqIDs;
eSelectDataView eCurrentView;
public UcTRADetailOverview(IChildController getChildControl, bool bAllowMerge = false, bool bAutoFilterRow = false)
{
ContentsType = eContents.DetailOverview;
refChildInterface = getChildControl;
this.ContextMenuStrip = base.contextMenuStripTest;
this.ContextMenuStrip.ItemClicked += contextMenuStrip_ItemClicked;
base.toolStripMenuItemBeginRelDate.Click += contextMenuStripBeginRelDate_ItemClicked;
SetMenuEnabled(ContentsType);
bProductMergeOption = bAllowMerge;
InitializeComponent();
gridViewMain.OptionsView.AllowCellMerge = true;
gridViewMain.OptionsView.ShowAutoFilterRow = bAutoFilterRow;
}
~UcTRADetailOverview()
{
this.ContextMenuStrip.ItemClicked -= contextMenuStrip_ItemClicked;
base.toolStripMenuItemBeginRelDate.Click -= contextMenuStripBeginRelDate_ItemClicked;
}
private void contextMenuStripBeginRelDate_ItemClicked(object sender, EventArgs e)
{
int nTag = Convert.ToInt32(((ToolStripMenuItem)sender).Tag);
switch (nTag)
{
case 7:
{
string GetDateValue = base.toolStripTextBoxBeginRelDate.Text;
int nGetDateValue = int.MaxValue;
if (int.TryParse(GetDateValue, out nGetDateValue))
{
if (nGetDateValue > 7)
nGetDateValue = 7;
if (nGetDateValue < -7)
nGetDateValue = -7;
ViewData(eCurrentView, nGetDateValue);
}
}
break;
}
}
private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ToolStripItem tsp = e.ClickedItem;
int nTag = Convert.ToInt32(tsp.Tag);
switch (nTag)
{
case 0:
refChildInterface.SetOverview();
break;
case 1:
refChildInterface.SetHistoryView();
break;
case 2:
break;
case 3:
break;
case 4:
refChildInterface.SetNgHistView(ContentsType);
break;
}
}
public void SetSQLConnection(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
{
DataManager = new DMDetailOverview(SelectView, SelectInfo, getDBController);
}
public void SetGridViewStyle()
{
gridViewMain.BeginUpdate();
foreach (GridColumn gc in gridViewMain.Columns)
{
if (gc.FieldName.CompareTo("TestDate") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else if (gc.FieldName.CompareTo("Host") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
}
gridViewMain.EndUpdate();
gridViewMain.ActiveFilterString = GridViewGetActiveFilterText;
}
public void ViewData(eSelectDataView SelectView, int nGetDateValue = int.MaxValue)
{
eCurrentView = SelectView;
Option = new OverviewSearchOption();
Option.DisplayByStation = !refChildInterface.GetOverviewMergeState();
DataTable dtResult = DataManager.GetDataView(SelectView, refChildInterface.GetSelectDataOverView(nGetDateValue), Option);
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.DataSource = null;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.DataSource = dtResult;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strName in Enum.GetNames(typeof(eColHide)))
{
if (gridViewMain.Columns.ColumnByFieldName(strName) != null)
gridViewMain.Columns[strName].Visible = false;
}
gridControlMain.Update();
SetGridViewStyle();
}
public void ViewData(eSelectDataView SelectView, SelectedDataCollection data, bool bMergeByPartNumber = false)
{
eCurrentView = SelectView;
Option = new OverviewSearchOption();
Option.DisplayByStation = !bMergeByPartNumber;
DataTable dtResult = DataManager.GetDataView(SelectView, data, Option);
if(bProductMergeOption)
{
nMergeDataCnt = DataManager.dtSubRaw.Rows.Count;
strMergeReqIDs = new string[nMergeDataCnt];
for (int i = 0; i < nMergeDataCnt; i++)
strMergeReqIDs[i] = DataManager.dtSubRaw.Rows[i]["TestListCntID"].ToString();
}
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.DataSource = null;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.DataSource = dtResult;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strName in Enum.GetNames(typeof(eColHide)))
{
if (gridViewMain.Columns.ColumnByFieldName(strName) != null)
gridViewMain.Columns[strName].Visible = false;
}
gridControlMain.Update();
SetGridViewStyle();
}
public bool DoSelect(DataRow dtRow)
{
if (dtRow == null)
return false;
bool bDataCheckResult = true;
try
{
string strDate = dtRow[DMDetailOverview.eColList.TestDate.ToString()].ToString();
string strStartTime = dtRow[DMDetailOverview.eColList.FirstTestTime.ToString()].ToString();
string strEndTime = dtRow[DMDetailOverview.eColList.FinalTestTime.ToString()].ToString();
DateTime dtDate = DateTime.Parse(strDate);
strStartTime = dtDate.ToShortDateString() + " " + strStartTime;
strEndTime = dtDate.ToShortDateString() + " " + strEndTime;
DateTime dtStart = DateTime.Parse(strStartTime);
DateTime dtEnd = DateTime.Parse(strEndTime);
//dtEnd = dtEnd.AddHours(-dtStart.Hour);
//dtEnd = dtEnd.AddHours(23.9999);
//string strStnName, string strHostID, string strSectionID, string strTestType,
//string strProdNo, string strTestCode, string strParentNo, string strProdCode,
//string strFileVer, string strStepVer)
string strTestListCntID = string.Empty;
if (bProductMergeOption == false)
strTestListCntID = dtRow[DMDetailOverview.eColList.TestListCntID.ToString()].ToString();
SelectedDataCollection selData = new SelectedDataCollection(
SearchStart,
SearchEnd,
dtStart,
dtEnd,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.StationName.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.Host.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMDetailOverview.eColList.Section.ToString()].ToString() : string.Empty,
dtRow[DMDetailOverview.eColList.TestType.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.ProductNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.TestCode.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.ParentNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.FileCode.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListFileNo.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListVariantNo.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.FileVersion.ToString()].ToString(),
dtRow[DMDetailOverview.eColList.StepVersion.ToString()].ToString(),
strTestListCntID);
if (bProductMergeOption)
{
selData.SetCountRequestID(nMergeDataCnt);
selData.CopyReqIDs(strMergeReqIDs);
}
refChildInterface.AnnounceContentsType(ContentsType);
OnSelect(selData);
}
catch (Exception e)
{
MessageOutput.ConsoleWrite($"Detail Overview DoSelect Error: {e.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
bDataCheckResult = false;
}
finally
{
;//
}
return bDataCheckResult;
}
private DataRow GetRowInfo(object Viewer, int nRowHndl)
{
DataRow dtRow = null;
try
{
GridView view = Viewer as GridView;
var dvRow = view.GetRow(nRowHndl);
dtRow = (dvRow as DataRowView).Row;
}
catch
{
dtRow = null;
}
return dtRow;
}
private void gridViewMain_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
DoSelect(GetRowInfo(sender, nRowHndl));
}
private void gridViewMain_RowStyle(object sender, RowStyleEventArgs e)
{
GridView view = sender as GridView;
if (view.FocusedRowHandle == e.RowHandle)
{
GridViewInfo viewInfo = gridViewMain.GetViewInfo() as GridViewInfo;
e.Appearance.Assign(viewInfo.PaintAppearance.FocusedRow);
e.HighPriority = true;
}
}
private void gridViewMain_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
GridHitInfo hInfo = gridViewMain.CalcHitInfo(gridControlMain.PointToClient(Cursor.Position));
if (hInfo.RowInfo != null)
{
int nGetRowHandle = hInfo.RowInfo.RowHandle;
DoSelect(GetRowInfo(gridViewMain, nGetRowHandle));
}
}
}
private void gridViewMain_RowCellClick(object sender, RowCellClickEventArgs e)
{
int nClickCnt = e.Clicks;
if (nClickCnt < 2)
return;
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
if(DoSelect(GetRowInfo(sender, nRowHndl)))
refChildInterface.SetHistoryView();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,234 @@
namespace SystemX.Product.TRA.UIControl
{
partial class UcTRADetailTestResult
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
this.panelControlResult = new DevExpress.XtraEditors.PanelControl();
this.simpleButtonTypeConv = new DevExpress.XtraEditors.SimpleButton();
this.groupControl1 = new DevExpress.XtraEditors.GroupControl();
this.vGridControlInfo = new DevExpress.XtraVerticalGrid.VGridControl();
this.gridControlMain = new DevExpress.XtraGrid.GridControl();
this.gridViewMain = new DevExpress.XtraGrid.Views.Grid.GridView();
this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem2 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem3 = new DevExpress.XtraLayout.LayoutControlItem();
this.layoutControlItem4 = new DevExpress.XtraLayout.LayoutControlItem();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.panelControlResult)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).BeginInit();
this.groupControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.vGridControlInfo)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).BeginInit();
this.SuspendLayout();
//
// layoutControl1
//
this.layoutControl1.Controls.Add(this.panelControlResult);
this.layoutControl1.Controls.Add(this.simpleButtonTypeConv);
this.layoutControl1.Controls.Add(this.groupControl1);
this.layoutControl1.Controls.Add(this.gridControlMain);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(0, 0);
this.layoutControl1.Name = "layoutControl1";
this.layoutControl1.Root = this.Root;
this.layoutControl1.Size = new System.Drawing.Size(1179, 635);
this.layoutControl1.TabIndex = 0;
this.layoutControl1.Text = "layoutControl1";
//
// panelControlResult
//
this.panelControlResult.Appearance.BackColor = System.Drawing.Color.DarkGray;
this.panelControlResult.Appearance.Options.UseBackColor = true;
this.panelControlResult.Location = new System.Drawing.Point(12, 12);
this.panelControlResult.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Flat;
this.panelControlResult.LookAndFeel.UseDefaultLookAndFeel = false;
this.panelControlResult.Name = "panelControlResult";
this.panelControlResult.Size = new System.Drawing.Size(321, 38);
this.panelControlResult.TabIndex = 1;
//
// simpleButtonTypeConv
//
this.simpleButtonTypeConv.Appearance.BackColor = DevExpress.LookAndFeel.DXSkinColors.FillColors.Primary;
this.simpleButtonTypeConv.Appearance.Options.UseBackColor = true;
this.simpleButtonTypeConv.Location = new System.Drawing.Point(12, 601);
this.simpleButtonTypeConv.Name = "simpleButtonTypeConv";
this.simpleButtonTypeConv.Size = new System.Drawing.Size(321, 22);
this.simpleButtonTypeConv.StyleController = this.layoutControl1;
this.simpleButtonTypeConv.TabIndex = 1;
this.simpleButtonTypeConv.Text = "-";
this.simpleButtonTypeConv.Click += new System.EventHandler(this.simpleButtonTypeConv_Click);
//
// groupControl1
//
this.groupControl1.Controls.Add(this.vGridControlInfo);
this.groupControl1.Location = new System.Drawing.Point(12, 54);
this.groupControl1.Name = "groupControl1";
this.groupControl1.Size = new System.Drawing.Size(321, 543);
this.groupControl1.TabIndex = 5;
this.groupControl1.Text = "Test Information";
//
// vGridControlInfo
//
this.vGridControlInfo.Cursor = System.Windows.Forms.Cursors.Default;
this.vGridControlInfo.Dock = System.Windows.Forms.DockStyle.Fill;
this.vGridControlInfo.Location = new System.Drawing.Point(2, 23);
this.vGridControlInfo.Name = "vGridControlInfo";
this.vGridControlInfo.Size = new System.Drawing.Size(317, 518);
this.vGridControlInfo.TabIndex = 0;
//
// gridControlMain
//
this.gridControlMain.Location = new System.Drawing.Point(337, 12);
this.gridControlMain.MainView = this.gridViewMain;
this.gridControlMain.Name = "gridControlMain";
this.gridControlMain.Size = new System.Drawing.Size(830, 611);
this.gridControlMain.TabIndex = 4;
this.gridControlMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridViewMain});
//
// gridViewMain
//
this.gridViewMain.Appearance.Row.BackColor = System.Drawing.Color.Transparent;
this.gridViewMain.Appearance.Row.Options.UseBackColor = true;
this.gridViewMain.GridControl = this.gridControlMain;
this.gridViewMain.Name = "gridViewMain";
this.gridViewMain.OptionsBehavior.Editable = false;
this.gridViewMain.OptionsBehavior.ReadOnly = true;
this.gridViewMain.OptionsView.HeaderFilterButtonShowMode = DevExpress.XtraEditors.Controls.FilterButtonShowMode.SmartTag;
this.gridViewMain.OptionsView.ShowAutoFilterRow = true;
this.gridViewMain.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.ShowAlways;
this.gridViewMain.OptionsView.ShowGroupPanel = false;
//
// Root
//
this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
this.Root.GroupBordersVisible = false;
this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
this.layoutControlItem1,
this.layoutControlItem2,
this.layoutControlItem3,
this.layoutControlItem4});
this.Root.Name = "Root";
this.Root.Size = new System.Drawing.Size(1179, 635);
this.Root.TextVisible = false;
//
// layoutControlItem1
//
this.layoutControlItem1.Control = this.gridControlMain;
this.layoutControlItem1.Location = new System.Drawing.Point(325, 0);
this.layoutControlItem1.Name = "layoutControlItem1";
this.layoutControlItem1.Size = new System.Drawing.Size(834, 615);
this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem1.TextVisible = false;
//
// layoutControlItem2
//
this.layoutControlItem2.Control = this.groupControl1;
this.layoutControlItem2.Location = new System.Drawing.Point(0, 42);
this.layoutControlItem2.MaxSize = new System.Drawing.Size(325, 0);
this.layoutControlItem2.MinSize = new System.Drawing.Size(325, 5);
this.layoutControlItem2.Name = "layoutControlItem2";
this.layoutControlItem2.Size = new System.Drawing.Size(325, 547);
this.layoutControlItem2.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem2.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem2.TextVisible = false;
//
// layoutControlItem3
//
this.layoutControlItem3.Control = this.simpleButtonTypeConv;
this.layoutControlItem3.Location = new System.Drawing.Point(0, 589);
this.layoutControlItem3.MaxSize = new System.Drawing.Size(325, 26);
this.layoutControlItem3.MinSize = new System.Drawing.Size(325, 26);
this.layoutControlItem3.Name = "layoutControlItem3";
this.layoutControlItem3.Size = new System.Drawing.Size(325, 26);
this.layoutControlItem3.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem3.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem3.TextVisible = false;
//
// layoutControlItem4
//
this.layoutControlItem4.Control = this.panelControlResult;
this.layoutControlItem4.Location = new System.Drawing.Point(0, 0);
this.layoutControlItem4.MaxSize = new System.Drawing.Size(325, 42);
this.layoutControlItem4.MinSize = new System.Drawing.Size(325, 42);
this.layoutControlItem4.Name = "layoutControlItem4";
this.layoutControlItem4.Size = new System.Drawing.Size(325, 42);
this.layoutControlItem4.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Custom;
this.layoutControlItem4.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem4.TextVisible = false;
//
// UcTRADetailTestResult
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.layoutControl1);
this.Name = "UcTRADetailTestResult";
this.Size = new System.Drawing.Size(1179, 635);
this.Load += new System.EventHandler(this.UcTRADetailTestResult_Load);
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
this.layoutControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.panelControlResult)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.groupControl1)).EndInit();
this.groupControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.vGridControlInfo)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem2)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem3)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem4)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraLayout.LayoutControl layoutControl1;
private DevExpress.XtraEditors.GroupControl groupControl1;
private DevExpress.XtraGrid.GridControl gridControlMain;
private DevExpress.XtraGrid.Views.Grid.GridView gridViewMain;
private DevExpress.XtraLayout.LayoutControlGroup Root;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem2;
private DevExpress.XtraVerticalGrid.VGridControl vGridControlInfo;
private DevExpress.XtraEditors.SimpleButton simpleButtonTypeConv;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem3;
private DevExpress.XtraEditors.PanelControl panelControlResult;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem4;
}
}

View File

@ -0,0 +1,313 @@
using DevExpress.Spreadsheet;
using DevExpress.XtraPrinting;
using DevExpress.XtraVerticalGrid;
using DevExpress.XtraVerticalGrid.Rows;
using System;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Windows.Forms;
using SystemX.Product.ALIS.Interface;
using SystemX.Product.TRA.DataManager;
using static SystemX.Product.CP.TRA.Commons;
using static SystemX.Product.TRA.DataManager.DMTestDetail;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRADetailTestResult : UcTRABaseView
{
public enum eColDataTable
{
StepNo,
Position,
Variant,
Gate,
MO,
Function,
Min,
MeasuredValue,
Max,
Dimension,
Result,
Duration
}
DMTestDetail DataManager { get; set; }
DetailTestDataCollection SearchSource { get; set; }
DataTable DTTestlistSrc { get; set; } = null;
DataTable DTTestLogSrc { get; set; } = null;
string TextShowTL { get; } = "Display the Testlist";
string TextShowLOG { get; } = "Display the Test Result";
private string GridViewGetActiveFilterText;
public UcTRADetailTestResult()
{
ContentsType = eContents.TestResult;
//this.ContextMenuStrip = base.contextMenuStripTest;
InitializeComponent();
}
public void SetSQLConnection(eSelectDataView SelectView, IDataBaseController getDBController, DateTime dtStart)
{
DataManager = new DMTestDetail(SelectView, getDBController, dtStart);
}
public override void ExportData()
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
string strFileName = CreateExportFileName();
string strExpPath = dlg.SelectedPath + "\\" + strFileName;
XlsxExportOptionsEx option = new XlsxExportOptionsEx();
string strFile = strExpPath + ".xlsx";
option.ShowGridLines = true;
option.ExportType = DevExpress.Export.ExportType.WYSIWYG;
option.ExportMode = XlsxExportMode.SingleFile;
option.SheetName = "Detail Test Data";
gridControlMain.ExportToXlsx(strFile, option);
Workbook wbook = new Workbook();
wbook.LoadDocument(strFile);
Worksheet worksheetInfo = wbook.Worksheets.Add("Detail Test Info.");
int nIdx = 0;
foreach (var row in vGridControlInfo.Rows)
{
if (row is CategoryRow)
{
worksheetInfo.Cells[nIdx, 0].Value = row.Properties.Caption.ToString();
CellRange cr = worksheetInfo.Range.FromLTRB(0, nIdx, 2, nIdx);
worksheetInfo.MergeCells(cr);
}
else
{
worksheetInfo.Cells[nIdx, 1].Value = row.Properties.Caption.ToString();
worksheetInfo.Cells[nIdx, 2].Value = row.Properties.Value?.ToString();
}
nIdx++;
}
worksheetInfo.Columns.AutoFit(0, 3);
worksheetInfo.AutoOutline();
wbook.SaveDocument(strFile);
}
}
public string CreateExportFileName()
{
string strFileName = $"{this.ContentsType.ToString()}_{SearchSource.ProductID}_{SearchSource.ProductNo}_{SearchSource.TestCode}_{SearchSource.StationName}_{SearchSource.TestResult}";
strFileName += $"_{SearchSource.StartTime.ToString("yyyyMMddHHmmss")}";
return strFileName;
}
public void ViewData(DetailTestDataCollection data)
{
if (data == null)
return;
SearchSource = data;
ShowProperties(data);
DTTestLogSrc = DataManager.SearchTestHistory(data);
DTTestlistSrc = DataManager.SearchTestlist(data);
ShowDetailData(data);
}
DataTable CombineLogForm()
{
if (DTTestLogSrc == null || DTTestlistSrc == null)
return null;
DataTable dtFinal = new DataTable();
foreach(string strCol in Enum.GetNames(typeof(eColDataTable)))
{
Type typCol = typeof(string);
if (strCol == eColDataTable.StepNo.ToString())
typCol = typeof(int);
if (strCol == eColDataTable.Position.ToString())
typCol = typeof(int);
else if (strCol == eColDataTable.Duration.ToString())
typCol = typeof(double);
dtFinal.Columns.Add(strCol, typCol);
}
foreach (DataRow drLog in DTTestLogSrc.AsEnumerable())
{
//DataRow drTL = DTTestlistSrc.AsEnumerable().Where(x => Convert.ToInt32(x[eColTestlist.StepID.ToString()]) == Convert.ToInt32(drLog[eColTestLog.StepID.ToString()])).FirstOrDefault();
//PK 기준 검색
DataRow drTL = DTTestlistSrc.Rows.Find(drLog[eColTestLog.StepID.ToString()]);
if (drTL == null)
continue;
DataRow drDisp = dtFinal.NewRow();
drDisp[eColDataTable.StepNo.ToString()] = Convert.ToInt32(Convert.ToInt32(drLog[eColTestLog.StepID.ToString()]));
drDisp[eColDataTable.Position.ToString()] = Convert.ToInt32(Convert.ToInt32(drTL[eColTestlist.Position.ToString()]));
drDisp[eColDataTable.Variant.ToString()] = drTL[eColTestlist.Variant.ToString()].ToString();
drDisp[eColDataTable.Gate.ToString()] = drTL[eColTestlist.Gate.ToString()].ToString();
drDisp[eColDataTable.MO.ToString()] = drTL[eColTestlist.StepDesc.ToString()].ToString();
drDisp[eColDataTable.Function.ToString()] = drTL[eColTestlist.UseFunction.ToString()].ToString();
bool bIsGlobal = (Convert.ToInt32(drTL[eColTestlist.IsGlobal.ToString()])) > 0 ? true : false;
drDisp[eColDataTable.Min.ToString()] = bIsGlobal ? drLog[eColTestLog.GlobalMin.ToString()].ToString() : drTL[eColTestlist.SpecMin.ToString()].ToString();
drDisp[eColDataTable.Max.ToString()] = bIsGlobal ? drLog[eColTestLog.GlobalMax.ToString()].ToString() : drTL[eColTestlist.SpecMax.ToString()].ToString();
string strMessage = drLog[eColTestLog.Message.ToString()].ToString();
string strMeasValStr = drLog[eColTestLog.MeasValStr.ToString()].ToString();
string strMeasVal = drLog[eColTestLog.MeasVal.ToString()].ToString();
string strMin = drDisp[eColDataTable.Min.ToString()].ToString();
string strMax = drDisp[eColDataTable.Max.ToString()].ToString();
bool bJustCallMacro = false;
if (string.IsNullOrWhiteSpace(strMin) &&
string.IsNullOrWhiteSpace(strMax) &&
strMeasVal == "0.00000")
bJustCallMacro = true;
/*
string strDispValue = string.IsNullOrWhiteSpace(strMessage) ?
(string.IsNullOrWhiteSpace(strMeasValStr) ? strMeasVal : strMeasValStr) : strMessage;
*/
string strDispValue = string.IsNullOrWhiteSpace(strMessage) ?
(string.IsNullOrWhiteSpace(strMeasValStr) ? (bJustCallMacro ? "" : strMeasVal) : strMeasValStr) : strMessage;
drDisp[eColDataTable.MeasuredValue.ToString()] = strDispValue;
drDisp[eColDataTable.Dimension.ToString()] = drTL[eColTestlist.Dim.ToString()].ToString();
drDisp[eColDataTable.Result.ToString()] = drLog[eColTestLog.Result.ToString()].ToString();
string strValue = drLog[(int)eColTestLog.SpentTime].ToString();
double dVal = string.IsNullOrWhiteSpace(strValue) ? double.NaN : Convert.ToDouble(strValue);
drDisp[eColDataTable.Duration.ToString()] = dVal;
dtFinal.Rows.Add(drDisp);
}
return dtFinal;
}
void ShowDetailData(DetailTestDataCollection data)
{
DataTable dtResult = CombineLogForm();
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.BeginInit();
gridControlMain.DataSource = dtResult;
gridControlMain.Update();
gridControlMain.RefreshDataSource();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
gridControlMain.EndInit();
gridViewMain.ActiveFilterString = GridViewGetActiveFilterText;
}
void ShowTestlistData(DetailTestDataCollection data)
{
DataTable dtResult = DTTestlistSrc;
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.BeginInit();
gridControlMain.DataSource = dtResult;
gridControlMain.Update();
gridControlMain.RefreshDataSource();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strColName in Enum.GetNames(typeof(eColHideListTL)))
{
if (gridViewMain.Columns.ColumnByFieldName(strColName) != null)
gridViewMain.Columns[strColName].Visible = false;
}
gridControlMain.EndInit();
gridViewMain.ActiveFilterString = GridViewGetActiveFilterText;
}
void ShowProperties(DetailTestDataCollection data)
{
vGridControlInfo.Rows.Clear();
foreach (PropertyInfo propInf in data.GetType().GetProperties())
{
EditorRow dtRow = new EditorRow();
dtRow.Properties.Caption = propInf.Name;
dtRow.Properties.Value = propInf.GetValue(data, null)?.ToString();
vGridControlInfo.Rows.Add(dtRow);
}
OnSizeChanged(vGridControlInfo);
if (data.TestResult.ToUpper() == "OK")
panelControlResult.Appearance.BackColor = Color.LightGreen;
else
panelControlResult.Appearance.BackColor = Color.IndianRed;
}
void OnSizeChanged(VGridControl grid)
{
int width = grid.ClientSize.Width / (grid.RecordCount + 1);
grid.RecordWidth = width;
grid.RowHeaderWidth = width;
}
private void UcTRADetailTestResult_Load(object sender, System.EventArgs e)
{
simpleButtonTypeConv.Text = TextShowTL;
}
private void simpleButtonTypeConv_Click(object sender, System.EventArgs e)
{
if(simpleButtonTypeConv.Text == TextShowLOG)
{
simpleButtonTypeConv.Text = TextShowTL;
ShowDetailData(SearchSource);
}
else
{
simpleButtonTypeConv.Text = TextShowLOG;
ShowTestlistData(SearchSource);
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,130 @@
namespace SystemX.Product.TRA.UIControl
{
partial class UcTRAOverview
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.gridControlMain = new DevExpress.XtraGrid.GridControl();
this.gridViewMain = new DevExpress.XtraGrid.Views.Grid.GridView();
this.filterModeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.filtrToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).BeginInit();
this.SuspendLayout();
//
// gridControlMain
//
this.gridControlMain.Dock = System.Windows.Forms.DockStyle.Fill;
this.gridControlMain.Location = new System.Drawing.Point(0, 0);
this.gridControlMain.MainView = this.gridViewMain;
this.gridControlMain.Name = "gridControlMain";
this.gridControlMain.Size = new System.Drawing.Size(1040, 576);
this.gridControlMain.TabIndex = 0;
this.gridControlMain.UseDirectXPaint = DevExpress.Utils.DefaultBoolean.True;
this.gridControlMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridViewMain});
//
// gridViewMain
//
this.gridViewMain.Appearance.FocusedRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.FocusedRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.FocusedRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.FocusedRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold);
this.gridViewMain.Appearance.FocusedRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.FocusedRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.FocusedRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseFont = true;
this.gridViewMain.Appearance.FocusedRow.Options.UseForeColor = true;
this.gridViewMain.Appearance.HideSelectionRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.HideSelectionRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.HideSelectionRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.HideSelectionRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold);
this.gridViewMain.Appearance.HideSelectionRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.HideSelectionRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseFont = true;
this.gridViewMain.Appearance.HideSelectionRow.Options.UseForeColor = true;
this.gridViewMain.Appearance.SelectedRow.BackColor = System.Drawing.Color.Snow;
this.gridViewMain.Appearance.SelectedRow.BackColor2 = System.Drawing.Color.WhiteSmoke;
this.gridViewMain.Appearance.SelectedRow.BorderColor = System.Drawing.Color.Red;
this.gridViewMain.Appearance.SelectedRow.Font = new System.Drawing.Font("Times New Roman", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.gridViewMain.Appearance.SelectedRow.ForeColor = System.Drawing.Color.Black;
this.gridViewMain.Appearance.SelectedRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
this.gridViewMain.Appearance.SelectedRow.Options.UseBackColor = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseBorderColor = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseFont = true;
this.gridViewMain.Appearance.SelectedRow.Options.UseForeColor = true;
this.gridViewMain.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
this.gridViewMain.GridControl = this.gridControlMain;
this.gridViewMain.Name = "gridViewMain";
this.gridViewMain.OptionsBehavior.Editable = false;
this.gridViewMain.OptionsScrollAnnotations.ShowSelectedRows = DevExpress.Utils.DefaultBoolean.True;
this.gridViewMain.OptionsSelection.EnableAppearanceFocusedCell = false;
this.gridViewMain.OptionsSelection.MultiSelect = true;
this.gridViewMain.OptionsView.AllowHtmlDrawGroups = false;
this.gridViewMain.OptionsView.BestFitMode = DevExpress.XtraGrid.Views.Grid.GridBestFitMode.Fast;
this.gridViewMain.OptionsView.ShowAutoFilterRow = true;
this.gridViewMain.OptionsView.ShowGroupPanel = false;
this.gridViewMain.RowClick += new DevExpress.XtraGrid.Views.Grid.RowClickEventHandler(this.gridViewMain_RowClick);
this.gridViewMain.RowCellClick += new DevExpress.XtraGrid.Views.Grid.RowCellClickEventHandler(this.gridViewMain_RowCellClick);
this.gridViewMain.RowStyle += new DevExpress.XtraGrid.Views.Grid.RowStyleEventHandler(this.gridViewMain_RowStyle);
this.gridViewMain.MouseDown += new System.Windows.Forms.MouseEventHandler(this.gridViewMain_MouseDown);
//
// filterModeToolStripMenuItem
//
this.filterModeToolStripMenuItem.Name = "filterModeToolStripMenuItem";
this.filterModeToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.filterModeToolStripMenuItem.Text = "Merge Mode";
//
// filtrToolStripMenuItem
//
this.filtrToolStripMenuItem.Name = "filtrToolStripMenuItem";
this.filtrToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.filtrToolStripMenuItem.Text = "Filter Row";
//
// UcTRAOverview
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.gridControlMain);
this.Name = "UcTRAOverview";
this.Size = new System.Drawing.Size(1040, 576);
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).EndInit();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.ToolStripMenuItem filterModeToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem filtrToolStripMenuItem;
private DevExpress.XtraGrid.GridControl gridControlMain;
public DevExpress.XtraGrid.Views.Grid.GridView gridViewMain;
}
}

View File

@ -0,0 +1,378 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using SystemX.Product.TRA.DataManager;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Columns;
using SystemX.Product.TRA.UIControl.Helper;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using SystemX.Product.ALIS.Interface;
using SystemX.Net.Platform.Common.Util;
using static SystemX.Net.Platform.Common.Util.LogMessage;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRAOverview : UcTRABaseView
{
public enum eColHide
{
TestlistNo,
StepVersion,
RN
}
DMOverview DataManager { get; set; }
public string GetUseQuery()
{
return DataManager.strOverviewUseQuery;
}
public OverviewSearchOption Option { get; set; }
public delegate void evtDataSelectHandler(SelectedDataCollection data);
public event evtDataSelectHandler OnSelect;
public DateTime SearchStart { get; set; }
public DateTime SearchEnd { get; set; }
public bool bAllowCheckedState;
private IChildController refChildInterface;
private string GridViewGetActiveFilterText;
public UcTRAOverview(IChildController getChildControl, eContents SetContentsType = eContents.Overview, bool bAllowMerge = false, bool bAutoFilterRow = false)
{
ContentsType = SetContentsType;
refChildInterface = getChildControl;
this.ContextMenuStrip = base.contextMenuStripTest;
this.ContextMenuStrip.ItemClicked += contextMenuStrip_ItemClicked;
SetMenuEnabled(ContentsType);
InitializeComponent();
gridViewMain.OptionsView.AllowCellMerge = true;
bAllowCheckedState = bAllowMerge;
gridViewMain.OptionsView.ShowAutoFilterRow = bAutoFilterRow;
/*MergedRowsHelper helper = new MergedRowsHelper();
helper.Register(gridViewMain);
gridViewMain.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;
gridViewMain.OptionsBehavior.Editable = false;
gridViewMain.OptionsSelection.EnableAppearanceFocusedCell = false;
DevExpress.Skins.Skin currentSkin = DevExpress.Skins.CommonSkins.GetSkin(gridControlMain.LookAndFeel);
Color color = currentSkin.Colors["Highlight"];
gridViewMain.Appearance.FocusedRow.BackColor = color;*/
}
~UcTRAOverview()
{
this.ContextMenuStrip.ItemClicked -= contextMenuStrip_ItemClicked;
}
public void SetSqlCommandCancel()
{
DataManager.SetSqlCommandCancel();
}
public bool GetSqlCommandCancelState()
{
return DataManager.GetSqlCommandCancelState();
}
private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
ToolStripItem tsp = e.ClickedItem;
int nTag = Convert.ToInt32(tsp.Tag);
switch (nTag)
{
case 0:
break;
case 1:
break;
case 2:
break;
case 3:
break;
case 4:
refChildInterface.SetNgHistView(ContentsType);
break;
case 8:
refChildInterface.SetDetailOverview();
break;
}
}
public void SetSQLConnection(eSelectDataView SelectView, eOverviewModelNameInfo SelectInfo, IDataBaseController getDBController)
{
DataManager = new DMOverview(SelectView, SelectInfo, getDBController);
}
public void SetGridViewStyle()
{
gridViewMain.BeginUpdate();
foreach (GridColumn gc in gridViewMain.Columns)
{
if (gc.FieldName.CompareTo("TestDate") == 0)
{
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
gc.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
if(ContentsType == eContents.HostUseHistory)
gc.DisplayFormat.FormatString = "yyyy-MM-dd HH:mm:ss.fff";
}
else if (gc.FieldName.CompareTo("Host") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else
{
/*
if (bAllowCheckedState)
{
if (gc.FieldName.CompareTo("ProductNo") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else if (gc.FieldName.CompareTo("TestCode") == 0)
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
else
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
}
else
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
*/
gc.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.False;
}
}
/*
int[] nGroupIdx = null;
nGroupIdx = new int[2] { 5, 6 };
for (int i = 0; i < nGroupIdx.Count(); i++)
{
if (bAllowCheckedState)
gridViewMain.Columns[nGroupIdx[0]].Group();
else
gridViewMain.Columns[nGroupIdx[0]].UnGroup();
}
if (bAllowCheckedState)
gridViewMain.CollapseAllGroups();
*/
gridViewMain.EndUpdate();
gridViewMain.ActiveFilterString = GridViewGetActiveFilterText;
}
public async Task<OverviewSearchOption> ViewData(eSelectDataView SelectView, DateTime dtStart, DateTime dtEnd, OverviewSearchOption OvOp, bool bMergeByPartNumber = false, bool bUseMainConn = false, string strTestQuery = "")
{
FrmOptionOverview dlgOption = new FrmOptionOverview();
Option = dlgOption.GetSelectedResult();
Option.DisplayByStation = OvOp.DisplayByStation;
Option.ViewOptionPanel = OvOp.ViewOptionPanel;
Option.FullScanData = OvOp.FullScanData;
Option.ProductID = OvOp.ProductID;
if (OvOp.ViewOptionPanel)
{
dlgOption.ShowDialog();
Option = dlgOption.GetSelectedResult();
}
else
{
Option.DisplayByStation = !bMergeByPartNumber;
}
if (bMergeByPartNumber)
SetMenuFindErrorEnabled(!bMergeByPartNumber);
DataTable dtResult = await DataManager.GetDataView(SelectView, dtStart, dtEnd, Option, bUseMainConn, strTestQuery);
GridViewGetActiveFilterText = gridViewMain.ActiveFilterString;
gridControlMain.DataSource = null;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.DataSource = dtResult;
gridControlMain.RefreshDataSource();
gridViewMain.RefreshData();
gridControlMain.ForceInitialize();
gridViewMain.PopulateColumns(dtResult);
foreach (string strName in Enum.GetNames(typeof(eColHide)))
{
if(gridViewMain.Columns.ColumnByFieldName(strName) != null)
gridViewMain.Columns[strName].Visible = false;
}
gridControlMain.Update();
SetGridViewStyle();
return Option;
}
public bool DoSelect(DataRow dtRow)
{
if (dtRow == null)
return false;
bool bDataCheckResult = true;
try
{
string strDate = dtRow[DMOverview.eColList.TestDate.ToString()].ToString();
string strStartTime = dtRow[DMOverview.eColList.FirstTestTime.ToString()].ToString();
string strEndTime = dtRow[DMOverview.eColList.FinalTestTime.ToString()].ToString();
DateTime dtDate = DateTime.Parse(strDate);
strStartTime = dtDate.ToShortDateString() + " " + strStartTime;
strEndTime = dtDate.ToShortDateString() + " " + strEndTime;
DateTime dtStart = DateTime.Parse(strStartTime);
DateTime dtEnd = DateTime.Parse(strEndTime);
//string strStnName, string strHostID, string strSectionID, string strTestType,
//string strProdNo, string strTestCode, string strParentNo, string strProdCode,
//string strFileVer, string strStepVer)
string strTestListCntID = string.Empty;
if (Option.DisplayByStation)
strTestListCntID = dtRow[DMOverview.eColList.TestListCntID.ToString()].ToString();
SelectedDataCollection selData = new SelectedDataCollection(
SearchStart,
SearchEnd,
dtStart,
dtEnd,
Option.DisplayByStation ? dtRow[DMOverview.eColList.StationName.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMOverview.eColList.Host.ToString()].ToString() : string.Empty,
Option.DisplayByStation ? dtRow[DMOverview.eColList.Section.ToString()].ToString() : string.Empty,
dtRow[DMOverview.eColList.TestType.ToString()].ToString(),
dtRow[DMOverview.eColList.ProductNo.ToString()].ToString(),
dtRow[DMOverview.eColList.TestCode.ToString()].ToString(),
dtRow[DMOverview.eColList.ParentNo.ToString()].ToString(),
dtRow[DMOverview.eColList.FileCode.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListFileNo.ToString()].ToString(),
dtRow[DMOverview.eColList.TestListVariantNo.ToString()].ToString(),
dtRow[DMOverview.eColList.FileVersion.ToString()].ToString(),
dtRow[DMOverview.eColList.StepVersion.ToString()].ToString(),
strTestListCntID);
if (Option.ProductID.Length > 0)
selData.SetProdcutID(Option.ProductID);
refChildInterface.AnnounceContentsType(ContentsType);
OnSelect(selData);
}
catch(Exception e)
{
MessageOutput.ConsoleWrite($"Overview DoSelect Error: {e.Message}", ConsoleColor.Red, LogMessage.LogMessageLevel.FATAL);
bDataCheckResult = false;
}
finally
{
;//
}
return bDataCheckResult;
}
private DataRow GetRowInfo(object Viewer, int nRowHndl)
{
DataRow dtRow = null;
try
{
GridView view = Viewer as GridView;
var dvRow = view.GetRow(nRowHndl);
dtRow = (dvRow as DataRowView).Row;
}
catch{
dtRow = null;
}
return dtRow;
}
private void gridViewMain_RowClick(object sender, DevExpress.XtraGrid.Views.Grid.RowClickEventArgs e)
{
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
DoSelect(GetRowInfo(sender, nRowHndl));
}
private void gridViewMain_RowStyle(object sender, RowStyleEventArgs e)
{
GridView view = sender as GridView;
if (view.FocusedRowHandle == e.RowHandle)
{
GridViewInfo viewInfo = gridViewMain.GetViewInfo() as GridViewInfo;
e.Appearance.Assign(viewInfo.PaintAppearance.FocusedRow);
e.HighPriority = true;
}
}
private void gridViewMain_RowCellClick(object sender, RowCellClickEventArgs e)
{
int nClickCnt = e.Clicks;
if (nClickCnt < 2)
return;
int nRowHndl = e.RowHandle;
if (nRowHndl < 0)
return;
if(DoSelect(GetRowInfo(sender, nRowHndl)))
refChildInterface.CallDetailOverView();
}
private void gridViewMain_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
GridHitInfo hInfo = gridViewMain.CalcHitInfo(gridControlMain.PointToClient(Cursor.Position));
if (hInfo.RowInfo != null)
{
int nGetRowHandle = hInfo.RowInfo.RowHandle;
DoSelect(GetRowInfo(gridViewMain, nGetRowHandle));
}
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,127 @@
namespace SystemX.Product.TRA.UIControl
{
partial class UcTRAProdHistHost
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Component Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.gridControlMain = new DevExpress.XtraGrid.GridControl();
this.gridViewMain = new DevExpress.XtraGrid.Views.Grid.GridView();
this.layoutControl1 = new DevExpress.XtraLayout.LayoutControl();
this.Root = new DevExpress.XtraLayout.LayoutControlGroup();
this.layoutControlItem1 = new DevExpress.XtraLayout.LayoutControlItem();
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).BeginInit();
this.layoutControl1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.Root)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).BeginInit();
this.SuspendLayout();
//
// gridControlMain
//
this.gridControlMain.Location = new System.Drawing.Point(2, 2);
this.gridControlMain.MainView = this.gridViewMain;
this.gridControlMain.Name = "gridControlMain";
this.gridControlMain.Size = new System.Drawing.Size(916, 578);
this.gridControlMain.TabIndex = 0;
this.gridControlMain.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] {
this.gridViewMain});
//
// gridViewMain
//
this.gridViewMain.Appearance.Row.BackColor = System.Drawing.Color.Transparent;
this.gridViewMain.Appearance.Row.Options.UseBackColor = true;
this.gridViewMain.GridControl = this.gridControlMain;
this.gridViewMain.Name = "gridViewMain";
this.gridViewMain.OptionsBehavior.Editable = false;
this.gridViewMain.OptionsBehavior.ReadOnly = true;
this.gridViewMain.OptionsView.HeaderFilterButtonShowMode = DevExpress.XtraEditors.Controls.FilterButtonShowMode.SmartTag;
this.gridViewMain.OptionsView.ShowAutoFilterRow = true;
this.gridViewMain.OptionsView.ShowFilterPanelMode = DevExpress.XtraGrid.Views.Base.ShowFilterPanelMode.ShowAlways;
this.gridViewMain.OptionsView.ShowGroupPanel = false;
this.gridViewMain.DoubleClick += new System.EventHandler(this.gridViewMain_DoubleClick);
//
// layoutControl1
//
this.layoutControl1.Controls.Add(this.gridControlMain);
this.layoutControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.layoutControl1.Location = new System.Drawing.Point(0, 0);
this.layoutControl1.Name = "layoutControl1";
this.layoutControl1.Root = this.Root;
this.layoutControl1.Size = new System.Drawing.Size(920, 582);
this.layoutControl1.TabIndex = 1;
this.layoutControl1.Text = "layoutControl1";
//
// Root
//
this.Root.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True;
this.Root.GroupBordersVisible = false;
this.Root.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] {
this.layoutControlItem1});
this.Root.Name = "Root";
this.Root.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
this.Root.Size = new System.Drawing.Size(920, 582);
this.Root.Spacing = new DevExpress.XtraLayout.Utils.Padding(2, 2, 2, 2);
this.Root.TextVisible = false;
//
// layoutControlItem1
//
this.layoutControlItem1.Control = this.gridControlMain;
this.layoutControlItem1.Location = new System.Drawing.Point(0, 0);
this.layoutControlItem1.Name = "layoutControlItem1";
this.layoutControlItem1.Padding = new DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0);
this.layoutControlItem1.Size = new System.Drawing.Size(916, 578);
this.layoutControlItem1.TextSize = new System.Drawing.Size(0, 0);
this.layoutControlItem1.TextVisible = false;
//
// UcTRAProdHistHost
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.layoutControl1);
this.Name = "UcTRAProdHistHost";
this.Size = new System.Drawing.Size(920, 582);
this.Load += new System.EventHandler(this.UcTRATestHistHost_Load);
((System.ComponentModel.ISupportInitialize)(this.gridControlMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.gridViewMain)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControl1)).EndInit();
this.layoutControl1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.Root)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.layoutControlItem1)).EndInit();
this.ResumeLayout(false);
}
#endregion
private DevExpress.XtraGrid.GridControl gridControlMain;
private DevExpress.XtraGrid.Views.Grid.GridView gridViewMain;
private DevExpress.XtraLayout.LayoutControl layoutControl1;
private DevExpress.XtraLayout.LayoutControlGroup Root;
private DevExpress.XtraLayout.LayoutControlItem layoutControlItem1;
}
}

View File

@ -0,0 +1,161 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
using SystemX.Product.TRA.DataManager;
using static SystemX.Product.CP.TRA.MainForm;
using DevExpress.Utils;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.XtraGrid.Views.Grid.ViewInfo;
using DevExpress.XtraPrinting;
using SystemX.Product.ALIS.Interface;
using static SystemX.Product.CP.TRA.Commons;
namespace SystemX.Product.TRA.UIControl
{
public partial class UcTRAProdHistHost : UcTRABaseView
{
public enum eColHide
{
TestListNo,
TestlistFile
}
DMTestHistory DataManager { get; set; }
TestHistorySearchOption Option { get; set; }
SelectedDataCollection SelectedData { get; set; }
public DataTable DataResult { get; private set; }
public delegate void evtDataDetailViewHandler(DetailTestDataCollection data);
public event evtDataDetailViewHandler OnDetailSelect;
private string GridViewGetActiveFilterText;
public UcTRAProdHistHost()
{
ContentsType = eContents.ProductHistory;
InitializeComponent();
}
public void SetSQLConnection(eSelectDataView SelectView, IDataBaseController getDBController)
{
DataManager = new DMTestHistory(SelectView, getDBController);
}
public DetailTestDataCollection GetSearchInfo(DataRow dtRow)
{
DetailTestDataCollection drDetail = new DetailTestDataCollection();
//drDetail.TestID = dtRow[DMTestHistory.eColList.TestID.ToString()].ToString();
drDetail.No = Convert.ToInt64(dtRow[DMTestHistory.eColList.No.ToString()]);
drDetail.StartTime = DateTime.Parse(dtRow[DMTestHistory.eColList.TestDateTime.ToString()].ToString());
drDetail.Duration = Convert.ToInt64(dtRow[DMTestHistory.eColList.Duration.ToString()]);
drDetail.StationName = dtRow[DMTestHistory.eColList.StationName.ToString()].ToString();
drDetail.HostID = dtRow[DMTestHistory.eColList.Host.ToString()].ToString();
drDetail.SectionID = dtRow[DMTestHistory.eColList.Section.ToString()].ToString();
drDetail.TestType = dtRow[DMTestHistory.eColList.TestType.ToString()].ToString();
drDetail.ProductID = dtRow[DMTestHistory.eColList.ProductID.ToString()].ToString();
drDetail.ProductNo = dtRow[DMTestHistory.eColList.ProductNo.ToString()].ToString();
drDetail.TestCode = dtRow[DMTestHistory.eColList.TestCode.ToString()].ToString();
drDetail.ParentNo = dtRow[DMTestHistory.eColList.ParentNo.ToString()].ToString();
drDetail.FileCode = dtRow[DMTestHistory.eColList.FileCode.ToString()].ToString();
drDetail.FileVersion = dtRow[DMTestHistory.eColList.FileVersion.ToString()].ToString();
drDetail.TestlistFileName = dtRow[DMTestHistory.eColList.TestlistFileName.ToString()].ToString();
drDetail.TestListFileNo = dtRow[DMTestHistory.eColList.TestListFileNo.ToString()].ToString();
drDetail.TestListVariantNo = dtRow[DMTestHistory.eColList.TestListVariantNo.ToString()].ToString();
drDetail.StepVersion = dtRow[DMTestHistory.eColList.StepVersion.ToString()].ToString();
drDetail.TestRequestID = dtRow[DMTestHistory.eColList.TestlistReqID.ToString()].ToString();
drDetail.TestResult = dtRow[DMTestHistory.eColList.TestResult.ToString()].ToString();
return drDetail;
}
private void UcTRATestHistHost_Load(object sender, EventArgs e)
{
Option = new TestHistorySearchOption();
FrmOptionStationSearch dlgSearch = new FrmOptionStationSearch();
dlgSearch.ShowDialog();
if (dlgSearch.DialogResult == DialogResult.OK)
Option = dlgSearch.GetSelectedResult();
}
private void gridViewMain_DoubleClick(object sender, EventArgs e)
{
DXMouseEventArgs ea = e as DXMouseEventArgs;
GridView view = sender as GridView;
GridHitInfo info = view.CalcHitInfo(ea.Location);
if (info.InRow || info.InRowCell)
{
int nRow = int.MinValue;
nRow = info.RowHandle;
if (nRow < 0)
return;
var dvRow = view.GetRow(nRow);
DataRow dtRow = (dvRow as DataRowView).Row;
DetailTestDataCollection drDetail = GetSearchInfo(dtRow);
OnDetailSelect(drDetail);
}
}
public List<DetailTestDataCollection> GetResultContents()
{
List<DetailTestDataCollection> vDetailData = new List<DetailTestDataCollection>();
GridView view = gridViewMain as GridView;
for(int i=0; i<view.RowCount; i++)
{
DataRow dtRow = (view.GetRow(i) as DataRowView).Row;
DetailTestDataCollection dtContent = GetSearchInfo(dtRow);
vDetailData.Add(dtContent);
}
return vDetailData;
}
public string CreateExportFileName()
{
string strFileName = $"{this.ContentsType.ToString()}_{SelectedData.ProductNo}_{SelectedData.TestCode}_{SelectedData.StationName}";
strFileName += $"_{SelectedData.StartTime.ToString("yyyyMMddHHmmss")}-{SelectedData.EndTime.ToString("yyyyMMddHHmmss")}";
return strFileName;
}
public override void ExportData()
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
if (dlg.ShowDialog() == DialogResult.OK)
{
string strFileName = CreateExportFileName();
string strExpPath = dlg.SelectedPath + "\\" + strFileName;
XlsxExportOptionsEx option = new XlsxExportOptionsEx();
string strFile = strExpPath + ".xlsx";
option.ShowGridLines = true;
option.ExportType = DevExpress.Export.ExportType.WYSIWYG;
option.ExportMode = XlsxExportMode.SingleFile;
option.SheetName = "Test History";
gridControlMain.ExportToXlsx(strFile, option);
}
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

Some files were not shown because too many files have changed in this diff Show More