Commit 731ef776 by Mac Stephens

Units is up and working

parent d011eb7b
......@@ -67,52 +67,51 @@ object ApiDatabaseModule: TApiDatabaseModule
object uqDISUnitsActive: TUniQuery
Connection = ucENTCAD
SQL.Strings = (
'SELECT'
' dua.UNITID,'
' dua.UNITNAME,'
' cun.CODE_DESC AS CARNUMBER_DESC,'
' cd.CODE_DESC AS DISTRICT_DESC,'
' cs.CODE_DESC AS SECTOR_DESC,'
' p1.PF_EMPNUM AS OFFICER1_EMPNUM,'
' p1.PF_LNAME AS OFFICER1_LAST_NAME,'
' p1.PF_FNAME AS OFFICER1_FIRST_NAME,'
' p1.PF_MI AS OFFICER1_MI,'
' p2.PF_EMPNUM AS OFFICER2_EMPNUM,'
' p2.PF_LNAME AS OFFICER2_LAST_NAME,'
' p2.PF_FNAME AS OFFICER2_FIRST_NAME,'
' p2.PF_MI AS OFFICER2_MI,'
' ca.LOCATION,'
' ca.COMPLAINT,'
' ca.UNITSTATUS,'
' cus.CODE_DESC AS UNIT_STATUS_DESC,'
' uc.ENTRYID,'
' uc.GPS_LATITUDE,'
' uc.GPS_LONGITUDE'
'SELECT dua.UNITID, dua.UNITNAME,'
' cun.CODE_DESC AS CARNUMBER_DESC,'
' cd.CODE_DESC AS DISTRICT_DESC,'
' cs.CODE_DESC AS SECTOR_DESC,'
' p1.PF_EMPNUM AS OFFICER1_EMPNUM,'
' p1.PF_LNAME AS OFFICER1_LAST_NAME,'
' p1.PF_FNAME AS OFFICER1_FIRST_NAME,'
' p1.PF_MI AS OFFICER1_MI,'
' p2.PF_EMPNUM AS OFFICER2_EMPNUM,'
' p2.PF_LNAME AS OFFICER2_LAST_NAME,'
' p2.PF_FNAME AS OFFICER2_FIRST_NAME,'
' p2.PF_MI AS OFFICER2_MI,'
' ca.LOCATION,'
' ca.COMPLAINT,'
' ca.UNITSTATUS,'
' cus.CODE_DESC AS UNIT_STATUS_DESC,'
' uc.ENTRYID,'
' uc.GPS_LATITUDE,'
' uc.GPS_LONGITUDE'
'FROM DIS_UNITS_ACTIVE dua'
'LEFT JOIN CD_UNIT_NUMBER cun ON cun.AGENCYCODE = dua.CA' +
'RNUMBER'
'LEFT JOIN CD_UNIT_NUMBER cun ON cun.AGENCYCODE = dua.CAR' +
'NUMBER'
'LEFT JOIN CD_DISTRICT cd ON cd.AGENCYCODE = dua.DI' +
'STRICT'
'LEFT JOIN CD_DISTRICT cd ON cd.AGENCYCODE = dua.DIS' +
'TRICT'
'LEFT JOIN CD_SECTOR cs ON cs.AGENCYCODE = dua.SE' +
'CTOR AND cs.CODE_TYPE = cd.AGENCYCODE'
'LEFT JOIN CD_SECTOR cs ON cs.AGENCYCODE = dua.SEC' +
'TOR AND cs.CODE_TYPE = cd.AGENCYCODE'
'LEFT JOIN PERSONNEL p1 ON dua.OFFICER1ID = p1.PF_' +
'NAMEID'
'LEFT JOIN PERSONNEL p1 ON dua.OFFICER1ID = p1.PF_N' +
'AMEID'
'LEFT JOIN PERSONNEL p2 ON dua.OFFICER2ID = p2.PF_' +
'NAMEID'
'LEFT JOIN PERSONNEL p2 ON dua.OFFICER2ID = p2.PF_N' +
'AMEID'
'LEFT JOIN CFS_ACTIVE ca ON dua.UNITID = ca.UNI' +
'TID'
'LEFT JOIN CFS_ACTIVE ca ON dua.UNITID = ca.UNIT' +
'ID'
'LEFT JOIN CD_UNITSTATUS cus ON ca.UNITSTATUS = cus.CO' +
'DE'
'LEFT JOIN CD_UNITSTATUS cus ON ca.UNITSTATUS = cus.COD' +
'E'
'LEFT JOIN UNITS_CURRENT@AVL_LINK uc ON dua.UNITID = uc.UNI' +
'TID')
'LEFT JOIN UNITS_CURRENT@AVL_LINK uc ON dua.UNITID = uc.UNIT' +
'ID'
'FETCH FIRST 100 ROWS ONLY')
ReadOnly = True
Left = 462
Top = 374
......@@ -188,14 +187,6 @@ object ApiDatabaseModule: TApiDatabaseModule
ReadOnly = True
Size = 10
end
object uqDISUnitsActiveUNITSTATUS: TFloatField
FieldName = 'UNITSTATUS'
ReadOnly = True
end
object uqDISUnitsActiveUNIT_STATUS_DESC: TStringField
FieldName = 'UNIT_STATUS_DESC'
ReadOnly = True
end
object uqDISUnitsActiveENTRYID: TFloatField
FieldName = 'ENTRYID'
ReadOnly = True
......@@ -208,6 +199,14 @@ object ApiDatabaseModule: TApiDatabaseModule
FieldName = 'GPS_LONGITUDE'
ReadOnly = True
end
object uqDISUnitsActiveUNITSTATUS: TFloatField
FieldName = 'UNITSTATUS'
ReadOnly = True
end
object uqDISUnitsActiveUNIT_STATUS_DESC: TStringField
FieldName = 'UNIT_STATUS_DESC'
ReadOnly = True
end
end
object uqCFSActive: TUniQuery
Connection = ucENTCAD
......@@ -335,17 +334,32 @@ object ApiDatabaseModule: TApiDatabaseModule
' ct.DATEDISPATCHED,'
' ct.DATERESPONDED,'
' ct.DATEARRIVED,'
' ct.DATECLEARED'
' ct.DATECLEARED,'
' cp.COLOR AS PRIORITY_COLOR,'
' cd.CODE_DESC AS DISTRICT_DESC,'
' cs.CODE_DESC AS SECTOR_DESC'
'FROM COMPLAINT_ACTIVE ca'
'JOIN COMPLAINT_TIMES ct ON ca.COMPLAINTID = ct.COMPLAINTID'
'LEFT JOIN CD_DISPATCHCODES cdc ON ca.DISPATCHCODE = cdc.CODE'
'LEFT JOIN CD_CALLSOURCES ccs ON ca.SOURCE = ccs.CODE'
'LEFT JOIN CD_CALLPRIORITIES cp ON cp.CODE = ca.PRIORITY AND cp.A' +
'GENCY = ca.AGENCY'
'LEFT JOIN CD_DISTRICT cd ON cd.AGENCYCODE = ca.DISPATCHDI' +
'STRICT'
'LEFT JOIN CD_SECTOR cs ON cs.AGENCYCODE = ca.DISPATCHSE' +
'CTOR AND cs.CODE_TYPE = cd.AGENCYCODE '
'WHERE ca.COMPLAINT IS NOT NULL'
'ORDER BY ct.DATEREPORTED DESC, ca.PRIORITY DESC'
'ORDER BY ca.DISPATCHDISTRICT, ct.DATEREPORTED DESC, ca.PRIORITY ' +
'DESC'
'FETCH FIRST 10 ROWS ONLY')
ReadOnly = True
OnCalcFields = uqComplaintListCalcFields
Left = 76
Top = 322
Top = 324
object uqComplaintListCOMPLAINTID: TFloatField
FieldName = 'COMPLAINTID'
Required = True
......@@ -452,6 +466,26 @@ object ApiDatabaseModule: TApiDatabaseModule
FieldName = 'DATECLEARED'
ReadOnly = True
end
object uqComplaintListcomplaintNumber: TStringField
FieldKind = fkCalculated
FieldName = 'complaintNumber'
Size = 11
Calculated = True
end
object uqComplaintListPRIORITY_COLOR: TFloatField
FieldName = 'PRIORITY_COLOR'
ReadOnly = True
end
object uqComplaintListDISTRICT_DESC: TStringField
FieldName = 'DISTRICT_DESC'
ReadOnly = True
Size = 120
end
object uqComplaintListSECTOR_DESC: TStringField
FieldName = 'SECTOR_DESC'
ReadOnly = True
Size = 120
end
end
object uqComplaintDetails: TUniQuery
Connection = ucENTCAD
......@@ -617,6 +651,7 @@ object ApiDatabaseModule: TApiDatabaseModule
Port = 1521
Username = 'ENTCAD'
Server = 'BUFENTCAD'
Connected = True
LoginPrompt = False
Left = 76
Top = 244
......
......@@ -113,12 +113,17 @@ type
uqDISUnitsActiveOFFICER2_MI: TStringField;
uqDISUnitsActiveLOCATION: TStringField;
uqDISUnitsActiveCOMPLAINT: TStringField;
uqDISUnitsActiveUNITSTATUS: TFloatField;
uqDISUnitsActiveUNIT_STATUS_DESC: TStringField;
uqDISUnitsActiveENTRYID: TFloatField;
uqDISUnitsActiveGPS_LATITUDE: TFloatField;
uqDISUnitsActiveGPS_LONGITUDE: TFloatField;
uqComplaintListcomplaintNumber: TStringField;
uqComplaintListPRIORITY_COLOR: TFloatField;
uqComplaintListDISTRICT_DESC: TStringField;
uqComplaintListSECTOR_DESC: TStringField;
uqDISUnitsActiveUNITSTATUS: TFloatField;
uqDISUnitsActiveUNIT_STATUS_DESC: TStringField;
procedure DataModuleCreate(Sender: TObject);
procedure uqComplaintListCalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
......@@ -194,4 +199,19 @@ begin
end;
end;
procedure TApiDatabaseModule.uqComplaintListCalcFields(DataSet: TDataSet);
var
raw: string;
begin
raw := uqComplaintListCOMPLAINT.AsString.Trim;
if raw.Length >= 3 then
uqComplaintListcomplaintNumber.AsString := Copy(raw, 1, 2) + '-' + Copy(raw, 3, MaxInt)
else if raw.Length = 2 then
uqComplaintListcomplaintNumber.AsString := raw + '-'
else
uqComplaintListcomplaintNumber.AsString := raw;
end;
end.
......@@ -17,6 +17,7 @@ type
IApiService = interface(IInvokable)
['{4FCB7FAF-44E5-49D6-9C0F-EE44BFB33313}']
[HttpGet] function GetComplaintList: TJSONObject;
[HttpGet] function GetUnitList: TJSONObject;
end;
implementation
......
......@@ -4,8 +4,8 @@ interface
uses
XData.Server.Module, XData.Service.Common, Api.Database, Data.DB,
System.SysUtils, System.Generics.Collections, XData.Sys.Exceptions,
System.Hash, System.Classes, Common.Logging, System.JSON, Api.Service;
System.SysUtils, System.Generics.Collections, XData.Sys.Exceptions, System.StrUtils,
System.Hash, System.Classes, Common.Logging, System.JSON, Api.Service, VCL.Forms;
type
......@@ -18,6 +18,7 @@ type
procedure BeforeDestruction; override;
public
function GetComplaintList: TJSONObject;
function GetUnitList: TJSONObject;
end;
implementation
......@@ -42,6 +43,7 @@ end;
function TApiService.GetComplaintList: TJSONObject;
var
data: TJSONArray;
lastDistrict: string;
begin
Logger.Log(3, '---TApiService.GetComplaintList initiated');
......@@ -50,6 +52,7 @@ begin
data := TJSONArray.Create;
try
lastDistrict := '';
with ApiDB.uqComplaintList do
begin
Open;
......@@ -67,14 +70,35 @@ begin
status := 'Pending';
var item := TJSONObject.Create;
// Add a section header only when the district changes
var curDistrict := ApiDB.uqComplaintListDISPATCHDISTRICT.AsString;
if not SameText(curDistrict, lastDistrict) then
item.AddPair('DistrictHeader', curDistrict);
lastDistrict := curDistrict;
var districtSector := ApiDB.uqComplaintListDISTRICT_DESC.AsString + ApiDB.uqComplaintListSECTOR_DESC.AsString;
item.AddPair('DistrictSector', districtSector);
// existing color hex
var colorVal := ApiDB.uqComplaintListPRIORITY_COLOR.AsInteger;
item.AddPair('PriorityColor', '#' + IntToHex(colorVal and $FFFFFF, 6));
// Text is white only for the deep blue (255 = $0000FF), black otherwise
if (colorVal and $FFFFFF) = $0000FF then
item.AddPair('PriorityTextColor', '#FFFFFF')
else
item.AddPair('PriorityTextColor', '#000000');
item.AddPair('ComplaintId', ApiDB.uqComplaintListCOMPLAINTID.AsString);
item.AddPair('Complaint', ApiDB.uqComplaintListcomplaintNumber.AsString);
item.AddPair('Agency', ApiDB.uqComplaintListAGENCY.AsString);
item.AddPair('Priority', TJSONNumber.Create(ApiDB.uqComplaintListPRIORITY.AsString));
item.AddPair('Priority', ApiDB.uqComplaintListPRIORITY.AsString);
item.AddPair('DispatchCodeDesc', ApiDB.uqComplaintListDISPATCH_CODE_DESC.AsString);
item.AddPair('Address', ApiDB.uqComplaintListADDRESS.AsString);
item.AddPair('CFSId', ApiDB.uqComplaintListCFSID.AsString);
item.AddPair('Status', status);
item.AddPair('DispatchDistrict', ApiDB.uqComplaintListDISPATCHDISTRICT.AsString);
item.AddPair('DispatchDistrict', curDistrict);
item.AddPair('DateReported', ApiDB.uqComplaintListDATEREPORTED.AsString);
data.AddElement(item);
......@@ -95,6 +119,91 @@ begin
end;
function TApiService.GetUnitList: TJSONObject;
var
data: TJSONArray;
lastDistrict: string;
begin
Logger.Log(3, '---TApiService.GetUnitList initiated');
Result := TJSONObject.Create;
TXDataOperationContext.Current.Handler.ManagedObjects.Add(Result);
data := TJSONArray.Create;
try
lastDistrict := '';
with ApiDB.uqDISUnitsActive do
begin
Open;
First;
while not Eof do
begin
var item := TJSONObject.Create;
// Group header: show once when district changes (e.g., "1", "A")
var curDistrict := ApiDB.uqDISUnitsActiveDISTRICT_DESC.AsString;
if not SameText(curDistrict, lastDistrict) then
item.AddPair('DistrictHeader', curDistrict);
lastDistrict := curDistrict;
// Core unit identity
item.AddPair('UnitId', ApiDB.uqDISUnitsActiveUNITID.AsString);
item.AddPair('UnitName', ApiDB.uqDISUnitsActiveUNITNAME.AsString);
item.AddPair('CarNumberDesc', ApiDB.uqDISUnitsActiveCARNUMBER_DESC.AsString);
item.AddPair('District', curDistrict);
item.AddPair('Sector', ApiDB.uqDISUnitsActiveSECTOR_DESC.AsString);
// Current assignment (if any)
item.AddPair('Location', ApiDB.uqDISUnitsActiveLOCATION.AsString);
item.AddPair('Complaint', ApiDB.uqDISUnitsActiveCOMPLAINT.AsString);
// Status: default to "Available" when no active CFS row
var statusDesc := ApiDB.uqDISUnitsActiveUNIT_STATUS_DESC.AsString;
if statusDesc = '' then
statusDesc := 'Available';
item.AddPair('Status', statusDesc);
// Officers (LAST, FIRST [MI])
var o1 := Trim(ApiDB.uqDISUnitsActiveOFFICER1_LAST_NAME.AsString);
var f1 := Trim(ApiDB.uqDISUnitsActiveOFFICER1_FIRST_NAME.AsString);
var m1 := Trim(ApiDB.uqDISUnitsActiveOFFICER1_MI.AsString);
if o1 <> '' then
begin
if f1 <> '' then o1 := o1 + ', ' + f1;
if m1 <> '' then o1 := o1 + ' ' + m1;
item.AddPair('Officer1', o1);
end;
var o2 := Trim(ApiDB.uqDISUnitsActiveOFFICER2_LAST_NAME.AsString);
var f2 := Trim(ApiDB.uqDISUnitsActiveOFFICER2_FIRST_NAME.AsString);
var m2 := Trim(ApiDB.uqDISUnitsActiveOFFICER2_MI.AsString);
if o2 <> '' then
begin
if f2 <> '' then o2 := o2 + ', ' + f2;
if m2 <> '' then o2 := o2 + ' ' + m2;
item.AddPair('Officer2', o2);
end;
data.AddElement(item);
Next;
end;
end;
Result.AddPair('count', TJSONNumber.Create(data.Count));
Result.AddPair('returned', TJSONNumber.Create(data.Count));
Result.AddPair('data', data);
except
data.Free;
Logger.Log(3, '---TApiService.GetUnitList End (error)');
raise EXDataHttpException.Create(500, 'Failed to load units list');
end;
Logger.Log(3, '---TApiService.GetUnitList End');
end;
initialization
RegisterServiceType(TApiService);
......
......@@ -71,6 +71,7 @@ begin
FData.Free;
end;
procedure TFMain.ContactFormData(AText: String);
begin
if memoInfo.CanFocus then
......
[Settings]
LogFileNum=414
LogFileNum=451
webClientVersion=0.1.0
TwilioUpdateTime=1
TwilioUpdateTime=0
[Database]
Server=192.168.102.130
......
......@@ -11,7 +11,19 @@ object FViewComplaints: TFViewComplaints
ParentFont = False
Visible = True
OnCreate = WebFormCreate
object WebButton1: TWebButton
object lblEntries: TWebLabel
Left = 44
Top = 88
Width = 43
Height = 13
Caption = 'lblEntries'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
Visible = False
WidthPercent = 100.000000000000000000
end
object btnGroup: TWebButton
Left = 180
Top = 110
Width = 43
......@@ -25,7 +37,7 @@ object FViewComplaints: TFViewComplaints
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object WebButton2: TWebButton
object btnFilter: TWebButton
Left = 242
Top = 110
Width = 37
......@@ -39,7 +51,7 @@ object FViewComplaints: TFViewComplaints
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object Complaints: TWebButton
object btnRefresh: TWebButton
Left = 114
Top = 110
Width = 53
......@@ -52,6 +64,7 @@ object FViewComplaints: TFViewComplaints
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btnRefreshClick
end
object dblComplaintsList: TWebDBListControl
Left = 36
......@@ -63,39 +76,82 @@ object FViewComplaints: TFViewComplaints
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
ChildOrder = 3
DefaultItemClassName = 'list-group-item'
DefaultItemClassName = 'list-group-item p-1 border-0'
DefaultItemLinkClassName = 'list-group-link'
ElementFont = efCSS
ElementListClassName = 'list-group'
Items = <
item
ItemClassName = 'list-group-item'
Items = <>
LinkClassName = 'list-group-link'
Text = 'Item 0'
end
item
ItemClassName = 'list-group-item'
Items = <>
LinkClassName = 'list-group-link'
Text = 'Item 1'
end
item
ItemClassName = 'list-group-item'
Items = <>
LinkClassName = 'list-group-link'
Text = 'Item 2'
end>
ElementListClassName = 'list-group list-group-flush border-0'
Items = <>
Style = lsListGroup
DataSource = wdsComplaints
ItemTemplate =
'<div class="list-section-header small fw-semibold bg-body-second' +
'ary text-dark rounded-1 px-2 mb-1"> (%DistrictHeader%)</div><di' +
'v class="card border shadow-sm" style="--bs-card-bg:(%Priori' +
'tyColor%); --bs-card-color:(%PriorityTextColor%);"> <div class=' +
'"card-body py-2 px-3"> <div class="fw-bold text-uppercase sma' +
'll">(%Priority%): (%DispatchCodeDesc%)</div> <div class="smal' +
'l">(%Address%)</div> <div class="small text-opacity-75">(%Com' +
'plaint%): (%Status%)&nbsp;&nbsp;(%DistrictSector%)</div> <div' +
' class="small text-opacity-75">(%DateReported%)</div> </div></d' +
'iv>'
ListSource = wdsComplaints
end
object xdwcComplaints: TXDataWebClient
Connection = DMConnection.ApiConnection
Left = 92
Top = 416
Left = 58
Top = 410
end
object xdwdsComplaints: TXDataWebDataSet
Connection = DMConnection.ApiConnection
Left = 214
Top = 414
Left = 260
Top = 412
object xdwdsComplaintsComplaintId: TStringField
FieldName = 'ComplaintId'
end
object xdwdsComplaintsComplaint: TStringField
FieldName = 'Complaint'
end
object xdwdsComplaintsAgency: TStringField
FieldName = 'Agency'
end
object xdwdsComplaintsPriority: TStringField
FieldName = 'Priority'
end
object xdwdsComplaintsDispatchCodeDesc: TStringField
FieldName = 'DispatchCodeDesc'
end
object xdwdsComplaintsAddress: TStringField
FieldName = 'Address'
end
object xdwdsComplaintsStatus: TStringField
FieldName = 'Status'
end
object xdwdsComplaintsDispatchDistrict: TStringField
FieldName = 'DispatchDistrict'
end
object xdwdsComplaintsDateReported: TStringField
FieldName = 'DateReported'
end
object xdwdsComplaintsDistrictHeader: TStringField
FieldName = 'DistrictHeader'
end
object xdwdsComplaintsStatusColor: TStringField
FieldName = 'StatusColor'
end
object xdwdsComplaintsPriorityColor: TStringField
FieldName = 'PriorityColor'
end
object xdwdsComplaintsPriorityTextColor: TStringField
FieldName = 'PriorityTextColor'
end
object xdwdsComplaintsDistrictSector: TStringField
FieldName = 'DistrictSector'
end
end
object wdsComplaints: TWebDataSource
AutoEdit = False
DataSet = xdwdsComplaints
Left = 156
Top = 410
end
end
......@@ -48,7 +48,7 @@
</div>
<!-- Entry Count Label -->
<label id="lblentries" class="mt-2 d-block"></label>
<label id="complaints_lblentries" class="mt-2 d-block"></label>
<!-- Pagination -->
<nav aria-label="Page navigation">
......
......@@ -5,30 +5,40 @@ interface
uses
System.SysUtils, System.Classes, Web, WEBLib.Graphics, WEBLib.Forms, WEBLib.Dialogs,
Vcl.Controls, Vcl.StdCtrls, WEBLib.StdCtrls, WEBLib.Controls, WEBLib.Grids, WebLib.Lists,
XData.Web.Client, WEBLib.ExtCtrls, DB, XData.Web.JsonDataset, WebLib.DB,
XData.Web.Dataset, XData.Web.Connection, Vcl.Forms, DateUtils, WEBLib.DBCtrls;
XData.Web.Client, WEBLib.ExtCtrls, XData.Web.JsonDataset,
XData.Web.Dataset, XData.Web.Connection, Vcl.Forms, DateUtils, WEBLib.DBCtrls, System.Generics.Collections,
WEBLib.Menus, WEBLib.JSON, Auth.Service, WebLib.Storage, ConnectionModule, App.Types,
WEBLib.DB, Data.DB, XData.Web.DatasetCommon, JS, XData.Model.Classes, Utils;
type
TFViewComplaints = class(TWebForm)
xdwcComplaints: TXDataWebClient;
xdwdsComplaints: TXDataWebDataSet;
WebButton1: TWebButton;
WebButton2: TWebButton;
Complaints: TWebButton;
dblComplaintsList: TWebDBListControl;
xdwdsComplaintsComplaint: TStringField;
xdwdsComplaintsAgency: TStringField;
xdwdsComplaintsPriority: TStringField;
xdwdsComplaintsDispatchCodeDesc: TStringField;
xdwdsComplaintsAddress: TStringField;
xdwdsComplaintsStatus: TStringField;
xdwdsComplaintsDispatchDistrict: TStringField;
xdwdsComplaintsDateReported: TStringField;
lblEntries: TWebLabel;
btnRefresh: TWebButton;
btnGroup: TWebButton;
btnFilter: TWebButton;
wdsComplaints: TWebDataSource;
xdwdsComplaintsComplaintId: TStringField;
xdwdsComplaintsDistrictHeader: TStringField;
xdwdsComplaintsStatusColor: TStringField;
xdwdsComplaintsPriorityColor: TStringField;
xdwdsComplaintsPriorityTextColor: TStringField;
xdwdsComplaintsDistrictSector: TStringField;
procedure WebFormCreate(Sender: TObject);
procedure btnRefreshClick(Sender: TObject);
private
FChildForm: TWebForm;
var
PageNumber: integer;
PageSize: integer;
TotalPages: integer;
StartDate: string;
EndDate: string;
OrderBy: string;
Caller: string;
[async] procedure GetComplaints;
public
end;
var
......@@ -36,18 +46,71 @@ var
implementation
uses
JS, XData.Model.Classes,
ConnectionModule, Utils;
{$R *.dfm}
procedure TFViewComplaints.WebFormCreate(Sender: TObject);
begin
console.log('WebFormCreate: Starting setup...');
DMConnection.ApiConnection.Connected := True;
console.log('API connection active:', DMConnection.ApiConnection.Connected);
GetComplaints;
end;
//HTML for individual complaint cards can be found in the twebdblistcontrol HTMLString property
procedure TFViewComplaints.btnRefreshClick(Sender: TObject);
begin
GetComplaints;
end;
procedure TFViewComplaints.GetComplaints;
var
xdcResponse: TXDataClientResponse;
respObj: TJSObject;
complaintsCount: Integer;
begin
console.log('GetComplaints: Invoking API...');
Utils.ShowSpinner('spinner');
try
try
xdcResponse := await(xdwcComplaints.RawInvokeAsync('IApiService.GetComplaintList', []));
console.log('RawInvoke returned:', xdcResponse.Result);
respObj := TJSObject(xdcResponse.Result);
xdwdsComplaints.Close;
console.log('Dataset closed');
xdwdsComplaints.SetJsonData(respObj['data']);
console.log('JsonData set on dataset:', respObj['data']);
xdwdsComplaints.Open;
console.log('PriorityColor field name = ' +
xdwdsComplaintsPriorityColor.FieldName +
' sample value = ' +
xdwdsComplaintsPriorityColor.AsString);
if xdwdsComplaints.RecordCount > 0 then
begin
console.log('First record - Complaint:' + xdwdsComplaints.FieldByName('Complaint').AsString);
end;
complaintsCount := Integer(respObj['count']);
lblEntries.Caption := Format('%d active complaints', [complaintsCount]);
console.log('Label updated:' + lblEntries.Caption);
except
on E: EXDataClientRequestException do
begin
console.log('XData exception:' + E.ErrorResult.ErrorMessage);
Utils.ShowErrorModal(E.ErrorResult.ErrorMessage);
end;
end;
finally
Utils.HideSpinner('spinner');
console.log('GetComplaints complete');
end;
end;
end.
......
object FViewUnits: TFViewUnits
Width = 534
Height = 426
Width = 359
Height = 480
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
OnCreate = WebFormCreate
object lblEntries: TWebLabel
Left = 54
Top = 46
Width = 43
Height = 13
Caption = 'lblEntries'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
Visible = False
WidthPercent = 100.000000000000000000
end
object dblUnitsList: TWebDBListControl
Left = 50
Top = 146
Width = 263
Height = 237
ElementID = 'units_dbl_unit_list'
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
ChildOrder = 3
DefaultItemClassName = 'list-group-item p-1 border-0'
DefaultItemLinkClassName = 'list-group-link'
ElementFont = efCSS
ElementListClassName = 'list-group list-group-flush border-0'
Items = <>
Style = lsListGroup
DataSource = wdsUnits
ItemTemplate =
'<div class="list-section-header small fw-semibold bg-body-second' +
'ary text-dark rounded-1 px-2 mb-1"> (%DistrictHeader%)</div><di' +
'v class="card border shadow-sm"> <div class="card-body py-2 px-' +
'3"> <div class="d-flex justify-content-between align-items-ba' +
'seline"> <div class="fw-bold fs-6">(%UnitName%)</div> ' +
'<div class="small text-end text-body-secondary ms-3 text-truncat' +
'e">(%Location%)</div> </div> <div class="small">(%Status%)' +
'</div> <div class="small">(%Officer1%)</div> <div class="s' +
'mall">(%Officer2%)</div> </div></div>'
ListSource = wdsUnits
end
object btnRefresh: TWebButton
Left = 110
Top = 82
Width = 53
Height = 25
Caption = 'Refresh'
ChildOrder = 1
ElementClassName = 'btn btn-light'
ElementID = 'units_btnrefresh'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
OnClick = btnRefreshClick
end
object btnGroup: TWebButton
Left = 186
Top = 82
Width = 43
Height = 25
Caption = 'Group'
ChildOrder = 1
ElementClassName = 'btn btn-light'
ElementID = 'units_btngroup'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object btnFilter: TWebButton
Left = 250
Top = 82
Width = 37
Height = 25
Caption = 'Filter'
ChildOrder = 1
ElementClassName = 'btn btn-light'
ElementID = 'units_btnfilter'
ElementFont = efCSS
HeightStyle = ssAuto
HeightPercent = 100.000000000000000000
WidthPercent = 100.000000000000000000
end
object wdsUnits: TWebDataSource
AutoEdit = False
DataSet = xdwdsUnits
Left = 156
Top = 410
end
object xdwdsUnits: TXDataWebDataSet
Connection = DMConnection.ApiConnection
Left = 260
Top = 412
object xdwdsUnitsDistrictHeader: TStringField
FieldName = 'DistrictHeader'
end
object xdwdsUnitsUnitId: TStringField
FieldName = 'UnitId'
end
object xdwdsUnitsUnitName: TStringField
FieldName = 'UnitName'
end
object xdwdsUnitsLocation: TStringField
FieldName = 'Location'
end
object xdwdsUnitsStatus: TStringField
FieldName = 'Status'
end
object xdwdsUnitsOfficer1: TStringField
FieldName = 'Officer1'
end
object xdwdsUnitsOfficer2: TStringField
FieldName = 'Officer2'
end
end
object xdwcUnits: TXDataWebClient
Connection = DMConnection.ApiConnection
Left = 58
Top = 410
end
end
<div class="sticky-top">
<!-- Local navbar (Complaints) -->
<!-- Local navbar (Units) -->
<nav class="navbar navbar-dark bg-primary py-2"><!-- removed sticky-top -->
<div class="container-fluid">
<div class="row w-100 g-2 align-items-stretch">
<div class="col">
<span id="units.title" class="navbar-brand mb-0 h5 text-white">Units</span>
<span id="units_title" class="navbar-brand mb-0 h5 text-white">Units</span>
</div>
<div class="col">
<button id="units.btnrefresh" type="button" class="btn btn-primary w-100 h-100">
<button id="units_btnrefresh" type="button" class="btn btn-primary w-100 h-100">
<i class="fa fa-sync-alt me-1"></i><span class="d-none d-sm-inline">Refresh</span>
</button>
</div>
<div class="col">
<button id="units.btngroup" type="button" class="btn btn-primary w-100 h-100">
<button id="units_btngroup" type="button" class="btn btn-primary w-100 h-100">
<i class="fa fa-layer-group me-1"></i><span class="d-none d-sm-inline">Group</span>
</button>
</div>
<div class="col">
<button id="units.btnfilter" type="button" class="btn btn-primary w-100 h-100">
<button id="units_btnfilter" type="button" class="btn btn-primary w-100 h-100">
<i class="fa fa-sliders-h me-1"></i><span class="d-none d-sm-inline">Filter</span>
</button>
</div>
......@@ -31,51 +31,33 @@
<div class="container-fluid">
<div class="input-group">
<span class="input-group-text bg-white"><i class="fa fa-search"></i></span>
<input id="units.search" class="form-control" placeholder="Search...">
<input id="units_search" class="form-control" placeholder="Search...">
</div>
</div>
</div>
</div> <!-- /sticky-top wrapper -->
<!-- Existing content (unchanged) -->
<div class="row">
<div class="col-12">
<div class="container mt-4">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8">
<h1 class="page-header pt-3 pb-2 mb-3 border-bottom fs-4 fw-bold" id="view.calls.title">Units</h1>
<!-- Data Table -->
<div class="table-responsive mt-4">
<table class="table table-sm table-striped table-bordered align-middle" id="tblPhoneGrid">
<thead class="table-dark">
<tr>
<th scope="col">Phone Number</th>
<th scope="col">Caller</th>
<th scope="col">Time</th>
<th scope="col">Duration</th>
<th scope="col">Transcript</th>
<th scope="col">Listen</th>
</tr>
</thead>
<tbody>
<!-- Rows added dynamically in Delphi -->
</tbody>
</table>
</div>
<!-- Units list container -->
<div class="container-fluid mt-2">
<div class="row justify-content-center">
<div class="col-12 col-md-10 col-lg-8">
<!-- This is where the DBListControl will inject cards -->
<div id="units_dbl_unit_list" class="d-flex flex-column gap-2">
<!-- Cards will render here -->
</div>
<!-- Entry Count Label -->
<label id="lblentries" class="mt-2 d-block"></label>
<!-- Entry Count Label -->
<label id="unitss_lblentries" class="mt-2 d-block"></label>
<!-- Pagination -->
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center" id="pagination">
<!-- Pagination items added in Delphi -->
</ul>
</nav>
</div>
</div>
<!-- Pagination -->
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center" id="pagination">
<!-- Pagination items rendered in Delphi -->
</ul>
</nav>
</div>
</div>
</div>
......@@ -3,13 +3,34 @@ unit View.Units;
interface
uses
System.SysUtils, System.Classes, WEBLib.Graphics, WEBLib.Controls, WEBLib.Forms, WEBLib.Dialogs,
Vcl.Controls, Vcl.StdCtrls,
XData.Web.Connection, WEBLib.StdCtrls;
System.SysUtils, System.Classes, Web, WEBLib.Graphics, WEBLib.Forms, WEBLib.Dialogs,
Vcl.Controls, Vcl.StdCtrls, WEBLib.StdCtrls, WEBLib.Controls, WEBLib.Grids, WebLib.Lists,
XData.Web.Client, WEBLib.ExtCtrls, XData.Web.JsonDataset,
XData.Web.Dataset, XData.Web.Connection, Vcl.Forms, DateUtils, WEBLib.DBCtrls, System.Generics.Collections,
WEBLib.Menus, WEBLib.JSON, Auth.Service, WebLib.Storage, ConnectionModule, App.Types,
WEBLib.DB, Data.DB, XData.Web.DatasetCommon, JS, XData.Model.Classes, Utils;
type
TFViewUnits = class(TWebForm)
dblUnitsList: TWebDBListControl;
btnRefresh: TWebButton;
btnGroup: TWebButton;
btnFilter: TWebButton;
wdsUnits: TWebDataSource;
xdwdsUnits: TXDataWebDataSet;
xdwcUnits: TXDataWebClient;
lblEntries: TWebLabel;
xdwdsUnitsDistrictHeader: TStringField;
xdwdsUnitsUnitId: TStringField;
xdwdsUnitsUnitName: TStringField;
xdwdsUnitsLocation: TStringField;
xdwdsUnitsStatus: TStringField;
xdwdsUnitsOfficer1: TStringField;
xdwdsUnitsOfficer2: TStringField;
procedure WebFormCreate(Sender: TObject);
procedure btnRefreshClick(Sender: TObject);
private
[async] procedure GetUnits;
public
end;
......@@ -21,7 +42,61 @@ implementation
{$R *.dfm}
{ TFViewErrorPage }
procedure TFViewUnits.WebFormCreate(Sender: TObject);
begin
console.log('Units.WebFormCreate: Starting setup...');
DMConnection.ApiConnection.Connected := True;
console.log('API connection active:', DMConnection.ApiConnection.Connected);
GetUnits;
end;
procedure TFViewUnits.btnRefreshClick(Sender: TObject);
begin
GetUnits;
end;
procedure TFViewUnits.GetUnits;
var
xdcResponse: TXDataClientResponse;
respObj: TJSObject;
unitCount: Integer;
begin
console.log('GetUnits: Invoking API...');
Utils.ShowSpinner('spinner');
try
try
xdcResponse := await(xdwcUnits.RawInvokeAsync('IApiService.GetUnitList', []));
console.log('RawInvoke returned:', xdcResponse.Result);
respObj := TJSObject(xdcResponse.Result);
xdwdsUnits.Close;
console.log('Units dataset closed');
xdwdsUnits.SetJsonData(respObj['data']);
console.log('JsonData set on units dataset:', respObj['data']);
xdwdsUnits.Open;
console.log('Units dataset opened. Record count:', xdwdsUnits.RecordCount);
unitCount := Integer(respObj['count']);
lblEntries.Caption := Format('%d units', [unitCount]);
console.log('Units label updated:', lblEntries.Caption);
except
on E: EXDataClientRequestException do
begin
console.log('XData exception (units):', E.ErrorResult.ErrorMessage);
Utils.ShowErrorModal(E.ErrorResult.ErrorMessage);
end;
end;
finally
Utils.HideSpinner('spinner');
console.log('GetUnits complete');
end;
end;
end.
{
"type": "FeatureCollection",
"name": "BFDDistrict",
"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
"features": [
{ "type": "Feature", "properties": { "SBE4_ID": 0, "NAME": "District A", "FROMLEFT": 0, "TOLEFT": 0, "FROMRIGHT": 0, "TORIGHT": 0, "DIRECTION": null, "STREET": null, "ST_TYPE": null, "ST_PREFIX": null, "ST_SUFFIX": null, "CITY_LEFT": null, "CITY_RIGHT": null, "LO_X_PRE": null, "LO_X_NAME": null, "LO_X_TYPE": null, "LO_X_SUF": null, "HI_X_PRE": null, "HI_X_NAME": null, "HI_X_TYPE": null, "HI_X_SUF": null, "LHS": null, "RHS": null, "BDY_LEFT": null, "BDY_RIGHT": null, "ST_CODE": null, "RECNUM_L": 0, "RECNUM_R": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -78.838580621137581, 42.832640624242444 ], [ -78.838579379349227, 42.832637828223341 ], [ -78.853769883224203, 42.832256243942119 ], [ -78.85371958445721, 42.832194871720155 ], [ -78.853733424580213, 42.83219689697404 ], [ -78.860055694936989, 42.831634192917498 ], [ -78.86013734228284, 42.832269841506786 ], [ -78.859896026339129, 42.832680803438883 ], [ -78.860331112959102, 42.833777534545568 ], [ -78.86034975462735, 42.834904906086862 ], [ -78.85768545019738, 42.835848144550688 ], [ -78.858114869151507, 42.837605053389701 ], [ -78.857536532421037, 42.838545513856914 ], [ -78.858096352651074, 42.839687337785485 ], [ -78.861864583480241, 42.838698386233297 ], [ -78.86205975340269, 42.838902003038619 ], [ -78.862692380919711, 42.838804946201897 ], [ -78.862728132922896, 42.839242703902777 ], [ -78.859568800903887, 42.840181676978965 ], [ -78.859407395065432, 42.841296969378085 ], [ -78.865712578238899, 42.852676330854607 ], [ -78.87162174026551, 42.851292456357271 ], [ -78.872016282892517, 42.851882361006176 ], [ -78.872097013700895, 42.852401028660957 ], [ -78.868731884242095, 42.853274149621917 ], [ -78.869204890923257, 42.85390708456859 ], [ -78.872490649359548, 42.852817958505078 ], [ -78.876741180919694, 42.858996499122377 ], [ -78.874396356987731, 42.859770389677344 ], [ -78.873619753263739, 42.859660821705866 ], [ -78.87399285072668, 42.859861633865819 ], [ -78.874543180109029, 42.860234969333924 ], [ -78.875014936030652, 42.860593987099257 ], [ -78.8750512940248, 42.85997418590776 ], [ -78.876811140388725, 42.859277953228293 ], [ -78.882510814894758, 42.867189761467436 ], [ -78.878932430206248, 42.868654634149287 ], [ -78.879480450569972, 42.869349562574541 ], [ -78.883495141721355, 42.868167220890896 ], [ -78.883750388309764, 42.868756350747567 ], [ -78.880095121304095, 42.870078422117274 ], [ -78.880646408234384, 42.870624672382412 ], [ -78.884421489903062, 42.869274555253369 ], [ -78.890271939124617, 42.87558582502659 ], [ -78.887965695107951, 42.876802504379924 ], [ -78.890098621163943, 42.876205913975724 ], [ -78.890590430583615, 42.876593705838609 ], [ -78.890916063781987, 42.877700346284939 ], [ -78.883205768958902, 42.877189774239035 ], [ -78.882993797488041, 42.877925279047915 ], [ -78.882327302445603, 42.877883805165943 ], [ -78.880207061295906, 42.877067857368601 ], [ -78.87805895026365, 42.874522552122691 ], [ -78.877556716095029, 42.874857610217347 ], [ -78.875958954885036, 42.873857441685928 ], [ -78.875159693178475, 42.873656461201733 ], [ -78.873157675465777, 42.873156643168144 ], [ -78.87265780839121, 42.873155108530398 ], [ -78.872054850493441, 42.872990241069282 ], [ -78.871559627886398, 42.872856077792747 ], [ -78.871258478968869, 42.873855583344678 ], [ -78.870956750411864, 42.874756419191691 ], [ -78.87055656243021, 42.876156833702851 ], [ -78.870258536657332, 42.877056203810682 ], [ -78.870259928280817, 42.877356655895099 ], [ -78.869957241093033, 42.878057077538543 ], [ -78.86975904878048, 42.87875723695614 ], [ -78.869556577509613, 42.879355910320399 ], [ -78.869387780475122, 42.879951837575966 ], [ -78.869358376966289, 42.88005615122713 ], [ -78.869159247170458, 42.880555980676171 ], [ -78.86905751475463, 42.88115722766284 ], [ -78.86885745593024, 42.881456810125457 ], [ -78.864656316400058, 42.880655101515977 ], [ -78.859757939693296, 42.879956310487458 ], [ -78.857356707881706, 42.879457262118258 ], [ -78.854257382550315, 42.87885554952485 ], [ -78.851756334480143, 42.8785568410702 ], [ -78.850856794926287, 42.878457395030267 ], [ -78.848757851920865, 42.877957459459736 ], [ -78.847059027846299, 42.877656785921261 ], [ -78.84545768790359, 42.877457442727305 ], [ -78.8440576714939, 42.87725761889191 ], [ -78.842556244378372, 42.876857758658176 ], [ -78.841757388131555, 42.876755214333393 ], [ -78.841556799502669, 42.876955998075758 ], [ -78.839957561167893, 42.87815595557732 ], [ -78.839358996383396, 42.878656627987034 ], [ -78.839156194113883, 42.879255275929467 ], [ -78.83835691774442, 42.879056837484171 ], [ -78.837456569994913, 42.878756929372337 ], [ -78.836758064766627, 42.878555457288982 ], [ -78.835756447512608, 42.878157034814144 ], [ -78.834855713376044, 42.87775563809948 ], [ -78.833955401951215, 42.877455839483304 ], [ -78.833058755274735, 42.877155998336157 ], [ -78.832856931977261, 42.877057576053375 ], [ -78.829257334160488, 42.878157567817688 ], [ -78.828657889567353, 42.878457937354909 ], [ -78.8267574133816, 42.880956240808032 ], [ -78.825555243453209, 42.882657282618005 ], [ -78.824056066742116, 42.884759488306194 ], [ -78.816657238717056, 42.884857093087646 ], [ -78.816056162884067, 42.884756847493165 ], [ -78.815257702748966, 42.884755696219727 ], [ -78.814156862880751, 42.884755313966757 ], [ -78.809555878954654, 42.884657430116576 ], [ -78.808555783918976, 42.884656712606812 ], [ -78.807556279992795, 42.884757426604551 ], [ -78.806257466997707, 42.884655722425009 ], [ -78.805055921622497, 42.884655256607296 ], [ -78.803757485744924, 42.88465776349981 ], [ -78.803455133300602, 42.884655628692954 ], [ -78.802455159595638, 42.884657546665778 ], [ -78.801354855037332, 42.884755737814196 ], [ -78.800855880420585, 42.885055770186042 ], [ -78.800455932255147, 42.884856198273617 ], [ -78.799555682779072, 42.884556101935864 ], [ -78.799654572990747, 42.877657757946196 ], [ -78.799856701247919, 42.874655534437835 ], [ -78.799857449623246, 42.871656406417138 ], [ -78.799635042492156, 42.871657704791218 ], [ -78.799608714716484, 42.871083266097898 ], [ -78.799283115590782, 42.871049664274494 ], [ -78.799454480449356, 42.868457790234544 ], [ -78.799407204649867, 42.867320014669311 ], [ -78.800073311118354, 42.866957357716529 ], [ -78.800044716534117, 42.864412395692526 ], [ -78.800371824261092, 42.864428623694991 ], [ -78.800013598039598, 42.864409573490128 ], [ -78.799945757015792, 42.86264032885358 ], [ -78.799955478268046, 42.861355618675994 ], [ -78.800087783614686, 42.854413335610161 ], [ -78.800402549685344, 42.847371835462368 ], [ -78.800465911964508, 42.845722712118793 ], [ -78.799110043197146, 42.84636759509597 ], [ -78.79856968562261, 42.845972008220215 ], [ -78.796901482216654, 42.845326143395887 ], [ -78.798679696151751, 42.842891687094514 ], [ -78.79742912862821, 42.842044107335376 ], [ -78.796593525881221, 42.841252458318557 ], [ -78.796593277967546, 42.841180348947155 ], [ -78.79561273987504, 42.841001923524573 ], [ -78.796653480378495, 42.838356812365419 ], [ -78.7973547812921, 42.83845708334983 ], [ -78.798455419987192, 42.838658042838404 ], [ -78.799854997104532, 42.83905596076432 ], [ -78.800114269943663, 42.839298827327589 ], [ -78.800121452152496, 42.841353971681812 ], [ -78.800954430165106, 42.841352391840893 ], [ -78.80105438597424, 42.839756154286384 ], [ -78.800954249264223, 42.838856343380748 ], [ -78.800955176875547, 42.838057919673417 ], [ -78.801056798578884, 42.837256505681758 ], [ -78.800956591162702, 42.836356612199886 ], [ -78.800957162531574, 42.835456609345087 ], [ -78.800856332175471, 42.834356493668217 ], [ -78.800856905099536, 42.833456490495223 ], [ -78.800854452246867, 42.832756825752362 ], [ -78.800854678804555, 42.831757987354088 ], [ -78.801656174913674, 42.831756462252542 ], [ -78.805656489050051, 42.831757053110763 ], [ -78.807255799586315, 42.831756626304951 ], [ -78.808654312733736, 42.831858151928195 ], [ -78.809556107062647, 42.831757511090629 ], [ -78.812457260200006, 42.83195756431401 ], [ -78.813556600253534, 42.831856606340295 ], [ -78.814854467616954, 42.831958231069144 ], [ -78.815254119976032, 42.832157755265499 ], [ -78.815357794453462, 42.831957212445182 ], [ -78.817654269166127, 42.831958024622892 ], [ -78.818556087729135, 42.831857422619095 ], [ -78.819555557802161, 42.831956835203073 ], [ -78.820756081390527, 42.831957151448407 ], [ -78.82385750949274, 42.831857222247173 ], [ -78.823955379359887, 42.831157347180735 ], [ -78.823956394179447, 42.830457675485583 ], [ -78.823857834211026, 42.829055689472924 ], [ -78.8239569963159, 42.82775761128412 ], [ -78.823956878334343, 42.826756138706585 ], [ -78.824270151467147, 42.826743955649128 ], [ -78.825254871013783, 42.826740809659682 ], [ -78.832859733663142, 42.826702349425297 ], [ -78.832970726887567, 42.825928159785164 ], [ -78.833854758436914, 42.825955589258797 ], [ -78.837158375362606, 42.825915168567825 ], [ -78.837726797591174, 42.829447708027431 ], [ -78.838478504947247, 42.832640028620709 ], [ -78.838580621137581, 42.832640624242444 ] ] ] ] } },
{ "type": "Feature", "properties": { "SBE4_ID": 1, "NAME": "District E", "FROMLEFT": 0, "TOLEFT": 0, "FROMRIGHT": 0, "TORIGHT": 0, "DIRECTION": null, "STREET": null, "ST_TYPE": null, "ST_PREFIX": null, "ST_SUFFIX": null, "CITY_LEFT": null, "CITY_RIGHT": null, "LO_X_PRE": null, "LO_X_NAME": null, "LO_X_TYPE": null, "LO_X_SUF": null, "HI_X_PRE": null, "HI_X_NAME": null, "HI_X_TYPE": null, "HI_X_SUF": null, "LHS": null, "RHS": null, "BDY_LEFT": null, "BDY_RIGHT": null, "ST_CODE": null, "RECNUM_L": 0, "RECNUM_R": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -78.83135838731252, 42.946055876655677 ], [ -78.830457761013733, 42.946856231049658 ], [ -78.829957986127056, 42.947054948618003 ], [ -78.836858858528231, 42.958456982912189 ], [ -78.83595805615208, 42.9583548178936 ], [ -78.831759186240831, 42.95835580296653 ], [ -78.83115725851971, 42.958255557825574 ], [ -78.829958131354147, 42.958255431111702 ], [ -78.828856385827848, 42.958356577970008 ], [ -78.82765685495157, 42.958254878182295 ], [ -78.826158798016664, 42.958255266970681 ], [ -78.825355700985639, 42.958256967700528 ], [ -78.824656694550697, 42.958156975888137 ], [ -78.822157505617739, 42.958156839199646 ], [ -78.820756503617915, 42.958156954762991 ], [ -78.819557377904218, 42.958156719090624 ], [ -78.818656729926502, 42.958057024236993 ], [ -78.817356630933958, 42.958057000472493 ], [ -78.815756379360749, 42.958655648454581 ], [ -78.814655722805838, 42.959055735912756 ], [ -78.814256710692703, 42.959256842446351 ], [ -78.813656408143274, 42.959557158732345 ], [ -78.812055603843234, 42.960056977439621 ], [ -78.810858317851512, 42.960556082171166 ], [ -78.80855649993903, 42.961455128370673 ], [ -78.808556641406597, 42.95905538611283 ], [ -78.807555691674963, 42.958955334769527 ], [ -78.8075556846577, 42.956555317351551 ], [ -78.803555667103964, 42.956555344613861 ], [ -78.803555710222753, 42.954555352043627 ], [ -78.808655616610892, 42.954655346219724 ], [ -78.808755637596704, 42.952255322156944 ], [ -78.810356727315778, 42.952155355087633 ], [ -78.810955498629298, 42.949456959125619 ], [ -78.803256895252787, 42.949356848211345 ], [ -78.798260549765104, 42.94926379980847 ], [ -78.798454639809037, 42.948655260106889 ], [ -78.798550139049141, 42.945208809996167 ], [ -78.798557412588266, 42.943856009896109 ], [ -78.798554783338417, 42.94095575828883 ], [ -78.798757866985625, 42.938156613636551 ], [ -78.798756824676403, 42.937857507547143 ], [ -78.798855410796321, 42.937256444303237 ], [ -78.798854712408485, 42.937056116455338 ], [ -78.798856706061073, 42.936556785168193 ], [ -78.798756895109364, 42.935755765988517 ], [ -78.798856604707169, 42.93545649758471 ], [ -78.798855208018779, 42.935055841755414 ], [ -78.798856159105142, 42.934257431455606 ], [ -78.798954580601659, 42.933557506750603 ], [ -78.798956563688861, 42.933055376437686 ], [ -78.798955520699749, 42.932756297523177 ], [ -78.798954477630886, 42.932457191154541 ], [ -78.798956609322019, 42.929856033293724 ], [ -78.799155762886727, 42.922757308165004 ], [ -78.799055197727725, 42.92175595902475 ], [ -78.798956070218281, 42.919056125478022 ], [ -78.799055128618349, 42.918556609769276 ], [ -78.799454283045222, 42.918457105177296 ], [ -78.800054256740182, 42.918156889411847 ], [ -78.800456783714296, 42.917955796927018 ], [ -78.801057105067628, 42.917757125798815 ], [ -78.80155672747378, 42.917555844750758 ], [ -78.802056207188116, 42.917357360535163 ], [ -78.802454989226121, 42.917156268155487 ], [ -78.80345780545899, 42.916756401201226 ], [ -78.803856903703789, 42.916656853904762 ], [ -78.804755137489181, 42.91625725926454 ], [ -78.805657092775974, 42.915857650327247 ], [ -78.806954527440098, 42.915355711896147 ], [ -78.807755983281623, 42.91505503448947 ], [ -78.808057645039966, 42.914856911604382 ], [ -78.808456723670673, 42.914757375724776 ], [ -78.809456090238214, 42.914456297072078 ], [ -78.810056088429604, 42.914156028667882 ], [ -78.810555550332339, 42.913957424994436 ], [ -78.811357082867673, 42.913656831921934 ], [ -78.811856489182247, 42.913455506238051 ], [ -78.812456391220152, 42.913155197963881 ], [ -78.81355576688965, 42.912656379465048 ], [ -78.813556198439798, 42.914640829675548 ], [ -78.81330446664127, 42.914579715671721 ], [ -78.81355622336676, 42.914755411822256 ], [ -78.814556580901453, 42.914756112336519 ], [ -78.815557162713134, 42.914756885970576 ], [ -78.816557594465252, 42.914757459094126 ], [ -78.817558165651363, 42.914755416513607 ], [ -78.818256145722728, 42.914756757777305 ], [ -78.819155785294967, 42.914757624719542 ], [ -78.820156244305437, 42.914755559662552 ], [ -78.821156446253028, 42.914657505838498 ], [ -78.821455090218222, 42.914656885101166 ], [ -78.822257239703006, 42.914556434655353 ], [ -78.822455128322289, 42.91455602152439 ], [ -78.823156988267698, 42.914557269928117 ], [ -78.823556423863408, 42.914556432537715 ], [ -78.824056614264222, 42.91455538195617 ], [ -78.825057080580791, 42.914556072803187 ], [ -78.826255435013962, 42.914556225453076 ], [ -78.827457447884839, 42.91455638519686 ], [ -78.828857461438815, 42.914556162759148 ], [ -78.829156067087453, 42.914555439698631 ], [ -78.832157862254618, 42.914655993557794 ], [ -78.832557335549936, 42.914655124679904 ], [ -78.837555965261672, 42.914655027677036 ], [ -78.838858697395693, 42.914654926337406 ], [ -78.842957736990499, 42.914656597685237 ], [ -78.84325638045668, 42.9146559200761 ], [ -78.843558756955673, 42.914655233203135 ], [ -78.847758513806397, 42.914656613445167 ], [ -78.848758980528913, 42.914656987399198 ], [ -78.851958257798302, 42.914655013461626 ], [ -78.852656778433314, 42.914754922998405 ], [ -78.85365812200979, 42.914955609374736 ], [ -78.853657047324589, 42.913855292993048 ], [ -78.853657967521158, 42.912357137990234 ], [ -78.85365967619083, 42.911056511983595 ], [ -78.854656859806852, 42.911155703833316 ], [ -78.855556445588121, 42.91115617512046 ], [ -78.856459765022805, 42.91115682250279 ], [ -78.859259447418182, 42.911155597178706 ], [ -78.862059586429183, 42.911255770601677 ], [ -78.865556836779717, 42.911156710343533 ], [ -78.865159677833972, 42.912455539180336 ], [ -78.864658777656672, 42.913954923753735 ], [ -78.864157479774619, 42.915355554909951 ], [ -78.861957308400946, 42.917556052161366 ], [ -78.860856832722632, 42.918557465223657 ], [ -78.859760042753081, 42.91955616966203 ], [ -78.859157947244356, 42.920155784666115 ], [ -78.858856876572062, 42.920455618453111 ], [ -78.858656530175679, 42.920755181814776 ], [ -78.856956990718302, 42.922257434331961 ], [ -78.856057477592657, 42.923156769606393 ], [ -78.853759739771817, 42.925357311533098 ], [ -78.852759287171324, 42.926256941150747 ], [ -78.851959523004112, 42.926955789183971 ], [ -78.851458130539228, 42.9275551540956 ], [ -78.851056247518528, 42.927855175636331 ], [ -78.850959569531824, 42.9279568697158 ], [ -78.85075872187268, 42.928154952031669 ], [ -78.849357066205357, 42.929554815991274 ], [ -78.848059054160757, 42.93075689229353 ], [ -78.847158434247248, 42.931456021774324 ], [ -78.846359083627647, 42.932256379439686 ], [ -78.845956921275459, 42.932556383500874 ], [ -78.845458740353124, 42.933056852948276 ], [ -78.844457613641666, 42.933854860213494 ], [ -78.843558140727509, 42.934855728084706 ], [ -78.842557083794873, 42.935656434765868 ], [ -78.842356232851728, 42.935857191087443 ], [ -78.841656567483184, 42.936456960649835 ], [ -78.841158271807103, 42.936954722350357 ], [ -78.839856210702692, 42.938156713358005 ], [ -78.838758734174164, 42.939155187600356 ], [ -78.837456087930008, 42.940255602049938 ], [ -78.835856446299658, 42.941757314897934 ], [ -78.835056290608691, 42.942456016559234 ], [ -78.834357116302002, 42.943157289902665 ], [ -78.833657690718923, 42.94385576071415 ], [ -78.833356381137804, 42.944155526831231 ], [ -78.832258592102392, 42.945156654906228 ], [ -78.83135838731252, 42.946055876655677 ] ] ], [ [ [ -78.81388190979429, 42.914719903009498 ], [ -78.81355622336676, 42.914755411822256 ], [ -78.813556198439798, 42.914640829675548 ], [ -78.81388190979429, 42.914719903009498 ] ] ] ] } },
{ "type": "Feature", "properties": { "SBE4_ID": 0, "NAME": "District B", "FROMLEFT": 0, "TOLEFT": 0, "FROMRIGHT": 0, "TORIGHT": 0, "DIRECTION": null, "STREET": null, "ST_TYPE": null, "ST_PREFIX": null, "ST_SUFFIX": null, "CITY_LEFT": null, "CITY_RIGHT": null, "LO_X_PRE": null, "LO_X_NAME": null, "LO_X_TYPE": null, "LO_X_SUF": null, "HI_X_PRE": null, "HI_X_NAME": null, "HI_X_TYPE": null, "HI_X_SUF": null, "LHS": null, "RHS": null, "BDY_LEFT": null, "BDY_RIGHT": null, "ST_CODE": null, "RECNUM_L": 0, "RECNUM_R": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -78.877556716095029, 42.874857610217347 ], [ -78.87805895026365, 42.874522552122691 ], [ -78.879767789463699, 42.87705099553893 ], [ -78.882677989722453, 42.878305611941379 ], [ -78.882994922991031, 42.877911145090273 ], [ -78.886812483749637, 42.878206759469876 ], [ -78.888732385034302, 42.878825339982058 ], [ -78.890247479896416, 42.881469631441725 ], [ -78.889835470396079, 42.882279055795166 ], [ -78.88897192071019, 42.881844428097786 ], [ -78.889386931765287, 42.881187695916303 ], [ -78.888452123743221, 42.879939802637892 ], [ -78.887206299012334, 42.879344207919118 ], [ -78.886363932196801, 42.879208313175972 ], [ -78.884891941620182, 42.879517868154529 ], [ -78.883809384665241, 42.88006768014219 ], [ -78.883881226506304, 42.880141055142744 ], [ -78.88543589722687, 42.879590628920212 ], [ -78.885349153009415, 42.880294746526879 ], [ -78.884856472862353, 42.880493851630128 ], [ -78.883953613363957, 42.880826369804623 ], [ -78.88391652991092, 42.880965390027278 ], [ -78.885261140223761, 42.880731366039186 ], [ -78.885412749814421, 42.880704405359175 ], [ -78.885432935061019, 42.881989614876254 ], [ -78.884934189912883, 42.882187199689177 ], [ -78.885149591608595, 42.882417749431362 ], [ -78.885990282873877, 42.881942759172496 ], [ -78.886902106250716, 42.881435964598211 ], [ -78.887623976098538, 42.881872685765536 ], [ -78.887295848770606, 42.88218147594376 ], [ -78.886665517494535, 42.882707970148083 ], [ -78.886325573274505, 42.883318314140141 ], [ -78.887935188133397, 42.882305309596234 ], [ -78.888194750681521, 42.882788008753764 ], [ -78.888461862582389, 42.883204230311826 ], [ -78.888197905618881, 42.883428944037398 ], [ -78.887713659596528, 42.883745449631128 ], [ -78.888459338075492, 42.884289799437973 ], [ -78.88896187969182, 42.884981344336815 ], [ -78.890170993132699, 42.886575763198067 ], [ -78.890483014674359, 42.886922466630416 ], [ -78.891329524845204, 42.887212943140796 ], [ -78.891358175386998, 42.887199415290638 ], [ -78.892133110897007, 42.887504971882784 ], [ -78.892385934056861, 42.887695510810936 ], [ -78.893348314393322, 42.888403903499388 ], [ -78.894057755479366, 42.888933744445872 ], [ -78.894612242514853, 42.889338469797835 ], [ -78.895036384546501, 42.889659996207968 ], [ -78.895501392294435, 42.890011208150497 ], [ -78.896121211532275, 42.890469582881344 ], [ -78.89683887897786, 42.890993347367832 ], [ -78.898918617390336, 42.892541080916487 ], [ -78.899432482892905, 42.892922022847635 ], [ -78.899905427513588, 42.893261231452982 ], [ -78.900631448154058, 42.893814911921822 ], [ -78.901000451860682, 42.894477001624736 ], [ -78.901287413342885, 42.894960225054838 ], [ -78.90149248475656, 42.895324097147316 ], [ -78.901762135284699, 42.895734270535478 ], [ -78.901820719343334, 42.895950462273227 ], [ -78.90191675573098, 42.898106772035554 ], [ -78.901983845860258, 42.899191788067803 ], [ -78.902018825485499, 42.900005496587902 ], [ -78.902111235070834, 42.901882460953765 ], [ -78.901354550045156, 42.901657838954542 ], [ -78.901009778825738, 42.901115975466546 ], [ -78.900610944128658, 42.900787295131039 ], [ -78.900920393124537, 42.901298197182662 ], [ -78.9009544677413, 42.901756192436423 ], [ -78.901617220150982, 42.902200478390171 ], [ -78.901603239445336, 42.902900259891958 ], [ -78.901588792822579, 42.903248195747921 ], [ -78.901565452389505, 42.904327206356093 ], [ -78.901560896419539, 42.906155900137307 ], [ -78.90160098289445, 42.914954584158387 ], [ -78.90117482292824, 42.914955618835442 ], [ -78.900833802550821, 42.914856453154684 ], [ -78.899063170890415, 42.914861349800091 ], [ -78.898064267951455, 42.914847414843535 ], [ -78.897133551252566, 42.914849969619191 ], [ -78.895662005310712, 42.914861026418535 ], [ -78.894377258499588, 42.914955942341805 ], [ -78.892967674896013, 42.914959763240532 ], [ -78.890079862876149, 42.915058955206973 ], [ -78.888175984523798, 42.915154442931687 ], [ -78.886661367371204, 42.91515846580203 ], [ -78.885854268732928, 42.91515247522581 ], [ -78.885368298366402, 42.91525127115856 ], [ -78.884273792034705, 42.915254153367037 ], [ -78.883068729321764, 42.915257314605014 ], [ -78.882272685221139, 42.915251269836823 ], [ -78.881860056726552, 42.915357218260048 ], [ -78.881359298348983, 42.915256972327974 ], [ -78.880060763516965, 42.915356407999973 ], [ -78.878357872938679, 42.915256651587946 ], [ -78.876760500452249, 42.915356819507785 ], [ -78.873359629522184, 42.915357198709401 ], [ -78.872758628860012, 42.915356003171667 ], [ -78.868857549841991, 42.915354823057719 ], [ -78.86655787398773, 42.915355047378718 ], [ -78.865057126814094, 42.915356061113151 ], [ -78.864157479774619, 42.915355554909951 ], [ -78.864658777656672, 42.913954923753735 ], [ -78.865159677833972, 42.912455539180336 ], [ -78.865556836779717, 42.911156710343533 ], [ -78.862059586429183, 42.911255770601677 ], [ -78.859259447418182, 42.911155597178706 ], [ -78.856459765022805, 42.91115682250279 ], [ -78.855556445588121, 42.91115617512046 ], [ -78.854656859806852, 42.911155703833316 ], [ -78.85365967619083, 42.911056511983595 ], [ -78.853657494698368, 42.910557187534138 ], [ -78.853659033437623, 42.910054973192565 ], [ -78.853756797638667, 42.909355082581932 ], [ -78.853658635474773, 42.908254994396067 ], [ -78.853759022902551, 42.908156005376249 ], [ -78.853759265986639, 42.907357483109244 ], [ -78.853758953862595, 42.906457521063999 ], [ -78.85375875366897, 42.905557531173962 ], [ -78.853758278971, 42.903757578583011 ], [ -78.853657613396891, 42.902056531765901 ], [ -78.853656698573374, 42.900155000825954 ], [ -78.853656069099998, 42.899156258847228 ], [ -78.853656302324623, 42.898355046346644 ], [ -78.85365785349488, 42.897855629658302 ], [ -78.853756805541735, 42.897457533816237 ], [ -78.853758344049041, 42.896955400639861 ], [ -78.853757469063879, 42.896755099652516 ], [ -78.853857405997729, 42.896557304389624 ], [ -78.853858943823525, 42.896055198573613 ], [ -78.853757551303204, 42.895056693911634 ], [ -78.853756908447806, 42.894055152318728 ], [ -78.853759577852927, 42.892957539513091 ], [ -78.853758060564701, 42.89175575126616 ], [ -78.853758304791938, 42.890957254144233 ], [ -78.853756111813098, 42.890455129209947 ], [ -78.853756712784602, 42.889755383336748 ], [ -78.853759059883188, 42.887755088297254 ], [ -78.853758944339788, 42.885156604458061 ], [ -78.853714464176306, 42.884361065673055 ], [ -78.853661332722666, 42.883318515317931 ], [ -78.85365725150217, 42.88325541562201 ], [ -78.853557511100931, 42.881757490201359 ], [ -78.853656661060612, 42.88055546197964 ], [ -78.853958681519828, 42.879657470565625 ], [ -78.854257382550315, 42.87885554952485 ], [ -78.857356707881706, 42.879457262118258 ], [ -78.859757939693296, 42.879956310487458 ], [ -78.864656316400058, 42.880655101515977 ], [ -78.86885745593024, 42.881456810125457 ], [ -78.86905751475463, 42.88115722766284 ], [ -78.869159247170458, 42.880555980676171 ], [ -78.869358376966289, 42.88005615122713 ], [ -78.869387780475122, 42.879951837575966 ], [ -78.869556577509613, 42.879355910320399 ], [ -78.86975904878048, 42.87875723695614 ], [ -78.869957241093033, 42.878057077538543 ], [ -78.870259928280817, 42.877356655895099 ], [ -78.870258536657332, 42.877056203810682 ], [ -78.87055656243021, 42.876156833702851 ], [ -78.870956750411864, 42.874756419191691 ], [ -78.871258478968869, 42.873855583344678 ], [ -78.871559627886398, 42.872856077792747 ], [ -78.87265780839121, 42.873155108530398 ], [ -78.873157675465777, 42.873156643168144 ], [ -78.87405764897936, 42.873357381992662 ], [ -78.875159693178475, 42.873656461201733 ], [ -78.875958954885036, 42.873857441685928 ], [ -78.87665858052506, 42.874256231783569 ], [ -78.877556716095029, 42.874857610217347 ] ] ] ] } },
{ "type": "Feature", "properties": { "SBE4_ID": 0, "NAME": "District C", "FROMLEFT": 0, "TOLEFT": 0, "FROMRIGHT": 0, "TORIGHT": 0, "DIRECTION": null, "STREET": null, "ST_TYPE": null, "ST_PREFIX": null, "ST_SUFFIX": null, "CITY_LEFT": null, "CITY_RIGHT": null, "LO_X_PRE": null, "LO_X_NAME": null, "LO_X_TYPE": null, "LO_X_SUF": null, "HI_X_PRE": null, "HI_X_NAME": null, "HI_X_TYPE": null, "HI_X_SUF": null, "LHS": null, "RHS": null, "BDY_LEFT": null, "BDY_RIGHT": null, "ST_CODE": null, "RECNUM_L": 0, "RECNUM_R": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -78.837456569994913, 42.878756929372337 ], [ -78.83835691774442, 42.879056837484171 ], [ -78.839156194113883, 42.879255275929467 ], [ -78.839358996383396, 42.878656627987034 ], [ -78.839957561167893, 42.87815595557732 ], [ -78.841556799502669, 42.876955998075758 ], [ -78.841757388131555, 42.876755214333393 ], [ -78.842556244378372, 42.876857758658176 ], [ -78.8440576714939, 42.87725761889191 ], [ -78.84545768790359, 42.877457442727305 ], [ -78.847059027846299, 42.877656785921261 ], [ -78.848757851920865, 42.877957459459736 ], [ -78.850856794926287, 42.878457395030267 ], [ -78.851756334480143, 42.8785568410702 ], [ -78.854257382550315, 42.87885554952485 ], [ -78.853958681519828, 42.879657470565625 ], [ -78.853656661060612, 42.88055546197964 ], [ -78.853557511100931, 42.881757490201359 ], [ -78.85365725150217, 42.88325541562201 ], [ -78.853661332722666, 42.883318515317931 ], [ -78.853714464176306, 42.884361065673055 ], [ -78.853758944339788, 42.885156604458061 ], [ -78.853759059883188, 42.887755088297254 ], [ -78.853756712784602, 42.889755383336748 ], [ -78.853756111813098, 42.890455129209947 ], [ -78.853758304791938, 42.890957254144233 ], [ -78.853758060564701, 42.89175575126616 ], [ -78.853759577852927, 42.892957539513091 ], [ -78.853756908447806, 42.894055152318728 ], [ -78.853757551303204, 42.895056693911634 ], [ -78.853858943823525, 42.896055198573613 ], [ -78.853857405997729, 42.896557304389624 ], [ -78.853757469063879, 42.896755099652516 ], [ -78.853758344049041, 42.896955400639861 ], [ -78.853756805541735, 42.897457533816237 ], [ -78.85365785349488, 42.897855629658302 ], [ -78.853656302324623, 42.898355046346644 ], [ -78.853656069099998, 42.899156258847228 ], [ -78.853656698573374, 42.900155000825954 ], [ -78.853657613396891, 42.902056531765901 ], [ -78.853758278971, 42.903757578583011 ], [ -78.85375875366897, 42.905557531173962 ], [ -78.853758953862595, 42.906457521063999 ], [ -78.853759265986639, 42.907357483109244 ], [ -78.853759022902551, 42.908156005376249 ], [ -78.853658635474773, 42.908254994396067 ], [ -78.853756797638667, 42.909355082581932 ], [ -78.853659033437623, 42.910054973192565 ], [ -78.853657494698368, 42.910557187534138 ], [ -78.85365967619083, 42.911056511983595 ], [ -78.853657967521158, 42.912357137990234 ], [ -78.853657047324589, 42.913855292993048 ], [ -78.85365812200979, 42.914955609374736 ], [ -78.852656778433314, 42.914754922998405 ], [ -78.851958257798302, 42.914655013461626 ], [ -78.848758980528913, 42.914656987399198 ], [ -78.847758513806397, 42.914656613445167 ], [ -78.843558756955673, 42.914655233203135 ], [ -78.84325638045668, 42.9146559200761 ], [ -78.842957736990499, 42.914656597685237 ], [ -78.838858697395693, 42.914654926337406 ], [ -78.837555965261672, 42.914655027677036 ], [ -78.832557335549936, 42.914655124679904 ], [ -78.832157862254618, 42.914655993557794 ], [ -78.829156067087453, 42.914555439698631 ], [ -78.828857461438815, 42.914556162759148 ], [ -78.827457447884839, 42.91455638519686 ], [ -78.826255435013962, 42.914556225453076 ], [ -78.825057080580791, 42.914556072803187 ], [ -78.824056614264222, 42.91455538195617 ], [ -78.823556423863408, 42.914556432537715 ], [ -78.823156988267698, 42.914557269928117 ], [ -78.822455128322289, 42.91455602152439 ], [ -78.822257239703006, 42.914556434655353 ], [ -78.821455090218222, 42.914656885101166 ], [ -78.821156446253028, 42.914657505838498 ], [ -78.820156244305437, 42.914755559662552 ], [ -78.819155785294967, 42.914757624719542 ], [ -78.818256145722728, 42.914756757777305 ], [ -78.817558165651363, 42.914755416513607 ], [ -78.816557594465252, 42.914757459094126 ], [ -78.815557162713134, 42.914756885970576 ], [ -78.814556580901453, 42.914756112336519 ], [ -78.81355622336676, 42.914755411822256 ], [ -78.81355576688965, 42.912656379465048 ], [ -78.812456391220152, 42.913155197963881 ], [ -78.811856489182247, 42.913455506238051 ], [ -78.811357082867673, 42.913656831921934 ], [ -78.810555550332339, 42.913957424994436 ], [ -78.810056088429604, 42.914156028667882 ], [ -78.809456090238214, 42.914456297072078 ], [ -78.808456723670673, 42.914757375724776 ], [ -78.808057645039966, 42.914856911604382 ], [ -78.807755983281623, 42.91505503448947 ], [ -78.806954527440098, 42.915355711896147 ], [ -78.805657092775974, 42.915857650327247 ], [ -78.804755137489181, 42.91625725926454 ], [ -78.803856903703789, 42.916656853904762 ], [ -78.80345780545899, 42.916756401201226 ], [ -78.802454989226121, 42.917156268155487 ], [ -78.802056207188116, 42.917357360535163 ], [ -78.80155672747378, 42.917555844750758 ], [ -78.801057105067628, 42.917757125798815 ], [ -78.800456783714296, 42.917955796927018 ], [ -78.800054256740182, 42.918156889411847 ], [ -78.799454283045222, 42.918457105177296 ], [ -78.799055128618349, 42.918556609769276 ], [ -78.799056743783282, 42.913655973762616 ], [ -78.799054506892517, 42.909855743480577 ], [ -78.799155722941677, 42.906757665138031 ], [ -78.799254604981854, 42.898756254692366 ], [ -78.79935567367923, 42.895655454002004 ], [ -78.799357519475777, 42.88975613471235 ], [ -78.799555682779072, 42.884556101935864 ], [ -78.800455932255147, 42.884856198273617 ], [ -78.800855880420585, 42.885055770186042 ], [ -78.801354855037332, 42.884755737814196 ], [ -78.802455159595638, 42.884657546665778 ], [ -78.803455133300602, 42.884655628692954 ], [ -78.803757485744924, 42.88465776349981 ], [ -78.805055921622497, 42.884655256607296 ], [ -78.806257466997707, 42.884655722425009 ], [ -78.807556279992795, 42.884757426604551 ], [ -78.808555783918976, 42.884656712606812 ], [ -78.809555878954654, 42.884657430116576 ], [ -78.814156862880751, 42.884755313966757 ], [ -78.815257702748966, 42.884755696219727 ], [ -78.816056162884067, 42.884756847493165 ], [ -78.816657238717056, 42.884857093087646 ], [ -78.824051345503236, 42.884759550740974 ], [ -78.824056055970587, 42.884756717006105 ], [ -78.825555243453209, 42.882657282618005 ], [ -78.8267574133816, 42.880956240808032 ], [ -78.828657889567353, 42.878457937354909 ], [ -78.829257334160488, 42.878157567817688 ], [ -78.832856931977261, 42.877057576053375 ], [ -78.833058755274735, 42.877155998336157 ], [ -78.833955401951215, 42.877455839483304 ], [ -78.834855713376044, 42.87775563809948 ], [ -78.835756447512608, 42.878157034814144 ], [ -78.836758064766627, 42.878555457288982 ], [ -78.837456569994913, 42.878756929372337 ] ] ] ] } },
{ "type": "Feature", "properties": { "SBE4_ID": 0, "NAME": "District D", "FROMLEFT": 0, "TOLEFT": 0, "FROMRIGHT": 0, "TORIGHT": 0, "DIRECTION": null, "STREET": null, "ST_TYPE": null, "ST_PREFIX": null, "ST_SUFFIX": null, "CITY_LEFT": null, "CITY_RIGHT": null, "LO_X_PRE": null, "LO_X_NAME": null, "LO_X_TYPE": null, "LO_X_SUF": null, "HI_X_PRE": null, "HI_X_NAME": null, "HI_X_TYPE": null, "HI_X_SUF": null, "LHS": null, "RHS": null, "BDY_LEFT": null, "BDY_RIGHT": null, "ST_CODE": null, "RECNUM_L": 0, "RECNUM_R": 0 }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -78.848357925732358, 42.958557155360594 ], [ -78.847558550346733, 42.958556314278027 ], [ -78.847159103369592, 42.958655986661867 ], [ -78.846658049234421, 42.95855559052405 ], [ -78.845757772716311, 42.958554968924986 ], [ -78.844659429161581, 42.958554682819461 ], [ -78.843456598624755, 42.958554733406494 ], [ -78.842257051866881, 42.958455875641029 ], [ -78.841158635672457, 42.958455665861948 ], [ -78.840157571072865, 42.958455117420101 ], [ -78.838958216436993, 42.958455112938751 ], [ -78.838158434253145, 42.95835531882836 ], [ -78.836858858528231, 42.958456982912189 ], [ -78.829957986127056, 42.947054948618003 ], [ -78.830457761013733, 42.946856231049658 ], [ -78.83135838731252, 42.946055876655677 ], [ -78.832258592102392, 42.945156654906228 ], [ -78.833356381137804, 42.944155526831231 ], [ -78.833657690718923, 42.94385576071415 ], [ -78.834357116302002, 42.943157289902665 ], [ -78.835056290608691, 42.942456016559234 ], [ -78.835856446299658, 42.941757314897934 ], [ -78.837456087930008, 42.940255602049938 ], [ -78.838758734174164, 42.939155187600356 ], [ -78.839856210702692, 42.938156713358005 ], [ -78.841158271807103, 42.936954722350357 ], [ -78.841656567483184, 42.936456960649835 ], [ -78.842356232851728, 42.935857191087443 ], [ -78.842557083794873, 42.935656434765868 ], [ -78.843558140727509, 42.934855728084706 ], [ -78.844457613641666, 42.933854860213494 ], [ -78.845458740353124, 42.933056852948276 ], [ -78.845956921275459, 42.932556383500874 ], [ -78.846359083627647, 42.932256379439686 ], [ -78.847158434247248, 42.931456021774324 ], [ -78.848059054160757, 42.93075689229353 ], [ -78.849357066205357, 42.929554815991274 ], [ -78.85075872187268, 42.928154952031669 ], [ -78.850959569531824, 42.9279568697158 ], [ -78.851056247518528, 42.927855175636331 ], [ -78.851458130539228, 42.9275551540956 ], [ -78.851959523004112, 42.926955789183971 ], [ -78.852759287171324, 42.926256941150747 ], [ -78.853759739771817, 42.925357311533098 ], [ -78.856057477592657, 42.923156769606393 ], [ -78.856956990718302, 42.922257434331961 ], [ -78.858656530175679, 42.920755181814776 ], [ -78.858856876572062, 42.920455618453111 ], [ -78.859157947244356, 42.920155784666115 ], [ -78.859760042753081, 42.91955616966203 ], [ -78.860856832722632, 42.918557465223657 ], [ -78.861957308400946, 42.917556052161366 ], [ -78.864157479774619, 42.915355554909951 ], [ -78.865057126814094, 42.915356061113151 ], [ -78.86655787398773, 42.915355047378718 ], [ -78.868857549841991, 42.915354823057719 ], [ -78.872758628860012, 42.915356003171667 ], [ -78.873359629522184, 42.915357198709401 ], [ -78.876760500452249, 42.915356819507785 ], [ -78.878357872938679, 42.915256651587946 ], [ -78.880060763516965, 42.915356407999973 ], [ -78.881359298348983, 42.915256972327974 ], [ -78.881860056726552, 42.915357218260048 ], [ -78.882272685221139, 42.915251269836823 ], [ -78.883068729321764, 42.915257314605014 ], [ -78.884273792034705, 42.915254153367037 ], [ -78.885368298366402, 42.91525127115856 ], [ -78.885854268732928, 42.91515247522581 ], [ -78.886672422971984, 42.915158436510609 ], [ -78.888164928925264, 42.915154472368307 ], [ -78.890066028293106, 42.915055944996219 ], [ -78.892973197591445, 42.914958732545394 ], [ -78.894377258499588, 42.914955942341805 ], [ -78.895675824733544, 42.914860988717805 ], [ -78.897168322242848, 42.914856907221662 ], [ -78.898109668762928, 42.914847290026792 ], [ -78.899051243879498, 42.914856809077392 ], [ -78.899673117636056, 42.914855092483272 ], [ -78.900855119132444, 42.914855753392153 ], [ -78.901159417838116, 42.914956980417145 ], [ -78.901511530128445, 42.914956002391477 ], [ -78.901259500262299, 42.915790463407561 ], [ -78.901039376175646, 42.9165211626134 ], [ -78.900803422995168, 42.917340120508733 ], [ -78.900642632086601, 42.917922293370644 ], [ -78.900352803555677, 42.918873736097275 ], [ -78.899966689539511, 42.920198582505577 ], [ -78.899497029021163, 42.92189358586883 ], [ -78.89950199452521, 42.921893572156002 ], [ -78.898955778359166, 42.924051207509997 ], [ -78.898959314199004, 42.924744023208717 ], [ -78.898966106163485, 42.926074777878405 ], [ -78.898997580075644, 42.927369108017722 ], [ -78.899015346081342, 42.927982092585005 ], [ -78.899797131705569, 42.930131477834024 ], [ -78.899824713903755, 42.930304182471211 ], [ -78.89998968080755, 42.930434992570987 ], [ -78.900817098187616, 42.93108823657095 ], [ -78.900824857978293, 42.930585100877963 ], [ -78.90132628418371, 42.930980937805437 ], [ -78.901834110429547, 42.930639013085603 ], [ -78.902728823511509, 42.930443681928907 ], [ -78.903109151324642, 42.930357845634006 ], [ -78.901834110429547, 42.930639013085603 ], [ -78.900659484006212, 42.929123959777144 ], [ -78.900580076597706, 42.926266420627407 ], [ -78.900429083107412, 42.922319764339214 ], [ -78.900760203399443, 42.921241687908463 ], [ -78.900915847459643, 42.920702745364295 ], [ -78.901546249652824, 42.919608991462646 ], [ -78.901818736656523, 42.919099082084145 ], [ -78.902109568540993, 42.917890121065405 ], [ -78.902235137734323, 42.917263840573362 ], [ -78.902332190342975, 42.916885163554234 ], [ -78.902181178734878, 42.915320070874564 ], [ -78.902124132571586, 42.914957051428722 ], [ -78.901515270083607, 42.914955690463479 ], [ -78.901515776779945, 42.914868491601403 ], [ -78.901518012111453, 42.914820720145464 ], [ -78.902133312499032, 42.914818734938109 ], [ -78.902013473047873, 42.912693915230498 ], [ -78.902533701297116, 42.911804550020491 ], [ -78.902754669155058, 42.91241524030513 ], [ -78.902915198716912, 42.912829692706374 ], [ -78.903067379972413, 42.913542508969392 ], [ -78.903271021262256, 42.914633587956949 ], [ -78.903586313334159, 42.916226591537594 ], [ -78.903778949397676, 42.917099452743621 ], [ -78.904186211959313, 42.919245250066467 ], [ -78.904440341493142, 42.920518157479009 ], [ -78.90462435719698, 42.921631183782786 ], [ -78.904737308753241, 42.922409657703007 ], [ -78.904809627095929, 42.922969833964459 ], [ -78.904909494683295, 42.923729878069061 ], [ -78.904963312104968, 42.924134968048868 ], [ -78.905138306699939, 42.92523964937368 ], [ -78.905314300750192, 42.926570915527613 ], [ -78.905514378516472, 42.927872068041225 ], [ -78.906210330417593, 42.929508631350856 ], [ -78.906212496791639, 42.929923496936539 ], [ -78.904706019158724, 42.93010111178603 ], [ -78.905197192220299, 42.930046811396345 ], [ -78.906216361094181, 42.92992699817907 ], [ -78.906115574986444, 42.932064584547803 ], [ -78.906825072161936, 42.93409383314517 ], [ -78.904965379070646, 42.932881019280011 ], [ -78.904645083186239, 42.932662492287299 ], [ -78.904309426718299, 42.932455367033597 ], [ -78.904007372774672, 42.932239695581686 ], [ -78.903451768029086, 42.931871460603965 ], [ -78.902201542601702, 42.931008740628926 ], [ -78.90202594441206, 42.930895716102775 ], [ -78.901875034453923, 42.930711282252666 ], [ -78.901398118730953, 42.931022774185323 ], [ -78.901651811431563, 42.931225910422974 ], [ -78.902350261746577, 42.931882739510314 ], [ -78.902915944600963, 42.932388693438718 ], [ -78.902629510589421, 42.932600797271924 ], [ -78.90386120948564, 42.933656869024439 ], [ -78.904459278893853, 42.933756743178414 ], [ -78.907262208987191, 42.93695979109124 ], [ -78.908521859033641, 42.938597978997493 ], [ -78.908726708704449, 42.939380438521361 ], [ -78.908730080667112, 42.939389593415029 ], [ -78.909516776232223, 42.94249073687056 ], [ -78.908916416369607, 42.943086737261048 ], [ -78.909717332335276, 42.943989928321862 ], [ -78.908911507135457, 42.944586541589423 ], [ -78.909517706327776, 42.945094129940117 ], [ -78.908916874063678, 42.945605236619571 ], [ -78.910401234703158, 42.953596504184752 ], [ -78.91267796524653, 42.95575904357041 ], [ -78.911761223912649, 42.95645513001049 ], [ -78.908360118215342, 42.958956305281539 ], [ -78.907559933526329, 42.959556760400766 ], [ -78.906759942770009, 42.96015441060144 ], [ -78.906559296799884, 42.960355305505615 ], [ -78.905758658446118, 42.960854199466368 ], [ -78.905059515844783, 42.961454324852951 ], [ -78.90406141411782, 42.962055311372481 ], [ -78.903362054777176, 42.962655454327887 ], [ -78.902561472684425, 42.963154298160894 ], [ -78.901761289295081, 42.963754712362615 ], [ -78.9009612024266, 42.964355120648463 ], [ -78.899159550375217, 42.965655144949189 ], [ -78.898359376221833, 42.966255535118037 ], [ -78.896461726581393, 42.96485586650212 ], [ -78.894559418319659, 42.963256015240091 ], [ -78.893858268674535, 42.962755823238531 ], [ -78.893261164733602, 42.962156457059415 ], [ -78.892959509184109, 42.960856745493309 ], [ -78.890458983145905, 42.958355523664345 ], [ -78.888960817281159, 42.958356844401585 ], [ -78.885061244442412, 42.958455047304646 ], [ -78.883058932473872, 42.958454819792294 ], [ -78.882158658648564, 42.958454484475844 ], [ -78.881758903828015, 42.958455527314996 ], [ -78.881157861160332, 42.958555843687328 ], [ -78.880059519299948, 42.958555897250605 ], [ -78.879260144717819, 42.958555277552378 ], [ -78.878557723983036, 42.95855709124055 ], [ -78.878060939280772, 42.958555572638929 ], [ -78.875158678177471, 42.958656381264539 ], [ -78.87425840060051, 42.958655874070374 ], [ -78.873260883445468, 42.958655715870663 ], [ -78.872457771560946, 42.958655030696043 ], [ -78.871460329053207, 42.958654856616953 ], [ -78.870358249228573, 42.958654826503142 ], [ -78.869259942906652, 42.958654886107276 ], [ -78.865557719794268, 42.958655787081888 ], [ -78.861257477462374, 42.958556554292315 ], [ -78.858359034813049, 42.958657010029732 ], [ -78.855657578720312, 42.958556430976316 ], [ -78.854656835161208, 42.958654869409195 ], [ -78.853957814556878, 42.958554946837822 ], [ -78.853659403684276, 42.958657229161389 ], [ -78.853259671690395, 42.958655373694626 ], [ -78.852859914568072, 42.958656315615869 ], [ -78.85175743026079, 42.958554639873995 ], [ -78.850958457227449, 42.958655289085193 ], [ -78.850558737387288, 42.958656222882844 ], [ -78.85005767815349, 42.958555923956126 ], [ -78.849459880382412, 42.958554516542854 ], [ -78.848357925732358, 42.958557155360594 ] ] ], [ [ [ -78.901518012111453, 42.914820720145464 ], [ -78.901516053815271, 42.914820815724703 ], [ -78.901516056764024, 42.91482072644893 ], [ -78.901518012111453, 42.914820720145464 ] ] ], [ [ [ -78.901516053815271, 42.914820815724703 ], [ -78.901515776779945, 42.914868491601403 ], [ -78.901511709782966, 42.91495540755421 ], [ -78.901511626800385, 42.914955682310051 ], [ -78.901511599202905, 42.914955682248291 ], [ -78.901516053815271, 42.914820815724703 ] ] ], [ [ [ -78.901515270083607, 42.914955690463479 ], [ -78.901515268331408, 42.914955992002454 ], [ -78.901511530128445, 42.914956002391477 ], [ -78.901511626800385, 42.914955682310051 ], [ -78.901515270083607, 42.914955690463479 ] ] ] ] } }
]
}
{
"AuthUrl" : "http://localhost:2009/emimobile/auth/",
"ApiUrl" : "http://localhost:2009/emimobile/api/",
"AppUrl" : "http://localhost:2009/emimobile/app/"
}
\ No newline at end of file
.login-card {
display: inline-block;
width: 300px; /* Adjust width as needed */
padding: 0;
border-radius: 10px;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
background-color: #fff;
}
.mr-2 {
margin-right: 0.5rem;
}
.table tbody tr:hover {
background-color: #d1e7fd; /* Light blue color for hover effect */
cursor: pointer;
}
.form-input{
display: table;
}
.form-cells{
display: table-cell
}
.table tbody tr {
transition: background-color 0.3s ease;
}
.table {
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
border-radius: 5px;
}
@media (max-width: 1200px) {
.table-responsive {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.table thead {
display: none;
}
.table tbody, .table tr, .table td {
display: block;
width: 100%;
}
.table tr {
margin-bottom: 1rem;
}
.table td {
text-align: right;
padding-left: 50%; /* Adjust padding to accommodate the data-label */
position: relative;
}
.table td::before {
content: attr(data-label);
position: absolute;
left: 0;
width: 50%;
padding-left: 15px; /* Adjust as necessary */
font-weight: bold;
text-align: left;
}
.table td .transcript {
margin-top: 20px; /* Set top margin to 20px */
text-align: left; /* Ensure text alignment is left */
margin-left: 8px;
white-space: normal; /* Prevent text from being cut off */
}
}
.login-navbar {
max-width: 1200px; /* Set the max-width to match a medium screen */
margin: auto;
border-bottom-left-radius: 10px; /* Round the bottom left corner */
border-bottom-right-radius: 10px; /* Round the bottom right corner */
border: 1px solid #d3d3d3;
}
.navbar-toggler {
display: none;
}
.dropdown-menu a {
display: flex; /* Use flexbox for alignment */
align-items: center; /* Vertically center the content */
width: 100%; /* Ensure they take up the full width */
padding: 0.5rem 1rem; /* Add padding to make them clickable */
color: #000; /* Adjust the text color if necessary */
text-decoration: none; /* Remove underlines */
}
.dropdown-menu a:hover {
background-color: #204d74;
color: #fff;
}
.dropdown-menu a span {
flex-grow: 1; /* Make the span take up the remaining space */
}
/* Style for the selected number */
.selected-number .page-link {
background-color: #204d74;
color: #fff !important;
}
/* Style for the unselected numbers and text (previous/next) */
.pagination .page-item a,
.pagination .page-item span {
color: #204d74;
}
.pagination .page-item.active .page-link,
.pagination .page-item.active .page-link:hover,
.pagination .page-item.active .page-link:focus {
background-color: #204d74;
border-color: #204d74;
color: #fff !important;
}
/* This is needed to get rid of the line that was appearing. */
span.card {
border: none;
}
.modal-backdrop {
z-index: 1040 !important;
}
.modal {
z-index: 1055 !important;
}
.list-section-header:empty { display: none; }
.lds-roller {
display: inline-block;
position: relative;
width: 80px;
height: 80px;
}
.lds-roller div {
animation: lds-roller 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
transform-origin: 40px 40px;
}
.lds-roller div:after {
content: " ";
display: block;
position: absolute;
width: 10px;
height: 10px;
border-radius: 50%;
background: var(--bs-primary);
margin: -5px 0 0 -5px;
}
.lds-roller div:nth-child(1) {
animation-delay: -0.036s;
}
.lds-roller div:nth-child(1):after {
top: 63px;
left: 63px;
}
.lds-roller div:nth-child(2) {
animation-delay: -0.072s;
}
.lds-roller div:nth-child(2):after {
top: 68px;
left: 56px;
}
.lds-roller div:nth-child(3) {
animation-delay: -0.108s;
}
.lds-roller div:nth-child(3):after {
top: 71px;
left: 48px;
}
.lds-roller div:nth-child(4) {
animation-delay: -0.144s;
}
.lds-roller div:nth-child(4):after {
top: 72px;
left: 40px;
}
.lds-roller div:nth-child(5) {
animation-delay: -0.18s;
}
.lds-roller div:nth-child(5):after {
top: 71px;
left: 32px;
}
.lds-roller div:nth-child(6) {
animation-delay: -0.216s;
}
.lds-roller div:nth-child(6):after {
top: 68px;
left: 24px;
}
.lds-roller div:nth-child(7) {
animation-delay: -0.252s;
}
.lds-roller div:nth-child(7):after {
top: 63px;
left: 17px;
}
.lds-roller div:nth-child(8) {
animation-delay: -0.288s;
}
.lds-roller div:nth-child(8):after {
top: 56px;
left: 12px;
}
@keyframes lds-roller {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<noscript>Your browser does not support JavaScript!</noscript>
<link href="data:;base64,=" rel="icon"/>
<title>emiMobile</title>
<script crossorigin="anonymous" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" src="https://code.jquery.com/jquery-3.5.1.min.js" type="text/javascript"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/css/flag-icon.min.css" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css" rel="stylesheet"/>
<link href="css/app.css" rel="stylesheet" type="text/css"/>
<link href="css/spinner.css" rel="stylesheet" type="text/css"/>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js" type="text/javascript"></script>
<link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" type="text/javascript"></script>
<link href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" rel="stylesheet"/>
<script src="$(ProjectName).js" type="text/javascript"></script>
<style>
</style>
</head>
<body>
<script type="text/javascript">rtl.run();</script>
</body>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8"/>
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<noscript>Your browser does not support JavaScript!</noscript>
<link href="data:;base64,=" rel="icon"/>
<title>emiMobile</title>
<!-- jQuery -->
<script crossorigin="anonymous" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" src="https://code.jquery.com/jquery-3.5.1.min.js" type="text/javascript"></script>
<!-- Icons & fonts -->
<link href="https://cdnjs.cloudflare.com/ajax/libs/flag-icon-css/2.3.1/css/flag-icon.min.css" rel="stylesheet"/>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"/>
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.0/css/all.min.css" rel="stylesheet"/>
<!-- Bootstrap -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/js/bootstrap.bundle.min.js" type="text/javascript"></script>
<link crossorigin="anonymous" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.7/dist/css/bootstrap.min.css" rel="stylesheet"/>
<!-- Leaflet -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" type="text/javascript"></script>
<link href="https://unpkg.com/leaflet@1.7.1/dist/leaflet.css" rel="stylesheet"/>
<!-- App bundle -->
<script src="$(ProjectName).js" type="text/javascript"></script>
<!-- App styles -->
<style></style>
<link href="css/app.css" rel="stylesheet"/>
<link href="css/spinner.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<script type="text/javascript">rtl.run();</script>
</body>
</html>
......@@ -177,6 +177,7 @@
</DCCReference>
<None Include="index.html"/>
<None Include="css\app.css"/>
<None Include="css\spinner.css"/>
<BuildConfiguration Include="Base">
<Key>Base</Key>
</BuildConfiguration>
......@@ -219,6 +220,12 @@
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="css\spinner.css" Configuration="Debug" Class="ProjectFile">
<Platform Name="Win32">
<RemoteDir>.\</RemoteDir>
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployFile LocalName="index.html" Configuration="Debug" Class="ProjectFile"/>
<DeployFile LocalName="index.html" Configuration="Debug" Class="ProjectFile">
<Platform Name="Win32">
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment