/*────────────────────────────────────────────────────────────────────────────── Item Info Formatter [EDIT] [INFO] Renders item metadata into the NUI side panel. Prioritizes metadata (itemData.info) over base fields and supports a verbose "showItemData" mode that prints all metadata as a table. Main behaviors: • Phones list (phoneMeta) – Helper array to identify phone items. [INFO] • FormatItemInfo(itemData) – Entry point. Safely reads metadata and renders. [CORE] - If info.showItemData === true → prints all metadata via tableToString(). - Special case: "id_card" → prints structured ID details. - Fallbacks ensure safe, predictable output when fields are missing. Notes: • Keep DOM selectors (.item-info-title / .item-info-description) in sync with your UI. • Use `escapeHtml` for any untrusted string to avoid injection. [SEC] ──────────────────────────────────────────────────────────────────────────────*/ let phoneMeta = ['phone', 'black_phone', 'yellow_phone', 'red_phone', 'green_phone', 'white_phone']; // [INFO] 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("
" + itemData.label + "
"); $(".item-info-description").html("" + tableToString(itemData.info) + "
"); return; } // ID Card: Display CSN, first and last name, birthdate, gender, and nationality if (itemData.name == "id_card") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "CSN: " + (itemData.info.citizenid !== undefined ? itemData.info.citizenid : 'ID-Card ' + Math.floor(Math.random() * 99999)) + "
First Name: " + itemData.info.firstname + "
Last Name: " + itemData.info.lastname + "
Birth Date: " + itemData.info.birthdate + "
Gender: " + (itemData.info.gender !== undefined ? itemData.info.gender : 'AH-64 Apache Helicopter') + "
Nationality: " + (itemData.info.nationality !== undefined ? itemData.info.nationality : 'No information') + "
" ); } // 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("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Phone Number: " + itemData.info.phoneNumber + "
Firstname: " + itemData.info.charinfo.firstname + "
Lastname: " + itemData.info.charinfo.lastname + "
" ); // Other items } else if (itemData.name == "tradingcard_psa") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "PSA ID: " + itemData.info.serial + "
" ); } else if (itemData.name == "photo") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "" + itemData.info.location + "
" + itemData.info.date + "" ); } else if (itemData.name == "vehiclekeys") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "Plate: " + itemData.info.plate + "
Model: " + itemData.info.description + "
" ); } else if (itemData.name == "plate") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "Plate: " + itemData.info.plate + "
" ); } else if (itemData.name == "backpack") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "ID: " + itemData.info.ID + "
Weight: " + itemData.info.weight + "
Slots: " + itemData.info.slots + "
" ); } else if (itemData.name == "backpack2") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "ID: " + itemData.info.ID + "
Weight: " + itemData.info.weight + "
Slots: " + itemData.info.slots + "
" ); } else if (itemData.name == "briefcase") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "ID: " + itemData.info.ID + "
Weight: " + itemData.info.weight + "
Slots: " + itemData.info.slots + "
" ); } else if (itemData.name == "paramedicbag") { $(".item-info-title").html("" + label + "
"); $(".item-info-description").html( "ID: " + itemData.info.ID + "
Weight: " + itemData.info.weight + "
Slots: " + itemData.info.slots + "
" ); } else if (itemData.name == "driver_license") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "First Name: " + itemData.info.firstname + "
Last Name: " + itemData.info.lastname + "
Birth Date: " + itemData.info.birthdate + "
Licenses: " + itemData.info.type + "
" ); } else if (itemData.name == "weaponlicense") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "First Name: " + itemData.info.firstname + "
Last Name: " + itemData.info.lastname + "
Birth Date: " + itemData.info.birthdate + "
" ); } else if (itemData.name == "lawyerpass") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Pass-ID: " + itemData.info.id + "
First Name: " + itemData.info.firstname + "
Last Name: " + itemData.info.lastname + "
CSN: " + itemData.info.citizenid + "
" ); } else if (itemData.name == "harness") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "" + itemData.info.uses + " uses left.
" ); } else if (itemData.name == "weapontint_url") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Tint status: " + (itemData.info.urltint !== undefined ? "Used" : "Without use") + "
URL Link: " + (itemData.info.urltint !== undefined ? itemData.info.urltint.substring(0, 40) + "..." : "N/A") + "
" ); } else if (itemData.type == "weapon") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); 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( "Serial Number: " + itemData.info.serie + "
Munition: " + itemData.info.ammo + "
Attachments: " + attachmentString + "
" ); } else { $(".item-info-description").html( "Serial Number: " + itemData.info.serie + "
Munition: " + itemData.info.ammo + "
" + itemData.description + "
" ); } } else if (itemData.name == "filled_evidence_bag") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); if (itemData.info.type == "casing") { $(".item-info-description").html( "Evidence material: " + itemData.info.label + "
Type number: " + itemData.info.ammotype + "
Caliber: " + itemData.info.ammolabel + "
Serial Number: " + itemData.info.serie + "
Crime scene: " + itemData.info.street + "
" + itemData.description + "
" ); } else if (itemData.info.type == "blood") { $(".item-info-description").html( "Evidence material: " + itemData.info.label + "
Blood type: " + itemData.info.bloodtype + "
DNA Code: " + itemData.info.dnalabel + "
Crime scene: " + itemData.info.street + "
" + itemData.description + "
" ); } else if (itemData.info.type == "fingerprint") { $(".item-info-description").html( "Evidence material: " + itemData.info.label + "
Fingerprint: " + itemData.info.fingerprint + "
Crime Scene: " + itemData.info.street + "
" + itemData.description + "
" ); } else if (itemData.info.type == "dna") { $(".item-info-description").html( "Evidence material: " + itemData.info.label + "
DNA Code: " + itemData.info.dnalabel + "
" + itemData.description + "
" ); } } else if ( itemData.info.costs != undefined && itemData.info.costs != null ) { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html("" + itemData.info.costs + "
"); } else if (itemData.name == "stickynote") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html("" + itemData.info.label + "
"); } else if (itemData.name == "moneybag") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Amount of cash: $" + itemData.info.cash + "
" ); } else if (itemData.name == "cash") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "" + Lang('INVENTORY_NUI_OPTION_AMOUNT') + ": $" + itemData.amount + "
" ); } else if (itemData.name == "money") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "" + Lang('INVENTORY_NUI_OPTION_AMOUNT') + ": $" + itemData.amount + "
" ); } else if (itemData.name == "markedbills") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "" + Lang('INVENTORY_NUI_OPTION_AMOUNT') + ": $" + itemData.info.worth + "
" ); } else if (itemData.name == "visa" || itemData.name == "creditcard") { $(".item-info-title").html('' + label + '
') var str = "" + itemData.info.cardNumber + ""; var res = str.slice(12); var cardNumber = "************" + res; $(".item-info-description").html('Card Owner: ' + itemData.info.ownerName + '
Card Type: ' + itemData.info.cardType + '
Card Number: ' + cardNumber + '
'); } else if (itemData.name == "motelkey" && itemData.info) { $(".item-info-title").html('' + label + '
') $(".item-info-description").html('Motel Key: ' + itemData.info.motel + '
'); } else if (itemData.name == "labkey") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html("Lab: " + itemData.info.lab + "
"); } else if (itemData.name == "ls_liquid_meth" || itemData.name == "ls_meth") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Strain: " + itemData.info.strain + "
Purity: " + itemData.info.purity + "%
" ); } else if (itemData.name == "ls_ammonia" || itemData.name == "ls_iodine" || itemData.name == "ls_acetone") { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html( "Remaining: " + itemData.info.quality + "%
" ); } else { $(".item-info-title").html("" + `${itemData.info.label || label}` + "
"); $(".item-info-description").html("" + itemData.description + "
"); } } else { $(".item-info-title").html("" + itemData.label + "
"); $(".item-info-description").html("" + itemData.description + "
"); } } const tableToString = (data) => { let table = '| ${key} | ${value} |