Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
emT3web
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Mac Stephens
emT3web
Commits
9ca47a7c
Commit
9ca47a7c
authored
Apr 14, 2026
by
Mac Stephens
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' into dev
parents
8a2f5e16
72262daa
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
816 additions
and
66 deletions
+816
-66
.gitignore
.gitignore
+3
-1
ConnectionModule.pas
emT3Web/ConnectionModule.pas
+1
-1
Utils.pas
emT3Web/Utils.pas
+18
-0
View.TaskItems.dfm
emT3Web/View.TaskItems.dfm
+14
-0
View.TaskItems.html
emT3Web/View.TaskItems.html
+1
-0
View.TaskItems.pas
emT3Web/View.TaskItems.pas
+0
-0
app.css
emT3Web/css/app.css
+153
-0
emT3web.dpr
emT3Web/emT3web.dpr
+2
-1
emT3web.dproj
emT3Web/emT3web.dproj
+5
-4
uDropdownHelpers.pas
emT3Web/uDropdownHelpers.pas
+184
-0
uNameOffCanvas.pas
emT3Web/uNameOffCanvas.pas
+33
-26
Api.Database.dfm
emT3XDataServer/Source/Api.Database.dfm
+328
-19
Api.Database.pas
emT3XDataServer/Source/Api.Database.pas
+16
-1
Api.Service.pas
emT3XDataServer/Source/Api.Service.pas
+50
-5
Api.ServiceImpl.pas
emT3XDataServer/Source/Api.ServiceImpl.pas
+0
-0
Auth.ServiceImpl.pas
emT3XDataServer/Source/Auth.ServiceImpl.pas
+2
-2
emT3XDataServer.ini
emT3XDataServer/bin/emT3XDataServer.ini
+4
-4
emT3XDataServer.dproj
emT3XDataServer/emT3XDataServer.dproj
+2
-2
No files found.
.gitignore
View file @
9ca47a7c
emT3VCLDemo/__history/
emT3VCLDemo/__recovery/
emT3VCLDemo/Win64x/
emT3Web/__history/
emT3Web/__recovery/
...
...
@@ -19,4 +20,5 @@ emT3XDataServer/Win32/
*.txt
*.zip
emT3VCLDemo/__recovery/
emT3Web/css/__history/
emT3Web/ConnectionModule.pas
View file @
9ca47a7c
...
...
@@ -20,7 +20,7 @@ type
FUnauthorizedAccessProc
:
TUnauthorizedAccessProc
;
public
const
clientVersion
=
'0.8.
6
'
;
const
clientVersion
=
'0.8.
8
'
;
procedure
InitApp
(
SuccessProc
:
TSuccessProc
;
UnauthorizedAccessProc
:
TUnauthorizedAccessProc
);
procedure
SetClientConfig
(
Callback
:
TVersionCheckCallback
);
...
...
emT3Web/Utils.pas
View file @
9ca47a7c
...
...
@@ -14,6 +14,7 @@ procedure ShowToast(const MessageText: string; const ToastType: string = 'succes
procedure
ShowConfirmationModal
(
msg
,
leftLabel
,
rightLabel
:
string
;
ConfirmProc
:
TProc
<
Boolean
>);
procedure
ShowNotificationModal
(
msg
:
string
);
procedure
ShowAppDialog
(
const
Msg
:
string
;
const
Title
:
string
=
'emT3 web app'
;
ReloadOnClose
:
Boolean
=
False
;
ButtonText
:
string
=
'Close'
);
function
NormalizeDateValue
(
const
Value
:
string
):
string
;
implementation
...
...
@@ -281,5 +282,22 @@ begin
end
;
function
NormalizeDateValue
(
const
Value
:
string
):
string
;
var
normalizedValue
:
string
;
begin
normalizedValue
:=
Trim
(
Value
);
if
(
normalizedValue
=
''
)
or
SameText
(
normalizedValue
,
'1899-12-30'
)
or
SameText
(
normalizedValue
,
'12/30/1899'
)
or
SameText
(
normalizedValue
,
'1899-12-30T00:00:00'
)
or
SameText
(
normalizedValue
,
'1899-12-30 00:00:00'
)
then
Result
:=
''
else
Result
:=
normalizedValue
;
end
;
end
.
emT3Web/View.TaskItems.dfm
View file @
9ca47a7c
...
...
@@ -44,6 +44,20 @@ object FTaskItems: TFTaskItems
WidthPercent = 100.000000000000000000
OnClick = btnDeleteRowClick
end
object btnInsertRow: TWebButton
Left = 78
Top = 178
Width = 96
Height = 25
Caption = 'Insert Row'
ChildOrder = 3
ElementID = 'btn_insert_row'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btnInsertRowClick
end
object xdwcTasks: TXDataWebClient
Connection = DMConnection.ApiConnection
Left = 506
...
...
emT3Web/View.TaskItems.html
View file @
9ca47a7c
...
...
@@ -8,6 +8,7 @@
<div
class=
"d-flex gap-2"
>
<button
id=
"btn_add_row"
class=
"btn btn-sm btn-success"
>
Add Row
</button>
<button
id=
"btn_delete_row"
class=
"btn btn-sm btn-danger"
>
Delete Row
</button>
<button
id=
"btn_insert_row"
class=
"btn btn-sm btn-success"
>
Insert Row
</button>
<button
id=
"btn_reload"
class=
"btn btn-sm btn-primary"
>
Reload
</button>
</div>
</div>
...
...
emT3Web/View.TaskItems.pas
View file @
9ca47a7c
This diff is collapsed.
Click to expand it.
emT3Web/css/app.css
View file @
9ca47a7c
...
...
@@ -62,6 +62,9 @@ input[data-field="itemNum"] {
top
:
0
;
z-index
:
2
;
background
:
var
(
--bs-body-bg
);
white-space
:
nowrap
;
overflow
:
hidden
;
text-overflow
:
ellipsis
;
}
.tasks-vscroll
thead
th
.th-resize
{
...
...
@@ -86,5 +89,155 @@ span.card {
user-select
:
none
;
}
.tasks-table
{
table-layout
:
fixed
;
}
.tasks-table
th
{
overflow
:
hidden
;
}
.tasks-table
td
{
overflow
:
visible
;
}
.nowrap-cell
,
.wrap-cell
{
overflow
:
visible
;
}
.tasks-table
.dropdown
,
.task-dd-toggle
,
.task-dd-label
,
.cell-input
,
.cell-textarea
{
min-width
:
0
;
}
.dropdown-menu
{
z-index
:
1055
;
}
.task-dd-toggle.status-cannot-duplicate
{
--bs-btn-color
:
#41464b
;
--bs-btn-bg
:
#e2e3e5
;
--bs-btn-border-color
:
#c4c8cb
;
--bs-btn-hover-color
:
#41464b
;
--bs-btn-hover-bg
:
#d3d4d5
;
--bs-btn-hover-border-color
:
#b9bcc0
;
--bs-btn-active-color
:
#41464b
;
--bs-btn-active-bg
:
#c6c7c8
;
--bs-btn-active-border-color
:
#b9bcc0
;
}
.task-dd-toggle.status-cannot-test
{
--bs-btn-color
:
#842029
;
--bs-btn-bg
:
#f8d7da
;
--bs-btn-border-color
:
#f1aeb5
;
--bs-btn-hover-color
:
#842029
;
--bs-btn-hover-bg
:
#f1c2c7
;
--bs-btn-hover-border-color
:
#ea9ca6
;
--bs-btn-active-color
:
#842029
;
--bs-btn-active-bg
:
#eaadb5
;
--bs-btn-active-border-color
:
#e68592
;
}
.task-dd-toggle.status-future-enhancement
{
--bs-btn-color
:
#055160
;
--bs-btn-bg
:
#cff4fc
;
--bs-btn-border-color
:
#9eeaf9
;
--bs-btn-hover-color
:
#055160
;
--bs-btn-hover-bg
:
#b6effb
;
--bs-btn-hover-border-color
:
#86e5f8
;
--bs-btn-active-color
:
#055160
;
--bs-btn-active-bg
:
#9eeaf9
;
--bs-btn-active-border-color
:
#74dff6
;
}
.task-dd-toggle.status-fixed-verified
{
--bs-btn-color
:
#0f5132
;
--bs-btn-bg
:
#d1e7dd
;
--bs-btn-border-color
:
#a3cfbb
;
--bs-btn-hover-color
:
#0f5132
;
--bs-btn-hover-bg
:
#badbcc
;
--bs-btn-hover-border-color
:
#8fc5a9
;
--bs-btn-active-color
:
#0f5132
;
--bs-btn-active-bg
:
#a3cfbb
;
--bs-btn-active-border-color
:
#7db89d
;
}
.task-dd-toggle.status-fixed
{
--bs-btn-color
:
#146c43
;
--bs-btn-bg
:
#d1e7dd
;
--bs-btn-border-color
:
#a3cfbb
;
--bs-btn-hover-color
:
#146c43
;
--bs-btn-hover-bg
:
#badbcc
;
--bs-btn-hover-border-color
:
#8fc5a9
;
--bs-btn-active-color
:
#146c43
;
--bs-btn-active-bg
:
#a3cfbb
;
--bs-btn-active-border-color
:
#7db89d
;
}
.task-dd-toggle.status-investigating
{
--bs-btn-color
:
#664d03
;
--bs-btn-bg
:
#fff3cd
;
--bs-btn-border-color
:
#ffe69c
;
--bs-btn-hover-color
:
#664d03
;
--bs-btn-hover-bg
:
#ffecb5
;
--bs-btn-hover-border-color
:
#ffdf7e
;
--bs-btn-active-color
:
#664d03
;
--bs-btn-active-bg
:
#ffe69c
;
--bs-btn-active-border-color
:
#ffd966
;
}
.task-dd-toggle.status-not-fixed
{
--bs-btn-color
:
#842029
;
--bs-btn-bg
:
#f8d7da
;
--bs-btn-border-color
:
#f1aeb5
;
--bs-btn-hover-color
:
#842029
;
--bs-btn-hover-bg
:
#f1c2c7
;
--bs-btn-hover-border-color
:
#ea9ca6
;
--bs-btn-active-color
:
#842029
;
--bs-btn-active-bg
:
#eaadb5
;
--bs-btn-active-border-color
:
#e68592
;
}
.task-dd-toggle.status-non-issue
{
--bs-btn-color
:
#432874
;
--bs-btn-bg
:
#e2d9f3
;
--bs-btn-border-color
:
#cbbbe8
;
--bs-btn-hover-color
:
#432874
;
--bs-btn-hover-bg
:
#d6caee
;
--bs-btn-hover-border-color
:
#bea9e2
;
--bs-btn-active-color
:
#432874
;
--bs-btn-active-bg
:
#cbbbe8
;
--bs-btn-active-border-color
:
#b89ddd
;
}
.task-dd-toggle.status-possibly-a-problem
{
--bs-btn-color
:
#7a3e00
;
--bs-btn-bg
:
#ffe5d0
;
--bs-btn-border-color
:
#f7c79d
;
--bs-btn-hover-color
:
#7a3e00
;
--bs-btn-hover-bg
:
#ffd7b8
;
--bs-btn-hover-border-color
:
#f2ba88
;
--bs-btn-active-color
:
#7a3e00
;
--bs-btn-active-bg
:
#f7c79d
;
--bs-btn-active-border-color
:
#eeaf69
;
}
.task-dd-toggle.status-default
{
--bs-btn-color
:
#212529
;
--bs-btn-bg
:
#f8f9fa
;
--bs-btn-border-color
:
#dee2e6
;
--bs-btn-hover-color
:
#212529
;
--bs-btn-hover-bg
:
#e9ecef
;
--bs-btn-hover-border-color
:
#ced4da
;
--bs-btn-active-color
:
#212529
;
--bs-btn-active-bg
:
#dee2e6
;
--bs-btn-active-border-color
:
#ced4da
;
}
emT3Web/emT3web.dpr
View file @
9ca47a7c
...
...
@@ -12,7 +12,8 @@ uses
View.Main in 'View.Main.pas' {FViewMain: TWebForm} {*.html},
Utils in 'Utils.pas',
View.TaskItems in 'View.TaskItems.pas' {FTaskItems: TWebForm} {*.html},
uNameManager in 'uNameManager.pas';
uNameOffCanvas in 'uNameOffCanvas.pas',
uDropdownHelpers in 'uDropdownHelpers.pas';
{$R *.res}
...
...
emT3Web/emT3web.dproj
View file @
9ca47a7c
...
...
@@ -94,13 +94,13 @@
<DCC_RemoteDebug>false</DCC_RemoteDebug>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=0.8.
6
.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=0.9.8.0;Comments=;LastCompiledTime=2018/08/27 15:18:29</VerInfo_Keys>
<VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=0.8.
8
.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=0.9.8.0;Comments=;LastCompiledTime=2018/08/27 15:18:29</VerInfo_Keys>
<AppDPIAwarenessMode>PerMonitor</AppDPIAwarenessMode>
<VerInfo_MajorVer>0</VerInfo_MajorVer>
<VerInfo_MinorVer>8</VerInfo_MinorVer>
<VerInfo_Release>6</VerInfo_Release>
<VerInfo_Release>8</VerInfo_Release>
<TMSWebBrowser>5</TMSWebBrowser>
<TMSUseJSDebugger>2</TMSUseJSDebugger>
<TMSWebBrowser>1</TMSWebBrowser>
<TMSWebSingleInstance>1</TMSWebSingleInstance>
<TMSWebOutputPath>..\emT3XDataServer\bin\static</TMSWebOutputPath>
</PropertyGroup>
...
...
@@ -142,7 +142,8 @@
<FormType>dfm</FormType>
<DesignClass>TWebForm</DesignClass>
</DCCReference>
<DCCReference Include="uNameManager.pas"/>
<DCCReference Include="uNameOffCanvas.pas"/>
<DCCReference Include="uDropdownHelpers.pas"/>
<None Include="index.html"/>
<None Include="css\app.css"/>
<None Include="config\config.json"/>
...
...
emT3Web/uDropdownHelpers.pas
0 → 100644
View file @
9ca47a7c
unit
uDropdownHelpers
;
interface
uses
System
.
SysUtils
,
System
.
Classes
,
JS
,
Web
,
WEBLib
.
Graphics
,
WEBLib
.
Controls
,
WEBLib
.
Forms
,
WEBLib
.
Dialogs
;
function
GetTaskStatusClass
(
const
AStatus
:
string
):
string
;
procedure
ClearTaskStatusClasses
(
const
AElement
:
TJSHTMLElement
);
procedure
ApplyTaskStatusClass
(
const
AElement
:
TJSHTMLElement
;
const
AStatus
:
string
);
function
ExtractOptionNames
(
const
SourceArray
:
TJSArray
):
TJSArray
;
function
ExtractCodeDescs
(
const
SourceArray
:
TJSArray
):
TJSArray
;
function
ExtractAssignedOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
function
ExtractReportedOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
function
ExtractApplicationOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
function
FindOptionIgnoreCase
(
const
AItems
:
TJSArray
;
const
AName
:
string
):
string
;
function
GetOptionsForField
(
const
AFieldName
:
string
;
const
AApplicationOptions
,
AReportedByOptions
,
AAssignedToOptions
:
TJSArray
):
TJSArray
;
procedure
FocusTrigger
(
const
ATriggerId
:
string
);
implementation
function
GetTaskStatusClass
(
const
AStatus
:
string
):
string
;
var
statusText
:
string
;
begin
statusText
:=
Trim
(
AStatus
);
if
SameText
(
statusText
,
'Cannot Duplicate'
)
then
Result
:=
'status-cannot-duplicate'
else
if
SameText
(
statusText
,
'Cannot Test'
)
then
Result
:=
'status-cannot-test'
else
if
SameText
(
statusText
,
'Future Enhancement'
)
then
Result
:=
'status-future-enhancement'
else
if
SameText
(
statusText
,
'Fixed - Verified'
)
then
Result
:=
'status-fixed-verified'
else
if
SameText
(
statusText
,
'Fixed'
)
then
Result
:=
'status-fixed'
else
if
SameText
(
statusText
,
'Investigating'
)
then
Result
:=
'status-investigating'
else
if
SameText
(
statusText
,
'Not Fixed'
)
then
Result
:=
'status-not-fixed'
else
if
SameText
(
statusText
,
'Non-Issue'
)
then
Result
:=
'status-non-issue'
else
if
SameText
(
statusText
,
'Possibly a Problem'
)
then
Result
:=
'status-possibly-a-problem'
else
Result
:=
'status-default'
;
end
;
procedure
ClearTaskStatusClasses
(
const
AElement
:
TJSHTMLElement
);
begin
if
not
Assigned
(
AElement
)
then
Exit
;
AElement
.
classList
.
remove
(
'status-cannot-duplicate'
);
AElement
.
classList
.
remove
(
'status-cannot-test'
);
AElement
.
classList
.
remove
(
'status-future-enhancement'
);
AElement
.
classList
.
remove
(
'status-fixed-verified'
);
AElement
.
classList
.
remove
(
'status-fixed'
);
AElement
.
classList
.
remove
(
'status-investigating'
);
AElement
.
classList
.
remove
(
'status-not-fixed'
);
AElement
.
classList
.
remove
(
'status-non-issue'
);
AElement
.
classList
.
remove
(
'status-possibly-a-problem'
);
AElement
.
classList
.
remove
(
'status-default'
);
end
;
procedure
ApplyTaskStatusClass
(
const
AElement
:
TJSHTMLElement
;
const
AStatus
:
string
);
begin
if
not
Assigned
(
AElement
)
then
Exit
;
ClearTaskStatusClasses
(
AElement
);
AElement
.
classList
.
add
(
GetTaskStatusClass
(
AStatus
));
end
;
function
ExtractOptionNames
(
const
SourceArray
:
TJSArray
):
TJSArray
;
var
i
:
Integer
;
optionObj
:
TJSObject
;
begin
Result
:=
TJSArray
.
new
;
if
not
Assigned
(
SourceArray
)
then
Exit
;
for
i
:=
0
to
SourceArray
.
length
-
1
do
begin
optionObj
:=
TJSObject
(
SourceArray
[
i
]);
if
Assigned
(
optionObj
)
then
Result
.
push
(
string
(
optionObj
[
'name'
]));
end
;
end
;
function
ExtractCodeDescs
(
const
SourceArray
:
TJSArray
):
TJSArray
;
var
i
:
Integer
;
optionObj
:
TJSObject
;
begin
Result
:=
TJSArray
.
new
;
if
not
Assigned
(
SourceArray
)
then
Exit
;
for
i
:=
0
to
SourceArray
.
length
-
1
do
begin
optionObj
:=
TJSObject
(
SourceArray
[
i
]);
if
Assigned
(
optionObj
)
then
Result
.
push
(
string
(
optionObj
[
'codeDesc'
]));
end
;
end
;
function
ExtractAssignedOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
begin
if
not
Assigned
(
ResponseResult
)
then
Exit
(
TJSArray
.
new
);
Result
:=
ExtractOptionNames
(
TJSArray
(
ResponseResult
[
'assignedToOptions'
]));
end
;
function
ExtractReportedOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
begin
if
not
Assigned
(
ResponseResult
)
then
Exit
(
TJSArray
.
new
);
Result
:=
ExtractOptionNames
(
TJSArray
(
ResponseResult
[
'reportedByOptions'
]));
end
;
function
ExtractApplicationOptionNames
(
const
ResponseResult
:
TJSObject
):
TJSArray
;
begin
if
not
Assigned
(
ResponseResult
)
then
Exit
(
TJSArray
.
new
);
Result
:=
ExtractOptionNames
(
TJSArray
(
ResponseResult
[
'applicationOptions'
]));
end
;
function
FindOptionIgnoreCase
(
const
AItems
:
TJSArray
;
const
AName
:
string
):
string
;
var
i
:
Integer
;
itemText
:
string
;
begin
Result
:=
''
;
if
not
Assigned
(
AItems
)
then
Exit
;
for
i
:=
0
to
AItems
.
length
-
1
do
begin
itemText
:=
string
(
AItems
[
i
]);
if
SameText
(
itemText
,
Trim
(
AName
))
then
Exit
(
itemText
);
end
;
end
;
function
GetOptionsForField
(
const
AFieldName
:
string
;
const
AApplicationOptions
,
AReportedByOptions
,
AAssignedToOptions
:
TJSArray
):
TJSArray
;
begin
if
SameText
(
AFieldName
,
'application'
)
then
Result
:=
AApplicationOptions
else
if
SameText
(
AFieldName
,
'reportedBy'
)
then
Result
:=
AReportedByOptions
else
if
SameText
(
AFieldName
,
'assignedTo'
)
then
Result
:=
AAssignedToOptions
else
Result
:=
nil
;
end
;
procedure
FocusTrigger
(
const
ATriggerId
:
string
);
var
el
:
TJSHTMLElement
;
begin
if
ATriggerId
=
''
then
Exit
;
el
:=
TJSHTMLElement
(
document
.
getElementById
(
ATriggerId
));
if
Assigned
(
el
)
then
el
.
focus
;
end
;
end
.
emT3Web/uName
Manager
.pas
→
emT3Web/uName
OffCanvas
.pas
View file @
9ca47a7c
unit
uName
Manager
;
unit
uName
OffCanvas
;
interface
...
...
@@ -8,9 +8,9 @@ uses
type
TGetOptionsEvent
=
reference
to
function
(
const
AFieldName
:
string
):
TJSArray
;
TFocusTriggerEvent
=
reference
to
procedure
(
const
ATriggerId
:
string
);
TAdd
AssignedNameEvent
=
reference
to
procedure
(
const
ARowIndex
:
Integer
;
const
ANewName
:
string
);
TRename
AssignedNameEvent
=
reference
to
procedure
(
const
AOldName
,
ANewName
:
string
);
TDelete
AssignedNameEvent
=
reference
to
procedure
(
const
AName
:
string
);
TAdd
ManagedNameEvent
=
reference
to
procedure
(
const
AFieldName
:
string
;
const
ARowIndex
:
Integer
;
const
ANewName
:
string
);
TRename
ManagedNameEvent
=
reference
to
procedure
(
const
AFieldName
,
AOldName
,
ANewName
:
string
);
TDelete
ManagedNameEvent
=
reference
to
procedure
(
const
AFieldName
,
AName
:
string
);
TNameManager
=
class
private
...
...
@@ -20,9 +20,9 @@ type
FCurrentEditName
:
string
;
FGetOptions
:
TGetOptionsEvent
;
FFocusTrigger
:
TFocusTriggerEvent
;
FAdd
AssignedName
:
TAddAssign
edNameEvent
;
FRename
AssignedName
:
TRenameAssign
edNameEvent
;
FDelete
AssignedName
:
TDeleteAssign
edNameEvent
;
FAdd
ManagedName
:
TAddManag
edNameEvent
;
FRename
ManagedName
:
TRenameManag
edNameEvent
;
FDelete
ManagedName
:
TDeleteManag
edNameEvent
;
procedure
AddAnotherClick
(
Event
:
TJSEvent
);
procedure
SaveClick
(
Event
:
TJSEvent
);
procedure
NameInputKeyDown
(
Event
:
TJSEvent
);
...
...
@@ -40,9 +40,9 @@ type
constructor
Create
(
const
AGetOptions
:
TGetOptionsEvent
;
const
AFocusTrigger
:
TFocusTriggerEvent
;
const
AAdd
AssignedName
:
TAddAssign
edNameEvent
;
const
ARename
AssignedName
:
TRenameAssign
edNameEvent
;
const
ADelete
AssignedName
:
TDeleteAssign
edNameEvent
const
AAdd
ManagedName
:
TAddManag
edNameEvent
;
const
ARename
ManagedName
:
TRenameManag
edNameEvent
;
const
ADelete
ManagedName
:
TDeleteManag
edNameEvent
);
procedure
BindControls
;
...
...
@@ -70,17 +70,17 @@ end;
constructor
TNameManager
.
Create
(
const
AGetOptions
:
TGetOptionsEvent
;
const
AFocusTrigger
:
TFocusTriggerEvent
;
const
AAdd
AssignedName
:
TAddAssign
edNameEvent
;
const
ARename
AssignedName
:
TRenameAssign
edNameEvent
;
const
ADelete
AssignedName
:
TDeleteAssign
edNameEvent
const
AAdd
ManagedName
:
TAddManag
edNameEvent
;
const
ARename
ManagedName
:
TRenameManag
edNameEvent
;
const
ADelete
ManagedName
:
TDeleteManag
edNameEvent
);
begin
inherited
Create
;
FGetOptions
:=
AGetOptions
;
FFocusTrigger
:=
AFocusTrigger
;
FAdd
AssignedName
:=
AAddAssign
edName
;
FRename
AssignedName
:=
ARenameAssign
edName
;
FDelete
AssignedName
:=
ADeleteAssign
edName
;
FAdd
ManagedName
:=
AAddManag
edName
;
FRename
ManagedName
:=
ARenameManag
edName
;
FDelete
ManagedName
:=
ADeleteManag
edName
;
FCurrentField
:=
''
;
FCurrentRowIndex
:=
-
1
;
FCurrentTriggerId
:=
''
;
...
...
@@ -257,18 +257,18 @@ begin
Exit
;
end
;
if
not
SameText
(
FCurrentField
,
'assignedTo'
)
then
if
not
(
SameText
(
FCurrentField
,
'assignedTo'
)
or
SameText
(
FCurrentField
,
'application'
)
or
SameText
(
FCurrentField
,
'reportedBy'
)
)
then
Exit
;
if
FCurrentEditName
<>
''
then
begin
if
Assigned
(
FRename
Assign
edName
)
then
FRename
AssignedName
(
FCurrentEditName
,
newName
);
if
Assigned
(
FRename
Manag
edName
)
then
FRename
ManagedName
(
FCurrentField
,
FCurrentEditName
,
newName
);
end
else
begin
if
Assigned
(
FAdd
Assign
edName
)
then
FAdd
AssignedName
(
FCurrentRowIndex
,
newName
);
if
Assigned
(
FAdd
Manag
edName
)
then
FAdd
ManagedName
(
FCurrentField
,
FCurrentRowIndex
,
newName
);
end
;
CloseManager
;
...
...
@@ -356,7 +356,7 @@ begin
Event
.
preventDefault
;
Event
.
stopPropagation
;
if
not
SameText
(
FCurrentField
,
'assignedTo'
)
then
if
not
(
SameText
(
FCurrentField
,
'assignedTo'
)
or
SameText
(
FCurrentField
,
'application'
)
or
SameText
(
FCurrentField
,
'reportedBy'
)
)
then
Exit
;
el
:=
TJSHTMLElement
(
Event
.
currentTarget
);
...
...
@@ -383,7 +383,7 @@ begin
Event
.
preventDefault
;
Event
.
stopPropagation
;
if
not
SameText
(
FCurrentField
,
'assignedTo'
)
then
if
not
(
SameText
(
FCurrentField
,
'assignedTo'
)
or
SameText
(
FCurrentField
,
'application'
)
or
SameText
(
FCurrentField
,
'reportedBy'
)
)
then
Exit
;
el
:=
TJSHTMLElement
(
Event
.
currentTarget
);
...
...
@@ -391,8 +391,8 @@ begin
if
nameToDelete
=
''
then
Exit
;
if
Assigned
(
FDelete
Assign
edName
)
then
FDelete
AssignedName
(
nameToDelete
);
if
Assigned
(
FDelete
Manag
edName
)
then
FDelete
ManagedName
(
FCurrentField
,
nameToDelete
);
CloseManager
;
end
;
...
...
@@ -401,7 +401,7 @@ procedure TNameManager.OpenManager(const AFieldName: string; const ARowIndex: In
var
titleEl
:
TJSHTMLElement
;
begin
if
not
SameText
(
AFieldName
,
'assignedTo'
)
then
if
not
(
SameText
(
AFieldName
,
'assignedTo'
)
or
SameText
(
AFieldName
,
'application'
)
or
SameText
(
AFieldName
,
'reportedBy'
)
)
then
Exit
;
FCurrentField
:=
AFieldName
;
...
...
@@ -411,7 +411,14 @@ begin
titleEl
:=
GetElement
(
'nm_title'
);
if
Assigned
(
titleEl
)
then
begin
if
SameText
(
AFieldName
,
'application'
)
then
titleEl
.
innerHTML
:=
'Manage Application'
else
if
SameText
(
AFieldName
,
'reportedBy'
)
then
titleEl
.
innerHTML
:=
'Manage Reported By'
else
titleEl
.
innerHTML
:=
'Manage Assigned To'
;
end
;
ResetInputArea
;
RenderExistingList
;
...
...
emT3XDataServer/Source/Api.Database.dfm
View file @
9ca47a7c
object ApiDatabase: TApiDatabase
OnCreate = DataModuleCreate
Height = 4
53
Width =
641
Height = 4
75
Width =
996
object ucETaskApi: TUniConnection
AutoCommit = False
ProviderName = 'MySQL'
Database = 'eTask'
LoginPrompt = False
Left = 2
55
Top = 3
79
Left = 2
67
Top = 3
95
end
object MySQLUniProvider1: TMySQLUniProvider
Left =
354
Top = 3
7
8
Left =
416
Top = 3
9
8
end
object uqUsers: TUniQuery
Connection = ucETaskApi
...
...
@@ -236,17 +236,17 @@ object ApiDatabase: TApiDatabase
'values ('
' :TASK_ID,'
' :ITEM_NUM,'
'
'#39#39'
,'
'
'#39#39'
,'
'
curdate()
,'
'
curdate()
,'
'
'#39#39'
,'
'
'#39#39'
,'
'
'#39#39'
,'
'
'#39#39'
,'
'
'#39#39'
,'
'
'#39#39'
,'
'
'#39#39
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null
,'
'
null'
')')
Left = 536
Top = 282
...
...
@@ -580,7 +580,8 @@ object ApiDatabase: TApiDatabase
object uqProjectReportedUsers: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'select distinct'
'select'
' min(tiu.TASK_ITEM_USER_ID) as TASK_ITEM_USER_ID,'
' tiu.NAME'
'from task_item_user tiu'
'join tasks project_tasks'
...
...
@@ -589,6 +590,7 @@ object ApiDatabase: TApiDatabase
' on target_task.PROJECT_ID = project_tasks.PROJECT_ID'
'where target_task.TASK_ID = :TASK_ID'
' and tiu.USER_TYPE = '#39'Reported'#39
'group by tiu.NAME'
'order by tiu.NAME')
Left = 58
Top = 256
...
...
@@ -598,6 +600,11 @@ object ApiDatabase: TApiDatabase
Name = 'TASK_ID'
Value = nil
end>
object uqProjectReportedUsersTASK_ITEM_USER_ID: TStringField
FieldName = 'TASK_ITEM_USER_ID'
ReadOnly = True
Size = 50
end
object uqProjectReportedUsersNAME: TStringField
FieldName = 'NAME'
Required = True
...
...
@@ -758,7 +765,7 @@ object ApiDatabase: TApiDatabase
Connection = ucETaskApi
SQL.Strings = (
'update task_items'
'set ASSIGNED_TO =
'#39#39
'set ASSIGNED_TO =
null'
'where TASK_ID = :TASK_ID'
' and lower(ASSIGNED_TO) = lower(:NAME)')
Left = 388
...
...
@@ -775,4 +782,306 @@ object ApiDatabase: TApiDatabase
Value = nil
end>
end
object uqProjectApplications: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'select distinct'
' tia.TASK_ITEM_APPLICATION_ID,'
' tia.PROJECT_ID,'
' tia.NAME'
'from task_item_application tia'
'join tasks target_task'
' on target_task.PROJECT_ID = tia.PROJECT_ID'
'where target_task.TASK_ID = :TASK_ID'
'order by tia.NAME')
Left = 58
Top = 314
ParamData = <
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end>
object uqProjectApplicationsTASK_ITEM_APPLICATION_ID: TIntegerField
FieldName = 'TASK_ITEM_APPLICATION_ID'
end
object uqProjectApplicationsPROJECT_ID: TStringField
FieldName = 'PROJECT_ID'
Required = True
Size = 7
end
object uqProjectApplicationsNAME: TStringField
FieldName = 'NAME'
Required = True
Size = 255
end
end
object uqApplicationInsert: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'insert into task_item_application ('
' PROJECT_ID,'
' NAME'
')'
'values ('
' :PROJECT_ID,'
' :NAME'
')')
Left = 700
Top = 28
ParamData = <
item
DataType = ftUnknown
Name = 'PROJECT_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'NAME'
Value = nil
end>
end
object uqApplicationRename: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_item_application'
'set NAME = :NEW_NAME'
'where TASK_ITEM_APPLICATION_ID = :TASK_ITEM_APPLICATION_ID'
' and PROJECT_ID = :PROJECT_ID')
Left = 700
Top = 82
ParamData = <
item
DataType = ftUnknown
Name = 'NEW_NAME'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ITEM_APPLICATION_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'PROJECT_ID'
Value = nil
end>
end
object uqApplicationDelete: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'delete from task_item_application'
'where TASK_ITEM_APPLICATION_ID = :TASK_ITEM_APPLICATION_ID'
' and PROJECT_ID = :PROJECT_ID')
Left = 700
Top = 136
ParamData = <
item
DataType = ftUnknown
Name = 'TASK_ITEM_APPLICATION_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'PROJECT_ID'
Value = nil
end>
end
object uqRenameTaskItemApplication: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_items ti'
'join tasks t'
' on t.TASK_ID = ti.TASK_ID'
'set ti.APPLICATION = :NEW_NAME'
'where t.PROJECT_ID = :PROJECT_ID'
' and lower(ti.APPLICATION) = lower(:OLD_NAME)')
Left = 698
Top = 188
ParamData = <
item
DataType = ftUnknown
Name = 'NEW_NAME'
Value = nil
end
item
DataType = ftUnknown
Name = 'PROJECT_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'OLD_NAME'
Value = nil
end>
end
object uqBlankTaskItemApplication: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_items ti'
'join tasks t'
' on t.TASK_ID = ti.TASK_ID'
'set ti.APPLICATION = null'
'where t.PROJECT_ID = :PROJECT_ID'
' and lower(ti.APPLICATION) = lower(:NAME)')
Left = 696
Top = 244
ParamData = <
item
DataType = ftUnknown
Name = 'PROJECT_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'NAME'
Value = nil
end>
end
object uqReportedInsert: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'insert into task_item_user ('
' TASK_ITEM_USER_ID,'
' TASK_ID,'
' USER_TYPE,'
' NAME'
')'
'values ('
' :TASK_ITEM_USER_ID,'
' :TASK_ID,'
' '#39'Reported'#39','
' :NAME'
')')
Left = 858
Top = 32
ParamData = <
item
DataType = ftUnknown
Name = 'TASK_ITEM_USER_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'NAME'
Value = nil
end>
end
object uqReportedRename: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_item_user tiu'
'join tasks t'
' on t.TASK_ID = tiu.TASK_ID'
'join tasks target_task'
' on target_task.PROJECT_ID = t.PROJECT_ID'
'set tiu.NAME = :NEW_NAME'
'where target_task.TASK_ID = :TASK_ID'
' and tiu.USER_TYPE = '#39'Reported'#39
' and tiu.TASK_ITEM_USER_ID = :TASK_ITEM_USER_ID')
Left = 858
Top = 88
ParamData = <
item
DataType = ftUnknown
Name = 'NEW_NAME'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ITEM_USER_ID'
Value = nil
end>
end
object uqReportedDelete: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'delete tiu'
'from task_item_user tiu'
'join tasks t'
' on t.TASK_ID = tiu.TASK_ID'
'join tasks target_task'
' on target_task.PROJECT_ID = t.PROJECT_ID'
'where target_task.TASK_ID = :TASK_ID'
' and tiu.USER_TYPE = '#39'Reported'#39
' and tiu.TASK_ITEM_USER_ID = :TASK_ITEM_USER_ID')
Left = 858
Top = 144
ParamData = <
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ITEM_USER_ID'
Value = nil
end>
end
object uqBlankTaskItemReportedBy: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_items ti'
'join tasks t'
' on t.TASK_ID = ti.TASK_ID'
'join tasks target_task'
' on target_task.PROJECT_ID = t.PROJECT_ID'
'set ti.REPORTED_BY = null'
'where target_task.TASK_ID = :TASK_ID'
' and lower(ti.REPORTED_BY) = lower(:NAME)')
Left = 860
Top = 264
ParamData = <
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'NAME'
Value = nil
end>
end
object uqRenameTaskItemReportedBy: TUniQuery
Connection = ucETaskApi
SQL.Strings = (
'update task_items ti'
'join tasks t'
' on t.TASK_ID = ti.TASK_ID'
'join tasks target_task'
' on target_task.PROJECT_ID = t.PROJECT_ID'
'set ti.REPORTED_BY = :NEW_NAME'
'where target_task.TASK_ID = :TASK_ID'
' and lower(ti.REPORTED_BY) = lower(:OLD_NAME)')
Left = 858
Top = 202
ParamData = <
item
DataType = ftUnknown
Name = 'NEW_NAME'
Value = nil
end
item
DataType = ftUnknown
Name = 'TASK_ID'
Value = nil
end
item
DataType = ftUnknown
Name = 'OLD_NAME'
Value = nil
end>
end
end
emT3XDataServer/Source/Api.Database.pas
View file @
9ca47a7c
...
...
@@ -68,11 +68,26 @@ type
uqAssignedDelete
:
TUniQuery
;
uqRenameAssignedTo
:
TUniQuery
;
uqBlankAssignedTo
:
TUniQuery
;
uqProjectReportedUsersNAME
:
TStringField
;
uqTaskAssignedUsersTASK_ITEM_USER_ID
:
TStringField
;
uqTaskAssignedUsersTASK_ID
:
TStringField
;
uqTaskAssignedUsersUSER_TYPE
:
TStringField
;
uqTaskAssignedUsersNAME
:
TStringField
;
uqProjectApplications
:
TUniQuery
;
uqApplicationInsert
:
TUniQuery
;
uqApplicationRename
:
TUniQuery
;
uqApplicationDelete
:
TUniQuery
;
uqRenameTaskItemApplication
:
TUniQuery
;
uqBlankTaskItemApplication
:
TUniQuery
;
uqProjectApplicationsTASK_ITEM_APPLICATION_ID
:
TIntegerField
;
uqProjectApplicationsPROJECT_ID
:
TStringField
;
uqProjectApplicationsNAME
:
TStringField
;
uqReportedInsert
:
TUniQuery
;
uqReportedRename
:
TUniQuery
;
uqReportedDelete
:
TUniQuery
;
uqBlankTaskItemReportedBy
:
TUniQuery
;
uqRenameTaskItemReportedBy
:
TUniQuery
;
uqProjectReportedUsersTASK_ITEM_USER_ID
:
TStringField
;
uqProjectReportedUsersNAME
:
TStringField
;
procedure
DataModuleCreate
(
Sender
:
TObject
);
procedure
uqUsersCalcFields
(
DataSet
:
TDataSet
);
private
...
...
emT3XDataServer/Source/Api.Service.pas
View file @
9ca47a7c
...
...
@@ -48,7 +48,11 @@ type
name
:
string
;
end
;
type
TTaskApplicationOption
=
class
public
name
:
string
;
end
;
TTaskItemCode
=
class
public
code
:
string
;
...
...
@@ -61,6 +65,7 @@ type
count
:
integer
;
task
:
TTaskHeader
;
items
:
TList
<
TTaskItem
>;
applicationOptions
:
TList
<
TTaskApplicationOption
>;
reportedByOptions
:
TList
<
TTaskUserOption
>;
assignedToOptions
:
TList
<
TTaskUserOption
>;
statusOptions
:
TList
<
TTaskItemCode
>;
...
...
@@ -71,6 +76,14 @@ type
TTaskUserOptionsResponse
=
class
public
assignedToOptions
:
TList
<
TTaskUserOption
>;
reportedByOptions
:
TList
<
TTaskUserOption
>;
constructor
Create
;
destructor
Destroy
;
override
;
end
;
TTaskApplicationOptionsResponse
=
class
public
applicationOptions
:
TList
<
TTaskApplicationOption
>;
constructor
Create
;
destructor
Destroy
;
override
;
end
;
...
...
@@ -93,21 +106,37 @@ type
notes
:
string
;
end
;
TTaskItemFieldSave
=
class
public
taskItemId
:
Integer
;
fieldName
:
string
;
value
:
string
;
end
;
type
[
ServiceContract
,
Model
(
API_MODEL
)]
IApiService
=
interface
(
IInvokable
)
[
'{0EFB33D7-8C4C-4F3C-9BC3-8B4D444B5F69}'
]
function
GetTaskItems
(
taskId
:
string
):
TTaskItemsResponse
;
[
HttpPost
]
function
AddTaskRow
(
taskId
:
string
;
insertAfterItemNum
:
Integer
):
Boolean
;
[
HttpPost
]
function
SaveTaskRow
(
Item
:
TTaskRowSave
):
Boolean
;
[
HttpPost
]
function
AddAssignedName
(
taskId
:
string
;
name
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
RenameAssignedName
(
taskId
:
string
;
oldName
:
string
;
newName
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
DeleteAssignedName
(
taskId
:
string
;
name
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
AddReportedName
(
taskId
:
string
;
name
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
RenameReportedName
(
taskId
:
string
;
oldName
:
string
;
newName
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
DeleteReportedName
(
taskId
:
string
;
name
:
string
):
TTaskUserOptionsResponse
;
[
HttpPost
]
function
AddApplicationName
(
taskId
:
string
;
name
:
string
):
TTaskApplicationOptionsResponse
;
[
HttpPost
]
function
RenameApplicationName
(
taskId
:
string
;
oldName
:
string
;
newName
:
string
):
TTaskApplicationOptionsResponse
;
[
HttpPost
]
function
DeleteApplicationName
(
taskId
:
string
;
name
:
string
):
TTaskApplicationOptionsResponse
;
procedure
MoveTaskRow
(
const
taskId
:
Integer
;
const
taskItemId
:
Integer
;
const
newItemNum
:
Integer
);
function
DeleteTaskRow
(
const
taskId
:
Integer
;
const
taskItemId
:
Integer
):
Boolean
;
function
SaveTaskItemField
(
const
Item
:
TTaskItemFieldSave
):
Boolean
;
end
;
implementation
...
...
@@ -116,6 +145,7 @@ constructor TTaskItemsResponse.Create;
begin
inherited
;
items
:=
TList
<
TTaskItem
>.
Create
;
applicationOptions
:=
TList
<
TTaskApplicationOption
>.
Create
;
reportedByOptions
:=
TList
<
TTaskUserOption
>.
Create
;
assignedToOptions
:=
TList
<
TTaskUserOption
>.
Create
;
statusOptions
:=
TList
<
TTaskItemCode
>.
Create
;
...
...
@@ -124,6 +154,7 @@ end;
destructor
TTaskItemsResponse
.
Destroy
;
begin
items
.
Free
;
applicationOptions
.
Free
;
reportedByOptions
.
Free
;
assignedToOptions
.
Free
;
statusOptions
.
Free
;
...
...
@@ -134,11 +165,25 @@ constructor TTaskUserOptionsResponse.Create;
begin
inherited
;
assignedToOptions
:=
TList
<
TTaskUserOption
>.
Create
;
reportedByOptions
:=
TList
<
TTaskUserOption
>.
Create
;
end
;
destructor
TTaskUserOptionsResponse
.
Destroy
;
begin
assignedToOptions
.
Free
;
assignedToOptions
:=
TList
<
TTaskUserOption
>.
Create
;
reportedByOptions
:=
TList
<
TTaskUserOption
>.
Create
;
inherited
;
end
;
constructor
TTaskApplicationOptionsResponse
.
Create
;
begin
inherited
;
applicationOptions
:=
TList
<
TTaskApplicationOption
>.
Create
;
end
;
destructor
TTaskApplicationOptionsResponse
.
Destroy
;
begin
applicationOptions
.
Free
;
inherited
;
end
;
...
...
emT3XDataServer/Source/Api.ServiceImpl.pas
View file @
9ca47a7c
This diff is collapsed.
Click to expand it.
emT3XDataServer/Source/Auth.ServiceImpl.pas
View file @
9ca47a7c
...
...
@@ -190,8 +190,8 @@ begin
if
userState
=
0
then
begin
Logger
.
Log
(
2
,
'Login Error: Invalid
code
'
);
raise
EXDataHttpUnauthorized
.
Create
(
'Invalid
code
'
);
Logger
.
Log
(
2
,
'Login Error: Invalid
url parameters
'
);
raise
EXDataHttpUnauthorized
.
Create
(
'Invalid
url parameters
'
);
end
;
if
userState
=
1
then
...
...
emT3XDataServer/bin/emT3XDataServer.ini
View file @
9ca47a7c
[Settings]
MemoLogLevel
=
4
FileLogLevel
=
4
webClientVersion
=
0.8.
6
LogFileNum
=
1
52
webClientVersion
=
0.8.
8
LogFileNum
=
1
61
[Database]
--Server
=
192.168.116.131
--Server
=
192.168.116.128
Server
=
192.168.102.131
--Server
=
192.168.116.128
--Server
=
192.168.102.131
--Server
=
192.168.159.10
Database
=
eTask
Username
=
root
...
...
emT3XDataServer/emT3XDataServer.dproj
View file @
9ca47a7c
...
...
@@ -114,10 +114,10 @@
<VerInfo_Locale>1033</VerInfo_Locale>
<DCC_ExeOutput>.\bin</DCC_ExeOutput>
<DCC_UnitSearchPath>C:\RADTOOLS\FastMM4;$(DCC_UnitSearchPath)</DCC_UnitSearchPath>
<VerInfo_Keys>CompanyName=EM Systems;FileDescription=$(MSBuildProjectName);FileVersion=0.8.
6
.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=0.9.11;Comments=</VerInfo_Keys>
<VerInfo_Keys>CompanyName=EM Systems;FileDescription=$(MSBuildProjectName);FileVersion=0.8.
8
.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=0.9.11;Comments=</VerInfo_Keys>
<VerInfo_MajorVer>0</VerInfo_MajorVer>
<VerInfo_MinorVer>8</VerInfo_MinorVer>
<VerInfo_Release>
6
</VerInfo_Release>
<VerInfo_Release>
8
</VerInfo_Release>
</PropertyGroup>
<PropertyGroup Condition="'$(Cfg_1_Win64)'!=''">
<AppDPIAwarenessMode>PerMonitorV2</AppDPIAwarenessMode>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment