Commit 5a8f87eb by Mac Stephens

Add unit popup endpoint, update uqMapUnit sql, add unit popup to map form with new additions

parent f952c2be
......@@ -18,8 +18,18 @@ object ApiDatabaseModule: TApiDatabaseModule
' COALESCE(uc.UNITNAME, uc.CAR_NUMBER) AS UNITNAME,'
' uc.UNIT_DISTRICT,'
' uc.GPS_LATITUDE,'
' uc.GPS_LONGITUDE'
'FROM UNITS_CURRENT@AVL_LINK uc')
' uc.GPS_LONGITUDE,'
' cdc.CODE_DESC AS CALL_TYPE,'
' cap.PRIORITY AS PRIORITY,'
' cus.CODE_DESC AS UNIT_STATUS_DESC'
'FROM UNITS_CURRENT@AVL_LINK uc'
'LEFT JOIN CFS_ACTIVE cfs ON uc.UNITID = cfs.UNITID'
'LEFT JOIN COMPLAINT_ACTIVE cap ON cap.COMPLAINTID = cfs.COMPLAIN' +
'TID'
'LEFT JOIN CD_DISPATCHCODES cdc ON cdc.CODE = cap.DISPATCHCODE'
'LEFT JOIN CD_UNITSTATUS cus ON cus.CODE = cfs.UNITSTATUS'
'')
ReadOnly = True
Left = 470
Top = 414
......@@ -43,6 +53,20 @@ object ApiDatabaseModule: TApiDatabaseModule
object uqMapUnitsGPS_LONGITUDE: TFloatField
FieldName = 'GPS_LONGITUDE'
end
object uqMapUnitsCALL_TYPE: TStringField
FieldName = 'CALL_TYPE'
ReadOnly = True
Size = 60
end
object uqMapUnitsPRIORITY: TStringField
FieldName = 'PRIORITY'
ReadOnly = True
Size = 6
end
object uqMapUnitsUNIT_STATUS_DESC: TStringField
FieldName = 'UNIT_STATUS_DESC'
ReadOnly = True
end
end
object uqUnitList: TUniQuery
Connection = ucENTCAD
......
......@@ -60,12 +60,6 @@ type
uqCFSMemosTIMESTAMP: TDateTimeField;
uqCFSMemosBADGE_NUMBER: TStringField;
uqCFSMemosREMARKS: TStringField;
uqMapUnitsENTRYID: TFloatField;
uqMapUnitsUNITID: TFloatField;
uqMapUnitsUNITNAME: TStringField;
uqMapUnitsUNIT_DISTRICT: TStringField;
uqMapUnitsGPS_LATITUDE: TFloatField;
uqMapUnitsGPS_LONGITUDE: TFloatField;
uqComplaintListcomplaintNumber: TStringField;
uqComplaintListPRIORITY_COLOR: TFloatField;
uqComplaintListDISTRICT_DESC: TStringField;
......@@ -128,6 +122,15 @@ type
uqMapComplaintUnitsListDATECLEARED: TDateTimeField;
uqMapComplaintUnitsListLOCATION: TStringField;
uqMapComplaintsADDRESS: TStringField;
uqMapUnitsENTRYID: TFloatField;
uqMapUnitsUNITID: TFloatField;
uqMapUnitsUNITNAME: TStringField;
uqMapUnitsUNIT_DISTRICT: TStringField;
uqMapUnitsGPS_LATITUDE: TFloatField;
uqMapUnitsGPS_LONGITUDE: TFloatField;
uqMapUnitsCALL_TYPE: TStringField;
uqMapUnitsPRIORITY: TStringField;
uqMapUnitsUNIT_STATUS_DESC: TStringField;
procedure uqComplaintListCalcFields(DataSet: TDataSet);
procedure uqMapComplaintsCalcFields(DataSet: TDataSet);
private
......
......@@ -186,8 +186,6 @@ begin
end;
function TApiService.GetUnitMap: TJSONObject;
var
data: TJSONArray;
......@@ -214,6 +212,16 @@ begin
item.AddPair('District', ApiDB.uqMapUnitsUNIT_DISTRICT.AsString);
item.AddPair('Lat', TJSONNumber.Create(ApiDB.uqMapUnitsGPS_LATITUDE.AsFloat));
item.AddPair('Lng', TJSONNumber.Create(ApiDB.uqMapUnitsGPS_LONGITUDE.AsFloat));
item.AddPair('CallType', ApiDB.uqMapUnitsCALL_TYPE.AsString);
item.AddPair('Priority', ApiDB.uqMapUnitsPRIORITY.AsString);
var unitStatus := ApiDB.uqMapUnitsUNIT_STATUS_DESC.AsString;
if Trim(unitStatus) = '' then
unitStatus := 'Available';
item.AddPair('Status', unitStatus);
data.AddElement(item);
end;
Next;
......
[Settings]
LogFileNum=525
LogFileNum=533
webClientVersion=0.1.0
......@@ -34,6 +34,7 @@ type
FComplaintsLoaded: Boolean;
[async] procedure LoadPointsAsync;
function CarIconForDistrict(const DistrictCode: string): string;
procedure ShowUnitDetails(const unitId: string);
public
end;
......@@ -64,10 +65,24 @@ begin
console.log('Error in TFViewMain.ShowComplaintDetails', e);
}
};
window.showUnitDetails = function (id) {
console.log('JS bridge showUnitDetails called, id=', id);
try {
pas['View.Map'].FViewMap.ShowUnitDetails(id);
} catch (e) {
console.log('Error in TFViewMap.ShowUnitDetails', e);
}
};
end;
{$ENDIF}
end;
procedure TFViewMap.ShowUnitDetails(const unitId: string);
begin
ShowMessage('Link to Unit Details form');
end;
[async] procedure TFViewMap.httpReqGeoJsonResponse(Sender: TObject; AResponse: string);
var
......@@ -158,7 +173,8 @@ var
i, ui: Integer;
m: TTMSFNCMapsMarker;
lat, lng: Double;
uname, dist: string;
uName, dist: string;
unitId, callType, priorityText, statusText: string;
complaintId, codeDesc, dispatchDist, priority: string;
pngName, iconUrl, rowsHtml: string;
begin
......@@ -182,13 +198,46 @@ begin
lat := Double(item['Lat']);
lng := Double(item['Lng']);
uname := string(item['UnitName']);
uName := string(item['UnitName']);
dist := string(item['District']);
unitId := string(item['UnitId']);
callType := string(item['CallType']);
priorityText := string(item['Priority']);
statusText := string(item['Status']);
m := lfMap.Markers.Add;
m.Latitude := lat;
m.Longitude := lng;
m.Title := uname + IfThen(dist <> '', ' / ' + dist, '');
m.Title :=
'<div class="d-flex flex-column gap-1 px-1 py-1" style="width:260px;">' +
'<div class="fw-semibold small">' +
'<span class="fw-bold">Unit:</span> ' + uname +
'</div>' +
IfThen(dist <> '',
'<div class="small"><span class="fw-bold">District:</span> ' + dist + '</div>',
''
) +
IfThen(Trim(callType) <> '',
'<div class="small"><span class="fw-bold">Call Type:</span> ' + callType + '</div>',
''
) +
IfThen(Trim(priorityText) <> '',
'<div class="small"><span class="fw-bold">Priority:</span> ' + priorityText + '</div>',
''
) +
IfThen(Trim(statusText) <> '',
'<div class="small mb-1"><span class="fw-bold">Status:</span> ' + statusText + '</div>',
''
) +
'<div class="d-flex justify-content-end mt-0">' +
'<button type="button" class="btn btn-primary btn-sm px-2 py-1" ' +
'onclick="window.showUnitDetails(''' + unitId + ''')">' +
'Details' +
'</button>' +
'</div>' +
'</div>';
m.DataString := 'unit';
m.IconURL := CarIconForDistrict(dist);
end;
......
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