Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
emiMobile
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
emiMobile
Commits
2607279b
Commit
2607279b
authored
Jul 03, 2026
by
Mac Stephens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
wip - finishing task items from 630
parent
8ef6fb7a
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
89 additions
and
47 deletions
+89
-47
Api.Database.dfm
emiMobileServer/Source/Api.Database.dfm
+26
-10
Api.Database.pas
emiMobileServer/Source/Api.Database.pas
+2
-0
Api.ServiceImpl.pas
emiMobileServer/Source/Api.ServiceImpl.pas
+12
-7
Auth.Service.pas
emiMobileServer/Source/Auth.Service.pas
+0
-6
Auth.ServiceImpl.pas
emiMobileServer/Source/Auth.ServiceImpl.pas
+2
-2
emiMobileServer.ini
emiMobileServer/bin/emiMobileServer.ini
+1
-1
View.Login.html
webEMIMobile/View.Login.html
+2
-2
View.Main.dfm
webEMIMobile/View.Main.dfm
+26
-12
View.Main.html
webEMIMobile/View.Main.html
+6
-2
View.Main.pas
webEMIMobile/View.Main.pas
+10
-3
View.Map.pas
webEMIMobile/View.Map.pas
+0
-0
uMapFilters.pas
webEMIMobile/uMapFilters.pas
+2
-2
No files found.
emiMobileServer/Source/Api.Database.dfm
View file @
2607279b
...
...
@@ -43,8 +43,7 @@ object ApiDatabaseModule: TApiDatabaseModule
'LEFT JOIN PERSONNEL p1 ON p1.PF_NAMEID = dua.OFFICER1ID'
'LEFT JOIN PERSONNEL p2 ON p2.PF_NAMEID = dua.OFFICER2ID'
'WHERE uc.GPS_LATITUDE IS NOT NULL'
' AND uc.GPS_LONGITUDE IS NOT NULL'
' AND ag.AGENCYTYPE = '#39'POL'#39)
' AND uc.GPS_LONGITUDE IS NOT NULL')
ReadOnly = True
Left = 466
Top = 390
...
...
@@ -447,12 +446,12 @@ object ApiDatabaseModule: TApiDatabaseModule
'ECTOR AND cs.CODE_TYPE = cd.AGENCYCODE'
'WHERE ca.COMPLAINT IS NOT NULL'
'ORDER BY COALESCE(c
d.CODE_DESC, '#39#39'), ct.DATEREPORTED DESC, ca.P
R' +
'I
ORI
TY DESC')
'ORDER BY COALESCE(c
a.AGENCY, '#39#39'), ct.DATEREPORTED DESC, ca.PRIO
R' +
'ITY DESC')
ReadOnly = True
OnCalcFields = uqComplaintListCalcFields
Left =
78
Top = 24
4
Left =
80
Top = 24
8
object uqComplaintListcomplaintid: TFloatField
FieldName = 'complaintid'
Required = True
...
...
@@ -676,7 +675,7 @@ object ApiDatabaseModule: TApiDatabaseModule
'WHERE ca.COMPLAINTID = :COMPLAINTID;'
'')
ReadOnly = True
Left = 8
0
Left = 8
2
Top = 302
ParamData = <
item
...
...
@@ -824,20 +823,26 @@ object ApiDatabaseModule: TApiDatabaseModule
'SELECT'
' ca.COMPLAINTID,'
' cd.CODE_DESC AS DISPATCHDISTRICT,'
' ca.AGENCY AS AGENCY,'
' ag.AGENCYNAME AS AGENCY_NAME,'
' ca.PRIORITY AS PRIORITY,'
' ca.BUSINESS,'
' cdc.CATEGORY AS DISPATCHCODECATEGORY,'
''
' ST_X('
' ST_Transform('
' ST_SetSRID(ST_MakePoint(ca.XCOORD, ca.YCOORD), 2262),'
' ST_SetSRID(ST_MakePoint(ca.XCOORD::double precision, ca.YC' +
'OORD::double precision), 2262),'
' 4326'
' )'
' ) AS LNG,'
''
' ST_Y('
' ST_Transform('
' ST_SetSRID(ST_MakePoint(ca.XCOORD, ca.YCOORD), 2262),'
' ST_SetSRID(ST_MakePoint(ca.XCOORD::double precision, ca.YC' +
'OORD::double precision), 2262),'
' 4326'
' )'
' ) AS LAT,'
...
...
@@ -851,6 +856,8 @@ object ApiDatabaseModule: TApiDatabaseModule
' ON cdc.CODE = ca.DISPATCHCODE'
'LEFT JOIN CD_DISTRICT cd'
' ON cd.AGENCYCODE = ca.DISPATCHDISTRICT'
'LEFT JOIN AGENCY ag'
' ON ag.AGENCYID = ca.AGENCY'
'WHERE ca.COMPLAINT IS NOT NULL'
' AND ca.XCOORD IS NOT NULL'
' AND ca.YCOORD IS NOT NULL')
...
...
@@ -907,6 +914,15 @@ object ApiDatabaseModule: TApiDatabaseModule
FieldName = 'pngName'
Calculated = True
end
object uqMapComplaintsagency: TStringField
FieldName = 'agency'
Size = 6
end
object uqMapComplaintsagency_name: TStringField
FieldName = 'agency_name'
ReadOnly = True
Size = 40
end
end
object uqBadgeCounts: TUniQuery
Connection = ucENTCAD
...
...
@@ -923,7 +939,7 @@ object ApiDatabaseModule: TApiDatabaseModule
' where ag.AGENCYTYPE = '#39'POL'#39') as Units')
ReadOnly = True
Left = 200
Top = 19
0
Top = 19
2
object uqBadgeCountscomplaints: TLargeintField
FieldName = 'complaints'
ReadOnly = True
...
...
emiMobileServer/Source/Api.Database.pas
View file @
2607279b
...
...
@@ -195,6 +195,8 @@ type
uqMapUnitsofficer2_lname
:
TStringField
;
uqMapUnitsofficer2_fname
:
TStringField
;
uqMapUnitsofficer2_empnum
:
TStringField
;
uqMapComplaintsagency
:
TStringField
;
uqMapComplaintsagency_name
:
TStringField
;
procedure
uqComplaintListCalcFields
(
DataSet
:
TDataSet
);
procedure
uqMapComplaintsCalcFields
(
DataSet
:
TDataSet
);
procedure
DataModuleCreate
(
Sender
:
TObject
);
...
...
emiMobileServer/Source/Api.ServiceImpl.pas
View file @
2607279b
...
...
@@ -154,6 +154,8 @@ begin
item
.
AddPair
(
'ComplaintId'
,
ApiDB
.
uqMapComplaintsCOMPLAINTID
.
AsString
);
item
.
AddPair
(
'DispatchDistrict'
,
ApiDB
.
uqMapComplaintsDISPATCHDISTRICT
.
AsString
);
item
.
AddPair
(
'Agency'
,
ApiDB
.
uqMapComplaintsAGENCY
.
AsString
);
item
.
AddPair
(
'AgencyName'
,
ApiDB
.
uqMapComplaintsAGENCY_NAME
.
AsString
);
item
.
AddPair
(
'DispatchCodeDesc'
,
ApiDB
.
uqMapComplaintsDISPATCH_CODE_DESC
.
AsString
);
item
.
AddPair
(
'DispatchCodeCategory'
,
ApiDB
.
uqMapComplaintsDISPATCHCODECATEGORY
.
AsString
);
item
.
AddPair
(
'Priority'
,
ApiDB
.
uqMapComplaintsPRIORITY
.
AsString
);
...
...
@@ -225,6 +227,7 @@ begin
item
.
AddPair
(
'UnitId'
,
ApiDB
.
uqMapUnitsUNITID
.
AsString
);
item
.
AddPair
(
'UnitName'
,
ApiDB
.
uqMapUnitsUNITNAME
.
AsString
);
item
.
AddPair
(
'UnitBadge'
,
ApiDB
.
uqMapUnitsUNITNAME
.
AsString
);
item
.
AddPair
(
'Agency'
,
ApiDB
.
uqMapUnitsAGENCY
.
AsString
);
item
.
AddPair
(
'AgencyName'
,
ApiDB
.
uqMapUnitsAGENCY_NAME
.
AsString
);
...
...
@@ -311,13 +314,15 @@ begin
var
item
:=
TJSONObject
.
Create
;
var
curDistrict
:=
ApiDB
.
uqComplaintListDISPATCHDISTRICT
.
AsString
;
if
not
SameText
(
curDistrict
,
lastDistrict
)
then
item
.
AddPair
(
'DistrictHeader'
,
curDistrict
);
lastDistrict
:=
curDistrict
;
var
curAgency
:=
Trim
(
ApiDB
.
uqComplaintListAGENCY
.
AsString
);
if
curAgency
=
''
then
curAgency
:=
'Unknown Agency'
;
var
districtSector
:=
ApiDB
.
uqComplaintListDISTRICT_DESC
.
AsString
+
ApiDB
.
uqComplaintListSECTOR_DESC
.
AsString
;
item
.
AddPair
(
'DistrictSector'
,
districtSector
);
if
not
SameText
(
curAgency
,
lastDistrict
)
then
item
.
AddPair
(
'DistrictHeader'
,
curAgency
);
lastDistrict
:=
curAgency
;
item
.
AddPair
(
'DistrictSector'
,
'Agency: '
+
curAgency
);
var
colorVal
:=
ApiDB
.
uqComplaintListPRIORITY_COLOR
.
AsInteger
;
item
.
AddPair
(
'PriorityColor'
,
'#'
+
IntToHex
(
colorVal
and
$
FFFFFF
,
6
));
...
...
@@ -336,7 +341,7 @@ begin
item
.
AddPair
(
'Business'
,
ApiDB
.
uqComplaintListBUSINESS
.
AsString
);
item
.
AddPair
(
'CFSId'
,
ApiDB
.
uqComplaintListCFSID
.
AsString
);
item
.
AddPair
(
'Status'
,
status
);
item
.
AddPair
(
'DispatchDistrict'
,
curDistrict
);
item
.
AddPair
(
'DispatchDistrict'
,
ApiDB
.
uqComplaintListDISPATCHDISTRICT
.
AsString
);
item
.
AddPair
(
'DateReported'
,
ApiDB
.
uqComplaintListDATEREPORTED
.
AsString
);
data
.
AddElement
(
item
);
...
...
emiMobileServer/Source/Auth.Service.pas
View file @
2607279b
...
...
@@ -58,9 +58,3 @@ begin
end
;
end
.
constructor
TAgencyItem
.
Create
(
AAgency
:
String
);
begin
agency
:=
AAgency
;
end
;
end
.
emiMobileServer/Source/Auth.ServiceImpl.pas
View file @
2607279b
...
...
@@ -77,7 +77,7 @@ begin
authDB
.
uqAuth
.
SQL
.
Text
:=
'select agencyid as agency '
+
'from lems.agency '
+
'where
agencytype = ''POL
'' '
+
'where
login = ''T
'' '
+
'order by agencyid'
;
authDB
.
uqAuth
.
Open
;
...
...
@@ -119,7 +119,7 @@ begin
sql
:=
'select agencyid, agencyname '
+
'from lems.agency '
+
'where
agencytype = ''POL
'' '
+
'where
login = ''T
'' '
+
'order by agencyname'
;
authDB
.
uqAuth
.
SQL
.
Text
:=
sql
;
...
...
emiMobileServer/bin/emiMobileServer.ini
View file @
2607279b
[Settings]
LogFileNum
=
695
LogFileNum
=
706
webClientVersion
=
0.1.0
[Database]
...
...
webEMIMobile/View.Login.html
View file @
2607279b
...
...
@@ -53,8 +53,8 @@
</button>
</div>
<div
class=
"card-footer text-muted small"
>
Please use your
CHARMS
username
&
password to login.
<br><br>
For non-
CHARMS
users, please call the CPS Help Desk at
Please use your
lems
username
&
password to login.
<br><br>
For non-
lems
users, please call the CPS Help Desk at
(716) 858-7773 during business hours
<br>
or email:
<a
href=
"mailto:CPSHelpdesk@erie.gov"
>
CPSHelpdesk@erie.gov
</a>
</div>
...
...
webEMIMobile/View.Main.dfm
View file @
2607279b
...
...
@@ -16,18 +16,6 @@ object FViewMain: TFViewMain
Visible = False
WidthPercent = 100.000000000000000000
end
object wllblLogout: TWebLinkLabel
Left = 551
Top = 85
Width = 41
Height = 15
ElementID = 'dropdown.menu.logout'
Visible = False
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = wllblLogoutClick
Caption = ' Logout'
end
object lblAppTitle: TWebLabel
Left = 57
Top = 31
...
...
@@ -82,6 +70,18 @@ object FViewMain: TFViewMain
ElementID = 'pnl_main'
ChildOrder = 3
TabOrder = 0
object WebButton1: TWebButton
Left = 456
Top = 20
Width = 96
Height = 25
Caption = 'WebButton1'
ElementClassName = 'btn btn-light'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
end
object WebMessageDlg1: TWebMessageDlg
Left = 47
...
...
@@ -219,6 +219,20 @@ object FViewMain: TFViewMain
OnClick = btnArchiveModalCloseClick
end
end
object btnLogout: TWebButton
Left = 438
Top = 66
Width = 96
Height = 25
Caption = 'Logout'
ChildOrder = 16
ElementID = 'btn_logout'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btnLogoutClick
end
object xdwcBadgeCounts: TXDataWebClient
Connection = DMConnection.ApiConnection
Left = 44
...
...
webEMIMobile/View.Main.html
View file @
2607279b
...
...
@@ -11,8 +11,12 @@
<span
id=
"lbl_main_title"
class=
"navbar-brand text-light mb-0 ms-1"
></span>
</div>
<!-- Right: Connection label -->
<span
id=
"view.main.lblconnection"
class=
"navbar-text text-light ms-auto"
></span>
<!-- Right: Connection / Logout -->
<div
class=
"d-flex align-items-center gap-2 ms-auto"
>
<span
id=
"view.main.lblconnection"
class=
"navbar-text text-light small"
></span>
<button
id=
"btn_logout"
type=
"button"
class=
"btn btn-outline-light btn-sm"
>
Logout
</button>
</div>
</div>
</nav>
...
...
webEMIMobile/View.Main.pas
View file @
2607279b
...
...
@@ -11,7 +11,6 @@ uses
type
TFViewMain
=
class
(
TWebForm
)
lblUsername
:
TWebLabel
;
wllblLogout
:
TWebLinkLabel
;
pnlMain
:
TWebPanel
;
WebMessageDlg1
:
TWebMessageDlg
;
lblAppTitle
:
TWebLabel
;
...
...
@@ -32,9 +31,11 @@ type
btnDetailsModalClose
:
TWebButton
;
pnlArchive
:
TWebPanel
;
btnArchiveModalClose
:
TWebButton
;
WebButton1
:
TWebButton
;
btnLogout
:
TWebButton
;
procedure
WebFormCreate
(
Sender
:
TObject
);
procedure
mnuLogoutClick
(
Sender
:
TObject
);
procedure
wl
lblLogoutClick
(
Sender
:
TObject
);
procedure
lblLogoutClick
(
Sender
:
TObject
);
procedure
btnUnitsClick
(
Sender
:
TObject
);
procedure
btnComplaintsClick
(
Sender
:
TObject
);
procedure
btnMapClick
(
Sender
:
TObject
);
...
...
@@ -42,6 +43,7 @@ type
procedure
tmrGlobalRefreshTimer
(
Sender
:
TObject
);
procedure
btnDetailsModalCloseClick
(
Sender
:
TObject
);
procedure
btnArchiveModalCloseClick
(
Sender
:
TObject
);
procedure
btnLogoutClick
(
Sender
:
TObject
);
private
{ Private declarations }
FUserInfo
:
string
;
...
...
@@ -229,7 +231,7 @@ begin
end
;
procedure
TFViewMain
.
wl
lblLogoutClick
(
Sender
:
TObject
);
procedure
TFViewMain
.
lblLogoutClick
(
Sender
:
TObject
);
begin
FLogoutProc
;
end
;
...
...
@@ -252,6 +254,11 @@ begin
HideDetailsModal
;
end
;
procedure
TFViewMain
.
btnLogoutClick
(
Sender
:
TObject
);
begin
FLogoutProc
;
end
;
procedure
TFViewMain
.
btnMapClick
(
Sender
:
TObject
);
begin
ShowForm
(
TFViewMap
);
...
...
webEMIMobile/View.Map.pas
View file @
2607279b
This diff is collapsed.
Click to expand it.
webEMIMobile/uMapFilters.pas
View file @
2607279b
...
...
@@ -183,9 +183,9 @@ begin
// - complaints: m.DataString := 'complaint'
showMarker
:=
True
;
if
SameText
(
ds
,
'unit'
)
then
if
SameText
(
ds
,
'unit'
)
or
StartsText
(
'unit|'
,
ds
)
then
showMarker
:=
FShowUnits
else
if
S
tartsText
(
'complaint'
,
LowerCase
(
ds
)
)
then
else
if
S
ameText
(
ds
,
'complaint'
)
or
StartsText
(
'complaint|'
,
ds
)
then
showMarker
:=
FShowComplaints
else
if
SameText
(
ds
,
'device'
)
then
showMarker
:=
FShowLocation
;
...
...
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