From 2d99ad8af65bfea500441a2696bbfc1e97ef9eba Mon Sep 17 00:00:00 2001 From: MonkeyWhisper <82112471+MonkeyWhisper@users.noreply.github.com> Date: Fri, 1 Apr 2022 15:42:45 -0700 Subject: [PATCH] Added original files Added files from the original fork from Flaws, doing this because we could no start issues because it was a fork. --- client/cl_impound.lua | 75 + client/main.lua | 853 ++++++ fxmanifest.lua | 43 + mdt.sql | 111 + readme.md | 10 + server/dbm.lua | 153 + server/main.lua | 1265 ++++++++ server/utils.lua | 51 + shared/config.lua | 637 ++++ ui/app.js | 5048 +++++++++++++++++++++++++++++++ ui/dashboard.html | 755 +++++ ui/img/court.png | Bin 0 -> 55525 bytes ui/img/ems_badge.png | Bin 0 -> 15935 bytes ui/img/ems_badge_zonah.png | Bin 0 -> 21158 bytes ui/img/female.png | Bin 0 -> 50333 bytes ui/img/male.png | Bin 0 -> 73641 bytes ui/img/not-found.jpg | Bin 0 -> 10656 bytes ui/img/profile_pic.png | Bin 0 -> 54820 bytes ui/img/sasp_badge.png | Bin 0 -> 36832 bytes ui/img/warrant_pfp.png | Bin 0 -> 19434 bytes ui/style.css | 5854 ++++++++++++++++++++++++++++++++++++ 21 files changed, 14855 insertions(+) create mode 100644 client/cl_impound.lua create mode 100644 client/main.lua create mode 100644 fxmanifest.lua create mode 100644 mdt.sql create mode 100644 readme.md create mode 100644 server/dbm.lua create mode 100644 server/main.lua create mode 100644 server/utils.lua create mode 100644 shared/config.lua create mode 100644 ui/app.js create mode 100644 ui/dashboard.html create mode 100644 ui/img/court.png create mode 100644 ui/img/ems_badge.png create mode 100644 ui/img/ems_badge_zonah.png create mode 100644 ui/img/female.png create mode 100644 ui/img/male.png create mode 100644 ui/img/not-found.jpg create mode 100644 ui/img/profile_pic.png create mode 100644 ui/img/sasp_badge.png create mode 100644 ui/img/warrant_pfp.png create mode 100644 ui/style.css diff --git a/client/cl_impound.lua b/client/cl_impound.lua new file mode 100644 index 00000000..288b236c --- /dev/null +++ b/client/cl_impound.lua @@ -0,0 +1,75 @@ +local currentGarage = 1 + +local function doCarDamage(currentVehicle, veh) + local smash = false + local damageOutside = false + local damageOutside2 = false + local engine = veh.engine + 0.0 + local body = veh.body + 0.0 + + if engine < 200.0 then engine = 200.0 end + if engine > 1000.0 then engine = 950.0 end + if body < 150.0 then body = 150.0 end + if body < 950.0 then smash = true end + if body < 920.0 then damageOutside = true end + if body < 920.0 then damageOutside2 = true end + + Citizen.Wait(100) + SetVehicleEngineHealth(currentVehicle, engine) + + if smash then + SmashVehicleWindow(currentVehicle, 0) + SmashVehicleWindow(currentVehicle, 1) + SmashVehicleWindow(currentVehicle, 2) + SmashVehicleWindow(currentVehicle, 3) + SmashVehicleWindow(currentVehicle, 4) + end + + if damageOutside then + SetVehicleDoorBroken(currentVehicle, 1, true) + SetVehicleDoorBroken(currentVehicle, 6, true) + SetVehicleDoorBroken(currentVehicle, 4, true) + end + + if damageOutside2 then + SetVehicleTyreBurst(currentVehicle, 1, false, 990.0) + SetVehicleTyreBurst(currentVehicle, 2, false, 990.0) + SetVehicleTyreBurst(currentVehicle, 3, false, 990.0) + SetVehicleTyreBurst(currentVehicle, 4, false, 990.0) + end + + if body < 1000 then + SetVehicleBodyHealth(currentVehicle, 985.1) + end +end + +local function TakeOutImpound(vehicle) + local coords = Config.ImpoundLocations[currentGarage] + if coords then + QBCore.Functions.SpawnVehicle(vehicle.vehicle, function(veh) + QBCore.Functions.TriggerCallback('qb-garage:server:GetVehicleProperties', function(properties) + QBCore.Functions.SetVehicleProperties(veh, properties) + SetVehicleNumberPlateText(veh, vehicle.plate) + SetEntityHeading(veh, coords.w) + exports[Config.Fuel]:SetFuel(veh, vehicle.fuel) + doCarDamage(veh, vehicle) + TriggerServerEvent('police:server:TakeOutImpound',vehicle.plate) + TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(veh)) + SetVehicleEngineOn(veh, true, true) + end, vehicle.plate) + end, coords, true) + end +end + +RegisterNetEvent('qb-mdt:client:TakeOutImpound', function(data) + local pos = GetEntityCoords(PlayerPedId()) + currentGarage = data.currentSelection + local takeDist = Config.ImpoundLocations[data.currentSelection] + takeDist = vector3(takeDist.x, takeDist.y, takeDist.z) + if #(pos - takeDist) <= 15.0 then + local vehicle = data.vehicle + TakeOutImpound(data) + else + QBCore.Functions.Notify("You are too far away from the impound location!") + end +end) \ No newline at end of file diff --git a/client/main.lua b/client/main.lua new file mode 100644 index 00000000..a7fd2b20 --- /dev/null +++ b/client/main.lua @@ -0,0 +1,853 @@ +QBCore = exports['qb-core']:GetCoreObject() +local PlayerData = {} +local CurrentCops = 0 +local isOpen = false +local callSign = "" + +local tablet = 0 +local tabletDict = "amb@code_human_in_bus_passenger_idles@female@tablet@base" +local tabletAnim = "base" +local tabletProp = `prop_cs_tablet` +local tabletBone = 60309 +local tabletOffset = vector3(0.03, 0.002, -0.0) +local tabletRot = vector3(10.0, 160.0, 0.0) + +-- Events from qbcore +RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() + PlayerData = QBCore.Functions.GetPlayerData() + callSign = PlayerData.metadata.callsign +end) + +RegisterNetEvent('QBCore:Client:OnJobUpdate', function(JobInfo) + PlayerData.job = JobInfo +end) + +RegisterNetEvent('QBCore:Client:OnGangUpdate', function(GangInfo) + PlayerData.gang = GangInfo +end) + +RegisterNetEvent('police:SetCopCount', function(amount) + CurrentCops = amount +end) + +RegisterNetEvent('QBCore:Player:SetPlayerData', function(val) + PlayerData = val +end) + +AddEventHandler('onResourceStart', function(resourceName) + if GetCurrentResourceName() ~= resourceName then return end + Wait(150) + PlayerData = QBCore.Functions.GetPlayerData() + callSign = PlayerData.metadata.callsign +end) + +--==================================================================================== +------------------------------------------ +-- Functions -- +------------------------------------------ +--====================================================================================\ + +RegisterKeyMapping('mdt', 'Open Police MDT', 'keyboard', 'k') + +RegisterCommand('mdt', function() + if GetJobType(PlayerData.job.name) ~= nil then + TriggerServerEvent('mdt:server:openMDT') + end +end, false) + +Citizen.CreateThread(function() + TriggerEvent('chat:addSuggestion', '/mdt', 'Open the emergency services MDT', {}) +end) + +local function doAnimation() + if not isOpen then return end + -- Animation + RequestAnimDict(tabletDict) + while not HasAnimDictLoaded(tabletDict) do Citizen.Wait(100) end + -- Model + RequestModel(tabletProp) + while not HasModelLoaded(tabletProp) do Citizen.Wait(100) end + + local plyPed = PlayerPedId() + local tabletObj = CreateObject(tabletProp, 0.0, 0.0, 0.0, true, true, false) + local tabletBoneIndex = GetPedBoneIndex(plyPed, tabletBone) + + AttachEntityToEntity(tabletObj, plyPed, tabletBoneIndex, tabletOffset.x, tabletOffset.y, tabletOffset.z, tabletRot.x, tabletRot.y, tabletRot.z, true, false, false, false, 2, true) + SetModelAsNoLongerNeeded(tabletProp) + + CreateThread(function() + while isOpen do + Wait(0) + if not IsEntityPlayingAnim(plyPed, tabletDict, tabletAnim, 3) then + TaskPlayAnim(plyPed, tabletDict, tabletAnim, 3.0, 3.0, -1, 49, 0, 0, 0, 0) + end + end + + + ClearPedSecondaryTask(plyPed) + Citizen.Wait(250) + DetachEntity(tabletObj, true, false) + DeleteEntity(tabletObj) + end) +end + + +local function CurrentDuty(duty) + if duty == 1 then + return "10-41" + end + return "10-42" +end + +local function EnableGUI(enable) + SetNuiFocus(enable, enable) + SendNUIMessage({ type = "show", enable = enable, job = PlayerData.job.name, rosterLink = Config.RosterLink[PlayerData.job.name] }) + isOpen = enable + doAnimation() +end + +local function RefreshGUI() + SetNuiFocus(false, false) + SendNUIMessage({ type = "show", enable = false, job = PlayerData.job.name, rosterLink = Config.RosterLink[PlayerData.job.name] }) + isOpen = false +end + + +--==================================================================================== +------------------------------------------ +-- MAIN PAGE -- +------------------------------------------ +--==================================================================================== + + +RegisterCommand("restartmdt", function(source, args, rawCommand) + RefreshGUI() +end, false) + +RegisterNUICallback("deleteBulletin", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:deleteBulletin', id, data.title) + cb(true) +end) + +RegisterNUICallback("newBulletin", function(data, cb) + local title = data.title + local info = data.info + local time = data.time + TriggerServerEvent('mdt:server:NewBulletin', title, info, time) + cb(true) +end) + +RegisterNUICallback('escape', function(data, cb) + EnableGUI(false) + cb(true) +end) + +RegisterNetEvent('mdt:client:dashboardbulletin', function(sentData) + SendNUIMessage({ type = "bulletin", data = sentData }) +end) + +RegisterNetEvent('mdt:client:dashboardWarrants', function() + QBCore.Functions.TriggerCallback("mdt:server:getWarrants", function(data) + if data then + SendNUIMessage({ type = "warrants", data = data }) + end + end) + -- SendNUIMessage({ type = "warrants",}) +end) + +RegisterNUICallback("getAllDashboardData", function(data, cb) + TriggerEvent("mdt:client:dashboardWarrants") + cb(true) +end) + + +RegisterNetEvent('mdt:client:dashboardReports', function(sentData) + SendNUIMessage({ type = "reports", data = sentData }) +end) + +RegisterNetEvent('mdt:client:dashboardCalls', function(sentData) + SendNUIMessage({ type = "calls", data = sentData }) +end) + +RegisterNetEvent('mdt:client:newBulletin', function(ignoreId, sentData, job) + if ignoreId == GetPlayerServerId(PlayerId()) then return end; + if PlayerData.job.name == 'police' then + SendNUIMessage({ type = "newBulletin", data = sentData }) + elseif PlayerData.job.name == 'ambulance' then + SendNUIMessage({ type = "newBulletin", data = sentData }) + end +end) + +RegisterNetEvent('mdt:client:deleteBulletin', function(ignoreId, sentData, job) + if ignoreId == GetPlayerServerId(PlayerId()) then return end; + if PlayerData.job.name == 'police' or PlayerData.job.name == 'ambulance'then + SendNUIMessage({ type = "deleteBulletin", data = sentData }) + end +end) + +RegisterNetEvent('mdt:client:open', function(bulletin, activeUnits) + EnableGUI(true) + local x, y, z = table.unpack(GetEntityCoords(PlayerPedId())) + + local currentStreetHash, intersectStreetHash = GetStreetNameAtCoord(x, y, z) + local currentStreetName = GetStreetNameFromHashKey(currentStreetHash) + local intersectStreetName = GetStreetNameFromHashKey(intersectStreetHash) + local zone = tostring(GetNameOfZone(x, y, z)) + local area = GetLabelText(zone) + local playerStreetsLocation = area + + if not zone then zone = "UNKNOWN" end; + + if intersectStreetName ~= nil and intersectStreetName ~= "" then playerStreetsLocation = currentStreetName .. ", " .. intersectStreetName .. ", " .. area + elseif currentStreetName ~= nil and currentStreetName ~= "" then playerStreetsLocation = currentStreetName .. ", " .. area + else playerStreetsLocation = area end + + -- local grade = PlayerData.job.grade.name + + SendNUIMessage({ type = "data", activeUnits = activeUnits, name = "Welcome, " ..PlayerData.job.grade.name..' '..PlayerData.charinfo.lastname:sub(1,1):upper()..PlayerData.charinfo.lastname:sub(2), location = playerStreetsLocation, fullname = PlayerData.charinfo.firstname..' '..PlayerData.charinfo.lastname, bulletin = bulletin }) + TriggerEvent("mdt:client:dashboardWarrants") +end) + +RegisterNetEvent('mdt:client:exitMDT', function() + EnableGUI(false) +end) + +--==================================================================================== +------------------------------------------ +-- PROFILE PAGE -- +------------------------------------------ +--==================================================================================== + +RegisterNUICallback("searchProfiles", function(data, cb) + local p = promise.new() + + QBCore.Functions.TriggerCallback('mdt:server:SearchProfile', function(result) + p:resolve(result) + end, data.name) + + local data = Citizen.Await(p) + + cb(data) +end) + + +RegisterNetEvent('mdt:client:searchProfile', function(sentData, isLimited) + SendNUIMessage({ type = "profiles", data = sentData, isLimited = isLimited }) +end) + +RegisterNUICallback("saveProfile", function(data, cb) + local profilepic = data.pfp + local information = data.description + local cid = data.id + local fName = data.fName + local sName = data.sName + local tags = data.tags + local gallery = data.gallery + local fingerprint = data.fingerprint + local licenses = data.licenses + + TriggerServerEvent("mdt:server:saveProfile", profilepic, information, cid, fName, sName, tags, gallery, fingerprint, licenses) + cb(true) +end) + +RegisterNUICallback("getProfileData", function(data, cb) + local id = data.id + local p = nil + local getProfileDataPromise = function(data) + if p then return end + p = promise.new() + QBCore.Functions.TriggerCallback('mdt:server:GetProfileData', function(result) + p:resolve(result) + end, data) + return Citizen.Await(p) + end + local pP = nil + local result = getProfileDataPromise(id) + + --[[ local getProfileProperties = function(data) + if pP then return end + pP = promise.new() + QBCore.Functions.TriggerCallback('qb-phone:server:MeosGetPlayerHouses', function(result) + pP:resolve(result) + end, data) + return Citizen.Await(pP) + end + local propertiesResult = getProfileProperties(id) + result.properties = propertiesResult + ]] + local vehicles=result.vehicles + for i=1,#vehicles do + local vehicle=result.vehicles[i] + result.vehicles[i]['model'] = GetLabelText(GetDisplayNameFromVehicleModel(vehicle['vehicle'])) + end + p = nil + return cb(result) +end) + +RegisterNUICallback("newTag", function(data, cb) + if data.id ~= "" and data.tag ~= "" then + TriggerServerEvent('mdt:server:newTag', data.id, data.tag) + end + cb(true) +end) + +RegisterNUICallback("removeProfileTag", function(data, cb) + local cid = data.cid + local tagtext = data.text + TriggerServerEvent('mdt:server:removeProfileTag', cid, tagtext) + cb(removeProfileTag) +end) + +RegisterNUICallback("updateLicence", function(data, cb) + local type = data.type + local status = data.status + local cid = data.cid + TriggerServerEvent('mdt:server:updateLicense', cid, type, status) + cb(true) +end) + +RegisterNUICallback("searchIncidents", function(data, cb) + local incident = data.incident + TriggerServerEvent('mdt:server:searchIncidents', incident) + cb(true) +end) + +RegisterNUICallback("getIncidentData", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:getIncidentData', id) + cb(true) +end) + +RegisterNUICallback("incidentSearchPerson", function(data, cb) + local name = data.name + TriggerServerEvent('mdt:server:incidentSearchPerson', name ) + cb(true) +end) + +RegisterNetEvent('mdt:client:getProfileData', function(sentData, isLimited) + if not isLimited then + local vehicles = sentData['vehicles'] + for i=1, #vehicles do + sentData['vehicles'][i]['plate'] = string.upper(sentData['vehicles'][i]['plate']) + local tempModel = vehicles[i]['model'] + if tempModel and tempModel ~= "Unknown" then + local DisplayNameModel = GetDisplayNameFromVehicleModel(tempModel) + local LabelText = GetLabelText(DisplayNameModel) + if LabelText == "NULL" then LabelText = DisplayNameModel end + sentData['vehicles'][i]['model'] = LabelText + end + end + end + SendNUIMessage({ type = "profileData", data = sentData, isLimited = isLimited }) +end) + +RegisterNetEvent('mdt:client:getIncidents', function(sentData) + SendNUIMessage({ type = "incidents", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getIncidentData', function(sentData, sentConvictions) + SendNUIMessage({ type = "incidentData", data = sentData, convictions = sentConvictions }) +end) + +RegisterNetEvent('mdt:client:incidentSearchPerson', function(sentData) + SendNUIMessage({ type = "incidentSearchPerson", data = sentData }) +end) + + +RegisterNUICallback('SetHouseLocation', function(data, cb) + local coords = {} + for word in data.coord[1]:gmatch('[^,%s]+') do + coords[#coords+1] = tonumber(word) + end + SetNewWaypoint(coords[1], coords[2]) + QBCore.Functions.Notify('GPS has been set!', 'success') +end) + +--==================================================================================== +------------------------------------------ +-- BOLO PAGE -- +------------------------------------------ +--==================================================================================== + +RegisterNUICallback("searchBolos", function(data, cb) + local searchVal = data.searchVal + TriggerServerEvent('mdt:server:searchBolos', searchVal) + cb(true) +end) + +RegisterNUICallback("getAllBolos", function(data, cb) + TriggerServerEvent('mdt:server:getAllBolos') + cb(true) +end) + +RegisterNUICallback("getAllIncidents", function(data, cb) + TriggerServerEvent('mdt:server:getAllIncidents') + cb(true) +end) + +RegisterNUICallback("getBoloData", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:getBoloData', id) + cb(true) +end) + +RegisterNUICallback("newBolo", function(data, cb) + local existing = data.existing + local id = data.id + local title = data.title + local plate = data.plate + local owner = data.owner + local individual = data.individual + local detail = data.detail + local tags = data.tags + local gallery = data.gallery + local officers = data.officers + local time = data.time + TriggerServerEvent('mdt:server:newBolo', existing, id, title, plate, owner, individual, detail, tags, gallery, officers, time) + cb(true) +end) + +RegisterNUICallback("deleteBolo", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:deleteBolo', id) + cb(true) +end) + +RegisterNUICallback("deleteICU", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:deleteICU', id) + cb(true) +end) + +RegisterNetEvent('mdt:client:getBolos', function(sentData) + SendNUIMessage({ type = "bolos", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getAllIncidents', function(sentData) + SendNUIMessage({ type = "incidents", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getAllBolos', function(sentData) + SendNUIMessage({ type = "bolos", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getBoloData', function(sentData) + SendNUIMessage({ type = "boloData", data = sentData }) +end) + +RegisterNetEvent('mdt:client:boloComplete', function(sentData) + SendNUIMessage({ type = "boloComplete", data = sentData }) +end) + +--==================================================================================== +------------------------------------------ +-- REPORTS PAGE -- +------------------------------------------ +--==================================================================================== + +RegisterNUICallback("getAllReports", function(data, cb) + TriggerServerEvent('mdt:server:getAllReports') + cb(true) +end) + +RegisterNUICallback("getReportData", function(data, cb) + local id = data.id + TriggerServerEvent('mdt:server:getReportData', id) + cb(true) +end) + +RegisterNUICallback("searchReports", function(data, cb) + local name = data.name + TriggerServerEvent('mdt:server:searchReports', name) + cb(true) +end) + +RegisterNUICallback("newReport", function(data, cb) + local existing = data.existing + local id = data.id + local title = data.title + local reporttype = data.type + local details = data.details + local tags = data.tags + local gallery = data.gallery + local officers = data.officers + local civilians = data.civilians + local time = data.time + + TriggerServerEvent('mdt:server:newReport', existing, id, title, reporttype, details, tags, gallery, officers, civilians, time) + cb(true) +end) + +RegisterNetEvent('mdt:client:getAllReports', function(sentData) + SendNUIMessage({ type = "reports", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getReportData', function(sentData) + SendNUIMessage({ type = "reportData", data = sentData }) +end) + +RegisterNetEvent('mdt:client:reportComplete', function(sentData) + SendNUIMessage({ type = "reportComplete", data = sentData }) +end) + +--==================================================================================== +------------------------------------------ +-- DMV PAGE -- +------------------------------------------ +--==================================================================================== +RegisterNUICallback("searchVehicles", function(data, cb) + + local p = promise.new() + + QBCore.Functions.TriggerCallback('mdt:server:SearchVehicles', function(result) + p:resolve(result) + end, data.name) + + local result = Citizen.Await(p) + for i=1, #result do + local vehicle = result[i] + local mods = json.decode(result[i].mods) + result[i]['plate'] = string.upper(result[i]['plate']) + result[i]['color'] = Config.ColorInformation[mods['color1']] + result[i]['colorName'] = Config.ColorNames[mods['color1']] + result[i]['model'] = GetLabelText(GetDisplayNameFromVehicleModel(vehicle['vehicle'])) + end + cb(result) + +end) + +RegisterNUICallback("getVehicleData", function(data, cb) + local plate = data.plate + TriggerServerEvent('mdt:server:getVehicleData', plate) + cb(true) +end) + +RegisterNUICallback("saveVehicleInfo", function(data, cb) + local dbid = data.dbid + local plate = data.plate + local imageurl = data.imageurl + local notes = data.notes + local stolen = data.stolen + local code5 = data.code5 + local impound = data.impound + local JobType = GetJobType(PlayerData.job.name) + if JobType == 'police' and impound.impoundChanged == true then + if impound.inpoundActive then + local found = 0 + local plate = string.upper(string.gsub(data['plate'], "^%s*(.-)%s*$", "%1")) + local vehicles = GetGamePool('CVehicle') + + for k,v in pairs(vehicles) do + local plt = string.upper(string.gsub(GetVehicleNumberPlateText(v), "^%s*(.-)%s*$", "%1")) + if plt == plate then + local dist = #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(v)) + if dist < 5.0 then + found = VehToNet(v) + SendNUIMessage({ type = "greenImpound" }) + end + break + end + end + + if found == 0 then + QBCore.Functions.Notify('Vehicle not found!', 'error') + SendNUIMessage({ type = "redImpound" }) + end + --TriggerServerEvent('mdt:server:impoundVehicle', data, found) + --cb('ok') + else + local ped = PlayerPedId() + local playerPos = GetEntityCoords(ped) + for k, v in pairs(Config.ImpoundLocations) do + if (#(playerPos - vector3(v.x, v.y, v.z)) < 20.0) then + --TriggerServerEvent('mdt:server:removeImpound', data['plate'], k) + impound.CurrentSelection = k + break + end + end + end + end + print(impound.CurrentSelection) + TriggerServerEvent('mdt:server:saveVehicleInfo', dbid, plate, imageurl, notes, stolen, code5, impound) + cb(true) +end) + +RegisterNUICallback("getAllLogs", function(data, cb) + TriggerServerEvent('mdt:server:getAllLogs') + cb(true) +end) + +RegisterNUICallback("getPenalCode", function(data, cb) + TriggerServerEvent('mdt:server:getPenalCode') + cb(true) +end) + +RegisterNUICallback("toggleDuty", function(data, cb) + -- TriggerServerEvent('QBCore:ToggleDuty') + TriggerEvent("qb-policejob:ToggleDuty") + cb(true) +end) + +RegisterNUICallback("setCallsign", function(data, cb) + TriggerServerEvent('mdt:server:setCallsign', data.cid, data.newcallsign) + cb(true) +end) + +RegisterNUICallback("setRadio", function(data, cb) + TriggerServerEvent('mdt:server:setRadio', data.cid, data.newradio) + cb(true) +end) + +RegisterNUICallback("saveIncident", function(data, cb) + TriggerServerEvent('mdt:server:saveIncident', data.ID, data.title, data.information, data.tags, data.officers, data.civilians, data.evidence, data.associated, data.time) + cb(true) +end) + +RegisterNUICallback("removeIncidentCriminal", function(data, cb) + TriggerServerEvent('mdt:server:removeIncidentCriminal', data.cid, data.incidentId) + cb(true) +end) + +RegisterNetEvent('mdt:client:getVehicleData', function(sentData) + if sentData and sentData[1] then + local vehicle = sentData[1] + local vehData = json.decode(vehicle['vehicle']) + vehicle['color'] = Config.ColorInformation[vehicle['color1']] + vehicle['colorName'] = Config.ColorNames[vehicle['color1']] + vehicle['model'] = GetLabelText(GetDisplayNameFromVehicleModel(vehicle['vehicle'])) + vehicle['class'] = Config.ClassList[GetVehicleClassFromName(vehicle['vehicle'])] + vehicle['vehicle'] = nil + SendNUIMessage({ type = "getVehicleData", data = vehicle }) + end +end) + +RegisterNetEvent('mdt:client:updateVehicleDbId', function(sentData) + SendNUIMessage({ type = "updateVehicleDbId", data = tonumber(sentData) }) +end) + +RegisterNetEvent('mdt:client:getAllLogs', function(sentData) + SendNUIMessage({ type = "getAllLogs", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getPenalCode', function(titles, penalcode) + SendNUIMessage({ type = "getPenalCode", titles = titles, penalcode = penalcode }) +end) + +RegisterNetEvent('mdt:client:setRadio', function(radio) + if type(tonumber(radio)) == "number" then + exports["pma-voice"]:setVoiceProperty("radioEnabled", true) + exports["pma-voice"]:setRadioChannel(tonumber(radio)) + QBCore.Functions.Notify("You have set your radio frequency to "..radio..".", "success") + else + QBCore.Functions.Notify("Invalid Station(Please enter a number)", "error") + end +end) + +RegisterNetEvent('mdt:client:sig100', function(radio, type) + local job = PlayerData.job.name + local duty = PlayerData.job.onduty + if (job == "police" or job == "ambulance") and duty == 1 then + if type == true then + exports['erp_notifications']:PersistentAlert("START", "signall100-"..radio, "inform", "Radio "..radio.." is currently signal 100!") + end + end + if not type then + exports['erp_notifications']:PersistentAlert("END", "signall100-"..radio) + end +end) + +RegisterNetEvent('mdt:client:updateCallsign', function(callsign) + callSign = tostring(callsign) +end) + +RegisterNetEvent('mdt:client:updateIncidentDbId', function(sentData) + SendNUIMessage({ type = "updateIncidentDbId", data = tonumber(sentData) }) +end) + + +--==================================================================================== +------------------------------------------ +-- DISPATCH PAGE -- +------------------------------------------ +--==================================================================================== + +RegisterNetEvent('dispatch:clNotify', function(sNotificationData, sNotificationId) + SendNUIMessage({ type = "call", data = sNotificationData }) +end) + +RegisterNUICallback("setWaypoint", function(data, cb) + TriggerServerEvent('mdt:server:setWaypoint', data.callid) + cb(true) +end) + +RegisterNUICallback("callDetach", function(data, cb) + TriggerServerEvent('mdt:server:callDetach', data.callid) + cb(true) +end) + +RegisterNUICallback("callAttach", function(data, cb) + TriggerServerEvent('mdt:server:callAttach', data.callid) + cb(true) +end) + +RegisterNUICallback("attachedUnits", function(data, cb) + TriggerServerEvent('mdt:server:attachedUnits', data.callid) + cb(true) +end) + +RegisterNUICallback("callDispatchDetach", function(data, cb) + TriggerServerEvent('mdt:server:callDispatchDetach', data.callid, data.cid) + cb(true) +end) + +RegisterNUICallback("setDispatchWaypoint", function(data, cb) + TriggerServerEvent('mdt:server:setDispatchWaypoint', data.callid, data.cid) + cb(true) +end) + +RegisterNUICallback("callDragAttach", function(data, cb) + TriggerServerEvent('mdt:server:callDragAttach', data.callid, data.cid) + cb(true) +end) + +RegisterNUICallback("setWaypointU", function(data, cb) + TriggerServerEvent('mdt:server:setWaypoint:unit', data.cid) + cb(true) +end) + +RegisterNUICallback("dispatchMessage", function(data, cb) + TriggerServerEvent('mdt:server:sendMessage', data.message, data.time) + cb(true) +end) + +RegisterNUICallback("refreshDispatchMsgs", function(data, cb) + TriggerServerEvent('mdt:server:refreshDispatchMsgs') + cb(true) +end) + +RegisterNUICallback("dispatchNotif", function(data, cb) + local info = data['data'] + local mentioned = false + if callSign ~= "" then if string.find(string.lower(info['message']),string.lower(string.gsub(callSign,'-','%%-'))) then mentioned = true end end + if mentioned then + + -- Send notification to phone?? + TriggerEvent('erp_phone:sendNotification', {img = info['profilepic'], title = "Dispatch (Mention)", content = info['message'], time = 7500, customPic = true }) + + PlaySoundFrontend(-1, "SELECT", "HUD_FRONTEND_DEFAULT_SOUNDSET", false) + PlaySoundFrontend(-1, "Event_Start_Text", "GTAO_FM_Events_Soundset", 0) + else + TriggerEvent('erp_phone:sendNotification', {img = info['profilepic'], title = "Dispatch ("..info['name']..")", content = info['message'], time = 5000, customPic = true }) + end + cb(true) +end) + +RegisterNUICallback("getCallResponses", function(data, cb) + TriggerServerEvent('mdt:server:getCallResponses', data.callid) + cb(true) +end) + +RegisterNUICallback("sendCallResponse", function(data, cb) + TriggerServerEvent('mdt:server:sendCallResponse', data.message, data.time, data.callid) + cb(true) +end) + +--[[ RegisterNUICallback("impoundVehicle", function(data, cb) + local JobType = GetJobType(PlayerData.job.name) + if JobType == 'police' then + local found = 0 + local plate = string.upper(string.gsub(data['plate'], "^%s*(.-)%s*$", "%1")) + local vehicles = GetGamePool('CVehicle') + + for k,v in pairs(vehicles) do + local plt = string.upper(string.gsub(GetVehicleNumberPlateText(v), "^%s*(.-)%s*$", "%1")) + if plt == plate then + local dist = #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(v)) + if dist < 5.0 then + found = VehToNet(v) + end + break + end + end + + if found == 0 then + QBCore.Functions.Notify('Vehicle not found!', 'error') + return + end + + SendNUIMessage({ type = "greenShit" }) + TriggerServerEvent('mdt:server:impoundVehicle', data, found) + cb('ok') + end +end) ]] + +RegisterNUICallback("removeImpound", function(data, cb) + local ped = PlayerPedId() + local playerPos = GetEntityCoords(ped) + for k, v in pairs(Config.ImpoundLocations) do + if (#(playerPos - vector3(v.x, v.y, v.z)) < 20.0) then + TriggerServerEvent('mdt:server:removeImpound', data['plate'], k) + break + end + end + cb('ok') +end) + +RegisterNUICallback("statusImpound", function(data, cb) + TriggerServerEvent('mdt:server:statusImpound', data['plate']) + cb('ok') +end) + +RegisterNetEvent('mdt:client:attachedUnits', function(sentData, callid) + SendNUIMessage({ type = "attachedUnits", data = sentData, callid = callid }) +end) + +RegisterNetEvent('mdt:client:setWaypoint', function(callInformation) + SetNewWaypoint(callInformation['origin']['x'], callInformation['origin']['y']) +end) + +RegisterNetEvent('mdt:client:callDetach', function(callid, sentData) + local job = PlayerData.job.name + if job == "police" or job == 'ambulance' then SendNUIMessage({ type = "callDetach", callid = callid, data = tonumber(sentData) }) end +end) +RegisterNetEvent('mdt:client:callAttach', function(callid, sentData) + local job = PlayerData.job.name + if job == "police" or job == 'ambulance' then + SendNUIMessage({ type = "callAttach", callid = callid, data = tonumber(sentData) }) + end +end) + +RegisterNetEvent('mdt:client:setWaypoint:unit', function(sentData) + SetNewWaypoint(sentData.x, sentData.y) +end) + +RegisterNetEvent('mdt:client:dashboardMessage', function(sentData) + local job = PlayerData.job.name + if job == "police" or job == 'ambulance' then + SendNUIMessage({ type = "dispatchmessage", data = sentData }) + end +end) + +RegisterNetEvent('mdt:client:dashboardMessages', function(sentData) + SendNUIMessage({ type = "dispatchmessages", data = sentData }) +end) + +RegisterNetEvent('mdt:client:getCallResponses', function(sentData, sentCallId) + SendNUIMessage({ type = "getCallResponses", data = sentData, callid = sentCallId }) +end) + +RegisterNetEvent('mdt:client:sendCallResponse', function(message, time, callid, name) + SendNUIMessage({ type = "sendCallResponse", message = message, time = time, callid = callid, name = name }) +end) + +RegisterNetEvent('mdt:client:notifyMechanics', function(sentData) + --[[if exports["erp-jobsystem"]:CanTow() then + TriggerServerEvent('erp-sounds:PlayWithinDistance', 1.5, 'beep', 0.4) + TriggerEvent('erp_phone:sendNotification', {img = 'vehiclenotif.png', title = "Impound", content = "New vehicle is ready to be impounded!", time = 5000 }) + end]] +end) + +RegisterNetEvent('mdt:client:statusImpound', function(data, plate) + SendNUIMessage({ type = "statusImpound", data = data, plate = plate }) +end) \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua new file mode 100644 index 00000000..76aeee8f --- /dev/null +++ b/fxmanifest.lua @@ -0,0 +1,43 @@ +fx_version 'cerulean' +game 'gta5' + +author 'Flawws, Flakey, Idris and the Project Sloth team' +description 'EchoRP MDT Rewrite for QBCore' +version '0.9.9' + +lua54 'yes' + +shared_script 'shared/config.lua' + +server_scripts { + '@oxmysql/lib/MySQL.lua', + 'server/utils.lua', + 'server/dbm.lua', + 'server/main.lua' +} +client_scripts{ + 'client/main.lua', + 'client/cl_impound.lua' +} + +ui_page 'ui/dashboard.html' + +files { + 'ui/img/sasp_badge.png', + 'ui/img/ems_badge.png', + 'ui/img/court.png', + 'ui/img/warrant_pfp.png', + 'ui/img/profile_pic.png', + 'ui/img/not-found.jpg', + 'ui/img/male.png', + 'ui/img/female.png', + 'ui/dashboard.html', + 'ui/dmv.html', + 'ui/bolos.html', + 'ui/incidents.html', + 'ui/penalcode.html', + 'ui/reports.html', + 'ui/warrants.html', + 'ui/app.js', + 'ui/style.css', +} \ No newline at end of file diff --git a/mdt.sql b/mdt.sql new file mode 100644 index 00000000..03bb0ae9 --- /dev/null +++ b/mdt.sql @@ -0,0 +1,111 @@ +CREATE TABLE IF NOT EXISTS `mdt_data` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cid` VARCHAR(20) DEFAULT NULL, + `information` MEDIUMTEXT DEFAULT NULL, + `tags` TEXT NOT NULL, + `gallery` TEXT NOT NULL, + `jobtype` VARCHAR(25) DEFAULT 'police', + `pfp` TEXT DEFAULT NULL, + `fingerprint` VARCHAR(50) DEFAULT NULL, + PRIMARY KEY (`cid`), + KEY `id` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_bulletin` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `title` TEXT NOT NULL, + `desc` TEXT NOT NULL, + `author` varchar(50) NOT NULL, + `time` varchar(20) NOT NULL, + `jobtype` VARCHAR(25) DEFAULT 'police', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_reports` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `author` varchar(50) DEFAULT NULL, + `title` varchar(255) DEFAULT NULL, + `type` varchar(50) DEFAULT NULL, + `details` text DEFAULT NULL, + `tags` text DEFAULT NULL, + `officersinvolved` text DEFAULT NULL, + `civsinvolved` text DEFAULT NULL, + `gallery` text DEFAULT NULL, + `time` varchar(20) DEFAULT NULL, + `jobtype` varchar(25) DEFAULT 'police', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_bolos` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `author` varchar(50) DEFAULT NULL, + `title` varchar(50) DEFAULT NULL, + `plate` varchar(50) DEFAULT NULL, + `owner` varchar(50) DEFAULT NULL, + `individual` varchar(50) DEFAULT NULL, + `detail` text DEFAULT NULL, + `tags` text DEFAULT NULL, + `gallery` text DEFAULT NULL, + `officersinvolved` text DEFAULT NULL, + `time` varchar(20) DEFAULT NULL, + `jobtype` varchar(25) NOT NULL DEFAULT 'police', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_convictions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `cid` varchar(50) DEFAULT NULL, + `linkedincident` int(11) NOT NULL DEFAULT 0, + `warrant` varchar(50) DEFAULT NULL, + `guilty` varchar(50) DEFAULT NULL, + `processed` varchar(50) DEFAULT NULL, + `associated` varchar(50) DEFAULT '0', + `charges` text DEFAULT NULL, + `fine` int(11) DEFAULT 0, + `sentence` int(11) DEFAULT 0, + `recfine` int(11) DEFAULT 0, + `recsentence` int(11) DEFAULT 0, + `time` varchar(20) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_incidents` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `author` varchar(50) NOT NULL DEFAULT '', + `title` varchar(50) NOT NULL DEFAULT '0', + `details` text NOT NULL, + `tags` text NOT NULL, + `officersinvolved` text NOT NULL, + `civsinvolved` text NOT NULL, + `evidence` text NOT NULL, + `time` varchar(20) DEFAULT NULL, + `jobtype` varchar(25) NOT NULL DEFAULT 'police', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_logs` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `text` text NOT NULL, + `time` varchar(20) DEFAULT NULL, + `jobtype` varchar(25) DEFAULT 'police', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_vehicleinfo` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `plate` varchar(50) DEFAULT NULL, + `information` text NOT NULL DEFAULT '', + `stolen` tinyint(1) NOT NULL DEFAULT 0, + `code5` tinyint(1) NOT NULL DEFAULT 0, + `image` text NOT NULL DEFAULT '', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE IF NOT EXISTS `mdt_impound` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `vehicleid` int(11) NOT NULL, + `linkedreport` int(11) NOT NULL, + `fee` int(11) DEFAULT NULL, + `time` varchar(255) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; \ No newline at end of file diff --git a/readme.md b/readme.md new file mode 100644 index 00000000..98392104 --- /dev/null +++ b/readme.md @@ -0,0 +1,10 @@ +# Beta Released + +## EchoRP MDT QBCore Edit (WIP) + +EchoRP MDT Released by Flawws#9999 from Echo RP rewritten and restructured for QBCore. + +## Dependencies + +- QBCore +- OxMySQL V1.9.0 (will release docs on how to use an older version) diff --git a/server/dbm.lua b/server/dbm.lua new file mode 100644 index 00000000..b9655174 --- /dev/null +++ b/server/dbm.lua @@ -0,0 +1,153 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +-- (Start) Opening the MDT and sending data +function AddLog(text) + --print(text) + return MySQL.insert.await('INSERT INTO `mdt_logs` (`text`, `time`) VALUES (?,?)', {text, os.time() * 1000}) + -- return exports.oxmysql:execute('INSERT INTO `mdt_logs` (`text`, `time`) VALUES (:text, :time)', { text = text, time = os.time() * 1000 }) +end + +function GetNameFromId(cid) + -- Should be a scalar? + local result = MySQL.scalar.await('SELECT charinfo FROM players WHERE citizenid = @citizenid', { ['@citizenid'] = cid }) + if result ~= nil then + local charinfo = json.decode(result) + local fullname = charinfo['firstname']..' '..charinfo['lastname'] + return fullname + else + --print('Player does not exist') + return nil + end + -- return exports.oxmysql:executeSync('SELECT firstname, lastname FROM `users` WHERE id = :id LIMIT 1', { id = cid }) +end + +-- idk what this is used for either +function GetPersonInformation(cid, jobtype) + local result = MySQL.query.await('SELECT information, tags, gallery, pfp, fingerprint FROM mdt_data WHERE cid = ? and jobtype = ?', { cid, jobtype}) + return result[1] + -- return exports.oxmysql:executeSync('SELECT information, tags, gallery FROM mdt WHERE cid= ? and type = ?', { cid, jobtype }) +end + +-- idk but I guess sure? +function GetIncidentName(id) + -- Should also be a scalar + return MySQL.query.await('SELECT title FROM `mdt_incidents` WHERE id = :id LIMIT 1', { id = id }) + -- return exports.oxmysql:executeSync('SELECT title FROM `mdt_incidents` WHERE id = :id LIMIT 1', { id = id }) +end + +function GetConvictions(cids) + return MySQL.query.await('SELECT * FROM `mdt_convictions` WHERE `cid` IN(?)', { cids }) + -- return exports.oxmysql:executeSync('SELECT * FROM `mdt_convictions` WHERE `cid` IN(?)', { cids }) +end + +function GetLicenseInfo(cid) + local result = MySQL.query.await('SELECT * FROM `licenses` WHERE `cid` = ?', { cid }) + return result + -- return exports.oxmysql:executeSync('SELECT * FROM `licenses` WHERE `cid`=:cid', { cid = cid }) +end + +function CreateUser(cid, tableName) + AddLog("A user was created with the CID: "..cid) + -- return exports.oxmysql:insert("INSERT INTO `"..dbname.."` (cid) VALUES (:cid)", { cid = cid }) + return MySQL.insert.await("INSERT INTO `"..tableName.."` (cid) VALUES (:cid)", { cid = cid }) +end + +function GetPlayerVehicles(cid, cb) + return MySQL.query.await('SELECT id, plate, vehicle FROM player_vehicles WHERE citizenid=:cid', { cid = cid }) +end + +function GetBulletins(JobType) + return MySQL.query.await('SELECT * FROM `mdt_bulletin` WHERE `jobtype` = ? LIMIT 10', { JobType }) + -- return exports.oxmysql:executeSync('SELECT * FROM `mdt_bulletin` WHERE `type`= ? LIMIT 10', { JobType }) +end + +function GetPlayerProperties(cid, cb) + local result = MySQL.query.await('SELECT houselocations.label, houselocations.coords FROM player_houses INNER JOIN houselocations ON player_houses.house = houselocations.name where player_houses.citizenid = ?', {cid}) + return result +end + +function GetPlayerDataById(id) + local Player = QBCore.Functions.GetPlayerByCitizenId(id) + if Player ~= nil then + local response = {citizenid = Player.PlayerData.citizenid, charinfo = Player.PlayerData.charinfo, metadata = Player.PlayerData.metadata, job = Player.PlayerData.job} + return response + else + return MySQL.single.await('SELECT citizenid, charinfo, job, metadata FROM players WHERE citizenid = ? LIMIT 1', { id }) + end + + -- return exports.oxmysql:executeSync('SELECT citizenid, charinfo, job FROM players WHERE citizenid = ? LIMIT 1', { id }) +end + +-- Probs also best not to use +--[[ function GetImpoundStatus(vehicleid, cb) + cb( #(exports.oxmysql:executeSync('SELECT id FROM `impound` WHERE `vehicleid`=:vehicleid', {['vehicleid'] = vehicleid })) > 0 ) +end ]] + +function GetBoloStatus(plate) + local result = MySQL.scalar.await('SELECT id FROM `mdt_bolos` WHERE LOWER(`plate`)=:plate', { plate = string.lower(plate)}) + return result + -- return exports.oxmysql:scalarSync('SELECT id FROM `mdt_bolos` WHERE LOWER(`plate`)=:plate', { plate = string.lower(plate)}) +end + +function GetOwnerName(cid) + local result = MySQL.scalar.await('SELECT charinfo FROM `players` WHERE LOWER(`citizenid`) = ? LIMIT 1', {cid}) + return result + -- return exports.oxmysql:scalarSync('SELECT charinfo FROM `players` WHERE id=:cid LIMIT 1', { cid = cid}) +end + +function GetVehicleInformation(plate, cb) + local result = MySQL.query.await('SELECT id, information FROM `mdt_vehicleinfo` WHERE plate=:plate', { plate = plate}) + cb(result) +end + +function GetPlayerLicenses(identifier) + local response = false + local Player = QBCore.Functions.GetPlayerByCitizenId(identifier) + if Player ~= nil then + return Player.PlayerData.metadata.licences + else + local result = MySQL.scalar.await('SELECT metadata FROM players WHERE citizenid = @identifier', {['@identifier'] = identifier}) + if result ~= nil then + local metadata = json.decode(result) + if metadata["licences"] ~= nil and metadata["licences"] then + return metadata["licences"] + end + end + end +end + +function ManageLicense(identifier, type, status) + local Player = QBCore.Functions.GetPlayerByCitizenId(identifier) + local licenseStatus = nil + if status == "give" then licenseStatus = true elseif status == "revoke" then licenseStatus = false end + if Player ~= nil then + local licences = Player.PlayerData.metadata["licences"] + local newLicenses = {} + for k, v in pairs(licences) do + local status = v + if k == type then + status = licenseStatus + end + newLicenses[k] = status + end + Player.Functions.SetMetaData("licences", newLicenses) + else + local licenseType = '$.licences.'..type + local result = MySQL.query.await('UPDATE `players` SET `metadata` = JSON_REPLACE(`metadata`, ?, ?) WHERE `citizenid` = ?', {licenseType, licenseStatus, identifier}) --seems to not work on older MYSQL versions, think about alternative + end +end + +function ManageLicenses(identifier, incomingLicenses) + local Player = QBCore.Functions.GetPlayerByCitizenId(identifier) + if Player ~= nil then + Player.Functions.SetMetaData("licences", incomingLicenses) + + else + local result = MySQL.scalar.await('SELECT metadata FROM players WHERE citizenid = @identifier', {['@identifier'] = identifier}) + result = json.decode(result) + for k, v in pairs(result.licences) do + result.licences[k] = incomingLicenses[k] + end + MySQL.query.await('UPDATE `players` SET `metadata` = @metadata WHERE citizenid = @citizenid', {['@metadata'] = json.encode(result), ['@citizenid'] = identifier}) + end +end \ No newline at end of file diff --git a/server/main.lua b/server/main.lua new file mode 100644 index 00000000..e7e2fede --- /dev/null +++ b/server/main.lua @@ -0,0 +1,1265 @@ +local QBCore = exports['qb-core']:GetCoreObject() +-- Maybe cache? +local incidents = {} +local convictions = {} +local bolos = {} + +-- TODO make it departments compatible +local activeUnits = {} + +local impound = {} +local dispatchMessages = {} + +local function IsPolice(job) + for k, v in pairs(Config.PoliceJobs) do + if job == k then + return true + end + end + return false +end + +AddEventHandler("onResourceStart", function(resourceName) + if (resourceName == 'qb-mdt') then + activeUnits = {} + end +end) + +RegisterNetEvent('mdt:server:openMDT', function() + local src = source + local PlayerData = GetPlayerData(src) + if not PermCheck(src, PlayerData) then return end + local Radio = Player(src).state.radioChannel or 0 + --[[ if Radio > 100 then + Radio = 0 + end ]] + + activeUnits[PlayerData.citizenid] = { + cid = PlayerData.citizenid, + callSign = PlayerData.metadata['callsign'], + firstName = PlayerData.charinfo.firstname:sub(1,1):upper()..PlayerData.charinfo.firstname:sub(2), + lastName = PlayerData.charinfo.lastname:sub(1,1):upper()..PlayerData.charinfo.lastname:sub(2), + radio = Radio, + unitType = PlayerData.job.name, + duty = PlayerData.job.onduty + } + + local JobType = GetJobType(PlayerData.job.name) + local bulletin = GetBulletins(JobType) + + --TriggerClientEvent('mdt:client:dashboardbulletin', src, bulletin) + TriggerClientEvent('mdt:client:open', src, bulletin, activeUnits) + --TriggerClientEvent('mdt:client:GetActiveUnits', src, activeUnits) +end) + +QBCore.Functions.CreateCallback('mdt:server:SearchProfile', function(source, cb, sentData) + if not sentData then return cb({}) end + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType ~= nil then + local people = MySQL.query.await("SELECT p.citizenid, p.charinfo, md.pfp FROM players p LEFT JOIN mdt_data md on p.citizenid = md.cid WHERE LOWER(`charinfo`) LIKE :query OR LOWER(`citizenid`) LIKE :query OR LOWER(`fingerprint`) LIKE :query AND jobtype = :jobtype LIMIT 20", { query = string.lower('%'..sentData..'%'), jobtype = JobType }) + local citizenIds = {} + local citizenIdIndexMap = {} + if not next(people) then cb({}) return end + + for index, data in pairs(people) do + people[index]['warrant'] = false + people[index]['convictions'] = 0 + people[index]['licences'] = GetPlayerLicenses(data.citizenid) + people[index]['pp'] = ProfPic(data.gender, data.pfp) + citizenIds[#citizenIds+1] = data.citizenid + citizenIdIndexMap[data.citizenid] = index + end + + local convictions = GetConvictions(citizenIds) + + if next(convictions) then + for _, conv in pairs(convictions) do + if conv.warrant then people[citizenIdIndexMap[conv.cid]].warrant = true end + + local charges = json.decode(conv.charges) + people[citizenIdIndexMap[conv.cid]].convictions = people[citizenIdIndexMap[conv.cid]].convictions + #charges + end + end + + + return cb(people) + end + end + + return cb({}) +end) + +QBCore.Functions.CreateCallback("mdt:server:getWarrants", function(source, cb) + local WarrantData = {} + local data = MySQL.query.await("SELECT * FROM mdt_convictions", {}) + for _, value in pairs(data) do + if value.warrant == "1" then + WarrantData[#WarrantData+1] = { + cid = value.cid, + linkedincident = value.linkedincident, + name = GetNameFromId(value.cid), + time = value.time + } + end + end + cb(WarrantData) +end) + +QBCore.Functions.CreateCallback('mdt:server:OpenDashboard', function(source, cb) + local PlayerData = GetPlayerData(source) + if not PermCheck(source, PlayerData) then return end + local JobType = GetJobType(PlayerData.job.name) + local bulletin = GetBulletins(JobType) + cb(bulletin) +end) + +RegisterNetEvent('mdt:server:NewBulletin', function(title, info, time) + local src = source + local PlayerData = GetPlayerData(src) + if not PermCheck(src, PlayerData) then return end + local JobType = GetJobType(PlayerData.job.name) + local playerName = GetNameFromPlayerData(PlayerData) + local newBulletin = MySQL.insert.await('INSERT INTO `mdt_bulletin` (`title`, `desc`, `author`, `time`, `jobtype`) VALUES (:title, :desc, :author, :time, :jt)', { + title = title, + desc = info, + author = playerName, + time = tostring(time), + jt = JobType + }) + + AddLog(("A new bulletin was added by %s with the title: %s!"):format(playerName, title)) + TriggerClientEvent('mdt:client:newBulletin', -1, src, {id = newBulletin, title = title, info = info, time = time, author = PlayerData.CitizenId}, JobType) +end) + +RegisterNetEvent('mdt:server:deleteBulletin', function(id, title) + if not id then return false end + local src = source + local PlayerData = GetPlayerData(src) + if not PermCheck(src, PlayerData) then return end + local JobType = GetJobType(PlayerData.job.name) + + local deletion = MySQL.query.await('DELETE FROM `mdt_bulletin` where title = ?', {title}) + AddLog("Bulletin with Title: "..title.." was deleted by " .. GetNameFromPlayerData(PlayerData) .. ".") +end) + +QBCore.Functions.CreateCallback('mdt:server:GetProfileData', function(source, cb, sentId) + if not sentId then return cb({}) end + + local src = source + local PlayerData = GetPlayerData(src) + if not PermCheck(src, PlayerData) then return cb({}) end + local JobType = GetJobType(PlayerData.job.name) + local target = GetPlayerDataById(sentId) + local JobName = PlayerData.job.name + + if not target or not next(target) then return cb({}) end + + -- Convert to string because bad code, yes? + if type(target.job) == 'string' then target.job = json.decode(target.job) end + if type(target.charinfo) == 'string' then target.charinfo = json.decode(target.charinfo) end + if type(target.metadata) == 'string' then target.metadata = json.decode(target.metadata) end + + local job, grade = UnpackJob(target.job) + + local person = { + cid = target.citizenid, + firstname = target.charinfo.firstname, + lastname = target.charinfo.lastname, + job = job.label, + grade = grade.name, + pp = ProfPic(target.charinfo.gender, null), + licences = target.metadata['licences'], + dob = target.charinfo.birthdate, + mdtinfo = '', + fingerprint = '', + tags = {}, + vehicles = {}, + properties = {}, + gallery = {}, + isLimited = false + } + + if Config.PoliceJobs[JobName] then + local convictions = GetConvictions({person.cid}) + person.convictions = {} + if next(convictions) then + for _, conv in pairs(convictions) do + if conv.warrant then person.warrant = true end + local charges = json.decode(conv.charges) + for _, charge in pairs(charges) do + person.convictions[_] = charge + end + end + end + local vehicles = GetPlayerVehicles(person.cid) + + if vehicles then + person.vehicles = vehicles + end + local Coords = {} + local Houses = {} + local properties= GetPlayerProperties(person.cid) + for k, v in pairs(properties) do + Coords[#Coords+1] = { + coords = json.decode(v["coords"]), + } + end + for index = 1, #Coords, 1 do + Houses[#Houses+1] = { + label = properties[index]["label"], + coords = tostring(Coords[index]["coords"]["enter"]["x"]..",".. Coords[index]["coords"]["enter"]["y"].. ",".. Coords[index]["coords"]["enter"]["z"]), + } + end + -- if properties then + person.properties = Houses + -- end + end + + local mdtData = GetPersonInformation(sentId, JobType) + if mdtData then + person.mdtinfo = mdtData.information + person.fingerprint = mdtData.fingerprint + person.profilepic = mdtData.pfp + person.tags = json.decode(mdtData.tags) + person.gallery = json.decode(mdtData.gallery) + end + + return cb(person) +end) + +RegisterNetEvent("mdt:server:saveProfile", function(pfp, information, cid, fName, sName, tags, gallery, fingerprint, licenses) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + ManageLicenses(cid, licenses) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'doj' then JobType = 'police' end + MySQL.Async.insert('INSERT INTO mdt_data (cid, information, pfp, jobtype, tags, gallery, fingerprint) VALUES (:cid, :information, :pfp, :jobtype, :tags, :gallery, :fingerprint) ON DUPLICATE KEY UPDATE cid = :cid, information = :information, pfp = :pfp, tags = :tags, gallery = :gallery, fingerprint = :fingerprint', { + cid = cid, + information = information, + pfp = pfp, + jobtype = JobType, + tags = json.encode(tags), + gallery = json.encode(gallery), + fingerprint = fingerprint, + }) + end +end) + +RegisterNetEvent("mdt:server:updateLicense", function(cid, type, status) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + ManageLicense(cid, type, status) + end + end +end) + +-- Incidents + + +RegisterNetEvent('mdt:server:getAllIncidents', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local matches = MySQL.query.await("SELECT * FROM `mdt_incidents` ORDER BY `id` DESC LIMIT 30", {}) + + TriggerClientEvent('mdt:client:getAllIncidents', src, matches) + end + end +end) + +RegisterNetEvent('mdt:server:searchIncidents', function(query) + if query then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local matches = MySQL.query.await("SELECT * FROM `mdt_incidents` WHERE `id` LIKE :query OR LOWER(`title`) LIKE :query OR LOWER(`author`) LIKE :query OR LOWER(`details`) LIKE :query OR LOWER(`tags`) LIKE :query OR LOWER(`officersinvolved`) LIKE :query OR LOWER(`civsinvolved`) LIKE :query OR LOWER(`author`) LIKE :query ORDER BY `id` DESC LIMIT 50", { + query = string.lower('%'..query..'%') -- % wildcard, needed to search for all alike results + }) + + TriggerClientEvent('mdt:client:getIncidents', src, matches) + end + end + end +end) + +RegisterNetEvent('mdt:server:getIncidentData', function(sentId) + if sentId then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local matches = MySQL.query.await("SELECT * FROM `mdt_incidents` WHERE `id` = :id", { + id = sentId + }) + local data = matches[1] + data['tags'] = json.decode(data['tags']) + data['officersinvolved'] = json.decode(data['officersinvolved']) + data['civsinvolved'] = json.decode(data['civsinvolved']) + data['evidence'] = json.decode(data['evidence']) + + + local convictions = MySQL.query.await("SELECT * FROM `mdt_convictions` WHERE `linkedincident` = :id", { + id = sentId + }) + if convictions ~= nil then + for i=1, #convictions do + local res = GetNameFromId(convictions[i]['cid']) + if res ~= nil then + convictions[i]['name'] = res + else + convictions[i]['name'] = "Unknown" + end + convictions[i]['charges'] = json.decode(convictions[i]['charges']) + end + end + TriggerClientEvent('mdt:client:getIncidentData', src, data, convictions) + end + end + end +end) + +RegisterNetEvent('mdt:server:getAllBolos', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + MySQL.query.await("SELECT * FROM `mdt_bolos` WHERE jobtype = :jobtype", { + jobtype = JobType + }, function(matches) + TriggerClientEvent('mdt:client:getAllBolos', src, matches) + end) + end +end) + +RegisterNetEvent('mdt:server:searchBolos', function(sentSearch) + if sentSearch then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + local matches = MySQL.query.await("SELECT * FROM `mdt_bolos` WHERE `id` LIKE :query OR LOWER(`title`) LIKE :query OR `plate` LIKE :query OR LOWER(`owner`) LIKE :query OR LOWER(`individual`) LIKE :query OR LOWER(`detail`) LIKE :query OR LOWER(`officersinvolved`) LIKE :query OR LOWER(`tags`) LIKE :query OR LOWER(`author`) LIKE :query AND jobtype = :jobtype", { + query = string.lower('%'..sentSearch..'%'), -- % wildcard, needed to search for all alike results + jobtype = JobType + }) + TriggerClientEvent('mdt:client:getBolos', src, matches) + end + end +end) + +RegisterNetEvent('mdt:server:getBoloData', function(sentId) + if sentId then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + local matches = MySQL.query.await("SELECT * FROM `mdt_bolos` WHERE `id` = :id AND jobtype = :jobtype LIMIT 1", { + id = sentId, + jobtype = JobType + }) + + local data = matches[1] + data['tags'] = json.decode(data['tags']) + data['officersinvolved'] = json.decode(data['officersinvolved']) + data['gallery'] = json.decode(data['gallery']) + TriggerClientEvent('mdt:client:getBoloData', src, data) + end + end +end) + +RegisterNetEvent('mdt:server:newBolo', function(existing, id, title, plate, owner, individual, detail, tags, gallery, officersinvolved, time) + if id then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + + local function InsertBolo() + MySQL.insert('INSERT INTO `mdt_bolos` (`title`, `author`, `plate`, `owner`, `individual`, `detail`, `tags`, `gallery`, `officersinvolved`, `time`, `jobtype`) VALUES (:title, :author, :plate, :owner, :individual, :detail, :tags, :gallery, :officersinvolved, :time, :jobtype)', { + title = title, + author = fullname, + plate = plate, + owner = owner, + individual = individual, + detail = detail, + tags = json.encode(tags), + gallery = json.encode(gallery), + officersinvolved = json.encode(officersinvolved), + time = tostring(time), + jobtype = JobType + }, function(r) + if r then + TriggerClientEvent('mdt:client:boloComplete', src, r) + TriggerEvent('mdt:server:AddLog', "A new BOLO was created by "..fullname.." with the title ("..title..") and ID ("..id..")") + end + end) + end + + local function UpdateBolo() + MySQL.update.await("UPDATE mdt_bolos SET `title`=:title, plate=:plate, owner=:owner, individual=:individual, detail=:detail, tags=:tags, gallery=:gallery, officersinvolved=:officersinvolved WHERE `id`=:id AND jobtype = :jobtype LIMIT 1", { + title = title, + plate = plate, + owner = owner, + individual = individual, + detail = detail, + tags = json.encode(tags), + gallery = json.encode(gallery), + officersinvolved = json.encode(officersinvolved), + id = id, + jobtype = JobType + }, function(r) + if r then + TriggerClientEvent('mdt:client:boloComplete', src, id) + TriggerEvent('mdt:server:AddLog', "A BOLO was updated by "..fullname.." with the title ("..title..") and ID ("..id..")") + end + end) + end + + if existing then + UpdateBolo() + elseif not existing then + InsertBolo() + end + end + end +end) + +RegisterNetEvent('mdt:server:deleteBolo', function(id) + if id then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' then + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + MySQL.update("DELETE FROM `mdt_bolos` WHERE id=:id", { id = id, jobtype = JobType }) + TriggerEvent('mdt:server:AddLog', "A BOLO was deleted by "..fullname.." with the ID ("..id..")") + end + end +end) + +RegisterNetEvent('mdt:server:deleteICU', function(id) + if id then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'ambulance' then + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + MySQL.update("DELETE FROM `mdt_bolos` WHERE id=:id", { id = id, jobtype = JobType }) + TriggerEvent('mdt:server:AddLog', "A ICU Check-in was deleted by "..fullname.." with the ID ("..id..")") + end + end +end) + +RegisterNetEvent('mdt:server:incidentSearchPerson', function(query) + if query then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local function ProfPic(gender, profilepic) + if profilepic then return profilepic end; + if gender == "f" then return "img/female.png" end; + return "img/male.png" + end + + local result = MySQL.query.await("SELECT p.citizenid, p.charinfo, md.pfp from players p LEFT JOIN mdt_data md on p.citizenid = md.cid WHERE LOWER(`charinfo`) LIKE :query OR LOWER(`citizenid`) LIKE :query AND `jobtype` = :jobtype LIMIT 30", { + query = string.lower('%'..query..'%'), -- % wildcard, needed to search for all alike results + jobtype = JobType + }) + local data = {} + for i=1, #result do + local charinfo = json.decode(result[i].charinfo) + data[i] = {id = result[i].citizenid, firstname = charinfo.firstname, lastname = charinfo.lastname, profilepic = ProfPic(charinfo.gender, result[i].pfp)} + end + TriggerClientEvent('mdt:client:incidentSearchPerson', src, data) + end + end + end +end) + +RegisterNetEvent('mdt:server:getAllReports', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' or JobType == 'ambulance' then + if JobType == 'doj' then JobType = 'police' end + local matches = MySQL.query.await("SELECT * FROM `mdt_reports` WHERE jobtype = :jobtype ORDER BY `id` DESC LIMIT 30", { + jobtype = JobType + }) + TriggerClientEvent('mdt:client:getAllReports', src, matches) + end + end +end) + +RegisterNetEvent('mdt:server:getReportData', function(sentId) + if sentId then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' or JobType == 'ambulance' then + if JobType == 'doj' then JobType = 'police' end + local matches = MySQL.query.await("SELECT * FROM `mdt_reports` WHERE `id` = :id AND `jobtype` = :jobtype LIMIT 1", { + id = sentId, + jobtype = JobType + }) + local data = matches[1] + data['tags'] = json.decode(data['tags']) + data['officersinvolved'] = json.decode(data['officersinvolved']) + data['civsinvolved'] = json.decode(data['civsinvolved']) + data['gallery'] = json.decode(data['gallery']) + TriggerClientEvent('mdt:client:getReportData', src, data) + end + end + end +end) + +RegisterNetEvent('mdt:server:searchReports', function(sentSearch) + if sentSearch then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' or JobType == 'ambulance' then + if JobType == 'doj' then JobType = 'police' end + local matches = MySQL.query.await("SELECT * FROM `mdt_reports` WHERE `id` LIKE :query OR LOWER(`author`) LIKE :query OR LOWER(`title`) LIKE :query OR LOWER(`type`) LIKE :query OR LOWER(`details`) LIKE :query OR LOWER(`tags`) LIKE :query AND `jobtype` = :jobtype ORDER BY `id` DESC LIMIT 50", { + query = string.lower('%'..sentSearch..'%'), -- % wildcard, needed to search for all alike results + jobtype = JobType + }) + + TriggerClientEvent('mdt:client:getAllReports', src, matches) + end + end + end +end) + +RegisterNetEvent('mdt:server:newReport', function(existing, id, title, reporttype, details, tags, gallery, officers, civilians, time) + if id then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType ~= nil then + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + local function InsertReport() + MySQL.insert('INSERT INTO `mdt_reports` (`title`, `author`, `type`, `details`, `tags`, `gallery`, `officersinvolved`, `civsinvolved`, `time`, `jobtype`) VALUES (:title, :author, :type, :details, :tags, :gallery, :officersinvolved, :civsinvolved, :time, :jobtype)', { + title = title, + author = fullname, + type = reporttype, + details = details, + tags = json.encode(tags), + gallery = json.encode(gallery), + officersinvolved = json.encode(officers), + civsinvolved = json.encode(civilians), + time = tostring(time), + jobtype = JobType, + }, function(r) + if r then + TriggerClientEvent('mdt:client:reportComplete', src, r) + TriggerEvent('mdt:server:AddLog', "A new report was created by "..fullname.." with the title ("..title..") and ID ("..id..")") + end + end) + end + + local function UpdateReport() + MySQL.update("UPDATE `mdt_reports` SET `title` = :title, type = :type, details = :details, tags = :tags, gallery = :gallery, officersinvolved = :officersinvolved, civsinvolved = :civsinvolved, jobtype = :jobtype WHERE `id` = :id LIMIT 1", { + title = title, + type = reporttype, + details = details, + tags = json.encode(tags), + gallery = json.encode(gallery), + officersinvolved = json.encode(officers), + civsinvolved = json.encode(civilians), + jobtype = JobType, + id = id, + }, function(affectedRows) + if affectedRows > 0 then + TriggerClientEvent('mdt:client:reportComplete', src, id) + TriggerEvent('mdt:server:AddLog', "A report was updated by "..fullname.." with the title ("..title..") and ID ("..id..")") + end + end) + end + + if existing then + UpdateReport() + elseif not existing then + InsertReport() + end + end + end + end +end) + +QBCore.Functions.CreateCallback('mdt:server:SearchVehicles', function(source, cb, sentData) + if not sentData then return cb({}) end + local src = source + local PlayerData = GetPlayerData(src) + if not PermCheck(source, PlayerData) then return cb({}) end + + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local vehicles = MySQL.query.await("SELECT pv.id, pv.citizenid, pv.plate, pv.vehicle, pv.mods, pv.state, p.charinfo FROM `player_vehicles` pv LEFT JOIN players p ON pv.citizenid = p.citizenid WHERE LOWER(`plate`) LIKE :query OR LOWER(`vehicle`) LIKE :query LIMIT 25", { + query = string.lower('%'..sentData..'%') + }) + + if not next(vehicles) then cb({}) return end + + for _, value in ipairs(vehicles) do + if value.state == 0 then + value.state = "Out" + elseif value.state == 1 then + value.state = "Garaged" + elseif value.state == 2 then + value.state = "Impounded" + end + + value.bolo = false + local boloResult = GetBoloStatus(value.plate) + if boloResult then + value.bolo = true + end + + value.code = false + value.stolen = false + value.image = "img/not-found.jpg" + local info = GetVehicleInformation(value.plate) + if info then + value.code = info['code5'] + value.stolen = info['stolen'] + value.image = info['image'] + end + + local ownerResult = json.decode(value.charinfo) + + value.owner = ownerResult['firstname'] .. " " .. ownerResult['lastname'] + end + -- idk if this works or I have to call cb first then return :shrug: + return cb(vehicles) + end + + return cb({}) + end + +end) + +RegisterNetEvent('mdt:server:getVehicleData', function(plate) + if plate then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'doj' then + local vehicle = MySQL.query.await("select pv.*, p.charinfo from player_vehicles pv LEFT JOIN players p ON pv.citizenid = p.citizenid where pv.plate = :plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1")}) + if vehicle and vehicle[1] then + vehicle[1]['impound'] = false + if vehicle[1].state == 2 then + vehicle[1]['impound'] = true + end + + vehicle[1]['bolo'] = false + vehicle[1]['information'] = "" + + -- Bolo Status + GetBoloStatus(vehicle[1]['plate'], function(boloStatus) + if boloStatus and boloStatus[1] then vehicle[1]['bolo'] = true end + end) -- Used to get BOLO status. + + vehicle[1]['name'] = "Unknown Person" + + local ownerResult = json.decode(vehicle[1].charinfo) + vehicle[1]['name'] = ownerResult['firstname'] .. " " .. ownerResult['lastname'] + + local color1 = json.decode(vehicle[1].mods) + vehicle[1]['color1'] = color1['color1'] + + vehicle[1]['dbid'] = 0 + + local info = GetVehicleInformation(vehicle[1]['plate']) + if info then + vehicle[1]['information'] = info['information'] + vehicle[1]['dbid'] = info['id'] + vehicle[1]['image'] = info['image'] + vehicle[1]['code'] = info['code5'] + vehicle[1]['stolen'] = info['stolen'] + end + + if vehicle[1]['image'] == nil then vehicle[1]['image'] = "img/not-found.jpg" end -- Image + end + + TriggerClientEvent('mdt:client:getVehicleData', src, vehicle) + end + end + end +end) + +RegisterNetEvent('mdt:server:saveVehicleInfo', function(dbid, plate, imageurl, notes, stolen, code5, impound) + print(dbid, plate, imageurl, notes, stolen, code5, impound) + if plate then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + if dbid == nil then dbid = 0 end; + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + TriggerEvent('mdt:server:AddLog', "A vehicle with the plate ("..plate..") has a new image ("..imageurl..") edited by "..fullname) + if tonumber(dbid) == 0 then + MySQL.insert('INSERT INTO `mdt_vehicleinfo` (`plate`, `information`, `image`, `code5`, `stolen`) VALUES (:plate, :information, :image, :code5, :stolen)', { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1"), information = notes, image = imageurl, code5 = code5, stolen = stolen }, function(infoResult) + if infoResult then + TriggerClientEvent('mdt:client:updateVehicleDbId', src, infoResult) + TriggerEvent('mdt:server:AddLog', "A vehicle with the plate ("..plate..") was added to the vehicle information database by "..fullname) + end + end) + elseif tonumber(dbid) > 0 then + MySQL.update("UPDATE mdt_vehicleinfo SET `information`= :information, `image`= :image, `code5`= :code5, `stolen`= :stolen WHERE `plate`= :plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1"), information = notes, image = imageurl, code5 = code5, stolen = stolen }) + end + + if impound.impoundChanged then + local vehicle = MySQL.single.await("SELECT p.id, p.plate, i.vehicleid AS impoundid FROM `player_vehicles` p LEFT JOIN `mdt_impound` i ON i.vehicleid = p.id WHERE plate=:plate", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1") }) + if impound.impoundActive then + local plate, linkedreport, fee, time = impound['plate'], impound['linkedreport'], impound['fee'], impound['time'] + if (plate and linkedreport and fee and time) then + if vehicle.impoundid == nil then + local data = vehicle + MySQL.insert('INSERT INTO `mdt_impound` (`vehicleid`, `linkedreport`, `fee`, `time`) VALUES (:vehicleid, :linkedreport, :fee, :time)', { + vehicleid = data['id'], + linkedreport = linkedreport, + fee = fee, + time = os.time() + (time * 60) + }, function(res) + -- notify? + local data = { + vehicleid = data['id'], + plate = plate, + beingcollected = 0, + vehicle = sentVehicle, + officer = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + number = Player.PlayerData.charinfo.phone, + time = os.time() * 1000, + src = src, + } + local vehicle = NetworkGetEntityFromNetworkId(sentVehicle) + FreezeEntityPosition(vehicle, true) + impound[#impound+1] = data --what does inputting into this table do? + + --TriggerClientEvent("police:client:ImpoundVehicle", src, false, tonumber(args[1])) + TriggerClientEvent("police:client:ImpoundVehicle", src, true, fee) + end) + end + end + else + if vehicle.impoundid ~= nil then + local data = vehicle + local result = MySQL.single.await("SELECT id, vehicle, fuel, engine, body FROM `player_vehicles` WHERE plate=:plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1")}) + if result then + print("comes here?") + local data = result + MySQL.update("DELETE FROM `mdt_impound` WHERE vehicleid=:vehicleid", { vehicleid = data['id'] }) + + result.currentSelection = impound.CurrentSelection + result.plate = plate + print(json.encode(result)) + TriggerClientEvent('qb-mdt:client:TakeOutImpound', src, result) + end + + end + end + end + end + end + end +end) + +RegisterNetEvent('mdt:server:getAllLogs', function() + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if Config.LogPerms[Player.PlayerData.job.name] then + if Config.LogPerms[Player.PlayerData.job.name][Player.PlayerData.job.grade.level] then + local JobType = GetJobType(Player.PlayerData.job.name) + local infoResult = MySQL.query.await('SELECT * FROM mdt_logs WHERE `jobtype` = :jobtype ORDER BY `id` DESC LIMIT 250', {jobtype = JobType}) + + TriggerLatentClientEvent('mdt:client:getAllLogs', src, 30000, infoResult) + end + end + end +end) + +-- Penal Code + +local function IsCidFelon(sentCid, cb) + if sentCid then + local convictions = MySQL.query.await('SELECT charges FROM mdt_convictions WHERE cid=:cid', { cid = sentCid }) + local Charges = {} + for i=1, #convictions do + local currCharges = json.decode(convictions[i]['charges']) + for x=1, #currCharges do + Charges[#Charges+1] = currCharges[x] + end + end + for i=1, #Charges do + for p=1, #PenalCode do + for x=1, #PenalCode[p] do + if PenalCode[p][x]['title'] == Charges[i] then + if PenalCode[p][x]['class'] == 'Felony' then + cb(true) + return + end + break + end + end + end + end + cb(false) + end +end + +exports('IsCidFelon', IsCidFelon) -- exports['erp_mdt']:IsCidFelon() + +RegisterCommand("isfelon", function(source, args, rawCommand) + IsCidFelon(1998, function(res) + end) +end, false) + +RegisterNetEvent('mdt:server:getPenalCode', function() + local src = source + TriggerClientEvent('mdt:client:getPenalCode', src, Config.PenalCodeTitles, Config.PenalCode) +end) + +RegisterNetEvent('mdt:server:setCallsign', function(cid, newcallsign) + local Player = QBCore.Functions.GetPlayerByCitizenId(cid) + Player.Functions.SetMetaData("callsign", newcallsign) +end) + +RegisterNetEvent('mdt:server:saveIncident', function(id, title, information, tags, officers, civilians, evidence, associated, time) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + if id == 0 then + local fullname = Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname + MySQL.insert('INSERT INTO `mdt_incidents` (`author`, `title`, `details`, `tags`, `officersinvolved`, `civsinvolved`, `evidence`, `time`, `jobtype`) VALUES (:author, :title, :details, :tags, :officersinvolved, :civsinvolved, :evidence, :time, :jobtype)', + { + author = fullname, + title = title, + details = information, + tags = json.encode(tags), + officersinvolved = json.encode(officers), + civsinvolved = json.encode(civilians), + evidence = json.encode(evidence), + time = time, + jobtype = 'police', + }, function(infoResult) + if infoResult then + for i=1, #associated do + MySQL.insert('INSERT INTO `mdt_convictions` (`cid`, `linkedincident`, `warrant`, `guilty`, `processed`, `associated`, `charges`, `fine`, `sentence`, `recfine`, `recsentence`, `time`) VALUES (:cid, :linkedincident, :warrant, :guilty, :processed, :associated, :charges, :fine, :sentence, :recfine, :recsentence, :time)', { + cid = associated[i]['Cid'], + linkedincident = infoResult, + warrant = associated[i]['Warrant'], + guilty = associated[i]['Guilty'], + processed = associated[i]['Processed'], + associated = associated[i]['Isassociated'], + charges = json.encode(associated[i]['Charges']), + fine = tonumber(associated[i]['Fine']), + sentence = tonumber(associated[i]['Sentence']), + recfine = tonumber(associated[i]['recfine']), + recsentence = tonumber(associated[i]['recsentence']), + time = time + }) + end + TriggerClientEvent('mdt:client:updateIncidentDbId', src, infoResult) + --TriggerEvent('mdt:server:AddLog', "A vehicle with the plate ("..plate..") was added to the vehicle information database by "..player['fullname']) + end + end) + elseif id > 0 then + MySQL.update("UPDATE mdt_incidents SET title=:title, details=:details, civsinvolved=:civsinvolved, tags=:tags, officersinvolved=:officersinvolved, evidence=:evidence WHERE id=:id", { + title = title, + details = information, + tags = json.encode(tags), + officersinvolved = json.encode(officers), + civsinvolved = json.encode(civilians), + evidence = json.encode(evidence), + id = id + }) + for i=1, #associated do + TriggerEvent('mdt:server:handleExistingConvictions', associated[i], id, time) + end + end + end + end +end) + +RegisterNetEvent('mdt:server:handleExistingConvictions', function(data, incidentid, time) + MySQL.query.await('SELECT * FROM mdt_convictions WHERE cid=:cid AND linkedincident=:linkedincident', { + cid = data['Cid'], + linkedincident = incidentid + }, function(convictionRes) + if convictionRes and convictionRes[1] and convictionRes[1]['id'] then + MySQL.update('UPDATE mdt_convictions SET cid=:cid, linkedincident=:linkedincident, warrant=:warrant, guilty=:guilty, processed=:processed, associated=:associated, charges=:charges, fine=:fine, sentence=:sentence, recfine=:recfine, recsentence=:recsentence WHERE cid=:cid AND linkedincident=:linkedincident', { + cid = data['Cid'], + linkedincident = incidentid, + warrant = data['Warrant'], + guilty = data['Guilty'], + processed = data['Processed'], + associated = data['Isassociated'], + charges = json.encode(data['Charges']), + fine = tonumber(data['Fine']), + sentence = tonumber(data['Sentence']), + recfine = tonumber(data['recfine']), + recsentence = tonumber(data['recsentence']), + }) + else + MySQL.insert('INSERT INTO `mdt_convictions` (`cid`, `linkedincident`, `warrant`, `guilty`, `processed`, `associated`, `charges`, `fine`, `sentence`, `recfine`, `recsentence`, `time`) VALUES (:cid, :linkedincident, :warrant, :guilty, :processed, :associated, :charges, :fine, :sentence, :recfine, :recsentence, :time)', { + cid = data['Cid'], + linkedincident = incidentid, + warrant = data['Warrant'], + guilty = data['Guilty'], + processed = data['Processed'], + associated = data['Isassociated'], + charges = json.encode(data['Charges']), + fine = tonumber(data['Fine']), + sentence = tonumber(data['Sentence']), + recfine = tonumber(data['recfine']), + recsentence = tonumber(data['recsentence']), + time = time + }) + end + end) +end) + +RegisterNetEvent('mdt:server:removeIncidentCriminal', function(cid, incident) + MySQL.update('DELETE FROM mdt_convictions WHERE cid=:cid AND linkedincident=:linkedincident', { + cid = cid, + linkedincident = incident + }) +end) + +-- Dispatch + +RegisterNetEvent('mdt:server:setWaypoint', function(callid) + local src = source + local Player = QBCore.Functions.GetPlayer(source) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + local calls = exports['qb-dispatch']:GetDispatchCalls() + TriggerClientEvent('mdt:client:setWaypoint', src, calls[callid]) + end + end +end) + +RegisterNetEvent('mdt:server:callDetach', function(callid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local playerdata = { + fullname = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + job = Player.PlayerData.job, + cid = Player.PlayerData.citizenid, + callsign = Player.PlayerData.metadata.callsign + } + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + TriggerEvent('dispatch:removeUnit', callid, playerdata, function(newNum) + TriggerClientEvent('mdt:client:callDetach', -1, callid, newNum) + end) + end + end +end) + +RegisterNetEvent('mdt:server:callAttach', function(callid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local playerdata = { + fullname = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + job = Player.PlayerData.job, + cid = Player.PlayerData.citizenid, + callsign = Player.PlayerData.metadata.callsign + } + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + TriggerEvent('dispatch:addUnit', callid, playerdata, function(newNum) + TriggerClientEvent('mdt:client:callAttach', -1, callid, newNum) + end) + end + end + +end) + +RegisterNetEvent('mdt:server:attachedUnits', function(callid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + local calls = exports['qb-dispatch']:GetDispatchCalls() + TriggerClientEvent('mdt:client:attachedUnits', src, calls[callid]['units'], callid) + end + end +end) + +RegisterNetEvent('mdt:server:callDispatchDetach', function(callid, cid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local playerdata = { + fullname = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + job = Player.PlayerData.job, + cid = Player.PlayerData.citizenid, + callsign = Player.PlayerData.metadata.callsign + } + local callid = tonumber(callid) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + TriggerEvent('dispatch:removeUnit', callid, playerdata, function(newNum) + TriggerClientEvent('mdt:client:callDetach', -1, callid, newNum) + end) + end + end +end) + +RegisterNetEvent('mdt:server:setDispatchWaypoint', function(callid, cid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local callid = tonumber(callid) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + local calls = exports['qb-dispatch']:GetDispatchCalls() + TriggerClientEvent('mdt:client:setWaypoint', src, calls[callid]) + end + end + +end) + +RegisterNetEvent('mdt:server:callDragAttach', function(callid, cid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local playerdata = { + name = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + job = Player.PlayerData.job.name, + cid = Player.PlayerData.citizenid, + callsign = Player.PlayerData.metadata.callsign + } + local callid = tonumber(callid) + local JobType = GetJobType(Player.PlayerData.job.name) + if JobType == 'police' or JobType == 'ambulance' then + if callid then + TriggerEvent('dispatch:addUnit', callid, playerdata, function(newNum) + TriggerClientEvent('mdt:client:callAttach', -1, callid, newNum) + end) + end + end +end) + +RegisterNetEvent('mdt:server:setWaypoint:unit', function(cid) + local src = source + local Player = QBCore.Functions.GetPlayerByCitizenId(cid) + local PlayerCoords = GetEntityCoords(GetPlayerPed(Player.PlayerData.source)) + TriggerClientEvent("mdt:client:setWaypoint:unit", src, PlayerCoords) +end) + +-- Dispatch chat + +RegisterNetEvent('mdt:server:sendMessage', function(message, time) + if message and time then + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + MySQL.scalar("SELECT pfp FROM `mdt_data` WHERE cid=:id LIMIT 1", { + id = Player.PlayerData.citizenid -- % wildcard, needed to search for all alike results + }, function(data) + if data and data[1] then + local ProfilePicture = ProfPic(Player.PlayerData.charinfo.gender, data[1]['profilepic']) + local callsign = GetResourceKvpString(Player.PlayerData.metadata.callsign..'-callsign') or "000" + local Item = { + profilepic = ProfilePicture, + callsign = Player.PlayerData.metadata.callsign, + cid = Player.PlayerData.citizenid, + name = '('..callsign..') '..Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + message = message, + time = time, + job = Player.PlayerData.job.name + } + dispatchMessages[#dispatchMessages+1] = item + TriggerClientEvent('mdt:client:dashboardMessage', -1, Item) + -- Send to all clients, for auto updating stuff, ya dig. + end + end) + end + end +end) + +RegisterNetEvent('mdt:server:refreshDispatchMsgs', function() + local src = source + local PlayerData = GetPlayerData(src) + if IsJobAllowedToMDT(PlayerData.job.name) then + TriggerClientEvent('mdt:client:dashboardMessages', src, dispatchMessages) + end +end) + +RegisterNetEvent('mdt:server:getCallResponses', function(callid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if IsPolice(Player.PlayerData.job.name) then + local calls = exports['qb-dispatch']:GetDispatchCalls() + TriggerClientEvent('mdt:client:getCallResponses', src, calls[callid]['responses'], callid) + end +end) + +RegisterNetEvent('mdt:server:sendCallResponse', function(message, time, callid) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + local name = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname + if IsPolice(Player.PlayerData.job.name) then + TriggerEvent('dispatch:sendCallResponse', src, callid, message, time, function(isGood) + if isGood then + TriggerClientEvent('mdt:client:sendCallResponse', -1, message, time, callid, name) + end + end) + end +end) + +RegisterNetEvent('mdt:server:setRadio', function(cid, newRadio) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player.PlayerData.citizenid ~= cid then + TriggerClientEvent("QBCore:Notify", src, 'You can only change your radio!', 'error') + return + else + local radio = Player.Functions.GetItemByName("phone") + if radio ~= nil then + TriggerClientEvent('mdt:client:setRadio', src, newRadio) + else + TriggerClientEvent("QBCore:Notify", src, 'You do not have a radio!', 'error') + end + end + +end) + +local function isRequestVehicle(vehId) + local found = false + for i=1, #impound do + if impound[i]['vehicle'] == vehId then + found = true + impound[i] = nil + break + end + end + return found +end +exports('isRequestVehicle', isRequestVehicle) -- exports['erp_mdt']:isRequestVehicle() + +RegisterNetEvent('mdt:server:impoundVehicle', function(sentInfo, sentVehicle) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + if sentInfo and type(sentInfo) == 'table' then + local plate, linkedreport, fee, time = sentInfo['plate'], sentInfo['linkedreport'], sentInfo['fee'], sentInfo['time'] + if (plate and linkedreport and fee and time) then + local vehicle = MySQL.query.await("SELECT id, plate FROM `player_vehicles` WHERE plate=:plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1") }) + if vehicle and vehicle[1] then + local data = vehicle[1] + MySQL.insert('INSERT INTO `mdt_impound` (`vehicleid`, `linkedreport`, `fee`, `time`) VALUES (:vehicleid, :linkedreport, :fee, :time)', { + vehicleid = data['id'], + linkedreport = linkedreport, + fee = fee, + time = os.time() + (time * 60) + }, function(res) + -- notify? + local data = { + vehicleid = data['id'], + plate = plate, + beingcollected = 0, + vehicle = sentVehicle, + officer = Player.PlayerData.charinfo.firstname.. " "..Player.PlayerData.charinfo.lastname, + number = Player.PlayerData.charinfo.phone, + time = os.time() * 1000, + src = src, + } + local vehicle = NetworkGetEntityFromNetworkId(sentVehicle) + FreezeEntityPosition(vehicle, true) + impound[#impound+1] = data + + --TriggerClientEvent("police:client:ImpoundVehicle", src, false, tonumber(args[1])) + TriggerClientEvent("police:client:ImpoundVehicle", src, true, fee) + end) + end + end + end + end + end +end) + +RegisterNetEvent('mdt:server:getImpoundVehicles', function() + TriggerClientEvent('mdt:client:getImpoundVehicles', source, impound) +end) + +RegisterNetEvent('mdt:server:removeImpound', function(plate, currentSelection) + print("Removing impound", plate, currentSelection) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + local result = MySQL.single.await("SELECT id, vehicle FROM `player_vehicles` WHERE plate=:plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1")}) + if result and result[1] then + local data = result[1] + MySQL.update("DELETE FROM `mdt_impound` WHERE vehicleid=:vehicleid", { vehicleid = data['id'] }) + TriggerClientEvent('police:client:TakeOutImpound', src, currentSelection) + end + end + end +end) + +RegisterNetEvent('mdt:server:statusImpound', function(plate) + local src = source + local Player = QBCore.Functions.GetPlayer(src) + if Player then + if GetJobType(Player.PlayerData.job.name) == 'police' then + local vehicle = MySQL.query.await("SELECT id, plate FROM `player_vehicles` WHERE plate=:plate LIMIT 1", { plate = string.gsub(plate, "^%s*(.-)%s*$", "%1")}) + if vehicle and vehicle[1] then + local data = vehicle[1] + local impoundinfo = MySQL.query.await("SELECT * FROM `mdt_impound` WHERE vehicleid=:vehicleid LIMIT 1", { vehicleid = data['id'] }) + if impoundinfo and impoundinfo[1] then + TriggerClientEvent('mdt:client:statusImpound', src, impoundinfo[1], plate) + end + end + end + end +end) + +function GetBoloStatus(plate) + MySQL.query.await("SELECT * FROM mdt_bolos where plate = ?", {plate}, function(bolo) + if bolo and bolo[1] then + return true + else + return false + end + end) +end + +function GetVehicleInformation(plate) + local result = MySQL.query.await('SELECT * FROM mdt_vehicleinfo WHERE plate = @plate', {['@plate'] = plate}) + if result[1] then + return result[1] + else + return false + end +end diff --git a/server/utils.lua b/server/utils.lua new file mode 100644 index 00000000..ed898fbd --- /dev/null +++ b/server/utils.lua @@ -0,0 +1,51 @@ +local QBCore = exports['qb-core']:GetCoreObject() + +function GetPlayerData(source) + local Player = QBCore.Functions.GetPlayer(source) + return Player.PlayerData +end + +function UnpackJob(data) + local job = { + name = data.name, + label = data.label + } + local grade = { + name = data.grade.name, + } + + return job, grade +end + +function PermCheck(src, PlayerData) + local result = true + + if not Config.AllowedJobs[PlayerData.job.name] then + print(("UserId: %s(%d) tried to access the mdt even though they are not authorised (server direct)"):format(GetPlayerName(src), src)) + result = false + end + + return result +end + +function ProfPic(gender, profilepic) + if profilepic then return profilepic end; + if gender == "f" then return "img/female.png" end; + return "img/male.png" +end + +function IsJobAllowedToMDT(job) + if Config.PoliceJobs[job] then + return true + elseif Config.AmbulanceJobs[job] then + return true + elseif Config.DojJobs[job] then + return true + else + return false + end +end + +function GetNameFromPlayerData(PlayerData) + return ('%s %s'):format(PlayerData.charinfo.firstname, PlayerData.charinfo.lastname) +end diff --git a/shared/config.lua b/shared/config.lua new file mode 100644 index 00000000..b06501ac --- /dev/null +++ b/shared/config.lua @@ -0,0 +1,637 @@ +Config = Config or {} + +Config.RosterLink = { + ['police'] = '', + ['ambulance'] = '', + ['bcso'] = '', + ['doj'] = '', +} + +Config.Fuel = "lj-fuel" -- "LegacyFuel", "lj-fuel" + +Config.PenalCodeTitles = { + [1] = 'OFFENSES AGAINST PERSONS', + [2] = 'OFFENSES INVOLVING THEFT', + [3] = 'OFFENSES INVOLVING FRAUD', + [4] = 'OFFENSES INVOLVING DAMAGE TO PROPERTY', + [5] = 'OFFENSES AGAINST PUBLIC ADMINISTRATION', + [6] = 'OFFENSES AGAINST PUBLIC ORDER', + [7] = 'OFFENSES AGAINST HEALTH AND MORALS', + [8] = 'OFFENSES AGAINST PUBLIC SAFETY', + [9] = 'OFFENSES INVOLVING THE OPERATION OF A VEHICLE', + [10] = 'OFFENSES INVOLVING THE WELL-BEING OF WILDLIFE', +} + +Config.PenalCode = { + [1] = { + [1] = {title = 'Simple Assault', class = 'Misdemeanor', id = 'P.C. 1001', months = 7, fine = 500, color = 'green'}, + [2] = {title = 'Assault', class = 'Misdemeanor', id = 'P.C. 1002', months = 15, fine = 850, color = 'orange'}, + [3] = {title = 'Aggravated Assault', class = 'Felony', id = 'P.C. 1003', months = 20, fine = 1250, color = 'orange'}, + [4] = {title = 'Assault with a Deadly Weapon', class = 'Felony', id = 'P.C. 1004', months = 30, fine = 3750, color = 'red'}, + [5] = {title = 'Involuntary Manslaughter', class = 'Felony', id = 'P.C. 1005', months = 60, fine = 7500, color = 'red'}, + [6] = {title = 'Vehicular Manslaughter', class = 'Felony', id = 'P.C. 1006', months = 75, fine = 7500, color = 'red'}, + [7] = {title = 'Attempted Murder of a Civilian', class = 'Felony', id = 'P.C. 1007', months = 50, fine = 7500, color = 'red'}, + [8] = {title = 'Second Degree Murder', class = 'Felony', id = 'P.C. 1008', months = 100, fine = 15000, color = 'red'}, + [9] = {title = 'Accessory to Second Degree Murder', class = 'Felony', id = 'P.C. 1009', months = 50, fine = 5000, color = 'red'}, + [10] = {title = 'First Degree Murder', class = 'Felony', id = 'P.C. 1010', months = 0, fine = 0, color = 'red'}, + [11] = {title = 'Accessory to First Degree Murder', class = 'Felony', id = 'P.C. 1011', months = 0, fine = 0, color = 'red'}, + [12] = {title = 'Murder of a Public Servant or Peace Officer', class = 'Felony', id = 'P.C. 1012', months = 0, fine = 0, color = 'red'}, + [13] = {title = 'Attempted Murder of a Public Servant or Peace Officer', class = 'Felony', id = 'P.C. 1013', months = 65, fine = 10000, color = 'red'}, + [14] = {title = 'Accessory to the Murder of a Public Servant or Peace Officer', class = 'Felony', id = 'P.C. 1014', months = 0, fine = 0, color = 'red'}, + [15] = {title = 'Unlawful Imprisonment', class = 'Misdemeanor', id = 'P.C. 1015', months = 10, fine = 600, color = 'green'}, + [16] = {title = 'Kidnapping', class = 'Felony', id = 'P.C. 1016', months = 15, fine = 900, color = 'orange'}, + [17] = {title = 'Accessory to Kidnapping', class = 'Felony', id = 'P.C. 1017', months = 7, fine = 450, color = 'orange'}, + [18] = {title = 'Attempted Kidnapping', class = 'Felony', id = 'P.C. 1018', months = 10, fine = 450, color = 'orange'}, + [19] = {title = 'Hostage Taking', class = 'Felony', id = 'P.C. 1019', months = 20, fine = 1200, color = 'orange'}, + [20] = {title = 'Accessory to Hostage Taking', class = 'Felony', id = 'P.C. 1020', months = 10, fine = 600, color = 'orange'}, + [21] = {title = 'Unlawful Imprisonment of a Public Servant or Peace Officer.', class = 'Felony', id = 'P.C. 1021', months = 25, fine = 4000, color = 'orange'}, + [22] = {title = 'Criminal Threats', class = 'Misdemeanor', id = 'P.C. 1022', months = 5, fine = 500, color = 'orange'}, + [23] = {title = 'Reckless Endangerment', class = 'Misdemeanor', id = 'P.C. 1023', months = 10, fine = 1000, color = 'orange'}, + [24] = {title = 'Gang Related Shooting', class = 'Felony', id = 'P.C. 1024', months = 30, fine = 2500, color = 'red'}, + [25] = {title = 'Cannibalism', class = 'Felony', id = 'P.C. 1025', months = 0, fine = 0, color = 'red'}, + [26] = {title = 'Torture', class = 'Felony', id = 'P.C. 1026', months = 40, fine = 4500, color = 'red'}, + }, + [2] = { + [1] = {title = 'Petty Theft', class = 'Infraction', id = 'P.C. 2001', months = 0, fine = 250, color = 'green'}, + [2] = {title = 'Grand Theft', class = 'Misdemeanor', id = 'P.C. 2002', months = 10, fine = 600, color = 'green'}, + [3] = {title = 'Grand Theft Auto A', class = 'Felony', id = 'P.C. 2003', months = 15, fine = 900, color = 'green'}, + [4] = {title = 'Grand Theft Auto B', class = 'Felony', id = 'P.C. 2004', months = 35, fine = 3500, color = 'green'}, + [5] = {title = 'Carjacking', class = 'Felony', id = 'P.C. 2005', months = 30, fine = 2000, color = 'orange'}, + [6] = {title = 'Burglary', class = 'Misdemeanor', id = 'P.C. 2006', months = 10, fine = 500, color = 'green'}, + [7] = {title = 'Robbery', class = 'Felony', id = 'P.C. 2007', months = 25, fine = 2000, color = 'green'}, + [8] = {title = 'Accessory to Robbery', class = 'Felony', id = 'P.C. 2008', months = 12, fine = 1000, color = 'green'}, + [9] = {title = 'Attempted Robbery', class = 'Felony', id = 'P.C. 2009', months = 20, fine = 1000, color = 'green'}, + [10] = {title = 'Armed Robbery', class = 'Felony', id = 'P.C. 2010', months = 30, fine = 3000, color = 'orange'}, + [11] = {title = 'Accessory to Armed Robbery', class = 'Felony', id = 'P.C. 2011', months = 15, fine = 1500, color = 'orange'}, + [12] = {title = 'Attempted Armed Robbery', class = 'Felony', id = 'P.C. 2012', months = 25, fine = 1500, color = 'orange'}, + [13] = {title = 'Grand Larceny', class = 'Felony', id = 'P.C. 2013', months = 45, fine = 7500, color = 'orange'}, + [14] = {title = 'Leaving Without Paying', class = 'Infraction', id = 'P.C. 2014', months = 0, fine = 500, color = 'green'}, + [15] = {title = 'Possession of Nonlegal Currency', class = 'Misdemeanor', id = 'P.C. 2015', months = 10, fine = 750, color = 'green'}, + [16] = {title = 'Possession of Government-Issued Items', class = 'Misdemeanor', id = 'P.C. 2016', months = 15, fine = 1000, color = 'green'}, + [17] = {title = 'Possession of Items Used in the Commission of a Crime', class = 'Misdemeanor', id = 'P.C. 2017', months = 10, fine = 500, color = 'green'}, + [18] = {title = 'Sale of Items Used in the Commission of a Crime', class = 'Felony', id = 'P.C. 2018', months = 15, fine = 1000, color = 'orange'}, + [19] = {title = 'Theft of an Aircraft', class = 'Felony', id = 'P.C. 2019', months = 20, fine = 1000, color = 'green'}, + }, + [3] = { + [1] = {title = 'Impersonating', class = 'Misdemeanor', id = 'P.C. 3001', months = 15, fine = 1250, color = 'green'}, + [2] = {title = 'Impersonating a Peace Officer or Public Servant', class = 'Felony', id = 'P.C. 3002', months = 25, fine = 2750, color = 'green'}, + [3] = {title = 'Impersonating a Judge', class = 'Felony', id = 'P.C. 3003', months = 0, fine = 0, color = 'green'}, + [4] = {title = 'Possession of Stolen Identification', class = 'Misdemeanor', id = 'P.C. 3004', months = 10, fine = 750, color = 'green'}, + [5] = {title = 'Possession of Stolen Government Identification', class = 'Misdemeanor', id = 'P.C. 3005', months = 20, fine = 2000, color = 'green'}, + [6] = {title = 'Extortion', class = 'Felony', id = 'P.C. 3006', months = 20, fine = 900, color = 'orange'}, + [7] = {title = 'Fraud', class = 'Misdemeanor', id = 'P.C. 3007', months = 10, fine = 450, color = 'green'}, + [8] = {title = 'Forgery', class = 'Misdemeanor', id = 'P.C. 3008', months = 15, fine = 750, color = 'green'}, + [9] = {title = 'Money Laundering', class = 'Felony', id = 'P.C. 3009', months = 0, fine = 0, color = 'red'}, + }, + [4] = { + [1] = {title = 'Trespassing', class = 'Misdemeanor', id = 'P.C. 4001', months = 10, fine = 450, color = 'green'}, + [2] = {title = 'Felony Trespassing', class = 'Felony', id = 'P.C. 4002', months = 15, fine = 1500, color = 'green'}, + [3] = {title = 'Arson', class = 'Felony', id = 'P.C. 4003', months = 15, fine = 1500, color = 'orange'}, + [4] = {title = 'Vandalism', class = 'Infraction', id = 'P.C. 4004', months = 0, fine = 300, color = 'green'}, + [5] = {title = 'Vandalism of Government Property', class = 'Felony', id = 'P.C. 4005', months = 20, fine = 1500, color = 'green'}, + [6] = {title = 'Littering', class = 'Infraction', id = 'P.C. 4006', months = 0, fine = 200, color = 'green'}, + }, + [5] = { + [1] = {title = 'Bribery of a Government Official', class = 'Felony', id = 'P.C. 5001', months = 20, fine = 3500, color = 'green'}, + [2] = {title = 'Anti-Mask Law', class = 'Infraction', id = 'P.C. 5002', months = 0, fine = 750, color = 'green'}, + [3] = {title = 'Possession of Contraband in a Government Facility', class = 'Felony', id = 'P.C. 5003', months = 25, fine = 1000, color = 'green'}, + [4] = {title = 'Criminal Possession of Stolen Property', class = 'Misdemeanor', id = 'P.C. 5004', months = 10, fine = 500, color = 'green'}, + [5] = {title = 'Escaping', class = 'Felony', id = 'P.C. 5005', months = 10, fine = 450, color = 'green'}, + [6] = {title = 'Jailbreak', class = 'Felony', id = 'P.C. 5006', months = 30, fine = 2500, color = 'orange'}, + [7] = {title = 'Accessory to Jailbreak', class = 'Felony', id = 'P.C. 5007', months = 25, fine = 2000, color = 'orange'}, + [8] = {title = 'Attempted Jailbreak', class = 'Felony', id = 'P.C. 5008', months = 20, fine = 1500, color = 'orange'}, + [9] = {title = 'Perjury', class = 'Felony', id = 'P.C. 5009', months = 0, fine = 0, color = 'green'}, + [10] = {title = 'Violation of a Restraining Order', class = 'Felony', id = 'P.C. 5010', months = 20, fine = 2250, color = 'green'}, + [11] = {title = 'Embezzlement', class = 'Felony', id = 'P.C. 5011', months = 45, fine = 10000, color = 'green'}, + [12] = {title = 'Unlawful Practice', class = 'Felony', id = 'P.C. 5012', months = 15, fine = 1500, color = 'orange'}, + [13] = {title = 'Misuse of Emergency Systems', class = 'Infraction', id = 'P.C. 5013', months = 0, fine = 600, color = 'orange'}, + [14] = {title = 'Conspiracy', class = 'Misdemeanor', id = 'P.C. 5014', months = 10, fine = 450, color = 'green'}, + [15] = {title = 'Violating a Court Order', class = 'Misdemeanor', id = 'P.C. 5015', months = 0, fine = 0, color = 'orange'}, + [16] = {title = 'Failure to Appear', class = 'Misdemeanor', id = 'P.C. 5016', months = 0, fine = 0, color = 'orange'}, + [17] = {title = 'Contempt of Court', class = 'Felony', id = 'P.C. 5017', months = 0, fine = 0, color = 'orange'}, + [18] = {title = 'Resisting Arrest', class = 'Misdemeanor', id = 'P.C. 5018', months = 5, fine = 300, color = 'orange'}, + }, + [6] = { + [1] = {title = 'Disobeying a Peace Officer', class = 'infraction', id = 'P.C. 6001', months = 0, fine = 750, color = 'green'}, + [2] = {title = 'Disorderly Conduct', class = 'Infraction', id = 'P.C. 6002', months = 0, fine = 250, color = 'green'}, + [3] = {title = 'Disturbing the Peace', class = 'infraction', id = 'P.C. 6003', months = 0, fine = 350, color = 'green'}, + [4] = {title = 'False Reporting', class = 'Misdemeanor', id = 'P.C. 6004', months = 10, fine = 750, color = 'green'}, + [5] = {title = 'Harassment', class = 'Misdemeanor', id = 'P.C. 6005', months = 10, fine = 500, color = 'orange'}, + [6] = {title = 'Misdemeanor Obstruction of Justice', class = 'Misdemeanor', id = 'P.C. 6006', months = 10, fine = 500, color = 'green'}, + [7] = {title = 'Felony Obstruction of Justice', class = 'Felony', id = 'P.C. 6007', months = 15, fine = 900, color = 'green'}, + [8] = {title = 'Inciting a Riot', class = 'Felony', id = 'P.C. 6008', months = 25, fine = 1000, color = 'orange'}, + [9] = {title = 'Loitering on Government Properties', class = 'Infraction', id = 'P.C. 6009', months = 0, fine = 500, color = 'green'}, + [10] = {title = 'Tampering', class = 'Misdemeanor', id = 'P.C. 6010', months = 10, fine = 500, color = 'green'}, + [11] = {title = 'Vehicle Tampering', class = 'Misdemeanor', id = 'P.C. 6011', months = 15, fine = 750, color = 'green'}, + [12] = {title = 'Evidence Tampering', class = 'Felony', id = 'P.C. 6012', months = 20, fine = 1000, color = 'green'}, + [13] = {title = 'Witness Tampering', class = 'Felony', id = 'P.C. 6013', months = 0, fine = 0, color = 'green'}, + [14] = {title = 'Failure to Provide Identification', class = 'Misdemeanor', id = 'P.C. 6014', months = 15, fine = 1500, color = 'green'}, + [15] = {title = 'Vigilantism', class = 'Felony', id = 'P.C. 6015', months = 30, fine = 1500, color = 'orange'}, + [16] = {title = 'Unlawful Assembly', class = 'Misdemeanor', id = 'P.C. 6016', months = 10, fine = 750, color = 'orange'}, + [17] = {title = 'Government Corruption', class = 'Felony', id = 'P.C. 6017', months = 0, fine = 0, color = 'red'}, + [18] = {title = 'Stalking', class = 'Felony', id = 'P.C. 6018', months = 40, fine = 1500, color = 'orange'}, + [19] = {title = 'Aiding and Abetting', class = 'Misdemeanor', id = 'P.C. 6019', months = 15, fine = 450, color = 'orange'}, + [20] = {title = 'Harboring a Fugitive', class = 'Misdemeanor', id = 'P.C. 6020', months = 10, fine = 1000, color = 'green'}, + }, + [7] = { + [1] = {title = 'Misdemeanor Possession of Marijuana', class = 'Mask', id = 'P.C. 7001', months = 5, fine = 250, color = 'green'}, + [2] = {title = 'Felony Possession of Marijuana', class = 'Felony', id = 'P.C. 7002', months = 15, fine = 1000, color = 'green'}, + [3] = {title = 'Cultivation of Marijuana A', class = 'Misdemeanor', id = 'P.C. 7003', months = 10, fine = 750, color = 'green'}, + [4] = {title = 'Cultivation of Marijuana B', class = 'Felony', id = 'P.C. 7004', months = 30, fine = 1500, color = 'orange'}, + [5] = {title = 'Possession of Marijuana with Intent to Distribute', class = 'Felony', id = 'P.C. 7005', months = 30, fine = 3000, color = 'orange'}, + [6] = {title = 'Misdemeanor Possession of Cocaine', class = 'Misdemeanor', id = 'P.C. 7006', months = 7, fine = 500, color = 'green'}, + [7] = {title = 'Felony Possession of Cocaine', class = 'Felony', id = 'P.C. 7007', months = 25, fine = 1500, color = 'green'}, + [8] = {title = 'Possession of Cocaine with Intent to Distribute', class = 'Felony', id = 'P.C. 7008', months = 35, fine = 4500, color = 'orange'}, + [9] = {title = 'Misdemeanor Possession of Methamphetamine', class = 'Misdemeanor', id = 'P.C. 7009', months = 7, fine = 500, color = 'green'}, + [10] = {title = 'Felony Possession of Methamphetamine', class = 'Felony', id = 'P.C. 7010', months = 25, fine = 1500, color = 'green'}, + [11] = {title = 'Possession of Methamphetamine with Intent to Distribute', class = 'Felony', id = 'P.C. 7011', months = 35, fine = 4500, color = 'orange'}, + [12] = {title = 'Misdemeanor Possession of Oxy / Vicodin', class = 'Felony', id = 'P.C. 7012', months = 7, fine = 500, color = 'green'}, + [13] = {title = 'Felony Possession of Oxy / Vicodin', class = 'Felony', id = 'P.C. 7013', months = 25, fine = 1500, color = 'green'}, + [14] = {title = 'Felony Possession of Oxy / Vicodin with Intent to Distribute', class = 'Felony', id = 'P.C. 7014', months = 35, fine = 4500, color = 'orange'}, + [15] = {title = 'Misdemeanor Possession of Ecstasy', class = 'Misdemeanor', id = 'P.C. 7015', months = 7, fine = 500, color = 'green'}, + [16] = {title = 'Felony Possession of Ecstasy', class = 'Felony', id = 'P.C. 7016', months = 25, fine = 1500, color = 'green'}, + [17] = {title = 'Possession of Ecstasy with Intent to Distribute', class = 'Felony', id = 'P.C. 7017', months = 35, fine = 4500, color = 'orange'}, + [18] = {title = 'Misdemeanor Possession of Opium', class = 'Misdemeanor', id = 'P.C. 7018', months = 7, fine = 500, color = 'green'}, + [19] = {title = 'Felony Possession of Opium', class = 'Felony', id = 'P.C. 7019', months = 25, fine = 1500, color = 'green'}, + [20] = {title = 'Possession of Opium with Intent to Distribute', class = 'Felony', id = 'P.C. 7020', months = 35, fine = 4500, color = 'orange'}, + [21] = {title = 'Misdemeanor Possession of Adderall', class = 'Misdemeanor', id = 'P.C. 7021', months = 7, fine = 500, color = 'green'}, + [22] = {title = 'Felony Possession of Adderall', class = 'Felony', id = 'P.C. 7022', months = 25, fine = 1500, color = 'green'}, + [23] = {title = 'Possession of Adderall with Intent to Distribute', class = 'Felony', id = 'P.C. 7023', months = 35, fine = 4500, color = 'orange'}, + [24] = {title = 'Misdemeanor Possession of Xanax', class = 'Misdemeanor', id = 'P.C. 7024', months = 7, fine = 500, color = 'green'}, + [25] = {title = 'Felony Possession of Xanax', class = 'Felony', id = 'P.C. 7025', months = 25, fine = 1500, color = 'green'}, + [26] = {title = 'Possession of Xanax with Intent to Distribute', class = 'Felony', id = 'P.C. 7026', months = 35, fine = 4500, color = 'orange'}, + [27] = {title = 'Misdemeanor Possession of Shrooms', class = 'Misdemeanor', id = 'P.C. 7027', months = 7, fine = 500, color = 'green'}, + [28] = {title = 'Felony Possession of Shrooms', class = 'Felony', id = 'P.C. 7028', months = 25, fine = 1500, color = 'green'}, + [29] = {title = 'Possession of Shrooms with Intent to Distribute', class = 'Felony', id = 'P.C. 7029', months = 35, fine = 4500, color = 'orange'}, + [30] = {title = 'Misdemeanor Possession of Lean', class = 'Misdemeanor', id = 'P.C. 7030', months = 7, fine = 500, color = 'green'}, + [31] = {title = 'Felony Possession of Lean', class = 'Felony', id = 'P.C. 7031', months = 25, fine = 1500, color = 'green'}, + [32] = {title = 'Possession of Lean with Intent to Distribute', class = 'Felony', id = 'P.C. 7032', months = 35, fine = 4500, color = 'orange'}, + [33] = {title = 'Sale of a controlled substance', class = 'Misdemeanor', id = 'P.C. 7033', months = 10, fine = 1000, color = 'green'}, + [34] = {title = 'Drug Trafficking', class = 'Felony', id = 'P.C. 7034', months = 0, fine = 0, color = 'red'}, + [35] = {title = 'Desecration of a Human Corpse', class = 'Felony', id = 'P.C. 7035', months = 20, fine = 1500, color = 'orange'}, + [36] = {title = 'Public Intoxication', class = 'Infraction', id = 'P.C. 7036', months = 0, fine = 500, color = 'green'}, + [37] = {title = 'Public Indecency', class = 'Misdemeanor', id = 'P.C. 7037', months = 10, fine = 750, color = 'green'}, + }, + [8] = { + [1] = {title = 'Criminal Possession of Weapon Class A', class = 'Felony', id = 'P.C. 8001', months = 10, fine = 500, color = 'green'}, + [2] = {title = 'Criminal Possession of Weapon Class B', class = 'Felony', id = 'P.C. 8002', months = 15, fine = 1000, color = 'green'}, + [3] = {title = 'Criminal Possession of Weapon Class C', class = 'Felony', id = 'P.C. 8003', months = 30, fine = 3500, color = 'green'}, + [4] = {title = 'Criminal Possession of Weapon Class D', class = 'Felony', id = 'P.C. 8004', months = 25, fine = 1500, color = 'green'}, + [5] = {title = 'Criminal Sale of Weapon Class A', class = 'Felony', id = 'P.C. 8005', months = 15, fine = 1000, color = 'orange'}, + [6] = {title = 'Criminal Sale of Weapon Class B', class = 'Felony', id = 'P.C. 8006', months = 20, fine = 2000, color = 'orange'}, + [7] = {title = 'Criminal Sale of Weapon Class C', class = 'Felony', id = 'P.C. 8007', months = 35, fine = 7000, color = 'orange'}, + [8] = {title = 'Criminal Sale of Weapon Class D', class = 'Felony', id = 'P.C. 8008', months = 30, fine = 3000, color = 'orange'}, + [9] = {title = 'Criminal Use of Weapon', class = 'Misdemeanor', id = 'P.C. 8009', months = 10, fine = 450, color = 'orange'}, + [10] = {title = 'Possession of Illegal Firearm Modifications', class = 'Misdemeanor', id = 'P.C. 8010', months = 10, fine = 300, color = 'green'}, + [11] = {title = 'Weapon Trafficking', class = 'Felony', id = 'P.C. 8011', months = 0, fine = 0, color = 'red'}, + [12] = {title = 'Brandishing a Weapon', class = 'Misdemeanor', id = 'P.C. 8012', months = 15, fine = 500, color = 'orange'}, + [13] = {title = 'Insurrection', class = 'Felony', id = 'P.C. 8013', months = 0, fine = 0, color = 'red'}, + [14] = {title = 'Flying into Restricted Airspace', class = 'Felony', id = 'P.C. 8014', months = 20, fine = 1500, color = 'green'}, + [15] = {title = 'Jaywalking', class = 'Infraction', id = 'P.C. 8015', months = 0, fine = 150, color = 'green'}, + [16] = {title = 'Criminal Use of Explosives', class = 'Felony', id = 'P.C. 8016', months = 30, fine = 2500, color = 'orange'}, + }, + [9] = { + [1] = {title = 'Driving While Intoxicated', class = 'Misdemeanor', id = 'P.C. 9001', months = 5, fine = 300, color = 'green'}, + [2] = {title = 'Evading', class = 'Misdemeanor', id = 'P.C. 9002', months = 5, fine = 400, color = 'green'}, + [3] = {title = 'Reckless Evading', class = 'Felony', id = 'P.C. 9003', months = 10, fine = 800, color = 'orange'}, + [4] = {title = 'Failure to Yield to Emergency Vehicle', class = 'Infraction', id = 'P.C. 9004', months = 0, fine = 600, color = 'green'}, + [5] = {title = 'Failure to Obey Traffic Control Device', class = 'Infraction', id = 'P.C. 9005', months = 0, fine = 150, color = 'green'}, + [6] = {title = 'Nonfunctional Vehicle', class = 'Infraction', id = 'P.C. 9006', months = 0, fine = 75, color = 'green'}, + [7] = {title = 'Negligent Driving', class = 'Infraction', id = 'P.C. 9007', months = 0, fine = 300, color = 'green'}, + [8] = {title = 'Reckless Driving', class = 'Misdemeanor', id = 'P.C. 9008', months = 10, fine = 750, color = 'orange'}, + [9] = {title = 'Third Degree Speeding', class = 'Infraction', id = 'P.C. 9009', months = 0, fine = 225, color = 'green'}, + [10] = {title = 'Second Degree Speeding', class = 'Infraction', id = 'P.C. 9010', months = 0, fine = 450, color = 'green'}, + [11] = {title = 'First Degree Speeding', class = 'Infraction', id = 'P.C. 9011', months = 0, fine = 750, color = 'green'}, + [12] = {title = 'Unlicensed Operation of Vehicle', class = 'Infraction', id = 'P.C. 9012', months = 0, fine = 500, color = 'green'}, + [13] = {title = 'Illegal U-Turn', class = 'Infraction', id = 'P.C. 9013', months = 0, fine = 75, color = 'green'}, + [14] = {title = 'Illegal Passing', class = 'Infraction', id = 'P.C. 9014', months = 0, fine = 300, color = 'green'}, + [15] = {title = 'Failure to Maintain Lane', class = 'Infraction', id = 'P.C. 9015', months = 0, fine = 300, color = 'green'}, + [16] = {title = 'Illegal Turn', class = 'Infraction', id = 'P.C. 9016', months = 0, fine = 150, color = 'green'}, + [17] = {title = 'Failure to Stop', class = 'Infraction', id = 'P.C. 9017', months = 0, fine = 600, color = 'green'}, + [18] = {title = 'Unauthorized Parking', class = 'Infraction', id = 'P.C. 9018', months = 0, fine = 300, color = 'green'}, + [19] = {title = 'Hit and Run', class = 'Misdemeanor', id = 'P.C. 9019', months = 10, fine = 500, color = 'green'}, + [20] = {title = 'Driving without Headlights or Signals', class = 'Infraction', id = 'P.C. 9020', months = 0, fine = 300, color = 'green'}, + [21] = {title = 'Street Racing', class = 'Felony', id = 'P.C. 9021', months = 15, fine = 1500, color = 'green'}, + [22] = {title = 'Piloting without Proper Licensing', class = 'Felony', id = 'P.C. 9022', months = 20, fine = 1500, color = 'orange'}, + [23] = {title = 'Unlawful Use of a Motorvehicle', class = 'Misdemeanor', id = 'P.C. 9023', months = 10, fine = 750, color = 'green'}, + }, + [10] = { + [1] = {title = 'Hunting in Restricted Areas', class = 'Infraction', id = 'P.C. 10001', months = 0, fine = 450, color = 'green'}, + [2] = {title = 'Unlicensed Hunting', class = 'Infraction', id = 'P.C. 10002', months = 0, fine = 450, color = 'green'}, + [3] = {title = 'Animal Cruelty', class = 'Misdemeanor', id = 'P.C. 10003', months = 10, fine = 450, color = 'green'}, + [4] = {title = 'Hunting with a Non-Hunting Weapon', class = 'Misdemeanor', id = 'P.C. 10004', months = 10, fine = 750, color = 'green'}, + [5] = {title = 'Hunting outside of hunting hours', class = 'Infraction', id = 'P.C. 10005', months = 0, fine = 750, color = 'green'}, + [6] = {title = 'Overhunting', class = 'Misdemeanor', id = 'P.C. 10006', months = 10, fine = 1000, color = 'green'}, + [7] = {title = 'Poaching', class = 'Felony', id = 'P.C. 10007', months = 20, fine = 1250, color = 'red'}, + } +} + +Config.PoliceJobs = { + ['police'] = true, + ['lspd'] = true, + ['bcso'] = true, + ['sast'] = true, + ['sasp'] = true, + ['doc'] = true, + ['sapr'] = true, + ['pa'] = true -- yucky +} + +Config.AmbulanceJobs = { + ['ambulance'] = true, + ['doctor'] = true +} + +Config.DojJobs = { + ['lawyer'] = true, +} + +-- Leave my hacky code alone ya goblins +Config.AllowedJobs = {} +for index, value in pairs(Config.PoliceJobs) do + Config.AllowedJobs[index] = value +end +for index, value in pairs(Config.AmbulanceJobs) do + Config.AllowedJobs[index] = value +end +for index, value in pairs(Config.DojJobs) do + Config.AllowedJobs[index] = value +end +-- Leave my hacky code alone ya goblins + +Config.LogPerms = { + ['ambulance'] = { + [4] = true, + }, + ['police'] = { + [4] = true, + }, +} + +Config.ColorNames = { + [0] = "Metallic Black", + [1] = "Metallic Graphite Black", + [2] = "Metallic Black Steel", + [3] = "Metallic Dark Silver", + [4] = "Metallic Silver", + [5] = "Metallic Blue Silver", + [6] = "Metallic Steel Gray", + [7] = "Metallic Shadow Silver", + [8] = "Metallic Stone Silver", + [9] = "Metallic Midnight Silver", + [10] = "Metallic Gun Metal", + [11] = "Metallic Anthracite Grey", + [12] = "Matte Black", + [13] = "Matte Gray", + [14] = "Matte Light Grey", + [15] = "Util Black", + [16] = "Util Black Poly", + [17] = "Util Dark silver", + [18] = "Util Silver", + [19] = "Util Gun Metal", + [20] = "Util Shadow Silver", + [21] = "Worn Black", + [22] = "Worn Graphite", + [23] = "Worn Silver Grey", + [24] = "Worn Silver", + [25] = "Worn Blue Silver", + [26] = "Worn Shadow Silver", + [27] = "Metallic Red", + [28] = "Metallic Torino Red", + [29] = "Metallic Formula Red", + [30] = "Metallic Blaze Red", + [31] = "Metallic Graceful Red", + [32] = "Metallic Garnet Red", + [33] = "Metallic Desert Red", + [34] = "Metallic Cabernet Red", + [35] = "Metallic Candy Red", + [36] = "Metallic Sunrise Orange", + [37] = "Metallic Classic Gold", + [38] = "Metallic Orange", + [39] = "Matte Red", + [40] = "Matte Dark Red", + [41] = "Matte Orange", + [42] = "Matte Yellow", + [43] = "Util Red", + [44] = "Util Bright Red", + [45] = "Util Garnet Red", + [46] = "Worn Red", + [47] = "Worn Golden Red", + [48] = "Worn Dark Red", + [49] = "Metallic Dark Green", + [50] = "Metallic Racing Green", + [51] = "Metallic Sea Green", + [52] = "Metallic Olive Green", + [53] = "Metallic Green", + [54] = "Metallic Gasoline Blue Green", + [55] = "Matte Lime Green", + [56] = "Util Dark Green", + [57] = "Util Green", + [58] = "Worn Dark Green", + [59] = "Worn Green", + [60] = "Worn Sea Wash", + [61] = "Metallic Midnight Blue", + [62] = "Metallic Dark Blue", + [63] = "Metallic Saxony Blue", + [64] = "Metallic Blue", + [65] = "Metallic Mariner Blue", + [66] = "Metallic Harbor Blue", + [67] = "Metallic Diamond Blue", + [68] = "Metallic Surf Blue", + [69] = "Metallic Nautical Blue", + [70] = "Metallic Bright Blue", + [71] = "Metallic Purple Blue", + [72] = "Metallic Spinnaker Blue", + [73] = "Metallic Ultra Blue", + [74] = "Metallic Bright Blue", + [75] = "Util Dark Blue", + [76] = "Util Midnight Blue", + [77] = "Util Blue", + [78] = "Util Sea Foam Blue", + [79] = "Uil Lightning blue", + [80] = "Util Maui Blue Poly", + [81] = "Util Bright Blue", + [82] = "Matte Dark Blue", + [83] = "Matte Blue", + [84] = "Matte Midnight Blue", + [85] = "Worn Dark blue", + [86] = "Worn Blue", + [87] = "Worn Light blue", + [88] = "Metallic Taxi Yellow", + [89] = "Metallic Race Yellow", + [90] = "Metallic Bronze", + [91] = "Metallic Yellow Bird", + [92] = "Metallic Lime", + [93] = "Metallic Champagne", + [94] = "Metallic Pueblo Beige", + [95] = "Metallic Dark Ivory", + [96] = "Metallic Choco Brown", + [97] = "Metallic Golden Brown", + [98] = "Metallic Light Brown", + [99] = "Metallic Straw Beige", + [100] = "Metallic Moss Brown", + [101] = "Metallic Biston Brown", + [102] = "Metallic Beechwood", + [103] = "Metallic Dark Beechwood", + [104] = "Metallic Choco Orange", + [105] = "Metallic Beach Sand", + [106] = "Metallic Sun Bleeched Sand", + [107] = "Metallic Cream", + [108] = "Util Brown", + [109] = "Util Medium Brown", + [110] = "Util Light Brown", + [111] = "Metallic White", + [112] = "Metallic Frost White", + [113] = "Worn Honey Beige", + [114] = "Worn Brown", + [115] = "Worn Dark Brown", + [116] = "Worn straw beige", + [117] = "Brushed Steel", + [118] = "Brushed Black steel", + [119] = "Brushed Aluminium", + [120] = "Chrome", + [121] = "Worn Off White", + [122] = "Util Off White", + [123] = "Worn Orange", + [124] = "Worn Light Orange", + [125] = "Metallic Securicor Green", + [126] = "Worn Taxi Yellow", + [127] = "police car blue", + [128] = "Matte Green", + [129] = "Matte Brown", + [130] = "Worn Orange", + [131] = "Matte White", + [132] = "Worn White", + [133] = "Worn Olive Army Green", + [134] = "Pure White", + [135] = "Hot Pink", + [136] = "Salmon pink", + [137] = "Metallic Vermillion Pink", + [138] = "Orange", + [139] = "Green", + [140] = "Blue", + [141] = "Mettalic Black Blue", + [142] = "Metallic Black Purple", + [143] = "Metallic Black Red", + [144] = "Hunter Green", + [145] = "Metallic Purple", + [146] = "Metaillic V Dark Blue", + [147] = "MODSHOP BLACK1", + [148] = "Matte Purple", + [149] = "Matte Dark Purple", + [150] = "Metallic Lava Red", + [151] = "Matte Forest Green", + [152] = "Matte Olive Drab", + [153] = "Matte Desert Brown", + [154] = "Matte Desert Tan", + [155] = "Matte Foilage Green", + [156] = "DEFAULT ALLOY COLOR", + [157] = "Epsilon Blue", + [158] = "Unknown", +} + +Config.ColorInformation = { + [0] = "black", + [1] = "black", + [2] = "black", + [3] = "darksilver", + [4] = "silver", + [5] = "bluesilver", + [6] = "silver", + [7] = "darksilver", + [8] = "silver", + [9] = "bluesilver", + [10] = "darksilver", + [11] = "darksilver", + [12] = "matteblack", + [13] = "gray", + [14] = "lightgray", + [15] = "black", + [16] = "black", + [17] = "darksilver", + [18] = "silver", + [19] = "utilgunmetal", + [20] = "silver", + [21] = "black", + [22] = "black", + [23] = "darksilver", + [24] = "silver", + [25] = "bluesilver", + [26] = "darksilver", + [27] = "red", + [28] = "torinored", + [29] = "formulared", + [30] = "blazered", + [31] = "gracefulred", + [32] = "garnetred", + [33] = "desertred", + [34] = "cabernetred", + [35] = "candyred", + [36] = "orange", + [37] = "gold", + [38] = "orange", + [39] = "red", + [40] = "mattedarkred", + [41] = "orange", + [42] = "matteyellow", + [43] = "red", + [44] = "brightred", + [45] = "garnetred", + [46] = "red", + [47] = "red", + [48] = "darkred", + [49] = "darkgreen", + [50] = "racingreen", + [51] = "seagreen", + [52] = "olivegreen", + [53] = "green", + [54] = "gasolinebluegreen", + [55] = "mattelimegreen", + [56] = "darkgreen", + [57] = "green", + [58] = "darkgreen", + [59] = "green", + [60] = "seawash", + [61] = "midnightblue", + [62] = "darkblue", + [63] = "saxonyblue", + [64] = "blue", + [65] = "blue", + [66] = "blue", + [67] = "diamondblue", + [68] = "blue", + [69] = "blue", + [70] = "brightblue", + [71] = "purpleblue", + [72] = "blue", + [73] = "ultrablue", + [74] = "brightblue", + [75] = "darkblue", + [76] = "midnightblue", + [77] = "blue", + [78] = "blue", + [79] = "lightningblue", + [80] = "blue", + [81] = "brightblue", + [82] = "mattedarkblue", + [83] = "matteblue", + [84] = "matteblue", + [85] = "darkblue", + [86] = "blue", + [87] = "lightningblue", + [88] = "yellow", + [89] = "yellow", + [90] = "bronze", + [91] = "yellow", + [92] = "lime", + [93] = "champagne", + [94] = "beige", + [95] = "darkivory", + [96] = "brown", + [97] = "brown", + [98] = "lightbrown", + [99] = "beige", + [100] = "brown", + [101] = "brown", + [102] = "beechwood", + [103] = "beechwood", + [104] = "chocoorange", + [105] = "yellow", + [106] = "yellow", + [107] = "cream", + [108] = "brown", + [109] = "brown", + [110] = "brown", + [111] = "white", + [112] = "white", + [113] = "beige", + [114] = "brown", + [115] = "brown", + [116] = "beige", + [117] = "steel", + [118] = "blacksteel", + [119] = "aluminium", + [120] = "chrome", + [121] = "wornwhite", + [122] = "offwhite", + [123] = "orange", + [124] = "lightorange", + [125] = "green", + [126] = "yellow", + [127] = "blue", + [128] = "green", + [129] = "brown", + [130] = "orange", + [131] = "white", + [132] = "white", + [133] = "darkgreen", + [134] = "white", + [135] = "pink", + [136] = "pink", + [137] = "pink", + [138] = "orange", + [139] = "green", + [140] = "blue", + [141] = "blackblue", + [142] = "blackpurple", + [143] = "blackred", + [144] = "darkgreen", + [145] = "purple", + [146] = "darkblue", + [147] = "black", + [148] = "purple", + [149] = "darkpurple", + [150] = "red", + [151] = "darkgreen", + [152] = "olivedrab", + [153] = "brown", + [154] = "tan", + [155] = "green", + [156] = "silver", + [157] = "blue", + [158] = "black", +} + +Config.ClassList = { + [0] = "Compact", + [1] = "Sedan", + [2] = "SUV", + [3] = "Coupe", + [4] = "Muscle", + [5] = "Sport Classic", + [6] = "Sport", + [7] = "Super", + [8] = "Motorbike", + [9] = "Off-Road", + [10] = "Industrial", + [11] = "Utility", + [12] = "Van", + [13] = "Bike", + [14] = "Boat", + [15] = "Helicopter", + [16] = "Plane", + [17] = "Service", + [18] = "Emergency", + [19] = "Military", + [20] = "Commercial", + [21] = "Train" +} + +function GetJobType(job) + if Config.PoliceJobs[job] then + return 'police' + elseif Config.AmbulanceJobs[job] then + return 'ambulance' + elseif Config.DojJobs[job] then + return 'doj' + else + return nil + end +end + +-- this is a hack, because the qb-menu in qb-policejob populates an impound location and passed it through to the event. +-- if this impound locations are changed in qb-policejob, they must also be changed here. +Config.ImpoundLocations = { + [1] = vector4(436.68, -1007.42, 27.32, 180.0), + [2] = vector4(-436.14, 5982.63, 31.34, 136.0), +} \ No newline at end of file diff --git a/ui/app.js b/ui/app.js new file mode 100644 index 00000000..6e327537 --- /dev/null +++ b/ui/app.js @@ -0,0 +1,5048 @@ +let canSearchForProfiles = true; +let canSaveProfile = true; +let canRefreshBolo = true; +let canRefreshReports = true; +let canRefreshIncidents = true; +let canInputTag = true; +let canInputBoloTag = true; +let canInputBoloOfficerTag = true; +let canSearchReports = true; +let canCreateBulletin = 0; +let mouse_is_inside = false; +let currentTab = ".dashboard-page-container"; +let MyName = ""; +let canInputReportTag = true; +let canInputReportOfficerTag = true; +let canInputReportCivilianTag = true; +let canSearchForVehicles = true; +let canSearchForReports = true; +let canSaveVehicle = true; +var LastName = ""; +var DispatchNum = 0; +var playerJob = ""; +let rosterLink = ""; + +let impoundChanged = false; + +// TEMP CONFIG OF JOBS +const PoliceJobs = { + ['police']: true, +} + +const AmbulanceJobs = { + ['ambulance']: true, +} + +const DojJobs = { + ['lawyer']: true +} + +const MONTH_NAMES = [ + "January", + "February", + "March", + "April", + "May", + "June", + "July", + "August", + "September", + "October", + "November", + "December", +]; + +function getFormattedDate(date, prefomattedDate = false, hideYear = false) { + const day = date.getDate(); + const month = MONTH_NAMES[date.getMonth()]; + const year = date.getFullYear(); + const hours = date.getHours(); + let minutes = date.getMinutes(); + + if (minutes < 10) { + minutes = `0${minutes}`; + } + + if (prefomattedDate) { + return `${prefomattedDate} at ${hours}:${minutes}`; + } + + if (hideYear) { + return `${day}. ${month} at ${hours}:${minutes}`; + } + + return `${day}. ${month} ${year}. at ${hours}:${minutes}`; +} + +function timeAgo(dateParam) { + if (!dateParam) { + return null; + } + + const date = + typeof dateParam === "object" ? dateParam : new Date(dateParam); + const DAY_IN_MS = 86400000; + const today = new Date(); + const yesterday = new Date(today - DAY_IN_MS); + const seconds = Math.round((today - date) / 1000); + const minutes = Math.round(seconds / 60); + const isToday = today.toDateString() === date.toDateString(); + const isYesterday = yesterday.toDateString() === date.toDateString(); + const isThisYear = today.getFullYear() === date.getFullYear(); + + if (seconds < 5) { + return "Just Now"; + } else if (seconds < 60) { + return `${seconds} Seconds ago`; + } else if (seconds < 90) { + return "About a minute ago"; + } else if (minutes < 60) { + return `${minutes} Minutes ago`; + } else if (isToday) { + return getFormattedDate(date, "Today"); + } else if (isYesterday) { + return getFormattedDate(date, "Yesterday"); + } else if (isThisYear) { + return getFormattedDate(date, false, true); + } + + return getFormattedDate(date); +} + +$(document).ready(() => { + $(".header").hover( + function () { + $(".close-all").css("opacity", "0.5"); + }, + function () { + $(".close-all").css("opacity", "1"); + } + ); + $(".incidents-charges-title-container").hover( + function () { + $(".incidents-charges-table-container").css("opacity", "0.1"); + $(".close-all").css("filter", "none"); + }, + function () { + $(".close-all").css("filter", "brightness(30%)"); + $(".incidents-charges-table-container").css("opacity", "1"); + } + ); + $(".nav-item").click(function () { + if ($(this).hasClass("active-nav") == false) { + fidgetSpinner($(this).data("page")); + currentTab = $(this).data("page"); + } + }); + + $(".profile-items").on("click", ".profile-item", async function () { + let id = $(this).data("id"); + let result = await $.post( + `https://${GetParentResourceName()}/getProfileData`, + JSON.stringify({ + id: id, + }) + ); + + if (!canInputTag) { + if ($(".tags-add-btn").hasClass("fa-minus")) { + $(".tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".tag-input").remove(); + canInputTag = true; + } + + if ($(".gallery-upload-input").css("display") == "block") { + $(".gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".gallery-upload-input").css("display", "none"); + }, 250); + } + + if ($(".gallery-add-btn").hasClass("fa-minus")) { + $(".gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + + $(".manage-profile-editing-title").html(`You are currently editing ${result["firstname"]} ${result["lastname"]}`); + $(".manage-profile-citizenid-input").val(result['cid']); + $(".manage-profile-name-input-1").val(result["firstname"]); + $(".manage-profile-name-input-2").val(result["lastname"]); + $(".manage-profile-dob-input").val(result["dob"]); + $(".manage-profile-job-input").val(`${result.job}, ${result.grade}`); + $(".manage-profile-url-input").val(result["profilepic"]); + $(".manage-profile-info").val(result["mdtinfo"]); + $(".manage-profile-info").removeAttr("disabled"); + $(".manage-profile-fingerprint").val(result["fingerprint"]); + $(".manage-profile-fingerprint").removeAttr("disabled"); + $(".manage-profile-pic").attr("src", result["profilepic"]); + + const { vehicles, tags, gallery, convictions, properties } = result + + $(".licenses-holder").empty(); + $(".tags-holder").empty(); + $(".vehs-holder").empty(); + $(".gallery-inner-container").empty(); + $(".convictions-holder").empty(); + + let licencesHTML = '
No Licenses
'; + let tagsHTML = '
No Tags
'; + let convHTML = '
Clean Record ?
'; + let vehHTML = '
No Vehicles
'; + let galleryHTML = '
No Photos
'; + let propertyHTML = '
No Properties
'; + + // convert key value pair object of licenses to array + let licenses = Object.entries(result.licences); + + if (licenses.length > 0 && (PoliceJobs[playerJob] !== undefined || DojJobs[playerJob] !== undefined)) { + licencesHTML = ''; + for (const [lic, hasLic] of licenses) { + + let tagColour = hasLic == true ? "green-tag" : "red-tag"; + licencesHTML += `${titleCase(lic)}`; + } + if (vehicles && vehicles.length > 0) { + + vehHTML = ''; + vehicles.forEach(value => { + vehHTML += `
${value.plate} - ${value.vehicle}
` + }) + } + if (convictions && convictions.length > 0) { + convHTML = ''; + convictions.forEach(value => { + convHTML += `
${value}
`; + }) + } + if (properties && properties.length > 0) { + propertyHTML = ''; + properties.forEach(value => { + propertyHTML += `
${value.label}
`; + }) + } + } + if (tags && tags.length > 0) { + tagsHTML = ''; + tags.forEach((tag) => { + tagsHTML += `
${tag}
`; + }) + } + + if (gallery && gallery.length > 0) { + galleryHTML = ''; + gallery.forEach(value => { + galleryHTML += ``; + }) + } + + if (result.isLimited) { + $(".manage-profile-vehs-container").fadeOut(250); + $(".manage-profile-houses-container").fadeOut(250); + $(".manage-profile-houses-container").fadeOut(250); + } else { + $(".manage-profile-vehs-container").fadeIn(250); + $(".manage-profile-houses-container").fadeIn(250); + $(".manage-profile-houses-container").fadeIn(250); + } + + $(".licenses-holder").html(licencesHTML); + $(".tags-holder").html(tagsHTML); + $(".convictions-holder").html(convHTML); + $(".vehs-holder").html(vehHTML); + $(".gallery-inner-container").html(galleryHTML); + $(".houses-holder").html(propertyHTML); + }); + //
ID: ${BulletinId}
+ + $(".bulletin-add-btn").click(function () { + if (canCreateBulletin == 0) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + let BulletinId = Number($(".bulletin-item").first().data("id")) + 1; + if (Number.isNaN(BulletinId)) { + BulletinId = 1; + } + canCreateBulletin = BulletinId; + $(".bulletin-items-continer") + .prepend(`
+ + +
+
${MyName} - Just Now
+
+
`); + } else { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".bulletin-items-continer") + .find("[data-id='" + canCreateBulletin + "']") + .remove(); + canCreateBulletin = 0; + } + }); + //
ID: ${canCreateBulletin}
+ $(".bulletin-items-continer").on("keydown", ".bulletin-item", function (e) { + if (e.keyCode === 13) { + $(".bulletin-add-btn").removeClass("fa-minus").addClass("fa-plus"); + let id = $(this).find(".bulletin-id").text(); + let date = $(this).find(".bulletin-date").text(); + let title = $(this).find(".bulletin-item-title").text(); + let info = $(this).find(".bulletin-item-info").text(); + let time = new Date(); + $.post( + `https://${GetParentResourceName()}/newBulletin`, + JSON.stringify({ + title: title, + info: info, + time: time.getTime(), + }) + ); + $(".bulletin-items-continer") + .find("[data-id='" + canCreateBulletin + "']") + .remove(); + $(".bulletin-items-continer") + .prepend(`
+
${title}
+
${info}
+
+ +
${MyName} - ${timeAgo( + Number(time.getTime()) + )}
+
+
`); + canCreateBulletin = 0; + } + }); + $(".bulletin-items-continer").on( + "contextmenu", + ".bulletin-item", + function (e) { + let args = [ + { + className: "remove-bulletin", + icon: "fas fa-times", + text: "Remove Item", + info: $(this).data("id"), + status: $(this).data("title"), + }, + ]; + openContextMenu(e, args); + } + ); + $(".contextmenu").on("click", ".remove-bulletin", function () { + let id = $(this).data("info"); + let title = $(this).data("status") + $(".bulletin-items-continer") + .find("[data-id='" + id + "']") + .remove(); + $.post( + `https://${GetParentResourceName()}/deleteBulletin`, + JSON.stringify({ + id: id, + title: title + }) + ); + if (canCreateBulletin == id) { + canCreateBulletin = 0; + } + if ($(".bulletin-add-btn").hasClass("fa-minus")) { + $(".bulletin-add-btn").removeClass("fa-minus").addClass("fa-plus"); + } + }); + $(".associated-incidents-tags-add-btn").on("click", "", function () { + document.addEventListener("mouseup", onMouseDownIcidents); + $(".icidents-person-search-container").fadeIn(250); + $(".close-all").css("filter", "brightness(15%)"); + }); + $(".gallery-add-btn").click(function () { + if ($(".manage-profile-citizenid-input").val()) { + if ($(".gallery-upload-input").css("display") == "none") { + $(".gallery-upload-input").slideDown(250); + $(".gallery-upload-input").css("display", "block"); + $(this).removeClass("fa-plus").addClass("fa-minus"); + } else { + $(".gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".gallery-upload-input").css("display", "none"); + }, 250); + $(this).removeClass("fa-minus").addClass("fa-plus"); + } + } else { + $(this).effect("shake", { times: 2, distance: 2 }, 500); + } + }); + $("#gallery-upload-input").keydown(function (e) { + if (e.keyCode === 13) { + let URL = $("#gallery-upload-input").val(); + let cid = $(".manage-profile-citizenid-input").val(); + if (URL !== "") { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".gallery-inner-container").prepend( + `` + ); + $("#gallery-upload-input").val(""); + $(".gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".gallery-upload-input").css("display", "none"); + }, 250); + $(".gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + } + }); + $(".manage-profile-save").click(function () { + if (canSaveProfile == true) { + canSaveProfile = false; + $(".manage-profile-save").empty(); + $(".manage-profile-save").prepend( + `` + ); + setTimeout(() => { + $(".manage-profile-save").empty(); + $(".manage-profile-save").html("Save"); + canSaveProfile = true; + }, 750); + + setTimeout(() => { + let tags = new Array(); + let gallery = new Array(); + let licenses = {}; + + $(".tags-holder") + .find("div") + .each(function () { + if ($(this).text() != "" && $(this).text() != "No Tags") { + tags.push($(this).text()); + } + }); + + $(".gallery-inner-container") + .find("img") + .each(function () { + if ($(this).attr("src") != "") { + gallery.push($(this).attr("src")); + } + }); + + let pfp = $(".manage-profile-pic").attr("src"); + let newpfp = $(".manage-profile-url-input").val(); + if (newpfp.includes("base64")) { + newpfp = "img/not-found.jpg"; + } else { + pfp = newpfp; + } + let description = $(".manage-profile-info").val(); + let fingerprint = $(".manage-profile-fingerprint").val(); + let id = $(".manage-profile-citizenid-input").val(); + + $(".licenses-holder") + .find("span") + .each(function(){ + let type = $(this).data("type") + if ($(this).attr('class').includes('green-tag')){ + licenses[type] = true + } + else{ + licenses[type] = false + } + }) + + const fName = $(".manage-profile-name-input-1").val(); + const sName = $(".manage-profile-name-input-2").val(); + + $.post( + `https://${GetParentResourceName()}/saveProfile`, + JSON.stringify({ + pfp: pfp, + description: description, + id: id, + fName: fName, + sName: sName, + tags: tags, + gallery: gallery, + fingerprint: fingerprint, + licenses: licenses + }) + ); + $(".manage-profile-pic").attr("src", newpfp); + }, 250); + } + }); + $(".manage-incidents-title-holder").on( + "click", + ".manage-incidents-save", + function () { + if (canSaveProfile == true) { + canSaveProfile = false; + $(".manage-incidents-save").empty(); + $(".manage-incidents-save").prepend( + `` + ); + setTimeout(() => { + $(".manage-incidents-save").empty(); + $(".manage-incidents-save").prepend( + `` + ); + canSaveProfile = true; + }, 750); + + // Title, information, tags, officers involved, civs involved, evidence + const title = $("#manage-incidents-title-input").val(); + const information = $( + ".manage-incidents-reports-content" + ).val(); + const dbid = $(".manage-incidents-editing-title").data("id"); + + let tags = new Array(); + let officers = new Array(); + let civilians = new Array(); + let evidence = new Array(); + + $(".manage-incidents-tags-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + tags.push($(this).text()); + } + }); + + $(".manage-incidents-officers-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + officers.push($(this).text()); + } + }); + + $(".manage-incidents-civilians-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + civilians.push($(this).text()); + } + }); + + $(".manage-incidents-evidence-holder") + .find("img") + .each(function () { + if ($(this).attr("src") != "") { + evidence.push($(this).attr("src")); + } + }); + + let time = new Date(); + + let associated = new Array(); + + $(".associated-incidents-user-container").each(function ( + index + ) { + var cid = $(this).data("id"); + var guilty = false; + var warrant = false; + var processed = false; + var isassociated = false; + var charges = new Array(); + + $(".associated-incidents-user-tags-holder") + .children("div") + .each(function (index) { + if ($(this).data("id") == cid) { + if ($(this).hasClass("green-tag")) { + if ($(this).text() == "Guilty") { + guilty = true; + } + if ($(this).text() == "Warrant") { + warrant = true; + } + if ($(this).text() == "Processed") { + processed = true; + } + if ($(this).text() == "Associated") { + isassociated = true; + } + } + } + }); + + $(".associated-incidents-user-holder") + .children("div") + .each(function (index) { + if ( + ( $(".associated-incidents-user-holder") + .children() + .eq(index) + .data("id") == cid ) + ) { + charges.push( + $(".associated-incidents-user-holder") + .children() + .eq(index) + .html() + ); + } + }); + + associated.push({ + Cid: $(this).data("id"), + Warrant: warrant, + Guilty: guilty, + Processed: processed, + Isassociated: isassociated, + Charges: charges, + Fine: $(".fine-amount") + .filter("[data-id='" + $(this).data("id") + "']") + .val(), + Sentence: $(".sentence-amount") + .filter("[data-id='" + $(this).data("id") + "']") + .val(), + recfine: $(".fine-recommended-amount") + .filter("[data-id='" + $(this).data("id") + "']") + .val(), + recsentence: $(".sentence-recommended-amount") + .filter("[data-id='" + $(this).data("id") + "']") + .val(), + }); + }); + + $.post( + `https://${GetParentResourceName()}/saveIncident`, + JSON.stringify({ + ID: dbid, + title: title, + information: information, + tags: tags, + officers: officers, + civilians: civilians, + evidence: evidence, + associated: associated, + time: time.getTime(), + }) + ); + + setTimeout(() => { + if (canRefreshIncidents == true) { + canRefreshIncidents = false; + $(".incidents-search-refresh").empty(); + $(".incidents-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".incidents-search-refresh").empty(); + $(".incidents-search-refresh").html("Refresh"); + canRefreshIncidents = true; + $.post( + `https://${GetParentResourceName()}/getAllIncidents`, + JSON.stringify({}) + ); + }, 1500); + } + }, 1000); + } + } + ); + $(".manage-incidents-title-holder").on( + "click", + ".manage-incidents-create", + function () { + let tempalte = + "📝 Summary:\n\n[Insert Report Summary Here]\n\n🧍 Hostage: [Name Here]\n\n🔪 Weapons/Items Confiscated:\n\n· [Insert List Here]\n\n-----\n💸 Fine:\n⌚ Sentence:\n-----"; + $("#manage-incidents-title-input").val( + "Name - Charge - " + $(".date").html() + ); + $(".manage-incidents-reports-content").val(tempalte); + + $(".manage-incidents-tags-holder").empty(); + $(".manage-incidents-officers-holder").empty(); + $(".manage-incidents-civilians-holder").empty(); + $(".manage-incidents-evidence-holder").empty(); + $(".manage-incidents-title-holder").empty(); + $(".manage-incidents-title-holder").prepend( + ` +
Manage Incident
+
+
+ ` + ); + $(".manage-incidents-title").css("width", "66%"); + $(".manage-incidents-create").css("margin-right", "0px"); + + $(".incidents-ghost-holder").html(""); + $(".associated-incidents-tags-holder").html(""); + + $(".manage-incidents-editing-title").html( + "You are currently creating a new Incident" + ); + $(".manage-incidents-editing-title").data("id", 0); + + $(".manage-incidents-tags-add-btn").css("pointer-events", "auto"); + $(".manage-incidents-reports-content").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-officers-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-civilians-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-evidence-add-btn").css( + "pointer-events", + "auto" + ); + $(".associated-incidents-tags-add-btn").css( + "pointer-events", + "auto" + ); + } + ); + $(".tags-add-btn").click(function () { + if ($(".manage-profile-citizenid-input").val()) { + if (canInputTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".tags-holder").prepend( + `` + ); + canInputTag = false; + } else if (!canInputTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".tag-input").remove(); + canInputTag = true; + } + } else { + $(this).effect("shake", { times: 2, distance: 2 }, 500); + } + }); + + $(".tags-holder").on("keydown", ".tag-input", function (e) { + if (e.keyCode === 13) { + addTag($(".tag-input").text()); + if ($(".tags-add-btn").hasClass("fa-minus")) { + $(".tags-add-btn").removeClass("fa-minus").addClass("fa-plus"); + } + $(".tag-input").remove(); + } + }); + $(".contextmenu").on("click", ".search-vehicle", function () { + let plate = $(this).data("info"); + fidgetSpinner(".dmv-page-container"); + currentTab = ".dmv-page-container"; + setTimeout(() => { + $(".dmv-search-input").slideDown(250); + $(".dmv-search-input").css("display", "block"); + setTimeout(() => { + $("#dmv-search-input:text").val(plate.toString()); + setTimeout(() => { + var e = jQuery.Event("keydown"); + e.which = 13; // # Some key code value + e.keyCode = 13 + $("#dmv-search-input").trigger(e); + }, 250); + }, 250); + }, 250); + }); + $(".vehs-holder").on("contextmenu", ".veh-tag", function (e) { + let args = [ + { + className: "search-vehicle", + icon: "fas fa-car", + text: "Search Vehicle", + info: $(this).data("plate"), + status: "", + }, + ]; + openContextMenu(e, args); + }); + + $(".contextmenu").on("click", ".make-waypoint", function () { + let coord = $(this).data("info").split("===") + setTimeout(() => { + $.post( + `https://${GetParentResourceName()}/SetHouseLocation`, + JSON.stringify({ + coord: coord, + }) + ); + }, 250); + }); + $(".houses-holder").on("contextmenu", ".white-tag", function (e) { + let args = [ + { + className: "make-waypoint", + icon: "fas fa-map-pin", + text: "Make Waypoint", + info: $(this).data("location"), + status: "", + }, + ]; + openContextMenu(e, args); + }); + $(".gallery-inner-container").on("click", ".gallery-img", function () { + if ($(this).css("filter") == "none") { + $(this).css("filter", "blur(5px)"); + } else { + $(this).css("filter", "none"); + } + }); + $(".contextmenu").on("click", ".expand-image", function () { + expandImage($(this).data("info")); + }); + $(".contextmenu").on("click", ".remove-image", function () { + removeImage($(this).data("info")); + }); + $(".contextmenu").on("click", ".remove-image-incident", function () { + $(".manage-incidents-evidence-holder img") + .filter("[src='" + $(this).data("info") + "']") + .remove(); + }); + $(".gallery-inner-container").on( + "contextmenu", + ".gallery-img", + function (e) { + let args = [ + { + className: "remove-image", + icon: "fas fa-times", + text: "Remove Image", + info: $(this).attr("src"), + status: "", + }, + { + className: "expand-image", + icon: "fas fa-expand", + text: "Expand Image", + info: $(this).attr("src"), + status: $(this).css("filter"), + }, + ]; + openContextMenu(e, args); + } + ); + + $(".licenses-holder").on("contextmenu", ".license-tag", function (e) { + const status = $(this).data("type"); + let type = $(this).html(); + + if (type == "Theory") { + info = "theory"; + } else if (type == "Car") { + info = "drive"; + } else if (type == "Bike") { + info = "drive_bike"; + } else if (type == "Truck") { + info = "drive_truck"; + } else if (type == "Hunting") { + info = "hunting"; + } else if (type == "Pilot") { + info = "pilot"; + } else if (type == "Weapon") { + info = "weapon"; + } else { + info = type; + } + + if ($(this).hasClass("green-tag")) { + openContextMenu(e, [ + { + className: "revoke-licence", + icon: "fas fa-times", + text: "Revoke License", + info: info, + status: status, + }, + ]); + } else if ($(this).hasClass("red-tag")) { + openContextMenu(e, [ + { + className: "give-licence", + icon: "fas fa-check", + text: "Give License", + info: info, + status: status, + }, + ]); + } + }); + + $(".contextmenu").on("click", ".revoke-licence", function () { + // $.post( + // `https://${GetParentResourceName()}/updateLicence`, + // JSON.stringify({ + // cid: $(".manage-profile-citizenid-input").val(), + // type: $(this).data("status"), + // status: "revoke", + // }) + // ); + + const Elem = $(this).data("status"); + $(".license-tag") + .filter(`[data-type="${Elem}"]`) + .removeClass("green-tag") + .addClass("red-tag"); + + onMouseDown(); + }); + + $(".contextmenu").on("click", ".give-licence", function () { + // $.post( + // `https://${GetParentResourceName()}/updateLicence`, + // JSON.stringify({ + // cid: $(".manage-profile-citizenid-input").val(), + // type: $(this).data("status"), + // status: "give", + // }) + // ); + + const Elem = $(this).data("status"); + $(".license-tag") + .filter(`[data-type="${Elem}"]`) + .removeClass("red-tag") + .addClass("green-tag"); + + onMouseDown(); + }); + + $(".profile-title").click(function () { + if (canSearchForProfiles == true) { + if ($(".profile-search-input").css("display") == "none") { + $(".profile-search-input").slideDown(250); + $(".profile-search-input").css("display", "block"); + } else { + $(".profile-search-input").slideUp(250); + setTimeout(() => { + $(".profile-search-input").css("display", "none"); + }, 250); + } + } + }); + + $("#profile-search-input").keydown(async function (e) { + if (e.keyCode === 13 && canSearchForProfiles == true) { + let name = $("#profile-search-input").val(); + if (name != "") { + canSearchForProfiles = false; + $(".profile-items").empty(); + $(".profile-items").prepend( + `
` + ); + + let result = await $.post( + `https://${GetParentResourceName()}/searchProfiles`, + JSON.stringify({ + name: name, + }) + ); + + searchProfilesResults(result); + } + } + }); + + $(".incidents-title").click(function () { + if (canSearchForProfiles == true) { + if ($(".incidents-search-input").css("display") == "none") { + $(".incidents-search-input").slideDown(250); + $(".incidents-search-input").css("display", "block"); + } else { + $(".incidents-search-input").slideUp(250); + setTimeout(() => { + $(".incidents-search-input").css("display", "none"); + }, 250); + } + } + }); + + $("#incidents-search-input").keydown(function (e) { + if (e.keyCode === 13 && canSearchForProfiles == true) { + let incident = $("#incidents-search-input").val(); + if (incident !== "") { + canSearchForProfiles = false; + $.post( + `https://${GetParentResourceName()}/searchIncidents`, + JSON.stringify({ + incident: incident, + }) + ); + $(".incidents-items").empty(); + $(".incidents-items").prepend( + `
` + ); + } + } + }); + + $("#dispatchmsg").keydown(function (e) { + const keyCode = e.which || e.keyCode; + if (keyCode === 13 && !e.shiftKey) { + e.preventDefault(); + const time = new Date(); + $.post( + `https://${GetParentResourceName()}/dispatchMessage`, + JSON.stringify({ + message: $(this).val(), + time: time.getTime(), + }) + ); + $(this).val(""); + } + }); + + $(".incidents-items").on("click", ".incidents-item", function () { + const id = $(this).data("id"); + $.post( + `https://${GetParentResourceName()}/getIncidentData`, + JSON.stringify({ + id: id, + }) + ); + }); + $(".manage-incidents-civilians-holder").on("click", ".manage-incidents-civilians", async function () { + const name = $(this).text(); + fidgetSpinner(".profile-page-container"); + currentTab = ".profile-page-container"; + $(".profile-search-input").slideDown(250); + $(".profile-search-input").css("display", "block"); + $("#profile-search-input:text").val(name); + canSearchForProfiles = false; + let result = await $.post( + `https://${GetParentResourceName()}/searchProfiles`, + JSON.stringify({ + name: name, + }) + ); + + searchProfilesResults(result); + } + ); + document.onkeyup = function (data) { + if (data.which == 27) { + let shouldClose = true; + + if ($(".respond-calls-container").css("display") == "block") { + shouldClose = false; + $(".respond-calls-container").fadeOut(500); + setTimeout(() => { + $(".close-all").css("filter", "none"); + }, 250); + } + + if ($(".gallery-image-enlarged").css("display") == "block") { + shouldClose = false; + $(".gallery-image-enlarged").fadeOut(150); + $(".gallery-image-enlarged").css("display", "none"); + $(".close-all").css("filter", "none"); + } + + if ($(".incidents-image-enlarged").css("display") == "block") { + shouldClose = false; + $(".incidents-image-enlarged").fadeOut(150); + $(".incidents-image-enlarged").css("display", "none"); + } + + if ( + $(".icidents-person-search-container").css("display") != "none" + ) { + shouldClose = false; + $(".icidents-person-search-container").fadeOut(250); + $(".close-all").css("filter", "none"); + } + + if ($(".incidents-charges-table").css("display") != "none") { + shouldClose = false; + $(".incidents-charges-table").slideUp(500); + $(".incidents-charges-table").fadeOut(500); + setTimeout(() => { + $(".close-all").css("filter", "none"); + }, 550); + } + + if ($(".dispatch-attached-units").css("display") != "none") { + shouldClose = false; + $(".dispatch-attached-units").slideUp(500); + $(".dispatch-attached-units").fadeOut(500); + setTimeout(() => { + $(".close-all").css("filter", "none"); + }, 550); + } + + if ($(".impound-form").css("display") != "none") { + shouldClose = false; + $(".impound-form").slideUp(250); + $(".impound-form").fadeOut(250); + setTimeout(() => { + $(".close-all").css("filter", "none"); + }, 550); + } + + if (shouldClose == true) { + $.post(`https://${GetParentResourceName()}/escape`, JSON.stringify({})); + } + } + }; + $(".manage-incidents-tags-add-btn").click(function () { + if ($(".tag-incident-input")[0]) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".tag-incident-input").remove(); + } else { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-incidents-tags-holder").prepend( + `` + ); + } + }); + + $(".icidents-person-search-name-input").on("keydown", "", function (e) { + if (e.keyCode === 13) { + let name = $(".icidents-person-search-name-input").val(); + $.post( + `https://${GetParentResourceName()}/incidentSearchPerson`, + JSON.stringify({ + name: name, + }) + ); + } + }); + $(".manage-incidents-tags-holder").on( + "keydown", + ".tag-incident-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-incidents-tags-holder").prepend( + `
${$( + ".tag-incident-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".manage-incidents-tags-add-btn").hasClass("fa-minus")) { + $(".manage-incidents-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".tag-incident-input").remove(); + } + } + ); + + $(".manage-incidents-officers-add-btn").click(function () { + if ($(".officers-incident-input")[0]) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".officers-incident-input").remove(); + } else { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-incidents-officers-holder").prepend( + `` + ); + } + }); + + $(".manage-incidents-officers-holder").on( + "keydown", + ".officers-incident-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-incidents-officers-holder").prepend( + `
${$( + ".officers-incident-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ( + $(".manage-incidents-officers-add-btn").hasClass("fa-minus") + ) { + $(".manage-incidents-officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".officers-incident-input").remove(); + } + } + ); + + $(".manage-incidents-civilians-add-btn").click(function () { + if ($(".civilians-incident-input")[0]) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".civilians-incident-input").remove(); + } else { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-incidents-civilians-holder").prepend( + `` + ); + } + }); + + $(".manage-incidents-civilians-holder").on( + "keydown", + ".civilians-incident-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-incidents-civilians-holder").prepend( + `
${$( + ".civilians-incident-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ( + $(".manage-incidents-civilians-add-btn").hasClass( + "fa-minus" + ) + ) { + $(".manage-incidents-civilians-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".civilians-incident-input").remove(); + } + } + ); + + $(".manage-incidents-evidence-add-btn").click(function () { + if ($(".incidents-upload-input").css("display") == "none") { + $(".incidents-upload-input").slideDown(250); + $(".incidents-upload-input").css("display", "block"); + $(this).removeClass("fa-plus").addClass("fa-minus"); + } else { + $(".incidents-upload-input").slideUp(250); + setTimeout(() => { + $(".incidents-upload-input").css("display", "none"); + }, 250); + $(this).removeClass("fa-minus").addClass("fa-plus"); + } + }); + + $("#incidents-upload-input").keydown(function (e) { + if (e.keyCode === 13) { + let URL = $("#incidents-upload-input").val(); + let cid = $(".manage-profile-citizenid-input").val(); + if (URL !== "") { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".manage-incidents-evidence-holder").prepend( + `` + ); + $("#incidents-upload-input").val(""); + $(".incidents-upload-input").slideUp(250); + setTimeout(() => { + $(".incidents-upload-input").css("display", "none"); + }, 250); + $(".manage-incidents-evidence-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + } + }); + + $(".manage-incidents-evidence-holder").on( + "click", + ".incidents-img", + function () { + if ($(this).css("filter") == "none") { + $(this).css("filter", "blur(5px)"); + } else { + $(this).css("filter", "none"); + } + } + ); + + $(".manage-bolos-title-holder").on( + "click", + ".manage-bolos-new", + function () { + //if ($(".manage-bolos-editing-title").html() == 'You are currently creating a new BOLO') { + //$(".manage-bolos-new").effect("shake", { times: 2, distance: 2 }, 500) + //} else { + var template = ""; + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + template = + "ICU Room #: [ # ]\n\nReport ID: [ Report ID ]\n\nTime Admitted: [ Date and Time Here ]\n\nSurgery: [Yes/No]\n\nInjuries/Ailments:\n - [ Enter List Of Injuries Here ]\n\n\nAdditional Attending:\n - [ List Any Other Staff Here ]\n\n\n🧑‍🤝‍🧑 Additonal Emergency Contacts:\n - [ Name And Number ]\n\n\nNotes:\n[Additional Notes Here]"; + } + $(".manage-bolos-editing-title").html( + "You are currently creating a new BOLO" + ); + $(".manage-bolos-input-title").val(""); + $(".manage-bolos-input-plate").val(""); + $(".manage-bolos-input-owner").val(""); + $(".manage-bolos-input-individual").val(""); + $(".manage-bolos-reports-content").val(template); + $(".manage-bolos-tags-holder").empty(); + $(".bolo-gallery-inner-container").empty(); + $(".manage-officers-tags-holder").empty(); + + if ($(".manage-bolos-tags-add-btn").hasClass("fa-minus")) { + $(".manage-bolos-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".bolo-gallery-add-btn").hasClass("fa-minus")) { + $(".bolo-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".officers-add-btn").hasClass("fa-minus")) { + $(".officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + + if ($(".bolo-gallery-upload-input").css("display") == "block") { + $(".bolo-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".bolo-gallery-upload-input").css("display", "none"); + }, 250); + } + + canInputTag = true; + canInputBoloTag = true; + canInputBoloOfficerTag = true; + + $(".tag-bolo-input").remove(); + canInputBoloTag = true; + + //} + } + ); + + $(".manage-bolos-title-holder").on( + "click", + ".manage-bolos-save", + function () { + let existing = !( + $(".manage-bolos-editing-title").html() == + "You are currently creating a new BOLO" + ); + let id = $(".manage-bolos-editing-title").data("id"); + let title = $("#bolotitle").val(); + let plate = $("#boloplate").val(); + let owner = $("#boloowner").val(); + let individual = $("#boloindividual").val(); + let detail = $("#bolodetail").val(); + + let tags = new Array(); + let gallery = new Array(); + let officers = new Array(); + + $(".manage-bolos-tags-holder").each(function (index) { + if ($(this).text() != "") { + tags.push($(this).text()); + } + }); + + $(".bolo-gallery-inner-container").each(function (index) { + if ($(this).text() != "") { + gallery.push($(this).text()); + } + }); + + $(".manage-officers-tags-holder").each(function (index) { + if ($(this).text() != "") { + officers.push($(this).text()); + } + }); + + let time = new Date(); + + $.post( + `https://${GetParentResourceName()}/newBolo`, + JSON.stringify({ + existing: existing, + id: id, + title: title, + plate: plate, + owner: owner, + individual: individual, + detail: detail, + tags: tags, + gallery: gallery, + officers: officers, + time: time.getTime(), + }) + ); + } + ); + + $(".manage-incidents-evidence-holder").on( + "contextmenu", + ".incidents-img", + function (e) { + let args = [ + { + className: "remove-image-incident", + icon: "fas fa-times", + text: "Remove Image", + info: $(this).attr("src"), + status: "", + }, + { + className: "expand-image", + icon: "fas fa-expand", + text: "Expand Image", + info: $(this).attr("src"), + status: $(this).css("filter"), + }, + ]; + openContextMenu(e, args); + } + ); + + $(".bolos-search-title").click(function () { + if (canSearchForProfiles == true) { + if ($(".bolos-search-input").css("display") == "none") { + $(".bolos-search-input").slideDown(250); + $(".bolos-search-input").css("display", "block"); + } else { + $(".bolos-search-input").slideUp(250); + setTimeout(() => { + $(".bolos-search-input").css("display", "none"); + }, 250); + } + } + }); + + $("#bolos-search-input").keydown(function (e) { + if (e.keyCode === 13 && canSearchForProfiles == true) { + let searchVal = $("#bolos-search-input").val(); + if (searchVal !== "") { + canSearchForProfiles = false; + $.post( + `https://${GetParentResourceName()}/searchBolos`, + JSON.stringify({ + searchVal: searchVal, + }) + ); + $(".bolos-items").empty(); + $(".bolos-items").prepend(`
`); + } + } + }); + + $(".bolos-search-refresh").click(function () { + if (canRefreshBolo == true) { + canRefreshBolo = false; + $(".bolos-search-refresh").empty(); + $(".bolos-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".bolos-search-refresh").empty(); + $(".bolos-search-refresh").html("Refresh"); + canRefreshBolo = true; + $.post(`https://${GetParentResourceName()}/getAllBolos`, JSON.stringify({})); + }, 1500); + } + }); + + $(".manage-bolos-tags-add-btn").click(function () { + if (canInputBoloTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-bolos-tags-holder").prepend( + `` + ); + canInputBoloTag = false; + } else if (!canInputBoloTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".tag-bolo-input").remove(); + canInputBoloTag = true; + } + }); + + $(".manage-bolos-tags-holder").on( + "keydown", + ".tag-bolo-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-bolos-tags-holder").prepend( + `
${$(".tag-bolo-input").text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".manage-bolos-tags-add-btn").hasClass("fa-minus")) { + $(".manage-bolos-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".tag-bolo-input").remove(); + canInputBoloTag = true; + } + } + ); + + $(".bolo-gallery-add-btn").click(function () { + //if ($(".manage-profile-citizenid-input").val()) { + if ($(".bolo-gallery-upload-input").css("display") == "none") { + $(".bolo-gallery-upload-input").slideDown(250); + $(".bolo-gallery-upload-input").css("display", "block"); + $(this).removeClass("fa-plus").addClass("fa-minus"); + } else { + $(".bolo-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".bolo-gallery-upload-input").css("display", "none"); + }, 250); + $(this).removeClass("fa-minus").addClass("fa-plus"); + } + //} else { + // $(this).effect("shake", { times: 2, distance: 2 }, 500) + // } + }); + + $("#bolo-gallery-upload-input").keydown(function (e) { + if (e.keyCode === 13) { + let URL = $("#bolo-gallery-upload-input").val(); + let cid = $(".manage-profile-citizenid-input").val(); + if (URL !== "") { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".bolo-gallery-inner-container").prepend( + `` + ); + $("#bolo-gallery-upload-input").val(""); + $(".bolo-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".bolo-gallery-upload-input").css("display", "none"); + }, 250); + $(".bolo-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + } + }); + + $(".bolos-items").on("click", ".bolo-item", function () { + if ($(".manage-bolos-tags-add-btn").hasClass("fa-minus")) { + $(".manage-bolos-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".bolo-gallery-add-btn").hasClass("fa-minus")) { + $(".bolo-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".officers-add-btn").hasClass("fa-minus")) { + $(".officers-add-btn").removeClass("fa-minus").addClass("fa-plus"); + } + + if ($(".bolo-gallery-upload-input").css("display") == "block") { + $(".bolo-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".bolo-gallery-upload-input").css("display", "none"); + }, 250); + } + + canInputTag = true; + canInputBoloTag = true; + canInputBoloOfficerTag = true; + let id = $(this).data("id"); + $.post( + `https://${GetParentResourceName()}/getBoloData`, + JSON.stringify({ + id: id, + }) + ); + }); + + $(".contextmenu").on("click", ".bolo-delete", function () { + if ($(this).data("info") != 0) { + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + $(".bolos-items") + .find("[data-id='" + $(this).data("info") + "']") + .remove(); + $.post( + `https://${GetParentResourceName()}/deleteICU`, + JSON.stringify({ + id: $(this).data("info"), + }) + ); + } + $(".bolos-items") + .find("[data-id='" + $(this).data("info") + "']") + .remove(); + $.post( + `https://${GetParentResourceName()}/deleteBolo`, + JSON.stringify({ + id: $(this).data("info"), + }) + ); + } + }); + + $(".bolos-items").on("contextmenu", ".bolo-item", function (e) { + var args = ""; + args = [ + { + className: "bolo-delete", + icon: "fas fa-times", + text: "Delete Bolo", + info: $(this).data("id"), + status: "", + }, + ]; + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + args = [ + { + className: "bolo-delete", + icon: "fas fa-times", + text: "Delete Check-In", + info: $(this).data("id"), + status: "", + }, + ]; + } + openContextMenu(e, args); + }); + $(".incidents-ghost-holder").on( + "contextmenu", + ".associated-incidents-user-holder", + function (e) { + let args = [ + { + className: "add-charge", + icon: "fas fa-check", + text: "Add Charge", + info: $(this).data("name"), + status: "", + }, + ]; + openContextMenu(e, args); + } + ); + $(".contextmenu").on("click", ".add-charge", function () { + let stupidasscid = $(this).data("info"); + $(".incidents-charges-table").slideDown(500); + $(".incidents-charges-table").fadeIn(500); + $("#current-charges-holder").data("cid", $(this).data("info")); + $("#current-charges-holder").html(""); + $(".associated-incidents-user-holder") + .children("div") + .each(function (index) { + if ( + $(".associated-incidents-user-holder") + .children() + .eq(index) + .data("id") == stupidasscid + ) { + const randomNum = Math.ceil( + Math.random() * 1000 + ).toString(); + $("#current-charges-holder").prepend( + `
${$( + ".associated-incidents-user-holder" + ) + .children() + .eq(index) + .html()}
` + ); + } + }); + setTimeout(() => { + $(".close-all").css("filter", "brightness(30%)"); + }, 250); + $.post(`https://${GetParentResourceName()}/getPenalCode`, JSON.stringify({})); + }); + + var shiftPressed = false; + $(document).keydown(function (event) { + shiftPressed = event.keyCode == 16; + }); + $(document).keyup(function (event) { + if (event.keyCode == 16) { + shiftPressed = false; + } + }); + + $(".offenses-main-container").on( + "mousedown", + ".offense-item", + function (e) { + const cid = $("#current-charges-holder").data("cid"); + const newItem = $(this).find(".offense-item-offense").html(); + const Fine = +$(this).data("fine"); + const Sentence = +$(this).data("sentence"); + if (e.which == 1) { + let randomNum = Math.ceil(Math.random() * 1000).toString(); + $(`[data-name="${cid}"]`).prepend( + `
${$( + this + ) + .find(".offense-item-offense") + .html()}
` + ); + $("#current-charges-holder").prepend( + `
${$( + this + ) + .find(".offense-item-offense") + .html()}
` + ); + + const CurrRfine = $(".fine-recommended-amount").val(); + const NewFine = +CurrRfine + +Fine; + $(".fine-recommended-amount").val(NewFine); + const CurrRsentence = $(".sentence-recommended-amount").val(); + const NewSentence = +CurrRsentence + +Sentence; + $(".sentence-recommended-amount").val(NewSentence); + } else if (e.which == 3) { + $(".associated-incidents-user-holder") + .children("div") + .each(function (index) { + if ( + $(".associated-incidents-user-holder") + .children() + .eq(index) + .data("id") == cid + ) { + if ( + $(".associated-incidents-user-holder") + .children() + .eq(index) + .html() == newItem + ) { + const linkedId = $( + ".associated-incidents-user-holder" + ) + .children() + .eq(index) + .data("link"); + //$(".current-charges-tag").filter(`[data-link="${linkedId}"]`).remove() + $(".white-tag") + .filter(`[data-link="${linkedId}"]`) + .remove(); + + var stop = false; + + $("#current-charges-holder") + .children("div") + .each(function (index) { + if (stop == false) { + if ( + $("#current-charges-holder") + .children() + .eq(index) + .html() == newItem + ) { + const linkedId = $( + "#current-charges-holder" + ) + .children() + .eq(index) + .data("link"); + $(".current-charges-tag") + .filter( + `[data-link="${linkedId}"]` + ) + .remove(); + stop = true; + } + } + }); + + const CurrRfine = $( + ".fine-recommended-amount" + ).val(); + const NewFine = +CurrRfine - Fine; + $(".fine-recommended-amount").val(NewFine); + // + const CurrRsentence = $( + ".sentence-recommended-amount" + ).val(); + const NewSentence = +CurrRsentence - +Sentence; + $(".sentence-recommended-amount").val( + NewSentence + ); + + return false; + } + } + }); + } + } + ); + + $(".bolo-gallery-inner-container").on("click", ".bolo-img", function () { + if ($(this).css("filter") == "none") { + $(this).css("filter", "blur(5px)"); + } else { + $(this).css("filter", "none"); + } + }); + $(".contextmenu").on("click", ".bolo-remove-image", function () { + $(".bolo-gallery-inner-container img") + .filter("[src='" + $(this).data("info") + "']") + .remove(); + }); + $(".bolo-gallery-inner-container").on( + "contextmenu", + ".bolo-img", + function (e) { + let args = [ + { + className: "bolo-remove-image", + icon: "fas fa-times", + text: "Remove Image", + info: $(this).attr("src"), + status: "", + }, + { + className: "expand-image", + icon: "fas fa-expand", + text: "Expand Image", + info: $(this).attr("src"), + status: $(this).css("filter"), + }, + ]; + openContextMenu(e, args); + } + ); + + $(".officers-add-btn").click(function () { + if (canInputBoloOfficerTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-officers-tags-holder").prepend( + `` + ); + canInputBoloOfficerTag = false; + } else if (!canInputBoloOfficerTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".officer-tag-bolo-input").remove(); + canInputBoloOfficerTag = true; + } + }); + + $(".manage-officers-tags-holder").on( + "keydown", + ".officer-tag-bolo-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-officers-tags-holder").prepend( + `
${$( + ".officer-tag-bolo-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".officers-add-btn").hasClass("fa-minus")) { + canInputBoloOfficerTag = true; + $(".officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + canInputBoloOfficerTag = true; + $(".officer-tag-bolo-input").remove(); + } + } + ); + $(".incidents-ghost-holder").on( + "click", + ".associated-incidents-user-tag", + function () { + if ($(this).hasClass("red-tag")) { + $(this).removeClass("red-tag"); + $(this).addClass("green-tag"); + if ($(this).text() == "Associated") { + $(".associated-incidents-user-holder") + .filter(`[data-name="${$(this).data("id")}"]`) + .css("display", "none"); + $(".associated-incidents-fine-input") + .filter(`[data-id="${$(this).data("id")}"]`) + .css("display", "none"); + $(".manage-incidents-title-tag") + .filter(`[data-id="${$(this).data("id")}"]`) + .css("display", "none"); + $(".associated-incidents-sentence-input") + .filter(`[data-id="${$(this).data("id")}"]`) + .css("display", "none"); + } + } else { + $(this).removeClass("green-tag"); + $(this).addClass("red-tag"); + if ($(this).text() == "Associated") { + $(".associated-incidents-user-holder") + .filter(`[data-name="${$(this).data("id")}"]`) + .fadeIn(100); + $(".associated-incidents-fine-input") + .filter(`[data-id="${$(this).data("id")}"]`) + .fadeIn(100); + $(".manage-incidents-title-tag") + .filter(`[data-id="${$(this).data("id")}"]`) + .fadeIn(100); + $(".associated-incidents-sentence-input") + .filter(`[data-id="${$(this).data("id")}"]`) + .fadeIn(100); + } + } + } + ); + $(".contextmenu").on( + "click", + ".associated-incidents-remove-tag", + function () { + $( + `.associated-incidents-tag:contains(${$(this).data("info")})` + ).remove(); + $( + `.associated-incidents-user-title:contains(${$(this).data( + "info" + )})` + ) + .parent() + .remove(); + const incidentId = $(".manage-incidents-editing-title").data("id"); + if (incidentId != 0) { + $.post( + `https://${GetParentResourceName()}/removeIncidentCriminal`, + JSON.stringify({ + cid: $(this).data("status"), + incidentId: incidentId, + }) + ); + } + } + ); + $(".associated-incidents-tags-holder").on( + "contextmenu", + ".associated-incidents-tag", + function (e) { + let args = [ + { + className: "associated-incidents-remove-tag", + icon: "fas fa-times", + text: "Remove Tag", + info: $(this).html(), + status: $(this).data("id"), + }, + ]; + openContextMenu(e, args); + } + ); + $(".icidents-person-search-holder").on( + "click", + ".icidents-person-search-item", + function () { + $(".icidents-person-search-container").fadeOut(250); + $(".close-all").css("filter", "none"); + $(".associated-incidents-tags-holder").prepend( + `
${$(this).data("name")}
` + ); + + $(".incidents-ghost-holder").prepend( + ` +
+
${$(this).data( + "info" + )}
+
+
Warrant
+
Guilty
+
Processed
+
Associated
+
+
+
+
Recommended Fine
+
+
Recommended Sentence
+
+
Fine
+
+
Sentence
+
+
+ ` + ); + } + ); + + $(".contextmenu").on("click", ".incidents-remove-tag", function () { + $(`.tag:contains(${$(this).data("info")})`).remove(); + }); + + $(".manage-incidents-tags-holder").on("contextmenu", ".tag", function (e) { + let args = [ + { + className: "incidents-remove-tag", + icon: "fas fa-times", + text: "Remove Tag", + info: $(this).html(), + status: "", + }, + ]; + openContextMenu(e, args); + }); + + $(".contextmenu").on("click", ".incidents-remove-officer-tag", function () { + $( + `.manage-incidents-officers:contains(${$(this).data("info")})` + ).remove(); + }); + + $(".manage-incidents-officers-holder").on( + "contextmenu", + ".manage-incidents-officers", + function (e) { + let args = [ + { + className: "incidents-remove-officer-tag", + icon: "fas fa-times", + text: "Remove Tag", + info: $(this).html(), + status: "", + }, + ]; + openContextMenu(e, args); + } + ); + + $(".contextmenu").on("click", ".incidents-remove-civ-tag", function () { + $( + `.manage-incidents-civilians:contains(${$(this).data("info")})` + ).remove(); + }); + + $(".manage-incidents-civilians-holder").on( + "contextmenu", + ".manage-incidents-civilians", + function (e) { + let args = [ + { + className: "incidents-remove-civ-tag", + icon: "fas fa-times", + text: "Remove Tag", + info: $(this).html(), + status: "", + }, + ]; + openContextMenu(e, args); + } + ); + + $(".incidents-search-refresh").click(function () { + if (canRefreshIncidents == true) { + canRefreshIncidents = false; + $(".incidents-search-refresh").empty(); + $(".incidents-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".incidents-search-refresh").empty(); + $(".incidents-search-refresh").html("Refresh"); + canRefreshIncidents = true; + $.post(`https://${GetParentResourceName()}/getAllIncidents`, JSON.stringify({})); + }, 1500); + } + }); + + $(".contextmenu").on("click", ".incidents-remove-normal-tag", function () { + $(`.tag:contains(${$(this).data("info")})`).remove(); + let cid = $(".manage-profile-citizenid-input").val(); + if (cid) { + $.post( + `https://${GetParentResourceName()}/removeProfileTag`, + JSON.stringify({ + cid: cid, + text: $(this).data("info"), + }) + ); + } + }); + $(".tags-holder").on("contextmenu", ".tag", function (e) { + let args = [ + { + className: "incidents-remove-normal-tag", + icon: "fas fa-times", + text: "Remove Tag", + info: $(this).html(), + status: "", + }, + ]; + openContextMenu(e, args); + }); + $(".reports-search-title").click(function () { + if (canSearchReports == true) { + if ($(".reports-search-input").css("display") == "none") { + $(".reports-search-input").slideDown(250); + $(".reports-search-input").css("display", "block"); + } else { + $(".reports-search-input").slideUp(250); + setTimeout(() => { + $(".reports-search-input").css("display", "none"); + }, 250); + } + } + }); + $(".icidents-person-search-container").hover( + function () { + mouse_is_inside = true; + }, + function () { + mouse_is_inside = false; + } + ); + + $(".reports-search-refresh").click(function () { + if (canRefreshReports == true) { + canRefreshReports = false; + $(".reports-search-refresh").empty(); + $(".reports-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".reports-search-refresh").empty(); + $(".reports-search-refresh").html("Refresh"); + canRefreshReports = true; + $.post(`https://${GetParentResourceName()}/getAllReports`, JSON.stringify({})); + }, 1500); + } + }); + + $(".dispatch-comms-refresh").click(function () { + $(".dispatch-comms-refresh").empty(); + $(".dispatch-comms-refresh").prepend( + `` + ); + setTimeout(() => { + $(".dispatch-comms-refresh").empty(); + $(".dispatch-comms-refresh").html("Refresh"); + canRefreshReports = true; + $.post(`https://${GetParentResourceName()}/refreshDispatchMsgs`, JSON.stringify({})); + }, 1500); + }); + + $(".reports-items").on("click", ".reports-item", function () { + if (currentTab != ".reports-page-container") { + fidgetSpinner(".reports-page-container"); + currentTab = ".reports-page-container"; + } + + if ($(".manage-reports-tags-add-btn").hasClass("fa-minus")) { + $(".manage-reports-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".reports-gallery-add-btn").hasClass("fa-minus")) { + $(".reports-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".reports-officers-add-btn").hasClass("fa-minus")) { + $(".reports-officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + + if ($(".reports-gallery-upload-input").css("display") == "block") { + $(".reports-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".reports-gallery-upload-input").css("display", "none"); + }, 250); + } + + canInputTag = true; + canInputReportTag = true; + canInputReportOfficerTag = true; + let id = $(this).data("id"); + $.post( + `https://${GetParentResourceName()}/getReportData`, + JSON.stringify({ + id: id, + }) + ); + }); + + $(".manage-reports-tags-add-btn").click(function () { + if (canInputReportTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".manage-reports-tags-holder").prepend( + `` + ); + canInputReportTag = false; + } else if (!canInputReportTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".tag-reports-input").remove(); + canInputReportTag = true; + } + }); + + $(".manage-reports-tags-holder").on( + "keydown", + ".tag-reports-input", + function (e) { + if (e.keyCode === 13) { + $(".manage-reports-tags-holder").prepend( + `
${$(".tag-reports-input").text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".manage-reports-tags-add-btn").hasClass("fa-minus")) { + $(".manage-reports-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + $(".tag-reports-input").remove(); + canInputReportTag = true; + } + } + ); + + $(".reports-gallery-add-btn").click(function () { + //if ($(".manage-profile-citizenid-input").val()) { + if ($(".reports-gallery-upload-input").css("display") == "none") { + $(".reports-gallery-upload-input").slideDown(250); + $(".reports-gallery-upload-input").css("display", "block"); + $(this).removeClass("fa-plus").addClass("fa-minus"); + } else { + $(".reports-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".reports-gallery-upload-input").css("display", "none"); + }, 250); + $(this).removeClass("fa-minus").addClass("fa-plus"); + } + //} else { + // $(this).effect("shake", { times: 2, distance: 2 }, 500) + // } + }); + + $("#reports-gallery-upload-input").keydown(function (e) { + if (e.keyCode === 13) { + let URL = $("#reports-gallery-upload-input").val(); + let cid = $(".manage-profile-citizenid-input").val(); + if (URL !== "") { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".reports-gallery-inner-container").prepend( + `` + ); + $("#reports-gallery-upload-input").val(""); + $(".reports-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".reports-gallery-upload-input").css("display", "none"); + }, 250); + $(".reports-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + } + }); + + $(".reports-gallery-inner-container").on( + "click", + ".reports-img", + function () { + if ($(this).css("filter") == "none") { + $(this).css("filter", "blur(5px)"); + } else { + $(this).css("filter", "none"); + } + } + ); + $(".contextmenu").on("click", ".reports-remove-image", function () { + $(".reports-gallery-inner-container img") + .filter("[src='" + $(this).data("info") + "']") + .remove(); + }); + + $(".reports-gallery-inner-container").on( + "contextmenu", + ".reports-img", + function (e) { + let args = [ + { + className: "reports-remove-image", + icon: "fas fa-times", + text: "Remove Image", + info: $(this).attr("src"), + status: "", + }, + { + className: "expand-image", + icon: "fas fa-expand", + text: "Expand Image", + info: $(this).attr("src"), + status: $(this).css("filter"), + }, + ]; + openContextMenu(e, args); + } + ); + + $(".reports-officers-add-btn").click(function () { + if (canInputReportOfficerTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".reports-officers-tags-holder").prepend( + `` + ); + canInputReportOfficerTag = false; + } else if (!canInputReportOfficerTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".officer-tag-reports-input").remove(); + canInputReportOfficerTag = true; + } + }); + + $(".reports-officers-tags-holder").on( + "keydown", + ".officer-tag-reports-input", + function (e) { + if (e.keyCode === 13) { + $(".reports-officers-tags-holder").prepend( + `
${$( + ".officer-tag-reports-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".reports-officers-add-btn").hasClass("fa-minus")) { + canInputReportOfficerTag = true; + $(".reports-officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + canInputReportOfficerTag = true; + $(".officer-tag-reports-input").remove(); + } + } + ); + + $(".reports-civilians-add-btn").click(function () { + if (canInputReportCivilianTag) { + $(this).removeClass("fa-plus").addClass("fa-minus"); + $(".reports-civilians-tags-holder").prepend( + `` + ); + canInputReportCivilianTag = false; + } else if (!canInputReportCivilianTag) { + $(this).removeClass("fa-minus").addClass("fa-plus"); + $(".civilian-tag-reports-input").remove(); + canInputReportCivilianTag = true; + } + }); + + $(".reports-civilians-tags-holder").on( + "keydown", + ".civilian-tag-reports-input", + function (e) { + if (e.keyCode === 13) { + $(".reports-civilians-tags-holder").prepend( + `
${$( + ".civilian-tag-reports-input" + ).text()}
` + ); + // Have it save instantly if it's an existing report. + if ($(".reports-civilians-add-btn").hasClass("fa-minus")) { + canInputReportCivilianTag = true; + $(".reports-civilians-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + canInputReportCivilianTag = true; + $(".civilian-tag-reports-input").remove(); + } + } + ); + + $(".manage-reports-title-holder").on( + "click", + ".manage-reports-new", + function () { + //if ($(".manage-bolos-editing-title").html() == 'You are currently creating a new BOLO') { + //$(".manage-bolos-new").effect("shake", { times: 2, distance: 2 }, 500) + //} else { + let template = ""; + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + template = + "Submitted to ICU?: [Yes/No]\n\nIncident Report:\n[ Brief summary of what happened and who did what while on scene. Note anything that stood out about the scene as well as what was done to treat the patient ]\n\n\nList of Injuries:\n- [ State what injury or injuries occurred ]\n\n\n💉 Surgical Report:\n[ Full report on what was done in surgery, list any complications or anything that was found while in operation. Note who was attending and what they did during the surgery. At the end of the report be sure to note the state of the patient after ]\n\n\nAttending:\n- [ List Any Attending Here ]\n\n\nMedications Applied:\n- [ List Any Attending Here ]\n\n\nNotes:\n[ Additional Notes Here ]"; + } + $(".manage-reports-editing-title").html( + "You are currently creating a new report" + ); + $(".manage-reports-input-title").val(""); + $(".manage-reports-input-type").val(""); + $(".manage-reports-reports-content").val(template); + $(".manage-reports-tags-holder").empty(); + $(".reports-gallery-inner-container").empty(); + $(".reports-officers-tags-holder").empty(); + $(".reports-civilians-tags-holder").empty(); + + if ($(".manage-reports-tags-add-btn").hasClass("fa-minus")) { + $(".manage-reports-tags-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".reports-gallery-add-btn").hasClass("fa-minus")) { + $(".reports-gallery-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + if ($(".officers-add-btn").hasClass("fa-minus")) { + $(".officers-add-btn") + .removeClass("fa-minus") + .addClass("fa-plus"); + } + + if ($(".reports-gallery-upload-input").css("display") == "block") { + $(".reports-gallery-upload-input").slideUp(250); + setTimeout(() => { + $(".reports-gallery-upload-input").css("display", "none"); + }, 250); + } + + canInputTag = true; + canInputReportTag = true; + canInputReportOfficerTag = true; + + $(".tag-reports-input").remove(); + canInputReportTag = true; + + //} + } + ); + + $("#reports-search-input").keydown(function (e) { + if (e.keyCode === 13 && canSearchForReports == true) { + let name = $(this).val(); + if (name !== "") { + canSearchForReports = false; + $.post( + `https://${GetParentResourceName()}/searchReports`, + JSON.stringify({ + name: name, + }) + ); + $(".reports-items").empty(); + $(".reports-items").prepend( + `
` + ); + } + } + }); + + $(".manage-reports-title-holder").on( + "click", + ".manage-reports-save", + function () { + let existing = !( + $(".manage-reports-editing-title").html() == + "You are currently creating a new report" + ); + let id = $(".manage-reports-editing-title").data("id"); + let title = $("#reporttitle").val(); + let type = $("#reporttype").val(); + let details = $("#reportdetail").val(); + let tags = new Array(); + let gallery = new Array(); + let officers = new Array(); + let civilians = new Array(); + + $(".manage-reports-tags-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + tags.push($(this).text()); + } + }); + + $(".reports-gallery-inner-container") + .find("img") + .each(function () { + if ($(this).attr("src") != "") { + gallery.push($(this).attr("src")); + } + }); + + $(".reports-officers-tags-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + officers.push($(this).text()); + } + }); + + $(".reports-civilians-tags-holder") + .find("div") + .each(function () { + if ($(this).text() != "") { + civilians.push($(this).text()); + } + }); + + let time = new Date(); + + $.post( + `https://${GetParentResourceName()}/newReport`, + JSON.stringify({ + existing: existing, + id: id, + title: title, + type: type, + details: details, + tags: tags, + gallery: gallery, + officers: officers, + civilians: civilians, + time: time.getTime(), + }) + ); + } + ); + + $(".dmv-search-title").click(function () { + if (canSearchForVehicles == true) { + if ($(".dmv-search-input").css("display") == "none") { + $(".dmv-search-input").slideDown(250); + $(".dmv-search-input").css("display", "block"); + } else { + $(".dmv-search-input").slideUp(250); + setTimeout(() => { + $(".dmv-search-input").css("display", "none"); + }, 250); + } + } + }); + + $("#dmv-search-input").keydown(async function (e) { + if (e.keyCode === 13 && canSearchForVehicles == true) { + let name = $("#dmv-search-input").val(); + if (name !== "") { + canSearchForVehicles = false; + $(".dmv-items").empty(); + $(".dmv-items").prepend(`
`); + + let result = await $.post( + `https://${GetParentResourceName()}/searchVehicles`, + JSON.stringify({ + name: name, + }) + ); + if (result.length === 0) { + $(".dmv-items").html( + ` +
+ +
+
+
No Vehicles Matching that search
+
+
+
+
+
+ ` + ); + canSearchForVehicles = true; + return true; + } + $(".dmv-items").empty(); + + let vehicleHTML = ""; + + result.forEach((value) => { + let paint = value.color; + let impound = "red-tag"; + let bolo = "red-tag"; + let codefive = "red-tag"; + let stolen = "red-tag"; + + if (value.state == 'Impounded') { + impound = "green-tag"; + } + + if (value.bolo) { + bolo = "green-tag"; + } + + if (value.code) { + codefive = "green-tag"; + } + + if (value.stolen) { + stolen = "green-tag"; + } + + vehicleHTML += ` +
+ +
+
+
${value.model}
+
+
${value.colorName}
+
Impound
+
BOLO
+
Stolen
+
Code 5
+
+
+
+
Plate: ${value.plate} · Owner: ${value.owner}
+
+
+
+ `; + }); + + $(".dmv-items").html(vehicleHTML); + + canSearchForVehicles = true; + + } + } + }); + + $(".dmv-items").on("click", ".dmv-item", function () { + $.post( + `https://${GetParentResourceName()}/getVehicleData`, + JSON.stringify({ + plate: $(this).data("plate"), + }) + ); + }); + + $(".vehicle-information-title-holder").on( + "click", + ".vehicle-information-save", + function () { + if (canSaveVehicle) { + canSaveVehicle = false; + $(".vehicle-information-save").empty(); + $(".vehicle-information-save").prepend( + `` + ); + setTimeout(() => { + $(".vehicle-information-save").empty(); + $(".vehicle-information-save").html("Save"); + canSaveVehicle = true; + }, 750); + setTimeout(() => { + let dbid = $(".vehicle-information-title-holder").data( + "dbid" + ); + let plate = $(".vehicle-info-plate-input").val(); + let notes = $(".vehicle-info-content").val(); + + let imageurl = $(".vehicle-info-image").attr("src"); + let newImageurl = $(".vehicle-info-imageurl-input").val(); + if (newImageurl.includes("base64")) { + imageurl = "img/not-found.jpg"; + } else { + imageurl = newImageurl; + } + + let code5 = false; + let code5tag = $(".vehicle-tags").find(".code5-tag"); + if (code5tag.hasClass("green-tag")) { + code5 = true + } + + let stolen = false; + let stolentag = $(".vehicle-tags").find(".stolen-tag"); + if (stolentag.hasClass("green-tag")) { + stolen = true + } + + let impoundInfo = {} + impoundInfo.impoundActive = $(".vehicle-tags").find(".impound-tag").hasClass("green-tag") + impoundInfo.impoundChanged = impoundChanged + if (impoundChanged === true) { + if (impoundInfo.impoundActive === true) { + impoundInfo.plate = $(".impound-plate").val(); + impoundInfo.linkedreport = $(".impound-linkedreport").val(); + impoundInfo.fee = $(".impound-fee").val(); + impoundInfo.time = $(".impound-time").val(); + } + } + + $.post( + `https://${GetParentResourceName()}/saveVehicleInfo`, + JSON.stringify({ + dbid: dbid, + plate: plate, + imageurl: imageurl, + notes: notes, + stolen: stolen, + code5: code5, + impound: impoundInfo, + }) + ); + + impoundChanged = false; + $(".vehicle-info-image").attr("src", newImageurl); + }, 250); + } + } + ); + + $(".contextmenu").on("click", ".mark-code-5", function () { + let tag = $(".vehicle-tags").find(".code5-tag"); + if (tag.hasClass("red-tag")) { + tag.removeClass("red-tag").addClass("green-tag"); + } + }); + + $(".contextmenu").on("click", ".remove-code-5", function () { + let tag = $(".vehicle-tags").find(".code5-tag"); + if (tag.hasClass("green-tag")) { + tag.removeClass("green-tag").addClass("red-tag"); + } + }); + + $(".vehicle-tags").on("contextmenu", ".code5-tag", function (e) { + let plate = $(".vehicle-info-plate-input").val(); + if (plate) { + let args = []; + if ($(this).hasClass("red-tag")) { + args = [ + { + className: "mark-code-5", + icon: "fas fa-check", + text: "Mark as Code 5", + info: plate, + status: "", + }, + ]; + } else { + args = [ + { + className: "remove-code-5", + icon: "fas fa-times", + text: "Remove Code 5 Status", + info: plate, + status: "", + }, + ]; + } + + openContextMenu(e, args); + } + }); + + $(".contextmenu").on("click", ".mark-stolen", function () { + let tag = $(".vehicle-tags").find(".stolen-tag"); + if (tag.hasClass("red-tag")) { + tag.removeClass("red-tag").addClass("green-tag"); + } + }); + + $(".contextmenu").on("click", ".remove-stolen", function () { + let tag = $(".vehicle-tags").find(".stolen-tag"); + if (tag.hasClass("green-tag")) { + tag.removeClass("green-tag").addClass("red-tag"); + } + }); + + $(".vehicle-tags").on("contextmenu", ".stolen-tag", function (e) { + let plate = $(".vehicle-info-plate-input").val(); + if (plate) { + let args = []; + if ($(this).hasClass("red-tag")) { + args = [ + { + className: "mark-stolen", + icon: "fas fa-check", + text: "Mark as Stolen", + info: plate, + status: "", + }, + ]; + } else { + args = [ + { + className: "remove-stolen", + icon: "fas fa-times", + text: "Remove Code 5 Status", + info: plate, + status: "", + }, + ]; + } + + openContextMenu(e, args); + } + }); + + $(".contextmenu").on("click", ".impound-vehicle", function () { + const plate = $(this).data("info"); + $(".impound-linkedreport").val("").removeAttr("disabled"); + $(".impound-fee").val("").removeAttr("disabled"); + $(".impound-time").val("").removeAttr("disabled"); + $(".impound-fee").css("color", "white"); + $(".impound-cancel").html("Cancel"); + $(".impound-submit").fadeIn(250); + $(".impound-form").slideDown(250); + $(".impound-form").fadeIn(250); + $(".impound-form").data("plate", plate); + $(".impound-plate").val(plate); + }); + + $(".impound-submit").click(function () { + const plate = $(".impound-plate").val(); + const linkedreport = $(".impound-linkedreport").val(); + const fee = $(".impound-fee").val(); + const time = $(".impound-time").val(); + + if (!plate || plate === "") { + $(".impound-form").css("border", "1px solid rgb(184, 3, 3)"); + setTimeout(() => { + $(".impound-form").css( + "border", + "1px solid rgb(168, 168, 168)" + ); + }, 500); + return; + } + + if (!linkedreport || linkedreport === "") { + $(".impound-form").css("border", "1px solid rgb(184, 3, 3)"); + setTimeout(() => { + $(".impound-form").css( + "border", + "1px solid rgb(168, 168, 168)" + ); + }, 500); + return; + } + + if (!fee || fee === "") { + $(".impound-form").css("border", "1px solid rgb(184, 3, 3)"); + setTimeout(() => { + $(".impound-form").css( + "border", + "1px solid rgb(168, 168, 168)" + ); + }, 500); + return; + } + + if (!time || time === "") { + $(".impound-form").css("border", "1px solid rgb(184, 3, 3)"); + setTimeout(() => { + $(".impound-form").css( + "border", + "1px solid rgb(168, 168, 168)" + ); + }, 500); + return; + } + + /* $.post( + `https://${GetParentResourceName()}/impoundVehicle`, + JSON.stringify({ + plate: plate, + linkedreport: linkedreport, + fee: fee, + time: time, + }) + ); */ + + //$(".impound-plate").val(""); + //$(".impound-linkedreport").val(""); + //$(".impound-fee").val(""); + //$(".impound-time").val(""); + //$(".impound-fee").css("color", "white"); + + $(".vehicle-tags").find(".impound-tag").addClass("green-tag").removeClass("red-tag"); + + $(".impound-form").slideUp(250); + $(".impound-form").fadeOut(250); + impoundChanged = true; + }); + + $(".impound-cancel").click(function () { + $(".impound-form").slideUp(250); + $(".impound-form").fadeOut(250); + + $(".impound-plate").val(""); + $(".impound-linkedreport").val(""); + $(".impound-fee").val(""); + $(".impound-time").val(""); + $(".impound-fee").css("color", "white"); + }); + + $(".contextmenu").on("click", ".remove-impound", function () { + const plate = $(this).data("info"); + /* $.post( + `https://${GetParentResourceName()}/removeImpound`, + JSON.stringify({ + plate: plate, + }) + ); */ + $(".impound-plate").val(""); + $(".impound-linkedreport").val(""); + $(".impound-fee").val(""); + $(".impound-time").val(""); + impoundChanged = true; + + $(".vehicle-tags") + .find(".impound-tag") + .addClass("red-tag") + .removeClass("green-tag"); + }); + + $(".contextmenu").on("click", ".status-impound", function () { + const plate = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/statusImpound`, + JSON.stringify({ + plate: plate, + }) + ); + }); + + $(".vehicle-tags").on("contextmenu", ".impound-tag", function (e) { + let plate = $(".vehicle-info-plate-input").val(); + if (plate) { + let args = []; + if ($(this).hasClass("red-tag")) { + args = [ + { + className: "impound-vehicle", + icon: "fas fa-check", + text: "State Impound", + info: plate, + status: "", + }, + ]; + } else { + args = [ + { + className: "remove-impound", + icon: "fas fa-times", + text: "Unimpound Vehicle", + info: plate, + status: "", + }, + { + className: "status-impound", + icon: "fas fa-info-circle", + text: "View Impound Status", + info: plate, + status: "", + }, + ]; + } + openContextMenu(e, args); + } + }); + + $(".contextmenu").on("click", ".view-profile", async function () { + const cid = $(this).data("info"); + fidgetSpinner(".profile-page-container"); + currentTab = ".profile-page-container"; + $(".profile-search-input").slideDown(250); + $(".profile-search-input").css("display", "block"); + $("#profile-search-input:text").val(cid.toString()); + canSearchForProfiles = false; + let result = await $.post( + `https://${GetParentResourceName()}/searchProfiles`, + JSON.stringify({ + name: cid, + }) + ); + + searchProfilesResults(result); + }); + + $(".contextmenu").on("click", ".view-incident", function () { + const incidentId = $(this).data("info"); + fidgetSpinner(".incidents-page-container"); + currentTab = ".incidents-page-container"; + setTimeout(() => { + $(".incidents-search-input").slideDown(250); + $(".incidents-search-input").css("display", "block"); + setTimeout(() => { + $("#incidents-search-input:text").val(incidentId.toString()); + canSearchForProfiles = false; + $.post( + `https://${GetParentResourceName()}/searchIncidents`, + JSON.stringify({ + incident: incidentId.toString(), + }) + ); + $(".incidents-items").empty(); + $(".incidents-items").prepend( + `
` + ); + setTimeout(() => { + $.post( + `https://${GetParentResourceName()}/getIncidentData`, + JSON.stringify({ + id: incidentId.toString(), + }) + ); + }, 250); + }, 250); + }, 250); + }); + + $(".warrants-items").on("contextmenu", ".warrants-item", function (e) { + //let information = $(this).html() + //if (information) { + args = [ + { + className: "view-profile", + icon: "far fa-eye", + text: "View Profile", + info: $(this).data("cid"), + status: "", + }, + { + className: "view-incident", + icon: "fas fa-search", + text: "View Incident", + info: $(this).data("id"), + status: "", + }, + ]; + openContextMenu(e, args); + //} + }); + + $(".contextmenu").on("click", ".toggle-duty", function () { + let info = $(this).data("info"); + let currentStatus = $(`[data-id="${info}"]`) + .find(".unit-status") + .html(); + if (currentStatus == "10-8") { + $(`[data-id="${info}"]`).find(".unit-status").html("10-7"); + $(`[data-id="${info}"]`) + .find(".unit-status") + .removeClass("green-status") + .addClass("yellow-status"); + $.post( + `https://${GetParentResourceName()}/toggleDuty`, + JSON.stringify({ + cid: info, + status: 0, + }) + ); + } else if (currentStatus == "10-7") { + $(`[data-id="${info}"]`).find(".unit-status").html("10-8"); + $(`[data-id="${info}"]`) + .find(".unit-status") + .removeClass("yellow-status") + .addClass("green-status"); + $.post( + `https://${GetParentResourceName()}/toggleDuty`, + JSON.stringify({ + cid: info, + status: 1, + }) + ); + } + }); + + $(".contextmenu").on("click", ".set-callsign", function () { + let info = $(this).data("info"); + $(".callsign-container").fadeIn(0); + $(".callsign-inner-container").slideDown(500); + $(".callsign-inner-container").fadeIn(500); + $(".callsign-container").data("id", info); + }); + + $(".contextmenu").on("click", ".set-radio", function () { + let info = $(this).data("info"); + $(".radio-container").fadeIn(0); + $(".radio-inner-container").slideDown(500); + $(".radio-inner-container").fadeIn(500); + $(".radio-container").data("id", info); + }); + + $(".contextmenu").on("click", ".set-waypoint", function () { + let info = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/setWaypointU`, + JSON.stringify({ + cid: info, + }) + ); + }); + + $(".active-unit-list").on("contextmenu", ".active-unit-item", function (e) { + let cid = $(this).data("id"); + if (cid) { + args = [ + { + className: "toggle-duty", + icon: "fas fa-thumbtack", + text: "Toggle Duty", + info: cid, + status: "", + }, + { + className: "set-callsign", + icon: "far fa-id-badge", + text: "Set Callsign", + info: cid, + status: "", + }, + { + className: "set-radio", + icon: "fas fa-broadcast-tower", + text: "Set Radio", + info: cid, + status: "", + }, + { + className: "set-waypoint", + icon: "fas fa-map-marker-alt", + text: "Set Waypoint", + info: cid, + status: "", + }, + ]; + openContextMenu(e, args); + } + }); + + $(".contextmenu").on("click", ".Set-Waypoint", function () { + const callId = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/setWaypoint`, + JSON.stringify({ + callid: callId, + }) + ); + }); + + $(".contextmenu").on("click", ".call-attach", function () { + const callId = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/callAttach`, + JSON.stringify({ + callid: callId, + }) + ); + }); + + $(".contextmenu").on("click", ".call-detach", function () { + const callId = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/callDetach`, + JSON.stringify({ + callid: callId, + }) + ); + }); + + $(".contextmenu").on("click", ".attached-units", function () { + const callId = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/attachedUnits`, + JSON.stringify({ + callid: callId, + }) + ); + }); + + $("#respondcalls").keydown(function (e) { + const keyCode = e.which || e.keyCode; + if (keyCode === 13 && !e.shiftKey) { + const callid = $(".respond-calls-container").data("id"); + e.preventDefault(); + const time = new Date(); + $.post( + `https://${GetParentResourceName()}/sendCallResponse`, + JSON.stringify({ + message: $(this).val(), + time: time.getTime(), + callid: callid, + }) + ); + $(this).val(""); + } + }); + + $(".contextmenu").on("click", ".respond-call", function () { + const callId = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/getCallResponses`, + JSON.stringify({ + callid: callId, + }) + ); + /**$(".respond-calls").fadeIn(0) + $(".respond-calls-container").fadeIn(250) + $(".close-all").css("filter", "brightness(15%)"); + $("#respondcalls").val("")*/ + }); + + $(".active-calls-list").on( + "contextmenu", + ".active-calls-item", + function (e) { + const callId = $(this).data("id"); + const canRespond = $(this).data("canrespond"); + if (callId) { + if (canRespond == true) { + args = [ + { + className: "respond-call", + icon: "fas fa-reply", + text: "Respond to Call", + info: callId, + status: "", + }, + { + className: "attached-units", + icon: "fas fa-link", + text: "Attached Units", + info: callId, + status: "", + }, + { + className: "call-detach", + icon: "fas fa-sign-out-alt", + text: "Detach", + info: callId, + status: "", + }, + { + className: "call-attach", + icon: "fas fa-sign-in-alt", + text: "Respond", + info: callId, + status: "", + }, + { + className: "Set-Waypoint", + icon: "fas fa-map-marker-alt", + text: "Set Waypoint", + info: callId, + status: "", + }, + ]; + } else if (canRespond == false) { + args = [ + { + className: "attached-units", + icon: "fas fa-link", + text: "Attached Units", + info: callId, + status: "", + }, + { + className: "call-detach", + icon: "fas fa-sign-out-alt", + text: "Detach", + info: callId, + status: "", + }, + { + className: "call-attach", + icon: "fas fa-sign-in-alt", + text: "Respond", + info: callId, + status: "", + }, + { + className: "Set-Waypoint", + icon: "fas fa-map-marker-alt", + text: "Set Waypoint", + info: callId, + status: "", + }, + ]; + } + + openContextMenu(e, args); + } + } + ); + + $(".contextmenu").on("click", ".call-dispatch-detach", function () { + const cid = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/callDispatchDetach`, + JSON.stringify({ + callid: $(".dispatch-attached-units-container").attr("id"), + cid: cid, + }) + ); + $(".dispatch-attached-unit-item").filter(`[data-id="${cid}"]`).remove(); + }); + + $(".contextmenu").on("click", ".Set-Dispatch-Waypoint", function () { + const cid = $(this).data("info"); + $.post( + `https://${GetParentResourceName()}/setDispatchWaypoint`, + JSON.stringify({ + callid: $(".dispatch-attached-units-container").attr("id"), + cid: cid, + }) + ); + }); + + $(".dispatch-attached-units-holder").on( + "contextmenu", + ".dispatch-attached-unit-item", + function (e) { + const cid = $(this).data("id"); + if (cid) { + args = [ + { + className: "set-waypoint", + icon: "fas fa-map-marker-alt", + text: "Set Waypoint", + info: cid, + status: "", + }, + ]; + openContextMenu(e, args); + } + } + ); + + $(".contextmenu").on("click", ".dispatch-reply", function () { + const callsign = $(this).data("info"); + const currVal = $(".dispatch-input").val(); + if (currVal === "") { + $(".dispatch-input").val(callsign + " "); + } else { + $(".dispatch-input").val(currVal + " " + callsign + " "); + } + $(".dispatch-input").focus(); + }); + + $(".dispatch-items").on( + "contextmenu", + ".dispatch-item-message", + function (e) { + const Callsign = $(this).data("author"); + + var mySubString = Callsign.substring( + Callsign.indexOf("(") + 1, + Callsign.lastIndexOf(")") + ); + + args = [ + { + className: "dispatch-reply", + icon: "fas fa-reply", + text: "Reply", + info: mySubString, + status: "", + }, + ]; + openContextMenu(e, args); + } + ); + + $(".callsign-buttons").on("click", ".callsign-cancel", function () { + $(".callsign-inner-container").slideUp(500); + $(".callsign-inner-container").fadeOut(500); + setTimeout(() => { + $(".callsign-container").slideUp(500); + $(".callsign-container").fadeOut(500); + $(".callsign-input").val(""); + }, 500); + }); + + $(".callsign-buttons").on("click", ".callsign-submit", function () { + const callsign = $(".callsign-input").val(); + if (callsign.length > 2) { + let editingcallsign = $(".callsign-container").data("id"); + let name = $(`[data-id="${editingcallsign}"]`) + .find(".unit-name") + .html() + .replace(/\s*(?:\[[^\]]*\]|\([^)]*\))\s*/g, ""); + let newunitname = `(${callsign}) ${name}`; + $(`[data-id="${editingcallsign}"]`) + .find(".unit-name") + .html(newunitname); + $.post( + `https://${GetParentResourceName()}/setCallsign`, + JSON.stringify({ + cid: editingcallsign, + newcallsign: callsign, + }) + ); + + $(".callsign-inner-container").slideUp(500); + $(".callsign-inner-container").fadeOut(500); + setTimeout(() => { + $(".callsign-container").slideUp(500); + $(".callsign-container").fadeOut(500); + $(".callsign-input").val(""); + }, 500); + } + }); + + $(".radio-buttons").on("click", ".radio-cancel", function () { + $(".radio-inner-container").slideUp(500); + $(".radio-inner-container").fadeOut(500); + setTimeout(() => { + $(".radio-container").slideUp(500); + $(".radio-container").fadeOut(500); + $(".radio-input").val(""); + }, 500); + }); + + $(".radio-buttons").on("click", ".radio-submit", function () { + const radio = $(".radio-input").val(); + if (radio.length > 0) { + let editingradio = $(".radio-container").data("id"); + let newunitname = `${radio}`; + $(`[data-id="${editingradio}"]`) + .find(".unit-radio") + .html(newunitname); + $.post( + `https://${GetParentResourceName()}/setRadio`, + JSON.stringify({ + cid: editingradio, + newradio: radio, + }) + ); + + $(".radio-inner-container").slideUp(500); + $(".radio-inner-container").fadeOut(500); + setTimeout(() => { + $(".radio-container").slideUp(500); + $(".radio-container").fadeOut(500); + $(".radio-input").val(""); + }, 500); + } + }); + + var draggedElement = 0; + var dragging = false; + + $(".active-unit-list").on("click", ".active-unit-item", function (e) { + if (dragging) { + $("#draggedItem").css("opacity", 0.0); + document.getElementById("draggedItem").innerHTML = ""; + dragging = false; + } else { + dragging = true; + draggedElement = $(this).data("id"); + let draggedItemHtml = $(this).html(); + document.getElementById("draggedItem").innerHTML = draggedItemHtml; + document.getElementById("draggedItem").style.left = "cursorX-50"; + document.getElementById("draggedItem").style.top = "cursorY-50"; + document.getElementById("draggedItem").style.opacity = "0.5"; + } + }); + + document.onmousemove = handleMouseMove; + + function handleMouseMove(event) { + let dot, eventDoc, doc, body, pageX, pageY; + event = event || window.event; // IE-ism + if (event.pageX == null && event.clientX != null) { + eventDoc = (event.target && event.target.ownerDocument) || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = + event.clientX + + ((doc && doc.scrollLeft) || (body && body.scrollLeft) || 0) - + ((doc && doc.clientLeft) || (body && body.clientLeft) || 0); + event.pageY = + event.clientY + + ((doc && doc.scrollTop) || (body && body.scrollTop) || 0) - + ((doc && doc.clientTop) || (body && body.clientTop) || 0); + } + + if (dragging) { + cursorX = event.pageX; + cursorY = event.pageY; + document.getElementById("draggedItem").style.left = + "" + cursorX - 50 + "px"; + document.getElementById("draggedItem").style.top = + "" + cursorY - 50 + "px"; + } + } + + $(".active-calls-list").on("click", ".active-calls-item", function (e) { + const callId = $(this).data("id"); + $("#draggedItem").css("opacity", 0.0); + document.getElementById("draggedItem").innerHTML = ""; + dragging = false; + if (callId && draggedElement) { + $.post( + `https://${GetParentResourceName()}/callDragAttach`, + JSON.stringify({ + callid: callId, + cid: draggedElement, + }) + ); + draggedElement = 0; + } + }); + + function JobColors(sentJob) { + if (sentJob) { + if (PoliceJobs[sentJob] !== undefined) { + document.documentElement.style.setProperty( + "--color-1", + "#1E3955" + ); + document.documentElement.style.setProperty( + "--color-2", + "#213F5F" + ); + document.documentElement.style.setProperty( + "--color-3", + "#2C537B" + ); + document.documentElement.style.setProperty( + "--color-4", + "#23405E" + ); + document.documentElement.style.setProperty( + "--color-5", + "#152638" + ); + document.documentElement.style.setProperty( + "--color-6", + "#121f2c" + ); + document.documentElement.style.setProperty( + "--color-7", + "rgb(28, 54, 82)" + ); + document.documentElement.style.setProperty( + "--color-8", + "#2554cc" + ); + document.documentElement.style.setProperty( + "--color-9", + "#6E707C" + ); + document.documentElement.style.setProperty( + "--color-10", + "#8f741b" + ); + $(".badge-logo").attr("src", "img/sasp_badge.png"); + $(".header-title").html("SAN ANDREAS STATE POLICE"); + $(".bolo-nav-item").html("BOLOs"); + $(".bolos-search-title").html("Bolos"); + $("#bolos-search-input").attr("placeholder", "Search Bolo..."); + $(".manage-bolos-title").html("Manage Bolo"); + $(".manage-bolos-editing-title").html( + "You are currently creating a new BOLO" + ); + $(".boloplate-title").html("Plate"); + $(".boloowner-title").html("Owner"); + $(".boloindividual-title").html("Individual"); + $("#boloplate").attr("placeholder", "Place plate here..."); + $("#bolodetail").attr( + "placeholder", + "Bolo detail goes here..." + ); + $("#boloowner").attr( + "placeholder", + "Place vehicle owner here..." + ); + $("#boloindividual").attr( + "placeholder", + "Place invidivual here..." + ); + $("#home-warrants-container").fadeIn(0); + $("#home-reports-container").fadeOut(0); + $(".quote-span").html("TUCKER MALD, BEST MALD"); + $(".incidents-nav-item").show(); + $(".bolo-nav-item").show(); + $(".dmv-nav-item").show(); + $(".dispatch-title-ofsomesort").html("Dispatch"); + $(".dispatch-comms-container").fadeIn(0); + $(".manage-profile-name-input-1").attr("readonly", true); + $(".manage-profile-name-input-2").attr("readonly", true); + $("#reports-officers-involved-tag-title").html( + "Officers Involved" + ); + $(".roster-iframe").attr("src", rosterLink); + + $(".manage-profile-save").css("display", "block"); + $(".manage-profile-editing-title").css("display", "block"); + $(".manage-incidents-create").css("display", "block"); + $(".manage-incidents-save").css("display", "block"); + $(".manage-incidents-editing-title").css("display", "block"); + $(".manage-reports-new").css("display", "block"); + $(".manage-reports-save").css("display", "block"); + $(".manage-reports-editing-title").css("display", "block"); + $(".vehicle-information-save").css("display", "block"); + $(".vehicle-information-title").css("margin-right", "0px").css("width", "81%"); + $(".manage-incidents-title ").css("margin-right", "0px") + $(".manage-reports-title").css("margin-right", "0px").css("width", "66%"); + } else if (AmbulanceJobs[sentJob] !== undefined) { + $("#home-warrants-container").fadeOut(0); + $("#home-reports-container").fadeIn(0); + document.documentElement.style.setProperty( + "--color-1", + "#5F2121" + ); + document.documentElement.style.setProperty( + "--color-2", + "#7B2C2C" + ); + document.documentElement.style.setProperty( + "--color-3", + "#4A1C1C" + ); + document.documentElement.style.setProperty( + "--color-4", + "#5E2323" + ); + document.documentElement.style.setProperty( + "--color-5", + "#381515" + ); + document.documentElement.style.setProperty( + "--color-6", + "#2C1212" + ); + document.documentElement.style.setProperty( + "--color-7", + "#521C1C" + ); + document.documentElement.style.setProperty( + "--color-8", + "#CC2525" + ); + document.documentElement.style.setProperty( + "--color-9", + "#8A8D91" + ); + document.documentElement.style.setProperty( + "--color-10", + "#444444" + ); + $(".badge-logo").attr("src", "img/ems_badge.png"); + $(".header-title").html("PILLBOX HILL MEDICAL CENTER"); + $(".quote-span").html( + "The simplest explanation is almost always somebody screwed up." + ); + $(".bolo-nav-item").html("ICU"); + $(".bolos-search-title").html("ICU Check-ins"); + $("#bolos-search-input").attr( + "placeholder", + "Search Check-ins..." + ); + $(".manage-bolos-title").html("Manage ICU Check-in"); + $(".manage-bolos-editing-title").html( + "You are creating a new ICU Check-in" + ); + $(".boloplate-title").html("Estimated Recovery"); + $(".boloowner-title").html("Emergency Contact"); + $(".boloindividual-title").html("Patient"); + $("#boloplate").attr( + "placeholder", + "Enter recovery time here..." + ); + $("#bolodetail").attr( + "placeholder", + "Enter ICU Check-in details here..." + ); + $("#boloowner").attr( + "placeholder", + "Enter emergency contact here..." + ); + $("#boloindividual").attr( + "placeholder", + "Enter patient name and CID here..." + ); + $(".incidents-nav-item").hide(); + $(".dmv-nav-item").hide(); + $("#reports-officers-involved-tag-title").html("EMS Involved"); + $(".dispatch-title-ofsomesort").html("Dispatch"); + $(".dispatch-comms-container").fadeIn(0); + $(".manage-profile-name-input-1").attr("readonly", true); + $(".manage-profile-name-input-2").attr("readonly", true); + $(".roster-iframe").attr("src", rosterLink); + + $(".manage-profile-save").css("display", "block"); + $(".manage-profile-editing-title").css("display", "block"); + $(".manage-incidents-create").css("display", "block"); + $(".manage-incidents-save").css("display", "block"); + $(".manage-incidents-editing-title").css("display", "block"); + $(".manage-reports-new").css("display", "block"); + $(".manage-reports-save").css("display", "block"); + $(".manage-reports-editing-title").css("display", "block"); + $(".vehicle-information-save").css("display", "block"); + $(".vehicle-information-title").css("margin-right", "0px").css("width", "81%"); + $(".manage-incidents-title ").css("margin-right", "0px") + $(".manage-reports-title").css("margin-right", "0px").css("width", "66%"); + } else if (DojJobs[sentJob] !== undefined) { + document.documentElement.style.setProperty( + "--color-1", + "#553a1e" + ); + document.documentElement.style.setProperty( + "--color-2", + "#5f4321" + ); + document.documentElement.style.setProperty( + "--color-3", + "#7b552c" + ); + document.documentElement.style.setProperty( + "--color-4", + "#5e4123" + ); + document.documentElement.style.setProperty( + "--color-5", + "#382815" + ); + document.documentElement.style.setProperty( + "--color-6", + "#2c2312" + ); + document.documentElement.style.setProperty( + "--color-7", + "rgb(82, 60, 28)" + ); + document.documentElement.style.setProperty( + "--color-8", + "#cc9225" + ); + $(".badge-logo").attr("src", "img/court.png"); + $(".header-title").html("DEPARTMENT OF JUSTICE"); + $(".quote-span").html("Actually useless."); + //$(".dmv-nav-item").hide(); + $(".bolo-nav-item").hide(); + $(".dispatch-title-ofsomesort").html("Message Board"); + $(".dispatch-comms-container").fadeOut(0); + $(".manage-profile-name-input-1").attr("readonly", false); + $(".manage-profile-name-input-2").attr("readonly", false); + $("#home-warrants-container").css("height", "98%"); + $(".roster-iframe").attr("src", rosterLink); + + $(".manage-profile-save").css("display", "none"); + $(".manage-profile-editing-title").css("display", "none"); + $(".manage-incidents-create").css("display", "none"); + $(".manage-incidents-title").css("margin-right", "auto"); + $(".manage-incidents-title").css("width", "95%"); + $(".manage-incidents-save").css("display", "none"); + $(".manage-incidents-editing-title").css("display", "none"); + $(".manage-reports-new").css("display", "none"); + $(".manage-reports-save").css("display", "none"); + $(".manage-reports-editing-title").css("display", "none"); + $(".vehicle-information-save").css("display", "none"); + $(".vehicle-information-title").css("margin-right", "auto").css("width", "95%"); + $(".manage-incidents-title ").css("margin-right", "auto") + $(".manage-reports-title").css("margin-right", "auto").css("width", "95%"); + } + } + } +{/*
ID: ${value.id}
*/} + window.addEventListener("message", function (event) { + let eventData = event.data; + $(".dispatch-msg-notif").fadeIn(500); + if (eventData.type == "show") { + if (eventData.enable == true) { + rosterLink = eventData.rosterLink; + playerJob = eventData.job; + JobColors(playerJob); + if (PoliceJobs[playerJob] !== undefined || DojJobs[playerJob] !== undefined) { + $(".manage-profile-licenses-container").removeClass("display_hidden"); + $(".manage-convictions-container").removeClass("display_hidden"); + $(".manage-profile-vehs-container").removeClass("display_hidden"); + $(".manage-profile-houses-container").removeClass("display_hidden"); + } + + /* if (PoliceJobs[playerJob] !== undefined || AmbulanceJobs[playerJob] !== undefined) { + $(".manage-profile-save").css("display", "block"); + $(".manage-profile-editing-title").css("display", "block"); + $(".manage-incidents-create").css("display", "block"); + $(".manage-incidents-save").css("display", "block"); + $(".manage-incidents-editing-title").css("display", "block"); + $(".manage-reports-new").css("display", "block"); + $(".manage-reports-save").css("display", "block"); + $(".manage-reports-editing-title").css("display", "block"); + } else if (DojJobs[playerJob] !== undefined) { + $(".manage-profile-save").css("display", "none"); + $(".manage-profile-editing-title").css("display", "none"); + $(".manage-incidents-create").css("display", "none"); + $(".manage-incidents-save").css("display", "none"); + $(".manage-incidents-editing-title").css("display", "none"); + $(".manage-reports-new").css("display", "none"); + $(".manage-reports-save").css("display", "none"); + $(".manage-reports-editing-title").css("display", "none"); + } */ + + $("body").fadeIn(0); + $(".close-all").css("filter", "none"); + $(".close-all").fadeOut(0); + if (!currentTab) { + currentTab = ".dashboard-page-container"; + } + $(currentTab).slideDown(250); + timeShit(); + } else { + $(".callsign-inner-container").fadeOut(0); + $(".callsign-container").fadeOut(0); + $(".radio-inner-container").fadeOut(0); + $(".radio-container").fadeOut(0); + $(".icidents-person-search-container").fadeOut(0); + $(".dispatch-attached-units").fadeOut(0); + $(".respond-calls").fadeOut(0); + $(".respond-calls-container").fadeOut(0); + $("body").slideUp(250); + $(".close-all").slideUp(250); + } + } else if (eventData.type == "data") { + $(".name-shit").html(eventData.name); + $(".header-location").html(" " + eventData.location); + MyName = eventData.fullname; + + $(".bulletin-items-continer").empty(); + $.each(eventData.bulletin, function (index, value) { + $( + ".bulletin-items-continer" + ).prepend(`
+
${value.title}
+
${value.desc}
+
+
${value.author + } - ${timeAgo(Number(value.time))}
+
+
`); + }); + + let policeCount = 0; + let emsCount = 0; + let dojCount = 0; + let fireCount = 0; + + let activeUnits = eventData.activeUnits; + $(".active-unit-list").html(' '); + let unitListHTML = ''; + + activeUnits = Object.values(activeUnits) + activeUnits.forEach((unit) => { + let status = unit.duty == 1 ? "10-8" : '10-7'; + let statusColor = unit.duty == 1 ? "green-status" : 'yellow-status'; + let radioBack = unit.sig100 ? "#7b2c2c" : "var(--color-3)"; + let radio = unit.radio ? unit.radio : "0"; + let callSign = unit.callSign ? unit.callSign : "000"; + let activeInfoJob = `
UNKNOWN
`; + if (PoliceJobs[playerJob] !== undefined) { + policeCount++; + activeInfoJob = `
LSPD
`; + } else if (AmbulanceJobs[unit.unitType] !== undefined) { + activeInfoJob = `
Ambulance
` + emsCount++; + /* } else if (DojJobs[unit.unitType] !== undefined) { + activeInfoJob = `
FIRE
` + fireCount++; */ + } else if (DojJobs[unit.unitType] !== undefined) { + activeInfoJob = `
DOJ
` + dojCount++; + } + + unitListHTML += ` +
+
${status}
+ ${activeInfoJob} +
(${callSign}) ${unit.firstName} ${unit.lastName}
+
${radio}
+
+ `; + }); + + $(".active-unit-list").html(unitListHTML) + + + $("#police-count").html(policeCount); + $("#ems-count").html(emsCount); + $("#doj-count").html(dojCount); + $("#fire-count").html(fireCount); + /* } else if (eventData.type == "bulletin") { + $(".bulletin-items-continer").empty(); + $.each(eventData.data, function (index, value) { + $( + ".bulletin-items-continer" + ).prepend(`
+
${value.title}
+
${value.desc}
+
+
ID: ${value.id}
+
${value.author + } - ${timeAgo(Number(value.time))}
+
+
`); + }); */ + } else if (eventData.type == "newBulletin") { + const value = eventData.data; + $(".bulletin-items-continer") + .prepend(`
+
${value.title}
+
${value.info}
+
+
ID: ${value.id}
+
${value.author} - ${timeAgo( + Number(value.time) + )}
+
+
`); + } else if (eventData.type == "deleteBulletin") { + $(".bulletin-items-continer") + .find("[data-id='" + eventData.data + "']") + .remove(); + } else if (eventData.type == "warrants") { + $(".warrants-items").empty(); + $.each(eventData.data, function (index, value) { + $('.warrants-items').prepend(`
+
+
${value.name}
+
+
+
Incident ID: ${value.linkedincident}
+
+
`) + }) + } else if (eventData.type == "dispatchmessages") { + const table = eventData.data; + LastName = ""; + DispatchNum = 0; + $(".dispatch-items").empty(); + $.each(table, function (index, value) { + DispatchNum = DispatchNum + 1; + if (LastName == value.name) { + $(".dispatch-items").append(` +
+
${value.message}
+
+ `); + } else { + if (DispatchNum == 1) { + $(".dispatch-items") + .append(`
+ +
+
${value.name + } ${timeAgo( + Number(value.time) + )}
+
${value.message}
+
+
`); + } else { + $(".dispatch-items") + .append(`
+ +
+
${value.name + } ${timeAgo( + Number(value.time) + )}
+
${value.message}
+
+
`); + } + } + LastName = value.name; + $(".dispatch-items").scrollTop( + $(".dispatch-items")[0].scrollHeight + ); + }); + $(".dispatch-items").scrollTop( + $(".dispatch-items")[0].scrollHeight + ); + } else if (eventData.type == "dispatchmessage") { + const value = eventData.data; + DispatchNum = DispatchNum + 1; + const BodyDisplay = $("body").css("display"); + if (BodyDisplay == "block") { + if (LastName == value.name) { + $(".dispatch-items").append(` +
+
${value.message}
+
+ `); + } else { + if (DispatchNum == 1) { + $(".dispatch-items") + .append(`
+ +
+
${value.name + } ${timeAgo( + Number(value.time) + )}
+
${value.message}
+
+
`); + } else { + $(".dispatch-items") + .append(`
+ +
+
${value.name + } ${timeAgo( + Number(value.time) + )}
+
${value.message}
+
+
`); + } + } + LastName = value.name; + } else if (BodyDisplay == "none") { + $.post( + `https://${GetParentResourceName()}/dispatchNotif`, + JSON.stringify({ + data: value, + }) + ); + } + $(".dispatch-items").scrollTop( + $(".dispatch-items")[0].scrollHeight + ); + } else if (eventData.type == "call") { + const value = eventData.data; + if (value) { + const prio = value["priority"]; + let DispatchItem = `
#${value.callId}
${value.dispatchCode}
${value.dispatchMessage}
${value.units.length}
`; + + if ( + value.dispatchCode == "911" || + value.dispatchCode == "311" + ) { + DispatchItem = `
#${value.callId}
${value.dispatchCode}
${value.dispatchMessage}
${value.units.length}
`; + } + + if (value["time"]) { + DispatchItem += `
${timeAgo( + value.time + )}
`; + } + + if (value["firstStreet"]) { + DispatchItem += `
${value.firstStreet}
`; + } + + if (value["heading"]) { + DispatchItem += `
${value.heading}
`; + } + + if (value["gender"]) { + let gender = "Male"; + if (value["gender"] == 0 || value["gender"] == 2) { + gender = "Female"; + } + DispatchItem += `
${gender}
`; + } + + if (value["model"] && value["plate"]) { + DispatchItem += `
${value["model"]}${value["plate"]}
`; + } else if (value["plate"]) { + DispatchItem += `
${value["plate"]}
`; + } else if (value["model"]) { + DispatchItem += `
${value["model"]}
`; + } + + if (value["firstColor"]) { + DispatchItem += `
${value["firstColor"]}
`; + } + + if (value["automaticGunfire"] == true) { + DispatchItem += `
Automatic Gunfire
`; + } + + if (value["name"] && value["number"]) { + DispatchItem += `
${value["name"]}${value["number"]}
`; + } else if (value["number"]) { + DispatchItem += `
${value["number"]}
`; + } else if (value["name"]) { + DispatchItem += `
${value["name"]}
`; + } + + if (value["information"]) { + DispatchItem += `
${value["information"]}
`; + } + + DispatchItem += `
`; + $(".active-calls-list").prepend( + $(DispatchItem).hide().fadeIn("slow") + ); + } + } else if (eventData.type == "attachedUnits") { + const table = eventData.data; + if (table) { + $(".dispatch-attached-units").fadeIn(0); + $(".dispatch-attached-units-container").fadeIn(250); + $(".close-all").css("filter", "brightness(15%)"); + $(".dispatch-attached-units-holder").empty(); + $.each(table, function (index, value) { + $( + ".dispatch-attached-units-holder" + ).prepend(`
+
${value.job}
+
(${value.callsign}) ${value.fullname}
+
1
+
`); + }); + setTimeout(() => { + $(".dispatch-attached-units-container").attr( + "id", + eventData.callid + ); + }, 1000); + } + } else if (eventData.type == "sendCallResponse") { + if ($(".respond-calls-container").data("id") == eventData.callid) { + $(".respond-calls-responses").prepend( + `
${eventData["name"] + } responded "${eventData["message"]}" - ${timeAgo( + Number(eventData.time) + )}.
` + ); + } + } else if (eventData.type == "getCallResponses") { + const table = eventData.data; + $(".respond-calls").fadeIn(0); + $(".respond-calls-container").fadeIn(250); + $(".close-all").css("filter", "brightness(15%)"); + $("#respondcalls").val(""); + $(".respond-calls-responses").empty(); + setTimeout(() => { + $(".respond-calls-container").data("id", eventData.callid); + }, 1000); + $.each(table, function (index, value) { + $(".respond-calls-responses").prepend( + `
${value["name"] + } responded "${value["message"]}" - ${timeAgo( + Number(value.time) + )}.
` + ); + }); + } else if (eventData.type == "calls") { + const table = eventData.data; + $(".active-calls-list").empty(); + $.each(table, function (index, value) { + if (value) { + const prio = value["priority"]; + let DispatchItem = `
#${value.callId}
${value.dispatchCode}
${value.dispatchMessage}
${value.units.length}
`; + + if ( + value.dispatchCode == "911" || + value.dispatchCode == "311" + ) { + DispatchItem = `
#${value.callId}
${value.dispatchCode}
${value.dispatchMessage}
${value.units.length}
`; + } + + if (value["time"]) { + DispatchItem += `
${timeAgo( + value.time + )}
`; + } + + if (value["firstStreet"]) { + DispatchItem += `
${value.firstStreet}
`; + } + + if (value["heading"]) { + DispatchItem += `
${value.heading}
`; + } + + if (value["gender"]) { + let gender = "Male"; + if (value["gender"] == 0 || value["gender"] == 2) { + gender = "Female"; + } + DispatchItem += `
${gender}
`; + } + + if (value["model"] && value["plate"]) { + DispatchItem += `
${value["model"]}${value["plate"]}
`; + } else if (value["plate"]) { + DispatchItem += `
${value["plate"]}
`; + } else if (value["model"]) { + DispatchItem += `
${value["model"]}
`; + } + + if (value["firstColor"]) { + DispatchItem += `
${value["firstColor"]}
`; + } + + if (value["automaticGunfire"] == true) { + DispatchItem += `
Automatic Gunfire
`; + } + + if (value["name"] && value["number"]) { + DispatchItem += `
${value["name"]}${value["number"]}
`; + } else if (value["number"]) { + DispatchItem += `
${value["number"]}
`; + } else if (value["name"]) { + DispatchItem += `
${value["name"]}
`; + } + + if (value["information"]) { + DispatchItem += `
${value["information"]}
`; + } + + DispatchItem += `
`; + $(".active-calls-list").prepend( + $(DispatchItem).hide().fadeIn("slow") + ); + } + }); + } else if (eventData.type == "incidents") { + let table = eventData.data; + canSearchForProfiles = true; + $(".incidents-items").empty(); + $.each(table, function (index, value) { + $(".incidents-items").append( + `
+
+
${value.title}
+
Incident Report
+
+
+
ID: ${value.id}
+
${value.author + } - ${timeAgo(Number(value.time))}
+
+
` + ); + }); + } else if (eventData.type == "getPenalCode") { + const titles = eventData.titles; + const penalcode = eventData.penalcode; + $(".offenses-main-container").empty(); + $.each(titles, function (index, value) { + $(".offenses-main-container").append( + `
+
${value}
+
+
+
+ ` + ); + }); + $.each(penalcode, function (index, value) { + $.each(value, function (i, v) { + $(`#penal-${index}`).append(` +
+
+
${v.title}
+
${v.class}
+
+
+
${v.id}
+
${v.months} Months - $${v.fine}
+
+ `); + }); + }); + } else if (eventData.type == "incidentData") { + let table = eventData.data; + + $(".incidents-ghost-holder").html(""); + $(".associated-incidents-tags-holder").html(""); + + $(".manage-incidents-editing-title").html( + "You are currently editing incident " + table["id"] + ); + $(".manage-incidents-editing-title").data( + "id", + Number(table["id"]) + ); + + $(".manage-incidents-tags-add-btn").css("pointer-events", "auto"); + $(".manage-incidents-reports-content").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-officers-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-civilians-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-evidence-add-btn").css( + "pointer-events", + "auto" + ); + $(".associated-incidents-tags-add-btn").css( + "pointer-events", + "auto" + ); + + $("#manage-incidents-title-input").val(table["title"]); + $(".manage-incidents-reports-content").val(table["details"]); + + $(".manage-incidents-tags-holder").empty(); + $.each(table["tags"], function (index, value) { + $(".manage-incidents-tags-holder").append( + `
${value}
` + ); + }); + + $(".manage-incidents-officers-holder").empty(); + $.each(table["officersinvolved"], function (index, value) { + $(".manage-incidents-officers-holder").append( + `
${value}
` + ); + }); + + $(".manage-incidents-civilians-holder").empty(); + $.each(table["civsinvolved"], function (index, value) { + $(".manage-incidents-civilians-holder").append( + `
${value}
` + ); + }); + + $(".manage-incidents-evidence-holder").empty(); + $.each(table["evidence"], function (index, value) { + $(".manage-incidents-evidence-holder").append( + `` + ); + }); + + $(".manage-incidents-title-holder").empty(); + if (PoliceJobs[playerJob] !== undefined || AmbulanceJobs[playerJob] !== undefined) { + $(".manage-incidents-title-holder").prepend( + ` +
Manage Incident
+
+
+ ` + ); + $(".manage-incidents-title").css("width", "66%"); + $(".manage-incidents-create").css("margin-right", "0px"); + } else if (DojJobs[playerJob] !== undefined) { + $(".manage-incidents-title-holder").prepend( + ` +
Manage Incident
+ ` + ); + $(".manage-incidents-title").css("width", "95%"); + } + + let associateddata = eventData.convictions; + $.each(associateddata, function (index, value) { + $(".associated-incidents-tags-holder").prepend( + `
${value.name}
` + ); + + var warrantTag = "red-tag"; + var guiltyTag = "red-tag"; + var processedTag = "red-tag"; + var associatedTag = "red-tag"; + + if (value.warrant == 1) { + warrantTag = "green-tag"; + } + if (value.guilty == 1) { + guiltyTag = "green-tag"; + } + if (value.processed == 1) { + processedTag = "green-tag"; + } + if (value.associated == 1) { + associatedTag = "green-tag"; + } + + const cid = value.cid; + + if (value.associated == 1) { + $(".incidents-ghost-holder").prepend( + `
+
${value.name} (#${value.cid})
+
+
Warrant
+
Guilty
+
Processed
+
Associated
+
+ + + + + + + + + +
` + ); + } else { + $(".incidents-ghost-holder").prepend( + `
+
${value.name} (#${value.cid})
+
+
Warrant
+
Guilty
+
Processed
+
Associated
+
+
+
+
Recommended Fine
+
+
Recommended Sentence
+
+
Fine
+
+
Sentence
+
+
` + ); + } + + $(".fine-amount") + .filter("[data-id='" + value.cid + "']") + .val(value.fine); + + $(".sentence-amount") + .filter("[data-id='" + value.cid + "']") + .val(value.sentence); + + $(".fine-recommended-amount") + .filter("[data-id='" + value.cid + "']") + .val(value.recfine); + + $(".sentence-recommended-amount") + .filter("[data-id='" + value.cid + "']") + .val(value.recsentence); + + const charges = value["charges"]; + for (var i = 0; i < charges.length; i++) { + const randomNum = Math.ceil( + Math.random() * 1000 + ).toString(); + $(`[data-name="${cid}"]`).prepend( + `
${charges[i]}
` + ); + } + }); + } else if (eventData.type == "incidentSearchPerson") { + let table = eventData.data; + $(".icidents-person-search-holder").empty(); + $.each(table, function (index, value) { + let name = value.firstname + " " + value.lastname; + $(".icidents-person-search-holder").prepend( + ` +
+ +
+
Citizen ID
+
${value.id}
+
Name
+
${name}
+
+
+ ` + ); + }); + } else if (eventData.type == "boloData") { + let table = eventData.data; + $(".manage-bolos-editing-title").html( + "You are currently editing BOLO " + table["id"] + ); + + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + $(".manage-bolos-editing-title").html( + "You are editing ICU Check-in " + table["id"] + ); + } + + $(".manage-bolos-editing-title").data("id", Number(table["id"])); + + $(".manage-bolos-input-title").val(table["title"]); + $(".manage-bolos-input-plate").val(table["plate"]); + $(".manage-bolos-input-owner").val(table["owner"]); + $(".manage-bolos-input-individual").val(table["individual"]); + + $(".manage-bolos-reports-content").val(table["detail"]); + + $(".manage-bolos-tags-holder").empty(); + $.each(table["tags"], function (index, value) { + $(".manage-bolos-tags-holder").prepend( + `
${value}
` + ); + }); + + $(".bolo-gallery-inner-container").empty(); + $.each(table["gallery"], function (index, value) { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".bolo-gallery-inner-container").prepend( + `` + ); + }); + + $(".manage-officers-tags-holder").empty(); + $.each(table["officersinvolved"], function (index, value) { + $(".manage-officers-tags-holder").prepend( + `
${value}
` + ); + }); + } else if (eventData.type == "bolos") { + let table = eventData.data; + var reportName = "General BOLO"; + canSearchForProfiles = true; + $(".bolos-items").empty(); + if ($(".badge-logo").attr("src") == "img/ems_badge.png") { + reportName = "ICU Check-in"; + } + $.each(table, function (index, value) { + $(".bolos-items").prepend( + `
+
+
${value.title}
+
${reportName}
+
+
+
ID: ${value.id}
+
${value.author + } - ${timeAgo(Number(value.time))}
+
+
` + ); + }); + } else if (eventData.type == "boloComplete") { + let id = eventData.data; + if (canRefreshBolo == true) { + canRefreshBolo = false; + $(".bolos-search-refresh").empty(); + $(".bolos-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".bolos-search-refresh").empty(); + $(".bolos-search-refresh").html("Refresh"); + canRefreshBolo = true; + $.post(`https://${GetParentResourceName()}/getAllBolos`, JSON.stringify({})); + }, 1500); + } + $(".manage-bolos-editing-title").html( + "You are currently editing BOLO " + id + ); + $(".manage-bolos-editing-title").data("id", Number(id)); + } else if (eventData.type == "reportComplete") { + let id = eventData.data; + if (canRefreshReports == true) { + canRefreshReports = false; + $(".reports-search-refresh").empty(); + $(".reports-search-refresh").prepend( + `` + ); + setTimeout(() => { + $(".reports-search-refresh").empty(); + $(".reports-search-refresh").html("Refresh"); + canRefreshReports = true; + $.post(`https://${GetParentResourceName()}/getAllReports`, JSON.stringify({})); + }, 1500); + } + $(".manage-reports-editing-title").html( + "You are currently editing report " + id + ); + $(".manage-reports-editing-title").data("id", Number(id)); + } else if (eventData.type == "reports") { + let table = eventData.data; + canSearchForReports = true; + $(".reports-items").empty(); + $.each(table, function (index, value) { + $(".reports-items").append( + `
+
+
${value.title}
+
${value.type + } Report
+
+
+
ID: ${value.id}
+
${value.author + } - ${timeAgo(Number(value.time))}
+
+
` + ); + }); + } else if (eventData.type == "reportData") { + let table = eventData.data; + + $(".manage-reports-editing-title").html( + "You are currently editing report " + table["id"] + ); + + $(".manage-reports-editing-title").data("id", Number(table["id"])); + + $(".manage-reports-input-title").val(table["title"]); + $(".manage-reports-input-type").val(table["type"]); + $(".manage-reports-reports-content").val(table["details"]); + + $(".manage-reports-tags-holder").empty(); + $.each(table["tags"], function (index, value) { + $(".manage-reports-tags-holder").append( + `
${value}
` + ); + }); + + $(".reports-gallery-inner-container").empty(); + $.each(table["gallery"], function (index, value) { + let randomNum = Math.ceil(Math.random() * 10).toString(); + $(".reports-gallery-inner-container").append( + `` + ); + }); + + $(".reports-officers-tags-holder").empty(); + $.each(table["officersinvolved"], function (index, value) { + $(".reports-officers-tags-holder").append( + `
${value}
` + ); + }); + } else if (eventData.type == "searchedVehicles") { + + } else if (eventData.type == "getVehicleData") { + impoundChanged = false; + let table = eventData.data; + + $(".vehicle-information-title-holder").data( + "dbid", + Number(table["dbid"]) + ); + + $(".vehicle-info-plate-input").val(table["plate"]); + $(".vehicle-info-owner-input").val(table["name"]); + $(".vehicle-info-class-input").val(table["class"]); + $(".vehicle-info-model-input").val(table["model"]); + $(".vehicle-info-imageurl-input").val(table["image"]); + + $(".vehicle-info-content").val(table["information"]); + + $(".vehicle-tags").empty(); + $(".vehicle-info-image").attr("src", table["image"]); + $(".vehicle-tags").prepend( + `
${table.colorName}
` + ); + + let impound = "red-tag"; + let bolo = "red-tag"; + let codefive = "red-tag"; + let stolen = "red-tag"; + + if (table.impound) { + impound = "green-tag"; + } + + if (table.bolo) { + bolo = "green-tag"; + } + + if (table.code) { + codefive = "green-tag"; + } + + if (table.stolen) { + stolen = "green-tag"; + } + + $(".vehicle-tags").append( + `
Impound
` + ); + $(".vehicle-tags").append( + `
BOLO
` + ); + $(".vehicle-tags").append( + `
Code 5
` + ); + $(".vehicle-tags").append( + `
Stolen
` + ); + $(".vehicle-info-imageurl-input").val(table["image"]); + } else if (eventData.type == "updateVehicleDbId") { + $(".vehicle-information-title-holder").data("dbid", Number(eventData.data)); + } else if (eventData.type == "updateIncidentDbId") { + $(".manage-incidents-editing-title").data("id", Number(eventData.data)); + + $(".manage-incidents-tags-add-btn").css("pointer-events", "auto"); + $(".manage-incidents-reports-content").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-officers-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-civilians-add-btn").css( + "pointer-events", + "auto" + ); + $(".manage-incidents-evidence-add-btn").css( + "pointer-events", + "auto" + ); + $(".associated-incidents-tags-add-btn").css( + "pointer-events", + "auto" + ); + } else if (eventData.type == "callDetach") { + $(".active-calls-item") + .filter("[data-id='" + eventData.callid + "']") + .children() + .children() + .find(".call-radio") + .html(eventData.data); + } else if (eventData.type == "callAttach") { + $(".active-calls-item") + .filter("[data-id='" + eventData.callid + "']") + .children() + .children() + .find(".call-radio") + .html(eventData.data); + } else if (eventData.type == "getAllLogs") { + let table = eventData.data; + $(".stafflogs-container").empty(); + $.each(table, function (index, value) { + $(".stafflogs-container").append( + `

• ${value.text + } (${timeAgo( + Number(value.time) + )})

` + ); + }); + } else if (eventData.type == "statusImpound") { + const table = eventData.data; + const plate = eventData.plate; + const linkedreport = table["linkedreport"]; + const fee = table["fee"]; + const time = table["time"] * 1000; + + let localDate = new Date(time); + const impoundDate = localDate.toLocaleDateString("en-US", { + timeZone: "UTC", + }); + const impoundTime = localDate.toLocaleTimeString("en-US", { + timeZone: "UTC", + }); + + $(".impound-plate").val(plate).attr("disabled", "disabled"); + $(".impound-linkedreport") + .val(linkedreport) + .attr("disabled", "disabled"); + $(".impound-fee") + .val("$" + fee) + .attr("disabled", "disabled"); + + if (table.paid === 1) { + $(".impound-fee").css("color", "green"); + } else { + $(".impound-fee").css("color", "red"); + } + + $(".impound-time") + .val(impoundDate + " - " + impoundTime) + .attr("disabled", "disabled"); + $(".impound-cancel").html("Close"); + $(".impound-submit").fadeOut(250); + $(".impound-form").slideDown(250); + $(".impound-form").fadeIn(250); + } else if (eventData.type == "greenImpound") { + $(".vehicle-tags") + .find(".impound-tag") + .addClass("green-tag") + .removeClass("red-tag"); + } else if (eventData.type == "redImpound") { + $(".vehicle-tags") + .find(".impound-tag") + .removeClass("green-tag") + .addClass("red-tag"); + } + }); +}); + +function fidgetSpinner(page) { + $(".close-all").fadeOut(0); + $(".container-load").fadeIn(0); + if (page == ".dashboard-page-container"){ + $.post(`https://${GetParentResourceName()}/getAllDashboardData`, JSON.stringify({})); + } + if (page == ".bolos-page-container") { + $.post(`https://${GetParentResourceName()}/getAllBolos`, JSON.stringify({})); + } + if (page == ".reports-page-container") { + $.post(`https://${GetParentResourceName()}/getAllReports`, JSON.stringify({})); + } + if (page == ".stafflogs-page-container") { + $.post(`https://${GetParentResourceName()}/getAllLogs`, JSON.stringify({})); + } + if (page == ".incidents-page-container") { + $.post(`https://${GetParentResourceName()}/getAllIncidents`, JSON.stringify({})); + } + setTimeout(() => { + $(".container-load").fadeOut(0); + $(page).fadeIn(0); + }, 1250); +} + +function timeShit() { + let localDate = new Date(); + const myTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone + date = localDate.toLocaleDateString("en-US", { + timeZone: myTimeZone, + }); + time = localDate.toLocaleTimeString("en-US", { + timeZone: myTimeZone, + }); + $(".date").html(date); + $(".time").html(time); +} + +setInterval(timeShit, 1000); + +function addTag(tagInput) { + $(".tags-holder").prepend(`
${tagInput}
`); + + $.post( + `https://${GetParentResourceName()}/newTag`, + JSON.stringify({ + id: $(".manage-profile-citizenid-input").val(), + tag: tagInput, + }) + ); +} + +// Context menu + +var menu = document.querySelector(".contextmenu"); + +function showMenu(x, y) { + $(".contextmenu").css("left", x + "px"); + $(".contextmenu").css("top", y + "px"); + $(".contextmenu").addClass("contextmenu-show"); +} + +function hideMenu() { + $(".contextmenu").removeClass("contextmenu-show"); +} + +function onMouseDown(e) { + hideMenu(); + document.removeEventListener("mouseup", onMouseDown); +} + +function openContextMenu(e, args) { + e.preventDefault(); + showMenu(e.pageX, e.pageY); + $(".contextmenu").empty(); + $.each(args, function (index, value) { + if (value.status !== "blur(5px)") { + $(".contextmenu").prepend( + ` +
  • + + + ${value.text} + +
  • + ` + ); + } + }); + document.addEventListener("mouseup", onMouseDown); +} + +function expandImage(url) { + $(".close-all").css("filter", "brightness(35%)"); + $(".gallery-image-enlarged").fadeIn(150); + $(".gallery-image-enlarged").css("display", "block"); + $(".gallery-image-enlarged").attr("src", url); +} + +function removeImage(url) { + let cid = $(".manage-profile-citizenid-input").val(); + $(".gallery-inner-container img") + .filter("[src='" + url + "']") + .remove(); +} + +function hideIcidentsMenu() { + if ( + $(".icidents-person-search-container").css("display") != "none" && + !mouse_is_inside + ) { + $(".icidents-person-search-container").fadeOut(250); + $(".close-all").css("filter", "none"); + } +} + +function onMouseDownIcidents(e) { + hideIcidentsMenu(); + document.removeEventListener("mouseup", onMouseDownIcidents); +} + +function titleCase(str) { + return str + .split(' ') + .map((word) => word[0].toUpperCase() + word.slice(1).toLowerCase()) + .join(' '); +} + +function searchProfilesResults(result) { + canSearchForProfiles = true; + $(".profile-items").empty(); + + if (result.length < 1) { + $(".profile-items").html( + ` +
    + +
    +
    +
    No Users Matching that search
    +
    +
    +
    +
    +
    + ` + ); + return true; + } + + let profileHTML = ""; + + result.forEach((value) => { + let charinfo = value.charinfo; + let metadata = value.licences; + + if (typeof value.charinfo == "string") { + charinfo = JSON.parse(charinfo); + } + + if (typeof value.metadata == "string") { + metadata = JSON.parse(metadata); + } + + let name = charinfo.firstname + " " + charinfo.lastname; + let warrant = "red-tag"; + let convictions = "red-tag"; + + let licences = ""; + let licArr = Object.entries(value.licences); + + if (licArr.length > 0 && (PoliceJobs[playerJob] !== undefined || DojJobs[playerJob] !== undefined)) { + for (const [lic, hasLic] of licArr) { + let tagColour = + hasLic == true ? "green-tag" : "red-tag"; + licences += `${titleCase(lic)}`; + } + } + + if (value.warrant == true) { + warrant = "green-tag"; + } + + if (value.convictions < 5) { + convictions = "green-tag"; + } else if ( + value.convictions > 4 && + value.convictions < 15 + ) { + convictions = "orange-tag"; + } + + if (value.pp == '') { + value.pp = 'img/not-found.jpg' + } + + profileHTML += ` +
    + +
    +
    +
    ${name}
    +
    + ${licences} +
    +
    +
    +
    ID: ${value.citizenid}
      +
    +
    +
    + `; + }); + + $(".profile-items").html(profileHTML); +} + +window.addEventListener("load", function () { + document + .getElementById("offenses-search") + .addEventListener("keyup", function () { + var search = this.value.toLowerCase(); + if (search.length > 1) { + $.each($(".offense-item"), function (i, d) { + const Name = $(this) + .find(".offense-item-offense") + .html() + .toLowerCase(); + const Number = $(this) + .find(".offense-item-id") + .html() + .toLowerCase(); + if (Name.includes(search)) { + $(this).show(); + } else if (Number.includes(search)) { + $(this).show(); + } else { + $(this).hide(); + } + }); + } else { + $.each($(".offense-item"), function (i, d) { + $(this).show(); + }); + } + }); +}); diff --git a/ui/dashboard.html b/ui/dashboard.html new file mode 100644 index 00000000..3db8e93c --- /dev/null +++ b/ui/dashboard.html @@ -0,0 +1,755 @@ + + + + + + + + Envy MDT + + + + + + + + + +
      +
    +
    +
    + + + +
    +
    +
    Attached Units
    +
    +
    +
    +
    + + + + + +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    +
    +
    +
    Dispatch
    +
    Refresh
    +
    +
    + +
    + +
    +
    Warrants
    +
    + +
    +
    +
    + +
    +
    +
    Quote of the Day
    +
    The DOJ is not the enemy, but is clearly not an ally
    +
    +
    +
    +
    Bulletin Board
    +
    +
    +
    +
    +
    +
    +
    Dispatch
    +
    +
    Active Units
    +
    0
    +
    0
    +
    0
    +
    0
    +
    +
    +
    +
    Calls
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    +
    Profiles
    +
    +
    +
    +
    +
    +
    Manage Profile
    +
    +
    You are currently editing ...
    +
    Save
    +
    +
    + +
    +
    Citizen ID
    +
    +
    +
    Forename
    +
    +
    +
    Surname
    +
    +
    +
    DOB
    +
    +
    +
    Profession
    +
    +
    +
    Profile Image URL
    +
    +
    +
    +
    + + +
    +
    +
    +
    Licenses
    +
    +
    +
    +
    Vehicles
    +
    +
    +
    +
    +
    Tags
    +
    +
    +
    +
    +
    +
    Properties
    +
    +
    + + + + +
    +
    Known Convictions
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    +
    +
    Incidents
    +
    Refresh
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Manage Incident
    +
    +
    + +
    +
    You are currently creating a new Incident
    +
    Title
    +
    + +
    +
    +
    Tags
    +
    +
    +
    +
    +
    +
    +
    +
    Officers Involved
    +
    +
    +
    + +
    +
    +
    +
    +
    Civilians Involved
    +
    +
    +
    + +
    +
    +
    +
    +
    Evidence
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    Associated
    +
    +
    +
    Criminals Involved
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    + +
    +
    Reports
    +
    Refresh
    +
    +
    +
    +
    +
    +
    +
    +
    Manage Report
    +
    New
    +
    Save
    +
    +
    You are currently creating a new report
    +
    Title
    +
    + + +
    + +
    Type
    +
    + + +
    + +
    +
    +
    +
    Tags
    +
    +
    +
    +
    + +
    +
    +
    Officers Involved
    +
    +
    +
    +
    +
    +
    +
    Civilians Involved
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    + +
    +
    Bolos
    +
    Refresh
    +
    +
    +
    +
    +
    +
    +
    +
    Manage Bolo
    +
    New
    +
    Save
    +
    +
    You are currently creating a new BOLO
    +
    Title
    +
    + + +
    + +
    Plate
    +
    + +
    Owner
    +
    + +
    Individual
    +
    + + +
    + +
    +
    +
    +
    Tags
    +
    +
    +
    +
    + +
    +
    +
    Officers Involved
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    +
    Vehicles
    +
    +
    + +
    +
    +
    +
    +
    Vehicle Information
    +
    Save
    +
    +
    + +
    +
    Registration Plate
    +
    +
    +
    Owner
    +
    +
    +
    Class
    +
    +
    +
    Make/Model
    +
    +
    +
    Image URL
    +
    +
    +
    +
    +
    +
    Known Information
    +
    +
    +
    Paint
    +
    Impound
    +
    BOLO
    +
    Code 5
    +
    Stolen
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    SAN ANDREAS STATE POLICE
    +
    Mobile Database Terminal
    +
    +
    +
    Loading...
    +
    00:00
    +
    +
    +
    Welcome, Loading... +
    +
    +
    +
    +
    + +
    +
    +
    + + + + + \ No newline at end of file diff --git a/ui/img/court.png b/ui/img/court.png new file mode 100644 index 0000000000000000000000000000000000000000..91243ea4ade6f5dda6896158f39fe27367155c71 GIT binary patch literal 55525 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 O0000~88R3t-eRT!cI2dJ{#Ih_S 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 literal 0 HcmV?d00001 diff --git a/ui/img/ems_badge_zonah.png b/ui/img/ems_badge_zonah.png new file mode 100644 index 0000000000000000000000000000000000000000..9245457c6a3e2502b80b12c5f0856c904c13f55a GIT binary patch literal 21158 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 T{OE0900000NkvXXu0mjfvEh9% literal 0 HcmV?d00001 diff --git a/ui/img/female.png b/ui/img/female.png new file mode 100644 index 0000000000000000000000000000000000000000..215934343c14899ef3ced79eb29401ea0486bc86 GIT binary patch literal 50333 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 bitQcHV@%W&-}~YYfuEZ?2G`J6ZA1SLJEaa` literal 0 HcmV?d00001 diff --git a/ui/img/male.png b/ui/img/male.png new file mode 100644 index 0000000000000000000000000000000000000000..d66d894ea81560f493406621e0815954d0755606 GIT binary patch literal 73641 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 ?!j#BJk!5K;2%$|ksF zKYSf|Qf67u(&w2}oP!I_Gr;0$Ab-Rp5`|XyNz6auZdpL`Ie408IG3?SXdpD?$~PpRM6z7;%KMwUTYAJp`XqBugTlc zy}h${^mA!BAPH9AORE-d1r3?MxJ4H8H!&VqL`wHR|M)Z`KS~Jl2G6&Y|1_Hs%rJOm zm|2+`qfCrbrk1tnDS|9eWg{~}ag=7H)P=5*X(`=kS%y>$eTl#zr+>Lql{Ppi_12+& zY22~EPyKNV$8xr>TMWLrreKsrPc1QR`>lJ33u3Wwx@)2Hx#6kXIiM|e$33T{8tRUSKYNEim=w$Sv*IU~y}+dCr}E z#(HkEMghKs8S*3i&p%Th+YDO@F9uA6`APl#x{K~@HkPf-*+9GVlh*T-|LdBGT}#W> zz;LVCm6^I;pY9ilRl^D09?7r%J^&A7SLE2$=8S}be|fdr*oJPrQ!fdaj8xC_tU=n< zmaTkUco=kr+c`TNpk6S4P+vNF(8kylUX;up*sN%hQKBu(1-9iQXirX-_r_aENDS)0 zrAs1JP@jG7-}^h(tTSBR_IsB5Z;=nP%eYi=~JQ7VNQNwzj=ergfy?jm1&(BE_HO*FKJ@kkJ-w{vk&xhenGX>C$-fB z7!T(C!_;o)Dtk;?foooR6h^Yc!aSL z5@wOIF?|#au=chr;($^BLgB2T6S7^Q>wDkpm+B@=8Y1~7et?NS_5Tc~*5qRn0-dOj z&f1|YW!U4vq4=e1X#1OcHKf0GCN2yf=|kf!vSbn6T)LC&(wJIqQP(J|42ilbh+*)- z8-bYO_M#A=o2=lR&9AMfdJyjQWrFy$bR>iC^(4fwc&K~S6lTtpXHNdj$t@K`7w~?A zg7zdNTcEh1FTn!(rdO0>6F66@wX1oysHq6u|AC2c-xy1pouJh0uTYZM9PV@rKLZk8 zsA>=eTZ{5DaM{;txB#Ja)7iu(tcHl#VDq3ZUYB&$xb^w&4S14ffasf*FSxbP;_yPv zq~ZWIVDl(OqZAORRlcyyN!sKHgi9Nh{$W!2y%5rVZ=9H)#1>%Qea*_Al^A5Ib3E+2insHx20Qx zPcojks$TbOv`6-OSqhsh$46NeI+#P;T!a3OUNgc!#=Gbe6;@!A0%v;vE0mgp{|Bv& zs|Qv4ih{Ee(vK>CnRneFCg44s^_&~`QGO1LP^kc5!F+n)DOU^ujSzG057)Mi;NG*Y zp|Pt_Z7cMP-Md#$FGS$?jhhW26&tx%9~0{-<=(pVjWdZ0%WVG5Hq5Mn547f4beGs2 z?p}#a06JVteOTnn?sU7Bky6-Z9esKol#ZKZw|>CjIAOfj;*!1>g1+zKcggNR-?EOw zA8O7!CBk^|GRuI^FvE%#%M1*~v--dHGn)DUAA=!YxY)&d4e(a%=A0ozpB%#_UP2+< z9mL^-epNLKl6Z2Nz~+xGjIBekxrH+O@n{0=4H~sHN`7a);#-iMU54;Hi{1!C+<;_OhSq>k1omaMLE?MopbkGq_bkqx&%+Mp&5$mwwD>`Js^(d=p zCjUL4U+^&VIzTvLQ1B55+*;}8tcT**CH*tOMgkUc_#4j-KZ^}nXWcoH*T`vs$gSu> zPFf9h;kA0Z2cR6e0>XS^f@@*to!~T~XiL&PPkIH2#p6p-s?H7Xn@g+Sn5MJmgsw~} zk=@EHw#lMY%)tSS2H5<$c=6EY*YR2xdXV6Be40a zRA95N?NjvSoi$f?Z*U5Of0I$}LtQ$YoGtE}O=+&>w@$kGq?Jy<)ixqP{w_D9leg~X zPwQMe=bYFgv2^QR;Aro^ypf%H*I2oj8a({f(e^&-#HAk)<>oL5XG)cM8plSsPgKrW zoyam@gB;tA$4W@xYf)6F9b<@yIafJ1wBa=)DW*Y!pLec^F_!FnKj=a=V_?#yl;B@a z8foIn(8bfHKfDBS!(uvJ{U!^b^v{tPWyp18$W>JBKd$DkPMAqLVy(riFZprdf2@mSK-=5e^MIRAzBU?}nA+XY|NT@LT@f3aa+HP|_7r5{X2Te&8R^5z%(S5$cZcZqLi zYqk`A4T(9X2Ahmxu;SE#N%N?iRYs`Pl?bd{!Q8GdY~}_w)1n^rvTRb9KN{Gft|h(d z$b-1Rvy+5}szc20)H!~mzAm;)uiZ0mW>_tM@b7WT*|+-Ve+^LN>KIjGQj!AK7tjhF zhd;Vl?fD%EouJUDO~0tvI=uW}iEA-5zCwlvGrM8R`eW<0(1;7-Z=N_@E)vglyZlAG zz$9qah-X1kR?{Rg7Zi4qR#m%w>h39^UlRA#&Cb;ggQu&S{;s@UJ2WwtVlptTu|9r1 zWC(PIJ3qw@#0M)MMmZ9XM17@U#5>}?2^gOdm3L3N?kBklZj=!omIUVqh7WnwL6&&Ls!VdFXrDXT|N*7Ig7Et>|2L+&m7sdEhg8eg!Q~v zuqs%C#-Q5@Dj6Nw(KBXt0HKZHwK9mYs|zHAq|2NszE0C`rkOo#@iX7t zQ+f{EK@{1}BgxIliCvsu&FBm-Pq}>3OVzW4zR~9i$#k>9uUhy2ImwCUBt0L|K*aHF z7V?op;zYg_e8mlp#v8+)&i?5p0c-NgMcIA*jq@yX3f6zQV80|y98oT;%Q6HeT!kn7 zunFqB4#x(S^NjmK6a)uUBBd+lodDCXGJS02U-?%FI?Zwq-&|%=mmUw~ zbYzm+aZAosrAQBBnmV*3q@_l05X$J2`@+_LIYJ)qt#HdECHX?R{$O|(p>Xz*yRD8X z5PDMRP~_fbZW(cxbhgoY=Kg;;8v%hK-6#KtBwZ#Ocf|SS<3^rOCAWDZGnCv`(qJZa z&Lh%;MvZP>ZGQHe(JJ8|MerJ5HP_52>EWN>&9WVk{)N4$P#Qj%%1jbNI#^Ty$L*tJ z`Q}LbpQVNDtqq#{ME{%be!1#cpRxI0Pn!6g?*f?qZT+U;_bSt>>B7yR6K#`>lfLmc zQ;|X}OYTOSZIe0Jb*qdLArO}ciz44V_KOmslaL;l>4pXE_|_8k*f#7+CA$vqHx1E zAyBXarf=yug=t`hTSeSW8J#(|k5fLuV9vYC|0|Ef(~|sg+5cA`NsyCFmiWl#{k~Hp zo>dI(<7@~0Zct%)0mbRBE}{NUGyC@C^*bOlriO=!2pi?-MvW5k`me%T9TTcmjUAr6 z9BH((7u~_-#Oi--QDxX?KF6?@6MgsbvPG0NN|jl3{;Mp@oP3>xv*6a=@kJB|)OHX7 zBJ-`tJVkNrBcr?vrgp7CD& zJvy|%{FBEbJpY)aga+hrZ%a0v7!N4(Bf zA9c!t4TOAm|314h7P)WFvgf!xJF&aHUo)EfD|V6p+4R-}p-jh!rjMW*5mwHt)Q)5!2xD(dZ^hReWyVCaJxbu|a+!q1V*8*#v$u*ZxPg zO(c?`++~@eDFj4)cxS`hrRtJL%HZMCe_cv8W8T~GO_(l-RBz%B?Lu!f{kXiIf3G9ztHL?2xo^k_1f5f7&zotc*2C@d ziQU;1A#`(B&~qq_+!6|>ceAPeOcOa$@;zD3Iq?MN;^5MkH6@K=v-sT^cU=4`rNoP9 zMj3y6pjNQ3tD`Q@E5k$})&Q&vmBzQ#u{mD*eCjLQ?vo7uY%UaRcj~EN+(V6U{n#j&k(Z3sEX@I!hL28 zwozV&^R3d&@GP_GF%bY$uKf0%CI%?hfB;5+fB{M{rDN)yl|D*v+=V$@LKiUo&MGn= zFfHW{4==u2`bjIK2uhRKTRj*iO$(|9N$cuAhD2=^R zQnklMC_wm^5?+3d<3B!oSUS49Lkf7W`2K-~*iVy!xhl|=g)E+@2y7cde0#-c9?}jaZdM1UDVZu(px$u9TaS0uN}qKTh}u`Vj@9z^(PLT_F>b%t z@26(J#YT$pxxrL#=3B&n1ps5-zn~BW&JfJ*P#qCdEQ~$AbA3;Qm$yMymnm4=D#cIq zu02+vfz3m^L>!jYo+sud|0UNcE$)#ee)1baqPTsl#Jy{p)+`m6voG*KPSUjPhNbEm ztYwT+^`I|9@6F25o$sn=YtG@XLq9$1P^*D^Mttfc)CZ&2Ir3ePN{5*mCPqR+Mtb^$ zcs41y;Tf{E(}v*I=>Sb@uCX!tMv$&!l%ei?w5-|uoA+rU#fHup^G8MZ^$O(;VlQsI z&KJ|QhzEGm-+LB%Vf3)Woqy7FHA+p&AD-mIw3QY6fHzp$BU13*u#umx2ZMW{3Kt`! z%RGHVnT0ncv?8{_Av;^m0x9dy>=!L|9Z4+hXDhW4AXt15tS)Z%@Xlup6OV-yOb8O# zNMWek_TlRy!Bp}$@j8S!O783T591>I;ApG-KZ6sS3LQewy8%uW>NAg;nO}{e>F0lp z&2E4+5065TW7UfVi+$l;gwh%OQc8{wS$p%X7Tb*# zkjjkh%hy9GVu*)a#JC1|6r~)$BVVzx!WJMEIFGb@I6gJ?e^~&&1$q6H`uUib zU{Gb5CehP)V>^CQ&x+?Ia196_R!HzjP7qJ*2^26D5Flo<5$XtUF+=4CV+oC8q8te& z7pEFwC!<*0#M!~I%?55k%Hbns7qOW1E$|eNJMF<7r>gv}@9*_+zBs9f8wfSAeT`3T8Cedw=IE@3DzEJ332dX^wBav1wDK$d&!*Nh0PD{Y4?S>Oe;ZPoVkfD zl6}Y6-qTSdD%f;MqX^5huJO(Da=v(-+d{tUMT~CT$GB9Yg2bf2ON0<4QI;l#*^vmN1{~3%`H1MoEsXaW~R{^`{;&<`8j+zdBqu2~Arar|D`PIq5G4#`W zf-6mH4KDxAH+Xfk5CrDklCLN*`)dHkuRJpB=E6(tKBH(0gY{b>6^p%%sHEE36{Yc1 zngMz3PgVQC4Gx2XSzQmFxsE9fPNO~y4arQ1QBc=b`L@*E5?Do=mWbV#8} zvFZn(9%8SmI%I=#2NXHHEm*c2w9`NA4NI!G&(MK;`qmtOPlql?O{HlI)ez(V@U40# z$m)`r8qDqqU6As|qL`;z&IQA`ua>$+}2bcbtv+xAPW7XVm zXOJRL$NU2hK{@Z>vG1l1FAzZ1D5&Gbe%fEHxQT~kwe{b91oC2V%WyD7WEB4$P~iM{ z*l*{&=pF}~p~0vBCdD0f4mtlgbGQ83_V}$hT?gUGt`-FM_Tim^%YVjKf4zVB(sD^)wHk@s75FFqk znxN62}ydP{dp#Jwbyt%g~-NjcMa&@nEiihyghWI<%r({2_mOAyI zYgJ;o+BgW%LQ`K0tfV08d~` zTXyTh6_8SqaVn8JBbRp-B8kv<7fgjEO4ST_k9zS~%gf~WvyAXxC)v$ zTiHz>Cp(uWObCbOhj&A|f-nQI!`2(}wJPUWzyVFe;E1QN4elzzz~F2xbuA?E(lC@> zxME}9#dO`Eo#tx}N&Ym-QTH@>UTKu^qfH_G(x9W5mA|X!Z=+#JYiWs}!aC{yknb+S zfo2TSEzeWrvGJC{D>A$@_4b|~21<4E3Bh!XP}|+{mB<%w8Mds19NtYAPyNnrF?%g3 zF_NklRY$+Ti&{_1({eMyinz3;`zntGMQHuhTg%8xzxhP z!KpM9xB^L(oJ`7tL{**jfONZ51yx6PXhlD?p}G0rAt@Xh?(DO8bmz>;A^#dSqc*30 z;TmEQBj4?k74JqUtIt;XeN1A6Y1cdj*LYW?^xU{9`nl?<<~KP`Gz+`GLh}o*fu}hb zoBvH3XQf`235mu2c}P3jk;;TZjHq1r@yhI;3cUWk-v259?rmt$VURhI@Qo|t-VdH7 zjMuG-SVb@IC*vG`5%wiw(8a-Q8*hmh`x-GjSSe91D+YDZ*F7i8*{t)4hsN(gqU~Y1 z@22MNuU^nrh{j{I5)^yNe(TDT^ORBxwLCv&2GLB*KS`HWcr-ZYxl`O9l(`z_2WHLm z3ppOzjq#b--=6_$Y)<-!V|_A|~(Ub*toV;@W18pK0!^PTrIm zlpt}M*gpB?_a~Vy6fhmgFm3tP;@e{U&5Dfzio4{D)bJ3aik(;C;>uCe``Bzf5EEIi zXndX{mgd4Kz6Y7bHb_ntji!c9UtI^lj1^W?^2$Boo(#NOMSvWokY95w4F26N5`$x) zE&mvn8}>*Dmk?s4j+^}ZDer2OD*CtDhlF6Jf)Gb%Llom%dIg61IfDTZ?eMe~Bik#r z=OCUq0gA;75l^yvA(lEj?`$CqmFV_rjNE`;zfZvHH&vC2BMt*$xn$as-!m^vpB>Yd z48zXLq1Q4dM?`;>`5+PX9YKe#P*2BMHRA!ZVJib5&Ir##VlxqaqTkA|HT}*SmHX%D zTzsdIhVjYB{~RQL&ULmxs-@=G>=3i6P{k3?s_)MtD24Oj^~Y0$YZQ!cSa4My(=q=1 zn{<`et$AVNST)4Ru{6rr1p6o{FiH+>^?;krd%|@24ma-hcA8&>@+BnW2@Tz^N^lcn zch!cfIq4WWin6Psrs(uhq2CZ8ZXwjN+H}on$^Kwp7_)C`|4;erCaH=%e*?wC1OSl4 zFF^g+z^oLiLb*bTNI^3F*8Rt$i8g+3v}o+dVK$pczK4P85D zk53HBP8W+ZopT}x&MVs&HkX=?bBn>Ng2gQ#i&s{k7;pSXm$%CPr8T?%s4sKCoCcr~ z>5;Z|r3qOUpHFEBml<}9ekjua_%o}2_vLldjmYM|K!!&Awsq!YEnQsh)h=}gBupyk zXy8VbmwBElD3_1bd-8B!N7w8UV44%cOHdx!(&8rA(BJNXaFAl^AQ!_8su=c4hjqnp zsa~LKVufb$%%9Ct09h@N5jvn9=j#zVa(gY2MClzHJY`3Kls*jW-RCg`YK`d4FxEpj zwW1CGo0JsGT=hBxcoqYirN@#l_&_`cV*IF;aS^l`>Fjh7xuAJ?>O{l1_@A#@4-G4z z28k3xo?FWo!VkBk+V2vpJjEIxi)U9g0Whunih0I^XmG<*jX+|}OnavkGyNdl`n$kC4 zK3Yp2q;E)jAak`ps!8*XW=a6*FWu~zm~%8g&+6t^RaJlr9eG~Ke(M^ZXu4?7tkkcp z)iLchU80c2<3@LloB55F4mZCcvpKVMEf1lZ^VP_lsUX34h0Q!BzFtXQJhGtO0em2JK(ySVuAhTnC48(&izPLJrU1yAh$(e^5q= z9G)|*b1;Wuv{v&E7v5D*p$$R8R;l+&n>jobMW^V{VU@CyX4Em2y1>gPG4LyOt#|of zLApXM`xF#&3cX__zd!SJw-kYD=E`+a12@aeEqHGpLZR^OSA<>h+d`)w6I(IZ*Iqg< zosZ@D+m#1;0tGXuimDgz0jn-l#C&;~t^DbGX6(eu`2jj&dTO9=;>`Nsz!)jiV}pO& z>i;7Hwuif_hh+4x?w1LP3x_F{H1i^^p4zW7L2yk{{qE%Hj1>h0z#fgn50fOdkSfi! zXQP&VJbP-FTB$b`YCZ3PG?@<6;TlmCz+n(&`YDXrKgj<2ondn?Y zCgMLNvH9~>aCp9V<=;H|2NgQ2)(g(!JMPM)Je$5|@}}`-;m%b8z&ax|Hk#c>flHE> z_z>|QNtFXAOAJX>H@OL#5DaSnOP*vf9F+FML!#Aai>?)mILT3sME2TG{*=oz){<^A z;+gro_4T{gA9sM8KrCe7p)kLp;1%kJcGpkt8?b4;u?xWvnq%?ckU9oxo%)Abb7XF* z`Hra5rDEG(mWgFZ)w#s7bG4 zQ*!=YqLuRdnc!#FZ)e?nn5qg&i%^Aj?dmgB=jFOTblVypQO_fVl6vn`ye|-F#^c=d z`$a%=@Kak9$M&W7%LjX(8jXleDN4s(jA7;bz&ovmZ)nSNT%68}sW&1@vS_{G2%s6I z;2HtGRUr=pP%fjCKYh9HW%azq?|);D^U~^N!6?hL66KMWX0x-I&;m){%bl;a^ua7zX1_una|E964`qgFRdFHQFf3mhkN=+39fZMvzIpVyPGGS z%d=S!>3JK8!tyEgAA9pf1b0l8q|A6j#YUtA+6Hb6DjN#@JK`G9E?u`T@78)9Ux3(wa6`lnbqRQf zM!mB3DKzoGoeJ!oFROt^04X1rsyhyRDQf(_~lJ z#M&i_Zt?#WfMov=V*`=7f%k-a6W!|5-RY|h8yd5*h@=(%ea`cRXPxIsCL)GA^{>Bq z=H2lcyfkcoHNp3Tz3JxFGHvzDj0$j2->`^-T01g*-oR;S^DR5 zt#Z$jJ)R7i^O3dOGymcn5^{Q1hZ$e!%K}qn{@Z<7svb#^LI2fPh;)9qfH6k5E6##~ z_)7umSX)Mv=0%Ldk0Q>=5n0xKCbQ?XQ)1#|Y{C6XZF~a%x!cOHN7$#_oW7-chs^!z z118uFp!&ny=Lgq;&60VZss*!5A(AvD$#lbX{eAiAiZr_Q@OKvzZ6-{A2kSPQv;$

    (NJIEkteCJrd8!|T*t~bp5NIEN^t+kj(dvEawY~mxK+C4it(W4CH@8a?T-Y|jv z?$%BesBrPlsZNvz}`88 z*ot+Zk3Bsn`x|@!_8!Qdb2h^GUc^U=&-rTL1){lA4BfW|V%(id;`H zn(a}+qvS(HF!|c1$Y`eR>k&rSK7Ep zmjxrTR)ZmlNTZf<)lF!|U=t47L{shVqH>gJP~{Z5VatnMYY{%OlC6s!YR=j{+7B@u)?u;&Sb!RW4J4fdtfGo(5v)OIFeLusB$}C3cX8Y86_6P|{(5 zs37afni0{jaj>Y3ofp0^a-u{C;A;=2md$2~2rB$@+E~e@bQtFQT4+Kdh$Da0-5Ce- zCYZ+;h&3Z4BuT(?z}zpk;~{7yO>ZB`HHq}MK&yk0R`w6K>Pl9X2P2`+?12}{!H=u( zB1N`d5CSib$1BEma98W72^p78I# z|MUTV^X@HtcXkQiGQr5fvY6&uQZ)!*vQ-x9f)$+&T8P5}SDV2Pc8Cu(8{ zHS2(ibS?|&)01@lUw`$DZZ!Mh&7XiIk53-!y^iun;e7Fo3-U^%76gqpC;B;aR$T`cePnd999!mRKm1Eagit)X+abO_DK$w?YiY(S{^e zHUG@#VtY+$Ca-u9EGzZ^UPD~dI;6Pw?ZHZ;O8HdT)TEvrF9%z|;|ss%*vtLq5x(Pv zeYsj`HJkhWw%cu4#c?t8uo91sjncl12H;ftE6q_^)6sqLrC4`CphQUFnm?l66_P_J z1SsCVU%mViKCzp9H(zP?f~699US4_1957P!{os3GVrQluR%Lm4R@&I#ihDdzr1`7 zzvTC#lH6?m2=}`!M8Gj~FKmElpL*_-r9~L|En>AW?YUOL=}tvChM+mNAa>%W&ZB8x_OfV-64dR?vOPfa(5T(jDA#aA)5yp!s@9wt z(S=mmWJb1@Fhfd`grdTtm$}MwYC!?rK6-K)TNzj+r?yfU;0QruU7sMHqj9B}Q#dv9 zk4db5)`po?%_lSK6wU|yIA3hKXl*iS7qE*qbfn`vDw17s;U zkUdUAjcpvrPc@TBx4WwK%t}QL+ej^Xv`QzDbgXWDA?{<=@nuZ%`DZU)!L#SD;LmTq zhiCV9@bAC=jsut<;hz7pVxZirLv#b0s|&tJy>|>_YXJ1mCK&n^r=jVyzW9|%P0Nzj zzU;k7^>3a%gEvHaj>&hgzJQO*1zdmlK^aQKmqg--^pGt9dYXbuZmV%%+X3SI&Qg=i zxpz?o6S5Vl8qCnOwe!Uae)0Tk`0@M>ez?7Xhr4UdC@8LT#|KaOERv_eLD!`Uya7@_ zSf2^ldew{AqeUIesols^3Bz;nv}|yaWQDLR&uodL<90`ik=rDS8o@g9o;_o-XMezu zE?xl6I}`8NLiOc1-8diY3YsmfMdfs1lFJtApb?YK9H|q&Sj9M%+FAeq_O7G3vFtjZ zi%bv%bLi~pc55VAV@YMJ%2l=({>|Qb;f2G-3ri}6(P+9gt&VI4kN`+zyzB2fH$H$p zCGY#yaGC%g9&R|{JK>&F1Zix13W7!uq=De(Uu|{e7Z0AuJxF0{m#dp0T&W9refm~@ zcYZ2+%?;^pZN+LT@i?!T@?LrE66Bo2XyHA{M(;n7iKqC)uxGZ+WaZD6_a)abCT)uT zL(Tq0cSjB|$B!V+qs>jYj4RUaZp&~qkjebobygPFs3}0Sr4QhW_%r{;x5Y4~l)YWH zS4_0U0zD+7-FR5e3N(OaKpo5*ybtZY4Z-x{@}ry~>|ldth$|_wBCHdm#OeMN8B^(g)S2!~t`g=rGUKFvGSjdr5NulFh#s%94 zGyLO&FXU%WpQ>h?!iCIO#q0Br@_KMBhky=U;D5I4YvIScQrvV+vY+zBHeO0P*|$p4 zA_;h=SMePyWnL<&_`py}dPk|A?v6GjuY2uH`IjeO$e*u=x~3H@#8$H{?a}WQv#v{3hacpk1 z;aJ(!_8R~3`i1rcvXY27*A$69?Hc5XYv$*kGfw$FH$n;klW7!dR(2!jwQP;UT_M08 z0w5*kO#BwF^=##A)Oy4iaSIDbR(1Twfc&&4(b=9te{M!zyq9s4=fK%RChJFh>J`o=FxJTS|#>1f6NPd~fm+tJ#Qn z5%TUgThhkf^W<#-D9oC1yRA)m1WhxXzV`^krhQ+Xo3&B6lzkpX@Pr6e z)t_Xq(UAKLSZ-{}Gf2KMVmGh*eK`i>Jp#00tGsE(tu|K&aUZ<*rN{_tg}8GaW9%Kz z%JwXW1AaN$Tcj2$iMITzwN7j;eJ+E4IJHufOr-1@KEn>IW=qKO2dtuM4<{TX@V zpS`NvO4a;rNg`mPh`ZR^e$+1PGcwg<$H~9W+%By^?^9D;L)MUNDcK3f6zL6WdX+|P zna-jIBdjLJ!RnCAT0VfA_^)>l)Uap4yAv=0>z2KOG5>LNBOOS;4Mh444AcH-B!9d- zli$FO`QNisp&{P_frZ7jt6%KDvjnf>il-Z+6_zu{iY!jpIXOVM^H(%)<#aQ8z*K~E!@V!?U}vk{y#a~b*U^5+L9iax?Ta{{%i%p!Lz z|H@c$t!#3;B;)C*tt8n%@h_3%(zm7AWHgXL<+Ky&x--3BAI4OQn=7e6%LI%#W-Vkt zD3N1hlqQh!jWTbHsuAOhVI=sYHOj1O%e{^7{imlt zkP#T+>&pu{0vtF2{9;|_w~%aP=l#}(G{96XKo&OpWIgBS&_WN6k7WVI>aZufH-uL; zvl9kx&asHOO`BFRvaZbY=j4LGB*pI>JSF|H4#xtf_WQ7dxqX3v>kWu=jJ@DkzC1XV zZ+hqQ;`CBGR$JI)U9Q3QwpP!X0wSG#82R%s?m(V%CtKf^!?~10y@jw7>hUw-xPf=t zN3orVNRMq;r-cfPOFI|fd#}$wNUwP)IB&}#K+uhq;6Y^#0Odqg4AT1 z&Upb6u?Jxul6P~|n+G^ezA-^&EmO?P)q_~wwgh?HSnOY5!+5c3;p-Q;3H4lx_#PtS zAW8>@-3cJVPNyr)n@g>$?9`r@ApT2Ix`rQ?CqjG2cjouFXI0_?)2BdL)gjEnM*QUd zLrB_P`M1+k4QM{v>&iA;1j23n5kG8OcZ~Ze;n=pE2iuOfcM!a6$yOb>yVH?p`$zI_ z&{v}|ZH`TYmvuspdb$LN@3}r%RKX0tyEubDSV|LwxebW< zW`dwBguxOFLxLR5CeWm=v@YS=6dGwcymmWaosFsRSe$loRb$c=g0sajjznj~T~LVc z5oNHN>9#hpU1~!re#3r&U}^)g88{)1yZdsD{V0M{qnz<4A}h2|a-%x}E)o996?P&x zP0IJ(y+>iag8(nj?Gw^7yJ~XR{j9*>zmUr8)=4K{Je*&|6#1uHJJQ(b$Q6ij*QOSA zwMr$a-RMzCQX&4$O4-#K;hBxbTP!nIxLRW@LiY?YmFIhhQU|{H@9$p9*H=Ad;A3bG zx?OwFBsVbjkDy%+AZ-`aID;!0;Jv>)ekixln!o(;ULM_U$vz2@)$rkVHYTNySK`5p zK*XNvy;iB@o629bvyvNkFj50kM9iM$Jvo6CG^>w$thk-?-}fO1TF{1c)n4C@VQ2Ca|zfX19YP(u55wYA88v#ou6w2!((P3$VFv<2qKUFcY zAiP-_PpNpg$l5*YlQ5sQoute_cRgpN2!;#NSrD3xpj}`*h7MIr?-4uh?8p&phyHY; z1X*F)ypPYgl1V0F<8Th9h_*r+No15@rzr2(w#<~Uf@;BF4GFr~{40{I}h`k^u^E`98 z%q(F8LRNw@jc4rWdCZvKy)H}8@T-XsA~1_c$|GCf8WP|kAk7m93BstKf>AzHujC#a z8$-78fbG&|{kPVZYJ6rTk7h1YoX(I9FxoagKSxmWcG!>hSkNr)xP}{vm@Br1+v9PQnvJH(vSi$u6U1$@+EiTFiq}k7oPUNeHPjnOBz;*lvu#06^FW><` z6~O9E>eg%WL%^~7`-qTZPKSUt1Fg%PwjtzyN$g}L31~YiFKK;q2bPu+Z6xg(=j za*esm8ji#!PQ#F(d8jKHm$pSL2^;8d$wwoMF0v^x8)ZqCXv} z#H~T~HvwDz_R$l4N)yKZ3~=%6=0=9pL_B?nvE75Wsey6dKsuiwQvQp359K3_(!q2h zah)^G5ujLUh4KZA<4z8Y_+ewR8D@ILWot4AH!&Tn2>!SyByt{|Pm zQE>&u9v;`Q_6@A>7Wcos1vtK`Mcyw)aBG7Z#~53M?c2eqtU%h_Xeup`ernhY?qBGv z78xTDcOv&}T}(-nIMn6stN01KreX5skIQYcy_0+=MXcO)<(sjt`AZDL=3hK|ynw;K zC|E>%8H;;!K{p{S&H;0pRn||gX#He1_hAtQO8=@Kr810lo|sh^X1*{{IoT#1D#1G>VH;{J6fE~=(EucM!nJGCLyc{4n`IeixT&gSe97OaOo7w{d z{T`mRCm^^3K+7(0_i#Fi<0wbo-7xYa+W9uSe2IvbH zHw0J{V;|iNU}7y?c`jp0doC-hXe4tPdo8!_95JQejFcf*_{FYjne1=zbre!I?nkt( z^a#DlzOl?SC5EXlXIc$r4#_=Tx>8Bj4{QgUL2IuM4Fq|v4S9x*Hi&tofkOh~dYpdh z`#2YgZN#lfnk395E}RJq>)I%|tmuk#u~|D>=5!X1)7HR!BM`|^v!$Ju-@=1L;-Vch z1hWhw@h$-qUczS4L&@0GcW^;(BT7!fDHaav^X$%6vl&;m%+4Mj<}Ojm8O2=zPR37J z$)u-y&-hgP3~&1TY_#FR6DSZ)5L0=!cOXN|=NaH;A6nvJXH#C%fdPhT!dut}qn!4y z<)E|W>`VxVYO|r;kvH&tb8_S-Hw(ky~TzP!88>_C0o!q{q19*xEnDnkY|?~FL97eVwKD2UbZ$7jy~L$Bz5qv zyGc4@d#Y{v7V6R3fu^~orw31CstaM(3rMoxT!RsC-(=~U$`T5&XyACch>+tJf4>5e z84z0=#B>D6bAX?p1D2hE2ruDbiyOB3ugzYWbyZ$sH4oFuwtvz#q2NXYY>_&gEwl~d z`f_g{!UFLWXotUl@K_oC0ubvrZ(qv{8ghsSU4lXA73<^u6F|)>G|r|0Y{D1R;h1UO zR;0Jr(iqf?djsiDg55-nWUdK;aK}`&g%ubAu6GE;8nkU4Ydpj=naz9(jmBdD#oQec z(3ayE?*jWl0oK&E7aMrg!XL3P8oyiM{;C&Xv@x`G3E|qpXgqAWTuSZ$DXpbl-+`Ec zpf;7s6-McUaXn3vN9*7#C4{8wXO z3S}t5V=_mT1v?6t3)u8swC5hat*_E5af_6E&*8N(tBYIu-DVoz=1q-7A{q-!QVDNL z#+b5>B*Il+A$>L9-zic5X~hd+bI}o z7CO3GDN%Vi&{WYFL?Leh%f13pJjUn$^}FA~b2gU00rN16x#D}zN7bIWC3BVTz9)lc zHZ631M8SB?V*GJy32W&Egb~TU$DOHRe%qt%U5%6c_Tm(;tJ1=F>5}+xGgL{=`{~eN z(j|{8@JVOGp`Li%Z$ZOTSkd_c&mxbN^>Obd2zvqBl#UZ-G~eQT#`t}J`PY2MGaBpj z0yX#=Zk z?FHOhtHXf+rX`%4LX+|SBsg+tmMvuPu!;RdoF&D&Vy7}mT$9VVtYkv^wEyl91JrHw z@a}uv$|Jxr7RU>!2jL-nASFbve+f?uBF%7l5^fQG?QLvH3lQgO+yg8E*2P9q8#Fb? z3js%Mq!f}h-M3e~L8qC{R4jf}HNO~}ct#t~CB$ljNjCAU*I?Lf9t>lGB?6bHojuy@{oaRwm39|HgHL!wXooO;;6qA2o}^q-d!tSW=BG91fy zLJ7ee^fB*AGFU2UbBUjipe23`m-kC}!XAQ&FEPdgNd7AXEyv@rgrU(r%wX&p+|9?Z zAzFl~@K}+^`NOZAgE-k!l+4Crt1xB9#W# ze@cx7ZBttJY+Yl0fUt(SdXGC&);NWi#wO!A6XQvl28rqNS@1XlHivjtQCZoBLHxx@ zOviOqPr#uf;tZ2}2$vy~{@AFsL3br2Je&XY7d1Ivj9uzQvm?`L1K4+}_K?XU;UROh z4ynYPunHi@)Mq8P@E+4z9?)eB^R!o4D26`ABG&==D0yFv2bz-6!S@elqeRpt!!a#p z4wvZBp{=ru&7=pY0SSE{+(^c;?k|9bhY8q-b*;?J^fy$o&K7NEf@D1WgQ>>-he184tL^;J=2ywP(belQW zyr#~Yc)+i4C3Q6wf1`sqRZTuJ3J)lK2x4w_ccl+vr;P}UT`Dx{v9^Rv>@gGE%6f

    UX_u8NX!eY~OtuI1j@wK87U{`_Nxm17RdR_cq0f88c~ zKGf;MB~&{ldt*~>S{-#aa+4T!rZ3r$Q9$_2T4ffiVcNNE#5&AeeD+=Jf+?N=eiXQW zsL;;JA)Zn7&5tfX!1VAi5>Iay#p_#Z)zIuf1D)a-j7>~# zK-dc};K{3Eek~CA9z0_&&R@v|B=*909Lq;SqxvJX4+(n%TA`2mcIf8y-=YCP?UPec zf*s*^S`OOMoCLXa!OUQ@E|f}eKb}zy?qHR&g)#xPNdYZYc!JS{cwe1&Ro#R-6NwE#h9g!stOWL_n7i zR@{@QO{Dy|6nd5zbNtj*VwkC_MjMAI*>5dKj|Xg2x?E@j)*hH)CYxZEnd0DG5<0u~ zLTb+{?nEBb@QZp&C5bK!tI7b|Rv@Vg5bO2Q9X=X(>BM3R782_%Bo^E9G53j^$+!1Ex9_SYr1o1uA8M~ z#2p^NEavyaz8rPv-mNRd(yUyQnpY7L-&#k6BTtF+B#QRRNhu;rFWIZiCG@aMn^Q4{ zgYV%@OCM^W*Q*KG>`tT_6@pcG;i`!I6NVYP)G&i4?K0nRR;c!3R|Y*B6$q0tG|&^h zYP2KyTr$j@X<1pHpMXxvs@kL`t|H~8R>tTfK(IdoVtt9Y%Ujqk`_MA<0FHUoH|)H1j1afhI>H;!vvu854Ztkz zsk(XH@$kYowYtT`c{F0`*NOL5F;}+8(7M#(YM3#_rZy8b_ML%WhqkM$ov5XP{TUg0 zLuuHP;9JxbRizr;Zy8wp4`dU7~q?V7ib$g6dH||Y8$%3LwojY z^&|9(zXltz2nWg1-<%GS=si8Ez@bk_yOi)+V&L+4(twzocOP!! zD`@vC7~VhK-j;h{n)evPhwGs$@#?=XNXS*!jT-OxmzuYSm`ro(&hUgjm>kL!1g)iE z`O@c^(Gj3IW&g zdvybtyTlY4EHa^3ADhlJ3^H05Zs!4rp25VLm#nV54-LPHs(jTf%)o_O*0UaZ0?lci zinh0ytEBU5BA!1=(=9DT{9BGvo$*gibsyt=1j!CEkzalIpb+HV!J#}mJeG5~RBwsR z{jTKh&J=vjpjbS3N{M$1DP56)%WpUVYA z!hnHFXx@%>N0X^xhWxQ9SB#UMbAh=nxSzqVMQyALzEw2g5U441V30NJ)amE5qR7Vs-x4y`Bs~^hb#N(+&!~d5Vf_314R` z5mx+x7N=&{Ts<-a>@i8BT9&VADXPP;BR`-MZ>uOD>m7x$1P7IDa?P*xY zBHF2LnqHF``F^)@x9Z9&@q9K7_a{)rZ(u*%gJ*<=uNfe`v1}jbDp}5riK#Dv)2TNm zJW9*FAtRdEJft0y1)#3!J%e|Qi%X`M($%SU3>Li3R1E84D~fp+nR+)X83K1)MoO;1 z;A@Y0Na7ar7R>tH01@){ucZJatHWSs7Qqp2I>E;8fB7S=5%9~mf0oe3FdE(2ReBw@ zo-Nsd@m~K7b_4qgjQWd{2XY01>;TFh0GgcvCel{?_31k>%Pg~9+{2T{$ja)Oc(IO< z*pi)d`v7>Rb)@OUD6-fZJz&M9fsjtd(n=?GO1bqU*OI0Kmp zpf&F;3k_)rtF5Pz!XE>PUPB29LKTU?$?sLPBNUNT9Me$afYDi|ky>%#VVaIP?uSJ8 zGs}Y2J+p8><^h*wGqZ(_Xh2C+*NE-gjeh5Hxw01j^Wx@8|#k literal 0 HcmV?d00001 diff --git a/ui/img/sasp_badge.png b/ui/img/sasp_badge.png new file mode 100644 index 0000000000000000000000000000000000000000..b7f0e2def27e5d3f08b928635503e6f081816235 GIT binary patch literal 36832 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 literal 0 HcmV?d00001 diff --git a/ui/img/warrant_pfp.png b/ui/img/warrant_pfp.png new file mode 100644 index 0000000000000000000000000000000000000000..f28887038df943ee2252461ce75c3bd59e110c60 GIT binary patch literal 19434 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 BsyzSz literal 0 HcmV?d00001 diff --git a/ui/style.css b/ui/style.css new file mode 100644 index 00000000..71df059e --- /dev/null +++ b/ui/style.css @@ -0,0 +1,5854 @@ +@import url('https://fonts.googleapis.com/css?family=Montserrat'); + +:root { + --color-1: #1E3955; + --color-2: #213F5F; + --color-3: #2C537B; + --color-4: #23405E; + --color-5: #152638; + --color-6: #121f2c; + --color-7: rgb(28, 54, 82); + --color-8: #2554cc; + --color-9: #6E707C; + --color-10: #8f741b; +} + +body { + font-family: 'Montserrat', sans-serif; + overflow: hidden; + display: none; +} + +textarea { + font-family: 'Montserrat', sans-serif; +} + +::-webkit-scrollbar { + width: 0px; +} + +input::-webkit-outer-spin-button, +input::-webkit-inner-spin-button { + -webkit-appearance: none; + margin: 0; +} + +.dashboard-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.badge-logo { + margin-left: 1vh +} + +.profile-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.incidents-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.bolos-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.reports-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.penalcode-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.dmv-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.stafflogs-page-container { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; + overflow: auto +} + +.container-load { + background-color: var(--color-9); + border-radius: 15px; + position: absolute; + width: 96.5%; + height: 96.5%; + left: 2.0%; + top: 1.5%; + display: none; +} + +.header { + height: 7vh; + background-color: var(--color-1); + border: 5px solid #393B39; + border-top-right-radius: 50px; + border-bottom-right-radius: 50px; + width: 96.5%; + position: absolute; + top: 5.5vh; + display: flex; + align-items: center; + user-select: none; +} + +.header-left { + display: flex; + flex-direction: column; + text-align: left; + margin-left: 10px; + margin-right: 0px; +} + +.header-middle { + background-color: var(--color-2); + border-radius: 15px; + width: fit-content; + height: fit-content; + padding: 10px; + padding-left: 20px; + padding-right: 20px; + display: flex; + flex-direction: column; + text-align: center; + color: white; + margin: auto; + font-size: 20px; +} + +.header-right { + display: flex; + flex-direction: column; + text-align: right; + margin: auto; + margin-right: 35px; + margin-left: 0px; +} + +.main-container { + border-top: 5px solid var(--color-3); + width: 100%; + height: 79.5%; + position: absolute; + display: flex; + bottom: 0; +} + +.nav-menu { + background-color: var(--color-1); + border-right: 5px solid var(--color-3); + min-width: 22.5vh; + height: 100%; + display: flex; + flex-direction: column; + user-select: none; + border-bottom-left-radius: 15px; +} + +.nav-item { + background-color: var(--color-4); + margin-top: 10px; + padding: 10px; + color: white; + font-size: 18px; + font-weight: bolder; +} + +.nav-item:hover { + background-color: var(--color-3); +} + +.active-nav { + background-color: var(--color-3); +} + +.warrants-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + +.warrants-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.fa-search { + font-size: 15px; + font-weight: normal; +} + +.warrants-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 55vh; +} + +.warrants-item { + background-color: var(--color-5); + width: 100%; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; +} + +.warrants-item:hover { + background-color: var(--color-3); +} + +.warrant-image { + width: 9vh; + height: 9vh; + margin-left: 5px; + margin-top: auto; + margin-bottom: auto; +} + +.warrant-title { + font-size: 16px; + font-weight: lighter; + color: white; + margin-top: 5px; +} + +.warrant-item-info { + color: #cccccc; + font-size: 12px; +} + +.warrant-bottom-info { + display: flex; + margin-top: 1vh; + margin-bottom: 0.75vh; + width: 100%; +} + +.warrant-id { + color: white; + font-size: 12px; +} + +.warrant-expiry-date { + color: white; + font-size: 12px; + margin: auto; + margin-right: 10px; +} + +.quotes-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + width: 50vh; + height: 75px; + margin-top: 10px; + margin-left: 10px; + display: flex; + align-items: center; + user-select: none; +} + +.quote-title { + font-size: 14px; + background-color: var(--color-4); + padding: 5px; + margin: 10px 0px 10px 10px; + text-align: center; + color: white; + font-weight: bolder; + width: 85px; + /* height: 30px; */ + text-shadow: black 1px 1px; +} + +.quote { + margin-right: 10px; + margin-left: 10px; + /* margin-bottom: 25px; */ + width: 100%; + background-color: var(--color-5); + height: 30px; + padding: 10px; + text-align: center; + display: flex; + font-style: italic; +} + +.quote-span { + margin: auto; + color: white; + font-size: 16px; +} + +.bulletin-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 100%; + width: 50vh; + margin-top: 10px; + margin-bottom: 8px; + margin-left: 10px; + user-select: none; + overflow: hidden; +} + +.bulletin-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-right: 0px; + margin-bottom: 0px; + width: 83.5%; + align-items: center; + user-select: none; +} + +.bulletin-items-continer { + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + overflow: auto; + height: 100%; + display: flex; + flex-direction: column; +} + +.bulletin-item { + background-color: var(--color-5); + width: 45vh; + /* min-height: 7.7vh; */ + /* height: 7.7vh; */ + padding: 10px; + display: flex; + flex-direction: column; + margin-bottom: 10px; +} + +.bulletin-item:hover { + background-color: var(--color-3); +} + +.bulletin-item-title { + color: white; + margin-left: 5px; + font-size: 20px; + text-align: left; +} + +span.bulletin-item-title { + outline: none; + border: none; +} + +span.bulletin-item-title[contenteditable]:empty::before { + content: 'Enter Title'; +} + +.bulletin-item-info { + color: #cccccc; + font-size: 15px; + margin-left: 5px; + margin-top: 10px; + text-align: left; + padding-bottom: 0.8vh; + overflow-wrap: break-word; +} + +span.bulletin-item-info { + outline: none; + border: none; +} + +span.bulletin-item-info[contenteditable]:empty::before { + content: 'Enter Bulletin Information'; +} + +.bulletin-bottom-info { + display: flex; + margin-left: 5px; + margin-bottom: 0px; + color: white; + font-size: 12px; + height: 100%; +} + +.bulletin-date { + margin: auto; + margin-right: 5px; + margin-bottom: 0px; +} + +.bulletin-id { + margin: auto; + margin-left: 0px; + margin-bottom: 0px; +} + +.dispatch-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + margin-right: 15px; +} + +.dispatch-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.active-unit-title { + background-color: var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 2px; + margin-left: 10px; + margin-left: 13px; + width: 57.5%; + align-items: center; + user-select: none; +} + +.active-unit-count { + background-color: var(--color-3); + color: white; + font-weight: bolder; + font-size: 14px; + padding-top: 6px; + padding-bottom: 6px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 3px; + margin-left: 3px; + width: 8%; + align-items: center; + user-select: none; + border-radius: 5px; +} + +.calls-title { + background-color: var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 2px; + margin-left: 10px; + margin-left: 13px; + width: 95%; + align-items: center; + user-select: none; +} + +#police-count { + background-color: #093095; +} + +#ems-count { + background-color: #950909; +} + +#doj-count { + background-color: #525252; +} + +#doc-count { + background-color: #7b25cc; +} + +#pa-count { + background-color: #008080; +} + +.active-unit-list { + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + overflow: auto; + height: 35vh; + display: flex; + flex-direction: column; + width: 95%; +} + +.active-unit-item { + padding-top: 7.5px; + padding-bottom: 7.5px; + padding-right: 10px; + padding-left: 10px; + /* height: 3vh; */ + background-color: var(--color-5); + display: flex; + align-items: center; + margin-bottom: 5px; +} + +#draggedItem { + position: absolute; + z-index: 80; + -webkit-transition: opacity 0.2s ease; + -moz-transition: opacity 0.2s ease; + -ms-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + opacity: 0; + pointer-events: none; + + padding: 10px; + height: 3vh; + background-color: var(--color-5); + display: flex; + align-items: center; + margin-bottom: 5px; + width: 45vh; +} + +.unit-status { + width: fit-content; + padding: 5px; + padding-left: 15px; + padding-right: 15px; + color: white; + font-size: 12px; + font-weight: bolder; + margin: auto; + margin-left: 5px; + margin-right: 0px; + background-color: #0B9509; + border-radius: 10px; +} + +.green-status { + background-color: #099517; +} + +.yellow-status { + background-color: #958F09; +} + +.unit-job { + width: fit-content; + padding: 5px; + padding-left: 15px; + padding-right: 15px; + color: white; + font-size: 12px; + font-weight: bolder; + margin: auto; + margin-left: 5px; + margin-right: 0px; + background-color: #093095; + border-radius: 10px; +} + +.unit-police { + background-color: #093095; +} + +.unit-ems { + background-color: #950909; +} + +.unit-doc { + background-color: #7b25cc; +} + +.unit-pa { + background-color: #008080; +} + +.unit-name { + margin: auto; + margin-left: 10px; + margin-right: 0px; + font-size: 12px; + font-weight: bolder; + color: white; +} + +.unit-radio { + margin: auto; + margin-right: 5px; + font-size: 12px; + font-weight: bolder; + color: white; + background-color: var(--color-3); + padding: 5px; + padding-left: 12.5px; + padding-right: 12.5px; + border-radius: 5px; +} + +.active-calls-list { + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + overflow: auto; + height: 100%; + display: flex; + flex-direction: column; + width: 95%; +} + +.active-calls-item { + height: fit-content; + background-color: var(--color-5); + display: flex; + align-items: center; + margin-bottom: 5px; + border-bottom-left-radius: 1vh; + border-top-left-radius: 1vh; +} + +.active-call-inner-container { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; +} + +.red-call { + background-color: #381515; +} + +.call-item-top { + height: 50%; + width: 100%; + display: flex; + align-items: center; + margin: auto; + margin-top: .5vh; +} + +.call-number { + background-color: #950909; + color: white; + font-size: 15px; + font-weight: bolder; + padding: 2.5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 10px; + width: fit-content; + margin: auto; + margin-left: .75vh; + margin-right: 0; +} + +.call-code { + background-color: #097C95; + color: white; + font-size: 15px; + font-weight: bolder; + padding: 2.5px; + padding-left: 10px; + padding-right: 10px; + border-radius: 10px; + width: fit-content; + margin: auto; + margin-left: 5px; + margin-right: 0; +} + +.call-title { + color: white; + font-size: 20px; + font-weight: bolder; + padding: 2.5px; + padding-left: 0px; + padding-right: 0px; + border-radius: 10px; + width: fit-content; + margin: auto; + margin-left: 5px; + margin-right: 0; +} + +.call-radio { + margin: auto; + margin-left: auto; + margin-right: .5vh; + font-size: 15px; + font-weight: bolder; + color: white; + background-color: var(--color-3); + padding: 5px; + padding-left: 12.5px; + padding-right: 12.5px; + border-radius: 5px; +} + +.call-item-bottom { + height: fit-content; + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + margin: auto; + margin-top: 0vh; + margin-left: .75vh; + padding-bottom: .75vh; +} + +.call-bottom-info { + color: white; + font-size: 15px; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + margin-left: 0.3vh; + overflow:wrap; + white-space:normal; +} + +.dispatch-line { + background-color: rgba(128, 128, 128, 0.1); + height: 0.05vh; + width: 100%; + margin-top: 0.1vh; + margin-bottom: 0.1vh +} + +.call-bottom-info > .far { + margin-right: .1vh; +} + +.call-bottom-information { + margin-top: 0.5vh; +} + +.call-victim { + color: white; + font-size: 15px; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + margin-left: 0px; +} + +a { + text-decoration: none; +} + +.profile-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + + + +.profile-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.profile-title:hover { + background-color: var(--color-3); +} + +.profile-search-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#profile-search-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#profile-search-input::placeholder { + color: white; +} + +.profile-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 100%; + margin-bottom: 15px; +} + +.profile-item { + background-color: var(--color-5); + width: 100%; + height: 9vh; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + +} + +.profile-item:hover { + background-color: var(--color-3); +} + +.profile-image { + width: 7vh; + height: 7vh; + margin-left: 10px; + margin-top: auto; + margin-bottom: auto; + object-fit: cover; +} + +.profile-item-title { + font-size: 16px; + font-weight: lighter; + color: white; + padding-top: 2px; +} + +.profile-tags { + display: flex; + overflow-x: auto; + width: 100%; + margin-top: 10px; + margin-bottom: 5px; +} + +.profile-tag { + margin: auto; + margin-left: 0px; + margin-right: 6px; + padding: 4px; + padding-left: 7px; + padding-right: 7px; + border-radius: 10px; + color: white; + font-size: 12px; + font-weight: bolder; + background-color: #956E09; +} + +.profile-bottom-info { + display: flex; + margin: auto; + width: 100%; +} + +.profile-id { + color: white; + font-size: 13px; +} + +.manage-profile-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + +.manage-profile-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.manage-profile-editing-title { + background-color: var(--color-3); + color: white; + font-size: 15px; + font-weight: lighter; + padding-top: 10px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + width: 80%; + align-items: center; + user-select: none; + display: block; +} + +.manage-profile-save { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 10px; + padding-bottom: 10px; + background-color: #1b8f25; + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.manage-profile-save:hover { + background-color: #1caa28; +} + +.manage-profile-info-container { + display: flex; + flex-direction: row; + width: 95%; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; +} + +.manage-profile-pic { + width: 45%; + object-fit: cover; +} + +.manage-profile-info-inner-container { + display: flex; + flex-direction: column; + width: 55%; +} + +.manage-profile-citizenid { + color: white; + margin-left: 10px; + font-size: 14px; + user-select: none; +} + +.manage-profile-citizenid-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 2px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.manage-cid-pic { + color: white; + font-size: 16px; + margin-left: 10px +} + +.line { + background-color: var(--color-3); + height: 2px; + margin-left: 10px; + margin-bottom: 10px; +} + +.manage-profile-name { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.manage-profile-name-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 2px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.manage-profile-dob { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.manage-profile-dob-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 2px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.manage-profile-job { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.manage-profile-job-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 2px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.manage-profile-url { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.manage-profile-url-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 2px; + color: white; + background-color: rgba(0, 0, 0, 0); + width: 21.75vh; +} + +.manage-profile-info { + width: 92.5%; + margin: auto; + margin-top: 10px; + margin-bottom: 15px; + border: none; + outline: none; + height: 100%; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; +} + +.manage-profile-fingerprint { + width: 92.5%; + margin: auto; + margin-top: 10px; + margin-bottom: 15px; + border: none; + outline: none; + height: 8%; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; + line-height: 1 +} + +.manage-profile-right-container { + display: flex; + flex-direction: column; + height: 95.7%; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + margin-right: 15px; +} + +.manage-profile-licenses-container { + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + height: 15%; +} + +.license-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.licenses-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + user-select: none; +} + +.license-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: rgb(255, 255, 255); + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; +} + +.manage-profile-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + min-height: 100px; + max-height: 200px; + overflow: scroll; +} + +.tags-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-right: 0px; + margin-bottom: 0px; + width: 84%; + align-items: center; + user-select: none; +} + +.tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.tags-add-btn:hover { + background-color: var(--color-3); +} + +.tags-holder { + overflow: auto; + margin: auto; + margin-top: 5px; + width: 95%; + user-select: none; +} + +.tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +span.tag-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.tag-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +.manage-profile-vehs-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + max-height: 150px; + overflow: scroll; +} + +.vehs-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.vehs-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + user-select: none; +} + +.veh-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; +} + +.manage-profile-houses-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + max-height: 150px; + overflow: scroll; +} + +.houses-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.houses-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + user-select: none; +} + +.houses-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: bolder; + background-color: white; + user-select: none; +} + +.manage-profile-gallery-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + height: 18vh; + overflow: scroll; +} + +.gallery-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-right: 0px; + margin-bottom: 0px; + width: 84%; + align-items: center; + user-select: none; +} + +.gallery-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.gallery-add-btn:hover { + background-color: var(--color-3); +} + +.gallery-inner-container { + overflow: auto; + white-space: nowrap; + margin: auto; + margin-top: 10px; + width: 95%; + user-select: none; +} + +.gallery-img { + width: 10vh; + filter: blur(5px); + object-fit: cover; +} + +.manage-convictions-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + max-height: 200px; + overflow: scroll; +} + +.convictions-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + +} + +.convictions-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + user-select: none; +} + +.loader { + position: absolute; + left: 50%; + top: 50%; + z-index: 1; + width: 120px; + height: 120px; + border: 12px solid var(--color-1); + border-radius: 50%; + border-top: 12px solid var(--color-3); + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} + +.profile-loader { + margin-top: 5vh; + margin-left: auto; + margin-right: auto; + z-index: 1; + width: 120px; + height: 120px; + border: 12px solid var(--color-4); + border-radius: 50%; + border-top: 12px solid var(--color-3); + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} + +@-webkit-keyframes spin { + 0% { -webkit-transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); } +} + +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +.gallery-image-enlarged { + width: 40vh; + position: absolute; + top: 20%; + left: 25%; + display: none; + z-index: 999; +} + +/* Context Menu */ + +.contextmenu { + position: absolute; + width: fit-content; + padding: 2px; + margin: 0; + border: 1px solid var(--color-3); + background: var(--color-5); + z-index: 100; + border-radius: 3px; + box-shadow: 1px 1px 4px rgba(0,0,0,.2); + opacity: 0; + transform: translate(0, 15px) scale(.95); + transition: transform 0.1s ease-out, opacity 0.1s ease-out; + pointer-events: none; +} + +.contextmenu-item { + display: block; + position: relative; + margin: 0; + padding: 0; + white-space: nowrap; +} + +.contextmenu-btn { + display: block; + color: white; + font-size: 13px; + cursor: pointer; + border: 1px solid transparent; + white-space: nowrap; + padding: 6px 8px; + border-radius: 3px; +} + +.contextmenu-btn { + outline: 0 none; + text-decoration: none; +} + +.contextmenu-text { + margin-left: 5px; +} + +.contextmenu-btn .fa { + position: absolute; + left: 8px; + top: 50%; + transform: translateY(-50%); +} + +.contextmenu-item-disabled { + opacity: .5; + pointer-events: none; +} + +.contextmenu-item-disabled .contextmenu-btn { + cursor: default; +} + +.contextmenu-item-submenu::after { + content: ""; + position: absolute; + right: 6px; + top: 50%; + transform: translateY(-50%); + border: 5px solid transparent; + border-left-color: #808080; +} + +.contextmenu-item-submenu:hover::after { + border-left-color: #fff; +} + +.contextmenu-show, +.contextmenu-item:hover > .contextmenu { + opacity: 1; + transform: translate(0, 0) scale(1); + pointer-events: auto; +} + +.contextmenu-item:hover > .contextmenu { + transition-delay: 300ms; +} + +.revoke-licence:hover { + background-color: #950909; +} + +.give-licence:hover { + background-color: #099517; +} + +.remove-image:hover { + background-color: #950909; +} + +.expand-image:hover { + background-color: #099517; +} + +.gallery-upload-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#gallery-upload-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#gallery-upload-input::placeholder { + color: white; +} + +.penalcode-embed { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 96.5%; + width: 85%; + margin: auto; + overflow: hidden; +} + +.penalcode-embed iframe { + height: 96.5%; + width: 98%; + margin: auto; + border: none; + outline: none; +} + +.incidents-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + +.incidents-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.incidents-title:hover { + background-color: var(--color-3); +} + +.incidents-search-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#incidents-search-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#incidents-search-input::placeholder { + color: white; +} + +.incidents-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 100%; + margin-bottom: 15px; +} + +.incidents-item { + background-color: var(--color-5); + width: 100%; + height: 5.5vh; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + flex-direction: column; +} + +.incidents-item:hover { + background-color: var(--color-3); +} + +.incidents-top-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; +} + +.incidents-item-title { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + max-width: 25vh; + margin-top: 5px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.incedent-report-name { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-top: 5px; +} + +.incidents-bottom-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; + padding-top: 5px; +} + +.incedent-report-id { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + margin-bottom: 5px; +} + +.incedent-report-time-ago { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-bottom: 5px; +} + +.manage-incidents-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + max-height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + overflow: auto; +} + +.manage-incidents-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: auto; + width: 80%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.manage-incidents-title:hover { + background-color: var(--color-3); +} + +.manage-incidents-create { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 5px; + padding-bottom: 5px; + align-items: center; + background-color: var(--color-4); + margin: auto; + margin-left: 5px; + margin-top: 10px; + /* margin-right: 0px; */ + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.manage-incidents-create:hover { + background-color: var(--color-3); +} + +.manage-incidents-save { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 5px; + padding-bottom: 5px; + background-color: #1b8f25; + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.manage-incidents-save:hover { + background-color: #1caa28; +} + +.manage-incidents-title-tag { + font-size: 16px; + font-weight: lighter; + color: white; + width: 95%; + margin: auto; + text-align: left; + margin-top: 10px; + margin-bottom: 0px; +} + +.manage-incidents-title-input { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-incidents-title-input input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-incidents-reports-content { + width: 91%; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + border: none; + outline: none; + min-height: 30vh; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; + pointer-events: none; +} + +.manage-incidents-tags-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.manage-incidents-tags-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-right: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.manage-incidents-tags-add-btn:hover { + background-color: var(--color-3); +} + +.manage-incidents-tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; + pointer-events: none; +} + +.manage-incidents-tags-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 5px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-incidents-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.manage-incidents-officers-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.manage-incidents-officers-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-right: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.manage-incidents-officers-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; + pointer-events: none; +} + +.manage-incidents-officers-add-btn:hover { + background-color: var(--color-3); +} + +.manage-incidents-officers-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 5px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-incidents-officers { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.manage-incidents-civilians-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.manage-incidents-civilians-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-right: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.manage-incidents-civilians-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; + pointer-events: none; +} + +.manage-incidents-civilians-add-btn:hover { + background-color: var(--color-3); +} + +.manage-incidents-civilians-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 5px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-incidents-civilians { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.manage-incidents-evidence-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.manage-incidents-evidence-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-right: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.manage-incidents-evidence-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; + pointer-events: none; +} + +.manage-incidents-evidence-add-btn:hover { + background-color: var(--color-3); +} + +.manage-incidents-evidence-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-incidents-evidence { + width: 10vh; + filter: blur(5px); +} + +span.tag-incident-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.tag-incident-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +span.officers-incident-input[contenteditable]:empty::before { + content: '(XXX) Officer Name'; +} + +.officers-incident-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +span.civilians-incident-input[contenteditable]:empty::before { + content: 'Civilian Name'; +} + +.civilians-incident-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +.associated-incidents-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +.associated-incidents-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.associated-incidents-title:hover { + background-color: var(--color-3); +} + +.associated-incidents-tags-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.associated-incidents-tags-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-right: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.associated-incidents-tags-add-btn:hover { + background-color: var(--color-3); +} + +.associated-incidents-tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; + pointer-events: none; +} + +.associated-incidents-tags-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.associated-incidents-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.incidents-upload-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#incidents-upload-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#incidents-upload-input::placeholder { + color: white; +} + +.incidents-img { + width: 10vh; + filter: blur(5px); + object-fit: cover; +} + +.bulletin-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.bulletin-add-btn:hover { + background-color: var(--color-3); +} + +.associated-incidents-user-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + width: 94%; + height: fit-content; + align-items: center; + user-select: none; +} + +.associated-incidents-user-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.associated-incidents-user-tags-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + min-height: 3.5vh; + max-height: 14vh; + user-select: none; + display: flex; + background-color: var(--color-5); +} + +.associated-incidents-user-tag { + text-decoration: none; + margin-top: auto; + margin-bottom: auto; + margin-left: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: white; + font-size: 12px; + font-weight: 600; + background-color: black; + user-select: none; + width: fit-content; +} + +.associated-incidents-user-holder { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + min-height: 3.5vh; + max-height: 37vh; + user-select: none; +} + +.associated-incidents-user { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.associated-incidents-fine-input { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.associated-incidents-fine-input input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.associated-incidents-sentence-input { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 15px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.associated-incidents-sentence-input input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.icidents-person-search { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + margin-top: 32.5vh; +} + +.icidents-person-search-container { + background-color: var(--color-5); + width: 95vh; + height: 45vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 9999; + display: none; +} + +.icidents-person-search-title { + background-color: var(--color-4); + color: white; + font-size: 20px; + font-weight: bolder; + text-align: center; + padding-top: 15px; + padding-bottom: 15px; + width: 95%; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + user-select: none; +} + +.icidents-person-search-name-title { + width: 95%; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + color: white; + font-size: 15px; + text-align: left; + user-select: none; +} + +.icidents-person-search-name-input { + background-color: rgba(0, 0, 0, 0); + border: none; + outline: none; + color: white; + width: 100%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + text-align: left; + padding-bottom: 2.5px; +} + +.icidents-person-search-holder { + overflow: auto; + height: 30vh; + width: 95%; + margin: auto; + margin-top: 15px; + margin-bottom: 15px; +} + +.icidents-person-search-item { + width: 100%; + height: 12.5vh; + display: flex; + flex-direction: row; +} + +.icidents-person-search-item:hover { + background-color: var(--color-3); +} + +.icidents-person-search-item-pfp { + width: 11vh; + height: 11vh; + margin-top: auto; + margin-bottom: auto; + margin-left: 10px; +} + +.icidents-person-search-item-right { + display: flex; + flex-direction: column; + width: 100%; + margin-top: auto; + margin-bottom: auto; + margin-right: 10px; + margin-left: 10px; + height: 11vh; +} + +.icidents-person-search-item-right-cid-title { + width: 100%; + margin: auto; + margin-top: 0px; + margin-bottom: 0px; + color: white; + font-size: 16px; + text-align: left; + user-select: none; +} + +.icidents-person-search-item-right-cid-input { + width: 100%; + margin: auto; + margin-top: 5px; + margin-bottom: auto; + color: white; + font-size: 16px; + text-align: left; + padding-bottom: 2.5px; + border-bottom: 2px solid var(--color-3); + user-select: none; +} + +.icidents-person-search-item-right-name-title { + width: 100%; + margin: auto; + margin-top: auto; + margin-bottom: 0px; + color: white; + font-size: 16px; + text-align: left; + user-select: none; +} + +.icidents-person-search-item-right-name-input { + width: 100%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + color: white; + font-size: 16px; + text-align: left; + padding-bottom: 2.5px; + border-bottom: 2px solid var(--color-3); +} + +.bolos-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + +.bolos-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.bolos-title:hover { + background-color: var(--color-3); +} + +.bolos-search-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#bolos-search-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#bolos-search-input::placeholder { + color: white; +} + +.bolos-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 100%; + margin-bottom: 15px; +} + +.bolos-item { + background-color: var(--color-5); + width: 100%; + height: 5.5vh; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + flex-direction: column; +} + +.manage-bolos-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + max-height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + overflow: auto; +} + +.manage-bolos-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + margin-left: 10px; + width: 66%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.manage-bolos-title-tag { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-right: 0px; + margin-bottom: 0px; + width: 84%; + align-items: center; + user-select: none; +} + +.manage-bolos-title:hover { + background-color: var(--color-3); +} + + + +.manage-bolos-create { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 5px; + padding-bottom: 5px; + align-items: center; + background-color: var(--color-4); + margin: auto; + margin-left: 5px; + margin-top: 10px; + /* margin-right: 0px; */ + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.manage-bolos-create:hover { + background-color: var(--color-3); +} + +.manage-bolos-input-tag { + font-size: 16px; + font-weight: lighter; + color: white; + width: 95%; + margin: auto; + text-align: left; + margin-top: 10px; + margin-bottom: 0px; +} + +.manage-bolos-input-title { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-bolos-input-title input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-bolos-input-plate { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-bolos-input-plate input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-bolos-input-owner { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-bolos-input-owner input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-bolos-input-individual { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-bolos-input-individual input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-bolos-save { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: #1b8f25; + margin: auto; + margin-left: 0px; + margin-top: 10px; + margin-right: 13px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.manage-bolos-save:hover { + background-color: #1caa28; +} + +.manage-bolos-new { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: #8f1b1b; + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.manage-bolos-new:hover { + background-color: #aa1c1c; +} + +.manage-bolos-reports-content { + width: 91%; + margin: auto; + margin-top: 15px; + margin-bottom: 15px; + border: none; + outline: none; + height: 100%; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; +} + +.manage-bolos-right-container { + display: flex; + flex-direction: column; + height: 95.7%; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + margin-right: 15px; +} + +.manage-bolos-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + max-height: 150px; + overflow: scroll; +} + +.manage-bolos-gallery-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + height: 18vh; + overflow: scroll; +} + +.manage-bolos-tags-holder { + overflow: auto; + margin: auto; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-officers-tags-holder { + overflow: auto; + margin: auto; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.officers-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.officers-add-btn:hover { + background-color: var(--color-3); +} + +.manage-officers-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + max-height: 150px; + margin-top: 10px; + overflow: scroll; +} + +.bolo-item { + background-color: var(--color-5); + width: 100%; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + flex-direction: column; +} + +.bolo-item:hover { + background-color: var(--color-3); +} + +.bolo-top-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; +} + +.bolo-item-title { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + margin-top: 5px; +} + +.bolo-report-name { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-top: 5px; +} + +.bolo-bottom-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; + margin-top: 5px +} + +.bolo-report-id { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + margin-bottom: 5px; +} + +.bolo-report-time-ago { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-bottom: 5px; +} + +.bolos-search-refresh { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: var(--color-10); + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.bolos-search-refresh:hover { + background-color: #aa891c; +} + +.bolos-search-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 0px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + width: 80%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.bolos-search-title:hover { + background-color: var(--color-3); +} + +.manage-bolos-tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.manage-bolos-tags-add-btn:hover { + background-color: var(--color-3); +} + +span.tag-bolo-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.tag-bolo-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +span.officer-tag-bolo-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.officer-tag-bolo-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +.bolo-gallery-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.bolo-gallery-add-btn:hover { + background-color: var(--color-3); +} + +.bolo-gallery-upload-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#bolo-gallery-upload-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#bolo-gallery-upload-input::placeholder { + color: white; +} + +.bolo-img { + width: 10vh; + filter: blur(5px); + object-fit: cover; +} + +.bolo-gallery-inner-container { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-bolos-editing-title { + background-color: var(--color-3); + color: white; + font-size: 15px; + font-weight: lighter; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + margin-left: 10px; + width: 95%; + align-items: center; + user-select: none; +} + +.reports-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; +} + +#home-reports-container { + height: 50%; +} + +#home-warrants-container { + height: 50%; +} + +.dispatch-comms-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 45.5%; + width: 50vh; + margin-top: 1vh; + margin-left: 10px; +} + +.reports-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.reports-title:hover { + background-color: var(--color-3); +} + +.reports-search-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#reports-search-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#reports-search-input::placeholder { + color: white; +} + +.reports-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 100%; + margin-bottom: 15px; +} + +.dispatch-item { + height: auto; + padding: auto; + margin-top: 1vh; +} + +.dispatch-item:hover { + background-color: var(--color-7); +} + +.dispatch-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 94%; + height: 100%; +} + +.dispatch-message-profilepic { + width: 2.8vh; + height: 2.8vh; + object-fit: cover; + float: left; + border-radius: 50%; +} + +.dispatch-item-info { + float:left; + font-size: 14px; + font-weight: bold; + padding-left: 0.75vh; + color: var(--color-8); +} + +.dispatch-info-job-lspd { + color: #2554cc; +} + +.dispatch-info-job-bcso { + color: #cc7e25; +} + +.dispatch-info-job-sast { + color: #2589cc; +} + +.dispatch-info-job-sasp { + color: #2589cc; +} + +.dispatch-info-job-doc { + color: #7b25cc; +} + +.dispatch-info-job-sapr { + color: #5acc25; +} + +.dispatch-info-job-pa { + color: #008080; +} + +.dispatch-info-job-ambulance { + color: #cc2525; +} + +.dispatch-info-job-doj { + color: #FFEAB9; +} + +.active-info-job-lspd { + background-color: #2554cc; +} + +.active-info-job-bcso { + background-color: #cc7e25; +} + +.active-info-job-sast { + background-color: #2589cc; +} + +.active-info-job-sasp { + background-color: #2589cc; +} + +.active-info-job-doc { + background-color: #7b25cc; +} + +.active-info-job-sapr { + background-color: #5acc25; +} + +.active-info-job-pa { + background-color: #008080; +} + +.active-info-job-ambulance { + background-color: #cc2525; +} + +.active-info-job-doj { + background-color: #525252; +} + +.active-info-job-unk { + background-color: #6E707C; +} + +.dispatch-item-message { + float:left; + font-size: 14px; + font-weight: lighter; + color: white; + width: 100%; + overflow:wrap; + white-space:normal; + padding-left: 0.80vh; + padding-top: 0.2vh; +} + +.dispatch-item-msg { + padding-left: 2.8vh; + padding-bottom: 0vh; +} + +.dispatch-item-msg:hover { + background-color: var(--color-7); +} + +.dispatch-item-grid { + display:grid; +} + +.dispatch-input { + min-width: 90%; + max-width: 90%; + min-height: 0.1vh; + margin-left: 1.1vh; + margin-bottom: 1vh; + border: none; + padding: 12px 20px; + background-color: var(--color-7); + color: #bebec2; +} + +.dispatch-input:focus { + outline:none!important; +} + +.reports-search-refresh { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: var(--color-10); + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.reports-search-refresh:hover { + background-color: #aa891c; +} + +.dispatch-comms-refresh { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: var(--color-10); + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.dispatch-comms-refresh:hover { + background-color: #aa891c; +} + +.reports-search-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 0px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + width: 80%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.reports-search-title:hover { + background-color: var(--color-3); +} + +.manage-reports-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + max-height: 74.7vh; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + overflow: auto; +} + +.manage-reports-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: auto; + margin-left: 10px; + width: 80%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.manage-reports-title-tag { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-right: 0px; + margin-bottom: 0px; + width: 84%; + align-items: center; + user-select: none; +} + +.manage-reports-title:hover { + background-color: var(--color-3); +} + + + +.manage-reports-create { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 5px; + padding-bottom: 5px; + align-items: center; + background-color: var(--color-4); + margin: auto; + margin-left: 5px; + margin-top: 10px; + /* margin-right: 0px; */ + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.manage-reports-create:hover { + background-color: var(--color-3); +} + +.manage-reports-input-tag { + font-size: 16px; + font-weight: lighter; + color: white; + width: 95%; + margin: auto; + text-align: left; + margin-top: 10px; + margin-bottom: 0px; +} + +.manage-reports-input-title { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-reports-input-title input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-reports-input-type { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-reports-input-type input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-reports-input-owner { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-reports-input-owner input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-reports-input-individual { + color: white; + font-weight: lighter; + width: 95%; + margin: auto; + margin-top: 5px; + margin-bottom: 0px; + align-items: center; + display: flex; + border-bottom: 2px solid var(--color-3); +} + +.manage-reports-input-individual input { + border: none; + outline: none; + margin-left: 5px; + font-size: 16px; + margin-top: 5px; + color: white; + width: 100%; + background-color: rgba(0, 0, 0, 0); +} + +.manage-reports-save { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: #1b8f25; + margin: auto; + margin-left: 0px; + margin-top: 10px; + margin-right: 13px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.manage-reports-save:hover { + background-color: #1caa28; +} + +.manage-reports-new { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: #8f1b1b; + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.manage-reports-new:hover { + background-color: #aa1c1c; +} + +.incidents-remove-normal-tag:hover { + background-color: #aa1c1c; +} + +.incidents-remove-normal-civ:hover { + background-color: #aa1c1c; +} + +.incidents-remove-tag:hover { + background-color: #aa1c1c; +} + +.incidents-remove-officer-tag:hover { + background-color: #aa1c1c; +} + +.manage-reports-editing-title { + background-color: var(--color-3); + color: white; + font-size: 15px; + font-weight: lighter; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + margin-left: 10px; + width: 95%; + align-items: center; + user-select: none; + display: block; +} + +.manage-reports-reports-content { + width: 91%; + margin: auto; + margin-top: 15px; + margin-bottom: 15px; + border: none; + outline: none; + height: 100%; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; +} + +.manage-reports-right-container { + display: flex; + flex-direction: column; + height: 95.7%; + width: 50vh; + margin-top: 10px; + margin-left: 10px; + margin-right: 15px; +} + +.manage-reports-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + max-height: 150px; + overflow: scroll; +} + +.manage-reports-gallery-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + margin-top: 10px; + height: 18vh; + overflow: scroll; +} + +.manage-reports-tags-holder { + overflow: auto; + margin: auto; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.reports-officers-tags-holder { + overflow: auto; + margin: auto; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.reports-officers-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.reports-officers-add-btn:hover { + background-color: var(--color-3); +} + +.reports-officers-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + max-height: 150px; + margin-top: 10px; + overflow: scroll; +} + +.reports-gallery-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.reports-gallery-add-btn:hover { + background-color: var(--color-3); +} + +.reports-gallery-upload-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#reports-gallery-upload-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#reports-gallery-upload-input::placeholder { + color: white; +} + +.reports-img { + width: 10vh; + filter: blur(5px); + object-fit: cover; +} + +.reports-gallery-inner-container { + overflow: auto; + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.manage-reports-tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.manage-reports-tags-add-btn:hover { + background-color: var(--color-3); +} + +.reports-civilians-tags-container { + display: flex; + flex-direction: column; + background-color: var(--color-1); + width: 100%; + border: 2px solid var(--color-3); + max-height: 150px; + margin-top: 10px; + overflow: scroll; +} + +.reports-civilians-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7px; + padding-bottom: 7px; + margin: auto; + margin-top: 10px; + margin-left: 5px; + margin-bottom: 0px; + width: 10%; + text-align: center; +} + +.reports-civilians-add-btn:hover { + background-color: var(--color-3); +} + +.reports-civilians-tags-holder { + overflow: auto; + margin: auto; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.reports-item { + background-color: var(--color-5); + width: 100%; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + flex-direction: column; +} + +.reports-item:hover { + background-color: var(--color-3); +} + +.reports-top-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; +} + +.reports-item-title { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + margin-top: 5px; + max-width: 25vh; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.reports-report-name { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-top: 5px +} + +.reports-bottom-holder { + width: 100%; + height: 50%; + display: flex; + align-items: center; + margin-top: 5px; +} + +.reports-report-id { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-left: 5px; + margin-bottom: 5px; +} + +.reports-report-time-ago { + font-size: 14px; + font-weight: lighter; + color: white; + margin: auto; + margin-right: 5px; + margin-bottom: 5px; +} + +span.tag-reports-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.tag-reports-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +span.officer-tag-reports-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.officer-tag-reports-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +span.civilian-tag-reports-input[contenteditable]:empty::before { + content: 'Input Tag'; +} + +.civilian-tag-reports-input { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-top: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +.dmv-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50%; + margin-top: 10px; + margin-left: 10px; +} + +.dmv-search-refresh { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: var(--color-10); + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.dmv-search-refresh:hover { + background-color: #aa891c; +} + +.dmv-search-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.dmv-search-title:hover { + background-color: var(--color-3); +} + +.dmv-search-input { + background-color: var(--color-3); + color: white; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; + display: none; +} + +#dmv-search-input { + outline: none; + border: none; + width: 95%; + color: white; + font-size: 15px; + background-color: rgba(0, 0, 0, 0); + margin: auto; +} + +#dmv-search-input::placeholder { + color: white; +} + +.dmv-items { + display: flex; + flex-direction: column; + overflow: auto; + margin: auto; + margin-top: 10px; + width: 95%; + height: 100%; + margin-bottom: 15px; +} + +.vehicle-information-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 50%; + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +.vehicle-information-save { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: #1b8f25; + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; + display: block; +} + +.vehicle-information-save:hover { + background-color: #1caa28; +} + +.add-charge:hover { + background-color: #1caa28; +} + +.vehicle-information-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 0px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + width: 81%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.dmv-item { + background-color: var(--color-5); + width: 100%; + height: 9vh; + margin: auto; + margin-bottom: 10px; + margin-top: 0px; + display: flex; + user-select: none; + +} + +.dmv-item:hover { + background-color: var(--color-3); +} + +.dmv-image { + width: 7vh; + height: 7vh; + margin-left: 10px; + margin-top: auto; + margin-bottom: auto; + object-fit: cover; +} + +.dmv-item-title { + font-size: 16px; + font-weight: lighter; + color: white; + padding-top: 2px; +} + +.dmv-tags { + display: flex; + overflow-x: auto; + width: 98%; + margin-top: 10px; + margin-bottom: 5px; +} + +.dmv-tag { + margin: auto; + margin-left: 0px; + margin-right: 6px; + padding: 4px; + padding-left: 7px; + padding-right: 7px; + border-radius: 10px; + color: white; + font-size: 12px; + font-weight: bolder; + background-color: #956E09; +} + +.dmv-bottom-info { + display: flex; + margin: auto; + width: 100%; +} + +.dmv-id { + color: white; + font-size: 13px; +} + +.vehicle-info-stuff { + display: flex; + flex-direction: row; + width: 95%; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; +} + +.vehicle-info-image { + width: 444px; + height: 269px; + object-fit: cover; +} + +.vehicle-info-inner-container { + display: flex; + flex-direction: column; + width: 55%; +} + +.vehicle-info-plate { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.vehicle-info-plate-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 5px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.vehicle-info-owner { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.vehicle-info-owner-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 5px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.vehicle-info-class { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.vehicle-info-class-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 5px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.vehicle-info-model { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.vehicle-info-model-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 5px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.vehicle-info-imageurl { + color: white; + margin-left: 10px; + font-size: 15px; + user-select: none; +} + +.vehicle-info-imageurl-input { + border: none; + outline: none; + margin-left: 2.5px; + font-size: 16px; + margin-top: 5px; + color: white; + background-color: rgba(0, 0, 0, 0); +} + +.vehicle-info-icon { + color: white; + font-size: 16px; + margin-left: 10px +} + +.vehicle-info-line { + background-color: var(--color-3); + height: 2px; + margin-left: 10px; + margin-bottom: 10px; +} + +.vehicle-info-tags-container { + display: flex; + flex-direction: column; + border: 2px solid var(--color-3); + color: white; + font-size: 18px; + font-weight: bolder; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + height: fit-content; + align-items: center; + user-select: none; +} + +.vehicle-info-tags-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 5px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + width: 95%; + align-items: center; + user-select: none; +} + +.vehicle-info-tags-add-btn:hover { + background-color: var(--color-3); +} + +.vehicle-info-tags-add-btn { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 7.25px; + padding-bottom: 7.25px; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + margin-left: 5px; + margin-right: 0px; + width: 10%; + text-align: center; +} + +.vehicle-info-tags-holder { + overflow: auto; + margin: auto; + margin-top: 7px; + margin-bottom: 7px; + width: 95%; + max-height: 14vh; + user-select: none; +} + +.vehicle-info-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; +} + +.vehicle-info-content { + width: 93%; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + border: none; + outline: none; + min-height: 30.9vh; + resize: none; + background-color: var(--color-5); + color: white; + font-size: 16px; + padding: 10px; +} + +.vehicle-tags { + display: flex; + overflow-x: auto; + width: 98%; + margin-top: 5px; + margin-bottom: 5px; +} + +.vehicle-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + padding: 4px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: white; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + outline: none; + border: none; +} + +.stafflogs-container { + background-color: var(--color-1); + border: 2px solid var(--color-3); + display: flex; + flex-direction: column; + height: 74.7vh; + width: 100%; + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; + overflow: auto; +} + +.stafflogs-container > p { + color: white; + font-size: 1.3vh; + padding-left: 1vh; +} + +/* Vehicle Colors :( so long lol */ + +.black-color { + background-color: #0e0e0e; + color: white; +} + +.darksilver-color { + background-color: #333333; + color: white; +} + +.silver-color { + background-color: #333333; + color: white; +} + +.bluesilver-color { background-color: #c4d4e0; } + +.matteblack-color { + background-color: #141414; + color: white; +} + +.gray-color { + background-color: #808080; + color: white; +} + +.lightgray-color { background-color: #D3D3D3; } +.utilgunmetal-color { background-color: #39434d; } +.red-color { background-color: #c00e1a; } +.torinored-color { background-color: #da1918; } +.formulared-color { background-color: #b6111b; } +.blazered-color { background-color: #a51e23; } +.gracefulred-color { background-color: #7b1a22; } +.garnetred-color { background-color: #8e1b1f; } +.desertred-color { background-color: #6f1818; } +.cabernetred-color { background-color: #49111d; } +.candyred-color { background-color: #b60f25; } +.orange-color { background-color: #f78616; } +.gold-color { background-color: #c2944f; } +.mattedarkred-color { background-color: #732021; } +.matteyellow-color { background-color: #ffc91f; color: black } +.brightred-color { background-color: #de0f18; } +.darkgreen-color { background-color: #132428; } +.racingreen-color { background-color: #122e2b; } +.seagreen-color { background-color: #12383c; } +.olivegreen-color { background-color: #31423f; } +.green-color { background-color: #155c2d; } +.gasolinebluegreen-color { background-color: #1b6770; } +.mattelimegreen-color { background-color: #66b81f; } +.seawash-color { background-color: #65867f; } +.midnightblue-color { background-color: #222e46; } +.darkblue-color { background-color: #233155; } +.saxonyblue-color { background-color: #304c7e; } +.blue-color { background-color: #345df3; } +.diamondblue-color { background-color: #d6e7f1; } +.brightblue-color { background-color: #0b9cf1; } +.purpleblue-color { background-color: #2f2d52; } +.ultrablue-color { background-color: #2354a1; } +.lightningblue-color { background-color: #2446a8; } +.mattedarkblue-color { background-color: #1f2852; } +.matteblue-color { background-color: #253aa7; } +.yellow-color { background-color: #fbe212; color: black } +.bronze-color { background-color: #916532; } +.lime-color { background-color: #98d223; } +.champagne-color { background-color: #9b8c78; } +.beige-color { background-color: #F5F5DC; } +.darkivory-color { background-color: #473f2b; } +.brown-color { background-color: #3a2a1b; } +.lightbrown-color { background-color: #b5a079; } +.beechwood-color { background-color: #a4965f; } +.chocoorange-color { background-color: #752b19; } +.cream-color { background-color: #f7edd5; } +.white-color { background-color: #f0f0f0; color: black } +.steel-color { background-color: #6a747c; } +.blacksteel-color { background-color: #354158; } +.aluminium-color { background-color: #9ba0a8; } +.chrome-color { background-color: #5870a1; } +.wornwhite-color { background-color: #eae6de; color: black } +.offwhite-color { background-color: #dfddd0; color: black } +.lightorange-color { background-color: #f9a458; } +.pink-color { background-color: #f21f99; } +.blackblue-color { background-color: #0a0c17; } +.blackpurple-color { background-color: #0c0d18; } +.blackred-color { background-color: #0e0d14; } +.darkpurple-color { background-color: #621276; } +.olivedrab-color { background-color: #696748; } +.tan-color { background-color: #c3b492; } + +.reports-remove-image:hover { + background-color: #950909; +} + +.bolo-remove-image:hover { + background-color: #950909; +} + +.bolo-delete:hover { + background-color: #950909; +} + +.remove-bulletin:hover { + background-color: #950909; +} + +.search-vehicle:hover { + background-color: #956E09; +} + +.mark-code-5:hover { + background-color: #0B9509; +} + +.remove-code-5:hover { + background-color: #950909; +} + +.mark-stolen:hover { + background-color: #0B9509; +} + +.remove-stolen:hover { + background-color: #950909; +} + +.toggle-duty:hover { + background-color: #956E09; +} + +.set-callsign:hover { + background-color: #0B9509; +} + +.set-radio:hover { + background-color: #09956b; +} + +.incidents-ghost-holder { + overflow: auto; + max-height: 80vh; + margin-top: 10px; + margin-bottom: 10px; +} + +.incidents-charges-table { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + margin: auto; + margin-top: -25vh; +} + +.incidents-charges-table-container { + background-color: var(--color-5); + width: 155vh; + height: 85vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 9999; + user-select: none; +} + +.incidents-charges-title-container { + width: 95%; + height: 11vh; + background-color: var(--color-4); + margin: auto; + margin-top: 1.5vh; + margin-bottom: 0vh; + display: flex; + flex-direction: column; + border: 2px solid var(--color-4); +} + +.incidents-charges-title { + color: white; + margin: auto; + text-align: center; + align-items: center; + font-size: 22px; + font-weight: bolder; + margin-top: 1vh; +} + +.incidents-charges-title span { + color: #B4A684; + font-size: 19px; +} + +.incidents-charges-title-description { + color: white; + margin: auto; + background-color: var(--color-5); + text-align: left; + font-size: 17px; + padding: .5vh; + width: 97%; + margin-bottom: 1.5vh; +} + +.manage-incidents-editing-title { + background-color: var(--color-3); + color: white; + font-size: 15px; + font-weight: lighter; + padding-top: 10px; + padding-bottom: 10px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + margin-left: 10px; + width: 95%; + align-items: center; + user-select: none; +} + + +.current-charges-container { + width: 95%; + border: 2px solid var(--color-4); + margin: auto; + margin-top: 1.5vh; + margin-bottom: 0vh; + display: flex; +} + +.current-charges-inner-container { + background-color: var(--color-4); + width: 35vh; + height: fit-content; + margin: auto; + margin-left: 1vh; + margin-right: 0vh; + text-align: center; + display: flex; +} + +.current-charges-title { + color: white; + font-size: 19px; + font-weight: bolder; + padding: .25vh; + padding-left: 6vh; + padding-right: 6vh; + margin: auto; +} + +#current-charges-holder { + display: flex; + margin: auto; + width: 110vh; + margin-left: 1vh; + margin-right: 1vh; + overflow: hidden; +} + +.current-charges-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + padding: 5px; + padding-left: 7px; + padding-right: 7px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + background-color: white; + color: black; + white-space: nowrap; +} + +.offenses-title-container { + width: fit-content; + height: fit-content; + background-color: var(--color-4); + margin-left: 3.75vh; + margin-top: 1.5vh; + margin-bottom: 0vh; + display: flex; + border: 2px solid var(--color-4); +} + +.offenses-title { + color: white; + padding: .7vh; + padding-right: 3vh; + font-weight: bolder; + font-size: 1.4vh; +} + +.offenses-prepend-holder { + width: 95%; + background-color: var(--color-4); + margin: auto; + margin-top: 1.5vh; + margin-bottom: 0vh; + border: 2px solid var(--color-4); + display: grid; + grid-template-columns: auto auto auto auto; + grid-template-rows: auto auto auto auto; + row-gap: 0vh; + overflow: auto; +} + +.offense-item { + background-color: #0B9509; + border: 1.5px solid black; + height: 5.0vh; + margin: .5vh; + flex-direction: column; + color: white; + display: inline-block; + overflow: auto; + transition: all 0.15s ease-in-out; +} + +.offense-item:hover { + transform: scale(1.02); + transition: all 0.15s ease-in-out; +} + +.offense-item-offense { + margin: auto; + margin-left: .5vh; + margin-top: .5vh; + color: white; + font-size: 1.2vh; + font-weight: bold; +} + +.offfense-item-name { + margin: auto; + margin-right: .5vh; + margin-top: .5vh; + color: white; + font-size: 1.2vh; + font-weight: bold; +} + +.offense-item-id { + margin: auto; + margin-left: .5vh; + margin-bottom: .5vh; + color: white; + font-size: 1.2vh; + font-weight: bold; +} + +.offfense-item-months { + margin: auto; + margin-right: .5vh; + margin-bottom: .5vh; + color: white; + font-size: 1.2vh; + font-weight: bold; +} + +.offenses-main-container { + overflow: auto; + margin: auto; + margin-top: 1vh; + margin-bottom: 1vh; + width: 100%; +} + +.callsign-container { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + margin-top: 40.5vh; +} + +.radio-container { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + margin-top: 40.5vh; +} + +.radio-inner-container { + background-color: var(--color-5); + width: 30vh; + height: 17.5vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 9999; + border: .45vh solid white; +} + +.radio-title { + color: white; + font-size: 2vh; + font-weight: bold; + margin: auto; + margin-top: 2vh; + margin-bottom: 0vh; +} + +.radio-input { + width: 20vh; + margin: auto; + margin-top: 1.5vh; + margin-bottom: 0vh; + background-color: var(--color-6); + border: none; + outline: none; + font-size: 2vh; + color: white; + text-align: center; + padding: 1vh; +} + +.radio-buttons { + width: 20vh; + margin: auto; + margin-top: 1.5vh; + display: flex; + flex-direction: row; +} + +.radio-cancel { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #D77A0D; + border-radius: 1vh; + margin: auto; + user-select: none; +} + +.radio-cancel:hover { + background-color: #f18f1e; +} + +.radio-submit { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #0B9509; + border-radius: 1vh; + margin: auto; + user-select: none; +} + +.radio-submit:hover { + background-color: #15ac12; +} + +.callsign-inner-container { + background-color: var(--color-5); + width: 30vh; + height: 17.5vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 9999; + border: .45vh solid white; +} + +.callsign-title { + color: white; + font-size: 2vh; + font-weight: bold; + margin: auto; + margin-top: 2vh; + margin-bottom: 0vh; +} + +.callsign-input { + width: 20vh; + margin: auto; + margin-top: 1.5vh; + margin-bottom: 0vh; + background-color: var(--color-6); + border: none; + outline: none; + font-size: 2vh; + color: white; + text-align: center; + padding: 1vh; +} + +.callsign-buttons { + width: 20vh; + margin: auto; + margin-top: 1.5vh; + display: flex; + flex-direction: row; +} + +.callsign-cancel { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #D77A0D; + border-radius: 1vh; + margin: auto; + user-select: none; +} + +.callsign-cancel:hover { + background-color: #f18f1e; +} + +.callsign-submit { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #0B9509; + border-radius: 1vh; + margin: auto; + user-select: none; +} + +.callsign-submit:hover { + background-color: #15ac12; +} + + +/* Keep At Bottom */ + +.red-tag { + background-color: #950909; +} + +.orange-tag { + background-color: #956E09; +} + +.green-tag { + background-color: #0B9509; +} + +.white-tag { + display: inline-block; + text-decoration: none; + margin: auto; + margin-left: 0px; + margin-right: 10px; + margin-bottom: 6px; + padding: 7px; + padding-left: 8px; + padding-right: 8px; + border-radius: 10px; + color: black; + font-size: 12px; + font-weight: 600; + background-color: white; + user-select: none; + width: fit-content; + background-color: white; + color: black; +} + +.orange-penis-code { + background-color: #D77A0D; +} + +.green-penis-code { + background-color: #0B9509; +} + +.red-penis-code { + background-color: #950909; +} + +.header-pin { + padding-right: 5px; +} + +.priority-1 { + background-color: #bb0404; +} + +.priority-2 { + background-color: #ce7808; +} + +.call-bottom-info > span { + padding-right: 0.5vh; +} + +.call-attach:hover { + background-color: #1caa28; +} + +.Set-Waypoint:hover { + background-color: #f18f1e; +} + +.call-detach:hover { + background-color: #950909; +} + +.dispatch-attached-units { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; +} + +.active-unit-item:hover { + background-color: var(--color-3); +} + +.active-calls-item:hover { + background-color: var(--color-3); +} + +.dispatch-attached-units-container { + background-color: var(--color-1); + width: 92vh; + height: 46vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 1; + border: 2px solid #FFFFFF; + display: none; + margin-top: 32.5vh; +} + +.dispatch-attached-units-title { + background-color: var(--color-4); + color: white; + font-size: 20px; + font-weight: bolder; + text-align: center; + padding-top: 15px; + padding-bottom: 15px; + width: 95%; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + user-select: none; +} + +.dispatch-attached-units-holder { + margin: auto; + margin-top: 10px; + margin-bottom: 10px; + overflow: auto; + height: 37.8vh; + display: flex; + flex-direction: column; + width: 95%; +} + +.dispatch-attached-unit-item { + padding: 10px; + height: 3vh; + background-color: var(--color-5); + display: flex; + align-items: center; + margin-bottom: 5px; +} + +.attached-units:hover { + background-color: rgb(156, 156, 156); +} + +.Set-Dispatch-Waypoint:hover { + background-color: #f18f1e; +} + +.call-dispatch-detach:hover { + background-color: #950909; +} + +.incidents-title { + background-color: var(--color-4); + color: white; + font-size: 18px; + font-weight: bolder; + padding-top: 5px; + padding-bottom: 0px; + text-align: center; + margin: auto; + margin-top: 10px; + margin-bottom: 0px; + margin-right: 0px; + width: 80%; + /* width: 66%; */ + align-items: center; + user-select: none; +} + +.incidents-title:hover { + background-color: var(--color-3); +} + +.incidents-search-refresh { + width: 13.7%; + font-size: 15px; + font-weight: lighter; + padding-top: 7px; + padding-bottom: 7px; + background-color: var(--color-10); + margin: auto; + margin-left: 5px; + margin-top: 10px; + margin-bottom: 0px; + color: white; + text-align: center; + user-select: none; +} + +.incidents-search-refresh:hover { + background-color: #aa891c; +} + +.respond-calls { + display: flex; + flex-direction: column; + width: 100%; + height: 100%; + margin-top: 32.5vh; +} + +.respond-calls-container { + background-color: var(--color-5); + width: 70vh; + min-height: 30vh; + max-height: 40vh; + margin: auto; + display: flex; + flex-direction: column; + z-index: 9999; + overflow: auto; +} + +.respond-calls-title { + background-color: var(--color-4); + color: white; + font-size: 20px; + font-weight: bolder; + text-align: center; + padding-top: 15px; + padding-bottom: 15px; + width: 95%; + margin: auto; + margin-top: 15px; + margin-bottom: 0px; + user-select: none; +} + +.respond-calls-input { + width: 92.5%; + margin-top: 10px; + margin-bottom: 10px; + outline: solid 3px #1B3047; + margin-left: 27px; + min-height: 21.5vh; + max-height: 21.5vh; + border: none; + padding: 10px 10px; + background-color: transparent; + color: #dadada; + resize: none; + font-size: 16px; +} + +.respond-calls-input:focus { + outline: solid 3px #1B3047; +} + +.respond-calls-responses { + width: 95%; + margin-left: 1.7vh +} + +.respond-calls-response { + color: #dadada; + margin-top: 0.5vh; + padding: 0.5vh; + background-color: rgba(32, 32, 32, 0.5); + color: #FFFFFF; +} + +.offenses-search-area { + width: 95%; + border: 2px solid var(--color-4); + height: 3vh; + margin: 1.5vh auto 0vh; + display: flex; +} + +.offenses-search { + background: transparent; + border: none; + outline: none; + font-size: 1.2vh; + color: rgb(255, 255, 255); + font-family: Roboto, sans-serif; + font-style: normal; + font-weight: normal; + margin-left: 1vh; + padding-top: 10px; + padding-bottom: 10px; +} + +.impound-form { + display: flex; + flex-direction: column; + + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + + width: 750px; + height: 375px; + background: var(--color-5); + border: 1px solid white; +} + +.impound-form > form { + position: absolute; + left: 10%; + width: 73%; + height: 100%; +} + +.impound-form > form > input { + border: none; + outline: none; + font-size: 24px; + color: white; + + background: transparent; + border: 1px solid rgb(168, 168, 168); + + width: 100%; + height: 13.5%; + + margin-top: 20px; + padding-left: 10%; +} + +.impound-form > form > i { + position: absolute; + color: white; + font-size: 24px; + margin-top: 37.5px; + margin-left: 12.6px; +} + +.impound-buttons { + position: absolute; + margin: auto; + display: flex; + flex-direction: row; + bottom: 6%; + left: 10%; +} + +.impound-cancel { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #D77A0D; + border-radius: 1vh; + margin: auto; + user-select: none; +} + +.impound-cancel:hover { + background-color: #f18f1e; +} + +.impound-submit { + color: white; + padding: .5vh; + padding-left: 1vh; + padding-right: 1vh; + background-color: #0B9509; + border-radius: 1vh; + margin: auto; + user-select: none; + margin-left: 10px; +} + +.impound-submit:hover { + background-color: #15ac12; +} + +.status-impound:hover { + background-color: #ac8312; +} + +.remove-impound:hover { + background-color: #ac1212; +} + +.impound-vehicle:hover { + background-color: #12ac1f; +} + +.impound-fee { + color: white; +} + +.dispatch-reply:hover { + background-color: var(--color-1); +} +.display_hidden{ + display: none; +} \ No newline at end of file

    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�@{2{AxAQI?1kZXw^b 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 literal 0 HcmV?d00001 diff --git a/ui/img/not-found.jpg b/ui/img/not-found.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95c6a1c96b5372ea03205962e087d6b12abe8425 GIT binary patch literal 10656 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 literal 0 HcmV?d00001 diff --git a/ui/img/profile_pic.png b/ui/img/profile_pic.png new file mode 100644 index 0000000000000000000000000000000000000000..c3d55ce05c0e65745742ea043514c5474c36fa92 GIT binary patch literal 54820 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 z