Tabelle

Mehrere Werte je Zeile, unter Überschriften, mit Knöpfen rechts.

Table

Client
exports.cs_menu:Table(table)

Öffnet eine Tabelle. Sie nimmt Maus und Tastatur, solange sie offen ist, weil ein Fenster mit Knöpfen, das den Klick auch ans Spiel gibt, eine Waffe abfeuert.

Gibt zurückstring die ID

Beispiel
exports.cs_menu:Table({
    title = 'Employees',

    columns = {
        { key = 'name',  label = 'Employee Name', width = 2 },
        { key = 'grade', label = 'Grade', style = 'chip' },
        { actions = true },
    },

    rows = {
        { name = 'Romario Richardson', grade = 'Chief of Police',
          identifier = 'char1:9f2a',        -- yours, handed straight back
          actions = {
              { label = 'Promote', value = 'promote' },
              { label = 'Fire',    value = 'fire', style = 'danger' },
          } },
    },

    onSelect = function(index, row, action)
        print(row.identifier, action and action.value)
    end,
})

SetRows

Client
exports.cs_menu:SetRows(id, rows, selected)

Neue Zeilen unter einer offenen Tabelle. Eigener Export statt SetOptions, weil die Knöpfe aus deinen Zeilen antworten.

Gibt zurückboolean false, wenn keine Tabelle mit der ID offen ist

Eine Tabelle schließt beim Knopfdruck nicht, eine Liste schon. Du arbeitest sie durch, einen befördern, einen anderen entlassen. close = true an einem Knopf, der die Arbeit beendet.

Spalten

keystring
Wo die Zelle auf der Zeile steht.
labelstring
Die Überschrift.
widthnumber= 1
Gewicht beim Aufteilen der Breite.
alignstring
left, center, right
stylestring
chip in einer kleinen Kachel, soft gedimmt.
actionsboolean
Hier stehen die Knöpfe. Fehlt die Spalte, kommt eine ans Ende.

Zeilen und Knöpfe

Eine Zelle wird auf drei Arten gefunden, gemischt erlaubt: cells = { 'Bob', 'Chief' } in Spaltenreihenfolge, cells = { name = 'Bob' } unter dem Schlüssel der Spalte, oder name = 'Bob' direkt auf der Zeile. Das Letzte lässt eine bestehende Liste unverändert funktionieren.

icon / svgstring
In der ersten Zelle.
disabledboolean
onSelectfunction(row)
Die Zeile selbst gedrückt, kein Knopf.
actions[]table
label, value, style = 'danger', icon, disabled, close, onSelect(row, value), oder event / serverEvent mit args. Ohne args bekommt das Event die Zeile.

Das Fenster

widthnumber= Config.Table.width
Breite in vh.
perPagenumber= Config.Table.rows
Zeilen je Seite.
pagesboolean= true
Der Seitenzähler.

Aus einem ESX-Script

Kein neuer Menütyp. Ein ESX-list-Menü mit einem Feld columns wird als Tabelle gezeichnet. data.current ist dein Element, data.action sagt welcher Knopf.

ESX
ESX.UI.Menu.Open('list', GetCurrentResourceName(), 'employees', {
    title = 'Employees',
    columns = {
        { key = 'name',  label = 'Employee Name', width = 2 },
        { key = 'grade', label = 'Grade', style = 'chip' },
        { actions = true },
    },
    elements = {
        { name = 'Romario Richardson', grade = 'Chief of Police',
          actions = { { label = 'Fire', value = 'fire', style = 'danger' } } },
    },
},
function(data, menu)
    print(data.current.name, data.action and data.action.value)
end,
function(data, menu) menu.close() end)

Frage offen geblieben?

Schreib uns im Discord. Mit Konsolen-Auszug, Framework und Script-Version ist die erste Antwort meistens schon die Lösung.

Zum Support