MergeCommit
This commit is contained in:
commit
7e5cc8dbbf
@ -25,8 +25,6 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Messaging", "Message\Messag
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDTestService", "DDTestService\DDTestService.vbproj", "{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Variables", "Variables\Variables.vbproj", "{836C9ADE-E04E-4E1E-B17A-201E68014790}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Config", "Modules.Config\Config.vbproj", "{44982F9B-6116-44E2-85D0-F39650B1EF99}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{F98C0329-C004-417F-B2AB-7466E88D8220}"
|
||||
@ -76,6 +74,8 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "JobRunner", "Service.JobRun
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LookupControlGui", "LookupControlGui\LookupControlGui.vbproj", "{B65E24B3-D334-455D-A0BF-B33B8358B013}"
|
||||
EndProject
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "MonoDiag", "LoggerDiag\MonoDiag.vbproj", "{3D437957-B90B-4D8F-9219-6D19B0C90994}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@ -110,10 +110,6 @@ Global
|
||||
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{836C9ADE-E04E-4E1E-B17A-201E68014790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{836C9ADE-E04E-4E1E-B17A-201E68014790}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{836C9ADE-E04E-4E1E-B17A-201E68014790}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{836C9ADE-E04E-4E1E-B17A-201E68014790}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{44982F9B-6116-44E2-85D0-F39650B1EF99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{44982F9B-6116-44E2-85D0-F39650B1EF99}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{44982F9B-6116-44E2-85D0-F39650B1EF99}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
@ -186,6 +182,10 @@ Global
|
||||
{B65E24B3-D334-455D-A0BF-B33B8358B013}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B65E24B3-D334-455D-A0BF-B33B8358B013}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B65E24B3-D334-455D-A0BF-B33B8358B013}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{3D437957-B90B-4D8F-9219-6D19B0C90994}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{3D437957-B90B-4D8F-9219-6D19B0C90994}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{3D437957-B90B-4D8F-9219-6D19B0C90994}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{3D437957-B90B-4D8F-9219-6D19B0C90994}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
@ -198,7 +198,6 @@ Global
|
||||
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
|
||||
{AF664D85-0A4B-4BAB-A2F8-83110C06553A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
|
||||
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
|
||||
{836C9ADE-E04E-4E1E-B17A-201E68014790} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
|
||||
{44982F9B-6116-44E2-85D0-F39650B1EF99} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
|
||||
{3DCD6D1A-C830-4241-B7E4-27430E7EA483} = {F98C0329-C004-417F-B2AB-7466E88D8220}
|
||||
{991D0231-4623-496D-8BD0-9CA906029CBC} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
|
||||
@ -217,6 +216,7 @@ Global
|
||||
{7386AB04-DF8D-4DFB-809D-1FAC8212CB7E} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
|
||||
{926E6474-5613-4373-BB99-B101158B91EF} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
|
||||
{B65E24B3-D334-455D-A0BF-B33B8358B013} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
|
||||
{3D437957-B90B-4D8F-9219-6D19B0C90994} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
|
||||
|
||||
@ -20,6 +20,7 @@ Public Class ThreadRunner
|
||||
Private _successDirectory As String
|
||||
Private _errorDirectory As String
|
||||
Private _originalEmailDirectory As String
|
||||
Private _attachmentDirectory As String
|
||||
Private _zugferd As ZUGFeRDInterface
|
||||
Private _jobArguments As WorkerArgs
|
||||
Private _mssql As MSSQLServer
|
||||
@ -148,6 +149,9 @@ Public Class ThreadRunner
|
||||
Case ZUGFERD_REJECTED_EML
|
||||
args.RejectedEmailDirectory = row.Item("FOLDER_PATH")
|
||||
|
||||
Case ZUGFERD_ATTACHMENTS
|
||||
args.AttachmentsSubDirectory = row.Item("FOLDER_PATH")
|
||||
|
||||
End Select
|
||||
Next
|
||||
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
Imports System.IO
|
||||
Imports System.Security.Cryptography
|
||||
Imports System.Text.Encoding
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
''' <summary>
|
||||
@ -19,8 +20,6 @@ Public Class Encryption
|
||||
Private ReadOnly _password As String
|
||||
Private _logger As Logger
|
||||
|
||||
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, Password As String)
|
||||
_logger = LogConfig.GetLogger()
|
||||
|
||||
@ -31,13 +30,24 @@ Public Class Encryption
|
||||
_password = Password
|
||||
End Sub
|
||||
|
||||
Public Async Function EncryptAsync(oPlainTextBytes As Byte()) As Task(Of Byte())
|
||||
Public Async Function EncryptAsync(PlainTextBytes As Byte()) As Task(Of Byte())
|
||||
Return Await Task.Run(Function() As Byte()
|
||||
Return Encrypt(oPlainTextBytes)
|
||||
Return Encrypt(PlainTextBytes)
|
||||
End Function)
|
||||
End Function
|
||||
|
||||
Public Function Encrypt(oPlainTextBytes As Byte()) As Byte()
|
||||
Public Function Encrypt(PlainText As String) As String
|
||||
Try
|
||||
Dim oBytes As Byte() = UTF8.GetBytes(PlainText)
|
||||
Dim oEncrypted As Byte() = Encrypt(oBytes)
|
||||
Return UTF8.GetString(oEncrypted)
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function Encrypt(PlainTextBytes As Byte()) As Byte()
|
||||
Try
|
||||
' Salt and IV is randomly generated each time, but is preprended to encrypted cipher text
|
||||
' so that the same Salt and IV values can be used when decrypting.
|
||||
@ -53,7 +63,7 @@ Public Class Encryption
|
||||
Using oEncryptor = oSymmetricKey.CreateEncryptor(oKeyBytes, oIvStringBytes)
|
||||
Using oMemoryStream = New MemoryStream()
|
||||
Using oCryptoStream = New CryptoStream(oMemoryStream, oEncryptor, CryptoStreamMode.Write)
|
||||
oCryptoStream.Write(oPlainTextBytes, 0, oPlainTextBytes.Length)
|
||||
oCryptoStream.Write(PlainTextBytes, 0, PlainTextBytes.Length)
|
||||
oCryptoStream.FlushFinalBlock()
|
||||
' Create the final bytes as a concatenation of the random salt bytes, the random iv bytes and the cipher bytes.
|
||||
Dim oCipherTextBytes = oSaltStringBytes
|
||||
@ -79,16 +89,27 @@ Public Class Encryption
|
||||
End Function)
|
||||
End Function
|
||||
|
||||
Public Function Decrypt(cipherTextBytesWithSaltAndIv As Byte()) As Byte()
|
||||
Public Function Decrypt(CipherTextPlainWithSaltAndIv As String) As String
|
||||
Try
|
||||
Dim oBytes As Byte() = UTF8.GetBytes(CipherTextPlainWithSaltAndIv)
|
||||
Dim oDecrypted As Byte() = Decrypt(oBytes)
|
||||
Return UTF8.GetString(oDecrypted)
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function Decrypt(CipherTextBytesWithSaltAndIv As Byte()) As Byte()
|
||||
Try
|
||||
' Get the complete stream of bytes that represent:
|
||||
' [32 bytes of Salt] + [32 bytes of IV] + [n bytes of CipherText]
|
||||
' Get the saltbytes by extracting the first 32 bytes from the supplied cipherText bytes.
|
||||
Dim oSaltStringBytes = cipherTextBytesWithSaltAndIv.Take(KEY_SIZE / 8).ToArray()
|
||||
Dim oSaltStringBytes = CipherTextBytesWithSaltAndIv.Take(KEY_SIZE / 8).ToArray()
|
||||
' Get the IV bytes by extracting the next 32 bytes from the supplied cipherText bytes.
|
||||
Dim oIvStringBytes = cipherTextBytesWithSaltAndIv.Skip(KEY_SIZE / 8).Take(KEY_SIZE / 8).ToArray()
|
||||
Dim oIvStringBytes = CipherTextBytesWithSaltAndIv.Skip(KEY_SIZE / 8).Take(KEY_SIZE / 8).ToArray()
|
||||
' Get the actual cipher text bytes by removing the first 64 bytes from the cipherText string.
|
||||
Dim oCipherTextBytes = cipherTextBytesWithSaltAndIv.Skip((KEY_SIZE / 8) * 2).Take(cipherTextBytesWithSaltAndIv.Length - ((KEY_SIZE / 8) * 2)).ToArray()
|
||||
Dim oCipherTextBytes = CipherTextBytesWithSaltAndIv.Skip((KEY_SIZE / 8) * 2).Take(CipherTextBytesWithSaltAndIv.Length - ((KEY_SIZE / 8) * 2)).ToArray()
|
||||
|
||||
Using oPassword = New Rfc2898DeriveBytes(_password, oSaltStringBytes, DERIVATION_ITERATIONS)
|
||||
Dim oKeyBytes = oPassword.GetBytes(KEY_SIZE / 8)
|
||||
|
||||
@ -13,6 +13,7 @@ Namespace My
|
||||
Private _Logger As Logger
|
||||
|
||||
Private _BaseUserConfigPath As String = Windows.Forms.Application.UserAppDataPath
|
||||
Private _BaseLocalUserConfigPath As String = Windows.Forms.Application.LocalUserAppDataPath
|
||||
Private _BaseMachineConfigPath As String = Windows.Forms.Application.CommonAppDataPath
|
||||
|
||||
Public Sub App_Startup() Handles Me.Startup
|
||||
@ -20,11 +21,11 @@ Namespace My
|
||||
|
||||
' System Config files like Service Url will be saved in %LocalAppdata% so they will remain on the machine
|
||||
Dim oSystemConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig,
|
||||
Windows.Forms.Application.UserAppDataPath,
|
||||
Windows.Forms.Application.CommonAppDataPath)
|
||||
_BaseLocalUserConfigPath,
|
||||
_BaseMachineConfigPath)
|
||||
|
||||
' Layout files will be saved in %Appdata% (Roaming) so they will be syncronized with the user profile
|
||||
Dim oUIConfigPath = IO.Path.Combine(Windows.Forms.Application.UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
|
||||
Dim oUIConfigPath = IO.Path.Combine(_BaseUserConfigPath, ClassConstants.FOLDER_NAME_LAYOUT)
|
||||
Dim oUIConfigManager As New ConfigManager(Of ClassUIConfig)(oLogConfig, oUIConfigPath, oUIConfigPath)
|
||||
|
||||
LogConfig = oLogConfig
|
||||
|
||||
@ -40,9 +40,8 @@ Public Class PanelManager
|
||||
|
||||
Private Sub View_DocumentDeactivated(sender As Object, e As DocumentEventArgs)
|
||||
Dim oDocument As BaseDocument = e.Document
|
||||
' TODO: oDocument.Control can be nothing
|
||||
Dim oHashcode As Integer = oDocument.Control.GetHashCode
|
||||
|
||||
' TODO: oDocument.Control can be nothing
|
||||
If oDocument Is Nothing Then
|
||||
Exit Sub
|
||||
End If
|
||||
@ -51,7 +50,7 @@ Public Class PanelManager
|
||||
For Each oPanel As DockPanel In _dockManager.Panels
|
||||
Dim oTag As Integer = oPanel.Tag
|
||||
|
||||
If oTag = oHashcode Then
|
||||
If oTag = oDocument.Control.GetHashCode Then
|
||||
oPanel.Hide()
|
||||
End If
|
||||
Next
|
||||
|
||||
@ -69,6 +69,7 @@
|
||||
<Reference Include="DevExpress.Dashboard.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Data.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.DataAccess.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Mvvm.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Printing.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Sparkline.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.Utils.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
@ -86,9 +87,9 @@
|
||||
<Reference Include="FirebirdSql.EntityFrameworkCore.Firebird, Version=6.4.0.0, Culture=neutral, PublicKeyToken=7a73ef09980c56c9, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\FirebirdSql.EntityFrameworkCore.Firebird.6.4.0\lib\netstandard2.0\FirebirdSql.EntityFrameworkCore.Firebird.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\Modules.Logging\bin\Debug\NLog.dll</HintPath>
|
||||
<HintPath>..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ScintillaNET, Version=3.6.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\jacobslusser.ScintillaNET.3.6.3\lib\net40\ScintillaNET.dll</HintPath>
|
||||
@ -101,6 +102,7 @@
|
||||
<Reference Include="System.Data.Linq" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.Runtime.Serialization.Formatters.Soap" />
|
||||
<Reference Include="System.Runtime.Serialization.Primitives, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
@ -168,10 +170,16 @@
|
||||
<Compile Include="FormDesigner\frmFormDesigner.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FormWorkflow\frmWorkflowStep.Designer.vb">
|
||||
<Compile Include="ModuleWorkflow\frmWorkflowOverview.Designer.vb">
|
||||
<DependentUpon>frmWorkflowOverview.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\frmWorkflowOverview.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\frmWorkflowStep.Designer.vb">
|
||||
<DependentUpon>frmWorkflowStep.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="FormWorkflow\frmWorkflowStep.vb">
|
||||
<Compile Include="ModuleWorkflow\frmWorkflowStep.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmSearch.Designer.vb">
|
||||
@ -197,6 +205,20 @@
|
||||
<Compile Include="Workers\IWorker.vb" />
|
||||
<Compile Include="Workers\WorkerManager.vb" />
|
||||
<Compile Include="Workers\WorkflowOverviewWorker.vb" />
|
||||
<Compile Include="ModuleWorkflow\GridOverview.Designer.vb">
|
||||
<DependentUpon>GridOverview.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\GridOverview.vb">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\NavControlOverview.Designer.vb">
|
||||
<DependentUpon>NavControlOverview.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\NavControlOverview.vb">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="ModuleWorkflow\WorkflowDetail.vb" />
|
||||
<Compile Include="ModuleWorkflow\WorkflowItem.vb" />
|
||||
<Compile Include="_TEST\DockManagerTest.Designer.vb">
|
||||
<DependentUpon>DockManagerTest.vb</DependentUpon>
|
||||
</Compile>
|
||||
@ -330,7 +352,10 @@
|
||||
<EmbeddedResource Include="FormDesigner\frmFormDesigner.resx">
|
||||
<DependentUpon>frmFormDesigner.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="FormWorkflow\frmWorkflowStep.resx">
|
||||
<EmbeddedResource Include="ModuleWorkflow\frmWorkflowOverview.resx">
|
||||
<DependentUpon>frmWorkflowOverview.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ModuleWorkflow\frmWorkflowStep.resx">
|
||||
<DependentUpon>frmWorkflowStep.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmSearch.resx">
|
||||
@ -339,6 +364,12 @@
|
||||
<EmbeddedResource Include="Panels\DocumentPanel.resx">
|
||||
<DependentUpon>DocumentPanel.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ModuleWorkflow\GridOverview.resx">
|
||||
<DependentUpon>GridOverview.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="ModuleWorkflow\NavControlOverview.resx">
|
||||
<DependentUpon>NavControlOverview.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="_TEST\DockManagerTest.resx">
|
||||
<DependentUpon>DockManagerTest.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@ -490,7 +521,17 @@
|
||||
<None Include="Resources\CheckBox.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\StatusAnnotations_Complete_and_ok_32xLG.png" />
|
||||
<Folder Include="My Project\DataSources\" />
|
||||
<Folder Include="Resources\Icons\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\ampel-gelb.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\ampel-gruen.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\ampel-rot.png" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
</Project>
|
||||
@ -51,4 +51,26 @@ Public Class ClassCommonViews
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Async Function VWIDB_GUI_WF_OVERVIEW(UserId As Int64, FormId As Int64) As Task(Of DataTable)
|
||||
Try
|
||||
My.Channel.CreateDatabaseRequest("Load Control Data", True)
|
||||
|
||||
Dim oSQL As String = $"SELECT * FROM VWIDB_GUI_WF_OVERVIEW WHERE USERID = {UserId} AND FORMID = {FormId}"
|
||||
Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
|
||||
Dim oTable = oResult.Table
|
||||
|
||||
If Not oResult.OK Then
|
||||
_Logger.Error(New ApplicationException(oResult.ErrorMessage))
|
||||
Return Nothing
|
||||
End If
|
||||
|
||||
My.Channel.CloseDatabaseRequest()
|
||||
|
||||
Return oResult.Table
|
||||
Catch ex As Exception
|
||||
_Logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
74
GUIs.ClientSuite/ModuleWorkflow/GridOverview.Designer.vb
generated
Normal file
74
GUIs.ClientSuite/ModuleWorkflow/GridOverview.Designer.vb
generated
Normal file
@ -0,0 +1,74 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class GridOverview
|
||||
Inherits System.Windows.Forms.UserControl
|
||||
|
||||
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.GridControl = New DevExpress.XtraGrid.GridControl()
|
||||
Me.gvOverview = New DevExpress.XtraGrid.Views.Grid.GridView()
|
||||
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
|
||||
CType(Me.GridControl, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'GridControl
|
||||
'
|
||||
Me.GridControl.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GridControl.Location = New System.Drawing.Point(0, 0)
|
||||
Me.GridControl.MainView = Me.gvOverview
|
||||
Me.GridControl.Name = "GridControl"
|
||||
Me.GridControl.Size = New System.Drawing.Size(626, 461)
|
||||
Me.GridControl.TabIndex = 1
|
||||
Me.GridControl.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.gvOverview, Me.GridView1})
|
||||
'
|
||||
'gvOverview
|
||||
'
|
||||
Me.gvOverview.GridControl = Me.GridControl
|
||||
Me.gvOverview.Name = "gvOverview"
|
||||
Me.gvOverview.OptionsFind.AlwaysVisible = True
|
||||
Me.gvOverview.OptionsView.GroupDrawMode = DevExpress.XtraGrid.Views.Grid.GroupDrawMode.Office
|
||||
Me.gvOverview.OptionsView.ShowGroupedColumns = True
|
||||
Me.gvOverview.OptionsView.ShowVerticalLines = DevExpress.Utils.DefaultBoolean.[True]
|
||||
'
|
||||
'GridView1
|
||||
'
|
||||
Me.GridView1.GridControl = Me.GridControl
|
||||
Me.GridView1.Name = "GridView1"
|
||||
'
|
||||
'GridOverview
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.GridControl)
|
||||
Me.Name = "GridOverview"
|
||||
Me.Size = New System.Drawing.Size(626, 461)
|
||||
CType(Me.GridControl, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.gvOverview, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents GridControl As DevExpress.XtraGrid.GridControl
|
||||
Friend WithEvents gvOverview As DevExpress.XtraGrid.Views.Grid.GridView
|
||||
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView
|
||||
End Class
|
||||
27
GUIs.ClientSuite/ModuleWorkflow/GridOverview.vb
Normal file
27
GUIs.ClientSuite/ModuleWorkflow/GridOverview.vb
Normal file
@ -0,0 +1,27 @@
|
||||
Public Class GridOverview
|
||||
Private _DataSource As List(Of WorkflowItem)
|
||||
|
||||
Public Property DataSource As List(Of WorkflowItem)
|
||||
Get
|
||||
Return _DataSource
|
||||
End Get
|
||||
Set(value As List(Of WorkflowItem))
|
||||
_DataSource = value
|
||||
GridControl.DataSource = value
|
||||
|
||||
If Not IsNothing(value) Then
|
||||
ApplyStyles()
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub ApplyStyles()
|
||||
With gvOverview.Columns.Item("StateImage")
|
||||
.VisibleIndex = 0
|
||||
.MaxWidth = 20
|
||||
.OptionsColumn.ShowCaption = False
|
||||
End With
|
||||
gvOverview.Columns.Item("Process").VisibleIndex = 1
|
||||
gvOverview.Columns.Item("State").Visible = False
|
||||
End Sub
|
||||
End Class
|
||||
60
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.Designer.vb
generated
Normal file
60
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.Designer.vb
generated
Normal file
@ -0,0 +1,60 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class NavControlOverview
|
||||
Inherits System.Windows.Forms.UserControl
|
||||
|
||||
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.NavBarControl = New DevExpress.XtraNavBar.NavBarControl()
|
||||
Me.NavBarGroup1 = New DevExpress.XtraNavBar.NavBarGroup()
|
||||
CType(Me.NavBarControl, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'NavBarControl
|
||||
'
|
||||
Me.NavBarControl.ActiveGroup = Me.NavBarGroup1
|
||||
Me.NavBarControl.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.NavBarControl.Groups.AddRange(New DevExpress.XtraNavBar.NavBarGroup() {Me.NavBarGroup1})
|
||||
Me.NavBarControl.Location = New System.Drawing.Point(0, 0)
|
||||
Me.NavBarControl.Name = "NavBarControl"
|
||||
Me.NavBarControl.Size = New System.Drawing.Size(150, 150)
|
||||
Me.NavBarControl.TabIndex = 0
|
||||
Me.NavBarControl.Text = "NavBarControl1"
|
||||
'
|
||||
'NavBarGroup1
|
||||
'
|
||||
Me.NavBarGroup1.Caption = "Workflow"
|
||||
Me.NavBarGroup1.Expanded = True
|
||||
Me.NavBarGroup1.Name = "NavBarGroup1"
|
||||
'
|
||||
'NavControlOverview
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.Controls.Add(Me.NavBarControl)
|
||||
Me.Name = "NavControlOverview"
|
||||
CType(Me.NavBarControl, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents NavBarControl As DevExpress.XtraNavBar.NavBarControl
|
||||
Friend WithEvents NavBarGroup1 As DevExpress.XtraNavBar.NavBarGroup
|
||||
End Class
|
||||
120
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.resx
Normal file
120
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.resx
Normal 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>
|
||||
40
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.vb
Normal file
40
GUIs.ClientSuite/ModuleWorkflow/NavControlOverview.vb
Normal file
@ -0,0 +1,40 @@
|
||||
Imports DevExpress.XtraNavBar
|
||||
|
||||
Public Class NavControlOverview
|
||||
Private _DataSource As List(Of WorkflowItem)
|
||||
|
||||
Public Property DataSource As List(Of WorkflowItem)
|
||||
Get
|
||||
Return _DataSource
|
||||
End Get
|
||||
Set(value As List(Of WorkflowItem))
|
||||
_DataSource = value
|
||||
|
||||
'TODO: Update Navbar Items
|
||||
If Not IsNothing(value) Then
|
||||
UpdateItems(value)
|
||||
End If
|
||||
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub UpdateItems(WorkflowItems As List(Of WorkflowItem))
|
||||
Dim oTotalItems = WorkflowItems.Count
|
||||
Dim oGroupedItems = WorkflowItems.GroupBy(Function(Item As WorkflowItem)
|
||||
Return Item.Process
|
||||
End Function)
|
||||
|
||||
AddItem("Alle Workflows", oTotalItems)
|
||||
|
||||
For Each oGroupedItem As IGrouping(Of String, WorkflowItem) In oGroupedItems
|
||||
AddItem(oGroupedItem.Key, oGroupedItem.Count)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub AddItem(Title As String, Count As Integer)
|
||||
Dim oItem = New NavBarItem() With {
|
||||
.Caption = $"{Title} ({Count})"
|
||||
}
|
||||
NavBarControl.Groups.First().ItemLinks.Add(oItem)
|
||||
End Sub
|
||||
End Class
|
||||
3
GUIs.ClientSuite/ModuleWorkflow/WorkflowDetail.vb
Normal file
3
GUIs.ClientSuite/ModuleWorkflow/WorkflowDetail.vb
Normal file
@ -0,0 +1,3 @@
|
||||
Public Class WorkflowDetail
|
||||
Public Property Title
|
||||
End Class
|
||||
39
GUIs.ClientSuite/ModuleWorkflow/WorkflowItem.vb
Normal file
39
GUIs.ClientSuite/ModuleWorkflow/WorkflowItem.vb
Normal file
@ -0,0 +1,39 @@
|
||||
Imports System.ComponentModel
|
||||
Imports DigitalData.GUIs.ClientSuite
|
||||
|
||||
Public Class WorkflowItem
|
||||
Implements INotifyPropertyChanged
|
||||
|
||||
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
||||
|
||||
Private _state As String
|
||||
|
||||
Public Property Title As String
|
||||
Public Property CreatedAt As DateTime
|
||||
Public Property Process As String
|
||||
|
||||
Public Property IconMap As Dictionary(Of String, String)
|
||||
Public Property StateImage As Image
|
||||
Public Property State As String
|
||||
Get
|
||||
Return _state
|
||||
End Get
|
||||
Set(value As String)
|
||||
_state = value
|
||||
StateImage = GetIcon(value, IconMap)
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Sub New(IconMap As Dictionary(Of String, String))
|
||||
Me.IconMap = IconMap
|
||||
End Sub
|
||||
|
||||
Private Function GetIcon(StateName As String, IconMap As Dictionary(Of String, String)) As Image
|
||||
If IconMap.ContainsKey(StateName) Then
|
||||
Dim IconName = IconMap.Item(StateName)
|
||||
Return My.Resources.ResourceManager.GetObject(IconName)
|
||||
Else
|
||||
Return Nothing
|
||||
End If
|
||||
End Function
|
||||
End Class
|
||||
337
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.Designer.vb
generated
Normal file
337
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.Designer.vb
generated
Normal file
@ -0,0 +1,337 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
|
||||
Partial Class frmWorkflowOverview
|
||||
Inherits DigitalData.GUIs.ClientSuite.Base.BaseRibbonForm
|
||||
|
||||
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()>
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmWorkflowOverview))
|
||||
Dim TableColumnDefinition1 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
|
||||
Dim TableColumnDefinition2 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
|
||||
Dim TableColumnDefinition3 As DevExpress.XtraEditors.TableLayout.TableColumnDefinition = New DevExpress.XtraEditors.TableLayout.TableColumnDefinition()
|
||||
Dim TableRowDefinition1 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
|
||||
Dim TableRowDefinition2 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
|
||||
Dim TableRowDefinition3 As DevExpress.XtraEditors.TableLayout.TableRowDefinition = New DevExpress.XtraEditors.TableLayout.TableRowDefinition()
|
||||
Dim TableSpan1 As DevExpress.XtraEditors.TableLayout.TableSpan = New DevExpress.XtraEditors.TableLayout.TableSpan()
|
||||
Dim TileViewItemElement1 As DevExpress.XtraGrid.Views.Tile.TileViewItemElement = New DevExpress.XtraGrid.Views.Tile.TileViewItemElement()
|
||||
Dim WindowsUIButtonImageOptions1 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions()
|
||||
Dim WindowsUIButtonImageOptions2 As DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions = New DevExpress.XtraBars.Docking2010.WindowsUIButtonImageOptions()
|
||||
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
|
||||
Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem()
|
||||
Me.BarCheckItem2 = New DevExpress.XtraBars.BarCheckItem()
|
||||
Me.BarCheckItem3 = New DevExpress.XtraBars.BarCheckItem()
|
||||
Me.RibbonPageCategory1 = New DevExpress.XtraBars.Ribbon.RibbonPageCategory()
|
||||
Me.RibbonPage3 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
|
||||
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
|
||||
Me.NavControlOverview = New DigitalData.GUIs.ClientSuite.NavControlOverview()
|
||||
Me.GridWorkflowDetails = New DevExpress.XtraGrid.GridControl()
|
||||
Me.tvDetails = New DevExpress.XtraGrid.Views.Tile.TileView()
|
||||
Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl()
|
||||
Me.WindowsUIButtonPanel1 = New DevExpress.XtraBars.Docking2010.WindowsUIButtonPanel()
|
||||
Me.LayoutControlGroup1 = New DevExpress.XtraLayout.LayoutControlGroup()
|
||||
Me.SimpleLabelItem1 = New DevExpress.XtraLayout.SimpleLabelItem()
|
||||
Me.LayoutControlItem2 = New DevExpress.XtraLayout.LayoutControlItem()
|
||||
Me.SimpleLabelItem2 = New DevExpress.XtraLayout.SimpleLabelItem()
|
||||
Me.SimpleLabelItem3 = New DevExpress.XtraLayout.SimpleLabelItem()
|
||||
Me.GridOverview = New DigitalData.GUIs.ClientSuite.GridOverview()
|
||||
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SplitContainerControl1.SuspendLayout()
|
||||
CType(Me.GridWorkflowDetails, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.tvDetails, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.LayoutControl1.SuspendLayout()
|
||||
CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.SimpleLabelItem1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.SimpleLabelItem2, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.SimpleLabelItem3, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'RibbonControl1
|
||||
'
|
||||
Me.RibbonControl1.ExpandCollapseItem.Id = 0
|
||||
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarCheckItem1, Me.BarCheckItem2, Me.BarCheckItem3})
|
||||
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.RibbonControl1.MaxItemId = 7
|
||||
Me.RibbonControl1.Name = "RibbonControl1"
|
||||
Me.RibbonControl1.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategory1})
|
||||
Me.RibbonControl1.Size = New System.Drawing.Size(1134, 146)
|
||||
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
|
||||
'
|
||||
'BarCheckItem1
|
||||
'
|
||||
Me.BarCheckItem1.Caption = "Alle"
|
||||
Me.BarCheckItem1.CheckStyle = DevExpress.XtraBars.BarCheckStyles.Radio
|
||||
Me.BarCheckItem1.Id = 3
|
||||
Me.BarCheckItem1.ImageOptions.Image = CType(resources.GetObject("BarCheckItem1.ImageOptions.Image"), System.Drawing.Image)
|
||||
Me.BarCheckItem1.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckItem1.ImageOptions.LargeImage"), System.Drawing.Image)
|
||||
Me.BarCheckItem1.Name = "BarCheckItem1"
|
||||
'
|
||||
'BarCheckItem2
|
||||
'
|
||||
Me.BarCheckItem2.Caption = "Aktuell verantwortlich"
|
||||
Me.BarCheckItem2.CheckStyle = DevExpress.XtraBars.BarCheckStyles.Radio
|
||||
Me.BarCheckItem2.Id = 4
|
||||
Me.BarCheckItem2.ImageOptions.Image = CType(resources.GetObject("BarCheckItem2.ImageOptions.Image"), System.Drawing.Image)
|
||||
Me.BarCheckItem2.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckItem2.ImageOptions.LargeImage"), System.Drawing.Image)
|
||||
Me.BarCheckItem2.Name = "BarCheckItem2"
|
||||
'
|
||||
'BarCheckItem3
|
||||
'
|
||||
Me.BarCheckItem3.Caption = "Beteiligt"
|
||||
Me.BarCheckItem3.CheckStyle = DevExpress.XtraBars.BarCheckStyles.Radio
|
||||
Me.BarCheckItem3.Id = 6
|
||||
Me.BarCheckItem3.ImageOptions.Image = CType(resources.GetObject("BarCheckItem3.ImageOptions.Image"), System.Drawing.Image)
|
||||
Me.BarCheckItem3.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckItem3.ImageOptions.LargeImage"), System.Drawing.Image)
|
||||
Me.BarCheckItem3.Name = "BarCheckItem3"
|
||||
'
|
||||
'RibbonPageCategory1
|
||||
'
|
||||
Me.RibbonPageCategory1.Name = "RibbonPageCategory1"
|
||||
Me.RibbonPageCategory1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage3})
|
||||
Me.RibbonPageCategory1.Text = "Worflows"
|
||||
'
|
||||
'RibbonPage3
|
||||
'
|
||||
Me.RibbonPage3.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
|
||||
Me.RibbonPage3.Name = "RibbonPage3"
|
||||
Me.RibbonPage3.Text = "Allgemein"
|
||||
'
|
||||
'RibbonPageGroup3
|
||||
'
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarCheckItem1)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarCheckItem3)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarCheckItem2)
|
||||
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
|
||||
Me.RibbonPageGroup3.Text = "Verantwortlichkeit"
|
||||
'
|
||||
'RibbonStatusBar1
|
||||
'
|
||||
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 702)
|
||||
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
|
||||
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
|
||||
Me.RibbonStatusBar1.Size = New System.Drawing.Size(1134, 21)
|
||||
'
|
||||
'RibbonPage2
|
||||
'
|
||||
Me.RibbonPage2.Name = "RibbonPage2"
|
||||
Me.RibbonPage2.Text = "RibbonPage2"
|
||||
'
|
||||
'SplitContainerControl1
|
||||
'
|
||||
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 146)
|
||||
Me.SplitContainerControl1.Name = "SplitContainerControl1"
|
||||
Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridOverview)
|
||||
Me.SplitContainerControl1.Panel1.Controls.Add(Me.NavControlOverview)
|
||||
Me.SplitContainerControl1.Panel1.Text = "Panel1"
|
||||
Me.SplitContainerControl1.Panel2.Controls.Add(Me.GridWorkflowDetails)
|
||||
Me.SplitContainerControl1.Panel2.Controls.Add(Me.LayoutControl1)
|
||||
Me.SplitContainerControl1.Panel2.Text = "Panel2"
|
||||
Me.SplitContainerControl1.Size = New System.Drawing.Size(1134, 556)
|
||||
Me.SplitContainerControl1.SplitterPosition = 841
|
||||
Me.SplitContainerControl1.TabIndex = 5
|
||||
Me.SplitContainerControl1.Text = "SplitContainerControl1"
|
||||
'
|
||||
'NavControlOverview
|
||||
'
|
||||
Me.NavControlOverview.DataSource = Nothing
|
||||
Me.NavControlOverview.Dock = System.Windows.Forms.DockStyle.Left
|
||||
Me.NavControlOverview.Location = New System.Drawing.Point(0, 0)
|
||||
Me.NavControlOverview.Name = "NavControlOverview"
|
||||
Me.NavControlOverview.Size = New System.Drawing.Size(185, 556)
|
||||
Me.NavControlOverview.TabIndex = 1
|
||||
'
|
||||
'GridWorkflowDetails
|
||||
'
|
||||
Me.GridWorkflowDetails.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GridWorkflowDetails.Location = New System.Drawing.Point(0, 166)
|
||||
Me.GridWorkflowDetails.MainView = Me.tvDetails
|
||||
Me.GridWorkflowDetails.MenuManager = Me.RibbonControl1
|
||||
Me.GridWorkflowDetails.Name = "GridWorkflowDetails"
|
||||
Me.GridWorkflowDetails.Size = New System.Drawing.Size(281, 390)
|
||||
Me.GridWorkflowDetails.TabIndex = 1
|
||||
Me.GridWorkflowDetails.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.tvDetails})
|
||||
'
|
||||
'tvDetails
|
||||
'
|
||||
Me.tvDetails.GridControl = Me.GridWorkflowDetails
|
||||
Me.tvDetails.Name = "tvDetails"
|
||||
Me.tvDetails.OptionsTiles.ItemSize = New System.Drawing.Size(248, 123)
|
||||
Me.tvDetails.OptionsTiles.LayoutMode = DevExpress.XtraGrid.Views.Tile.TileViewLayoutMode.List
|
||||
Me.tvDetails.TileColumns.Add(TableColumnDefinition1)
|
||||
Me.tvDetails.TileColumns.Add(TableColumnDefinition2)
|
||||
Me.tvDetails.TileColumns.Add(TableColumnDefinition3)
|
||||
TableRowDefinition1.Length.Value = 15.0R
|
||||
TableRowDefinition2.Length.Value = 13.0R
|
||||
TableRowDefinition3.Length.Value = 13.0R
|
||||
Me.tvDetails.TileRows.Add(TableRowDefinition1)
|
||||
Me.tvDetails.TileRows.Add(TableRowDefinition2)
|
||||
Me.tvDetails.TileRows.Add(TableRowDefinition3)
|
||||
TableSpan1.ColumnSpan = 2
|
||||
TableSpan1.RowSpan = 2
|
||||
Me.tvDetails.TileSpans.Add(TableSpan1)
|
||||
TileViewItemElement1.ImageOptions.ImageAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
|
||||
TileViewItemElement1.ImageOptions.ImageScaleMode = DevExpress.XtraEditors.TileItemImageScaleMode.ZoomInside
|
||||
TileViewItemElement1.Text = "element1"
|
||||
TileViewItemElement1.TextAlignment = DevExpress.XtraEditors.TileItemContentAlignment.MiddleCenter
|
||||
Me.tvDetails.TileTemplate.Add(TileViewItemElement1)
|
||||
'
|
||||
'LayoutControl1
|
||||
'
|
||||
Me.LayoutControl1.Controls.Add(Me.WindowsUIButtonPanel1)
|
||||
Me.LayoutControl1.Dock = System.Windows.Forms.DockStyle.Top
|
||||
Me.LayoutControl1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.LayoutControl1.Name = "LayoutControl1"
|
||||
Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(1186, 56, 650, 400)
|
||||
Me.LayoutControl1.Root = Me.LayoutControlGroup1
|
||||
Me.LayoutControl1.Size = New System.Drawing.Size(281, 166)
|
||||
Me.LayoutControl1.TabIndex = 0
|
||||
Me.LayoutControl1.Text = "LayoutControl1"
|
||||
'
|
||||
'WindowsUIButtonPanel1
|
||||
'
|
||||
WindowsUIButtonImageOptions1.Image = CType(resources.GetObject("WindowsUIButtonImageOptions1.Image"), System.Drawing.Image)
|
||||
WindowsUIButtonImageOptions2.Image = CType(resources.GetObject("WindowsUIButtonImageOptions2.Image"), System.Drawing.Image)
|
||||
Me.WindowsUIButtonPanel1.Buttons.AddRange(New DevExpress.XtraEditors.ButtonPanel.IBaseButton() {New DevExpress.XtraBars.Docking2010.WindowsUIButton("Verlängerung", True, WindowsUIButtonImageOptions1, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False), New DevExpress.XtraBars.Docking2010.WindowsUIButton("Kündigung", True, WindowsUIButtonImageOptions2, DevExpress.XtraBars.Docking2010.ButtonStyle.PushButton, "", -1, True, Nothing, True, False, True, Nothing, -1, False)})
|
||||
Me.WindowsUIButtonPanel1.ContentAlignment = System.Drawing.ContentAlignment.MiddleLeft
|
||||
Me.WindowsUIButtonPanel1.Location = New System.Drawing.Point(12, 96)
|
||||
Me.WindowsUIButtonPanel1.Name = "WindowsUIButtonPanel1"
|
||||
Me.WindowsUIButtonPanel1.Size = New System.Drawing.Size(257, 55)
|
||||
Me.WindowsUIButtonPanel1.TabIndex = 0
|
||||
Me.WindowsUIButtonPanel1.Text = "WindowsUIButtonPanel1"
|
||||
'
|
||||
'LayoutControlGroup1
|
||||
'
|
||||
Me.LayoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
|
||||
Me.LayoutControlGroup1.GroupBordersVisible = False
|
||||
Me.LayoutControlGroup1.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.SimpleLabelItem1, Me.LayoutControlItem2, Me.SimpleLabelItem2, Me.SimpleLabelItem3})
|
||||
Me.LayoutControlGroup1.Name = "Root"
|
||||
Me.LayoutControlGroup1.Size = New System.Drawing.Size(281, 166)
|
||||
Me.LayoutControlGroup1.TextVisible = False
|
||||
'
|
||||
'SimpleLabelItem1
|
||||
'
|
||||
Me.SimpleLabelItem1.AllowHotTrack = False
|
||||
Me.SimpleLabelItem1.AppearanceItemCaption.Font = New System.Drawing.Font("Segoe UI", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.SimpleLabelItem1.AppearanceItemCaption.ForeColor = System.Drawing.SystemColors.MenuHighlight
|
||||
Me.SimpleLabelItem1.AppearanceItemCaption.Options.UseFont = True
|
||||
Me.SimpleLabelItem1.AppearanceItemCaption.Options.UseForeColor = True
|
||||
Me.SimpleLabelItem1.Location = New System.Drawing.Point(0, 0)
|
||||
Me.SimpleLabelItem1.Name = "SimpleLabelItem1"
|
||||
Me.SimpleLabelItem1.Size = New System.Drawing.Size(261, 34)
|
||||
Me.SimpleLabelItem1.Text = "Vertragsnr. 4711"
|
||||
Me.SimpleLabelItem1.TextSize = New System.Drawing.Size(151, 30)
|
||||
'
|
||||
'LayoutControlItem2
|
||||
'
|
||||
Me.LayoutControlItem2.Control = Me.WindowsUIButtonPanel1
|
||||
Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 84)
|
||||
Me.LayoutControlItem2.Name = "LayoutControlItem2"
|
||||
Me.LayoutControlItem2.Size = New System.Drawing.Size(261, 62)
|
||||
Me.LayoutControlItem2.TextSize = New System.Drawing.Size(0, 0)
|
||||
Me.LayoutControlItem2.TextVisible = False
|
||||
'
|
||||
'SimpleLabelItem2
|
||||
'
|
||||
Me.SimpleLabelItem2.AllowHotTrack = False
|
||||
Me.SimpleLabelItem2.AppearanceItemCaption.Font = New System.Drawing.Font("Segoe UI", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.SimpleLabelItem2.AppearanceItemCaption.Options.UseFont = True
|
||||
Me.SimpleLabelItem2.Location = New System.Drawing.Point(0, 59)
|
||||
Me.SimpleLabelItem2.Name = "SimpleLabelItem2"
|
||||
Me.SimpleLabelItem2.Size = New System.Drawing.Size(261, 25)
|
||||
Me.SimpleLabelItem2.Text = "Sunshine GmbH"
|
||||
Me.SimpleLabelItem2.TextSize = New System.Drawing.Size(151, 21)
|
||||
'
|
||||
'SimpleLabelItem3
|
||||
'
|
||||
Me.SimpleLabelItem3.AllowHotTrack = False
|
||||
Me.SimpleLabelItem3.AppearanceItemCaption.Font = New System.Drawing.Font("Segoe UI", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.SimpleLabelItem3.AppearanceItemCaption.Options.UseFont = True
|
||||
Me.SimpleLabelItem3.Location = New System.Drawing.Point(0, 34)
|
||||
Me.SimpleLabelItem3.Name = "SimpleLabelItem3"
|
||||
Me.SimpleLabelItem3.Size = New System.Drawing.Size(261, 25)
|
||||
Me.SimpleLabelItem3.Text = "Objekt: Haus Nr. 9"
|
||||
Me.SimpleLabelItem3.TextSize = New System.Drawing.Size(151, 21)
|
||||
'
|
||||
'GridOverview1
|
||||
'
|
||||
Me.GridOverview.Dock = System.Windows.Forms.DockStyle.Fill
|
||||
Me.GridOverview.Location = New System.Drawing.Point(185, 0)
|
||||
Me.GridOverview.Name = "GridOverview1"
|
||||
Me.GridOverview.Size = New System.Drawing.Size(656, 556)
|
||||
Me.GridOverview.TabIndex = 2
|
||||
'
|
||||
'frmWorkflowOverview
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(1134, 723)
|
||||
Me.Controls.Add(Me.SplitContainerControl1)
|
||||
Me.Controls.Add(Me.RibbonStatusBar1)
|
||||
Me.Controls.Add(Me.RibbonControl1)
|
||||
Me.Name = "frmWorkflowOverview"
|
||||
Me.Ribbon = Me.RibbonControl1
|
||||
Me.StatusBar = Me.RibbonStatusBar1
|
||||
Me.Text = "Workflow Übersicht"
|
||||
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.SplitContainerControl1.ResumeLayout(False)
|
||||
CType(Me.GridWorkflowDetails, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.tvDetails, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.LayoutControl1.ResumeLayout(False)
|
||||
CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.SimpleLabelItem1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.LayoutControlItem2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.SimpleLabelItem2, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.SimpleLabelItem3, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
|
||||
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
|
||||
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
|
||||
Friend WithEvents RibbonPageCategory1 As DevExpress.XtraBars.Ribbon.RibbonPageCategory
|
||||
Friend WithEvents RibbonPage3 As DevExpress.XtraBars.Ribbon.RibbonPage
|
||||
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
|
||||
Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
|
||||
Friend WithEvents GridWorkflowDetails As DevExpress.XtraGrid.GridControl
|
||||
Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl
|
||||
Friend WithEvents LayoutControlGroup1 As DevExpress.XtraLayout.LayoutControlGroup
|
||||
Friend WithEvents BarCheckItem1 As DevExpress.XtraBars.BarCheckItem
|
||||
Friend WithEvents BarCheckItem2 As DevExpress.XtraBars.BarCheckItem
|
||||
Friend WithEvents BarCheckItem3 As DevExpress.XtraBars.BarCheckItem
|
||||
Friend WithEvents WindowsUIButtonPanel1 As DevExpress.XtraBars.Docking2010.WindowsUIButtonPanel
|
||||
Friend WithEvents SimpleLabelItem1 As DevExpress.XtraLayout.SimpleLabelItem
|
||||
Friend WithEvents LayoutControlItem2 As DevExpress.XtraLayout.LayoutControlItem
|
||||
Friend WithEvents SimpleLabelItem2 As DevExpress.XtraLayout.SimpleLabelItem
|
||||
Friend WithEvents SimpleLabelItem3 As DevExpress.XtraLayout.SimpleLabelItem
|
||||
Friend WithEvents tvDetails As DevExpress.XtraGrid.Views.Tile.TileView
|
||||
Friend WithEvents NavControlOverview As NavControlOverview
|
||||
Friend WithEvents GridOverview As GridOverview
|
||||
End Class
|
||||
231
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.resx
Normal file
231
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.resx
Normal file
@ -0,0 +1,231 @@
|
||||
<?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.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="BarCheckItem1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYdEVYdFRpdGxlAFRlYW07UGVvcGxlO0dyb3VwO1w5
|
||||
6BYAAADzSURBVDhPpdA9CsJAEAVglYBYeQYPoJ2tBxDEMq2FJ5BASsVrWNhqmc4rKHgJsbAXTKXre2En
|
||||
TNZJESw+iPPzzKTlnPuLWWyifJhtT23YwdPbQwfMuhUwBhdgzaxbAbEauMISIm8BZ5B+bAWkvvmBunPe
|
||||
wJnUCujDCy5Qdw57nOn/BPiQBA6gzxGssZfoHb3MW4cwADlHY429EURlAH50YQM3uMMU5BxZLl4b2OMM
|
||||
Z7nTY8AR9D/RCniO/OYza3qGMgbkqvCANcg5E694bWCPMzKfl9/Af4fwnLlXeW29EwZY54QyvRMG6HPq
|
||||
5HqnEtCca30Bw6t+WSTe8moAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarCheckItem1.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAYdEVYdFRpdGxlAFRlYW07UGVvcGxlO0dyb3VwO1w5
|
||||
6BYAAAJ9SURBVFhHxdbNq41RFMfx461wURSljExuESJCoRiR7kAmTBhgoJiJgUxu/gKGElJckpFEGVFC
|
||||
XiciRt4Zka6IPL6/2/Oc1l7P2veeczs9Bp/u2WuvtfY+z8s+t1UUxX8VBpvUGhi8kbMR1/EZv/EFN7EJ
|
||||
Ub50XRMGsQZ/UAQU34Be1GQ3cB5Ro8ol9KImu4EniJpUnqIXNdkNvIJvUDmHlfA1c7AWZ/EXvu41fE24
|
||||
gWXI3ctBKGcX7sA+bHexGxNwFL5WPZcgWS8ZlAbgi2UYM3DMxCLHMQ3fTKyi3sl6yaA0Fc/gi+9hOr6b
|
||||
WOQHZuG2iYl6qneyXjIwdCltsVzDahfLWQ/l29ge1NaqBUr6pp9gG5zEVhfLUd4JM1avPtTWqgWMzfiF
|
||||
qom+/QEzHs1BrCo/q8cWRGuMugHRG3EK97EQeg78YpEHWIQzqD35VhjEZESFtxAt6CnP1qmXetrYCB9Y
|
||||
gP14jI+YBzuvRrkzoqL5pbA9dU6op3pr3O5ZfZiN09ChYpu9wV7ofm7HJPjXy9MBpcNoMfbhHey81tBa
|
||||
WnNkA3PxEjYpR6/XNhfzNL/OxSI67udrA0MmOJarUM1FE7MuQPPKi+a9ISXriI0mc3ZgCg5Bt0ixtzgC
|
||||
3aKdZawTw9pAdGZHXkCLi+6xamWm+Tyx/KvnRflRH+trVdipfujyHzYxS7+CV6C8aL6m9k9ikKRfQF3e
|
||||
56h2rtNND5vN06W3r6jyVad6m5eslwzEJetp9q+R9RCX8cjEPNWrT7uvXS8ZiElcjm4f0Bz1WYGuNtDp
|
||||
sdup9vFs10sGUiXhJ6JG46V+XW3gA6JG4/UeY2+gaWGwSWGwSWGwOUXrHy0ANvXoR9wdAAAAAElFTkSu
|
||||
QmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarCheckItem2.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAATdEVYdFRpdGxlAFBlb3BsZTtBc3NpZ25+WIkkAAAA
|
||||
4ElEQVQ4T6XRPQ4BURQF4ClEr1FrSSSiokLPGuxEQqbQWIRFSKYXCWuwAmoKRJ5zJu/Ke/fd0Si+MRnn
|
||||
nMxP5pz7S3nI81wbwAHu3hFGkGStgRpcwClXqEOUtwbaoMuiA1HeGhiDVaYJRHlrYA1WmfhflLcGhvAG
|
||||
XeY1vtwobw3QHvQAryXZqgF+sidImeet2arIYOF/S1UDNIeT1wvKTspkDTRgA99v7sNSrhzoww5ewNve
|
||||
QheaCIbliAxM4QHyzCGWl7ooZOCsSiF5aeFI8gg3VdL0SDLwU1gAjvjzIvsAqlQYjVXYUosAAAAASUVO
|
||||
RK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarCheckItem2.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAATdEVYdFRpdGxlAFBlb3BsZTtBc3NpZ25+WIkkAAAB
|
||||
0UlEQVRYR8XWsStFYRgG8DNIGQyKrIrFwG69UhSD8sfIcON2B2UmBnZlMCoWVjYZlBSxIWUg5HgenXP6
|
||||
vu88597zHjeGX3K+732fx7mUKI7jf+V902w2y5iFXbiDj8Q97ME8qBmpSoENiNvYATWbYy0wDSpQWQC1
|
||||
w2MtwNeuwpR9UDs81gKXoMKUK1A7PNYCL6DClGdQOzzWAiqoyBuoHR5LgRqooFY4o3ZlLAU2QYW0whm1
|
||||
K2MpsAoqpBXOqF0ZS4FheAQVpPAuZ9SujKUA1UGFKYugdnisBcZAhSm8q3Z4rAXoEFSg6wjUbE6VAuPw
|
||||
CiqYeMY7ajanSgGagXcIw/mMZ2pGqlqgGx4gLPAEPFMzUtUCNABLwN+JE1iGQVB3C1kLTMB68EzZBt5V
|
||||
Z54yBYagARfA18x/v0ZA3SX++X0B73KmNtc4iKCefM0pKtAHW8BA93OmY+gB9z71whmk91aSEIbHaWBI
|
||||
FRiF62RJkVOYhK7EFJxDeh6Gly7QDzfOonY+E+4zFV66wFqwzCr9rMPwQmEBy0+vMJhvQIYpYQG11CJ9
|
||||
A6VLhAVug4VVFJXIPndXWODXggC3RHj2wyvQCSIkLaHO/qQAsYR63vkCNnH0DUZ2qvqAgwutAAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarCheckItem3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAcdEVYdFRpdGxlAFRlYW07UGVvcGxlO0dyb3VwO1Vz
|
||||
ZXKTe2BJAAAA8klEQVQ4T6XQvw7BUBQG8BKJmPoMHoDN6gEsxq4GTyCiI29hMBgx9jFIvIQY7BKduL6v
|
||||
uac5vU6HxvBL6vz59DRyzv3FLDZRPqwO2xbs4OntoQ1m3QoYgQuwZtatgEQNXGEOHW8GZ5B+YgWkvvmB
|
||||
unPewJnUCojhBReoO4c9zsQ/AT5kCUfQ5wjW2FvqHb3MWwfQBzlHY429IXTKAPzowgZucIcJyDmyXLw2
|
||||
sMcZznKnx4AT6H+iBfAc+c1n1vQMZQzIVeEBa5Bzxl7x2sAeZ2Q+L7+B/w7hOVOv8tp6JwywzglleicM
|
||||
0OfUyfVOJaA5F30Bv8maeRXqkFsAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarCheckItem3.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAcdEVYdFRpdGxlAFRlYW07UGVvcGxlO0dyb3VwO1Vz
|
||||
ZXKTe2BJAAACnklEQVRYR8XVz4tPYRTH8cEoP4YaRalZ2UwRIkINxYo0C9mwYYGFYqexkI38BSwsJKTM
|
||||
kKyk1KwoIT83IlZ+syKNRuTr/dE9+jzPPHfmmsXX4lXfc+55zrlz73Of6Wi1Wv9VMdlOSTAweMptxHV8
|
||||
xA98wg1sQl4batf4HJcEFIa1+IlWgfIb4PWN1viskAQUhQsoNQqX4PWN1viskAQUhUfVojqP4fWN1vis
|
||||
kAQUhRfVopLzWAWvl3lYh3P4hXzdS58VkoAiWY66d3kMqtmFW/DNdhu7MQVHkK9Vz6U+T5KAAumvFuRG
|
||||
0IWjlis5jpn4YrnQ7/MkCSiQGXhSLXB3MAtfLVfyDXNx03KinjN8niQBBUGP0hfLNazJcnXWQ/We2+Oz
|
||||
QhJQFPSXfoA3OImtWa6O6k5YrF6zfVZIAorcZnxHNNFff8Di8RzE6uq3emzxOS4JKMzpiziNu1gE7YN8
|
||||
WMk9LMZZjNn5LgkoDp1aaHEYRmlgbjjrq16dngtJQFEP9uMh3mMB/AbUqO6MCLq+LOupc0I91bvHZ0ZR
|
||||
N85Ah4o3e4W90PvcjmnIP6+cDigdRkuwD2/g1zVDs7r/3AA/5uM5vKiOPq9tWS6n631ZrkTH/ULdwJAl
|
||||
J3IVWjNoOXexeqKqK13PDalYR2zpYp0dmI5D0CtS7jUOQ69oZ5VrYkQ3UDqzS55Bw0XvWGtljv2eWj0B
|
||||
7RfVl/q4z393Y7VwIr3Q4x+wnNN/wSvo9b7jSQJr5PQfUI/3KeLOdbpps3mdHr1/oqrXui6fkUsCinPa
|
||||
zfln5O7jMh5YLqf1fT7HJQGFbgX+dYPWUZ+VPiskAUWu6bHbVHI8hySgyI2i1GiyRn1WSAKK3DuUGk3W
|
||||
W58VxiTarZhsp2KynYrJ9ml1/AZUr3hglRjmdgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="WindowsUIButtonImageOptions1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFJlc2V0O1VuZG87E4EW/wAAAYJJ
|
||||
REFUWEfFlj1Ow2AMhnsAJK7TIdyEEzDCUhYmDsEpunOTbhyAgakSW/BTpdVr1+nHh6gzPFLs+LWdfL+r
|
||||
cRwXJXVWkjorSZ2VOGMYhhZrY2NsjZ2xn+AZH++IybQHtB44IxNM3BlvxpcxNiCGWDRnubQeOMMCXqLA
|
||||
eDD4wqzYJdCgdfm0HjjDAhBqE8/GtxGT/xa05OhqAGiC7rPi78ajwVjfTvCMj3cxnhynP6H1wBmT4Mhn
|
||||
sD+MJ+PGOH1RgHfEEKtahuMwJ7QeOEMEERLeG7HgHMTGJpiYrh44IwgUvioWaYFGc7A61loPnBEEyqsR
|
||||
C7RgOOKc2Gg9cEYIjmRLtAUTU3NstR44IwRn9DbB6lD9TuuBM0LwHD1NsERVu9d64AwL+G8Wb6B7CIBT
|
||||
TUVMJE3aQ/ckBI5UFbGULu1+c/xpGQK/LR67ZRvREbZNFZdtxUc4OOIdgIR81VUPI2WR4zhSfiHJoPuy
|
||||
K9kcZZfSFoz19a7lS5A6K0mdlaTOOsbVD4kgpriFBNvrAAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="WindowsUIButtonImageOptions2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAApdEVYdFRpdGxlAFJlbW92ZTtEZWxldGU7QmFycztS
|
||||
aWJib247U3RhbmRhcmQ7Y1ZIMAAAAUFJREFUWEfFlUEOwjAMBHlYheBjSLw8xJKN3N1N43AIhxFi8Xp8
|
||||
KOqttfZXZLgTGe5Ehjuh4DgO5C6yKnfcj1AAC16d5p/424xvFx0ZCsSCYOUI6qInoKAPqwXfRZ0sUgy7
|
||||
6DIo6IMPKCJXR4zkwQN9py9GHzLeqaRQR8zktpN8FNiQs3JESW6gj4IYdCpHlOUG+ijIw87siCtOcgN9
|
||||
FGDB+eUIkhvoo0CVnJUjpNxAHwWqlKgcMZQb6KNAlRKzB87I/w4CfRSoklORB8Mj0EeBKnVW5IE8An0U
|
||||
iNIv8oCOQB8FUJjJ7YGbPZinI9BHQRquyGO2fAT6KPDBFXlQOgJ9FPSh2etYyYPZEfPXsdEHR4uu5MFl
|
||||
F10UBF6gBUWGXfRQkPHiqjyQXXRQgPTSMy9YhLq4n4LdyHAnMtyJDPfRbh/esgzdHdsY9wAAAABJRU5E
|
||||
rkJggg==
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
51
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.vb
Normal file
51
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowOverview.vb
Normal file
@ -0,0 +1,51 @@
|
||||
Imports System.ComponentModel
|
||||
Imports DevExpress.Utils
|
||||
|
||||
Public Class frmWorkflowOverview
|
||||
Private WorkflowItems As BindingList(Of WorkflowItem)
|
||||
Private WorkflowDetails As BindingList(Of WorkflowDetail)
|
||||
|
||||
Private Async Sub frmWorkflowOverview_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
Dim oDatatable As DataTable
|
||||
Dim oWorkflows As New List(Of WorkflowItem)
|
||||
|
||||
Dim oIconMap As New Dictionary(Of String, String) From {
|
||||
{"Start", "ampel_gruen"},
|
||||
{"not started", "ampel_rot"}
|
||||
}
|
||||
|
||||
Try
|
||||
oDatatable = Await My.Common.Views.VWIDB_GUI_WF_OVERVIEW(70, 104)
|
||||
|
||||
For Each oRow As DataRow In oDatatable.Rows
|
||||
oWorkflows.Add(New WorkflowItem(oIconMap) With {
|
||||
.Title = oRow.Item("REQUEST_TITLE"),
|
||||
.State = oRow.Item("STATETITLE"),
|
||||
.Process = oRow.Item("PROCESS_NAME")
|
||||
})
|
||||
Next
|
||||
Catch ex As Exception
|
||||
ShowErrorMessage(ex)
|
||||
End Try
|
||||
|
||||
GridOverview.DataSource = oWorkflows
|
||||
NavControlOverview.DataSource = oWorkflows
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
'gvOverview.GroupFormat = "[#image]{1} {2}"
|
||||
'With gvOverview.Columns.Item("CreatedAt")
|
||||
' .OptionsFilter.FilterPopupMode = DevExpress.XtraGrid.Columns.FilterPopupMode.DateAlt
|
||||
' .GroupInterval = DevExpress.XtraGrid.ColumnGroupInterval.DateRange
|
||||
' .SortOrder = DevExpress.Data.ColumnSortOrder.Descending
|
||||
' .Group()
|
||||
'End With
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub frmWorkflowOverview_Shown(sender As Object, e As EventArgs) Handles Me.Shown
|
||||
RibbonControl1.SelectPage(RibbonPage3)
|
||||
End Sub
|
||||
End Class
|
||||
120
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowStep.resx
Normal file
120
GUIs.ClientSuite/ModuleWorkflow/frmWorkflowStep.resx
Normal 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>
|
||||
@ -1,5 +1,4 @@
|
||||
Imports DevExpress.XtraLayout
|
||||
Imports DigitalData.GUIs.ClientSuite
|
||||
Imports DigitalData.GUIs.ClientSuite.Controls
|
||||
|
||||
Public Class frmWorkflowStep
|
||||
30
GUIs.ClientSuite/My Project/Resources.Designer.vb
generated
30
GUIs.ClientSuite/My Project/Resources.Designer.vb
generated
@ -60,6 +60,36 @@ Namespace My.Resources
|
||||
End Set
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property ampel_gelb() As System.Drawing.Bitmap
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("ampel_gelb", resourceCulture)
|
||||
Return CType(obj,System.Drawing.Bitmap)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property ampel_gruen() As System.Drawing.Bitmap
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("ampel_gruen", resourceCulture)
|
||||
Return CType(obj,System.Drawing.Bitmap)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property ampel_rot() As System.Drawing.Bitmap
|
||||
Get
|
||||
Dim obj As Object = ResourceManager.GetObject("ampel_rot", resourceCulture)
|
||||
Return CType(obj,System.Drawing.Bitmap)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||
'''</summary>
|
||||
|
||||
@ -118,25 +118,31 @@
|
||||
<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="iconfinder_Gowalla_324477" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\iconfinder_Gowalla_324477.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ComboBox" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ComboBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="TextBox" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\TextBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="iconfinder_Gowalla_324477" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\iconfinder_Gowalla_324477.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="DatePicker" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\DatePicker.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ComboBox" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ComboBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="user_16xLG" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\user_16xLG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="CheckBox" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\CheckBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="StatusAnnotations_Complete_and_ok_32xLG" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\StatusAnnotations_Complete_and_ok_32xLG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
<data name="ampel_gelb" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ampel-gelb.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ampel_gruen" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ampel-gruen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="ampel_rot" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\ampel-rot.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
||||
@ -1,16 +1,16 @@
|
||||
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.Navigation.OfficeNavigationBar, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraTabbedMdi.XtraTabbedMdiManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.Utils.MVVM.MVVMContext, DevExpress.Utils.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraBars.Navigation.OfficeNavigationBar, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
|
||||
BIN
GUIs.ClientSuite/Resources/ampel-gelb.png
Normal file
BIN
GUIs.ClientSuite/Resources/ampel-gelb.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
BIN
GUIs.ClientSuite/Resources/ampel-gruen.png
Normal file
BIN
GUIs.ClientSuite/Resources/ampel-gruen.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
GUIs.ClientSuite/Resources/ampel-rot.png
Normal file
BIN
GUIs.ClientSuite/Resources/ampel-rot.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@ -1,47 +1,44 @@
|
||||
Imports System.Timers
|
||||
Imports DigitalData.GUIs.ClientSuite
|
||||
Imports DigitalData.GUIs.ClientSuite.Base
|
||||
Imports DigitalData.Modules.EDMIAPI.IDBServiceReference
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Namespace Workers
|
||||
Public Class HeartbeatWorker
|
||||
Inherits BaseClass
|
||||
Implements IWorker
|
||||
|
||||
Private _Channel As IIDBServiceChannel
|
||||
|
||||
Public Event OnlineChanged As OnlineChangedEventHandler
|
||||
Public Delegate Sub OnlineChangedEventHandler(sender As Object, Online As Boolean)
|
||||
|
||||
Public ReadOnly Property Interval As Integer = 4000 Implements IWorker.Interval
|
||||
Public ReadOnly Property Name As String = "Heartbeat Worker" Implements IWorker.Name
|
||||
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
MyBase.New(LogConfig)
|
||||
End Sub
|
||||
|
||||
Public Sub Setup() Implements IWorker.Setup
|
||||
_Channel = My.ChannelFactory.CreateChannel()
|
||||
_Channel.Open()
|
||||
Logger.Debug("Starting {0}", "HeartbeatWorker")
|
||||
End Sub
|
||||
|
||||
Public Async Sub Callback(manager As WorkerManager, e As ElapsedEventArgs) Implements IWorker.Callback
|
||||
Public Async Sub Callback(Manager As WorkerManager, e As ElapsedEventArgs) Implements IWorker.Callback
|
||||
Try
|
||||
Logger.Debug("Checking if Service is up...")
|
||||
|
||||
If _Channel.State = ServiceModel.CommunicationState.Faulted Then
|
||||
_Channel = My.ChannelFactory.CreateChannel()
|
||||
If My.Channel.State = ServiceModel.CommunicationState.Faulted Then
|
||||
My.Channel = My.ChannelFactory.CreateChannel()
|
||||
End If
|
||||
|
||||
' Connect to service and send hearbeat request
|
||||
Dim oResult = Await _Channel.HeartbeatAsync()
|
||||
Dim oResult = Await My.Channel.HeartbeatAsync()
|
||||
|
||||
Logger.Debug("Service is online")
|
||||
|
||||
SetOnlineState(True)
|
||||
Catch ex As Exception
|
||||
|
||||
Logger.Debug("Service is offline!")
|
||||
Logger.Error(ex)
|
||||
|
||||
Manager.StopWorkers()
|
||||
SetOnlineState(False)
|
||||
Finally
|
||||
My.Application.Service.LastChecked = DateTime.Now
|
||||
@ -49,7 +46,7 @@ Namespace Workers
|
||||
End Sub
|
||||
|
||||
Public Sub Teardown() Implements IWorker.Teardown
|
||||
' TODO: Close channel gracefully
|
||||
Logger.Debug("Stopping {0}", Name)
|
||||
End Sub
|
||||
|
||||
Private Sub SetOnlineState(NewState As Boolean)
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
Namespace Workers
|
||||
Public Interface IWorker
|
||||
ReadOnly Property Interval As Integer
|
||||
ReadOnly Property Name As String
|
||||
|
||||
Sub Setup()
|
||||
Sub Teardown()
|
||||
|
||||
@ -6,6 +6,14 @@ Namespace Workers
|
||||
Public Class WorkerManager
|
||||
Inherits BaseClass
|
||||
|
||||
''' <summary>
|
||||
''' Holds information about a worker
|
||||
''' </summary>
|
||||
Class WorkerState
|
||||
Public Worker As IWorker
|
||||
Public Timer As Timer
|
||||
End Class
|
||||
|
||||
''' <summary>
|
||||
''' List of workers that will be started.
|
||||
''' </summary>
|
||||
@ -13,52 +21,73 @@ Namespace Workers
|
||||
GetType(HeartbeatWorker),
|
||||
GetType(WorkflowOverviewWorker)
|
||||
}
|
||||
Private Workers As New List(Of IWorker)
|
||||
Private TimerList As New List(Of Timer)
|
||||
Private Workers As New List(Of WorkerState)
|
||||
|
||||
Public Sub New(LogConfig As LogConfig, SyncronizingObject As frmMain)
|
||||
MyBase.New(LogConfig)
|
||||
|
||||
Workers = CreateWorkers()
|
||||
|
||||
For Each oWorker As IWorker In Workers
|
||||
Dim oTimer = New Timer(oWorker.Interval) With {
|
||||
.SynchronizingObject = SyncronizingObject,
|
||||
.Enabled = True
|
||||
}
|
||||
|
||||
AddHandler oTimer.Elapsed, Sub(sender As Object, e As ElapsedEventArgs)
|
||||
Try
|
||||
oWorker.Callback(Me, e)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Worker {0} threw an error in callback.", oWorker.GetType.Name)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
TimerList.Add(oTimer)
|
||||
Next
|
||||
Workers = CreateWorkers(SyncronizingObject)
|
||||
End Sub
|
||||
|
||||
Public Function GetWorker(Of T)() As T
|
||||
For Each oWorker In Workers
|
||||
If TypeOf oWorker Is T Then
|
||||
Return oWorker
|
||||
For Each oWorkerState As WorkerState In Workers
|
||||
If TypeOf oWorkerState.Worker Is T Then
|
||||
Return oWorkerState.Worker
|
||||
End If
|
||||
Next
|
||||
|
||||
Return Nothing
|
||||
End Function
|
||||
|
||||
Private Function CreateWorkers() As List(Of IWorker)
|
||||
Dim oWorkers As New List(Of IWorker)
|
||||
Public Sub StopWorkers()
|
||||
Logger.Debug("Stopping all workers..")
|
||||
For Each oWorkerState In Workers
|
||||
oWorkerState.Timer.Stop()
|
||||
|
||||
Try
|
||||
oWorkerState.Worker.Teardown()
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Worker {0} threw an error during teardown.", oWorkerState.Worker.Name)
|
||||
End Try
|
||||
Next
|
||||
Logger.Debug("All workers stopped.")
|
||||
End Sub
|
||||
|
||||
Private Function CreateTimer(Worker As IWorker, SyncronizingObject As frmMain)
|
||||
Dim oTimer = New Timer(Worker.Interval) With {
|
||||
.SynchronizingObject = SyncronizingObject,
|
||||
.Enabled = True
|
||||
}
|
||||
|
||||
AddHandler oTimer.Elapsed, Sub(sender As Object, e As ElapsedEventArgs)
|
||||
Try
|
||||
Worker.Callback(Me, e)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Worker {0} threw an error in callback.", Worker.Name)
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Return oTimer
|
||||
End Function
|
||||
|
||||
Private Function CreateWorkers(SyncronizingObject As frmMain) As List(Of WorkerState)
|
||||
Dim oWorkers As New List(Of WorkerState)
|
||||
|
||||
For Each oWorkerType In WorkerTypes
|
||||
Dim oWorker As IWorker = Activator.CreateInstance(oWorkerType, New Object() {LogConfig})
|
||||
|
||||
Try
|
||||
Dim oWorker As IWorker = Activator.CreateInstance(oWorkerType, New Object() {LogConfig})
|
||||
oWorker.Setup()
|
||||
oWorkers.Add(oWorker)
|
||||
|
||||
Dim oWorkerState As New WorkerState() With {
|
||||
.Worker = oWorker,
|
||||
.Timer = CreateTimer(oWorker, SyncronizingObject)
|
||||
}
|
||||
|
||||
oWorkers.Add(oWorkerState)
|
||||
Catch ex As Exception
|
||||
Logger.Warn("Worker {0} threw an error while creating. Skipping.", oWorkerType.Name)
|
||||
Logger.Warn("Worker {0} threw an error during setup. Skipping.", oWorker.Name)
|
||||
Logger.Error(ex)
|
||||
Continue For
|
||||
End Try
|
||||
|
||||
@ -12,6 +12,7 @@ Namespace Workers
|
||||
End Sub
|
||||
|
||||
Public ReadOnly Property Interval As Integer = 60000 Implements IWorker.Interval
|
||||
Public ReadOnly Property Name As String = "WorkflowOverview Worker" Implements IWorker.Name
|
||||
|
||||
Public Sub Setup() Implements IWorker.Setup
|
||||
Throw New NotImplementedException()
|
||||
|
||||
@ -22,7 +22,8 @@ Public Class frmConfigUser
|
||||
End Sub
|
||||
|
||||
Private Sub btnAppFolder_Click(sender As Object, e As EventArgs) Handles btnAppFolder.Click
|
||||
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))
|
||||
Dim oAppData = Application.LocalUserAppDataPath
|
||||
Process.Start(oAppData)
|
||||
End Sub
|
||||
|
||||
Private Sub chkLogErrorsOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkLogErrorsOnly.CheckedChanged
|
||||
|
||||
38
GUIs.ClientSuite/frmMain.Designer.vb
generated
38
GUIs.ClientSuite/frmMain.Designer.vb
generated
@ -21,11 +21,10 @@ Partial Class frmMain
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()>
|
||||
Private Sub InitializeComponent()
|
||||
Me.components = New System.ComponentModel.Container()
|
||||
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
|
||||
Dim PushTransition1 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition()
|
||||
Dim PushTransition2 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition()
|
||||
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
|
||||
Me.MainMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
|
||||
Me.MainMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu()
|
||||
Me.BarButtonExit = New DevExpress.XtraBars.BarButtonItem()
|
||||
Me.BarButtonUserSettings = New DevExpress.XtraBars.BarButtonItem()
|
||||
Me.BarButtonConnectionSettings = New DevExpress.XtraBars.BarButtonItem()
|
||||
@ -51,13 +50,14 @@ Partial Class frmMain
|
||||
Me.RibbonPageGroup6 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||
Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
|
||||
Me.DocumentManager = New DevExpress.XtraBars.Docking2010.DocumentManager(Me.components)
|
||||
Me.TabbedView1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView(Me.components)
|
||||
Me.DockManager = New DevExpress.XtraBars.Docking.DockManager(Me.components)
|
||||
Me.DocumentManager = New DevExpress.XtraBars.Docking2010.DocumentManager()
|
||||
Me.TabbedView1 = New DevExpress.XtraBars.Docking2010.Views.Tabbed.TabbedView()
|
||||
Me.DockManager = New DevExpress.XtraBars.Docking.DockManager()
|
||||
Me.MainNav = New DevExpress.XtraBars.Navigation.OfficeNavigationBar()
|
||||
Me.NavbarItemHome = New DevExpress.XtraBars.Navigation.NavigationBarItem()
|
||||
Me.NavbarItemSearch = New DevExpress.XtraBars.Navigation.NavigationBarItem()
|
||||
Me.NavbarItemWorkflow = New DevExpress.XtraBars.Navigation.NavigationBarItem()
|
||||
Me.BarButtonItem5 = New DevExpress.XtraBars.BarButtonItem()
|
||||
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.MainMenu, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.DocumentManager, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
@ -70,15 +70,15 @@ Partial Class frmMain
|
||||
'
|
||||
Me.RibbonControl.ApplicationButtonDropDownControl = Me.MainMenu
|
||||
Me.RibbonControl.ExpandCollapseItem.Id = 0
|
||||
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonExit, Me.BarButtonUserSettings, Me.LabelCurrentUser, Me.LabelCurrentMachine, Me.LabelCurrentVersion, Me.BarButtonItem1, Me.SkinDropDownButtonItem1, Me.BarButtonDeleteControl, Me.BarButtonConnectionSettings, Me.LabelCurrentLanguage, Me.BarButtonItem2, Me.BarWorkspaceMenuItem1, Me.LabelServiceOnline, Me.BarButtonUserManager, Me.LabelServiceOffline, Me.BarButtonItem3, Me.BarButtonFormDesigner, Me.BarButtonItem4})
|
||||
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonExit, Me.BarButtonUserSettings, Me.LabelCurrentUser, Me.LabelCurrentMachine, Me.LabelCurrentVersion, Me.BarButtonItem1, Me.SkinDropDownButtonItem1, Me.BarButtonDeleteControl, Me.BarButtonConnectionSettings, Me.LabelCurrentLanguage, Me.BarButtonItem2, Me.BarWorkspaceMenuItem1, Me.LabelServiceOnline, Me.BarButtonUserManager, Me.LabelServiceOffline, Me.BarButtonItem3, Me.BarButtonFormDesigner, Me.BarButtonItem4, Me.BarButtonItem5})
|
||||
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
|
||||
Me.RibbonControl.MaxItemId = 25
|
||||
Me.RibbonControl.MaxItemId = 26
|
||||
Me.RibbonControl.MdiMergeStyle = DevExpress.XtraBars.Ribbon.RibbonMdiMergeStyle.Always
|
||||
Me.RibbonControl.Name = "RibbonControl"
|
||||
Me.RibbonControl.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1)
|
||||
Me.RibbonControl.PageHeaderItemLinks.Add(Me.BarWorkspaceMenuItem1)
|
||||
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPageAdmin})
|
||||
Me.RibbonControl.Size = New System.Drawing.Size(1139, 146)
|
||||
Me.RibbonControl.Size = New System.Drawing.Size(1139, 143)
|
||||
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
|
||||
'
|
||||
'MainMenu
|
||||
@ -181,7 +181,7 @@ Partial Class frmMain
|
||||
'WorkspaceManager1
|
||||
'
|
||||
Me.WorkspaceManager1.TargetControl = Me
|
||||
Me.WorkspaceManager1.TransitionType = PushTransition1
|
||||
Me.WorkspaceManager1.TransitionType = PushTransition2
|
||||
'
|
||||
'LabelServiceOnline
|
||||
'
|
||||
@ -223,7 +223,7 @@ Partial Class frmMain
|
||||
'
|
||||
'BarButtonItem4
|
||||
'
|
||||
Me.BarButtonItem4.Caption = "Workflow Test"
|
||||
Me.BarButtonItem4.Caption = "Workflow Step"
|
||||
Me.BarButtonItem4.Id = 24
|
||||
Me.BarButtonItem4.ImageOptions.Image = CType(resources.GetObject("BarButtonItem4.ImageOptions.Image"), System.Drawing.Image)
|
||||
Me.BarButtonItem4.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.LargeImage"), System.Drawing.Image)
|
||||
@ -241,6 +241,7 @@ Partial Class frmMain
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem3)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem2)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem4)
|
||||
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem5)
|
||||
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
|
||||
Me.RibbonPageGroup3.Text = "DEBUG"
|
||||
'
|
||||
@ -270,10 +271,10 @@ Partial Class frmMain
|
||||
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelCurrentLanguage)
|
||||
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelServiceOnline)
|
||||
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelServiceOffline)
|
||||
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 556)
|
||||
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 546)
|
||||
Me.RibbonStatusBar.Name = "RibbonStatusBar"
|
||||
Me.RibbonStatusBar.Ribbon = Me.RibbonControl
|
||||
Me.RibbonStatusBar.Size = New System.Drawing.Size(1139, 21)
|
||||
Me.RibbonStatusBar.Size = New System.Drawing.Size(1139, 31)
|
||||
'
|
||||
'DocumentManager
|
||||
'
|
||||
@ -297,7 +298,7 @@ Partial Class frmMain
|
||||
'
|
||||
Me.MainNav.Dock = System.Windows.Forms.DockStyle.Bottom
|
||||
Me.MainNav.Items.AddRange(New DevExpress.XtraBars.Navigation.NavigationBarItem() {Me.NavbarItemHome, Me.NavbarItemSearch, Me.NavbarItemWorkflow})
|
||||
Me.MainNav.Location = New System.Drawing.Point(0, 511)
|
||||
Me.MainNav.Location = New System.Drawing.Point(0, 501)
|
||||
Me.MainNav.Name = "MainNav"
|
||||
Me.MainNav.Size = New System.Drawing.Size(1139, 45)
|
||||
Me.MainNav.TabIndex = 4
|
||||
@ -318,6 +319,14 @@ Partial Class frmMain
|
||||
Me.NavbarItemWorkflow.Name = "NavbarItemWorkflow"
|
||||
Me.NavbarItemWorkflow.Text = "Workflow"
|
||||
'
|
||||
'BarButtonItem5
|
||||
'
|
||||
Me.BarButtonItem5.Caption = "Workflow Overview"
|
||||
Me.BarButtonItem5.Id = 25
|
||||
Me.BarButtonItem5.ImageOptions.Image = CType(resources.GetObject("BarButtonItem5.ImageOptions.Image"), System.Drawing.Image)
|
||||
Me.BarButtonItem5.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem5.ImageOptions.LargeImage"), System.Drawing.Image)
|
||||
Me.BarButtonItem5.Name = "BarButtonItem5"
|
||||
'
|
||||
'frmMain
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
@ -377,4 +386,5 @@ Partial Class frmMain
|
||||
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
|
||||
Friend WithEvents BarButtonFormDesigner As DevExpress.XtraBars.BarButtonItem
|
||||
Friend WithEvents BarButtonItem4 As DevExpress.XtraBars.BarButtonItem
|
||||
Friend WithEvents BarButtonItem5 As DevExpress.XtraBars.BarButtonItem
|
||||
End Class
|
||||
|
||||
@ -446,6 +446,26 @@
|
||||
Ixl2CEPBSIYdwlAwkmGHMBSMZNghDKWWbpVS4o3v1CEMRSNDD5B2gN71YvgpPhq3GLYfdNj1nbYYth90
|
||||
+O8BevftiO/Wx/Vxj1/qP1v5Vm9f/a6aB8wD5gHzgPVxJoYjMRwnlhd3GhRitUujhAAAAABJRU5ErkJg
|
||||
gg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarButtonItem5.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAALHRFWHRUaXRsZQBEb2N1bWVu
|
||||
dDtNYXA7U2NoZW1lO0RpYWdyYW07SGllcmFyO05ldE4PKkQAAAB1SURBVDhPzczBDYAwDEPRLsg6DMAS
|
||||
jMC1x24X9CVAbWKgqBcOTwjXTjKzITKclmKK7yEEUGP4HkIANYbvIQRQY/geQgA1hu8hBFBj+B5CUMs5
|
||||
20G+o/mpBm8eD/A9XQOXtQfmbbUahZ7s9sCX7CcHRsiwn6Ud+yzVdNjXwB0AAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="BarButtonItem5.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAALHRFWHRUaXRsZQBEb2N1bWVu
|
||||
dDtNYXA7U2NoZW1lO0RpYWdyYW07SGllcmFyO05ldE4PKkQAAADDSURBVFhH7dKxDcIwEAXQLMg6DMAS
|
||||
jEDrku0OHGEJRU+HIwWncfFS/IT/r2CJiFMxHImhXG7P2IEdwlAwkmGHMBSMZNghDAUjGXYIQ8FIhh3C
|
||||
UDCSYYcwFIxk2CEMBSMZdghDwUiGHcJQMJJhhzAUjGTYIQyllm6VUuKN79QhDEUjQw+QdoDe9WL4KT4a
|
||||
txi2H3TY9Z22GLYfdPjvAXr37Yjv1sf1cY9f6j9b+VZvX/2umgfMA+YB84D1cSaGIzEcJ5YXdxoUYrVL
|
||||
o4QAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="DocumentManager.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
|
||||
@ -37,11 +37,11 @@ Public Class frmMain
|
||||
End Sub
|
||||
|
||||
Private Sub HandleOnlineChanged(sender As Object, Online As Boolean)
|
||||
SetOnlineLabel(Online)
|
||||
If Online = False Then
|
||||
|
||||
MessageBox.Show($"Application will be closed now.{vbNewLine}Reason: Service is offline.", "Critical Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
|
||||
Application.Exit()
|
||||
End If
|
||||
SetOnlineLabel(Online)
|
||||
End Sub
|
||||
|
||||
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
@ -222,4 +222,11 @@ Public Class frmMain
|
||||
}
|
||||
oForm.Show()
|
||||
End Sub
|
||||
|
||||
Private Sub BarButtonItem5_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem5.ItemClick
|
||||
Dim oForm As New frmWorkflowOverview() With {
|
||||
.MdiParent = DocumentManager.MdiParent
|
||||
}
|
||||
oForm.Show()
|
||||
End Sub
|
||||
End Class
|
||||
@ -3,5 +3,6 @@
|
||||
<package id="FirebirdSql.Data.FirebirdClient" version="6.4.0" targetFramework="net461" />
|
||||
<package id="FirebirdSql.EntityFrameworkCore.Firebird" version="6.4.0" targetFramework="net461" />
|
||||
<package id="jacobslusser.ScintillaNET" version="3.6.3" targetFramework="net461" />
|
||||
<package id="NLog" version="4.5.11" targetFramework="net461" />
|
||||
<package id="System.Runtime.Serialization.Primitives" version="4.3.0" targetFramework="net461" />
|
||||
</packages>
|
||||
35
GUIs.Test.TestGUI/Form1.Designer.vb
generated
35
GUIs.Test.TestGUI/Form1.Designer.vb
generated
@ -43,6 +43,9 @@ Partial Class Form1
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.Label6 = New System.Windows.Forms.Label()
|
||||
Me.Button4 = New System.Windows.Forms.Button()
|
||||
Me.Button6 = New System.Windows.Forms.Button()
|
||||
Me.ListBox1 = New System.Windows.Forms.ListBox()
|
||||
Me.Button7 = New System.Windows.Forms.Button()
|
||||
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
@ -228,11 +231,40 @@ Partial Class Form1
|
||||
Me.Button4.Text = "Test Background Worker Logging"
|
||||
Me.Button4.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button6
|
||||
'
|
||||
Me.Button6.Location = New System.Drawing.Point(683, 143)
|
||||
Me.Button6.Name = "Button6"
|
||||
Me.Button6.Size = New System.Drawing.Size(75, 23)
|
||||
Me.Button6.TabIndex = 23
|
||||
Me.Button6.Text = "Get Logs"
|
||||
Me.Button6.UseVisualStyleBackColor = True
|
||||
'
|
||||
'ListBox1
|
||||
'
|
||||
Me.ListBox1.FormattingEnabled = True
|
||||
Me.ListBox1.Location = New System.Drawing.Point(683, 172)
|
||||
Me.ListBox1.Name = "ListBox1"
|
||||
Me.ListBox1.Size = New System.Drawing.Size(355, 303)
|
||||
Me.ListBox1.TabIndex = 24
|
||||
'
|
||||
'Button7
|
||||
'
|
||||
Me.Button7.Location = New System.Drawing.Point(764, 143)
|
||||
Me.Button7.Name = "Button7"
|
||||
Me.Button7.Size = New System.Drawing.Size(75, 23)
|
||||
Me.Button7.TabIndex = 25
|
||||
Me.Button7.Text = "Clear Logs"
|
||||
Me.Button7.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Form1
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(1050, 487)
|
||||
Me.Controls.Add(Me.Button7)
|
||||
Me.Controls.Add(Me.ListBox1)
|
||||
Me.Controls.Add(Me.Button6)
|
||||
Me.Controls.Add(Me.Button4)
|
||||
Me.Controls.Add(Me.Label6)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
@ -284,4 +316,7 @@ Partial Class Form1
|
||||
Friend WithEvents TextBox1 As TextBox
|
||||
Friend WithEvents Label6 As Label
|
||||
Friend WithEvents Button4 As Button
|
||||
Friend WithEvents Button6 As Button
|
||||
Friend WithEvents ListBox1 As ListBox
|
||||
Friend WithEvents Button7 As Button
|
||||
End Class
|
||||
|
||||
@ -41,6 +41,7 @@ Public Class Form1
|
||||
|
||||
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
MyLogger = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "MAIN")
|
||||
MyLogger.Debug = True
|
||||
Logger = MyLogger.GetLogger()
|
||||
|
||||
Dim MySecondLogger = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "MAIN2")
|
||||
@ -169,4 +170,21 @@ Public Class Form1
|
||||
bw1.RunWorkerAsync()
|
||||
End Sub
|
||||
|
||||
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
|
||||
Logger.Error(New ApplicationException("Some Error occurred!"))
|
||||
|
||||
ListBox1.Items.Clear()
|
||||
For Each oLog In MyLogger.Logs
|
||||
ListBox1.Items.Add(oLog)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click
|
||||
MyLogger.ClearLogs()
|
||||
|
||||
ListBox1.Items.Clear()
|
||||
For Each oLog In MyLogger.Logs
|
||||
ListBox1.Items.Add(oLog)
|
||||
Next
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
121
GUIs.Test.ZUGFeRDTest/Form1.Designer.vb
generated
121
GUIs.Test.ZUGFeRDTest/Form1.Designer.vb
generated
@ -29,6 +29,17 @@ Partial Class Form1
|
||||
Me.Button3 = New System.Windows.Forms.Button()
|
||||
Me.Button4 = New System.Windows.Forms.Button()
|
||||
Me.txtMD5Checksum = New System.Windows.Forms.TextBox()
|
||||
Me.Button5 = New System.Windows.Forms.Button()
|
||||
Me.GroupBox1 = New System.Windows.Forms.GroupBox()
|
||||
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
|
||||
Me.GroupBox3 = New System.Windows.Forms.GroupBox()
|
||||
Me.txtPropName = New System.Windows.Forms.TextBox()
|
||||
Me.GroupBox4 = New System.Windows.Forms.GroupBox()
|
||||
Me.Button6 = New System.Windows.Forms.Button()
|
||||
Me.GroupBox1.SuspendLayout()
|
||||
Me.GroupBox2.SuspendLayout()
|
||||
Me.GroupBox3.SuspendLayout()
|
||||
Me.GroupBox4.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'OpenFileDialog1
|
||||
@ -37,7 +48,7 @@ Partial Class Form1
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(12, 12)
|
||||
Me.Button1.Location = New System.Drawing.Point(6, 19)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button1.TabIndex = 0
|
||||
@ -54,55 +65,128 @@ Partial Class Form1
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(12, 122)
|
||||
Me.Button2.Location = New System.Drawing.Point(6, 19)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button2.TabIndex = 2
|
||||
Me.Button2.Text = "Validate Single File"
|
||||
Me.Button2.Text = "Validate PDF"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button3
|
||||
'
|
||||
Me.Button3.Location = New System.Drawing.Point(12, 151)
|
||||
Me.Button3.Location = New System.Drawing.Point(6, 48)
|
||||
Me.Button3.Name = "Button3"
|
||||
Me.Button3.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button3.TabIndex = 3
|
||||
Me.Button3.Text = "Load Single File"
|
||||
Me.Button3.Text = "Validate and Serialize PDF"
|
||||
Me.Button3.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button4
|
||||
'
|
||||
Me.Button4.Location = New System.Drawing.Point(12, 193)
|
||||
Me.Button4.Location = New System.Drawing.Point(6, 19)
|
||||
Me.Button4.Name = "Button4"
|
||||
Me.Button4.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button4.TabIndex = 4
|
||||
Me.Button4.Text = "MD5Chcksum"
|
||||
Me.Button4.Text = "Create MD5 Checksum for PDF"
|
||||
Me.Button4.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txtMD5Checksum
|
||||
'
|
||||
Me.txtMD5Checksum.DataBindings.Add(New System.Windows.Forms.Binding("Text", Global.ZUGFeRDTest.My.MySettings.Default, "MD5Cheksum", True, System.Windows.Forms.DataSourceUpdateMode.OnPropertyChanged))
|
||||
Me.txtMD5Checksum.Location = New System.Drawing.Point(12, 222)
|
||||
Me.txtMD5Checksum.Location = New System.Drawing.Point(6, 49)
|
||||
Me.txtMD5Checksum.Name = "txtMD5Checksum"
|
||||
Me.txtMD5Checksum.Size = New System.Drawing.Size(360, 20)
|
||||
Me.txtMD5Checksum.Size = New System.Drawing.Size(348, 20)
|
||||
Me.txtMD5Checksum.TabIndex = 5
|
||||
Me.txtMD5Checksum.Text = Global.ZUGFeRDTest.My.MySettings.Default.MD5Cheksum
|
||||
'
|
||||
'Button5
|
||||
'
|
||||
Me.Button5.Location = New System.Drawing.Point(6, 48)
|
||||
Me.Button5.Name = "Button5"
|
||||
Me.Button5.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button5.TabIndex = 6
|
||||
Me.Button5.Text = "Open Input Folder"
|
||||
Me.Button5.UseVisualStyleBackColor = True
|
||||
'
|
||||
'GroupBox1
|
||||
'
|
||||
Me.GroupBox1.Controls.Add(Me.Button1)
|
||||
Me.GroupBox1.Controls.Add(Me.Button5)
|
||||
Me.GroupBox1.Location = New System.Drawing.Point(12, 12)
|
||||
Me.GroupBox1.Name = "GroupBox1"
|
||||
Me.GroupBox1.Size = New System.Drawing.Size(360, 92)
|
||||
Me.GroupBox1.TabIndex = 7
|
||||
Me.GroupBox1.TabStop = False
|
||||
Me.GroupBox1.Text = "Run Job like in ZUGFeRD Service"
|
||||
'
|
||||
'GroupBox2
|
||||
'
|
||||
Me.GroupBox2.Controls.Add(Me.Button2)
|
||||
Me.GroupBox2.Controls.Add(Me.Button3)
|
||||
Me.GroupBox2.Location = New System.Drawing.Point(12, 110)
|
||||
Me.GroupBox2.Name = "GroupBox2"
|
||||
Me.GroupBox2.Size = New System.Drawing.Size(360, 90)
|
||||
Me.GroupBox2.TabIndex = 8
|
||||
Me.GroupBox2.TabStop = False
|
||||
Me.GroupBox2.Text = "Run Functions on a single file (needs Breakpoint)"
|
||||
'
|
||||
'GroupBox3
|
||||
'
|
||||
Me.GroupBox3.Controls.Add(Me.Button4)
|
||||
Me.GroupBox3.Controls.Add(Me.txtMD5Checksum)
|
||||
Me.GroupBox3.Location = New System.Drawing.Point(12, 206)
|
||||
Me.GroupBox3.Name = "GroupBox3"
|
||||
Me.GroupBox3.Size = New System.Drawing.Size(360, 85)
|
||||
Me.GroupBox3.TabIndex = 9
|
||||
Me.GroupBox3.TabStop = False
|
||||
Me.GroupBox3.Text = "Open PDF and calculate Checksum"
|
||||
'
|
||||
'txtPropName
|
||||
'
|
||||
Me.txtPropName.Location = New System.Drawing.Point(6, 48)
|
||||
Me.txtPropName.Name = "txtPropName"
|
||||
Me.txtPropName.Size = New System.Drawing.Size(348, 20)
|
||||
Me.txtPropName.TabIndex = 10
|
||||
'
|
||||
'GroupBox4
|
||||
'
|
||||
Me.GroupBox4.Controls.Add(Me.Button6)
|
||||
Me.GroupBox4.Controls.Add(Me.txtPropName)
|
||||
Me.GroupBox4.Location = New System.Drawing.Point(12, 297)
|
||||
Me.GroupBox4.Name = "GroupBox4"
|
||||
Me.GroupBox4.Size = New System.Drawing.Size(360, 122)
|
||||
Me.GroupBox4.TabIndex = 11
|
||||
Me.GroupBox4.TabStop = False
|
||||
Me.GroupBox4.Text = "GroupBox4"
|
||||
'
|
||||
'Button6
|
||||
'
|
||||
Me.Button6.Location = New System.Drawing.Point(6, 19)
|
||||
Me.Button6.Name = "Button6"
|
||||
Me.Button6.Size = New System.Drawing.Size(221, 23)
|
||||
Me.Button6.TabIndex = 11
|
||||
Me.Button6.Text = "Find and Extract XML Path Value"
|
||||
Me.Button6.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Form1
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(916, 435)
|
||||
Me.Controls.Add(Me.txtMD5Checksum)
|
||||
Me.Controls.Add(Me.Button4)
|
||||
Me.Controls.Add(Me.Button3)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.GroupBox4)
|
||||
Me.Controls.Add(Me.GroupBox3)
|
||||
Me.Controls.Add(Me.GroupBox2)
|
||||
Me.Controls.Add(Me.GroupBox1)
|
||||
Me.Controls.Add(Me.ListBox1)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Name = "Form1"
|
||||
Me.Text = "Form1"
|
||||
Me.GroupBox1.ResumeLayout(False)
|
||||
Me.GroupBox2.ResumeLayout(False)
|
||||
Me.GroupBox3.ResumeLayout(False)
|
||||
Me.GroupBox3.PerformLayout()
|
||||
Me.GroupBox4.ResumeLayout(False)
|
||||
Me.GroupBox4.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
@ -113,4 +197,11 @@ Partial Class Form1
|
||||
Friend WithEvents Button3 As Button
|
||||
Friend WithEvents Button4 As Button
|
||||
Friend WithEvents txtMD5Checksum As TextBox
|
||||
Friend WithEvents Button5 As Button
|
||||
Friend WithEvents GroupBox1 As GroupBox
|
||||
Friend WithEvents GroupBox2 As GroupBox
|
||||
Friend WithEvents GroupBox3 As GroupBox
|
||||
Friend WithEvents txtPropName As TextBox
|
||||
Friend WithEvents GroupBox4 As GroupBox
|
||||
Friend WithEvents Button6 As Button
|
||||
End Class
|
||||
|
||||
@ -109,7 +109,11 @@ Public Class Form1
|
||||
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
|
||||
My.Settings.Save()
|
||||
Dim result = checkMD5(txtMD5Checksum.Text)
|
||||
MsgBox("Done")
|
||||
If IsNothing(result) Then
|
||||
MsgBox("Could not calculate MD5 Checksum")
|
||||
Else
|
||||
txtMD5Checksum.Text = result
|
||||
End If
|
||||
End Sub
|
||||
Public Function checkMD5(ByVal filename As String) As String
|
||||
Try
|
||||
@ -128,6 +132,29 @@ Public Class Form1
|
||||
Catch ex As Exception
|
||||
Return Nothing
|
||||
End Try
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
|
||||
Process.Start("\\dd-sto01\DD-STO01-A2\SharedObjects\Public\Projekte\Test\Import\ZUGFerD\Email_in")
|
||||
End Sub
|
||||
|
||||
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
|
||||
Dim oResult = OpenFileDialog1.ShowDialog()
|
||||
|
||||
If oResult = DialogResult.OK Then
|
||||
Dim oDoc = _zugferd.ValidateZUGFeRDFile(OpenFileDialog1.FileName)
|
||||
Dim oZUGFERD As CrossIndustryDocumentType = _zugferd.SerializeZUGFeRDDocument(oDoc)
|
||||
Dim oPropName As String = txtPropName.Text
|
||||
|
||||
Try
|
||||
Dim oExtractor = New PropertyValues(_logConfig)
|
||||
Dim oValue As List(Of Object) = oExtractor.GetPropValue(oZUGFERD, oPropName)
|
||||
Dim oFinalValue As List(Of Object) = oExtractor.GetFinalPropValue(oValue)
|
||||
Console.WriteLine()
|
||||
|
||||
Catch ex As Exception
|
||||
MsgBox(ex.Message)
|
||||
End Try
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
@ -8,6 +8,7 @@ Imports System.Text.RegularExpressions
|
||||
Imports System.Xml
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Interfaces
|
||||
Imports DigitalData.Modules.Interfaces.Exceptions
|
||||
Imports DigitalData.Modules.Jobs.Exceptions
|
||||
Imports DigitalData.Modules.Logging
|
||||
Imports FirebirdSql.Data.FirebirdClient
|
||||
@ -20,6 +21,7 @@ Public Class ImportZUGFeRDFiles
|
||||
Public Const ZUGFERD_SUCCESS = "ZUGFeRD Success"
|
||||
Public Const ZUGFERD_EML = "ZUGFeRD Eml"
|
||||
Public Const ZUGFERD_REJECTED_EML = "ZUGFeRD Eml Rejected"
|
||||
Public Const ZUGFERD_ATTACHMENTS = "ZUGFeRD Attachments"
|
||||
|
||||
Private _logger As Logger
|
||||
Private _logConfig As LogConfig
|
||||
@ -226,7 +228,10 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oZUGFeRDCount As Integer = 0
|
||||
' Set the default Move Directory
|
||||
Dim oMoveDirectory As String = args.SuccessDirectory
|
||||
' Create file lists
|
||||
Dim oFileGroupFiles As List(Of FileInfo) = oFileGroup.Value
|
||||
Dim oFileAttachmentFiles As New List(Of FileInfo)
|
||||
|
||||
Dim oFileGroupId As String = oFileGroup.Key
|
||||
Dim oMissingProperties As New List(Of String)
|
||||
Dim oMD5CheckSum As String = String.Empty
|
||||
@ -238,6 +243,9 @@ Public Class ImportZUGFeRDFiles
|
||||
For Each oFile In oFileGroupFiles
|
||||
Dim oDocument As CrossIndustryDocumentType
|
||||
|
||||
' Start a global group counter for each file
|
||||
Dim oGlobalGroupCounter = 0
|
||||
|
||||
' Clear missing properties for the new file
|
||||
oMissingProperties = New List(Of String)
|
||||
oCurrentFileCount += 1
|
||||
@ -245,6 +253,7 @@ Public Class ImportZUGFeRDFiles
|
||||
' Only pdf files are allowed from here on
|
||||
If Not oFile.Name.EndsWith(".pdf") Then
|
||||
_logger.Debug("Skipping non-pdf file {0}", oFile.Name)
|
||||
oFileAttachmentFiles.Add(oFile)
|
||||
Continue For
|
||||
End If
|
||||
|
||||
@ -252,9 +261,23 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
Try
|
||||
oDocument = _zugferd.ExtractZUGFeRDFile(oFile.FullName)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("File is not a valid ZUGFeRD document! Skipping.")
|
||||
Continue For
|
||||
Catch ex As ZUGFeRDExecption
|
||||
Select Case ex.ErrorType
|
||||
Case ZUGFeRDInterface.ErrorType.NoZugferd
|
||||
_logger.Warn("File is not a valid ZUGFeRD document! Skipping.")
|
||||
oFileAttachmentFiles.Add(oFile)
|
||||
Continue For
|
||||
|
||||
Case ZUGFeRDInterface.ErrorType.NoValidZugferd
|
||||
_logger.Warn("File is an Incorrectly formatted ZUGFeRD document!")
|
||||
Throw New InvalidFerdException()
|
||||
|
||||
Case Else
|
||||
_logger.Warn("Unexpected Error occurred while extracting ZUGFeRD Information from file {0}", oFile.FullName)
|
||||
Throw ex
|
||||
End Select
|
||||
|
||||
|
||||
End Try
|
||||
|
||||
oMD5CheckSum = CreateMD5(oFile.FullName)
|
||||
@ -298,7 +321,6 @@ Public Class ImportZUGFeRDFiles
|
||||
Function(Item) Item)
|
||||
|
||||
_logger.Debug("Found {0} properties grouped in {1} group(s)", args.PropertyMap.Count - oDefaultProperties.Count, oGroupedProperties.Count)
|
||||
|
||||
' Iterate through groups to get group scope and group items
|
||||
For Each oGroup In oGroupedProperties
|
||||
Dim oGroupScope As String = oGroup.Key
|
||||
@ -309,8 +331,20 @@ Public Class ImportZUGFeRDFiles
|
||||
|
||||
' get properties as a nested object, see `oPropertyList`
|
||||
For Each oProperty As KeyValuePair(Of String, XmlItemProperty) In oGroup
|
||||
Dim oPropertyValues As List(Of Object) = oPropertyExtractor.GetPropValue(oDocument, oProperty.Key)
|
||||
Dim oPropertyValues As List(Of Object)
|
||||
|
||||
Try
|
||||
oPropertyValues = oPropertyExtractor.GetPropValue(oDocument, oProperty.Key)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Unknown error occurred while fetching property {0} in group {1}:", oProperty.Value.Description, oGroupScope)
|
||||
_logger.Error(ex)
|
||||
oPropertyValues = New List(Of Object)
|
||||
End Try
|
||||
|
||||
' Flatten result value
|
||||
oPropertyValues = oPropertyExtractor.GetFinalPropValue(oPropertyValues)
|
||||
|
||||
' Add to list
|
||||
oPropertyList.Add(oProperty.Value, oPropertyValues)
|
||||
|
||||
' check the first batch of values to determine the row count
|
||||
@ -319,46 +353,6 @@ Public Class ImportZUGFeRDFiles
|
||||
End If
|
||||
Next
|
||||
|
||||
' check for rows that are empty in every column
|
||||
' this happens when a grouped row is not filled
|
||||
' e.g. a row in a invoice that is just a note
|
||||
_logger.Debug("Done Fetching Property values.")
|
||||
Dim oIndexesToRemove As New List(Of Integer)
|
||||
|
||||
For oRowIndex = 0 To oRowCount - 1
|
||||
Dim oColumnIsEmpty = False
|
||||
|
||||
For Each oRow In oPropertyList
|
||||
Dim oValue As List(Of Object) = oRow.Value
|
||||
'Dim oValue As List(Of Object) = oRow.Value.Item(oRowIndex)
|
||||
oColumnIsEmpty = oValue.Count = 0
|
||||
Next
|
||||
|
||||
If oColumnIsEmpty Then
|
||||
oIndexesToRemove.Add(oRowIndex)
|
||||
End If
|
||||
Next
|
||||
|
||||
_logger.Debug("Removing {0} empty rows.", oIndexesToRemove)
|
||||
|
||||
|
||||
' order indexes to remove descending to avoid indexOutOfRange errors
|
||||
If oIndexesToRemove.Count > 0 Then
|
||||
oIndexesToRemove = oIndexesToRemove.
|
||||
OrderByDescending(Function(oIndex) oIndex).
|
||||
ToList()
|
||||
End If
|
||||
|
||||
' now remove all empty rows.
|
||||
For Each oIndex In oIndexesToRemove
|
||||
For Each oRow In oPropertyList
|
||||
oRow.Value.RemoveAt(oIndex)
|
||||
Next
|
||||
Next
|
||||
|
||||
' decrease row count by rows removed
|
||||
oRowCount -= oIndexesToRemove.Count
|
||||
|
||||
' Structure of oPropertyList
|
||||
' [ # Propertyname # Row 1 # Row 2
|
||||
' PositionsMenge: [BilledQuantity1, BilledQuantity2, ...],
|
||||
@ -371,21 +365,13 @@ Public Class ImportZUGFeRDFiles
|
||||
For Each oColumn As KeyValuePair(Of XmlItemProperty, List(Of Object)) In oPropertyList
|
||||
Dim oTableName As String = oColumn.Key.TableName
|
||||
Dim oPropertyDescription As String = oColumn.Key.Description
|
||||
Dim oPropertyValue = oColumn.Value.Item(oRowIndex)
|
||||
Dim oRowCounter = oRowIndex + 1
|
||||
Dim oRowCounter = oRowIndex + oGlobalGroupCounter + 1
|
||||
|
||||
' Returns nothing if oColumn.Value contains an empty list
|
||||
Dim oPropertyValue = oColumn.Value.ElementAtOrDefault(oRowIndex)
|
||||
|
||||
_logger.Debug("Processing property {0}.", oPropertyDescription)
|
||||
|
||||
If TypeOf oPropertyValue Is List(Of Object) Then
|
||||
Select Case oPropertyValue.Count
|
||||
Case 0
|
||||
oPropertyValue = String.Empty
|
||||
Case Else
|
||||
Dim oList As List(Of Object) = DirectCast(oPropertyValue, List(Of Object))
|
||||
oPropertyValue = oList.Item(0)
|
||||
End Select
|
||||
End If
|
||||
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If oColumn.Key.IsRequired Then
|
||||
_logger.Warn("Property {0} is empty or not found but was required. Continuing with Empty String.", oPropertyDescription)
|
||||
@ -414,30 +400,47 @@ Public Class ImportZUGFeRDFiles
|
||||
_firebird.ExecuteNonQueryWithConnection(oCommand, oConnection, Firebird.TransactionMode.ExternalTransaction, oTransaction)
|
||||
Next
|
||||
Next
|
||||
|
||||
oGlobalGroupCounter += oRowCount
|
||||
Next
|
||||
|
||||
' Iterate through default properties
|
||||
For Each Item As KeyValuePair(Of String, XmlItemProperty) In oDefaultProperties
|
||||
Dim oPropertyValueList As List(Of Object) = oPropertyExtractor.GetPropValue(oDocument, Item.Key)
|
||||
Dim oPropertyValueList As List(Of Object)
|
||||
Dim oPropertyDescription As String = Item.Value.Description
|
||||
Dim oPropertyValue As Object = Nothing
|
||||
|
||||
If IsNothing(oPropertyValueList) Then
|
||||
oPropertyValue = Nothing
|
||||
ElseIf TypeOf oPropertyValueList Is List(Of Object) Then
|
||||
Select Case oPropertyValueList.Count
|
||||
Case 0
|
||||
oPropertyValue = Nothing
|
||||
Case Else
|
||||
oPropertyValue = oPropertyValueList.First()
|
||||
Try
|
||||
oPropertyValueList = oPropertyExtractor.GetPropValue(oDocument, Item.Key)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Unknown error occurred while fetching property {0} in group {1}:", oPropertyDescription, Item.Value.GroupScope)
|
||||
_logger.Error(ex)
|
||||
oPropertyValueList = New List(Of Object)
|
||||
End Try
|
||||
|
||||
' This should hopefully show config errors
|
||||
If TypeOf oPropertyValue Is List(Of Object) Then
|
||||
_logger.Warn("Property with Description {0} may be configured incorrectly", oPropertyDescription)
|
||||
Try
|
||||
If IsNothing(oPropertyValueList) Then
|
||||
oPropertyValue = Nothing
|
||||
ElseIf TypeOf oPropertyValueList Is List(Of Object) Then
|
||||
Select Case oPropertyValueList.Count
|
||||
Case 0
|
||||
oPropertyValue = Nothing
|
||||
End If
|
||||
End Select
|
||||
End If
|
||||
Case Else
|
||||
Dim oList As List(Of Object) = DirectCast(oPropertyValueList, List(Of Object))
|
||||
oPropertyValue = oList.Item(0)
|
||||
|
||||
' This should hopefully show config errors
|
||||
If TypeOf oPropertyValue Is List(Of Object) Then
|
||||
_logger.Warn("Property with Description {0} may be configured incorrectly", oPropertyDescription)
|
||||
oPropertyValue = Nothing
|
||||
End If
|
||||
End Select
|
||||
End If
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Unknown error occurred while processing property {0}:", oPropertyDescription)
|
||||
_logger.Error(ex)
|
||||
oPropertyValue = Nothing
|
||||
End Try
|
||||
|
||||
If IsNothing(oPropertyValue) OrElse String.IsNullOrEmpty(oPropertyValue) Then
|
||||
If Item.Value.IsRequired Then
|
||||
@ -493,6 +496,20 @@ Public Class ImportZUGFeRDFiles
|
||||
Dim oBody = "<p>The invoice attached to your email has already been processed in our system.</p>"
|
||||
Dim oEmailData = MoveAndRenameEmailToRejected(args, oFileGroupId)
|
||||
AddToEmailQueue(oFileGroupId, oBody, oEmailData)
|
||||
|
||||
Catch ex As InvalidFerdException
|
||||
_logger.Error(ex)
|
||||
|
||||
oMoveDirectory = args.ErrorDirectory
|
||||
|
||||
Dim oBody = """
|
||||
<p>Your email contained a ZUGFeRD document but it was incorrectly formatted.</p>
|
||||
<p>Possible reasons include:<ul>
|
||||
<li>Amount value has incorrect format (25,01 instead of 25.01)</li>
|
||||
</ul></p>
|
||||
"""
|
||||
Dim oEmailData = MoveAndRenameEmailToRejected(args, oFileGroupId)
|
||||
AddToEmailQueue(oFileGroupId, oBody, oEmailData)
|
||||
Catch ex As TooMuchFerdsException
|
||||
_logger.Error(ex)
|
||||
|
||||
@ -526,14 +543,16 @@ Public Class ImportZUGFeRDFiles
|
||||
oConnection.Close()
|
||||
|
||||
' Move all files of the current group
|
||||
For Each oFile In oFileGroupFiles
|
||||
_filesystem.MoveTo(oFile.FullName, oMoveDirectory)
|
||||
_logger.Info("Finished processing file {0}", oFile.Name)
|
||||
_logger.Info("File moved to {0}", oMoveDirectory)
|
||||
Next
|
||||
|
||||
_logger.Info("Finished processing file group {0}", oFileGroupId)
|
||||
_logger.EndBlock()
|
||||
Try
|
||||
MoveFiles(args, oFileGroupFiles, oFileAttachmentFiles, oMoveDirectory)
|
||||
_logger.Info("Finished processing file group {0}", oFileGroupId)
|
||||
Catch ex As Exception
|
||||
_logger.Warn("Could not move files!")
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
Finally
|
||||
_logger.EndBlock()
|
||||
End Try
|
||||
End Try
|
||||
Next
|
||||
End If
|
||||
@ -546,6 +565,25 @@ Public Class ImportZUGFeRDFiles
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub MoveFiles(Args As WorkerArgs, Files As List(Of FileInfo), AttachmentFiles As List(Of FileInfo), MoveDirectory As String)
|
||||
For Each oFile In Files
|
||||
Dim oFinalMoveDirectory As String = MoveDirectory
|
||||
|
||||
If AttachmentFiles.Contains(oFile) Then
|
||||
oFinalMoveDirectory = Path.Combine(MoveDirectory, Args.AttachmentsSubDirectory)
|
||||
|
||||
If Not Directory.Exists(oFinalMoveDirectory) Then
|
||||
Directory.CreateDirectory(oFinalMoveDirectory)
|
||||
End If
|
||||
End If
|
||||
|
||||
_filesystem.MoveTo(oFile.FullName, oFinalMoveDirectory)
|
||||
_logger.Info("Finished processing file {0}", oFile.Name)
|
||||
_logger.Info("File moved to {0}", oFinalMoveDirectory)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
|
||||
Private Function CreateBodyForMissingProperties(OriginalFilename As String, MissingProperties As List(Of String))
|
||||
Dim oBody = $"<p>The following file is not ZUGFeRD-compliant: {OriginalFilename}</p>"
|
||||
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
Imports System.Collections.Generic
|
||||
Imports System.Linq
|
||||
Imports System.Reflection
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports DigitalData.Modules.Logging
|
||||
@ -59,7 +60,7 @@ Public Class PropertyValues
|
||||
|
||||
If IsArray(Obj) And Not oHasIndex Then
|
||||
Dim oCurrentPart As String = oPart
|
||||
Dim oSplitString As String() = New String() {"." & oCurrentPart & "."}
|
||||
Dim oSplitString As String() = New String() {oCurrentPart & "."}
|
||||
Dim oPathFragments = PropertyName.Split(oSplitString, StringSplitOptions.None)
|
||||
Dim oResults As New List(Of Object)
|
||||
|
||||
@ -71,10 +72,6 @@ Public Class PropertyValues
|
||||
For Each oArrayItem In Obj
|
||||
Dim oResult As List(Of Object) = GetPropValue(oArrayItem, oPathFragments(1))
|
||||
|
||||
'If Not IsNothing(oResult) AndAlso oResult.Count > 0 Then
|
||||
' oResults.Add(oResult.Item(0))
|
||||
'End If
|
||||
|
||||
If Not IsNothing(oResult) Then
|
||||
oResults.Add(oResult)
|
||||
End If
|
||||
@ -87,6 +84,38 @@ Public Class PropertyValues
|
||||
Return New List(Of Object) From {Obj}
|
||||
End Function
|
||||
|
||||
Public Function GetFinalPropValue(List As List(Of Object)) As List(Of Object)
|
||||
Dim oResult As New List(Of Object)
|
||||
|
||||
For Each Item In List
|
||||
Dim oItemValue = DoGetFinalPropValue(Item)
|
||||
|
||||
If Not IsNothing(oItemValue) Then
|
||||
oResult.Add(oItemValue)
|
||||
End If
|
||||
Next
|
||||
|
||||
Return oResult
|
||||
End Function
|
||||
|
||||
Private Function DoGetFinalPropValue(Value As Object) As String
|
||||
If TypeOf Value Is List(Of Object) Then
|
||||
Dim oList = DirectCast(Value, List(Of Object))
|
||||
Dim oCount = oList.Count
|
||||
|
||||
Select Case oCount
|
||||
Case 0
|
||||
Return Nothing
|
||||
Case Else
|
||||
Return DoGetFinalPropValue(oList.First())
|
||||
End Select
|
||||
|
||||
Return DoGetFinalPropValue(Value)
|
||||
Else
|
||||
Return Value.ToString
|
||||
End If
|
||||
End Function
|
||||
|
||||
Private Function GetIndex(Prop As String) As Integer
|
||||
If Regex.IsMatch(Prop, _indexPattern) Then
|
||||
Dim oMatch = _indexRegex.Match(Prop)
|
||||
|
||||
@ -6,6 +6,7 @@ Public Class WorkerArgs
|
||||
Public ErrorDirectory As String
|
||||
Public OriginalEmailDirectory As String
|
||||
Public RejectedEmailDirectory As String
|
||||
Public AttachmentsSubDirectory As String
|
||||
Public PropertyMap As Dictionary(Of String, XmlItemProperty)
|
||||
Public InsertIntoSQLServer As Boolean
|
||||
|
||||
@ -15,6 +16,7 @@ Public Class WorkerArgs
|
||||
ErrorDirectory = Nothing
|
||||
OriginalEmailDirectory = Nothing
|
||||
RejectedEmailDirectory = Nothing
|
||||
AttachmentsSubDirectory = Nothing
|
||||
PropertyMap = New Dictionary(Of String, XmlItemProperty)
|
||||
InsertIntoSQLServer = False
|
||||
End Sub
|
||||
|
||||
@ -21,6 +21,14 @@ Public Class Exceptions
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class InvalidFerdException
|
||||
Inherits ApplicationException
|
||||
|
||||
Public Sub New()
|
||||
MyBase.New("ZUGFeRD document found but was not formatted correctly")
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
Public Class NoFerdsException
|
||||
Inherits ApplicationException
|
||||
|
||||
|
||||
6
LoggerDiag/App.config
Normal file
6
LoggerDiag/App.config
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
||||
</startup>
|
||||
</configuration>
|
||||
3
LoggerDiag/DummyConfig.vb
Normal file
3
LoggerDiag/DummyConfig.vb
Normal file
@ -0,0 +1,3 @@
|
||||
Public Class DummyConfig
|
||||
Public SomeSetting As String = "Default_Value"
|
||||
End Class
|
||||
@ -4,30 +4,34 @@
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{836C9ADE-E04E-4E1E-B17A-201E68014790}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<RootNamespace>DigitalData.Modules.Variables</RootNamespace>
|
||||
<AssemblyName>DigitalData.Modules.Variables</AssemblyName>
|
||||
<ProjectGuid>{3D437957-B90B-4D8F-9219-6D19B0C90994}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<StartupObject>MonoDiag.My.MyApplication</StartupObject>
|
||||
<RootNamespace>MonoDiag</RootNamespace>
|
||||
<AssemblyName>MonoDiag</AssemblyName>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<MyType>Windows</MyType>
|
||||
<MyType>WindowsForms</MyType>
|
||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<DefineDebug>true</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Variables.xml</DocumentationFile>
|
||||
<DocumentationFile>MonoDiag.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<DefineDebug>false</DefineDebug>
|
||||
<DefineTrace>true</DefineTrace>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DocumentationFile>DigitalData.Modules.Variables.xml</DocumentationFile>
|
||||
<DocumentationFile>MonoDiag.xml</DocumentationFile>
|
||||
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
@ -43,8 +47,27 @@
|
||||
<OptionInfer>On</OptionInfer>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="DevExpress.Data.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.Printing.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.Utils.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||
<Reference Include="DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="DevExpress.XtraPrinting.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NLog.4.5.11\lib\net45\NLog.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.IO.Compression" />
|
||||
<Reference Include="System.Runtime.Serialization" />
|
||||
<Reference Include="System.ServiceModel" />
|
||||
<Reference Include="System.Transactions" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
@ -57,14 +80,22 @@
|
||||
<Import Include="System.Collections" />
|
||||
<Import Include="System.Collections.Generic" />
|
||||
<Import Include="System.Data" />
|
||||
<Import Include="System.Drawing" />
|
||||
<Import Include="System.Diagnostics" />
|
||||
<Import Include="System.Windows.Forms" />
|
||||
<Import Include="System.Linq" />
|
||||
<Import Include="System.Xml.Linq" />
|
||||
<Import Include="System.Threading.Tasks" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CurrentApplication.vb" />
|
||||
<Compile Include="CurrentUser.vb" />
|
||||
<Compile Include="DummyConfig.vb" />
|
||||
<Compile Include="frmMain.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmMain.Designer.vb">
|
||||
<DependentUpon>frmMain.vb</DependentUpon>
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||
<Compile Include="My Project\Application.Designer.vb">
|
||||
<AutoGen>True</AutoGen>
|
||||
@ -82,6 +113,10 @@
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="frmMain.resx">
|
||||
<DependentUpon>frmMain.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="My Project\licenses.licx" />
|
||||
<EmbeddedResource Include="My Project\Resources.resx">
|
||||
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
|
||||
@ -99,6 +134,18 @@
|
||||
<CustomToolNamespace>My</CustomToolNamespace>
|
||||
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
|
||||
</None>
|
||||
<None Include="App.config" />
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Modules.Config\Config.vbproj">
|
||||
<Project>{44982f9b-6116-44e2-85d0-f39650b1ef99}</Project>
|
||||
<Name>Config</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
|
||||
<Project>{903b2d7d-3b80-4be9-8713-7447b704e1b0}</Project>
|
||||
<Name>Logging</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||
</Project>
|
||||
38
LoggerDiag/My Project/Application.Designer.vb
generated
Normal file
38
LoggerDiag/My Project/Application.Designer.vb
generated
Normal file
@ -0,0 +1,38 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' Dieser Code wurde von einem Tool generiert.
|
||||
' Laufzeitversion:4.0.30319.42000
|
||||
'
|
||||
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
' der Code erneut generiert wird.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
|
||||
Namespace My
|
||||
|
||||
'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten
|
||||
' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer.
|
||||
' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
|
||||
' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
|
||||
'
|
||||
Partial Friend Class MyApplication
|
||||
|
||||
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
|
||||
Public Sub New()
|
||||
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
|
||||
Me.IsSingleInstance = false
|
||||
Me.EnableVisualStyles = true
|
||||
Me.SaveMySettingsOnExit = true
|
||||
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
|
||||
End Sub
|
||||
|
||||
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
|
||||
Protected Overrides Sub OnCreateMainForm()
|
||||
Me.MainForm = Global.MonoDiag.frmMain
|
||||
End Sub
|
||||
End Class
|
||||
End Namespace
|
||||
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
|
||||
<MySubMain>false</MySubMain>
|
||||
<MySubMain>true</MySubMain>
|
||||
<MainForm>frmMain</MainForm>
|
||||
<SingleInstance>false</SingleInstance>
|
||||
<ShutdownMode>0</ShutdownMode>
|
||||
<EnableVisualStyles>true</EnableVisualStyles>
|
||||
<AuthenticationMode>0</AuthenticationMode>
|
||||
<ApplicationType>1</ApplicationType>
|
||||
<SaveMySettingsOnExit>true</SaveMySettingsOnExit>
|
||||
</MyApplicationData>
|
||||
</MyApplicationData>
|
||||
@ -8,17 +8,17 @@ Imports System.Runtime.InteropServices
|
||||
|
||||
' Werte der Assemblyattribute überprüfen
|
||||
|
||||
<Assembly: AssemblyTitle("Modules.Variables")>
|
||||
<Assembly: AssemblyTitle("LoggerDiag")>
|
||||
<Assembly: AssemblyDescription("")>
|
||||
<Assembly: AssemblyCompany("")>
|
||||
<Assembly: AssemblyProduct("Modules.Variables")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2018")>
|
||||
<Assembly: AssemblyProduct("LoggerDiag")>
|
||||
<Assembly: AssemblyCopyright("Copyright © 2019")>
|
||||
<Assembly: AssemblyTrademark("")>
|
||||
|
||||
<Assembly: ComVisible(False)>
|
||||
|
||||
'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
|
||||
<Assembly: Guid("eb0a4cd7-0b0e-49dc-89a6-6b25b9fff433")>
|
||||
<Assembly: Guid("23ecfd3e-64fb-4eea-9cbe-220cf29dac1b")>
|
||||
|
||||
' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
|
||||
'
|
||||
@ -39,7 +39,7 @@ Namespace My.Resources
|
||||
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
|
||||
Get
|
||||
If Object.ReferenceEquals(resourceMan, Nothing) Then
|
||||
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Modules.Variables.Resources", GetType(Resources).Assembly)
|
||||
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("MonoDiag.Resources", GetType(Resources).Assembly)
|
||||
resourceMan = temp
|
||||
End If
|
||||
Return resourceMan
|
||||
@ -64,9 +64,9 @@ Namespace My
|
||||
Friend Module MySettingsProperty
|
||||
|
||||
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
|
||||
Friend ReadOnly Property Settings() As Global.DigitalData.Modules.Variables.My.MySettings
|
||||
Friend ReadOnly Property Settings() As Global.MonoDiag.My.MySettings
|
||||
Get
|
||||
Return Global.DigitalData.Modules.Variables.My.MySettings.Default
|
||||
Return Global.MonoDiag.My.MySettings.Default
|
||||
End Get
|
||||
End Property
|
||||
End Module
|
||||
1
LoggerDiag/My Project/licenses.licx
Normal file
1
LoggerDiag/My Project/licenses.licx
Normal file
@ -0,0 +1 @@
|
||||
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
|
||||
122
LoggerDiag/frmMain.Designer.vb
generated
Normal file
122
LoggerDiag/frmMain.Designer.vb
generated
Normal file
@ -0,0 +1,122 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmMain
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Wird vom Windows Form-Designer benötigt.
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
|
||||
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
|
||||
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.GridControlLogs = New DevExpress.XtraGrid.GridControl()
|
||||
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
|
||||
Me.btnRefresh = New System.Windows.Forms.Button()
|
||||
Me.Button1 = New System.Windows.Forms.Button()
|
||||
Me.TextBox1 = New System.Windows.Forms.TextBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.Button2 = New System.Windows.Forms.Button()
|
||||
CType(Me.GridControlLogs, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'GridControlLogs
|
||||
'
|
||||
Me.GridControlLogs.Dock = System.Windows.Forms.DockStyle.Right
|
||||
Me.GridControlLogs.Location = New System.Drawing.Point(251, 0)
|
||||
Me.GridControlLogs.MainView = Me.GridView1
|
||||
Me.GridControlLogs.Name = "GridControlLogs"
|
||||
Me.GridControlLogs.Size = New System.Drawing.Size(888, 679)
|
||||
Me.GridControlLogs.TabIndex = 0
|
||||
Me.GridControlLogs.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
|
||||
'
|
||||
'GridView1
|
||||
'
|
||||
Me.GridView1.GridControl = Me.GridControlLogs
|
||||
Me.GridView1.Name = "GridView1"
|
||||
'
|
||||
'btnRefresh
|
||||
'
|
||||
Me.btnRefresh.Location = New System.Drawing.Point(12, 12)
|
||||
Me.btnRefresh.Name = "btnRefresh"
|
||||
Me.btnRefresh.Size = New System.Drawing.Size(233, 35)
|
||||
Me.btnRefresh.TabIndex = 1
|
||||
Me.btnRefresh.Text = "Refresh Logs"
|
||||
Me.btnRefresh.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Button1
|
||||
'
|
||||
Me.Button1.Location = New System.Drawing.Point(12, 53)
|
||||
Me.Button1.Name = "Button1"
|
||||
Me.Button1.Size = New System.Drawing.Size(233, 32)
|
||||
Me.Button1.TabIndex = 2
|
||||
Me.Button1.Text = "Read Config"
|
||||
Me.Button1.UseVisualStyleBackColor = True
|
||||
'
|
||||
'TextBox1
|
||||
'
|
||||
Me.TextBox1.Location = New System.Drawing.Point(12, 143)
|
||||
Me.TextBox1.Name = "TextBox1"
|
||||
Me.TextBox1.Size = New System.Drawing.Size(233, 20)
|
||||
Me.TextBox1.TabIndex = 3
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(9, 127)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(109, 13)
|
||||
Me.Label1.TabIndex = 4
|
||||
Me.Label1.Text = "Value of Test-Setting:"
|
||||
'
|
||||
'Button2
|
||||
'
|
||||
Me.Button2.Location = New System.Drawing.Point(12, 91)
|
||||
Me.Button2.Name = "Button2"
|
||||
Me.Button2.Size = New System.Drawing.Size(233, 33)
|
||||
Me.Button2.TabIndex = 5
|
||||
Me.Button2.Text = "Save Config"
|
||||
Me.Button2.UseVisualStyleBackColor = True
|
||||
'
|
||||
'frmMain
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(1139, 679)
|
||||
Me.Controls.Add(Me.Button2)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.TextBox1)
|
||||
Me.Controls.Add(Me.Button1)
|
||||
Me.Controls.Add(Me.btnRefresh)
|
||||
Me.Controls.Add(Me.GridControlLogs)
|
||||
Me.MinimumSize = New System.Drawing.Size(1155, 718)
|
||||
Me.Name = "frmMain"
|
||||
Me.Text = "Digital Data Diagnose"
|
||||
CType(Me.GridControlLogs, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
|
||||
Friend WithEvents GridControlLogs As DevExpress.XtraGrid.GridControl
|
||||
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView
|
||||
Friend WithEvents btnRefresh As Button
|
||||
Friend WithEvents Button1 As Button
|
||||
Friend WithEvents TextBox1 As TextBox
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents Button2 As Button
|
||||
End Class
|
||||
120
LoggerDiag/frmMain.resx
Normal file
120
LoggerDiag/frmMain.resx
Normal 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>
|
||||
62
LoggerDiag/frmMain.vb
Normal file
62
LoggerDiag/frmMain.vb
Normal file
@ -0,0 +1,62 @@
|
||||
Imports System.IO
|
||||
Imports DigitalData.Modules.Config
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Public Class frmMain
|
||||
Public LogConfig As LogConfig
|
||||
Public Logger As Logger
|
||||
Public Config As ConfigManager(Of DummyConfig)
|
||||
|
||||
|
||||
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
LogConfig = New LogConfig(LogConfig.PathType.AppData) With {
|
||||
.Debug = True
|
||||
}
|
||||
|
||||
Dim productName As String = My.Application.Info.ProductName
|
||||
Dim companyName As String = My.Application.Info.CompanyName
|
||||
|
||||
Dim appDataDir = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
|
||||
Dim basePath = Path.Combine(appDataDir, companyName, productName, "Log")
|
||||
|
||||
Logger = LogConfig.GetLogger()
|
||||
Logger.Info("Initializing Config")
|
||||
Logger.Info("Logging Path: {0}", basePath)
|
||||
Logger.Info("UserConfig.xml Path: {0}", Application.UserAppDataPath)
|
||||
Logger.Info("ComputerConfig.xml Path: {0}", Application.CommonAppDataPath)
|
||||
|
||||
Config = New ConfigManager(Of DummyConfig)(LogConfig, Application.UserAppDataPath, Application.CommonAppDataPath)
|
||||
|
||||
RefreshLogs()
|
||||
End Sub
|
||||
|
||||
Private Sub RefreshLogs()
|
||||
GridControlLogs.DataSource = LogConfig.Logs
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnRefresh.Click
|
||||
RefreshLogs()
|
||||
End Sub
|
||||
|
||||
Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
|
||||
Try
|
||||
Logger.Info("Value of TestSetting is: {0}", Config.Config.SomeSetting)
|
||||
TextBox1.Text = Config.Config.SomeSetting
|
||||
RefreshLogs()
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
RefreshLogs()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
||||
Try
|
||||
Config.Config.SomeSetting = TextBox1.Text
|
||||
Config.Save()
|
||||
RefreshLogs()
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
RefreshLogs()
|
||||
End Try
|
||||
End Sub
|
||||
End Class
|
||||
4
LoggerDiag/packages.config
Normal file
4
LoggerDiag/packages.config
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NLog" version="4.5.11" targetFramework="net461" />
|
||||
</packages>
|
||||
@ -33,6 +33,18 @@ Public Class ConfigManager(Of T)
|
||||
''' <returns></returns>
|
||||
Public ReadOnly Property Config As T
|
||||
|
||||
Public ReadOnly Property UserConfigPath As String
|
||||
Get
|
||||
Return _UserPath
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property ComputerConfigPath As String
|
||||
Get
|
||||
Return _ComputerPath
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Creates a new instance of the ConfigManager
|
||||
''' </summary>
|
||||
@ -112,7 +124,9 @@ Public Class ConfigManager(Of T)
|
||||
Dim oType As Type = GetType(T)
|
||||
Dim oExcludedAttributeTypes = IIf(IsNothing(ExcludedAttributeTypes), New List(Of Type), ExcludedAttributeTypes)
|
||||
Dim oProperties = oType.GetProperties().
|
||||
Where(Function(p) p.CanRead And p.CanWrite).
|
||||
Where(Function(p)
|
||||
Return p.CanRead And p.CanWrite
|
||||
End Function).
|
||||
Where(Function(p)
|
||||
For Each oAttributeType As Type In oExcludedAttributeTypes
|
||||
If Attribute.IsDefined(p, oAttributeType) Then
|
||||
@ -164,6 +178,7 @@ Public Class ConfigManager(Of T)
|
||||
_Logger.Warn("Computer config could not be loaded!")
|
||||
End Try
|
||||
Else
|
||||
_Logger.Debug("Computer config does not exist.")
|
||||
_ForceUserConfig = True
|
||||
End If
|
||||
|
||||
@ -190,6 +205,8 @@ Public Class ConfigManager(Of T)
|
||||
_Logger.Error(ex)
|
||||
_Logger.Warn("User config could not be loaded!")
|
||||
End Try
|
||||
Else
|
||||
_Logger.Debug("User config does not exist.")
|
||||
End If
|
||||
|
||||
Return Config
|
||||
@ -246,6 +263,7 @@ Public Class ConfigManager(Of T)
|
||||
oFileStream.Flush()
|
||||
End Using
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Could not save config to {0}", Path)
|
||||
_Logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
@ -273,6 +291,7 @@ Public Class ConfigManager(Of T)
|
||||
|
||||
Return oConfig
|
||||
Catch ex As Exception
|
||||
_Logger.Warn("Could not load config from {0}", Path)
|
||||
_Logger.Error(ex)
|
||||
Throw ex
|
||||
End Try
|
||||
|
||||
@ -14,7 +14,8 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
Public Enum ErrorType
|
||||
NoValidFile
|
||||
ExtractionFailed
|
||||
NoZugferd
|
||||
NoValidZugferd
|
||||
End Enum
|
||||
|
||||
Public Sub New(LogConfig As LogConfig)
|
||||
@ -33,7 +34,7 @@ Public Class ZUGFeRDInterface
|
||||
Dim oXmlDocument = ValidateZUGFeRDFile(Path)
|
||||
|
||||
If IsNothing(oXmlDocument) Then
|
||||
Throw New ZUGFeRDExecption(ErrorType.ExtractionFailed, "Datei ist kein gültiges ZUGFeRD Format.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei.")
|
||||
End If
|
||||
|
||||
Return SerializeZUGFeRDDocument(oXmlDocument)
|
||||
@ -70,7 +71,7 @@ Public Class ZUGFeRDInterface
|
||||
|
||||
If Not oProcessOutput.ToLower.Contains(ZUGFERD_CONVERTER_SUCCESS_MESSAGE.ToLower) Then
|
||||
_logger.Warn("File {0} is not a valid ZUGFeRD File!", Path)
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidFile, "Datei ist kein gültiges ZUGFeRD Format.")
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoZugferd, "Datei ist keine ZUGFeRD Datei.")
|
||||
End If
|
||||
|
||||
Try
|
||||
@ -93,7 +94,7 @@ Public Class ZUGFeRDInterface
|
||||
Return oSerializer.Deserialize(oReader)
|
||||
Catch ex As Exception
|
||||
_logger.Error(ex)
|
||||
Throw ex
|
||||
Throw New ZUGFeRDExecption(ErrorType.NoValidZugferd, "Datei ist eine ungültige ZUGFeRD Datei.")
|
||||
End Try
|
||||
End Function
|
||||
End Class
|
||||
|
||||
@ -4,7 +4,7 @@ Imports NLog.Config
|
||||
Imports NLog.Targets
|
||||
|
||||
''' <module>LogConfig</module>
|
||||
''' <version>0.0.0.7</version>
|
||||
''' <version>0.0.1.0</version>
|
||||
''' <date>02.10.2018</date>
|
||||
''' <summary>
|
||||
''' Module that writes file-logs to different locations:
|
||||
@ -100,6 +100,7 @@ Public Class LogConfig
|
||||
Private Const TARGET_ERROR As String = "errorTarget"
|
||||
Private Const TARGET_DETAIL As String = "detailTarget"
|
||||
Private Const TARGET_DEBUG As String = "debugTarget"
|
||||
Private Const TARGET_MEMORY As String = "memoryTarget"
|
||||
|
||||
Private Const DATE_FORMAT_LONG As String = "${longdate}"
|
||||
Private Const DATE_FORMAT_DEFAULT As String = "${date:format=yyyy-MM-dd HH\:mm\:ss}"
|
||||
@ -110,6 +111,7 @@ Public Class LogConfig
|
||||
Private Const LOG_FORMAT_DEFAULT As String = LOG_FORMAT_BASE & " >> ${message}"
|
||||
Private Const LOG_FORMAT_EXCEPTION As String = LOG_FORMAT_BASE & " >> ${exception:format=Message}${newline}${exception:format=StackTrace}"
|
||||
Private Const LOG_FORMAT_DEBUG As String = LOG_FORMAT_BASE_LONG_DATE & " >> ${message}"
|
||||
Private Const LOG_FORMAT_MEMORY As String = LOG_FORMAT_BASE_LONG_DATE & " >> ${message}${newline}${exception:format=Message}${newline}${exception:format=StackTrace}"
|
||||
|
||||
Private Const FOLDER_NAME_LOG = "Log"
|
||||
Private Const FILE_NAME_ACCESS_TEST = "accessTest.txt"
|
||||
@ -158,6 +160,22 @@ Public Class LogConfig
|
||||
End Set
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Returns Logs in Memory as List(Of String) if Debug is enabled
|
||||
''' Returns an empty list if debug is disabled
|
||||
''' </summary>
|
||||
''' <returns>A list of log messages</returns>
|
||||
Public ReadOnly Property Logs As List(Of String)
|
||||
Get
|
||||
If Debug = False Then
|
||||
Return New List(Of String)
|
||||
End If
|
||||
|
||||
Dim oTarget = config.FindTargetByName(Of MemoryTarget)(TARGET_MEMORY)
|
||||
Return oTarget?.Logs.ToList()
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Initializes a new LogConfig object with a logpath and optinally a filename-suffix.
|
||||
''' </summary>
|
||||
@ -239,6 +257,14 @@ Public Class LogConfig
|
||||
Return LogFactory.GetLogger(Of Logger)(ClassName)
|
||||
End Function
|
||||
|
||||
''' <summary>
|
||||
''' Clears the internal log
|
||||
''' </summary>
|
||||
Public Sub ClearLogs()
|
||||
Dim oTarget = config.FindTargetByName(Of MemoryTarget)(TARGET_MEMORY)
|
||||
oTarget?.Logs.Clear()
|
||||
End Sub
|
||||
|
||||
''' <summary>
|
||||
''' Gets the fully qualified name of the class invoking the calling method,
|
||||
''' including the namespace but Not the assembly.
|
||||
@ -288,6 +314,7 @@ Public Class LogConfig
|
||||
config.AddTarget(TARGET_ERROR, GetErrorLogTarget(basePath))
|
||||
config.AddTarget(TARGET_DEFAULT, GetDefaultLogTarget(basePath))
|
||||
config.AddTarget(TARGET_DEBUG, GetDebugLogTarget(basePath))
|
||||
config.AddTarget(TARGET_MEMORY, GetMemoryDebugTarget())
|
||||
|
||||
' Add default rules
|
||||
AddDefaultRules(config)
|
||||
@ -333,6 +360,7 @@ Public Class LogConfig
|
||||
' Add debug rule, if configured
|
||||
If Debug Then
|
||||
config.AddRuleForOneLevel(LogLevel.Debug, TARGET_DEBUG)
|
||||
config.AddRuleForAllLevels(TARGET_MEMORY)
|
||||
End If
|
||||
|
||||
' Reload all running loggers
|
||||
@ -402,5 +430,17 @@ Public Class LogConfig
|
||||
|
||||
Return debugLog
|
||||
End Function
|
||||
|
||||
Private Function GetMemoryDebugTarget() As MemoryTarget
|
||||
Dim memoryLog As New MemoryTarget() With {
|
||||
.Layout = LOG_FORMAT_MEMORY,
|
||||
.Name = TARGET_MEMORY,
|
||||
.OptimizeBufferReuse = True
|
||||
}
|
||||
|
||||
Return memoryLog
|
||||
End Function
|
||||
|
||||
|
||||
#End Region
|
||||
End Class
|
||||
|
||||
@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
||||
' übernehmen, indem Sie "*" eingeben:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("0.0.0.7")>
|
||||
<Assembly: AssemblyVersion("0.0.1.1")>
|
||||
<Assembly: AssemblyFileVersion("1.0.0.0")>
|
||||
|
||||
@ -1,3 +0,0 @@
|
||||
Public Class CurrentApplication
|
||||
Public IDBServiceOnline As Boolean = False
|
||||
End Class
|
||||
@ -1,9 +0,0 @@
|
||||
Public Class CurrentUser
|
||||
Public USER_GUID As String
|
||||
Public USER_NAME As String
|
||||
Public ReadOnly USER_LOGIN As DateTime
|
||||
|
||||
Public Sub New()
|
||||
USER_LOGIN = DateTime.Now
|
||||
End Sub
|
||||
End Class
|
||||
13
Variables/My Project/Application.Designer.vb
generated
13
Variables/My Project/Application.Designer.vb
generated
@ -1,13 +0,0 @@
|
||||
'------------------------------------------------------------------------------
|
||||
' <auto-generated>
|
||||
' Dieser Code wurde von einem Tool generiert.
|
||||
' Laufzeitversion:4.0.30319.42000
|
||||
'
|
||||
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||
' der Code erneut generiert wird.
|
||||
' </auto-generated>
|
||||
'------------------------------------------------------------------------------
|
||||
|
||||
Option Strict On
|
||||
Option Explicit On
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user