Scripts/resources/[ss]/ss-garage/html/script.js

144 lines
7.9 KiB
JavaScript
Raw Normal View History

2024-12-29 20:01:18 +00:00
let currentVehicle = null;
window.addEventListener('message', function(event) {
if (event.data.type == 'open') {
$('.garage-container').css('display', 'block')
$('.vehicle-container').html('');
currentVehicle = null;
var vehicles = event.data.vehicles;
var garages = event.data.garages;
var garageImage = $('#garageimage');
var garageImageURL = `img/${event.data.garageindex}.png`;
garageImage.attr('src', garageImageURL);
garageImage.on('error', function() {
garageImage.attr('src', 'img/default.png');
garageImage.off('error');
});
$('#garagelabel').text(event.data.garages[event.data.garageindex].label);
vehicles.forEach(function(vehicle, index) {
var vehicleHtml = `
<details class="group rounded-lg open:bg-slate-800">
<summary class="flex cursor-pointer list-none items-center justify-between bg-slate-800 rounded-lg px-3 py-2 text-[15px] font-medium text-white hover:bg-slate-800">
<summary class="flex">
<a class="mr-2 rounded-md bg-green-300 text-xs font-medium tracking-wide px-[5px] py-[2px] text-green-800">${vehicle.plate}</a>
<carname class="text-ellipsis line-clamp-1">${vehicle.fullname}</carname>
</summary>
<div class="text-secondary-500">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="block h-5 w-5 group-open:hidden">
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v6m3-3H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="hidden h-5 w-5 group-open:block">
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12H9m12 0a9 9 0 11-18 0 9 9 0 0118 0z" />
</svg>
</div>
</summary>
<div class="px-6 pb-4 text-xs text-white">
${vehicle.state === 0 ?
'<br><a class="ml-2 rounded-md bg-rose-400 text-xs font-medium tracking-wide px-[5px] py-[2px] text-stone-800">Ude</a>' :
vehicle.state === 1 ?
`<br><a class="rounded-md bg-slate-600 text-xs font-medium tracking-wide px-[5px] py-[2px] text-white">${event.data.garages[event.data.garageindex].label}</a>` :
vehicle.state === 2 ?
`<br><a class="ml-2 rounded-md bg-rose-400 text-xs font-medium tracking-wide px-[5px] py-[2px] text-stone-800">Impounded - Gebyr: ${formatNumber(vehicle.impoundPrice)},-</a>` :
''
}
<p class="mt-5 text-[15px] font-bold">Køretøj Status</p>
<div class="space-y-1">
<dl class="flex items-center justify-between">
<dt class="mt-1 text-sm font-medium text-secondary-700">Brændstof</dt>
<dd class="text-sm text-secondary-500">${vehicle.fuel}%</dd>
</dl>
<div class="relative flex h-2 w-full overflow-hidden rounded-full bg-slate-700">
<div role="progressbar" aria-valuenow="${vehicle.fuel}" aria-valuemin="0" aria-valuemax="100" style="width: ${vehicle.fuel}%" class="flex h-full items-center justify-center bg-orange-300 text-white"></div>
</div>
<dl class="flex items-center justify-between">
<dt class="mt-1 text-sm font-medium text-secondary-700">Motor</dt>
<dd class="text-sm text-secondary-500">${vehicle.engine / 10}%</dd>
</dl>
<div class="relative flex h-2 w-full overflow-hidden rounded-full bg-slate-700">
<div role="progressbar" aria-valuenow="${vehicle.engine / 10}" aria-valuemin="0" aria-valuemax="100" style="width: ${vehicle.engine / 10}%" class="flex h-full items-center justify-center bg-blue-300 text-white"></div>
</div>
<dl class="flex items-center justify-between">
<dt class="mt-1 text-sm font-medium text-secondary-700">Karrosseri</dt>
<dd class="text-sm text-secondary-500">${vehicle.body / 10}%</dd>
</dl>
<div class="relative flex h-2 w-full overflow-hidden rounded-full bg-slate-700">
<div role="progressbar" aria-valuenow="${vehicle.body / 10}" aria-valuemin="0" aria-valuemax="100" style="width: ${vehicle.body / 10}%" class="flex h-full items-center justify-center bg-green-300 text-white"></div>
</div>
</div>
<button type="button" id="drive-${index}" class="mt-5 rounded-md border-gray-700 bg-slate-700 px-2.5 py-1.5 text-center text-sm font-medium text-white transition-all hover:bg-green-300 hover:text-green-800 disabled:cursor-not-allowed disabled:border-gray-300 disabled:bg-gray-300">Kør</button>
<button type="button" id="transfer-${index}" class="ml-2 rounded-md border-gray-700 bg-slate-700 px-2.5 py-1.5 text-center text-sm font-medium text-white transition-all hover:bg-green-300 hover:text-green-800 disabled:cursor-not-allowed disabled:border-gray-300 disabled:bg-gray-300">Skift ejer</button>
`;
$('.vehicle-container').append(vehicleHtml);
/*
Denne knap er fjernet, for at undgå at folk kan skifte garage, uden at have køretøjet med sig, eller flytte til en garage de ikke burde kunne flytte den til:
<button type="button" id="swap-${index}" class="ml-2 rounded-md border-gray-700 bg-slate-700 px-2.5 py-1.5 text-center text-sm font-medium text-white transition-all hover:bg-green-300 hover:text-green-disabled:cursor-not-allowed disabled:border-gray-300 disabled:bg-gray-300">Swap Garages</button>
*/
$(`#drive-${index}`).on('click', function(event) {
driveVehicle(vehicle);
});
$(`#swap-${index}`).on('click', function(event) {
currentVehicle = vehicle;
$('.garage-container').css('display', 'none')
$.each(garages, function (index, value) {
if (value.label && value.canTransfer) {
$("#garageSelect").append('<option value="' + (index) + '">' + value.label + '</option>');
}
});
$('.swap-container').css('display', 'block')
});
$(`#transfer-${index}`).on('click', function(event) {
$('.garage-container').css('display', 'none')
currentVehicle = vehicle;
$('.transfer-container').css('display', 'block')
});
});
}
});
$("#confirm-transfer").click(function () {
let id = $("#transfervehicle").val();
$.post(`https://${GetParentResourceName()}/transfer`, JSON.stringify({
vehicle: currentVehicle,
id: id
}));
close()
});
$("#confirm-swap").click(function () {
let garage = $("#garageSelect").val();
$.post(`https://${GetParentResourceName()}/swap`, JSON.stringify({
vehicle: currentVehicle,
garage: garage
}));
close()
});
function driveVehicle(vehicle) {
$('.garage-container').css('display', 'none')
$.post(`https://${GetParentResourceName()}/takeOut`, JSON.stringify({
vehicle: vehicle
}));
}
document.onkeyup = function (data) {
if (data.which == 27) {
close()
$.post(`https://${GetParentResourceName()}/close`, JSON.stringify({}));
}
};
function close() {
$('.garage-container').css('display', 'none')
$('.swap-container').css('display', 'none')
$('.transfer-container').css('display', 'none')
$('#garageSelect').empty();
}