forked from Simnation/Main
350 lines
18 KiB
JavaScript
350 lines
18 KiB
JavaScript
![]() |
/*
|
||
|
Metadata-based Item Information Display
|
||
|
This function, `FormatItemInfo`, is responsible for dynamically displaying detailed item information based on metadata associated with the item.
|
||
|
It identifies and structures specific data for items like ID cards and phones, which use metadata for unique identifiers like names, phone numbers, and citizen details.
|
||
|
|
||
|
The `phoneMeta` array defines the specific item names recognized as phone items. This ensures items in this array receive custom data display for attributes like phone number, firstname, and lastname.
|
||
|
|
||
|
Function Breakdown:
|
||
|
- First, the function checks if `itemData` and `itemData.info` are not empty, confirming the item has metadata to display.
|
||
|
- If the item has the `showItemData` flag set in its info, it will display a structured table of its metadata, using the `tableToString()` helper to convert metadata into a readable format.
|
||
|
- For ID cards (`id_card` items), it displays customized details like CSN, name, birthdate, gender, and nationality, populating these based on the `itemData.info`.
|
||
|
- If the item name matches one in `phoneMeta` and includes a phone number in `itemData.info`, it displays custom phone information, including phone number, firstname, and lastname.
|
||
|
|
||
|
Detailed Comments:
|
||
|
*/
|
||
|
|
||
|
let phoneMeta = ['phone', 'black_phone', 'yellow_phone', 'red_phone', 'green_phone'];
|
||
|
|
||
|
function FormatItemInfo(itemData) {
|
||
|
// Checks if itemData is valid and contains metadata info
|
||
|
if (itemData != null && itemData.info != "") {
|
||
|
let label = itemData?.info?.label || itemData?.label; // Sets the item label, prioritizing info metadata
|
||
|
|
||
|
// If item has showItemData flag, display all metadata in a table format
|
||
|
if (itemData.info.showItemData) {
|
||
|
$(".item-info-title").html("<p>" + itemData.label + "</p>");
|
||
|
$(".item-info-description").html("<p>" + tableToString(itemData.info) + "</p>");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
// ID Card: Display CSN, first and last name, birthdate, gender, and nationality
|
||
|
if (itemData.name == "id_card") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>CSN: </strong><span>" +
|
||
|
(itemData.info.citizenid !== undefined ? itemData.info.citizenid : 'ID-Card ' + Math.floor(Math.random() * 99999)) +
|
||
|
"</span></p><p><strong>First Name: </strong><span>" +
|
||
|
itemData.info.firstname +
|
||
|
"</span></p><p><strong>Last Name: </strong><span>" +
|
||
|
itemData.info.lastname +
|
||
|
"</span></p><p><strong>Birth Date: </strong><span>" +
|
||
|
itemData.info.birthdate +
|
||
|
"</span></p><p><strong>Gender: </strong><span>" +
|
||
|
(itemData.info.gender !== undefined ? itemData.info.gender : 'AH-64 Apache Helicopter') +
|
||
|
"</span></p><p><strong>Nationality: </strong><span>" +
|
||
|
(itemData.info.nationality !== undefined ? itemData.info.nationality : 'No information') +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
}
|
||
|
// Phone Items: Check if item is a phone and display relevant details if available
|
||
|
else if (phoneMeta.includes(itemData.name) && itemData.info.phoneNumber) {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Phone Number: </strong><span>" +
|
||
|
itemData.info.phoneNumber +
|
||
|
"</span></p><p><strong>Firstname: </strong><span>" +
|
||
|
itemData.info.charinfo.firstname +
|
||
|
"</span></p><p><strong>Lastname: </strong><span>" +
|
||
|
itemData.info.charinfo.lastname +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
// Other items
|
||
|
} else if (itemData.name == "tradingcard_psa") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>PSA ID: </strong><span>" +
|
||
|
itemData.info.serial +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "photo") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><span>" +
|
||
|
itemData.info.location +
|
||
|
"</span></p><span>" +
|
||
|
itemData.info.date + "</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "vehiclekeys") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Plate: </strong><span>" +
|
||
|
itemData.info.plate +
|
||
|
"</span></p><p><strong>Model: </strong><span>" +
|
||
|
itemData.info.description +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "plate") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Plate: </strong><span>" +
|
||
|
itemData.info.plate +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "backpack") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>ID: </strong><span>" +
|
||
|
itemData.info.ID +
|
||
|
"</span></p><p><strong>Weight: </strong><span>" +
|
||
|
itemData.info.weight +
|
||
|
"</span></p><p><strong>Slots: </strong><span>" +
|
||
|
itemData.info.slots +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "backpack2") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>ID: </strong><span>" +
|
||
|
itemData.info.ID +
|
||
|
"</span></p><p><strong>Weight: </strong><span>" +
|
||
|
itemData.info.weight +
|
||
|
"</span></p><p><strong>Slots: </strong><span>" +
|
||
|
itemData.info.slots +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "briefcase") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>ID: </strong><span>" +
|
||
|
itemData.info.ID +
|
||
|
"</span></p><p><strong>Weight: </strong><span>" +
|
||
|
itemData.info.weight +
|
||
|
"</span></p><p><strong>Slots: </strong><span>" +
|
||
|
itemData.info.slots +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "paramedicbag") {
|
||
|
$(".item-info-title").html("<p>" + label + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>ID: </strong><span>" +
|
||
|
itemData.info.ID +
|
||
|
"</span></p><p><strong>Weight: </strong><span>" +
|
||
|
itemData.info.weight +
|
||
|
"</span></p><p><strong>Slots: </strong><span>" +
|
||
|
itemData.info.slots +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "driver_license") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>First Name: </strong><span>" +
|
||
|
itemData.info.firstname +
|
||
|
"</span></p><p><strong>Last Name: </strong><span>" +
|
||
|
itemData.info.lastname +
|
||
|
"</span></p><p><strong>Birth Date: </strong><span>" +
|
||
|
itemData.info.birthdate +
|
||
|
"</span></p><p><strong>Licenses: </strong><span>" +
|
||
|
itemData.info.type +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "weaponlicense") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>First Name: </strong><span>" +
|
||
|
itemData.info.firstname +
|
||
|
"</span></p><p><strong>Last Name: </strong><span>" +
|
||
|
itemData.info.lastname +
|
||
|
"</span></p><p><strong>Birth Date: </strong><span>" +
|
||
|
itemData.info.birthdate +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "lawyerpass") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Pass-ID: </strong><span>" +
|
||
|
itemData.info.id +
|
||
|
"</span></p><p><strong>First Name: </strong><span>" +
|
||
|
itemData.info.firstname +
|
||
|
"</span></p><p><strong>Last Name: </strong><span>" +
|
||
|
itemData.info.lastname +
|
||
|
"</span></p><p><strong>CSN: </strong><span>" +
|
||
|
itemData.info.citizenid +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "harness") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p>" + itemData.info.uses + " uses left.</p>"
|
||
|
);
|
||
|
} else if (itemData.name == "weapontint_url") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Tint status: </strong><span> " +
|
||
|
(itemData.info.urltint !== undefined ? "Used" : "Without use") +
|
||
|
"</span></p><p><strong>URL Link: </strong><span>" +
|
||
|
(itemData.info.urltint !== undefined ? itemData.info.urltint.substring(0, 40) + "..." : "N/A") +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.type == "weapon") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
if (itemData.info.ammo == undefined) {
|
||
|
itemData.info.ammo = 0;
|
||
|
} else {
|
||
|
itemData.info.ammo != null ? itemData.info.ammo : 0;
|
||
|
}
|
||
|
if (itemData.info.attachments != null) {
|
||
|
var attachmentString = "";
|
||
|
$.each(itemData.info.attachments, function (i, attachment) {
|
||
|
if (i == itemData.info.attachments.length - 1) {
|
||
|
attachmentString += attachment.label;
|
||
|
} else {
|
||
|
attachmentString += attachment.label + ", ";
|
||
|
}
|
||
|
});
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Serial Number: </strong><span>" +
|
||
|
itemData.info.serie +
|
||
|
"</span></p><p><strong>Munition: </strong><span>" +
|
||
|
itemData.info.ammo +
|
||
|
"</span></p><p><strong>Attachments: </strong><span>" +
|
||
|
attachmentString +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else {
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Serial Number: </strong><span>" +
|
||
|
itemData.info.serie +
|
||
|
"</span></p><p><strong>Munition: </strong><span>" +
|
||
|
itemData.info.ammo +
|
||
|
"</span></p><p>" +
|
||
|
itemData.description +
|
||
|
"</p>"
|
||
|
);
|
||
|
}
|
||
|
} else if (itemData.name == "filled_evidence_bag") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
if (itemData.info.type == "casing") {
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Evidence material: </strong><span>" +
|
||
|
itemData.info.label +
|
||
|
"</span></p><p><strong>Type number: </strong><span>" +
|
||
|
itemData.info.ammotype +
|
||
|
"</span></p><p><strong>Caliber: </strong><span>" +
|
||
|
itemData.info.ammolabel +
|
||
|
"</span></p><p><strong>Serial Number: </strong><span>" +
|
||
|
itemData.info.serie +
|
||
|
"</span></p><p><strong>Crime scene: </strong><span>" +
|
||
|
itemData.info.street +
|
||
|
"</span></p><br /><p>" +
|
||
|
itemData.description +
|
||
|
"</p>"
|
||
|
);
|
||
|
|
||
|
} else if (itemData.info.type == "blood") {
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Evidence material: </strong><span>" +
|
||
|
itemData.info.label +
|
||
|
"</span></p><p><strong>Blood type: </strong><span>" +
|
||
|
itemData.info.bloodtype +
|
||
|
"</span></p><p><strong>DNA Code: </strong><span>" +
|
||
|
itemData.info.dnalabel +
|
||
|
"</span></p><p><strong>Crime scene: </strong><span>" +
|
||
|
itemData.info.street +
|
||
|
"</span></p><br /><p>" +
|
||
|
itemData.description +
|
||
|
"</p>"
|
||
|
);
|
||
|
} else if (itemData.info.type == "fingerprint") {
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Evidence material: </strong><span>" +
|
||
|
itemData.info.label +
|
||
|
"</span></p><p><strong>Fingerprint: </strong><span>" +
|
||
|
itemData.info.fingerprint +
|
||
|
"</span></p><p><strong>Crime Scene: </strong><span>" +
|
||
|
itemData.info.street +
|
||
|
"</span></p><br /><p>" +
|
||
|
itemData.description +
|
||
|
"</p>"
|
||
|
);
|
||
|
} else if (itemData.info.type == "dna") {
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Evidence material: </strong><span>" +
|
||
|
itemData.info.label +
|
||
|
"</span></p><p><strong>DNA Code: </strong><span>" +
|
||
|
itemData.info.dnalabel +
|
||
|
"</span></p><br /><p>" +
|
||
|
itemData.description +
|
||
|
"</p>"
|
||
|
);
|
||
|
}
|
||
|
} else if (
|
||
|
itemData.info.costs != undefined &&
|
||
|
itemData.info.costs != null
|
||
|
) {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html("<p>" + itemData.info.costs + "</p>");
|
||
|
} else if (itemData.name == "stickynote") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html("<p>" + itemData.info.label + "</p>");
|
||
|
} else if (itemData.name == "moneybag") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Amount of cash: </strong><span>$" +
|
||
|
itemData.info.cash +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "markedbills") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Worth: </strong><span>$" +
|
||
|
itemData.info.worth +
|
||
|
"</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "visa" || itemData.name == "creditcard") {
|
||
|
$(".item-info-title").html('<p>' + label + '</p>')
|
||
|
var str = "" + itemData.info.cardNumber + "";
|
||
|
var res = str.slice(12);
|
||
|
var cardNumber = "************" + res;
|
||
|
$(".item-info-description").html('<p><strong>Card Owner: </strong><span>' + itemData.info.ownerName + '</span></p><p><strong>Card Type: </strong><span>' + itemData.info.cardType + '</span></p><p><strong>Card Number: </strong><span>' + cardNumber + '</span></p>');
|
||
|
} else if (itemData.name == "motelkey" && itemData.info) {
|
||
|
$(".item-info-title").html('<p>' + label + '</p>')
|
||
|
$(".item-info-description").html('<p>Motel Key: ' + itemData.info.motel + '</p>');
|
||
|
} else if (itemData.name == "labkey") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html("<p>Lab: " + itemData.info.lab + "</p>");
|
||
|
} else if (itemData.name == "ls_liquid_meth" || itemData.name == "ls_meth") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Strain: </strong><span>" +
|
||
|
itemData.info.strain +
|
||
|
"</span></p><p><strong>Purity: </strong><span>" +
|
||
|
itemData.info.purity +
|
||
|
"%</span></p>"
|
||
|
);
|
||
|
} else if (itemData.name == "ls_ammonia" || itemData.name == "ls_iodine" || itemData.name == "ls_acetone") {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html(
|
||
|
"<p><strong>Remaining: </strong><span>" +
|
||
|
itemData.info.quality +
|
||
|
"%</span></p>"
|
||
|
);
|
||
|
} else {
|
||
|
$(".item-info-title").html("<p>" + `${itemData.info.label || label}` + "</p>");
|
||
|
$(".item-info-description").html("<p>" + itemData.description + "</p>");
|
||
|
}
|
||
|
|
||
|
} else {
|
||
|
$(".item-info-title").html("<p>" + itemData.label + "</p>");
|
||
|
$(".item-info-description").html("<p>" + itemData.description + "</p>");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const tableToString = (data) => {
|
||
|
let table = '<table class="table table-striped table-dark">';
|
||
|
for (const [key, value] of Object.entries(data)) {
|
||
|
table += `<tr><td>${key}</td><td>${value}</td></tr>`;
|
||
|
}
|
||
|
table += '</table>';
|
||
|
return table;
|
||
|
}
|